我已经使用Base Localization将我的应用程序翻译成土耳其语。但是,我还需要在Info.plist文件中翻译NSLocationWhenInUseUsageDescription
密钥。我完成了我为其他一切做的事情:
去找文件检查员并检查土耳其语:
然后我转到新的字符串资源并通过将此密钥添加到本地化文件来完成我的翻译:
"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中,但这也没有改变任何内容。
我该如何解决这个问题?
答案 0 :(得分:19)
以下是Xcode 7.1
中最终为我工作的内容。
首先,转到项目目录并手动创建两个InfoPlist.strings
文件,第一个位于en.lproj
文件夹内,第二个位于fr.lproj
文件夹内。
两个文件都应包含以下内容:
NSLocationWhenInUseUsageDescription = "YOUR TEXT HERE";
由于文件不会在Xcode中自动显示,您必须手动将两者都添加到项目包中,这可以通过右键单击Xcode中的项目名称并选择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项目中更改了文件名和引用,但它确实有效 (或删除并使用正确的名称重新创建)。