如果在 cfbundlelocalizations 中找不到语言键,如何设置默认语言

Posted

技术标签:

【中文标题】如果在 cfbundlelocalizations 中找不到语言键,如何设置默认语言【英文标题】:how to set default language if language key is not found in cfbundlelocalizations 【发布时间】:2019-01-21 15:31:10 【问题描述】:

为了获得不同语言的原生 ios 弹出窗口,我在 info.plist 中添加了支持的语言,如下所示

info.plist contents

有了这个,如果我选择法语、英语、西班牙语、意大利语或德语。我能够以各自的语言获得 iOS 原生弹出窗口。 但如果选择任何其他语言,则语言取决于 iPad 设置中的“首选语言顺序”。

如果选择了上述以外的语言,我应该如何将语言默认为英语? 例如,如果我选择葡萄牙语,我需要默认语言为英语。即,本地弹出窗口应以英文显示。 提前致谢。

我也试过添加以下内容

Tried code

以上都不起作用。

如果我选择葡萄牙语(info.plist 中未提及),我需要默认语言为英语。即,原生弹出窗口应以英文显示。

【问题讨论】:

你的问题解决了吗? 【参考方案1】:

原因:

iOS 似乎设计了语言顺序。我测试了本地化演示,得出以下结论:

    如果我选择在我的项目中实现的语言,我可以获得相应的语言。 如果我选择了我项目中没有实现的语言,iOS会选择Preferred language order中的语言,如果他在Preferred language order中找到对应的语言,他会选择你的语言应用程序的语言。 (这导致了您的问题) 如果他找不到您在项目中实现的任何对应语言,iOS 将使用您定义的语言CFBundleDevelopmentRegion 作为默认语言。

解决方案:

您可以决定在代码中使用哪种语言。获取手机的current language,然后根据自己的逻辑选择languagecurrent 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
 

【讨论】:

以上是关于如果在 cfbundlelocalizations 中找不到语言键,如何设置默认语言的主要内容,如果未能解决你的问题,请参考以下文章

CFBundleLocalizations info.plist - 如何放置多种语言

webView文本长按显示英文

Xcode 无法识别新的本地化

如果...或如果...在 Windows 批处理文件中

在 Cypher 中,如果关系不存在,我该如何创建关系;如果确实如此,请更新属性

在 Python Django 中,我想运行这两个语句,如果 else 是如果电子邮件显示它或者如果用户名显示它 [重复]