如何本地化iPhone应用程序

问题描述 投票:2回答:2

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

cocoa-touch localization
2个回答
1
投票

下面是我一直在寻找的分步演练。发现Here希望它能像m一样对大家有所帮助。

这是肖恩·贝里(Sean Berry)的客座文章,肖恩·贝里是iPhone,iPad和iPod Touch的数学应用程序的开发者。

Me Gusta本地化!尽管说英语的App Store市场是最大的市场,但世界上仍有许多其他iPhone用户,并且可以通过支持其母语来极大地提高他们的用户体验。

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

[在此iPhone应用程序教程中,您将本地化我准备的示例应用程序iLikeIt,该应用程序的灵感来自Ray关于应用内购买的帖子中的愤怒漫画。该应用程序非常简单-它显示了一些理想的销售数据,当您点击“喜欢吗?”时,就会出现一张脸,放大并逐渐消失。但是,现在它仅是英语-所以vamos成为表演者!

此iPhone应用程序教程将使用Xcode 4.6.1,因此,如果您尚未升级,为什么不以此为借口呢?

入门第一步是下载我们将在此iPhone应用程序教程中本地化的iLikeIt starter project。生成并运行该应用,点击“您喜欢吗?”后,您应该会看到以下内容:

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

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

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

字符串文件的格式为:“ KEY” =“内容”;因此,在我们的“昨天您已售出%@个应用”和“您喜欢吗?”文本中添加:“昨天销售了%@个应用程序” =“昨天销售了%@个应用程序”;

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

现在切换到ViewController.m,并找到viewDidLoad方法。现在,它将文本设置为:self.numAppsLabel.text = [NSString stringWithFormat:@“昨天您出售了%@个应用”,@(1000000)];

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

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

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

[如果您好奇NSLocalizedString宏的功能,请右键单击NSLocalizedString,然后选择“跳转到定义”。您会发现它的定义如下:

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

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

另一件事要注意。该宏将注释作为参数,但似乎对此无能为力!这是因为您可以像使用iPhone一样,不使用手动将每个键/值对手动输入Localizable.strings的功能,而是可以使用iPhone SDK附带的名为genstrings的工具自动执行此操作(对于大型项目,这非常方便)。

如果使用此方法,则可以为将出现在默认字符串旁边的每个字符串添加注释,以帮助翻译。例如,您可以添加注释以指示使用字符串的上下文。足够的背景信息-试试吧!生成并运行您的项目,它应该像以前一样在主屏幕上说相同的文本。但是西班牙人呢?现在我们已经设置好了。

添加西班牙语本地化要增加对另一种语言的支持,请单击左窗格中的蓝色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。在此处,您会看到一个标记为Localize的按钮,单击它,选择English(因为它目前是英语),最后单击Localize。

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

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

要更改西班牙语的文本,请选择Localizable.strings(西班牙语),然后将文本更改为:“昨天您售出了%@个应用程序” =“ Ayer levendió%@ aplicaciones”;

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

您的应用现在已尘世!确保它可以正常工作...要使模拟器显示西班牙语,请进入Settings.app,然后选择“常规”->“国际”->“语言”->“ Espanol”。删除该应用程序,然后选择Project \ Clean以重新构建并安装。在构建和运行时,您应该看到:

语言环境与语言让我们通过添加一些格式来使该数字看起来更好。替换此代码:self.numAppsLabel.text = [NSString stringWithFormat:NSLocalizedString(@“昨天售出%@ apps”,无),@(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并添加西班牙语的本地化(您现在是老专家!)(如果忘记了,请在左侧面板中选择它,然后在右侧的File Inspector面板中,单击Localize按钮。在允许Xcode将默认副本放入en.lproj之后,请选中右侧面板上的西班牙文框。)检出项目文件夹。 ilike.png已添加到英语文件夹(en.lproj),然后复制到西班牙文文件夹(es.lproj)。要使西班牙语版本显示不同的图像,我们只需覆盖西班牙语文件夹中的图像即可。

我还将它包含在开始的项目中,另存为megusta.png。将其重命名为ilike.png并将其移至西班牙语文件夹(es.lproj),覆盖复制的英语版本。清理并重建,您应该完成!将您的模拟器切换为Espanol即可查看…

恭喜!这就是大部分本地化。


0
投票

我认为您可能会从本地化专家的快速入门this step-by-step tutorial for app localization中发现有用的信息。作者在分享自己的经验的同时,解释了关键的应用程序本地化原则,主要挑战和陷阱。祝您的项目好运!

© www.soinside.com 2019 - 2024. All rights reserved.