diff options
author | Vadim Savchuk <vsavchuk@productengine.com> | 2010-03-26 19:09:11 +0200 |
---|---|---|
committer | Vadim Savchuk <vsavchuk@productengine.com> | 2010-03-26 19:09:11 +0200 |
commit | b7d0bb9e1ed7aab7eb6d4bb0eb129778892f503a (patch) | |
tree | 7f5028e5d72996d65ac5827729959b2cbcbd01b3 | |
parent | 5a12802503b8e557b5cdd99202466bb293a4474f (diff) |
Fixed bug EXT-6399 (System locale is the same for all languages).
Problem:
* English locale was set for all languages.
* Specifying a correct locale didn't affect anything, including date/time formatting.
My investigation has shown that LLStringUtil was instantiated twice: in the
main binary and in libllcommon.so.
Because LLStringUtil::setLocale() was called from newview and getLocale()
was called from llcommon, they effectively used *different* instances of
LLStringUtil::sLocale. Hence getLocale() always returned empty string.
This seems to be caused by get/setLocale() methods not being dllexported.
The fix instantiates get/setLocale() and sLocale in llcommon and exposes
them to use from newview (i.e. prevents multiple instantiation).
Besides, I specified correct locale names for all languages and platforms.
Reviewed by Leyla: https://codereview.productengine.com/secondlife/r/104/
--HG--
branch : product-engine
11 files changed, 43 insertions, 29 deletions
diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp index 5f3d9d6582..b5a73ec1d1 100644 --- a/indra/llcommon/llstring.cpp +++ b/indra/llcommon/llstring.cpp @@ -911,6 +911,20 @@ bool LLStringUtil::simpleReplacement(std::string &replacement, std::string token return false; } +//static +template<> +void LLStringUtil::setLocale(std::string inLocale) +{ + sLocale = inLocale; +}; + +//static +template<> +std::string LLStringUtil::getLocale(void) +{ + return sLocale; +}; + // static template<> void LLStringUtil::formatNumber(std::string& numStr, std::string decimals) diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h index 62cedcde4e..96588b29b9 100644 --- a/indra/llcommon/llstring.h +++ b/indra/llcommon/llstring.h @@ -241,8 +241,8 @@ public: LL_COMMON_API static S32 format(std::basic_string<T>& s, const LLSD& substitutions); LL_COMMON_API static bool simpleReplacement(std::basic_string<T>& replacement, std::basic_string<T> token, const format_map_t& substitutions); LL_COMMON_API static bool simpleReplacement(std::basic_string<T>& replacement, std::basic_string<T> token, const LLSD& substitutions); - static void setLocale (std::string inLocale) {sLocale = inLocale;}; - static std::string getLocale (void) {return sLocale;}; + LL_COMMON_API static void setLocale (std::string inLocale); + LL_COMMON_API static std::string getLocale (void); static bool isValidIndex(const std::basic_string<T>& string, size_type i) { diff --git a/indra/newview/skins/default/xui/da/language_settings.xml b/indra/newview/skins/default/xui/da/language_settings.xml index 71418d446a..fa8a788605 100644 --- a/indra/newview/skins/default/xui/da/language_settings.xml +++ b/indra/newview/skins/default/xui/da/language_settings.xml @@ -3,9 +3,9 @@ <strings> <!-- Locale Information --> - <string name="MicrosoftLocale">english</string> - <string name="DarwinLocale">C</string> - <string name="LinuxLocale">C</string> + <string name="MicrosoftLocale">danish</string> + <string name="DarwinLocale">da_DK.UTF-8</string> + <string name="LinuxLocale">da_DK.UTF-8</string> <!-- datetimeToCodes["wkday"] = "%a"; // Thu diff --git a/indra/newview/skins/default/xui/de/language_settings.xml b/indra/newview/skins/default/xui/de/language_settings.xml index 71418d446a..3e357007ff 100644 --- a/indra/newview/skins/default/xui/de/language_settings.xml +++ b/indra/newview/skins/default/xui/de/language_settings.xml @@ -3,9 +3,9 @@ <strings> <!-- Locale Information --> - <string name="MicrosoftLocale">english</string> - <string name="DarwinLocale">C</string> - <string name="LinuxLocale">C</string> + <string name="MicrosoftLocale">german</string> + <string name="DarwinLocale">de_DE.UTF-8</string> + <string name="LinuxLocale">de_DE.UTF-8</string> <!-- datetimeToCodes["wkday"] = "%a"; // Thu diff --git a/indra/newview/skins/default/xui/es/language_settings.xml b/indra/newview/skins/default/xui/es/language_settings.xml index 71418d446a..1ade4ba300 100644 --- a/indra/newview/skins/default/xui/es/language_settings.xml +++ b/indra/newview/skins/default/xui/es/language_settings.xml @@ -3,9 +3,9 @@ <strings> <!-- Locale Information --> - <string name="MicrosoftLocale">english</string> - <string name="DarwinLocale">C</string> - <string name="LinuxLocale">C</string> + <string name="MicrosoftLocale">spanish</string> + <string name="DarwinLocale">es_ES.UTF-8</string> + <string name="LinuxLocale">es_ES.UTF-8</string> <!-- datetimeToCodes["wkday"] = "%a"; // Thu diff --git a/indra/newview/skins/default/xui/fr/language_settings.xml b/indra/newview/skins/default/xui/fr/language_settings.xml index 71418d446a..117ae16ee8 100644 --- a/indra/newview/skins/default/xui/fr/language_settings.xml +++ b/indra/newview/skins/default/xui/fr/language_settings.xml @@ -3,9 +3,9 @@ <strings> <!-- Locale Information --> - <string name="MicrosoftLocale">english</string> - <string name="DarwinLocale">C</string> - <string name="LinuxLocale">C</string> + <string name="MicrosoftLocale">french</string> + <string name="DarwinLocale">fr_FR.UTF-8</string> + <string name="LinuxLocale">fr_FR.UTF-8</string> <!-- datetimeToCodes["wkday"] = "%a"; // Thu diff --git a/indra/newview/skins/default/xui/it/language_settings.xml b/indra/newview/skins/default/xui/it/language_settings.xml index 71418d446a..82cf789a6b 100644 --- a/indra/newview/skins/default/xui/it/language_settings.xml +++ b/indra/newview/skins/default/xui/it/language_settings.xml @@ -3,9 +3,9 @@ <strings> <!-- Locale Information --> - <string name="MicrosoftLocale">english</string> - <string name="DarwinLocale">C</string> - <string name="LinuxLocale">C</string> + <string name="MicrosoftLocale">italian</string> + <string name="DarwinLocale">it_IT.UTF-8</string> + <string name="LinuxLocale">it_IT.UTF-8</string> <!-- datetimeToCodes["wkday"] = "%a"; // Thu diff --git a/indra/newview/skins/default/xui/ja/language_settings.xml b/indra/newview/skins/default/xui/ja/language_settings.xml index 71418d446a..72382417d9 100644 --- a/indra/newview/skins/default/xui/ja/language_settings.xml +++ b/indra/newview/skins/default/xui/ja/language_settings.xml @@ -3,9 +3,9 @@ <strings> <!-- Locale Information --> - <string name="MicrosoftLocale">english</string> - <string name="DarwinLocale">C</string> - <string name="LinuxLocale">C</string> + <string name="MicrosoftLocale">japanese</string> + <string name="DarwinLocale">ja_JP.UTF-8</string> + <string name="LinuxLocale">ja_JP.UTF-8</string> <!-- datetimeToCodes["wkday"] = "%a"; // Thu diff --git a/indra/newview/skins/default/xui/nl/language_settings.xml b/indra/newview/skins/default/xui/nl/language_settings.xml index 71418d446a..dc4663705f 100644 --- a/indra/newview/skins/default/xui/nl/language_settings.xml +++ b/indra/newview/skins/default/xui/nl/language_settings.xml @@ -3,9 +3,9 @@ <strings> <!-- Locale Information --> - <string name="MicrosoftLocale">english</string> - <string name="DarwinLocale">C</string> - <string name="LinuxLocale">C</string> + <string name="MicrosoftLocale">dutch</string> + <string name="DarwinLocale">nl_NL.UTF-8</string> + <string name="LinuxLocale">nl_NL.UTF-8</string> <!-- datetimeToCodes["wkday"] = "%a"; // Thu diff --git a/indra/newview/skins/default/xui/pl/language_settings.xml b/indra/newview/skins/default/xui/pl/language_settings.xml index 71418d446a..debc451a33 100644 --- a/indra/newview/skins/default/xui/pl/language_settings.xml +++ b/indra/newview/skins/default/xui/pl/language_settings.xml @@ -3,9 +3,9 @@ <strings> <!-- Locale Information --> - <string name="MicrosoftLocale">english</string> - <string name="DarwinLocale">C</string> - <string name="LinuxLocale">C</string> + <string name="MicrosoftLocale">polish</string> + <string name="DarwinLocale">pl_PL.UTF-8</string> + <string name="LinuxLocale">pl_PL.UTF-8</string> <!-- datetimeToCodes["wkday"] = "%a"; // Thu diff --git a/indra/newview/skins/default/xui/pt/language_settings.xml b/indra/newview/skins/default/xui/pt/language_settings.xml index 71418d446a..f25e77574d 100644 --- a/indra/newview/skins/default/xui/pt/language_settings.xml +++ b/indra/newview/skins/default/xui/pt/language_settings.xml @@ -3,9 +3,9 @@ <strings> <!-- Locale Information --> - <string name="MicrosoftLocale">english</string> - <string name="DarwinLocale">C</string> - <string name="LinuxLocale">C</string> + <string name="MicrosoftLocale">portuguese</string> + <string name="DarwinLocale">pt_PT.UTF-8</string> + <string name="LinuxLocale">pt_PT.UTF-8</string> <!-- datetimeToCodes["wkday"] = "%a"; // Thu |