如何本地化 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 不显示