iOS 应用程序本地化最佳实践和占位符

标签 ios swift localization

既然应用程序的总体概念已经确定,我们目前正处于考虑将我们的应用程序本地化为多种语言的阶段。我想确保从一开始就正确执行此操作,以降低将来出现头痛的风险。

该应用程序面向 iOS 7 及更高版本,使用 Storyboard ,并使用 Swift 编写。

Storyboard

使用 Storyboard(或 xib)时,将 UI 元素标记为“不翻译”的最佳方法是什么?例如,我有一个用户显示名称的占位符字符串 (显示名称),它将在运行时替换为用户显示名称。此显示名称不会本地化,字符串“显示名称”也不会本地化。有没有一种方法可以不将 UI 元素的值自动放入 strings 文件中?如果没有,是否要进入该文件并手动删除我不想本地化可持续选项的字符串?

代码中的字符串

我使用 Swift 函数 NSLocalizedString 以及 keycomment 参数。我见过的一些地方说将 key 设置为基于上下文的唯一 ID(例如,intro.login-button-text),而其他地方似乎只是将完整的字符串放入默认语言(例如,登录)。我喜欢 key 的唯一 id 的想法,但这不会违背“基础”语言的想法吗?

导出

Xcode 6 的“导出本地化”选项似乎对于将正确的文件格式发送给翻译人员非常有用。但是,如前所述,占位符文本不需要翻译。在导出之前是否应该从导出的 xliffstrings 文件中删除这些占位符?

最佳答案

我自己也在寻找同样的问题。希望这会对您和其他人有所帮助。另外我建议使用某种工具来组织 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/

相关文章:

ios - 渐变色 swift

python - 如何在不打补丁的情况下本地化 Python 的 argparse 模块?

java - Spring 的本地化不会切换语言

ios - 协议(protocol)函数位于单独的文件中

swift - 如何将热敏蓝牙打印机连接到 iOS 设备

php - 最佳实践多语言网站

ios - 如何在 Objective-C 中压缩、解压缩文件(支持 arm64)

ios - session 配置超时间隔无法设置超过 60 秒

ios - Xcode 7.3 无法同时为 UIView/UITableViewCell 创建 xib

ios - swift-ios- Accessibility - 首先将 Voiceover 阅读/焦点顺序更改为内容 View 然后导航项目?