[Libreoffice-commits] core.git: 3 commits - i18nlangtag/qa i18nlangtag/source include/i18nlangtag oox/source sw/source
Eike Rathke
erack at redhat.com
Tue Sep 5 13:41:28 UTC 2017
i18nlangtag/qa/cppunit/test_languagetag.cxx | 1 +
i18nlangtag/source/isolang/isolang.cxx | 3 ++-
i18nlangtag/source/isolang/mslangid.cxx | 5 -----
i18nlangtag/source/languagetag/languagetag.cxx | 8 ++++++++
include/i18nlangtag/languagetag.hxx | 8 ++++++++
oox/source/core/xmlfilterbase.cxx | 2 +-
oox/source/export/drawingml.cxx | 2 +-
sw/source/filter/ww8/docxattributeoutput.cxx | 2 +-
8 files changed, 22 insertions(+), 9 deletions(-)
New commits:
commit 49f1f04c5bb9922b237ec7ed6a9b58f7f1c2e781
Author: Eike Rathke <erack at redhat.com>
Date: Tue Sep 5 15:32:14 2017 +0200
Use LanguageTag::getBcp47MS() to write MS malformed tags to OOXML, tdf#83190
Change-Id: Id706cf40f717005df840e7856528dd7bbc866e98
diff --git a/oox/source/core/xmlfilterbase.cxx b/oox/source/core/xmlfilterbase.cxx
index b66dcf9e7301..e5190c512384 100644
--- a/oox/source/core/xmlfilterbase.cxx
+++ b/oox/source/core/xmlfilterbase.cxx
@@ -566,7 +566,7 @@ writeElement( const FSHelperPtr& pDoc, sal_Int32 nXmlElement, const LanguageTag&
// and obsoleted by RFC 5646, see
// http://dublincore.org/documents/dcmi-terms/#terms-language
// http://dublincore.org/documents/dcmi-terms/#elements-language
- writeElement( pDoc, nXmlElement, rLanguageTag.getBcp47() );
+ writeElement( pDoc, nXmlElement, rLanguageTag.getBcp47MS() );
}
static void
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 3e66a504aa14..f0d3ea78431f 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -1382,7 +1382,7 @@ void DrawingML::WriteRunProperties( const Reference< XPropertySet >& rRun, bool
mAny >>= aLocale;
LanguageTag aLanguageTag( aLocale);
if (!aLanguageTag.isSystemLocale())
- usLanguage = aLanguageTag.getBcp47();
+ usLanguage = aLanguageTag.getBcp47MS();
}
if( GETAD( CharEscapement ) )
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 1332baf8f628..f1413e5f62d7 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -6515,7 +6515,7 @@ void DocxAttributeOutput::CharKerning( const SvxKerningItem& rKerning )
void DocxAttributeOutput::CharLanguage( const SvxLanguageItem& rLanguage )
{
OString aLanguageCode( OUStringToOString(
- LanguageTag( rLanguage.GetLanguage()).getBcp47(),
+ LanguageTag( rLanguage.GetLanguage()).getBcp47MS(),
RTL_TEXTENCODING_UTF8));
switch ( rLanguage.Which() )
commit 750991d454f60d5718e17cbdcdeb4a438adfe6ab
Author: Eike Rathke <erack at redhat.com>
Date: Tue Sep 5 15:30:03 2017 +0200
Map MS malformed es-ES_tradnl to proper BCP 47 es-ES-u-co-trad, tdf#83190
See
BCP 47 Extension U
https://tools.ietf.org/html/rfc6067
and
http://www.unicode.org/repos/cldr/tags/latest/common/bcp47/collation.xml
http://www.unicode.org/repos/cldr/trunk/common/bcp47/collation.xml
Change-Id: I2b946ab00c2efdc1a877a5e6ce91bc703bcd9db0
diff --git a/i18nlangtag/qa/cppunit/test_languagetag.cxx b/i18nlangtag/qa/cppunit/test_languagetag.cxx
index cef9011a95fd..e9ef5739fabd 100644
--- a/i18nlangtag/qa/cppunit/test_languagetag.cxx
+++ b/i18nlangtag/qa/cppunit/test_languagetag.cxx
@@ -691,6 +691,7 @@ bool checkMapping( const OUString& rStr1, const OUString& rStr2 )
if (rStr1 == "crk-Latn-CN" ) return rStr2 == "crk-Latn-CA";
if (rStr1 == "crk-Cans-CN" ) return rStr2 == "crk-Cans-CA";
if (rStr1 == "en-GB-oed" ) return rStr2 == "en-GB-oxendict";
+ if (rStr1 == "es-ES_tradnl") return rStr2 == "es-ES-u-co-trad";
return rStr1 == rStr2;
}
diff --git a/i18nlangtag/source/isolang/isolang.cxx b/i18nlangtag/source/isolang/isolang.cxx
index 602ec4447bbd..cee528e5ebde 100644
--- a/i18nlangtag/source/isolang/isolang.cxx
+++ b/i18nlangtag/source/isolang/isolang.cxx
@@ -180,7 +180,6 @@ static IsoLanguageCountryEntry const aImplIsoLangEntries[] =
{ LANGUAGE_ITALIAN, "it", "IT", k0 },
{ LANGUAGE_DUTCH, "nl", "NL", k0 },
{ LANGUAGE_SPANISH_MODERN, "es", "ES", k0 },
- { LANGUAGE_SPANISH_DATED, "es", "ES", k0 },
{ LANGUAGE_PORTUGUESE, "pt", "PT", k0 },
{ LANGUAGE_PORTUGUESE_BRAZILIAN, "pt", "BR", k0 },
{ LANGUAGE_DANISH, "da", "DK", k0 },
@@ -763,6 +762,8 @@ static Bcp47CountryEntry const aImplBcp47CountryEntries[] =
{ LANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN, "ca-ES-valencia", "ES", "", k0 }, // In case MS format files using the old value escaped into the wild, map them back.
{ LANGUAGE_USER_ENGLISH_UK_OXENDICT, "en-GB-oxendict", "GB", "", k0 },
{ LANGUAGE_USER_ENGLISH_UK_OED, "en-GB-oed", "GB", "", LANGUAGE_USER_ENGLISH_UK_OXENDICT }, // grandfathered, deprecated, prefer en-GB-oxendict
+ { LANGUAGE_SPANISH_DATED, "es-ES-u-co-trad", "ES", "es-u-co-trad", k0 }, // RFC6067/CLDR
+ { LANGUAGE_SPANISH_DATED, "es-ES_tradnl", "ES", "", kSAME }, // MS malformed
// { LANGUAGE_YUE_CHINESE_HONGKONG, "zh-yue-HK", "HK", "", 0 }, // MS reserved, prefer yue-HK; do not add unless LanguageTag::simpleExtract() can handle it to not call liblangtag for rsc!
{ LANGUAGE_DONTKNOW, "", "", "", k0 } // marks end of table
};
diff --git a/i18nlangtag/source/isolang/mslangid.cxx b/i18nlangtag/source/isolang/mslangid.cxx
index 41231f8a7e1b..25e5a4109e7d 100644
--- a/i18nlangtag/source/isolang/mslangid.cxx
+++ b/i18nlangtag/source/isolang/mslangid.cxx
@@ -539,11 +539,6 @@ LanguageType MsLangId::getReplacementForObsoleteLanguage( LanguageType nLang )
else if (nLang == LANGUAGE_NORWEGIAN)
nLang = LANGUAGE_NORWEGIAN_BOKMAL;
- // #i94435# A Spanish variant that differs only in collation details we
- // do not support.
- else if (nLang == LANGUAGE_SPANISH_DATED)
- nLang = LANGUAGE_SPANISH_MODERN;
-
// The erroneous Tibetan vs. Dzongkha case, #i53497#
// We (and MS) have stored LANGUAGE_TIBETAN_BHUTAN. This will need
// special attention if MS one day decides to actually use
commit 93f490887c837c8a81b035d4c404da186a9bc9a2
Author: Eike Rathke <erack at redhat.com>
Date: Tue Sep 5 15:19:12 2017 +0200
Introduce LanguageTag::getBcp47MS() for writing MS malformed tags, tdf#83190
Change-Id: I1e2815b9ae60681c7cddc416cc05bf4c70dcc48a
diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx
index 2da3b95174ed..09b443983d45 100644
--- a/i18nlangtag/source/languagetag/languagetag.cxx
+++ b/i18nlangtag/source/languagetag/languagetag.cxx
@@ -2359,6 +2359,14 @@ LanguageTag & LanguageTag::makeFallback()
}
+OUString LanguageTag::getBcp47MS() const
+{
+ if (getLanguageType() == LANGUAGE_SPANISH_DATED)
+ return "es-ES_tradnl";
+ return getBcp47();
+}
+
+
bool LanguageTag::equals( const LanguageTag & rLanguageTag ) const
{
// If SYSTEM is not to be resolved or either both are SYSTEM or none, we
diff --git a/include/i18nlangtag/languagetag.hxx b/include/i18nlangtag/languagetag.hxx
index 20f159f4d171..5088756e4691 100644
--- a/include/i18nlangtag/languagetag.hxx
+++ b/include/i18nlangtag/languagetag.hxx
@@ -120,6 +120,14 @@ public:
*/
const OUString & getBcp47( bool bResolveSystem = true ) const;
+ /** Obtain BCP 47 language tag, but with MS malformed exceptions.
+
+ To be used *only* in OOXML filter context.
+ For example, es-ES-u-co-trad is stored as es-ES_tradnl which is not a
+ valid BCP 47 language tag.
+ */
+ OUString getBcp47MS() const;
+
/** Obtain language tag as Locale.
As a convention, language tags that can not be expressed as "pure"
More information about the Libreoffice-commits
mailing list