gpt4 book ai didi

ios - 每个目标不同的 Storyboard本地化

转载 作者:技术小花猫 更新时间:2023-10-29 11:01:37 26 4
gpt4 key购买 nike

我有一个包含 3 个目标的项目。每个目标只需要支持一种语言,但每个目标的语言并不相同。目前我有

  • 目标 1 (es)
  • 目标 2 (es)
  • 目标 3(pt)

我的大部分字符串都在 Localizable.strings 文件中,我只是为每个目标定位不同的文件。但是,我的 Storyboard中有许多字符串。我的问题是似乎不可能为每个目标创建不同的 Storyboard本地化文件。如果我更改葡萄牙语文件的定位,则西类牙语文件的定位会自动更改。

一个可能的解决方案是为每个目标复制每个 Storyboard,但是随着目标数量的增加,这种方法的扩展性会降低。我还可以在每个 ViewController 中使用 NSLocalizedString 修改所有文本,但这看起来很乏味且容易出错。

有没有更好的解决方案?

最佳答案

跨目标共享 Storyboard

同时 this answer是首选方法,您可以将不同的 Storyboard localizations 分配给不同的目标,同时在所有目标之间共享相同 Storyboard。

先决条件:

按照 this answer 中的说明进行操作.

概念:

您想在每个目标中都有 Main.storyboard,但在每个目标中有不同的 Main.strings。此外,您不希望所有本地化在每个目标中都可用。

为此,您必须直接操作 .lproj,仅使用文件检查器时隐藏的过程。

一步一步:

  1. 按照 this answer 中的步骤创建所有片段.
  2. 从任何目标中删除 Main.storyboard。当然,选择删除引用以保留 Storyboard。
  3. 在 Finder 中,找到 Base.lproj。将 Main.storyboard 拖放回您的项目,然后选择每个目标。
  4. 在文件检查器中,确保选择语言,并且您仍在使用Localizable Stringsenter image description here
  5. 再次在 Finder 中,找到 en.lprojes.lprojfr.lproj 等。注意它们每个都包含一个Main.strings 的版本。将这些 .lproj(整个目录)拖回到您的项目中。这一次,不要选择任何目标
  6. 最后一次,在文件检查器中,将每个 Main.strings 关联到所需的目标。对每个 .strings 重复。 enter image description here

结论

通过在 Project Navigator 中将 .lproj.storyboard 解耦,您可以自由关联文件和目标。

演示:

在“设置”中将语言设置为“法语”的设备上使用法语目标查看它:

French example on iPhone 4


► 在 GitHub 上找到此解决方案以及有关 Swift Recipes 的更多详细信息.

关于ios - 每个目标不同的 Storyboard本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33694785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com