在xcode 8.3.3中,玩我的第一个严肃的本地化。我添加了两种语言,“使用基础本地化”,导出xliff,导入翻译,所有看起来基本上都像我期望的那样。我有一个base.lproj文件夹,包含main.storyboard,我的基本Localizable.strings和InfoPlist.strings。我有两个语言lproj文件夹,每个文件夹都有自己的文件。在应用程序中,它们按类型显示:
如果我将应用程序设置为以这两种语言中的任何一种运行,那么它的工作正常(我还必须在构建阶段添加一个副本来复制Localizable.strings和InfoPlist.strings)。控制台中没有错误或警告,应用程序可以正常工作,并显示故事板字符串和代码的正确文本。
然而,当我使用基本语言(英语,如果重要)时,当应用程序启动时,它会抛出所有故事板字符串的警告。有点像:
2017-07-16 10:57:22.977774-0500 AppName [1574:688423] [strings] ERROR: bFh-6v-hYF.text not found in table Main of bundle CFBundle 0x101d00020 </var/containers/Bundle/Application/guidguid-guid-guid-guid-guidguidguid/AppName.app> (executable, loaded)
N.B。事实上,所有的故事板字符串都在基本语言中正确显示,它也会将这些错误抛出到日志中。在我意识到我需要有基本的Localizable.strings之前,当它找不到它时会显示“Key”,这个项目是可翻译的字符串,但是它们会以大写字母显示。这里情况不同。应用看起来很好,但会引发错误。
所以我的第一次尝试(在仪式清理和重建之后)是创建一个Main.strings文件并尝试将其作为所述字符串的基本版本导入,因为它显然没有在Main.storyboard中找到它们已经在base.lproj中。那里没有运气,它不会让我这样做 - 这是有道理的,因为它已经认为Main.storyboard是基础。接下来的想法是尝试将Main.storyboard复制到捆绑包作为构建阶段的一部分,但这没有帮助。经过一天阅读其他人在这个平台上与i18n所遇到的所有问题的文章后,我没有发现同样的问题,而且是出于想法。
我不能说杀死这些最后的错误似乎是一件大事,但是他们打扰了我,因为否则它会运行干净,并且它会以基本以外的任何语言运行。