diff options
author | László Németh <nemeth@numbertext.org> | 2018-06-07 14:26:42 +0200 |
---|---|---|
committer | László Németh <nemeth@numbertext.org> | 2018-06-13 19:49:47 +0200 |
commit | 958c23246a3606f2cb33ad5c136127f951bbbc69 (patch) | |
tree | 425bfaa265d3e7700ffa22703b1a12b15cc94e85 /i18npool | |
parent | cc46e7b9c75ddbcaaefde5f396ba76b0b866fa58 (diff) |
tdf#115007 NatNum12 "spell out" formats in dates
to support variants of preposition, suffixation,
article or their combination. For example, Catalan
"de març"/"d'abril", English "1st of May"/"First of
May" or Hungarian "május 1-je/május 2-a".
When the date format contains more than a date keyword,
it needs to specify in NatNum12 argument which date
element needs special formatting by using libnumbertext:
'[NatNum12 ordinal-number]D' -> "1st"
'[NatNum12 D=ordinal-number]D" of "MMMM' -> "1st of April"
'[NatNum12 D=ordinal]D" of "MMMM' -> "first of April"
'[NatNum12 YYYY=year,D=ordinal]D" of "MMMM", "YYYY' ->
"first of April, nineteen ninety"
Note: set only for YYYY, MMMM, M, DDDD, D and NNN/AAAA
in date formats. It's possible to extend this for other
keywords and date + time combinations, as required.
Note 2: default l10n date formats can use the new NatNum12 date
formats, see FormatElement in i18npool/source/localedata/
XML files and FormatElement specification:
https://opengrok.libreoffice.org/xref/core/i18npool/source/localedata/data/locale.dtd#223
Change-Id: I598849f1492f4012e83cef9293773badbff16206
Reviewed-on: https://gerrit.libreoffice.org/55613
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
Diffstat (limited to 'i18npool')
-rw-r--r-- | i18npool/source/nativenumber/nativenumbersupplier.cxx | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/i18npool/source/nativenumber/nativenumbersupplier.cxx b/i18npool/source/nativenumber/nativenumbersupplier.cxx index 5c5942ed987f..b8cc35dcfef4 100644 --- a/i18npool/source/nativenumber/nativenumbersupplier.cxx +++ b/i18npool/source/nativenumber/nativenumbersupplier.cxx @@ -587,10 +587,8 @@ OUString getNumberText(const Locale& rLocale, const OUString& rNumberString, break; } - if (count == 0) - return rNumberString; - - OUString aNumberStr = sBuf.makeStringAndClear(); + // Handle also month and day names for NatNum12 date formatting + const OUString& rNumberStr = (count == 0) ? rNumberString : sBuf.makeStringAndClear(); // Guard the static variables below. osl::MutexGuard aGuard( theNatNumMutex::get()); @@ -605,17 +603,17 @@ OUString getNumberText(const Locale& rLocale, const OUString& rNumberString, // of the continuous update of the multiple number names during typing. // We fix this by buffering the result of the conversion. static std::unordered_map<OUString, std::map<OUString, OUString>> aBuff; - auto& rItems = aBuff[aNumberStr]; + auto& rItems = aBuff[rNumberStr]; auto& rItem = rItems[numbertext_prefix + aLoc]; if (rItem.isEmpty()) { - rItem = xNumberText->getNumberText(numbertext_prefix + aNumberStr, rLocale); + rItem = xNumberText->getNumberText(numbertext_prefix + rNumberStr, rLocale); // use number at missing number to text conversion if (rItem.isEmpty()) - rItem = aNumberStr; + rItem = rNumberStr; } OUString sResult = rItem; - if (i < len) + if (i != 0 && i < len) sResult += rNumberString.copy(i); return sResult; } |