我正在尝试使用.resx文件在xamarin.mac中进行本地化
在AppDelegate里面,我改变了线程的当前文化:
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo ("ru"); System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo ("ru");
我的应用程序中还有两个资源文件:
我也使用本地语言更改,这里是整个AppDelegate构造函数:
public AppDelegate () { string [] lang = { "ru","en" }; NSUserDefaults.StandardUserDefaults.SetValueForKey (NSArray.FromObjects (lang),(Foundation.Nsstring)"AppleLanguages"); NSUserDefaults.StandardUserDefaults.Synchronize (); System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo ("ru"); System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo ("ru"); Resources.Culture = GetCurrentCultureInfo (); }
顺便说一句,xamarin工作室6.1.1(版本15)不允许我添加resource.ru.resx如果我在我的项目中有resource.ru,有点错误!
解决方法
你需要在从操作系统中检索它之后设置应用程序文化,类似这样(警告,这是来自Xamarin iOS,但对于文档它的工作方式相同,如果不是建议我,我将删除帖子):
//Add this somewhere public System.Globalization.CultureInfo GetCurrentCultureInfo () { var netLanguage = "en"; if (NSLocale.PreferredLanguages.Length > 0) { var pref = NSLocale.PreferredLanguages [0]; netLanguage = pref.Replace ("_","-"); // turns en_US into en-US } try { return new System.Globalization.CultureInfo(netLanguage); }catch{ try{ return new System.Globalization.CultureInfo(netLanguage.Substring(0,netLanguage.IndexOf("-"))); } catch{ return new System.Globalization.CultureInfo("en"); } } } //And finally add this at the start of the app AppResources.Culture = GetCurrentCultureInfo();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。