十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
最近我们的iOS工程需要搞国际化,查资料学习,静下心思考最后完成这份方案。这份方案是为了先解决我司当前需求,肯定不是最完美的,抛砖引玉,欢迎大家提出建议,为开源社会出一份力。
成都创新互联专业为企业提供巨鹿网站建设、巨鹿做网站、巨鹿网站设计、巨鹿网站制作等企业网站建设、网页设计与制作、巨鹿企业网站模板建站服务,10余年巨鹿做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
先别BB那么多,搜这个问题的人肯定都是着急解决问题,我们先说怎么用,原理啥的感兴趣后面再说!
将MultiLanguage/Resources/Config.plist文件夹下的 RunFilterScript 字段设为YES,command +B 会弹出目录选择,选择你要处理的文件夹。脚本运行后在会在桌面生成multi-language.csv表格。将表格拿去给翻译人员翻译。
表格内目前是四列分别为 key , zh_CN , en_GB , ja_JP,如有扩展,自行更改firstScript.py脚本即可。
将MultiLanguage/Resources/Config.plist文件夹下的 RunScvToJsonScScript 字段设为YES,command +B ,选择对应csv文件转换后,在桌面生成multi-language.json文件,将multi-language.json文件拖入主工程即可完成全部多语言配置。
1.平时需要RunFilterScript和RunScvToJsonScScript字段设置为NO,这样便不会执行python脚本。
2.为什么不直接生成和翻译json文件?我们产品要求导出格式为表格,有其他格式需求可自行更改脚本。
3.为什么不在脚本中使用google、百度、有道自动翻译?因为自动翻译目前不够信、达、雅。如果有需要的小伙伴,可自行编辑脚本。
4.在Xcode的buildLog中可以查看此组件运行的log 。如下图所示:
5. github链接 ,欢迎大家提出改进建议,使iOS项目国际化更加方便。
6.大家若有好的想法或者集成上的问题可以在评论区交流
如上点击“+”号会弹出所提供的语言,选择所需要的语言就可以了
第二步:创建Localizable.strings(注意:文件名最好不要随意更改,以免带来不必要的麻烦)作为多语言对应的词典,存储多重语言。
(1)点击Localizable.strings文件右侧的Localiza...
(2)继续在Localization里添加所要支持的语言,将其勾选上
第三步,此时,我们的前期工作基本就完成了,可以在Localizable.strings里随意设置所需要支持的语言了。
假设,我们设置了简体中文
"testName" = "多语言设置成功啦";
第四步,设置完对应的语言后,我们就可以去使用它啦
注意:
如果创建.strings文件是自定义的名字的话,如Internation.strings,那么调用的方式为:
当自定义名字后,使用NSLocalizedString的方式不起作用,这里要特别注意,注意,注意!!!(重要的说三遍);
(1)应用名设置与多语言基本设置的步骤大致是一样的,只是创建的.strings文件的名字要为InfoPlist.strings。
(2)同样以简体中文为例,"CFBundleDisplayName" = "慧眼"。
(3)在info.plist文件中设置Bundle display name为CFBundleDisplayName即可。
storyboard同Localizable.strings类似。当我们创建Localizable.strings对应的语言文件时,系统自动生成了storyboard对应的系统文件。假如我们在storyboard拖入了一个UILabel,我们想要直接在这里设置label的文本,这里就要用到了UILabel的Object ID了。
在对应的语言文件中添加如下格式的设置:
/* Class = "UILabel"; text = "测试"; ObjectID = "PXo-pJ-2Ml"; */
"PXo-pJ-2Ml.text" = "测试";
摘自:
app有时需要同时支持多种语言,国际化分为应用名国际化和app内容国际化两部分,接下来以中英两种语言来介绍一下如何实现app国际化
一.应用名称国际化
1.首先创建一个项目,然后执行以下操作
选择语言后会有以下弹窗, 若项目中用到storyBoard并且里面的文字也需要国际化,此处要如下图勾选,然后店家Finish即可
2.创建一个Strings文件,命名为 InfoPlist.strings(此处名字不可以更改)
3.选中该文件
接下来,把所需要的语言都选中,如下图:
选中后InfoPlist.strings文件下面会出现两个文件,分别是英文和中文,如下图:
4.在两个文件中,分别写入app的英文名和中文名,key-value方式。key 为CFBundleDisplayName
运行程序后,app名称就会根据系统的语言来显示中英文
二.内容国际化
1.内容国际化和app名称国际化一样,只是创建Strings文件的时候把名字改为Localizable.strings (此名字不许随意更改)
2.把文字同样以key-value的形式分别加入到Strings文件中
注意:这两个文件里面的key要保持一致
先导入Foundation,然后通过 NSLocalizedString 函数找到key对应的value, 这样就可以实现语言根据系统语言来切换了
三.storyBoard和xib国际化
1.xib
选择语言后,会自动形成一个key
这样就可以实现语言切换
2.storyBorad和xib操作相同
官方文档:
( )
一.添加语言
二.国际化多国语言操作
1.应用名称
(1)在new File..找到strings格式
(2)将.strings文件命名为“InfoPlist”
在每个语种中填写CFBundleDisplayName = "对应语种的命名";
二.字符串
(1)如上所示,同样new File一个名为Localizable的strings文件
(2)添加各种语言中需要翻译的字符串,格式如下
3.如果调用NSLocalizedString(key, comment)没有找到key,则直接显示key。
三.图片(需要国际化的图片不能放在Assets中!)
四.xib和storyboard
(1)xib和storyboard的国际化同上,Base文件是最重要的,这个文件的意义是,除了你选中的语言外,其他语言显示的都是他。
(2)除了Base文件其他都是.strings文件,.strings文件中会自动将Base中的文字展示出来,最后替换成相关语言即可。