2013-07-11 131 views
2

我正在尝试查找关于如何本地化iPhone应用程序的一步一步教程。我有英文,我想添加法文。该文档可用,但几乎没有给你明确的指示,说明如何从头到尾执行它。如何本地化iPhone应用程序

+1

http://www.ibabbleon.com/iphone_app_localization。html – stosha

+0

我喜欢你的漫游,然后是我发布的漫游。当你有机会时,你可以把它作为答案,以便我可以接受它? –

+0

谢谢添加我的答案 – stosha

回答

1

下面是我一直在寻找的分步演练。它被发现Here 希望它可以帮助你所有人,因为它做了米。

这是一个客户后,由肖恩·贝瑞,数学的应用程序的iPhone,iPad的开发者,和iPod Touch。

我古斯塔本地化! 尽管说英语的App Store市场规模最大,但世界上仍有许多其他iPhone用户,您可以通过支持其母语来大幅提升用户体验。

好消息是,苹果已经很容易使您的应用程序通过一些API调用多语言工作和内置在Xcode支持。这样做的过程称为本地化,这就是我会告诉你如何去做的!

在这个iPhone应用程序的教程中,你将被定位一个示例应用程序我准备叫iLikeIt这是在雷的帖子的启发由暴走漫画有关应用内购买。该应用程序非常简单 - 它显示了一些理想的销售数据,当您点击“你喜欢?”时,出现一张脸,放大并消失。 但现在它只是英文 - 所以vamos一traducir!

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

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

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

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

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

为字符串文件的格式是: “KEY”= “CONTENT”; 因此,对于我们'昨天您销售%@ apps'和'您喜欢?'的文本添加: “您昨天出售%@ apps”=“您昨天销售%@ apps”;

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

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

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

我们希望它从我们的.strings文件中读取。要做到这一点,请将当前行更改为使用名为NSLocalizedString的宏,如下所示: self.numAppsLabel.text = [NSString stringWithFormat:NSLocalizedString(@“Yesterday you sold%@ apps”,nil),@(1000000)];

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

如果你好奇的NSLocalizedString宏做什么,在NSLocalizedString控制单击并选择跳转到。你会发现,它的定义如下:

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

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

另一件要注意的事情。宏将注释作为参数,但似乎没有做任何事情!这是因为不需要像我们一直手动输入Localizable.strings中的每个键/值对一样,您可以使用iPhone SDK附带的称为genstrings的工具自动执行此操作(这对于大型项目可能非常方便)。

如果您使用此方法,则可以为默认字符串旁边出现的每个字符串添加注释,以此作为翻译器的辅助。例如,您可以添加一个注释,指示使用该字符串的上下文。 足够的背景资料 - 让我们试试吧!构建和运行你的项目,它应该像以前一样在主屏幕上显示相同的文本。但西班牙语在哪里?现在我们成立了,这是一个小小的局面。

添加西班牙语本地化 要添加对其他语言的支持,请单击左窗格中的蓝色iLikeIt项目文件夹,在下一个窗格(不是目标)中选择项目,然后在Info选项卡下,本地化版块。点击+并选择西班牙语(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。在那里您会看到一个标有本地化的按钮,点击它,选择英语(因为它目前是英语),最后点击本地化。

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

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

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

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

你的应用程序现在是世俗的!让我们确保它的工作... 要让您的模拟器显示西班牙语,进入Settings.app并选择常规 - >国际 - >语言 - >西班牙语。 删除该应用程序并选择Project \ Clean以获取全新的构建和安装。当你建立和运行你应该看到:

语言环境与语言 让我们通过添加一些格式使该数字看起来更好。替换此代码: self.numAppsLabel.text = [NSString stringWithFormat:NSLocalizedString(@“昨天你卖了%@ apps”,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,您仍然会看到用于分隔零的逗号。原因在于数字格式是基于区域/区域设置的,而不是语言。要查看西班牙的某个人如何看到该号码,请进入设置 - >常规 - >国际,并将区域格式更改为西班牙语 - >西班牙。

当你打开应用程序再次,这是你应该看到:

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

我也将它包含在起始项目中,保存为megusta.png。 将它重命名为ilike.png并将其移入西班牙文件夹(es.lproj),覆盖复制的英文版本。 清洁和重建,你应该完成!切换你的模拟器到西班牙语看到...

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

相关问题