Skip to content

Instantly share code, notes, and snippets.

@nodoid
Created November 9, 2015 16:26
Show Gist options
  • Save nodoid/0653a2d29c19fd48e2e9 to your computer and use it in GitHub Desktop.
Save nodoid/0653a2d29c19fd48e2e9 to your computer and use it in GitHub Desktop.
// picker
var picker = new Picker
{
HorizontalOptions = LayoutOptions.CenterAndExpand,
WidthRequest = App.ScreenSize.Width * .8
};
picker.Items.Add(LangResources.LangEnglish);
picker.Items.Add(LangResources.LangDanish);
picker.Items.Add(LangResources.LangDutch);
picker.Items.Add(LangResources.LangFrench);
picker.Items.Add(LangResources.LangFrenchLU);
picker.Items.Add(LangResources.LangGerman);
picker.Items.Add(LangResources.LangItalian);
picker.Items.Add(LangResources.LangNorwegian);
picker.Items.Add(LangResources.LangPolish);
picker.Items.Add(LangResources.LangRussian);
picker.Items.Add(LangResources.LangSwedish);
picker.SelectedIndex = 0;
picker.SelectedIndexChanged += (object sender, System.EventArgs e) =>
{
selectedLang = picker.SelectedIndex;
var cultureInfo = DependencyService.Get<ILocalize>();
cultureInfo.CurrentUICulture = new CultureInfo("no");
lblChooseLang.SetValue(Label.TextProperty, LangResources.Language);
};
// ILocalize (android)
public CultureInfo GetCurrentCultureInfo()
{
var androidLocale = Java.Util.Locale.Default;
var netLanguage = androidLocale.ToString().Replace("_", "-");
return new CultureInfo(netLanguage);
}
public void SetLocale()
{
var androidLocale = Java.Util.Locale.Default;
var netLocale = androidLocale.ToString().Replace("_", "-");
var ci = new CultureInfo(netLocale);
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
}
public void SetLocale(string locale)
{
var netLocale = locale.Replace("_", "-");
var ci = new CultureInfo(netLocale);
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
}
public CultureInfo CurrentCulture
{
get
{
return Thread.CurrentThread.CurrentCulture;
}
set
{
Thread.CurrentThread.CurrentCulture = value;
}
}
public CultureInfo CurrentUICulture
{
get
{
return Thread.CurrentThread.CurrentUICulture;
}
set
{
Thread.CurrentThread.CurrentUICulture = value;
}
}
// ios
public void SetLocale()
{
var iosLocaleAuto = NSLocale.AutoUpdatingCurrentLocale.LocaleIdentifier;
var netLocale = iosLocaleAuto.Replace("_", "-");
CultureInfo ci;
try
{
ci = new CultureInfo(netLocale);
}
catch
{
ci = GetCurrentCultureInfo();
}
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
}
public void SetLocale(string locale)
{
var netLocale = locale.Replace("_", "-");
CultureInfo ci;
try
{
ci = new CultureInfo(netLocale);
}
catch
{
ci = GetCurrentCultureInfo();
}
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
}
public CultureInfo GetCurrentCultureInfo()
{
var netLanguage = "en";
var prefLanguageOnly = "en";
if (NSLocale.PreferredLanguages.Length > 0)
{
var pref = NSLocale.PreferredLanguages[0];
prefLanguageOnly = pref.Substring(0, 2);
switch (prefLanguageOnly)
{
case "de":
pref = "de-CH";
break;
case "fr":
pref = pref == "fr" ? "fr-CH" : "fr-LU";
break;
case "it":
pref = "it-CH";
break;
case "nl":
pref = "nl-BE";
break;
}
netLanguage = pref.Replace("_", "-");
}
CultureInfo ci = null;
try
{
ci = new CultureInfo(netLanguage);
}
catch
{
ci = new CultureInfo(prefLanguageOnly);
}
return ci;
}
public CultureInfo CurrentCulture
{
get
{
return Thread.CurrentThread.CurrentCulture;
}
set
{
Thread.CurrentThread.CurrentCulture = value;
}
}
public CultureInfo CurrentUICulture
{
get
{
return Thread.CurrentThread.CurrentUICulture;
}
set
{
Thread.CurrentThread.CurrentUICulture = value;
}
}
// myapp.cs (in the PCL)
LangResources.Culture = DependencyService.Get<ILocalize>().GetCurrentCultureInfo();
DependencyService.Get<ILocalize>().SetLocale();
var currentLocale = DependencyService.Get<ILocalize>();
currentLocale.CurrentUICulture = new CultureInfo("en");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment