[Libreoffice-commits] core.git: sc/qa svl/source
Eike Rathke (via logerrit)
logerrit at kemper.freedesktop.org
Mon Mar 15 19:26:32 UTC 2021
sc/qa/unit/subsequent_export-test.cxx | 5 ++++-
svl/source/numbers/zformat.cxx | 30 +++++++++++++++++++++++++++---
2 files changed, 31 insertions(+), 4 deletions(-)
New commits:
commit c98891a4ba67a73d7a683ffb24845512705a4bbf
Author: Eike Rathke <erack at redhat.com>
AuthorDate: Mon Mar 15 15:57:18 2021 +0100
Commit: Eike Rathke <erack at redhat.com>
CommitDate: Mon Mar 15 20:25:47 2021 +0100
xls load: suppress secondary [~gengou] calendar modifier in format code
ja-JP Gengou calendar is an implicit secondary calendar switched
to and from by format codes.
Change-Id: Iea268310ac5e917f2168fec0166754424baa925d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112511
Reviewed-by: Eike Rathke <erack at redhat.com>
Tested-by: Jenkins
diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx
index 0d14b1046793..b0f390206129 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -4725,7 +4725,10 @@ void ScExportTest::testExtendedLCIDXLSX()
SvNumberFormatter* pNumFormatter = rDoc.GetFormatTable();
sal_uInt32 nNumberFormat;
const OUString aLang[5] = { "[$-41E]", "[$-411]", "[$-40D]", "[$-401]", "[$-500]" };
- const OUString aCalendar[5] = { "[~buddhist]DD-MM-YYYY", "[~gengou]DD-MM-EE", "[~jewish]DD-MM-YYYY", "[~hijri]DD-MM-YYYY", "[~dangi]YYYY/MM/DD" };
+ const OUString aCalendar[5] = { "[~buddhist]DD-MM-YYYY", "DD-MM-EE", "[~jewish]DD-MM-YYYY", "[~hijri]DD-MM-YYYY", "[~dangi]YYYY/MM/DD" };
+ // Note: ja-JP Gengou calendar is an implicit secondary (non-gregorian)
+ // calendar, the explicit [~gengou] calendar modifier does not need to be
+ // present, the E and EE keywords are used instead of YY and YYYY.
for ( sal_Int16 nCol = 1; nCol <= 2; nCol++ )
{
for ( sal_Int16 nRow = 1; nRow <= 4; nRow++ )
diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx
index 8787f0977984..f74b178a0419 100644
--- a/svl/source/numbers/zformat.cxx
+++ b/svl/source/numbers/zformat.cxx
@@ -442,8 +442,10 @@ OUString SvNumberformat::ImpObtainCalendarAndNumerals( OUStringBuffer& rString,
switch ( aTmpLocale.mnCalendarType & 0x7F )
{
case 0x03 : // Gengou calendar
- sCalendar = "[~gengou]";
- // Only Japanese language support Gengou calendar
+ // Only Japanese language support Gengou calendar.
+ // It is an implicit "other" calendar where E, EE, R and RR
+ // automatically switch to and YY and YYYY switch to Gregorian. Do
+ // not add the "[~gengou]" modifier.
if ( nLocaleLang != LANGUAGE_JAPANESE )
{
nLang = maLocale.meLanguage = LANGUAGE_JAPANESE;
@@ -5252,6 +5254,7 @@ OUString SvNumberformat::GetMappedFormatstring( const NfKeywordTable& rKeywords,
sal_Int32 nPosHaveLCID = -1;
sal_Int32 nPosInsertLCID = aStr.getLength();
sal_uInt32 nCalendarID = 0x0000000; // Excel ID of calendar used in sub-format see tdf#36038
+ constexpr sal_uInt32 kCalGengou = 0x0030000;
if ( nCnt )
{
auto& rTypeArray = NumFor[n].Info().nTypeArray;
@@ -5265,6 +5268,27 @@ OUString SvNumberformat::GetMappedFormatstring( const NfKeywordTable& rKeywords,
{
aStr.append( rLocWrp.getLongDateDayOfWeekSep() );
}
+ switch (rTypeArray[j])
+ {
+ case NF_KEY_EC:
+ case NF_KEY_EEC:
+ case NF_KEY_R:
+ case NF_KEY_RR:
+ // Implicit secondary (non-gregorian) calendar.
+ // Currently only for ja-JP.
+ /* TODO: same for all locales in
+ * LocaleDataWrapper::doesSecondaryCalendarUseEC() ?
+ * Should split the locales off that then. */
+ if (!nCalendarID)
+ {
+ const LanguageType nLang = MsLangId::getRealLanguage( nOriginalLang);
+ if (nLang == LANGUAGE_JAPANESE)
+ nCalendarID = kCalGengou;
+ }
+ break;
+ default:
+ ; // nothing
+ }
}
else
{
@@ -5313,7 +5337,7 @@ OUString SvNumberformat::GetMappedFormatstring( const NfKeywordTable& rKeywords,
break;
if ( rStrArray[j+1] == "gengou" )
{
- nCalendarID = 0x0030000;
+ nCalendarID = kCalGengou;
}
else if ( rStrArray[j+1] == "hijri" )
{
More information about the Libreoffice-commits
mailing list