我需要本地化一个用于英语和英语的开发应用程序西班牙语。
尽管我遵循Apple的使用方式NSLocalizedString&为两者创建笔尖,我已经失去了需要进行本地化的新字符串的轨道,并且惊讶地发现当我更改母版时我需要用西班牙语重做笔尖。
(就像这个http://www.gigliwood.com/weblog/Cocoa/A_Great_Need_for_Be.html)
我想知道是否存在更好/替代/更自动化的方式。
我知道使用gettext& poedit并想知道是否可以使用这样的东西。
或者如果存在一些脚本或工具。
答案 0 :(得分:17)
这里真的没有一个简单的解决方法。 NIB需要针对每种语言单独布局。在某种程度上,这改善了整体用户界面,因为不同的语言实际上通常需要不同的布局才能看起来最好。俄语和德语在屏幕上比英语更“大”。中文通常可以小得多,不同的布局看起来更好用汉字。阿拉伯语和希伯来语是从右到左,可能需要彻底改变布局。自动布局很容易,但通过在所有语言中改变丑陋程度来实现这一点。当给予开发人员简单和丑陋与开发人员难以选择之间的选择时,Apple几乎总是选择后者。也就是说,Apple仍然没有尽可能地让它变得那么容易。
所以这里的第一课是保持你的NIB 简单。这在iPhone上比在Mac上更容易,因为iPhone没有绑定,而且iPhone NIB通常更简单。您还可以对具有非常少量文本(如标题)的NIB使用文本注入。 “文本注入”是一种奇特的说法,“在加载视图时,使用标签的插座并将其设置为本地化文本。”
ibtool能够从NIB中拉出字符串并将其推回,这可能会有所帮助。我使用了iLocalize,这对于使用合同本地化程序很有帮助,但对你所谈论的问题没有任何帮助。
我试图摆脱NIB并只使用代码,认为它会让事情变得更容易,但事实并非如此。在NIB中布置每种语言比提出在所有语言中都看起来不错的布局逻辑更容易(参见第一段)。文本注入仅在少数几个地方有用。如果您可以将NIB拆分为需要本地化的NIB和不需要本地化的NIB,这可能会有所帮助。在iPhone上,我发现不到一半的NIB实际上有文本或本地化图像。
当然你应该阅读Internationalization Programming Topics,但我很遗憾地说你的问题确实没有简单的答案。运送产品本地化为19种语言,我感到很痛苦。
答案 1 :(得分:2)
有时需要针对每种语言布置NiB,但大多数情况下,不必为每种语言重新布置NiB。
如果您使用ibtool从笔尖生成字符串
ibtool --generate-strings-file
您可以将它们导入每种语言的新笔尖。
ibtool --import-strings-file
这些是命令行工具,因此它们是可编写脚本的。看看'man ibtool'
答案 2 :(得分:2)
我所做的是为我的nib文件(UILabel,UITextField,UITextView等)中的所有文本ui创建IBOutlets,并以编程方式将其text / placeHolder属性分配给所需的NSLocalizaedString。
鉴于我已经在不同的语言中提供了特定字符串的翻译,当iPhone语言环境发生变化时,文本的翻译版本将出现在nib文件中。
希望其他人找到这个有用的