我需要将开发中的应用程序本地化为英语和西类牙语。
尽管我遵循 Apple 使用 NSLocalizedString 的方式并为两者创建 Nib ,但我已经失去了需要本地化的新字符串的踪迹,并且惊讶地发现当我更改时我需要用西类牙语重做 Nib 大师。
(就像这样http://www.gigliwood.com/weblog/Cocoa/A_Great_Need_for_Be.html)
我想知道是否存在更好/替代/更自动化的方式。
我知道 gettext 和 poedit 的用法,并且想知道是否可以使用类似的东西。
或者是否存在一些脚本或工具。
最佳答案
这里确实没有一个简单的解决办法。 NIB 需要针对每种语言进行单独布局。在某种程度上,这改善了整体用户界面,因为不同的语言实际上通常需要不同的布局才能达到最佳效果。俄语和德语在屏幕空间上比英语“大”得多。中文通常可以更小,并且不同的布局对于中文字符来说看起来更好。阿拉伯语和希伯来语是从右到左的,可能需要对布局进行彻底的改变。自动布局很简单,但通过在所有语言中不同程度的丑陋来实现这一点。当在对开发人员来说容易和丑陋与对开发人员来说困难和漂亮之间做出选择时,苹果几乎总是选择后者。尽管如此,苹果仍然没有让这一切变得尽可能简单。
因此,这里的第一课是让您的 NIB简单。这在 iPhone 上比在 Mac 上更容易,因为 iPhone 没有绑定(bind),而且 iPhone NIB 通常更简单。您还可以对文本量非常少(如标题)的 NIB 使用文本注入(inject)。 “文本注入(inject)”是一种奇特的表达方式,“使用标签的 socket ,并在加载 View 时将其设置为本地化文本。”
ibtool 能够将字符串从 NIB 中拉出,也可以将它们推回,这很有帮助。我使用过 iLocalize,它对于与契约(Contract)本地化人员合作很有帮助,但并不能真正帮助解决您正在讨论的问题。
我尝试摆脱 NIB,只使用代码,认为这会让事情变得更容易,但事实并非如此。在 NIB 中对每种语言进行布局比提出在所有语言中都看起来不错的布局逻辑要容易(参见第一段)。文本注入(inject)仅在少数地方有用。如果您可以将 NIB 分为需要本地化和不需要本地化的 NIB,这会很有帮助。在 iPhone 上,我发现不到一半的 NIB 中实际上有文本或本地化图像。
当然你应该阅读Internationalization Programming Topics ,但我很遗憾地说,您的问题确实没有简单的答案。发布 19 种语言本地化的产品,我感受到你的痛苦。
关于iphone - 如何简化 iPhone 本地化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/898308/