IOS国际化(文本,图片,app名称)

759 阅读3分钟

让系统控件显示本地化文本

  • 以中文为例: 默认情况下,新建的Xcode项目系统控件是不支持中文的,所以就得添加中文作为支持的语言

L1VzZXJzL2VzdGltL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9EaW5nVGFsa01hYy8xMjcyMjMzMjU3X3YyL0ltYWdlRmlsZXMvMTY2NjI2NTA2Mjg1N19ENUY4MTY2My02RDFDLTQ0MUQtOTM1RC0xNDJGMDYwQUUxNjIucG5n.png 在➕位置选择中文,这样系统控件在中文环境下就会自动显示中文了

  • 以此类推,将你想要支持的语言在这个位置添加

SB中文本的国际化

  • 经过上一步,SB会自动创建一个新的文件夹,并且将已经有的文本自动抽取出来
  • 因为 Xcode默认支持的是英文,所以我们在SB中的文字最好是因为,然后再生成其他语言的文件即可
  • 所以我们暂时将生产出来的中文文件删除

L1VzZXJzL2VzdGltL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9EaW5nVGFsa01hYy8xMjcyMjMzMjU3X3YyL0ltYWdlRmlsZXMvMTY2NjI2NTg2OTcyMl9GNDEzNjYzQi04MjJBLTQzODgtQjc0RC1DNkE5QzM4MjVGNkEucG5n.png

  • 将SB中的中文先默认换成英文
  • 将默认的中文全部替换为英文之后,再次将中文选中,会再次生成一个中文文件

L1VzZXJzL2VzdGltL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9EaW5nVGFsa01hYy8xMjcyMjMzMjU3X3YyL0ltYWdlRmlsZXMvMTY2NjI2NjA2NzEyMF8wOEFDNzdDQi0xNTU3LTQxNzMtODBDMS05NDQ3ODhENkFDQzYucG5n.png

  • 在生成的文件中,将对应的英文替换为想要的中文

L1VzZXJzL2VzdGltL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9EaW5nVGFsa01hYy8xMjcyMjMzMjU3X3YyL0ltYWdlRmlsZXMvMTY2NjI2NjI1Mjk5MF82QTNERkNEQi1DREIzLTQwMkEtQTA0Ri05QjA4MjM0OEFFMjkucG5n.png

L1VzZXJzL2VzdGltL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9EaW5nVGFsa01hYy8xMjcyMjMzMjU3X3YyL0ltYWdlRmlsZXMvMTY2NjI2NjI3OTg2Nl83RTY1MURDNy1FRUU0LTQxRDctODQwOC03QzIzNjBCRTYyNTQucG5n.png

  • 这时候再次运行app,并切换语言,可以发现SB中设置的文本已经可以在英文和中文相互切换了
  • 快速切换app运行语言环境:按住option/alt 点击run按钮,在run中选中Option,在App Lanuague中可以选择运行的语言环境并启动
  • 注意:SB生成的文件不会及时更新,解决办法:使用bartycrouch

代码中文本的国际化方法一

  • 选中项目New File->选择Strings File,新建Localizable.strings文件(一个字都不能错)
  • 在项目中使用文本的地方使用
//假如之前是 UIImage(named: "发现")现在就是
NSLocalizedString("Discovery", comment: "发现")
  • 回到Localizable.strings文件,右边导航栏

L1VzZXJzL2VzdGltL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9EaW5nVGFsa01hYy8xMjcyMjMzMjU3X3YyL0ltYWdlRmlsZXMvMTY2NjI2NzQ3MzkxMV84REFBRkZBNS1GNDAzLTQ1MEMtQUVENi1CMjY2OTM2RUZDNDYucG5n.png

  • 选择中文
  • 在文件中写入
"Discovery" = "发现";
  • 注意:如果没有找到相应语言的value,就会以key为value,例如基于以上操作,其实只是设置了在中文环境下显示为:发现,并没有设置英文环境下显示什么文本,但是我们在运行时会发现英文环境下显示的value就是:Discovery

代码中文本的国际化方法二

  • 在项目中使用文本的地方使用
//假如之前是 UIImage(named: "发现")现在就是
NSLocalizedString("Discovery", comment: "发现")
  • 使用终端到这个项目下面
genstrings -o zh-Hans.lproj *.swift
//默认只能在同一目录下找,所以得手动一个个文件夹去执行
genstrings -o zh-Hans.lproj Home/*.swift

  • 注意:运行这个命令也会覆盖之前的数据

App名称国际化

  • 将Dispaly Name 改成英文
  • 新建InfoPlist.strings文件
"CFBundleDisplayName" = "中文名";
  • 注意:这时候想要看到效果只能手动去设置里面切换语言

图片国际化方法一

  • 在项目中有些时候图片带了文字,这时候也需要进行国际化处理

L1VzZXJzL2VzdGltL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9EaW5nVGFsa01hYy8xMjcyMjMzMjU3X3YyL0ltYWdlRmlsZXMvMTY2NjI2OTI0MDU1Ml9FNDhGNkM2RS03QUYwLTQ0RjYtODE4Qi0zNDNFQzk4M0EyQjMucG5n.png

  • 这和图片的黑暗模式适配一样,放入对应语言的图片即可

图片国际化方法二

  • 因为图片的加载一般是UIImage(named: "发现"),可以参考文本的国际化进行设置