使用Xcode 7的本地化导出工作流程,我可以导出到Xliff,并提供给翻译人员,他们将提供翻译版本,我们再次导入。
关于
在“将用户界面文本与代码分离”的文档中,它说:“或者,您可以直接从NSLocalizedString宏生成开发语言字符串文件,如“为代码中的用户界面文本创建字符串文件”中所述。”,这告诉您要使用
然而,当您指定
但是,如何为原始开发语言生成一个呢?
我想这样做是因为我不想通过手动维护我的开发语言字符串文件。
以下是情况:
- 我从项目中没有任何字符串文件开始,只有使用
NSLocalizedString
的Swift代码
static let something = NSLocalizedString("something.hello", tableName: "MyStuff", value: "Hello world!", comment: "some comment")
从项目设置中,我选择 编辑器 -> 导出本地化。因为我没有现有的字符串文件,在导出时没有选项。只有一个“另存为”提示。
这将从原始源代码执行Xliff导出。(当其他本地化已经存在时,选择“包括:仅开发语言”时与选择相同)。 Xliff看起来像这样,只有
<source>
标记,而没有<target>
标记。
<trans-unit id="something.hello">
<source>"Hello world!</source>
<note>some comment</note>
</trans-unit>
翻译人员修改了Xliff文件,并将其翻译成简体中文
通过Xcode重新导入已翻译的Xliff文件到项目中
这将为简体中文创建
MyStuff.strings
文件问题是 - 当我运行应用程序时,应用程序将使用中文字符串文件,即使语言是英语,因为不存在英语文件。它似乎不再使用默认值
value
。这意味着我也需要一个英语字符串文件。
如何通过导入/导出过程生成英语(开发语言)版本的字符串文件? Xcode不让我在原始开发语言中“导出”。因此,我无法重新导入它以创建字符串文件。
关于genstrings
的说明
在“将用户界面文本与代码分离”的文档中,它说:“或者,您可以直接从NSLocalizedString宏生成开发语言字符串文件,如“为代码中的用户界面文本创建字符串文件”中所述。”,这告诉您要使用genstrings
。然而,当您指定
tableName
时,genstrings
不再适用于Swift。据我所见,SO上已经提交了多个radar,但似乎苹果已不再支持它。