如何简化iPhone本地化?

13

我需要将一款正在开发中的应用本地化为英语和西班牙语。

尽管我遵循了苹果的做法,使用NSLocalizedString并为两种语言创建了nibs,但我已经失去了需要本地化的新字符串的踪迹,并惊讶地发现当我更改主程序时需要重新制作西班牙语的nibs。

(就像这篇文章所描述的那样:http://www.gigliwood.com/weblog/Cocoa/A_Great_Need_for_Be.html

我想知道是否存在更好/替代/更自动化的方法。

我知道gettext和poedit的用法,想知道是否可以使用类似的工具。

或者是否存在专门用于此目的的脚本或工具。

3个回答

17

这里真的没有简单的解决方案。每种语言都需要独立地进行NIB布局。在某种程度上,这可以提高整体用户界面的质量,因为不同的语言通常需要不同的布局才能呈现最佳效果。俄语和德语在屏幕实际空间上要比英语大得多。汉语通常会更小,不同的布局更适合于汉字。阿拉伯语和希伯来语需要从右到左排列,可能需要彻底改变布局。自动布局容易实现,但在所有语言中效果也不尽相同。在易于开发者且丑陋与难以开发且精美之间做出选择时,苹果公司几乎总是选择后者。尽管如此,苹果公司仍然没有使其变得像他们本来可以的那样容易。

所以,第一个教训是要让你的NIBs 简单。这在iPhone上比Mac上容易,因为iPhone没有绑定,而且iPhone NIBs通常更简单。对于只有极少文字(如标题)的NIBs,你还可以使用文本注入。"文本注入"是一种说法,意思是"将标签设置为本地化的文本并在加载视图时设置它的值"。

ibtool可以从NIBs中提取字符串,并将它们推回去,这可能会有所帮助。我使用过iLocalize,可以帮助与合同本地化人员合作,但对你谈论的问题并没有真正帮助。

我曾尝试摆脱NIBs,只使用代码,以为这样会使事情变得更容易,但实际上并没有。在NIB中布局每种语言比设计适合所有语言的布局逻辑更容易(见第一段)。文本注入只在少数情况下有用。如果你可以将NIBs分成需要本地化和不需要本地化的部分,则可以很有帮助。在iPhone上,我发现我的NIB中只有不到一半的NIB实际上包含文本或本地化图像。

当然,你应该阅读国际化编程主题,但我很抱歉地说,你的问题真的没有简单的答案。作为一名提供19种语言本地化产品的开发人员,我能感受到你的痛苦。


2
我所做的是在nib文件中为所有文本ui创建IBOutlets(包括UILabel、UITextField、UITextView等),并将其text/placeHolder属性编程方式分配给所需的NSLocalizedstring。
鉴于我已经提供了特定字符串的不同语言版本的翻译,当iPhone的区域设置更改时,该文本的翻译版本将出现在nib文件中。
希望其他人能发现这个有用。

2
有时需要为每种语言布置NiBs,但大多数情况下不必为每种语言重新布置NiBs。如果您使用ibtool从nibs生成字符串,则可以将它们导入到每种语言的新nibs中。这些是命令行工具,因此可编写脚本。请查看'man ibtool'。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接