diff options
author | Eike Rathke <erack@redhat.com> | 2016-10-25 16:48:11 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2016-10-26 22:00:24 +0000 |
commit | effb27326746945763bda70e2c375c86a40a05fc (patch) | |
tree | 4745326123a6e5431c01d06d4a558b822306976b /stoc | |
parent | 90439a2f211b723a0cf6d699ca8cb4da7384580a (diff) |
Java 7 DISPLAY and FORMAT locale and script field
Change-Id: Ie62105c60a327f6e5cbcf1a801b341e988471d73
Reviewed-on: https://gerrit.libreoffice.org/30308
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Eike Rathke <erack@redhat.com>
Diffstat (limited to 'stoc')
-rw-r--r-- | stoc/source/javavm/javavm.cxx | 73 |
1 files changed, 64 insertions, 9 deletions
diff --git a/stoc/source/javavm/javavm.cxx b/stoc/source/javavm/javavm.cxx index b27df6f2e19b..b780b7a853d0 100644 --- a/stoc/source/javavm/javavm.cxx +++ b/stoc/source/javavm/javavm.cxx @@ -366,27 +366,82 @@ void getDefaultLocaleFromConfig( xConfRegistry_simple->open("org.openoffice.Setup", true, false); css::uno::Reference<css::registry::XRegistryKey> xRegistryRootKey = xConfRegistry_simple->getRootKey(); - // read locale - css::uno::Reference<css::registry::XRegistryKey> locale = xRegistryRootKey->openKey("L10N/ooLocale"); - if(locale.is() && !locale->getStringValue().isEmpty()) { - LanguageTag aLanguageTag( locale->getStringValue()); + // Since 1.7 Java knows DISPLAY and FORMAT locales, which match our UI and + // system locale. See + // http://hg.openjdk.java.net/jdk8u/jdk8u-dev/jdk/file/569b1b644416/src/share/classes/java/util/Locale.java + // https://docs.oracle.com/javase/tutorial/i18n/locale/scope.html + // https://docs.oracle.com/javase/7/docs/api/java/util/Locale.html + + // Read UI language/locale. + css::uno::Reference<css::registry::XRegistryKey> xUILocale = xRegistryRootKey->openKey("L10N/ooLocale"); + if(xUILocale.is() && !xUILocale->getStringValue().isEmpty()) { + LanguageTag aLanguageTag( xUILocale->getStringValue()); OUString language; OUString script; OUString country; - // Java knows nothing but plain old ISO language and country codes. + // Java knows nothing but plain old ISO codes, unless Locale.Builder or + // Locale.forLanguageTag() are used, or non-standardized variant field + // content which we ignore. aLanguageTag.getIsoLanguageScriptCountry( language, script, country); if(!language.isEmpty()) { - OUString prop = "user.language=" - + language; + OUString prop = "user.language=" + language; + pjvm->pushProp(prop); + } + // As of Java 7 also script is supported. + if(!script.isEmpty()) { + OUString prop = "user.script=" + script; pjvm->pushProp(prop); } if(!country.isEmpty()) { - OUString prop = "user.country=" - + country; + OUString prop = "user.country=" + country; + pjvm->pushProp(prop); + } + + // Java 7 DISPLAY category is our UI language/locale. + if(!language.isEmpty()) { + OUString prop = "user.language.display=" + language; + pjvm->pushProp(prop); + } + if(!script.isEmpty()) { + OUString prop = "user.script.display=" + script; + pjvm->pushProp(prop); + } + + if(!country.isEmpty()) { + OUString prop = "user.country.display=" + country; + pjvm->pushProp(prop); + } + } + + // Read system locale. + css::uno::Reference<css::registry::XRegistryKey> xLocale = xRegistryRootKey->openKey("L10N/ooSetupSystemLocale"); + if(xLocale.is() && !xLocale->getStringValue().isEmpty()) { + LanguageTag aLanguageTag( xLocale->getStringValue()); + OUString language; + OUString script; + OUString country; + // Java knows nothing but plain old ISO codes, unless Locale.Builder or + // Locale.forLanguageTag() are used, or non-standardized variant field + // content which we ignore. + aLanguageTag.getIsoLanguageScriptCountry( language, script, country); + + // Java 7 FORMAT category is our system locale. + if(!language.isEmpty()) { + OUString prop = "user.language.format=" + language; + pjvm->pushProp(prop); + } + + if(!script.isEmpty()) { + OUString prop = "user.script.format=" + script; + pjvm->pushProp(prop); + } + + if(!country.isEmpty()) { + OUString prop = "user.country.format=" + country; pjvm->pushProp(prop); } } |