使用 .strings 文件的 NSLocationWhenInUseUsageDescription 本地化不起作用

NSLocationWhenInUseUsageDescription localization using .strings file not working

我已使用 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 中,但这也没有改变任何东西。

我该如何解决这个问题?

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

以下是 Xcode 7.1 对我有用的东西。

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

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

NSLocationWhenInUseUsageDescription = "YOUR TEXT HERE";

由于文件不会自动显示在 Xcode 中,您必须手动将它们添加到项目包中,这可以通过右键单击 Xcode 中的项目名称和选择 Add files to X 选项,然后选择您刚刚创建的文件。


此外,如果您想测试结果并确保一切正常,仅更改 Edit Scheme > Run > Options 中的 Application Language 是不够的。

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

更改模拟器设备语言

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

我的 InfoPlist.strings 在 finder 和 Xcode (infoPlist) 中有较低的 "i",但需要较高。

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