所以我有一个过去已经本地化的项目。但是我们创建了一些新的密钥,我们希望单独翻译它们。
另外在某些语言中缺少一些键,所以我也想找到它们。所以我所做的是使用Xcode的导出工具导出xliff文件进行翻译。我在我的项目中到处使用NSLocalizedString,理论上应该让我接受。
但是当我打开导出的xliff文件时(让我们说意大利语)我有以下问题:
可本地化文件的xliff文件中的部分列出两次。这是第一次:
projectName / Localizable.strings的翻译
在xliff文件的这一部分中,所有翻译都缺失,即使可本地化文件包含大多数键的翻译值。
然后将相同的可本地化文件列为两次:
projectName / en.lproj / Localizable.strings的翻译
在这种情况下,键都具有翻译的值,但如果英语可本地化文件中缺少某个键,那么它也会从这里丢失。
这对我来说是一个巨大的痛苦,因为我只是在寻找缺少翻译的密钥,但这意味着我必须再次浏览英文列表以确保没有密钥丢失
这对我来说似乎不正常或不实用。任何人都知道我可能做错了什么?
顺便说一句,翻译过的密钥在应用程序本身上运行良好,在设备和模拟器上都尝试过。
感谢您的帮助。
答案 0 :(得分:2)
我没有使用xliff
导出的文件来管理我的翻译,所以我不能用这个给你答案。
但是,您可以使用Localization.strings
文件解决查找缺少本地化的问题。
您可以使用genstrings
命令生成Localizable.strings
文件,该文件将包含代码中的所有NSLocalizedString
。
为此,您必须将源文件的所有内容传递给genstrings
。
例如,如果您只有一个swift项目,则可以在项目的根目录下运行此命令:
find . -name "*.swift" | xargs genstrings
这将生成一个Localizable.strings
文件,然后您可以使用FileMerge等文件比较工具与现有的Localizable.strings
文件进行比较。为了使其有效,您可能需要对所有Localizable.strings
文件中的键进行排序,我知道很多编辑都可以这样做(SublimeText是一个)。
正如您所看到的,上述解决方案是手动的,如果您需要多次执行此操作,则会出现错误。在过去,我使用python脚本对其进行了自动化,该脚本根据生成的Localizable.strings
和本地化的strings
文件执行以下操作:
Localizable.strings
以获取所有引用键strings
文件以获取本地化密钥希望这有帮助!