你可能知道iOS 8需要NSLocationWhenInUseUsageDescription键来使用用户的位置。我已经添加了这个键和一些一般信息到我的信息plist。

如何在plist文件中使用翻译字符串?

——更新——

我已经有一个Localizable字符串。我只是想知道我能不能用一些 NSLocalizedString(MYSTRING,nil)在plist字符串内。我知道我可以创建多个文件的信息。plist的本地化,但我想知道是否有一个更简单的方法。


当前回答

如果有些东西不工作,请确保您添加:

“本地化资源可以混合”= YES

进入info.plist。在我的例子中是InfoPlist。Strings文件被忽略了。

其他回答

在我的例子中,所有的设置都是正确的,但仍然是InfoPlist。字符串文件未找到。

唯一真正起作用的是,删除并添加InfoPlist。将文件再次字符串到项目。

我强烈建议阅读苹果的指南,并查看以下列出的WWDC资源: 国际化与本土化主题

具体来说,当您向项目中添加一种新语言时,您有机会选择要包含哪些InfoPlist文件(如果您有多个目标,则会有多个Info plist文件)。你所需要做的就是点击本地化下的+,并选择一种新的语言来添加支持。

添加完成后,它将在适当的lproj目录中为给定语言创建必要的字符串文件。

——编辑

需要明确的是,iOS会根据用户当前选择的语言,将Plist条目的键作为本地化字符串文件中的键,为Plist文件替换字符串。

Tips

记住,iOS模拟器在默认情况下使用你的系统语言。请在iOS模拟器设置中更改语言(和地区),以便测试您的翻译。 本地化字符串(见苹果文档)应该是 NSLocationWhenInUseUsageDescription = "此描述"; 而不是(引用“…”) "NSLocationWhenInUseUsageDescription" = "此描述";

你应该使用InfoPlist。字符串文件(保留I和P大写)来本地化Info.plist的值。进入“File->New->File”,在iOS的“Resource”页签下选择“Strings File”,命名为InfoPlist,进行创建。打开并插入信息。你想本地化的Plist值:

NSLocationWhenInUseUsageDescription = "Description of this";

现在可以本地化InfoPlist了。带有翻译的字符串文件。

选择本地化选项,或根据需要启用本地化,

您应该能够在左侧编辑器中看到该文件。

注意:在模拟器上测试本地化时。你需要改变模拟器本身的语言而不仅仅是Xcode目标中的语言。(约翰·韦伯致谢)

这是信息的官方文档。Plist键本地化。

感谢马可,感谢你在这个回答中包含的照片!

除了已接受的答案(项目在Flutter上,但基本与本地相同):

我有文件夹Base。lproj, en。lproj xx.kproj。等等。每个字符串。 这个文件有这样的行(键周围没有引号,末尾有一个分号):

NSLocationWhenInUseUsageDescription = "我解释为什么我需要这个";

检查你的你的项目>你的语言:

另外,检查项目。pbxproj文件,位于XXX.xcodeproj/project.pbxproj: 它应该有你所有的语言代码(en, fr等)

但即便如此,它也没有起作用。最后,我注意到信息中的CFBundleLocalizations键。plist文件。(要在XCode中以原始键值的形式打开它,请在信息栏上用鼠标右键。plist文件->打开作为>源代码) 确保数组中的值是代码而不是完整的单词,例如fr而不是French等。

<key>CFBundleLocalizations</key>
<array>
    <string>en</string>
    <string>ru</string>
    <string>lv</string>
</array>

再次检查您的设备是否设置为您正在测试的语言。干杯

注:“开发语言”不会影响您的问题,不要费心更改它。