当前位置: 首页 > 科技观察

Xcode6如何实现iOS应用程序本地化

时间:2023-03-11 20:18:48 科技观察

创建什么样的应用程序将一个iOS应用程序翻译成其他语言版本,需要分为两步。***,我们需要为应用程序的所有用户准备不同的文本、图像和其他需要翻译的代码和故事板内容。此步骤称为国际化(I18N)。完成应用的国际化调整后,大家就可以进行应用的本地化了。在这里,我们要导出资产并将其发送给翻译人员。翻译资源后,我们将它们重新导入Xcode,应用程序就可以支持其他自然语言了。1.设置我们将使用一个简单的示例应用程序来感受整个本地化过程。要创建新的Xcode项目,您需要从SingleViewApplication获取模板并将新项目命名为LocalizationExample。接下来,我们需要创建一个简单的用户界面,以便我们可以直接看到本地化的效果。向Main.storyboard添加标签和图像视图。将标签的文本内容更改为“Hello,World!”。您可以点击这里下载图片资源,然后将en/logo.png添加到您自己的Xcode工程中(请确保Copyitemsifneeded项被勾选正确),并将Image字段更改为logo.png为Itis显示在图像视图中。除此之外,我们还需要确保为两种类型的UI元素添加CenterHorizo??ntallyinContainer布局规则。您还需要知道如何本地化应用程序中的硬编码字符串,因此接下来我们将控制台消息添加到AppDelegate.m。将以下日志语句添加到applicationDidFinishLaunching:-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions{NSLog(@"Hello,World!");返回是;本地化处理是图像、标签和硬编码字符串。请注意,开发本地化应用程序与创建普通的非本地化应用程序非常相似。您可以配置视图和定义自定义操作,而无需过多考虑本地化机制。在底层功能正常运行之前,大部分本地化业务都不会提上日程。2.国际化既然我们有了一个可以试验的基础应用程序,下一步就是将其国际化。在这里,我们将资源从本地化的整体代码中分离出来。Xcode提供了多项国际化处理功能,将帮助您更轻松地实现应用程序结果的本地化调整。第1步:准备故事板首先,我们需要了解如何将应用程序的用户界面国际化。第一步是告诉Xcode我们要支持哪个地区或地理位置。单击项目导航器中的LocalizationsExample项目,然后选择弹出列表左上角的蓝色项目图标。在“本地化”选项中,您可以为应用程序添加一个位置。对于此示例,我们会将示例项目翻译成西班牙语,因此单击加号并选择Spanish(es)。这时,系统会打开一个对话窗口,询问你想用已有的资源做什么。确保在Main.storyboard和LaunchScreen.xib中选择LocalizableStrings项,如下所示。单击“完成”继续下一步。此时我们会在Main.storyboard下发现两个新项目,一个是basestoryboard,另一个是Main.strings文件。前者是我们实际的故事板文件,后者是包含所有面向用户的故事板文本的字符串文件。这个字符串文件就是最后需要翻译的。Main.storyboard文件现已国际化并准备好进行本地化调整。第2步:准备硬编码字符串面向用户的字符串以硬编码形式存在于Objective-C/Swift类中,我们需要对它们进行特殊处理。例如,如果您需要以编程方式在故事板中设置UI元素,则此步骤是必需的。幸运的是,硬编码字符串的国际化只需要一个非常简单的过程。我们所要做的就是把它放在一个NSLocalizedString宏中,像这样:");NSLog(@"%@",greeting);returnYES;}第一个参数是我们要查找的字符串的键,第二个(可选)参数是将包含在导出字符串文件中的注释。您可以使用抽象的扁平键(例如@"greeting"),但我发现如果将需要翻译的实际字符用作键,代码内容将变得更具可读性。在下一节中,任何对NSLocalizedString的调用都将自动从我们的代码中提取出来,并添加到要翻译的字符串列表中。3.本地化应用程序的国际化完成后,我们就完成了资源本地化的所有前期准备工作。本地化是一个相当简单的工作,我们只需要导出所有需要翻译的字符串,将内容交给翻译人员,最后将翻译结果导入到项目中即可。我们可以在应用程序开发过程中随时执行此导出/翻译/导入过程,但通常最好的做法是先完成用户界面的主体,然后再开始本地化过程。第一步:导出字符串Xcode允许我们轻松地将所有国际化的字符串导出为单一的XML本地化交换文件格式(XMLLocalizationInterchangeFileFormat,后缀.xliff)文件,这也是业界使用的标准本地化文件格式。要生成这个文件,我们需要在ProjectNavigator中选择LocalizationExample,然后在Xcode菜单中点击Editor>ExportForLocalization...,***选择一个Xcode项目外的文件路径——这是为了避免与现有文件冲突混乱出现了。单击保存将创建一个包含es.xliff文件的新文件夹。打开后,你会发现里面包含了大量的XML内容,涉及到应用程序中需要本地化的所有字符串。这是我们需要发送给翻译人员的文件。他们会使用专门的工具来编辑这个XML,但在我们的例子中,直接编辑相关内容即可。打开es.xliff文件并搜索文本“Hello,World!”。此时,您应该找到两个单独的元素,如下所示。Hello,World!Hola,Mundo!Class="IBUILabel";text="Hello,World!";ObjectID="Cns-Fc-27j";你好,世界!Hola,Mundo!Afriendlygreeting如果你在元素中看到,前者是来自我们label元素的文本内容,后者是我们添加到NSLocalizedString的硬编码字符串。将元素更改为“Hola,Mundo!”。您可能需要向第二个元素添加一个额外的元素。我们翻译的字符串现在可以重新加载到Xcode中了。第2步:导入字符串翻译完.xliff文件中的内容后,您需要将其重新加载到您的Xcode项目中。在ProjectNavigator中选择LocalizationExample,然后单击Xcode菜单下的Editor>ImportLocalizations...。导航到我们在上一章中更新的es.xliff文件,然后单击“导入”按钮。我们现在已经成功地将西班牙语翻译添加到应用程序中。如果您现在打开Main.strings,您将看到翻译后的标签文本。您还将在支持文件组中找到一个新的Localizable.strings文件,其中包含我们的NSLocalizedString消息的翻译。我们将很快测试翻译,但在此之前我们必须查看除字符串之外需要本地化的其他资源。第3步:图像本地化图像资源本地化与字符串本地化略有不同。首先选择logo.png,然后单击文件检查器中的Localize...按钮。将出现一个对话框,询问在何处显示图像。选择英语并单击本地化按钮。本地化项目将作为一组复选框列表提供,其中分别选中英语和西班牙语。现在图像本地化已经完成,我们仍然需要进入我们的Xcode项目并手动替换图像的西班牙语版本。使用Finder,导航到包含Xcode项目的文件夹并打开LocalizationExample文件夹。这时你会发现里面有一个en.lproj文件夹和一个es.lproj文件夹。这就是iOS应用程序在内部显示其本地化资源的方式。英文资源会放在en.lproj文件夹,西班牙文资源会放在es.lproj文件夹,共享资源会放在Base.lproj文件夹。这里,我们需要将es.lproj/logo.png替换为本文开头下载的es/logo.png。其他资源,包括数据、音效和视频文件都可以用同样的方式本地化。4、测试本地化效果注意在实体设备上测试自己的本地化方案的效果,使用iOS模拟器进行测试也是可行的。导航到Xcode中的Product>Scheme>EditScheme…菜单项以启用项目编辑器。然后选择列表左侧的运行,打开选项选项卡并将应用程序语言更改为西班牙语。至此,我们的本地化工作就全部完成了。下次在iOS模拟器中运行您的应用程序时,您将看到西班牙语版本的标签、图像视图、控制台消息等。总结本地化iOS应用程序需要大量额外工作,但Xcode提供了一个既现实又直观的过程。在今天的教程中,您已经了解了国际化和本地化的区别,同时掌握了如何使用Xcode的内置工具来完成本地化iOS应用程序中的字符串和资源所需的步骤。