NSLocationWhenInUseUsageDescription使用.strings文件无法正常工作

时间:2015-05-26 09:15:23

标签: ios xcode localization info.plist

我已经使用Base Localization将我的应用程序翻译成土耳其语。但是,我还需要在Info.plist文件中翻译NSLocationWhenInUseUsageDescription密钥。我完成了我为其他一切做的事情:

去找文件检查员并检查土耳其语:

enter image description here

然后我转到新的字符串资源并通过将此密钥添加到本地化文件来完成我的翻译:

enter image description here

"NSLocationWhenInUseUsageDescription" = "[my Turkish description of location permissions]";

保存,编译,甚至从设备删除应用程序并重建,但无济于事。当我的应用程序询问位置权限时,下面的解释仍然是英文版本(我已尝试在基本翻译文件下包含英文翻译,但它没有改变任何内容)。

其他一切都是土耳其语,翻译得很好。这只是不翻译的位置许可。我还看到How to localise a string inside the iOS info.plist file?并将"Localized resources can be mixed" = YES键(当然,CFBundleAllowMixedLocalizations,而不是字面上的句子)添加到我的原始plist中,但这也没有改变任何内容。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:19)

以下是Xcode 7.1中最终为我工作的内容。

首先,转到项目目录并手动创建两个InfoPlist.strings文件,第一个位于en.lproj文件夹内,第二个位于fr.lproj文件夹内。

两个文件都应包含以下内容:

NSLocationWhenInUseUsageDescription = "YOUR TEXT HERE";

由于文件不会在Xcode中自动显示,您必须手动将两者都添加到项目包中,这可以通过右键单击Xco​​de中的项目名称并选择Add files to X选项来实现,然后选择刚刚创建的文件。

此外,如果你想测试结果&确保工作正常,更改Application Language中的Edit Scheme > Run > Options是不够的。

您需要通过Settings > General > Language & Region > iPhone Language

更改模拟器设备语言

答案 1 :(得分:2)

我已经开始了。删除了翻译,清理了项目,然后再次尝试。有效。我不知道为什么它最初没有。

答案 2 :(得分:0)

我的问题似乎区分大小写:

我的InfoPlist.strings在发现者和Xcode(infoPlist)中的“i”较低,但需要更高。

我在源Xcode项目中更改了文件名和引用,但它确实有效 (或删除并使用正确的名称重新创建)。