2

我正在尝试查找有关如何本地化 iphone 应用程序的分步教程。我有英语,我正在寻找添加法语。该文档是可用的,但它几乎没有为您提供有关如何从头到尾实施它的清晰说明。

4

1 回答 1

1

以下是我正在寻找的逐步演练。在这里找到 希望它对你们所有人都有帮助。

这是 iPhone、iPad 和 iPod Touch 的数学应用程序开发人员 Sean Berry 的客座帖子。

我古斯塔本地化!虽然说英语的 App Store 市场是最大的,但世界上仍有大量其他 iPhone 用户,您可以通过支持他们的母语来大大提高他们的用户体验。

好消息是,Apple 通过一些 API 调用和内置的 Xcode 支持,让您的应用程序使用多种语言变得非常容易。这样做的过程称为本地化,这就是我将向您展示的方法!

在本 iPhone 应用教程中,您将对我准备的名为 iLikeIt 的示例应用进行本地化,该应用的灵感来自 Ray 关于应用内购买的帖子中的愤怒漫画。该应用程序非常简单——它显示一些理想的销售数据,当你点击“你喜欢?”时 一张脸出现,放大,然后消失。但现在它只有英语——所以 vamos traducir!

这个 iPhone 应用教程将使用 Xcode 4.6.1,所以如果你还没有升级,为什么不以此为借口这样做呢?

入门 第一步是下载iLikeIt 入门项目,我们将在本 iPhone 应用教程中进行本地化。构建并运行应用程序,您应该会在点击“你喜欢?”后看到以下内容:

我们在这里要本地化 3 件事: 文本:销售数据 UI 元素:“你喜欢?” 按钮,最后是图像(它有文本!) 从代码中分离文本 像大多数项目一样,这个项目的代码中有一些硬编码的字符串。我们需要将所有这些硬编码的字符串拉到一个单独的文件中,以便我们可以对它们进行本地化。

在 Xcode 中执行此操作的方式是创建一个“.strings”文件来包含项目所需的所有字符串。然后,您将使用函数调用替换硬编码的字符串,以根据当前语言从“.strings”文件中查找适当的字符串。让我们试试这个。转到文件\新建\新建文件。选择 iOS\Resource\Strings File,然后单击 Next,如下面的屏幕截图所示。将新文件命名为 Localizable.strings,然后单击保存。

请注意,Localizable.strings 是 iOS 在处理本地化文本时查找的默认文件名。如果您不使用它,则每次都必须指定我们的 .strings 文件的名称。

字符串文件的格式为:"KEY" = "CONTENT"; 所以对于我们的“昨天你卖出了 %@ 个应用程序”和“你喜欢吗?” 文本添加:“昨天你卖了 %@ 应用程序”=“昨天你卖了 %@ 应用程序”;

"You like?" = "You like?";

现在切换到 ViewController.m,找到 viewDidLoad 方法。现在它将文本设置为: self.numAppsLabel.text = [NSString stringWithFormat:@"Yesterday you sell %@ apps", @(1000000)];

[self.likeButton setTitle:@"You like?" forState:UIControlStateNormal];

我们希望它改为从我们的 .strings 文件中读取。为此,将当前行更改为使用名为 NSLocalizedString 的宏,如下所示: self.numAppsLabel.text = [NSString stringWithFormat:NSLocalizedString(@"Yesterday you sell %@ apps", nil), @(1000000)];

[self.likeButton setTitle:NSLocalizedString(@"You like?", nil) forState:UIControlStateNormal];

如果您对 NSLocalizedString 宏的作用感到好奇,请按住 Control 键单击 NSLocalizedString 并选择 Jump to Definition。你会发现它的定义如下:

#define NSLocalizedString(key, comment) \
[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]

所以基本上,它使用localizedStringForKey 方法来查找当前语言中给定键的字符串。它为表名传递 nil,因此它使用默认字符串文件名 (Localizable.strings)。有关完整的详细信息,请查看 Apple 的 NSBundle 类参考。

还有一件事要注意。该宏将注释作为参数,但似乎什么也没做!这是因为您可以使用 iPhone SDK 附带的名为 genstrings 的工具来自动执行此操作(这对于大型项目来说非常方便),而不是像我们一直在做的那样手动将每个键/值对输入到 Localizable.strings )。

如果您使用此方法,您可以为将出现在默认字符串旁边的每个字符串添加注释,以帮助翻译。例如,您可以添加一个注释来指示使用该字符串的上下文。足够的背景信息——让我们试试吧!构建并运行你的项目,它应该和以前一样在主屏幕上显示相同的文本。但是西班牙人在哪里?既然我们已经设置好了,那就小菜一碟了。

