【问题标题】:how to set default language if language key is not found in cfbundlelocalizations如果在 cfbundlelocalizations 中找不到语言键,如何设置默认语言
【发布时间】:2019-01-21 15:31:10
【问题描述】:
为了获得不同语言的原生 iOS 弹出窗口,我在 info.plist 中添加了支持的语言,如下所示
info.plist contents
有了这个,如果我选择法语、英语、西班牙语、意大利语或德语。我能够以各自的语言获得 iOS 原生弹出窗口。
但如果选择任何其他语言,则语言取决于 iPad 设置中的“首选语言顺序”。
如果选择了上述以外的语言,我应该如何将语言默认为英语?
例如,如果我选择葡萄牙语,我需要默认语言为英语。即,本地弹出窗口应以英文显示。
提前致谢。
我也试过添加以下内容
Tried code
以上都不起作用。
如果我选择葡萄牙语(info.plist 中未提及),我需要默认语言为英语。即,原生弹出窗口应以英文显示。
【问题讨论】:
标签:
xamarin.ios
localization
info.plist
【解决方案1】:
原因:
iOS 似乎设计了语言顺序。我测试了本地化演示,得出以下结论:
- 如果我选择在我的项目中实现的语言,我可以获得相应的语言。
- 如果我选择了我项目中没有实现的语言,
iOS会选择Preferred language order中的语言,如果他在Preferred language order中找到对应的语言,他会选择你的语言应用程序的语言。 (这导致了您的问题)
- 如果他找不到您在项目中实现的任何对应语言,
iOS 将使用您定义的语言CFBundleDevelopmentRegion 作为默认语言。
解决方案:
您可以决定在代码中使用哪种语言。获取手机的current language,然后根据自己的逻辑选择language和current language。
string[] languages = NSLocale.PreferredLanguages;
// GET you current language in setting
NSString language = new NSString(languages[0]);
NSString esStr = new NSString("es");
NSString jaStr = new NSString("ja");
NSString frStr = new NSString("fr");
//decide here which language to use
if (language.HasPrefix(esStr))
{
//do in Spanish
}
else if (language.HasPrefix(jaStr))
{
//do in japanese
}
else if (language.HasPrefix(frStr))
{
//do in french
}
else {
// SET your language to english here as default language
}