iPhone应用程序的国际化

我是iPhone App开发的新手(我正在使用XCode 4.2),我想知道是否有一种方法可以在内部翻译所有字符串,标题等…而无需逐个翻译它们。

我想到的一个想法是使用NSUserDefaults将语言保存为全局变量并相应地翻译所有内容

另一种选择是制作一个查找表(它甚至可以在Objective-C中使用吗?)

谢谢

您可以使用NSLocalizedString(@"<#key#>", @"<#comment#>")和一个文件(名为Localizable.strings(每种语言。如果您使用上述function,您可以使用App Linguan(可在Mac App Store)生成Localizable.strings文件。

还有一个名为genstrings的命令行工具可以为你创建文件,但请相信我,Linguan应用程序将在几分钟内收回成本。

您应该始终添加注释以允许更好的翻译并提供关键字的上下文。

您可以在此处阅读该过程的分步教程:

iPhone本地化教程

以下是基础知识的高级概述(上面的教程有详细信息):

1)更改所有要编码的编码字符串: NSLocalizedString(@"My text", @"Context for the translator")

2)使用genstrings Terminal命令导出所有字符串。

3)这将创建一个名为Localizable.strings的文本文件,其中包含所有英语(源)字符串。 它看起来像这样:

 /* Context for the translator */ "My text" = "My text"; 

您将该文件发送给翻译人员。 他们会像这样翻译右边: "My text" = "Mi texto";

4)将每个已翻译的Localizable.strings文件放在其正确的语言文件夹中: en.lprojfr.lprojes.lproj等。

当您的应用加载到iPhone上时,它将检查用户的语言设置。 如果用户选择了法语作为系统语言,则会加载fr.lproj文件夹文件中的Localizable.strings 。 如果有任何未翻译的字符串,那么它们默认为英语(或任何源语言)。

值得关注整个教程并注意文件/文件夹名称必须准确!

查找NSLocalizedString的文档。 以及如何本地化.xib文件(您使用English.lproj,de.lproj,fr.lproj等制作本地化副本)。

您需要创建的所有文件都是具有您要翻译的每种语言的键值对的文件,并相应地命名它们,即_en,_fr等。

然后,您只需向此方法发送消息:

 NSLocalizedString(@"myKey", nil) 

这将以当前iPhone配置的任何语言返回本地化的String。

本文介绍了您需要了解的基础知识:

本地化iPhone应用程序