快速指南:iOS国际化(i18n)和本地化(l10n)

您是否在开发iOS应用程序,但不知道如何国际化和本地化iOS应用程序? 如果答案是肯定的,那么您来对地方了。 在本文中,我们将介绍如何使用Swift在iOS应用程序中设置国际化(i18n)和本地化(l10n)。

苹果的移动操作系统iOS在过去几年中经历了非凡的全球增长,以至于苹果表示,现在有150多个国家/地区可以使用iOS App Store,并且iOS设备支持40多种语言。

国际化(i18n)是使您的应用适应不同语言和文化的过程。 另一方面,iOS中的本地化(l10n)是将您的应用翻译成针对特定语言环境的多种不同语言的过程。

注意»通常,开发人员(尤其是iOS开发人员)可以互换使用这两个术语(国际化和本地化),但实际上,两者是不同但相互联系的概念。

因此,我们将这篇基于教程的文章分为两个小节:

  • iOS中的国际化
  • iOS中的本地化

你知道吗? »国际化和本地化通常分别缩写为i18n和l10n。 i18n中的18表示国际化的“ i”和“ n”之间的字符数,而10n中的10表示本地化的“ l”和“ n”之间的字符数。 花哨的东西,不是吗?

在深入讨论上述小节之前,让我们首先了解一些必需的步骤。

初赛

在本节中,我们将熟悉在iOS应用程序中执行i18n和l10n所需的步骤。

工具

您将需要以下工具:

  • Xcode(最新版本)。 现在,我正在使用Xcode 9。

编程语言(iOS)

我们将使用以下语言进行编程:

  • 迅速

决定

在实际进行国际化和本地化之前,您需要首先确定要定位的区域(地区)以及这些区域使用的语言。 初步步骤对于定位您的受众群体至关重要。 在本文中,我将使用英语作为基本语言,使用法语,中文(繁体)和德语作为其他本地化语言。 您可以根据需要和目标受众在应用程序中添加任意数量的语言。 添加其他语言的步骤将完全相同。

要知道的术语»地区或国家被称为地区,尤其是当我们处理国际化和本地化时 无论您在何处找到“区域设置”,都仅表示某个国家或地区。 书呆子术语,不是吗?

既然我们已经讨论了这些基础知识,那么现在该深入了解前面提到的小节了。

iOS中的国际化(i18n)

正如我之前提到的,i18n是使您的应用适应不同语言环境的过程。 从iOS开发人员的角度来看,这是使字符串在外部可编辑的过程-无论是在情节提要中还是在代码中。 此外,为了根据各自​​的区域设置日期,数字等,您必须使用不同的内置类。 例如,我们可以使用“格式”类根据区域设置日期格式,根据首选语言设置数字格式等等。 现在,我们将使用简单的设置来适应国际化过程。

建议»在完成应用程序的设计和编码部分后,请务必执行国际化和本地化步骤。 为什么? 因为Xcode会通过在可本地化的文件中自动添加字符串来节省您的大部分时间。 如果在编写应用程序代码之前执行这些步骤,则必须手动将所有字符串添加到其指定文件中(用于本地化)。 最重要的是,您应该在最后完成国际化的所有步骤。

您(iOS开发人员)需要执行以下步骤才能国际化您的应用程序:

为i18n设置项目

创建新项目或拥有要国际化的现有应用程序后,请确保在Xcode的项目信息设置(如下所示)中选中了名为“ Use Base Internationalization”的属性:

如上图所示,有三个框:红色,黑色和蓝色。

  1. 首先,在“导航器”面板中,选择项目的根文件(.xcodeproj)(在上面显示的红色框中)。
  2. 选择类型项目。 如您所见,有两个可用选项。 目标是默认选项。 您需要将其更改为Project (在上面显示的黑框中)。
  3. 确保选中“使用基本国际化”选项(在上面显示的蓝色框中)。

Xcode中的“使用基础国际化”是什么? »创建新项目后,Xcode会自动生成与本地化相关的文件。 选中“ 使用基本国际化”选项时,Xcode会将Main.storyboard和LaunchScreen.storyboard传输到默认语言的“ Base.lproj”文件夹中。 正如“ 决策”部分所述,本教程中的基本语言是英语。

完成此基本步骤后,您需要添加希望应用程序支持的其他语言。 在本教程中,我们将使用三种语言(法语,中文(繁体)和德语)进行本地化,以表示不同的语言环境,如“ 决策”部分所述。 让我们添加对这三种语言的支持!

添加语言进行本地化

为了在您的本地化应用程序(l10n)中添加语言,您需要再次转到项目的“信息”设置,然后单击“ +”按钮(如下所示):

Xcode将向您显示要本地化的语言列表。 让我们先选择法语! 选择任何语言(在我们的情况下为法语)后,Xcode会要求您选择文件和参考语言以创建所需的语言本地化(在我们的情况下为法国),如下所示:

在上图中,需要注意两件事:

  1. 参考语言-我们设计应用程序时所使用的基本语言,默认情况下为英语 (保持不变!)。
  2. 文件类型-确保所有文件均设置为可本地化字符串

此外,如您所见,有两个情节提要板-Main.storyboard和LaunchScreen.storyboard-我们将使它们都可以本地化,因为我们同时选择了这两个。 单击完成!

