【发布时间】:2017-12-21 04:43:26
【问题描述】:
在 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)
注意事实上,所有故事板字符串都以基本语言正确显示,它也只是将这些错误抛出到日志中。在我意识到我需要有基本的 Localizable.strings 之前,当它找不到它们时,它会显示“Key”,对于这个项目来说,它是可翻译的字符串,但它们会以大写形式显示。这里情况不同。该应用程序看起来很好,但会引发错误。
所以我的第一次尝试(在仪式清理和重建之后)是创建一个 Main.strings 文件并尝试将其作为所述字符串的基本版本导入,因为它显然没有在 Main.storyboard 中找到它们那已经在base.lproj中了。那里没有运气,它不会让我这样做 - 这是有道理的,因为它已经认为 Main.storyboard 是基础。接下来的想法是尝试将 Main.storyboard 作为构建阶段的一部分复制到包中,但这没有帮助。在阅读了一天关于其他人在这个平台上使用 i18n 遇到的所有问题的文章之后,我还没有发现完全相同的问题,并且没有想法。
我不能说杀死这些最后的错误似乎很重要,但它们困扰着我,因为否则它会运行干净,并且它可以在除基础之外的任何语言中运行干净。
【问题讨论】:
标签: ios xcode localization storyboard