形势:
我们使用XCode导出/导入工具为我们的翻译程序生成可本地化的文件。在XCode 8中,这是很好的。自从我们更新到XCode 9之后,我们就看到了一些问题。
问题:
NSLocalizedString()键/值,因为它应该是根据这份文件:When you export localizations, Xcode searches your code for the macros and includes the strings files in the exported localization file for translation..xliff文件中似乎不存在。.xliff文件时,XCode似乎删除了文件中的所有注释。它被"(No Comment)"取代Configuration:
我尝试过的:
NSLocalizedString()文件时,我可以让Localizable.strings字符串显示在导出中,方法是使用命令行命令find ./ -name "*.m" -print0 | xargs -0 xcrun extractLocStrings -o . (我第二次对.swift文件运行它,因为我的项目是一个快速/objc混合文件)。然后组合结果,让我的字符串显示在导出中,但是没有注释,这是翻译人员需要的指南。问题:
这是XCode 9的错误吗?我是否遗漏了本地化导出/导入的任何文档或新功能/选项?有解决办法吗?
发布于 2018-10-25 17:30:12
这是一个较旧的问题,但我在Xcode 10中也有同样的问题。
解决方案是简单地将字符串文件(例如InfoPlist.strings)放在与plist.info相同的文件夹中。只有到那时,本地化导出中才包含现有的翻译。
以前,我让他们在一个专门的“本地化”组。虽然这对本地化本身有效(即运行应用程序时),但本地化导出似乎只包括来自“接近”plist.info的现有字符串文件的翻译。
发布于 2018-08-09 02:32:37
为我修复导入和导出的是取消检查关闭基本国际化,在Project > Info >Project下使用Base国际化。我用代码设置了所有的翻译,所以我不需要为我的.storyboard和.xib文件启用它。
以前,当启用"Localizable.strings (基本)“文件时,它中没有任何内容,但是Xcode 8在导出时仍然使用我的"Localizable (英语)”文件中的内容来正常工作。对于Xcode 9,如果我在Localizable (Base)中有源代码,那么导出工作正常,但是导入时仍然有问题。
我正在使用Xcode 9.4.1。
发布于 2018-08-22 07:21:45
我终于找到了问题的原因。

问题的存在是因为Xcode从未在它承诺的编码中保存文件。
有两个地方可以设置文本编码,一个是“默认文本编码”,其中包括一个“在保存上转换现有文件”复选框。
打开每个文件时,每个文件都有指定的“文本编码”文件。如果不指定文件上的文本编码,则使用“默认文本编码”。
但是,Xcode从未像它承诺的那样保存文件。例如,如果您选择一个文件指定的文本编码,比如"UTF-16",一个警报窗口会显示“取消”、“重新解释”、“转换”。

正如警报所述,如果选择转换,Xcode将将文件转换为编码。然而,事实并非如此。
因此,当您导出翻译时,文件将以从未转换成的编码打开,并被忽略.。
您可以通过以下步骤验证这一点。
解决方案
解决办法很简单。对于指定文本编码的文件,请将其保存在指定的编码中。您可以使用其他编辑器,如BBEdit,通过保存as并选择正确的编码来做到这一点。
对于未指定的文本编码的文件。确保它们被保存为“默认文本编码”。如果没有,请更改“默认文本编码”,这样您就不需要更改每个文件。
https://stackoverflow.com/questions/46831536
复制相似问题