语言支持后项目的变更

添加对法语本地化的支持后,您将在项目文件中看到以下三个更改:

  1. 由于我们增加了对法语的支持,因此Xcode将在您的项目中创建一个名为“ fr.lproj”的文件夹。
  2. 在该文件夹中,Xcode将创建与我们在上一步中选择的情节提要关联的两个字符串文件。
  3. 但是,第三个更改取决于您何时向应用程序添加本地化支持。 如果您遵循上面提到的有关何时对应用程序进行国际化和本地化的建议,您将看到Main.storyboard和LaunchScreen.storyboard中显示的标签(如果有)将被赋予对象ID并将其添加到Main中。字符串和LaunchScreen.strings文件。

Main.storyboard中只有一个标签“ Hello”,而LaunchScreen.storyboard为空。 这意味着我们必须在Main.strings(法语)文件中拥有一个 “ Hello”对象,并带有一个对象ID,如下所示:

图像的左半部分显示了仅包含一个标签的用户界面(在Main.storyboard中),而右半部分显示了与之相关的字符串文件。

按照上述步骤添加中文(繁体)和德语。

现在,我们将看一下应用程序的本地化部分。

iOS中的本地化(l10n)

在iOS中,本地化基本上是翻译过程。 您可以使用两种方法来翻译应用程序。

  1. 直接在Xcode中(由开发人员)
  2. 导出翻译器的本地化文件(XLIFF格式)

让我们一一讨论这两种方法!

在Xcode中

在国际化部分中,我们为不同的语言生成了“ Main.strings”可本地化的文件(如下所示),它们都包含一个带有文本“ Hello”的标签。现在遍历每个可本地化的字符串文件并更改文本“ Hello”进入相应文件的语言。

在我们的例子中,LaunchScreen.storyboard不包含任何元素,因此将为空。

转换后的文件将如下所示:

现在,如果通过将iOS设备的语言环境设置为以下任何一种语言来预览应用程序,您将获得翻译后的用户界面(如下所示):

导出翻译器的可本地化文件

在这种方法中,我们将看到如何为本地化器(翻译器)导出可本地化的文件。 为此,首先为l10n创建一个单独的文件夹(如下所示):

如您所见,“ L10n”文件夹中有两个文件夹。 “ To Localizers”是文件夹,在此我们作为开发人员将可本地化的文件导出给翻译人员。 “来自本地化程序”是文件夹,我们将从此处将翻译器的本地化文件导入我们的项目。

创建文件夹后,返回Xcode项目并再次打开该项目的信息设置。 确保您在“信息设置”页面上,以便在编辑器菜单中获得“导出为本地化”选项。

现在,从编辑器菜单中,单击“导出以进行本地化”,如下所示:

单击“导出本地化”选项后,Xcode将要求您将可本地化的文件保存到指定的文件夹,如下所示:

如您在上图中所看到的,所有这三种语言均已选择,并将以XLIFF格式(XML Localization Interchange File Format)导出到“ To Localizers”文件夹。

作为开发人员,您的工作就在这里完成! 现在,您必须等待翻译人员翻译XLIFF文件中存在的字符串,然后以相同格式将您发送回去。 收到翻译后的XLIFF文件后,您应该使用相同的编辑器菜单(如上所示)将它们导入到您的项目中,但是这次选择“导入本地化”选项。

推荐的国际化方法(i18n)

本地化(l10n)部分中的第一种方法-在Xcode中-看起来很不错,但让我们问自己三个基本问题:

  1. 作为iOS开发人员,我们真的对支持Apple Services的所有语言环境都具有命令吗?
  2. 我们可以依靠Google翻译服务来进行精确翻译吗?
  3. 有没有更省时,更有效的解决方案?

第一个问题的答案肯定是不! 我只会说四种语言。 你会讲多少种语言? 在下方留言!

在让我对Google翻译服务发表看法之前,让我使用Google翻译与您分享翻译:

我不是说德语的人。 因此,您可以在这里作为我的测试用例。 现在,我想翻译“准备好了! 组! Go!”,然后我从Google Translator得到了结果! 好极了! 但是突然之间,我想:“为什么我不应该反向翻译它?” Lo and Behold! 我们得到以下翻译(从德语到英语):

“要调整吗?”真的吗? 困惑? 因此,对于专业应用程序,您不应依赖此类服务。

高效的解决方案

现在您一定在想,“如果不是Google服务,那又如何?”

这是第三个也是最后一个问题的答案。 如果我们可以在一个地方访问不同地区的本地翻译人员来进行精确翻译,那会更好吗? 如果您只需要导出XLIFF文件而不用担心翻译过程,那岂不是很棒吗? 好吧,PhraseApp可以使您的生活更轻松! 它确实支持XLIFF文件,并提供了全面的,对开发人员友好的翻译管理解决方案。 在此处了解有关PhraseApp指南的更多信息,然后直接跳入PhraseApp的iOS入门指南。

我希望本文能帮助您快速发展,并让您对在应用程序中添加iOS国际化和本地化充满信心。 还有更多的要讲的。 但就目前而言,我要说再见……直到我们再次见面!