使用 Xamarin 和 C# 在 Android 上更改 CultureInfo
本文关键字:CultureInfo Android Xamarin 使用 | 更新日期: 2023-09-27 18:34:14
我调用自定义方法将当前区域性信息动态切换到法语"fr"
像这样,但在调用该方法后,我的 android 应用程序仍然使用默认文化"en",但在调试模式下,文化似乎还可以。我的文件夹没问题。我两者都有,字符串值已配置。文件夹:资源/值/字符串.xml,资源/值-fr/字符串.xml。
我需要重新加载我的内容视图或其他东西吗? 我在这里错过了什么?
private void SetLocal(string lang)
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(lang);
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang);
}
我知道
现在回答这个问题有点晚了,但我找到了解决方案!!试试这个它对我有用:
string cultureName = "fr-FR";
var locale = new Java.Util.Locale(cultureName);
Java.Util.Locale.Default = locale;
var config = new Android.Content.Res.Configuration { Locale = locale };
BaseContext.Resources.UpdateConfiguration(config, BaseContext.Resources.DisplayMetrics);
我现在无法测试它,但请尝试以下操作:
Resources.Configuration.Locale = new Locale(lang);
Resources.UpdateConfiguration(Resources.Configuration, Resources.DisplayMetrics);
所有这些都在主活动中
using System.Threading;
using System.Globalization;
void SetLocale() {
CultureInfo ci = new CultureInfo("es-US");
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
Console.WriteLine("CurrentCulture set: " + ci.Name);
}