iOS故事板本地化的新UI

7

我在一个项目中使用了Xcode 5。这个项目需要进行本地化处理。Xcode已经帮我生成了Localizable.strings文件,它看起来像这样:

/* Class = "IBUIButton"; normalTitle = "2013-10-1"; ObjectID = "p5u-h7-pfJ"; */
"p5u-h7-pfJ.normalTitle" = "2013-10-1";

/* Class = "IBUILabel"; text = "Label"; ObjectID = "pBS-eN-YUz"; */
"pBS-eN-YUz.text" = "Label";

/* Class = "IBUITextField"; placeholder = "Input Name Here"; ObjectID = "pE4-WG-fPp"; */
"pE4-WG-fPp.placeholder" = "Input Name Here";

/* Class = "IBUILabel"; text = "Detail"; ObjectID = "qSu-Mo-baT"; */
"qSu-Mo-baT.text" = "Detail";

但是如果我想在storyboard中添加新的UI,我该怎么做?如何添加新的键值?


1
您可以在同一文件上追加更多内容。 - ldindu
4个回答

19
在你的故事板中,每个对象都有一个ID。在“工具”视图,“身份验证检查器”缩略图,“文档”部分中,有一个字段“对象ID”。
我从未使用过这个功能,但我猜想,如果您有一个带有ID 141-wB-KQD 的标签,并且希望设置其文本属性,则必须在您的Localizable.strings中输入:
"141-wB-KQD.text" = "the value you want";

2
在 Xcode 6.x.x 中,这是从左边数起的第三个选项卡。它看起来有点像美国国旗。在这里,您可以设置自定义类。 - dave

2
  1. 备份需要更新的语言环境的storyboard的.strings文件。

  2. 在项目导航器中选择storyboard(在左侧Xcode窗格中),打开文件检查器(右窗格)并取消该语言环境的复选框。

  3. 在出现的“您是否要删除...”警告中,勾选“从磁盘中删除本地化资源文件”复选框,然后按“删除”按钮。

  4. 重新标记同一个复选框;这将生成该语言环境的本地化资源文件;它将包含所有对象的条目,包括新添加的对象,但其内容将不会本地化。

  5. 将此新生成的文件与已保存的备份合并 - 这将恢复您之前完成的所有本地化。

  6. 本地化新对象。


1
我不确定这是否是“正确”或最好的方法,但以下是我的做法:
1)尽量在本地化时最后才进行。换句话说,首先尝试确保不需要对基础storyboard进行任何更改。这听起来可能有点含糊,但实际上,这是避免麻烦的最佳方式。
2)既然事情并不总是如此,如果您确实需要进行更改,您可以将它们从“strings”更改为“storyboard”,然后再转回来以将更改推送到本地化文件中。这将保留您现有的翻译,并自动处理任何新内容,因此比直接从bundle中删除本地化文件要好。
我注意到这可能会导致本地化文件中出现一些冗余字符串,有时您必须手动删除它们,否则它无法正确编译,但如果有更好的方法,我也想知道。

-1
如果您想本地化您的项目视图,只需进入Storyboard,点击视图控制器,然后进入文件检查器并点击本地化... 您将为每种语言拥有一个Storyboard文件。

1
我已经做到了,但如果我需要向故事板添加新项目,该怎么办? - bohan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接