内容简介:我使用storyboard结合代码创建了如下的一个Demo(QiShareLocalization)。添加简体中文:Reference Language:
- iOS 本地化Storyboard、Xib、图片、应用显示名称、版权信息。
- 本地化非Interface Builder的文本。
我使用storyboard结合代码创建了如下的一个Demo(QiShareLocalization)。
Demo(QiShareLocalization)解读:
- QiShareLocalization对英文和简体中文做了本地化处理。
- QiShareLocalization有一个 启动页面 ,启动图显示的文本在英文环境下显示“QiShareLocalization”,在中文环境下显示“奇分享本地化”。
- QiShareLocalization的 首页 显示的 图片 ,在英文环境下显示为**“奇分享的Logo图片” ,在中文环境下显示为 “奇分享的二维码图片” ;包括对文本 “首页” , “跳转” , “奇分享首页”**都做了本地化处理。
- QiShareLocalization 点击跳转后的页面 ,对显示的**“奇分享本地化文本"**, 图片 , 应用名称 , 版权信息 都做了本地化处理。
Demo效果:
-
简体中文环境: 启动页显示不符合简体中文
zh-Hans
)
-
英文环境:
一、本地化准备工作
1.1 给项目添加本地化语言
- 添加中文简体语言的方式如下:选中项目的
PROJECT -> Info -> Localizations
添加简体中文(zh-Hans代表简体中文)
添加简体中文:
Reference Language:
如果再次添加其他本地化语言,注意File Types可选:
1.2 Use Base Internationalization
勾选作用:把文本从 .storyboard
和 .xib
文件中分离出来
- 如果不选中
Use Base Internationalization
,那么在添加本地化语言的时候,会创建多个相应语言的storyboard
、xib
,那么我们还可以调整不同语言下的界面布局及显示内容。 - 如果选中
Use Base Internationalization
,那么在添加语言的时候,会把当前的storyboard
、xib
中的文本提取出来,我们只需要在相应的新增的.strings
文件中改变对应的文本即可。
1.如果不选中“Use Base Internationalization”操作步骤及生成的文件, 如下所示:
生成的文件:
- 如果选中“Use Base Internationalization”并且更改LaunchScreen.storyboard的File Types Interface Builder Storyboard后,操作步骤及生成的文件。如下所示:
- 生成的文件:
然后我们可以调整 .strings
中的文件或者是调整相应语言的Storyboard都可以达到本地化Storyboard的效果
1.3 Reference Language
- Reference Language指的是新建的语言文件参考的语言,如果新增中文繁体参考中文简体,那么新增的中文繁体的文件将和项目中中文简体中的文件一样。
1.4 File Types
- 可以选用Localizable strings 也可以使用Interface Builder Storyboard
经过上述操作,可以调整 .strings
中的文件或者是调整相应语言的 Storyboard
都可以达到本地化 Storyboard
的效果。
二、开始本地化:
2.1 可见文本的本地化
但是对于启动的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> 复制代码
- 创建
InfoPlist.strings
,示意图如下:
-
修改简体中文的
InfoPlist.strings
的文本 -
修改英文的
InfoPlist.strings
的文本 -
项目中代码使用:
// 应用显示名 [[[NSBundle mainBundle] localizedInfoDictionary] objectForKey:@"CFBundleDisplayName"]; // 版权信息 [[[NSBundle mainBundle] localizedInfoDictionary] objectForKey:@"NSHumanReadableCopyright"]; 复制代码
简体中文输出内容: 奇分享本地化 版权 © 2018-2108 奇分享.
英文输出内容: QiShare Localization Copyright © 2018-2108 QiShare.
对于上文提到指定相应的本地化启动Storyboard,可以看下列的指定方式:
至于查看 Info.plist
文件中的 key
可以通过下图 Show Raw Keys/Values
的方式:
2.3 iOS 本地化App的图片资源文件
-
本地化图片资源:
-
添加QiShareLogo简体本地化支持:
-
选中以支持QiShareLogo英文本地化支持:
-
选中后效果:
选中相应的图片 Show In Finder
更改英文的本地化图片:
项目中获取对应的图片使用:
[UIImage imageNamed:@"QiShareLogo"]; 复制代码
或
[[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"QiShareLogo" ofType:@"png"]]; 复制代码
对于图片的本地化,我目前分享的不包括 Assets.xcassets
中的图片资源,我当前还没找到比较合适的方式。 看了下其他人分享的文章,有通过像 本地化非IB的文本 (下篇文章分享) 的方式来指定不同的语言环境加载不同的图片。 至于xib的本地化,这次先不分享细节了,如果做了本地化之后,后期又新增的xib,xib的本地化,可以参考图片的本地化,是一样的。
比如:某xib,本地化前
比如:某xib,本地化后
工程源码: GitHub地址
关注我们的途径有:
QiShare(微信公众号)
以上所述就是小编给大家介绍的《iOS 本地化(IB篇)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 关于本地化的一些技巧
- iOS 本地化(非IB篇)
- [ Laravel 5.7 文档 ] 前端开发 —— 本地化
- Galaxy生信分析平台-搭建(本地化)
- 如何参与 Kubernetes 文档的本地化工作
- 深入研究 .NET Core 的本地化机制
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!