/// <since_tizen> 3 </since_tizen>
protected virtual void OnCreate()
{
- string locale = ULocale.GetDefaultLocale();
- ChangeCurrentUICultureInfo(locale);
- ChangeCurrentCultureInfo(locale);
+ if (!GlobalizationMode.Invariant)
+ {
+ string locale = ULocale.GetDefaultLocale();
+ ChangeCurrentUICultureInfo(locale);
+ ChangeCurrentCultureInfo(locale);
+ }
+ else
+ {
+ Log.Warn(LogTag, "Run in invariant mode");
+ }
Created?.Invoke(this, EventArgs.Empty);
}
/// <since_tizen> 3 </since_tizen>
protected virtual void OnLocaleChanged(LocaleChangedEventArgs e)
{
- ChangeCurrentUICultureInfo(e.Locale);
+ if (!GlobalizationMode.Invariant)
+ {
+ ChangeCurrentUICultureInfo(e.Locale);
+ }
+
LocaleChanged?.Invoke(this, e);
}
/// <since_tizen> 3 </since_tizen>
protected virtual void OnRegionFormatChanged(RegionFormatChangedEventArgs e)
{
- ChangeCurrentCultureInfo(e.Region);
+ if (!GlobalizationMode.Invariant)
+ {
+ ChangeCurrentCultureInfo(e.Region);
+ }
+
RegionFormatChanged?.Invoke(this, e);
}
}
}
+ internal static class GlobalizationMode
+ {
+ private static int _invariant = -1;
+
+ internal static bool Invariant
+ {
+ get
+ {
+ if (_invariant == -1)
+ {
+ string value = Environment.GetEnvironmentVariable("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT");
+ _invariant = value != null ? (value.Equals("1") ? 1 : 0) : 0;
+ }
+
+ return _invariant != 0;
+ }
+ }
+ }
+
internal class ULocale
{
private const int ULOC_FULLNAME_CAPACITY = 157;
private static readonly Dictionary<string, string> _cultureNames = new Dictionary<string, string>();
private static readonly object _lock = new object();
private const string _pathCultureInfoXml = "/usr/share/dotnet.tizen/framework/i18n/CultureInfo.xml";
- private static readonly CultureInfo _cultureInfo = new CultureInfo("en-US");
public static void Initialize()
{
Initialize();
}
- if (_cultureNames.TryGetValue(locale.ToLower(_cultureInfo), out string cultureName))
+ if (_cultureNames.TryGetValue(locale.ToLowerInvariant(), out string cultureName))
{
return cultureName;
}