iOS 本地化(IB篇)

栏目: IOS · 发布时间: 6年前

内容简介:我使用storyboard结合代码创建了如下的一个Demo(QiShareLocalization)。添加简体中文:Reference Language:
  • iOS 本地化Storyboard、Xib、图片、应用显示名称、版权信息。
  • 本地化非Interface Builder的文本。

我使用storyboard结合代码创建了如下的一个Demo(QiShareLocalization)。

Demo(QiShareLocalization)解读:

  • QiShareLocalization对英文和简体中文做了本地化处理。
  • QiShareLocalization有一个 启动页面 ,启动图显示的文本在英文环境下显示“QiShareLocalization”,在中文环境下显示“奇分享本地化”。
  • QiShareLocalization的 首页 显示的 图片 ,在英文环境下显示为**“奇分享的Logo图片” ,在中文环境下显示为 “奇分享的二维码图片” ;包括对文本 “首页” “跳转” “奇分享首页”**都做了本地化处理。
  • QiShareLocalization 点击跳转后的页面 ,对显示的**“奇分享本地化文本"**, 图片应用名称版权信息 都做了本地化处理。

Demo效果:

  • 简体中文环境: 启动页显示不符合简体中文

    iOS 本地化(IB篇)
    启动页显示和预期效果相符( zh-Hans

    iOS 本地化(IB篇)
  • 英文环境:

    iOS 本地化(IB篇)

一、本地化准备工作

1.1 给项目添加本地化语言

  • 添加中文简体语言的方式如下:选中项目的 PROJECT -> Info -> Localizations 添加简体中文(zh-Hans代表简体中文)

添加简体中文:

iOS 本地化(IB篇)

Reference Language:

iOS 本地化(IB篇)

如果再次添加其他本地化语言,注意File Types可选:

iOS 本地化(IB篇)

1.2 Use Base Internationalization

iOS 本地化(IB篇)

勾选作用:把文本从 .storyboard.xib 文件中分离出来

  • 如果不选中 Use Base Internationalization ,那么在添加本地化语言的时候,会创建多个相应语言的 storyboardxib ,那么我们还可以调整不同语言下的界面布局及显示内容。
  • 如果选中 Use Base Internationalization ,那么在添加语言的时候,会把当前的 storyboardxib 中的文本提取出来,我们只需要在相应的新增的 .strings 文件中改变对应的文本即可。

1.如果不选中“Use Base Internationalization”操作步骤及生成的文件, 如下所示:

iOS 本地化(IB篇)
iOS 本地化(IB篇)

生成的文件:

iOS 本地化(IB篇)
  1. 如果选中“Use Base Internationalization”并且更改LaunchScreen.storyboard的File Types Interface Builder Storyboard后,操作步骤及生成的文件。如下所示:
iOS 本地化(IB篇)
iOS 本地化(IB篇)
  • 生成的文件:
iOS 本地化(IB篇)

然后我们可以调整 .strings 中的文件或者是调整相应语言的Storyboard都可以达到本地化Storyboard的效果

1.3 Reference Language

  • Reference Language指的是新建的语言文件参考的语言,如果新增中文繁体参考中文简体,那么新增的中文繁体的文件将和项目中中文简体中的文件一样。
iOS 本地化(IB篇)

1.4 File Types

  • 可以选用Localizable strings 也可以使用Interface Builder Storyboard
    iOS 本地化(IB篇)

经过上述操作,可以调整 .strings 中的文件或者是调整相应语言的 Storyboard 都可以达到本地化 Storyboard 的效果。

二、开始本地化:

2.1 可见文本的本地化

iOS 本地化(IB篇)
iOS 本地化(IB篇)
iOS 本地化(IB篇)
iOS 本地化(IB篇)

但是对于启动的Storyboard,我做调整之后,并没有起到效果。后来查到,其实可以创建不同本地化语言相应的启动Storyboard,通过修改 InfoPlist.strings (注:这部分内容后边会提到) 中的 UILaunchStoryboardName = "LaunchScreen_zhHans"; 指定对应的启动的Storyboard即可做到本地化启动Storyboard的效果。参考博客

2.2 iOS本地化App的显示应用名及版权信息

  • 准备工作:在 Info.plist 中添加应用显示名及版权信息键值对。
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2018-2108 QiShare.</string>
<key>CFBundleDisplayName</key>
<string>$(PRODUCT_NAME)</string>
复制代码
iOS 本地化(IB篇)
  • 创建 InfoPlist.strings ,示意图如下:
iOS 本地化(IB篇)
iOS 本地化(IB篇)
  • 修改简体中文的 InfoPlist.strings 的文本

    iOS 本地化(IB篇)
  • 修改英文的 InfoPlist.strings 的文本

    iOS 本地化(IB篇)
  • 项目中代码使用:

// 应用显示名
[[[NSBundle mainBundle] localizedInfoDictionary] objectForKey:@"CFBundleDisplayName"];
// 版权信息
[[[NSBundle mainBundle] localizedInfoDictionary] objectForKey:@"NSHumanReadableCopyright"];
复制代码

简体中文输出内容: 奇分享本地化 版权 © 2018-2108 奇分享.

英文输出内容: QiShare Localization Copyright © 2018-2108 QiShare.

对于上文提到指定相应的本地化启动Storyboard,可以看下列的指定方式:

iOS 本地化(IB篇)

至于查看 Info.plist 文件中的 key 可以通过下图 Show Raw Keys/Values 的方式:

iOS 本地化(IB篇)

2.3 iOS 本地化App的图片资源文件

  • 本地化图片资源:

    iOS 本地化(IB篇)
  • 添加QiShareLogo简体本地化支持:

    iOS 本地化(IB篇)
  • 选中以支持QiShareLogo英文本地化支持:

    iOS 本地化(IB篇)
  • 选中后效果:

    iOS 本地化(IB篇)

选中相应的图片 Show In Finder 更改英文的本地化图片:

iOS 本地化(IB篇)
iOS 本地化(IB篇)

项目中获取对应的图片使用:

[UIImage imageNamed:@"QiShareLogo"];
复制代码

[[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"QiShareLogo" ofType:@"png"]];
复制代码

对于图片的本地化,我目前分享的不包括 Assets.xcassets 中的图片资源,我当前还没找到比较合适的方式。 看了下其他人分享的文章,有通过像 本地化非IB的文本 (下篇文章分享) 的方式来指定不同的语言环境加载不同的图片。 至于xib的本地化,这次先不分享细节了,如果做了本地化之后,后期又新增的xib,xib的本地化,可以参考图片的本地化,是一样的。

比如:某xib,本地化前

iOS 本地化(IB篇)

比如:某xib,本地化后

iOS 本地化(IB篇)

工程源码: GitHub地址

关注我们的途径有:

QiShare(简书)

QiShare(掘金)

QiShare(知乎)

QiShare(GitHub)

QiShare(CocoaChina)

QiShare(StackOverflow)

QiShare(微信公众号)


以上所述就是小编给大家介绍的《iOS 本地化(IB篇)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

XML Hacks

XML Hacks

Michael Fitzgerald / O'Reilly Media, Inc. / 2004-07-27 / USD 24.95

Developers and system administrators alike are uncovering the true power of XML, the Extensible Markup Language that enables data to be sent over the Internet from one computer platform to another or ......一起来看看 《XML Hacks》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器