有人知道如何在不使用设置应用程序的情况下使用Xamarin Forms更改iOS设备区域设置吗?
如果您投票,请添加评论。非常感谢你。
更新
我想要的是控制RTL的NavigationPage按钮。
该文档说明NavigationPage按钮位置的限制由设备区域设置控制:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/localization/right-to-left
更新
我的目标是控制NavigationPage,Xamarin的文档指向更改设备区域设置,我从那里得到了想法。如果它只是应用程序级别应该更好。
对于Xamarin Forms,我建议创建一个依赖服务。创建一个这样的界面:
public interface ILanguageSwitcher
{
void ChangeAppLocale(string locale);
}
为iOS创建界面实现:
[assembly: Dependency(typeof(LanguageSwitcher))]
namespace MyApp.iOS
{
class LanguageSwitcher : ILanguageSwitcher
{
public void ChangeAppLocale(string locale)
{
var iOSLocale = locale.Replace('-', '_');
NSUserDefaults.StandardUserDefaults.SetValueForKey(NSArray.FromStrings(iOSLocale), new NSString("AppleLanguages"));
NSUserDefaults.StandardUserDefaults.Synchronize();
}
}
}
请注意,iOS中的语言环境对于美国英语而言是“en_US”,而不是“en-US”。
从您的Xamarin Forms代码中调用此依赖项:
ILanguageSwitcher _languageSwitcher = DependencyService.Get<ILanguageSwitcher>();
private void LanguagePicker_SelectedIndexChanged(object sender, System.EventArgs e)
{
var newItem = LanguagePicker.SelectedItem as CultureInfo;
if (_languageSwitcher != null)
{
_languageSwitcher.ChangeAppLocale(newItem.Name);
}
}
要使“从右到左”更改生效,例如使用希伯来语或阿拉伯语(反之亦然),应用程序需要重新启动。