[Libreoffice-commits] core.git: 3 commits - xmloff/source xmlscript/Library_xmlscript.mk xmlscript/source

Eike Rathke erack at redhat.com
Fri Jul 12 03:32:57 PDT 2013


 xmloff/source/meta/xmlmetae.cxx                    |   10 +-------
 xmloff/source/style/xmlnumfe.cxx                   |    7 ++++-
 xmlscript/Library_xmlscript.mk                     |    1 
 xmlscript/source/xmldlg_imexp/xmldlg_export.cxx    |   26 ++++++++++++---------
 xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx |   12 ++++++---
 5 files changed, 31 insertions(+), 25 deletions(-)

New commits:
commit 6c88ebe9aaf32b5c7c6e22270ee90091c019f567
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Jul 12 12:29:45 2013 +0200

    write bcp47 format-locale if necessary and read both
    
    Change-Id: I82cfdd8652d1c86b701ccb0b913928c860a360d2

diff --git a/xmlscript/Library_xmlscript.mk b/xmlscript/Library_xmlscript.mk
index fa680d1..640b561 100644
--- a/xmlscript/Library_xmlscript.mk
+++ b/xmlscript/Library_xmlscript.mk
@@ -21,6 +21,7 @@ $(eval $(call gb_Library_use_libraries,xmlscript,\
     cppuhelper \
     sal \
     tl \
+	i18nlangtag \
 	$(gb_UWINAPI) \
 ))
 
diff --git a/xmlscript/source/xmldlg_imexp/xmldlg_export.cxx b/xmlscript/source/xmldlg_imexp/xmldlg_export.cxx
index 05c724a..8f7c284 100644
--- a/xmlscript/source/xmldlg_imexp/xmldlg_export.cxx
+++ b/xmlscript/source/xmldlg_imexp/xmldlg_export.cxx
@@ -58,6 +58,7 @@
 #include <com/sun/star/document/GraphicObjectResolver.hpp>
 
 #include <comphelper/processfactory.hxx>
+#include <i18nlangtag/languagetag.hxx>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::uno;
@@ -485,19 +486,22 @@ void ElementDescriptor::addNumberFormatAttr(
     addAttribute(XMLNS_DIALOGS_PREFIX ":format-code", sFormat );
 
     // format-locale
-    OUStringBuffer buf( 48 );
-    buf.append( locale.Language );
-    if (!locale.Country.isEmpty())
+    LanguageTag aLanguageTag( locale);
+    OUString aStr;
+    if (aLanguageTag.isIsoLocale())
     {
-        buf.append( (sal_Unicode)';' );
-        buf.append( locale.Country );
-        if (!locale.Variant.isEmpty())
-        {
-            buf.append( (sal_Unicode)';' );
-            buf.append( locale.Variant );
-        }
+        // Old style "lll;CC" for compatibility, I really don't know what may
+        // consume this.
+        if (aLanguageTag.getCountry().isEmpty())
+            aStr = aLanguageTag.getLanguage();
+        else
+            aStr = aLanguageTag.getLanguage() + ";" + aLanguageTag.getCountry();
+    }
+    else
+    {
+        aStr = aLanguageTag.getBcp47( false);
     }
-    addAttribute( XMLNS_DIALOGS_PREFIX ":format-locale", buf.makeStringAndClear() );
+    addAttribute( XMLNS_DIALOGS_PREFIX ":format-locale", aStr );
 }
 //__________________________________________________________________________________________________
 Any ElementDescriptor::readProp( OUString const & rPropName )
diff --git a/xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx b/xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx
index bc8193a..d690206 100644
--- a/xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx
+++ b/xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx
@@ -31,6 +31,7 @@
 #include <com/sun/star/script/vba/XVBACompatibility.hpp>
 
 #include <comphelper/processfactory.hxx>
