使用 Xcode 8.1 导入 .xliff 文件后清空 Localizable.strings
Posted
技术标签:
【中文标题】使用 Xcode 8.1 导入 .xliff 文件后清空 Localizable.strings【英文标题】:Empty Localizable.strings after importing .xliff file using Xcode 8.1 【发布时间】:2016-11-25 17:15:28 【问题描述】:我正在按照 Apple 的 Internationalization and Localization Guide 中的建议通过以下操作测试导出/导入本地化流程:
-
使用 Single View Application 模板创建一个新的 ios 项目
像这样设置 ViewController 的标题
override func viewDidLoad()
super.viewDidLoad()
title = NSLocalizedString("Hello", comment: "Salutation")
为项目添加新的本地化(我选择了意大利语)
使用 Editor > Export For Localization... 命令导出意大利语本地化的 .xliff 文件
编辑 it.xliff 文件并将"Hello"
转换为"Ciao"
使用 Editor > Import Localizations... 命令导入 it.xliff 文件
Xcode 将 Localizable.strings 和 InfoPlist.strings 文件添加到项目中(在 it.lproj 文件夹中)
打开 Localizable.strings 和/或 InfoPlist.strings 文件,注意里面唯一的东西是/* No Localized Strings */
我可以使用 老式 genstrings
方法,但如果有人能指出我使用 xliff 文件的正确方向,我将不胜感激。
【问题讨论】:
【参考方案1】:据此贴:https://www.raywenderlich.com/64401/internationalization-tutorial-for-ios-2014
您必须将类中的所有硬编码键添加到 Localizable.strings(英文)
所以你要做的是:
改变
title = NSLocalizedString("Hello", comment: "Salutation")
到
title = NSLocalizedString("general.greeting", comment: "Salutation")
然后,将其添加到您的 Localizable.strings(英文):
"general.greeting" = "Hello";
然后,为本地化而导出,类似这样的内容将写入 .xliff 文件中:
<trans-unit id="general.greeting">
<source>Hello</source>
<note>Salutation</note>
</trans-unit>
使用<target></target>
为问候语添加意大利语本地化版本:
<trans-unit id="general.greeting">
<source>Hello</source>
<target>Ciao</target>
<note>Salutation</note>
</trans-unit>
本地化导入,Localizable.strings(意大利语)应包含本地化。
【讨论】:
现在我看到了我的工作流程的问题:Localizable.strings 文件需要存在于所有本地化之前使用Editor > Export For Localization...(我的理解是它们是在导入 .xliff 文件时创建的)。 是的,很遗憾 XCode 不会自动创建它以上是关于使用 Xcode 8.1 导入 .xliff 文件后清空 Localizable.strings的主要内容,如果未能解决你的问题,请参考以下文章
XLIFF 中的 xib 中缺少字符串(Xcode 基本本地化)
Xcode Localization & Internationalization: Exporting for Localization (XLIFF) 不会导出 Info.plist 条目