App的国际化和本地化(三) —— 国际化用户界面(一)

版本记录

版本号 时间
V1.0 2018.05.09

前言

很多APP都有国际化版本,常见于一些大公司的产品,比如Facebook、Wechat等,那么国际化需要我们APP做哪些更改呢,接下来这几篇就一起来看一下APP的国际化和本地化。感兴趣的可以看上面几篇。
1. App的国际化和本地化(一) —— 简单介绍(一)
2. App的国际化和本地化(二) —— 查看语言和区域设置(一)

回顾

上一篇主要介绍查看语言和区域设置,本篇主要介绍国际化用户界面。


Internationalizing the User Interface - 国际化用户界面

Xcode提供了几种技术来帮助您开发国际化的应用程序。Xcode将用户界面文本与视图和布局分离开来,这样用户面对的文本就可以很容易地独立于您的Xcode项目进行翻译。Xcode还提供了在更改用户界面时保持这种分离的工具。此外,您可能对支持的每种语言都有不同类型的资源文件。


Using Base Internationalization - 使用Base国际化

Base国际化将用户面对的字符串从.storyboard.xib文件中分离出来。它解决了在Interface Builder中需要修改.storyboard和.xib文件的本地化。相反,应用程序在development language只有一组.storyboard.xib文件,development language就是您用来创建.storyboard和.xib文件的语言。这些.storyboard.xib文件被称为base internationalization。当您导出本地化时,development language字符串是被翻译成多种语言的源。当您导入本地化时,Xcode为每个.storyboard和.xib文件生成特定于语言的字符串文件。在导入本地化或添加语言之前,字符串文件不会出现在项目导航器中。

在Xcode 5和之后,base internationalization默认启用。如果您有一个较老的项目,在继续之前启用base internationalization,如 Enabling Base Internationalization所描述的。


Using Auto Layout - 使用Auto Layout

使用自动布局,在没有固定的原点、宽度和高度的情况下,将您的视图显示出来,以便在语言或语言环境发生变化时适当地重新定位和调整大小。自动布局使所有语言都有一组.storyboard.xib文件。

在使用自动布局的国际化应用程序时遵循以下提示:

  • 删除固定宽度的限制。

    • 允许视图显示本地化文本以调整大小。如果使用固定宽度限制,本地化文本可能会在某些语言中出现截断。
  • 使用intrinsic content sizes

    • text fieldslabels的默认行为是自动调整大小。如果视图不适应本地化文本的大小,请选择视图并选择Editor > Size To Fit Content
  • 使用leadingtrailing属性。

    • 在添加约束时,使用leadingtrailing属性来进行水平约束。对于从左到右的语言,例如英语,leadingtrailing的属性相当于leftright。对于从右到左的语言,如希伯来语或阿拉伯语,leadingtrailing等同于 rightleftleadingtrailing的属性是水平约束的默认值。
  • 将视图绑定到相邻视图。

    • 绑定引起多米诺骨牌效应。当一个视图调整大小以适应本地化文本时,其他视图也会这样做。否则,视图可能会在某些语言中重叠。
  • 不断地测试你的布局变化。

  • 不要设置窗口的最小大小或最大大小。

    • 让窗口和它的内容视图调整到它们包含视图的尺寸,当语言发生变化时,它可能会改变。

在创建新项目时默认启用自动布局。为使一个老项目的自动布局启用,阅读Auto Layout Guide中的Adopting Auto Layout。学习如何添加约束和解决约束问题,阅读Auto Layout Guide


Detecting Problems Using Pseudolocalizations - 使用Pseudolocalizations检测问题

Interface Builder中,您可以使用pseudolocalizations来预览用户界面,以检测自动布局问题。在本地化应用程序并添加语言之前,只有在Interface Builder中才能使用pseudolocalizations

To preview the user interface in a pseudolocalization - 在pseudolocalization中预览用户界面

  • 在项目导航器中,选择要预览的.storyboard.xib文件。
  • 选择View > Assistant Editor > Show Assistant Editor
  • 在助理编辑器跳转栏中,打开Assistant弹出菜单,滚动到Preview项,并选择.storyboard.xib文件。如果应用程序的用户界面预览没有出现在助理编辑器中,请选择要在图标或大纲视图中预览的窗口或视图。
  • 在辅助编辑器中,选择您想要从右下角的语言弹出菜单中使用的pseudolocalization

例如,从菜单中选择Double-Length Pseudo-Language以将所有面向用户的字符串替换为重复的字符串。 本地化预览会显示在助理编辑器中。


Enabling Base Internationalization - 开启Base Internationalization

确认您的项目正在使用base internationalization,并在必要时启用它,然后再继续。

To enable base internationalization - 开启base internationalization

  • 在项目导航器中,选择项目project(不是目标target)并单击信息。
  • 如有必要,请点击本地化旁边的显示三角形以显示设置。
  • 如有必要,请选中Use Base Internationalization复选框。
  • 在出现的对话框中,指定.storyboard.xib文件的开发语言。
    Resource File列中选择.storyboard.xib文件,并在Reference Language列中选择开发语言。

Xcode根据您在此对话框中所做的选择修改您的项目文件夹。 Xcode在您的项目文件夹中创建一个Base.lproj文件夹,并将其添加到您选择的资源文件中。 Xcode为开发语言创建一个语言文件夹,但仅添加需要翻译到该文件夹的资源。 例如,如果选择英语作为开发语言,则Xcode会将资源文件插入到Base.lproj项目文件夹中,但不会插入en.lproj文件夹,因为该资源已经是英文的。
如果没有资源出现在对话框中,请将.storyboard.xib文件添加到语言中,如Adding Languages所述,然后重复这些步骤。

  • 点击完成按钮。

在语言表中,开发语言的本地化资源文件数量从0变为您选择的文件数量。

后记

本篇主要介绍了用户界面的国际化,感兴趣的给个赞或者关注,谢谢~~~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容