内容简介:我使用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 的本地化机制
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
设计模式之禅(第2版)
秦小波 / 机械工业出版社 / 2014-2-25 / 89.00元
本书是设计模式领域公认的3本经典著作之一,“极具趣味,容易理解,但讲解又极为严谨和透彻”是本书的写作风格和方法的最大特点。第1版2010年出版,畅销至今,广受好评,是该领域的里程碑著作。深刻解读6大设计原则和28种设计模式的准确定义、应用方法和最佳实践,全方位比较各种同类模式之间的异同,详细讲解将不同的模式组合使用的方法。第2版在第1版的基础上有两方面的改进,一方面结合读者的意见和建议对原有内容中......一起来看看 《设计模式之禅(第2版)》 这本书的介绍吧!