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篇)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Java性能优化权威指南

Java性能优化权威指南

Charlie Hunt、Binu John / 柳飞、陆明刚 / 人民邮电出版社 / 2014-3 / 109.00 元

Java性能优化圣经!Java之父重磅推荐! 本书由曾任职于Oracle/Sun的性能优化专家编写,系统而详细地讲解了性能优化的各个方面,帮助你学习Java虚拟机的基本原理、掌握一些监控Java程序性能的工具,从而快速找到程序中的性能瓶颈,并有效改善程序的运行性能。 Java性能优化的任何问题,都可以从本书中找到答案!一起来看看 《Java性能优化权威指南》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器