iPhone应用程序的本地化 - 您的方法是什么?

mat*_*atm 9 iphone localization internationalization iphone-sdk-3.0 ios4

一般来说,我知道如何进行iOS应用程序的本地化,唯一的办法是在可用的方式之间进行选择并以正确的方式进行.所以我想问你关于你的项目的l10n方法.

以下是我的意见:

  1. 我有15个XIB文件(包含许多IB出口,这些出口未作为属性合成,但必须进行本地化).
  2. 我的应用程序很可能会有3-5种语言版本,但有可能我将来会使用10种语言.
  3. 在不久的将来,我计划添加可能改变UI设计(付费/免费版本)的新目标.

我看到了两种可行的方法:

选项A:通过使XIB可本地化并添加语言版本来本地化每个nib文件:

  1. 我担心有15个XIB和3-5种语言,当我将本地化扩展到~10种语言并引入新目标时,维护恐怖将无法控制(维护恐怖不是关于SCM,我正在使用git BTW).
  2. 我需要保持同步所有版本的XIB,这将影响痛苦的变更请求过程.
  3. 我也担心我的应用程序包会变大(目前XIB使用~1.1 MB并转换为~120 kB的NIB文件).
  4. 当我决定做iPad版时,XIB的数量会再次增长.

选项B:在代码中进行本地化,将所有需要的出口连接到属性并正确设置其标签/标题:

  1. 我担心我的应用程序内存占用量会非常大.或者,考虑到适当的mem mgmt,我不应该认为这是一个问题吗?

我会选择第二个选项,因为我看不到它的缺点,它可以允许在每个视图控制器中控制一个地方的所有内容,但我想知道你的选择是什么?哪种方式更适合你?

编辑:我知道这ibtool可以简化计划A中的过程,但我仍然不相信它.

mat*_*atm 1

好吧,我期待来自 SO 用户的更多反馈,但这很好,因为经过一些研究,我自己决定放弃选项 B 并选择选项 A 的修改版本。

我大量使用了Philippe Casgrain 的编译时方法的想法。一般来说,它用于ibtool在构建时自动本地化笔尖。菲利普的方法目前使维护保持合理的理智。我在代码中使用的所有其他字符串都是使用NSLocalizedString在我的情况下很容易实现的方法来处理的(只是使用的genstrings工具)。将来可能对我造成影响的唯一问题是添加具有不同/修改的 UI 布局的新目标。

很难说这是否是最好的选择。时间会证明一切,所以有一天我会更新这个问题并与您分享这个决定对我来说是如何的。也许有人会从该功能中受益;)