+#include <i18nlangtag/languagetag.hxx>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::uno;
@@ -539,21 +540,24 @@ void FormattedFieldElement::endElement()
         if (!sLocale.isEmpty())
         {
             // split locale
+            // Don't know what may have written what we read here, so parse all
+            // old style including the trailing ";Variant" if present.
             sal_Int32 semi0 = sLocale.indexOf( ';' );
-            if (semi0 < 0) // no semi at all, just try language
+            if (semi0 < 0) // no semi at all, try new BCP47 or just language
             {
-                locale.Language = sLocale;
+                locale = LanguageTag( sLocale).getLocale( false);
             }
             else
             {
                 sal_Int32 semi1 = sLocale.indexOf( ';', semi0 +1 );
                 if (semi1 > semi0) // language;country;variant
                 {
+                    SAL_WARN( "xmlscript.xmldlg", "format-locale with variant that is ignored: " << sLocale);
                     locale.Language = sLocale.copy( 0, semi0 );
                     locale.Country = sLocale.copy( semi0 +1, semi1 - semi0 -1 );
-                    locale.Variant = sLocale.copy( semi1 +1 );
+                    // Ignore Variant that no one knows what it would be.
                 }
-                else // try language;country
+                else // language;country
                 {
                     locale.Language = sLocale.copy( 0, semi0 );
                     locale.Country = sLocale.copy( semi0 +1 );
commit 76d36d5bba2712c1c98548e73ca9fb82e11b0cca
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Jul 12 11:29:43 2013 +0200

    write ISO codes for native number transliteration
    
    Change-Id: Idc3bf2aabb7df4e57deb13251a1f6631c579268c

diff --git a/xmloff/source/style/xmlnumfe.cxx b/xmloff/source/style/xmlnumfe.cxx
index a23e94b..ea4e0ca 100644
--- a/xmloff/source/style/xmlnumfe.cxx
+++ b/xmloff/source/style/xmlnumfe.cxx
@@ -1109,12 +1109,15 @@ void SvXMLNumFmtExport::ExportPart_Impl( const SvNumberformat& rFormat, sal_uInt
     {
         /* FIXME-BCP47: ODF defines no transliteration-script or
          * transliteration-rfc-language-tag */
+        LanguageTag aLanguageTag( aAttr.Locale);
+        OUString aLanguage, aScript, aCountry;
+        aLanguageTag.getIsoLanguageScriptCountry( aLanguage, aScript, aCountry);
         rExport.AddAttribute( XML_NAMESPACE_NUMBER, XML_TRANSLITERATION_FORMAT,
                               aAttr.Format );
         rExport.AddAttribute( XML_NAMESPACE_NUMBER, XML_TRANSLITERATION_LANGUAGE,
-                              aAttr.Locale.Language );
+                              aLanguage );
         rExport.AddAttribute( XML_NAMESPACE_NUMBER, XML_TRANSLITERATION_COUNTRY,
-                              aAttr.Locale.Country );
+                              aCountry );
         rExport.AddAttribute( XML_NAMESPACE_NUMBER, XML_TRANSLITERATION_STYLE,
                               aAttr.Style );
     }
commit 2c5548a6fb0886f32cf20609638d171c43a6d1af
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Jul 12 11:22:35 2013 +0200

    write bcp47 to dc:language
    
    Change-Id: Ia62ef327cd07070c2e48f4140c58f3309581b562

diff --git a/xmloff/source/meta/xmlmetae.cxx b/xmloff/source/meta/xmlmetae.cxx
index cae4ee1..efe634c 100644
--- a/xmloff/source/meta/xmlmetae.cxx
+++ b/xmloff/source/meta/xmlmetae.cxx
@@ -18,7 +18,7 @@
  */
 
 #include <tools/debug.hxx>
-#include <i18nlangtag/mslangid.hxx>
+#include <i18nlangtag/languagetag.hxx>
 #include <rtl/ustrbuf.hxx>
 
 #include <xmloff/xmlmetae.hxx>
@@ -148,14 +148,8 @@ void SvXMLMetaExport::_MExport()
 
     //  document language
     {
-        const lang::Locale aLocale = mxDocProps->getLanguage();
-        OUString sValue = aLocale.Language;
+        OUString sValue = LanguageTag( mxDocProps->getLanguage()).getBcp47( false);
         if (!sValue.isEmpty()) {
-            if ( !aLocale.Country.isEmpty() )
-            {
-                sValue += OUString::valueOf((sal_Unicode)'-');
-                sValue += aLocale.Country;
-            }
             SvXMLElementExport aElem( mrExport, XML_NAMESPACE_DC, XML_LANGUAGE,
                                       sal_True, sal_False );
             mrExport.Characters( sValue );


More information about the Libreoffice-commits mailing list