我正在尝试本地化我的应用,我有以下代码:
self.arrayLabels = [NSArray arrayWithObjects:NSLocalizedString(@"This is a test", "this is a test"), NSLocalizedString(@"I want my strings to get added to localizable strings file", "strings comment") , nil];
所以,基本上,根据我的理解,这应该是它,我点击Editor > Export for Localization
,字符串应该在我的XLiff
文件中。但是,他们不是。
我有两种语言,英语和葡萄牙语,两个localizable.strings
文件都是空的。
我错过了什么吗?
答案 0 :(得分:5)
我发现我有一些错误,这就是我无法从菜单中导出的原因。
我怀疑没有返回错误消息。
事实证明,该菜单正在调用现有的命令行工具,因此通过消除过程,您可以修复导出。
以下是我为解决问题所采取的措施。希望他们会帮助你。
运行等效命令行
xcodebuild -exportLocalizations
如果您有错误,xcodebuild可能会提供文件名和行号,以便您能够解决问题。
我有一个没有任何细节的错误。
然后我转而使用genstrings,因为xcodebuild似乎在循环中使用。
find . -name '*.m' | xargs genstrings -o somePath/en.lproj
这给出了同样的错误
要获取有问题的文件,我在循环中单独运行每个文件。
for f in `find . -name '*.m'`; do
echo "processing $f ...";
genstrings -o somePath/en.lproj $f
done
这给了我一个有问题的文件的名称。
事实证明,genstrings不喜欢我试图使用unicode字符\ U000000B2打印的特殊字符。
答案 1 :(得分:1)
要导出的XLIFF包含本地化字符串,必须满足以下几个条件:
NSLocalizedString
宏的字符串文字。例如:这是正确的方法:
NSLocalizedString("some_key", "")
这不起作用:
let key = "some_key"
NSLocalizedString(key, "")
答案 2 :(得分:0)
在Xcode中,使用编辑器 - >"提取本地化"菜单将生成.xliff文件(每种语言选择一个)。 .xliff文件将发送到翻译服务进行翻译。翻译服务更新.xliff文件后,您需要使用编辑器 - >"导入本地化"将其导回到应用程序中。完成此步骤后,对于每种语言,您将找到包含翻译结果的xx.lproj /文件夹。