From d4ae896d0b9950081dddafb96f05ecb241b3407b Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Fri, 10 Nov 2017 18:56:18 +0900 Subject: [PATCH] [Common] Set the current CultureInfo Change-Id: Ice96cb50dd762f2888e7ea90e61fb74eaa4eca75 Signed-off-by: Hwankyu Jhun (cherry picked from commit cbf8ce97d7170f02cce8d40b3588461add388baa) --- .../Tizen.Applications/CoreApplication.cs | 70 +++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/CoreApplication.cs diff --git a/src/Tizen.Applications.Common/Tizen.Applications/CoreApplication.cs b/src/Tizen.Applications.Common/Tizen.Applications/CoreApplication.cs old mode 100755 new mode 100644 index 786f4d5..d21efb1 --- a/src/Tizen.Applications.Common/Tizen.Applications/CoreApplication.cs +++ b/src/Tizen.Applications.Common/Tizen.Applications/CoreApplication.cs @@ -15,7 +15,7 @@ */ using System; - +using System.Globalization; using Tizen.Applications.CoreBackend; namespace Tizen.Applications @@ -194,6 +194,7 @@ namespace Tizen.Applications /// 3 protected virtual void OnLocaleChanged(LocaleChangedEventArgs e) { + ChangeCurrentCultureInfo(e.Locale); LocaleChanged?.Invoke(this, e); } @@ -235,5 +236,72 @@ namespace Tizen.Applications } base.Dispose(disposing); } + + private void ChangeCurrentCultureInfo(string locale) + { + string languageCode = string.Empty; + string localeCode = string.Empty; + CultureInfo currentCultureInfo = null; + + if (locale.Contains(".")) + { + locale = locale.Substring(0, locale.IndexOf(".")); + } + + if (locale.Contains("_")) + { + locale = locale.Replace("_", "-"); + } + + var dashIndex = locale.IndexOf("-", StringComparison.Ordinal); + if (dashIndex > 0) + { + var parts = locale.Split('-'); + languageCode = parts[0]; + localeCode = parts[1]; + } + else + { + languageCode = locale; + localeCode = ""; + } + + foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.AllCultures)) + { + if (ci.TwoLetterISOLanguageName == languageCode) + { + if (localeCode == "") + { + if (ci.Name == languageCode) + { + currentCultureInfo = new CultureInfo(ci.Name); + break; + } + } + else + { + if (ci.Name.Contains(localeCode.ToUpper())) + { + currentCultureInfo = new CultureInfo(ci.Name); + break; + } + } + } + } + + if (currentCultureInfo == null) + { + try + { + currentCultureInfo = new CultureInfo(languageCode); + } + catch (CultureNotFoundException) + { + currentCultureInfo = new CultureInfo("en"); + } + } + + CultureInfo.CurrentCulture = currentCultureInfo; + } } } -- 2.7.4