Kaydet (Commit) 9b09a217 authored tarafından Eike Rathke's avatar Eike Rathke Kaydeden (comit) Caolán McNamara

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 d61ab2b5)

Change-Id: I69331951372bda1c1cec80cfd10d5839d8f4b823
Reviewed-on: https://gerrit.libreoffice.org/30154Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst 88fb9d8f
......@@ -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);
if(!language.isEmpty()) {
OUString prop = "user.language="
+ language;
pjvm->pushProp(prop);
}
pjvm->pushProp(prop);
}
if(!country.isEmpty()) {
OUString prop = "user.country="
+ country;
if(!country.isEmpty()) {
OUString prop = "user.country="
+ country;
pjvm->pushProp(prop);
}
pjvm->pushProp(prop);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment