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

Posted

技术标签:

【中文标题】iPhone 应用程序的本地化 - 您的方法是啥?【英文标题】:Localization for iPhone apps - what's your approach?iPhone 应用程序的本地化 - 您的方法是什么? 【发布时间】:2011-01-31 12:08:18 【问题描述】:

总的来说,我知道如何对 ios 应用程序进行本地化,唯一的事情就是在可用方式之间进行选择并以正确的方式进行。所以我想问你关于你的项目的 l10n 方法。

这是我的输入:

    我有 15 个 XIB 文件(包含 很多没有的 IB 网点 合成为属性,但将 必须本地化)。 很可能是我的 应用程序将有 3-5 个语言版本, 但我什至有可能 将来支持 10 种语言。 在不久的将来,我计划添加新的 可能改变 UI 设计的目标 (付费/免费版本)。

我有两条路可以走:

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

    我担心,当我将本地化扩展到大约 10 种语言并引入新目标时,如果使用 15 种 XIB 和 3-5 种语言,我将无法控制维护恐惧(维护恐惧与 SCM 无关,我' m 使用 git btw)。 我需要使所有版本的 XIB 保持同步,这会影响痛苦的变更请求过程。 我还担心我的应用程序包会变大(目前 XIB 使用约 1.1 MB 并转换为约 120 kB 的 NIB 文件)。 当我决定做 iPad 版本时,XIB 的数量会再次增长。

选项 B: 在代码中进行本地化,方法是将所有需要的插座连接起来,将它们合成到属性并正确设置它们的标签/标题:

    我担心我的应用程序内存占用会很大。或者,考虑到适当的内存管理,我不应该认为这是一个问题吗?

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

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

【问题讨论】:

【参考方案1】:

我在所有项目中都使用选项 B,因为这也使我可以轻松地将字符串文件分发给本地化程序。之后当然需要进行测试以确保琴弦安装到位。还有一些项目不使用 XIB 文件,所以无论是否使用 XIB 文件,过程总是相同的。 根据我的经验,该选项完全没有内存问题。

【讨论】:

如果您的 XIB 平均有 25 个 IBOutlets,您会选择选项 B 吗?将所有这些连接起来,合成和处理内存管理对我来说听起来很乏味。您选择选项 B 的原因是什么? 一个 XIB 中有 25 个 IBOutlets?这似乎是一个非常拥挤的 UI。为增强的 UI 设计而呐喊 ;) 但总的来说,我没有看到不使用字符串文件的理由。处理这么多 XIB 并为每种语言手动调整所有内容是一个更大的麻烦。如果你知道怎么做内存管理,那就没有缺点了。 好吧,我也会选择选项 B,因为您通常有一个 UI 元素的出口。除了 textFields 的标签,但这听起来没什么大不了的。【参考方案2】:

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

我大量使用了来自Compile-time approach by Philippe Casgrain 的想法。一般来说,它使用ibtool 在构建时自动定位笔尖。 Philippe 的方法目前保持合理的维护。我在代码中使用的所有其他字符串都使用NSLocalizedString 方法处理,这在我的案例中很容易实现(仅使用genstrings 工具)。唯一可能在未来困扰我的问题是添加具有不同/修改的 UI 布局的新目标。

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

【讨论】:

以上是关于iPhone 应用程序的本地化 - 您的方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

用于德国应用商店的 Iphone 应用(本地化)

从地理坐标计算本地用户的最有效方法是啥?

iphone模拟器拒绝定位

“推送”通知/消息传递背后的基本概念是啥?

iPhone:离开应用程序的正确方法是啥?

在本地安装和设置 TYPO3 的最快方法是啥?