既然应用程序的总体概念已经确定,我们目前正处于考虑将我们的应用程序本地化为多种语言的阶段。我想确保从一开始就正确执行此操作,以降低将来出现头痛的风险。
该应用程序面向 iOS 7 及更高版本,使用 Storyboard ,并使用 Swift 编写。
Storyboard
使用 Storyboard(或 xib)时,将 UI 元素标记为“不翻译”的最佳方法是什么?例如,我有一个用户显示名称的占位符字符串 (显示名称
),它将在运行时替换为用户显示名称。此显示名称不会本地化,字符串“显示名称”也不会本地化。有没有一种方法可以不将 UI 元素的值自动放入 strings
文件中?如果没有,是否要进入该文件并手动删除我不想本地化可持续选项的字符串?
代码中的字符串
我使用 Swift 函数 NSLocalizedString
以及 key
和 comment
参数。我见过的一些地方说将 key 设置为基于上下文的唯一 ID(例如,intro.login-button-text
),而其他地方似乎只是将完整的字符串放入默认语言(例如,登录
)。我喜欢 key 的唯一 id 的想法,但这不会违背“基础”语言的想法吗?
导出
Xcode 6 的“导出本地化”选项似乎对于将正确的文件格式发送给翻译人员非常有用。但是,如前所述,占位符文本不需要翻译。在导出之前是否应该从导出的 xliff
或 strings
文件中删除这些占位符?
最佳答案
我自己也在寻找同样的问题。希望这会对您和其他人有所帮助。另外我建议使用某种工具来组织 xliff/string 文件
Storyboard:
我见过开发人员将非翻译文本放入 Storyboard中并带有额外的括号。即{显示名称}。
通过使用此功能,您可以通过翻译本身查看是否需要翻译。我们使用 oneskyapp.com 并可以选择隐藏这些翻译,并且每次导入该 key 时它们都会被隐藏。
代码中的字符串
通过关注此线程,他们建议使用关键字。 Best practice for key values in translation files
导出
我找不到在导出时自动删除某些翻译的方法。当然,您可以将具有动态字段的 View 放在不同的 XIB/ Storyboard中,并决定不翻译它们。
像 onskyapp.com 这样的工具可以再次帮助您。
格式
由于该字段的上下文很重要,当后面跟着一个用户名时,翻译可能会有所不同,我会选择“%1$@ is online!”
关于iOS 应用程序本地化最佳实践和占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28366046/