Localization:本地化 iOS 应用

作者: Linsw | 来源:发表于2016-12-17 12:40 被阅读627次

文章结构:

前言

本地化是将一个 App 的语言文字转换成多种语言的过程,如:原来只支持一种语言的 App,经过本地化后,能够支持多种语言。本地化有助于让更多人使用你的 App,让 App 国际化。

本地化不只是单纯的翻译,它还包括以下内容:

  • 日期和时间格式。不同地区的日期时间格式不一样。
  • 文字的排版。如:有的语言是从右至左的阅读顺序。
  • 界面排版优化。同样的词汇在不同语言下长短不一,在 App 界面上显示效果不一样,需要用 Auto Layout 进行适配。
  • 代码的适配。当程序中需要根据语言文字进行分类、排序、搜索、解析等操作时,不同的语言需要有不同的处理方案。
  • ......

由于本地化涵盖了大量的内容,完整的文档请参考:Internationalization and Localization Guide

本文针对的情况是:

  • 轻量级的本地化。需要本地化的内容较少,主要存在于:

    1. Storyboard(Main,LaunchScreen)等 UI 元素中;
    2. Info.plist 文件中;
    3. 代码里(较少)。

接下去将针对这三个方面进行讨论。

本地化

Storyboard

本地化的第一步:勾选 Use Base Internationalization。如下图,在项目的 Info 页面底部:

然后在 Localizations 列表里添加需要本地化的语言。Xcode 项目的开发语言是 English,在这里添加的是 Chinese(Simplified)。添加时会提示勾选需要本地化的文件,可以勾选 Main.storyboard 和 LaunchScreen.storyboard。

之后在导航栏里可以发现 Main.storyboard 和 LaunchScreen.storyboard 里分别包含了两个文件:

Main.strings 里包含了从 Main.storyboard 中提取出的可本地化的元素,是一系列的键-值对和注释。在这个文件中,把需要本地化的内容进行翻译即可,如下:

本地化 storyboard 中的内容后,可以在 Assistant Editor 中预览本地化效果(打开 Assistant Editor 后,选择 Preview,在右下角可以选择模拟的语言):

Info.plist

Info.plist 中常常会包含有对 App 进行描述的文字。对于 Info.plist 的本地化,不要点击 Localize...(Xcode8):

而应该在项目中 New File...,新建一个 InfoPlist.strings 文件:

之后在该文件中对需要本地化的 Info.plist 条目进行配置,如修改 App 的名称:

CFBundleDisplayName = "TextEdit";

或者修改其他的键值:

这样在 App 运行时,会根据系统选择的语言读取相应 Info.plist 里的配置。

代码中的本地化(少量)

当代码中仅有少量内容需要本地化时,可以使用下面代码获取当前系统的语言,再根据不同语言使用相应的代码:

Objective-C:

NSString *languageID = [[NSBundle mainBundle] preferredLocalizations].firstObject;

Swift:

let languageID = Bundle.main.preferredLocalizations.first

使用以上方法基本上可以完成普通 App 的本地化,重度本地化请参考官方文档 Internationalization and Localization Guide

附上一个已实现中英文本地化的 App 源码:ColorPicker,已上架 AppStore:链接

我的Github:LinShiwei (Lin Shiwei) · GitHub

有任何疑问的话,欢迎在下方评论区讨论。

相关文章

  • Localization:本地化 iOS 应用

    文章结构: 前言 本地化是将一个 App 的语言文字转换成多种语言的过程,如:原来只支持一种语言的 App,经过本...

  • Info.plist属性的简单介绍

    Localization native development region 本地化相关 Bundle dis...

  • API-本地化

    Localization(本地化) jTable可以轻松完成本地化,使用准备好的本地化文件或者是编写自定义的本地消...

  • 本地化(Localization)

    需求 有些情况下需要支持多语言系统,本文将会结合官方教程,探讨多语言系统的组织及实现。当然了最后可以根据需要扩展。...

  • Xcode7 本地化的一些处理方式

    最近为了使我的一个iOS Demo中系统预设控件显示的语言实现本地化,我便像往常一样去配置Localization...

  • 前端国际化与本地化

    背景 在信息技术领域,国际化与本地化(internationalization and localization)...

  • Xcode6.0+添加国际化(本地化)

    国际化(Internationalization,简称I18N),又叫本地化(Localization,简称L10...

  • iOS 本地化(IB篇)

    级别:★★☆☆☆标签:「iOS 本地化」「Storyboard」「Xib」「图片」「应用显示名称」作者: WYW审...

  • iOS 本地化入门教程

    iOS 本地化入门教程 iOS应用的本地化原理非常简单,是通过strings类型的文件,为同一种语言的不同翻译设置...

  • 你知道iOS支持多语言开发吗

    多语言支持 也称: i18n(国际化) 和 localization(本地化) 字符串文字的本地化主要步骤 新...

网友评论

    本文标题:Localization:本地化 iOS 应用

    本文链接:https://www.haomeiwen.com/subject/cvbomttx.html