Resolves: #i86470# Wrong Java locale when using "nl" and "fr"
Languages don't always have a country; if there is no "-" separating language and country in the ooLocale registry value, use the entire value as the language. Initial finding by Damjan Jovanovic. However, LibreOffice knows BCP47 language tags so that needs a different approach. (cherry picked from commit d61ab2b5a0e35d55cb001e139be791420245bf35) Change-Id: I69331951372bda1c1cec80cfd10d5839d8f4b823 Reviewed-on: https://gerrit.libreoffice.org/30154 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
This commit is contained in:
committed by
Caolán McNamara
parent
88fb9d8f0a
commit
9b09a217c7
@@ -16,6 +16,7 @@ $(eval $(call gb_Library_use_udk_api,javavm))
|
||||
$(eval $(call gb_Library_use_libraries,javavm,\
|
||||
cppu \
|
||||
cppuhelper \
|
||||
i18nlangtag \
|
||||
jvmaccess \
|
||||
jvmfwk \
|
||||
sal \
|
||||
|
@@ -71,6 +71,7 @@
|
||||
#include <uno/current_context.hxx>
|
||||
#include <uno/environment.h>
|
||||
#include <jvmfwk/framework.hxx>
|
||||
#include <i18nlangtag/languagetag.hxx>
|
||||
#include "jni.h"
|
||||
|
||||
#include <stack>
|
||||
@@ -368,28 +369,25 @@ void getDefaultLocaleFromConfig(
|
||||
// read locale
|
||||
css::uno::Reference<css::registry::XRegistryKey> locale = xRegistryRootKey->openKey("L10N/ooLocale");
|
||||
if(locale.is() && !locale->getStringValue().isEmpty()) {
|
||||
LanguageTag aLanguageTag( locale->getStringValue());
|
||||
OUString language;
|
||||
OUString script;
|
||||
OUString country;
|
||||
// Java knows nothing but plain old ISO language and country codes.
|
||||
aLanguageTag.getIsoLanguageScriptCountry( language, script, country);
|
||||
|
||||
sal_Int32 index = locale->getStringValue().indexOf((sal_Unicode) '-');
|
||||
if(!language.isEmpty()) {
|
||||
OUString prop = "user.language="
|
||||
+ language;
|
||||
|
||||
if(index >= 0) {
|
||||
language = locale->getStringValue().copy(0, index);
|
||||
country = locale->getStringValue().copy(index + 1);
|
||||
pjvm->pushProp(prop);
|
||||
}
|
||||
|
||||
if(!language.isEmpty()) {
|
||||
OUString prop = "user.language="
|
||||
+ language;
|
||||
if(!country.isEmpty()) {
|
||||
OUString prop = "user.country="
|
||||
+ country;
|
||||
|
||||
pjvm->pushProp(prop);
|
||||
}
|
||||
|
||||
if(!country.isEmpty()) {
|
||||
OUString prop = "user.country="
|
||||
+ country;
|
||||
|
||||
pjvm->pushProp(prop);
|
||||
}
|
||||
pjvm->pushProp(prop);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user