添加西班牙语本地化 要添加对另一种语言的支持,请单击左侧窗格中的蓝色 iLikeIt 项目文件夹,在下一个窗格中选择项目(不是目标),然后在“信息”选项卡下,您将看到“本地化”部分。单击 + 并选择西班牙语 (es)。

您将看到另一个屏幕,询问您要本地化哪些文件,将它们全部选中,然后单击完成。没关系,您还没有看到 Localizable.strings!我们很快就会解决的。

此时,Xcode 已经在幕后为您选择的每种语言设置了一些包含单独版本的 InfoPlist.strings 和 MainStoryboard.storyboard 的目录。要亲自查看,请在 Finder 中打开您的项目文件夹,您将看到以下内容:

看到 en.lproj 和 es.lproj?它们包含我们特定语言版本的文件。“en”是英语的本地化代码,“es”是西班牙语的本地化代码。如果您好奇,这里是语言代码的完整列表。

当 iOS 想要获取文件的英文版本时,它会在 en.lproj 中查找,但当它想要西班牙文版本的文件时,它会在 es.lproj 中查找。

就是这么简单!将您的资源放在适当的文件夹中,其余的由 iOS 完成。但是等等,Localizable.strings 呢?要让 Xcode 知道您希望它本地化,请在左侧窗格中选择它,然后在右侧窗格中打开 File Inspector。在那里你会看到一个标有本地化的按钮,点击它,选择英语(因为它目前是英语),最后点击本地化。

现在在右侧的文件检查器面板上,它显示了该文件属于哪些语言,通过选中西班牙语左侧的框将其添加到西班牙语本地化中。

返回左侧面板并单击 Localizable.strings 旁边的箭头,以便显示子元素。您现在将看到我们正在使用此文件的两个版本:

要更改西班牙语的文本,请选择 Localizable.strings(西班牙语)并将文本更改为:“Yesterday you sell %@ apps” = “Ayer le vendió %@ aplicaciones”;

"You like?" = "~Es bueno?~";

您的应用程序现在是世俗的!让我们确保它有效……要让您的模拟器显示西班牙语,请进入 Settings.app 并选择 General -> International -> Language -> Espanol。删除应用程序并选择 Project\Clean 以获得全新的构建和安装。构建并运行时,您应该看到:

语言环境与语言 让我们通过添加一些格式来使这个数字看起来更好。替换此代码: self.numAppsLabel.text = [NSString stringWithFormat:NSLocalizedString(@"昨天你卖掉了 %@ 应用程序", nil), @(1000000)]; 有了这个: NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];

NSString *numberString = [numberFormatter stringFromNumber:@(1000000)];
self.numAppsLabel.text = [NSString stringWithFormat:NSLocalizedString(@"Yesterday you sold %@ apps", nil), numberString];

构建并运行,数字将更容易阅读。

但事情是这样的,在西班牙,他们不会这样格式化他们的数字。他们写的是“1.000.000”而不是“1,000,000”,但是如果您将 iOS 模拟器的语言更改为 Espanol,您仍然会看到用于分隔零的逗号。原因是数字格式基于区域/语言环境,而不是语言。要查看西班牙人如何看到该号码,请进入设置 -> 常规 -> 国际并将区域格式更改为西班牙语 -> 西班牙。

当您再次打开应用程序时,您应该看到以下内容:

我们免费获得了这个功能,只是为了使用 Apple 的 NSNumberFormatter 类!以苹果的方式做事是值得的,不要与它抗争。图像由于我们的图像中有文本,我们需要对其进行本地化。在其他西班牙应用程序中使用一些英语看起来很业余。选择 ilike.png 并添加西班牙语的本地化(您现在是老专业了!)(如果您忘记了,请在左侧面板中选择它,然后在右侧的文件检查器面板中,单击本地化按钮。然后在允许 Xcode 将默认副本放入 en.lproj 后,选中右侧面板上的西班牙语框。)检查项目文件夹。ilike.png 已添加到英文文件夹 (en.lproj),然后复制到西班牙文文件夹 (es.lproj)。要为西班牙语版本显示不同的图像,我们只需覆盖西班牙语文件夹中的图像。

我也将它包含在启动项目中,保存为 megusta.png。将其重命名为 ilike.png 并将其移动到西班牙语文件夹 (es.lproj) 中,覆盖复制的英文版本。清理并重建,你应该完成了!将您的模拟器切换到 Espanol 以查看...</p>

恭喜!这是本地化的大部分内容。

于 2013-07-11T03:21:05.117 回答