summaryrefslogtreecommitdiff
path: root/i18npool
diff options
context:
space:
mode:
authorLászló Németh <nemeth@numbertext.org>2018-06-07 14:26:42 +0200
committerLászló Németh <nemeth@numbertext.org>2018-06-13 19:49:47 +0200
commit958c23246a3606f2cb33ad5c136127f951bbbc69 (patch)
tree425bfaa265d3e7700ffa22703b1a12b15cc94e85 /i18npool
parentcc46e7b9c75ddbcaaefde5f396ba76b0b866fa58 (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.cxx14
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;
}