本地化非根 InfoPlist 值

Mat*_*tie 6 macos xcode localization ios

我正在尝试将本地化添加到 Info.plist 文件中显示的值。我使用文件对顶级密钥执行此操作没有任何问题InfoPlist.strings。但是,我不知道如何让它适用于非顶级值。

例如,CFBundleDocumentTypes是一个字典数组。我需要以CFBundleTypeName不同的方式本地化每个数组的键。对于带有密钥的UTExportedTypeDeclarations/也存在类似的情况。UTImportedTypeDeclarationsUTTypeDescription

Apple 的文档UTTypeDescription特别指出它可以使用 InfoPlist.strings 文件进行本地化。我已经尝试过,但没有成功。

作为参考,我尝试参考苹果自己的应用程序。我能找到的唯一一个使用非 root 键的是 Xcode,而 Xcode 实际上并未本地化为英语以外的任何语言。我无法确定它的方法是否真的有效。而且,Xcode 的包中至少有一些奇怪之处,因为 InfoPlist.strings 文件中出现的键实际上并不在 Info.plist 本身中。

有谁知道如何(或是否)可以做到这一点?

Mic*_*ais 4

使用我自己的应用程序的现实生活示例。如果您有这样的导出类型:

\n\n
<key>UTTypeDescription</key>\n<string>CreaPhoto document</string>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的法语翻译InfoPlist.strings是:

\n\n
"CreaPhoto document" = "Document Cr\xc3\xa9aPhoto";\n
Run Code Online (Sandbox Code Playgroud)\n\n

这似乎是一个愚蠢的“当然是啊”的时刻,但这与info.plist翻译中的其他所有内容完全不同,在翻译中,您应该在密钥处于根目录时将其放入。苹果没有在他们的页面中解释这一点,这对苹果来说是不值得的。

\n\n

在 macOS 中要添加的内容:每次修改此内容时都必须增加 Bundle ID(38 到 39 到 40 到 41 到 42 ...),您必须构建新版本,在调试器(或发布版)中执行它,然后必须注销并登录,以便将其考虑在内。

\n\n

有一些方法可以减少步骤,但这是我发现在 Finder 中应用它的最安全、可靠的方法。

\n