本地化nib文件

3
我正在编写一个应用程序,其中包含大约10个nib文件,用于传达不同的UI消息和获取用户输入。我想知道如何本地化出现在我的自定义面板上的这些消息。是否有一种方法可以使用通用字符串来替换特定语言中的字符串,并根据语言进行区分?此外,我还想知道如何将动态字符串加载到自定义面板中的消息中,例如文件名或所选文件的数量等。
我已经研究了ibtool,但它不是通过为不同语言创建.lproj文件来复制nib文件吗?这样做只会使我的应用程序变得非常庞大。
谢谢。
5个回答

4
在波士顿的可可头会议上,我们讨论了这个话题,并达成了共识,有两种合适的方法。
1-第一种方法是使用IBTool或手动制作单独的nibs。
2-获取标签的程序化访问权并以编程方式更改文本。 Mipadi提到Localizable.strings非常有用。为了获得程序化访问权限,您可以通过IB连接每个标签,或者您可以进行一些魔术操作来查找所有标签(留给读者练习)。
选择适合您特定应用程序的方法。
希望这可以帮助您,
JJ
这个问题可能有所帮助:IPhone localization: Is it possible to translate nib files...

3

标准做法是为每种语言创建一个nib文件。

除非它们存储了一些未压缩的位图图像,否则您的nib文件不应超过50-100 KB。如果有未压缩的图标,则某些组件(例如NSPathControl)将在nib中存储这些图标并添加几MB到nib文件中。

如果您打开的.xib文件很大,请在TextEdit中打开它,您就可以清楚地看到占用所有空间的内容。


谢谢Darren。我同意它们大约需要100 kb,但是想象一下有15个nib文件,每个文件有10种语言,这意味着15 * 10 * 100 kb,非常巨大对吧。 - King
在典型的应用程序中,我希望大多数编译后的nibs很小(1 kb),只有一两个较大(25 kb)。正如他们所说,不要花时间优化不需要优化的东西。我认为大多数用户对几MB大小的应用程序感到满意。在XCode中设置nibs进行本地化非常容易。如果在此之后您发现您的应用程序太大了,您可以随时取消本地化一些大型NIB,并改为通过编程方式设置文本标签。 - Darren
1
谢谢Darren。通常我的nibs大约是30 kb左右。每个nib中都有一个.png格式的图像。有没有办法压缩我的nibs? - King
1
King,你的NIB是3.x格式吗?如果是的话,在Snow Leopard上构建时,它们将在构建时被剥离,并且会变得更小。如果你正在使用Leopard,切换到XIB也会在构建时产生被剥离的NIB,并且它们也会非常小。 - Jon Hess

2

值得注意的是,使用Mac OS X 10.8自动布局的当前方法不再需要多个nib文件,而是一个单独的.xib/.nib文件加上每种语言对应的.strings文件。

The Times They Are A-Changin :-)


1
除了Darren已经发布的内容,我想指出如果你知道大多数用户将使用英语(或者是绝大多数常用的语言),许多开发人员会提供一个仅包含英语nibs(从而减小应用程序大小)的英语版本下载,然后也提供多语言版本下载,如果需要的话。
此外,如果您正在编写程序生成的UI元素,您需要查看Localizable.strings的信息,它是一个包含程序中使用的字符串翻译的文本文件。

0

不错的方法,但现在已经有点过时了,因为10.8版本。 - Jay

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