如何本地化 settings.bundle 中的第二个 plist 文件?

Posted

技术标签:

【中文标题】如何本地化 settings.bundle 中的第二个 plist 文件?【英文标题】:How to localize second plist file in settings.bundle? 【发布时间】:2011-12-01 19:37:59 【问题描述】:

我的应用程序中有 settings.bundle,其 Root.plist 已正确本地化

Strings Filename Root

现在我有另一个名为 NewInfo 的 plist 文件。如何本地化它?当我使用相同的字符串文件名“根”时,没有任何反应。

有什么想法吗?

【问题讨论】:

【参考方案1】:

编辑答案:

我发现在设置包中本地化您的第二个子窗格 plist 文件的唯一方法是手动进行。

我刚刚对此进行了测试,它可以工作:

当您在 Finder 中打开 Settings.bundle 时,在每个 language.lproj 文件夹中,复制 Root.strings 文件并将其重命名为 NewInfo.strings(例如)。

一旦你有了这个,你应该在 Xcode 中看到你的设置包中有这些新的字符串文件。

现在在您的 NewInfo.plist 文件中,确保您有一个名为 StringsTable 的字段并将其值设置为 NewInfo(或您为新字符串文件命名的任何名称)。

我刚刚在 Xcode 4.2 中对此进行了测试,并且本地化效果很好:

这是 Root.plist 的屏幕截图,我在其中添加了“TEST”行以打开子窗格。请注意,其他 NewInfo.plist 和相关字符串位于正确的 lang.lproj 文件夹中(同样,我在 Finder 中手动将它们放在那里)。

现在这里是 NewInfo.plist,其 StringsTable 键对应于关联的 .strings 文件名:

以下是 FR 和 EN 中字符串文件的值:

在模拟器中生成的设置页面在 FR 和 EN 中显示,本地化工作正常:

【讨论】:

我想我正确地指出了 plist 文件在 settings.bundle 档案中,并且没有本地化选项。 好吧,抱歉,我没有收集到。您将 NewInfo.plist 用于什么用途,是否有特定原因将其放在 settings.bundle 中? 例如查看 ios facebook 应用程序的设置,在设置中有一个名为 info 的子窗格来显示一些信息。这是我在该主题上提出的上一个问题***.com/questions/8308193/… 谢谢,这帮助我找出了一个老错误。在我的情况下,除了每个 xx.lproj 文件夹中的 Root.strings 之外,我还在 Settings Bundle 的顶层留下了一个 Root.strings 文件;这导致只使用这个*** Root.strings,而不是本地化的字符串。【参考方案2】:

在您的项目中的 Xcode 中找到该文件。选择它并打开文件检查器(查看 -> 实用程序 -> 显示文件检查器)。您会在那里看到本地化,只需单击 + 按钮并添加您想要的语言。

【讨论】:

这是不可能的,因为无法展开settings.bundle文件,只能在finder中查看内容

以上是关于如何本地化 settings.bundle 中的第二个 plist 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Objective-c/Swift 中的 settings.bundle 中检索值?

我可以隐藏/禁用 Settings.bundle 中的字段吗?

xcconfig 中的环境变量不会在 Settings.bundle/Root.plist 中展开

iOS8 自定义键盘 Settings.bundle 不显示

phonegap 从 settings.bundle ios 获取值

重命名 Settings.bundle 而不是 Bundle 显示名称?