iOS 多国语言本地化与App内语言切换(Swift)

半亩花草  金牌会员 | 2024-6-24 02:10:30 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 774|帖子 774|积分 2322

前言
   语言本地化 大家肯定都多少都听过,本日我要分享的是快速实现语言本地化,与App内语言切换
  焦点内容主要是三个部分


  • storyboard/xib本地化
  • 纯代码本地化
  • 语言切换
准备工作
项目中添加语言

storyboard/xib本地化
storyboard/xib做本地化Xcode基本上是一键搞定了。
很简单
只要勾勾选选就可以了
这边只涉及到一个更新的问题
通过 ibtools下令 可以使storyboard/xib天生新的代码
起首cd 到stroyboard/xib 目录
执行ibtool xxx.storyboard --generate-strings-file new.strings
打开new.strings 将新内容手动复制到原来的string上。
纯代码本地化
创建string文件


勾选语言,把几种全部勾上,包括Base (为下文使用脚本天生代码做准备)
参考此篇文章进行脚本添加iOS中多语言本地化流程的优化

添加脚本
将脚本执行移动到编译上方

移动位置
添加脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Localizable.strings文件路径
localizableFile="${SRCROOT}/${PROJECT_NAME}/Support/en.lproj/Localizable.strings"
# 天生的swift文件路径(根据个人风俗修改)
localizedFile="${SRCROOT}/${PROJECT_NAME}/Source/Utils/LocalizedUtils.swift"
# 将localizable.strings中的文本转为swift格式的常量,存入一个临时文件
sed "s/^\"/  static var localized_/g" "${localizableFile}" | sed "s/\" = \"/: String { return \"/g" | sed "s/;$/.localized }/g" > "${localizedFile}.tmp"
# 先将localized作为计算属性输出到目标文件
echo -e "import Foundation\n\nextension String {\n  var localized: String { return NSLocalizedString(self, comment: self) }" > "${localizedFile}"
# 再将临时文件中的常量增量输出到目标文件
cat "${localizedFile}.tmp" >> "${localizedFile}"
# 末了增量输出一个"}"到目标文件,完成输出
echo -e "\n}" >> "${localizedFile}"
# 删除临时文件
rm "${localizedFile}.tmp"
这里需要注意的是几个目录需要对应好,否则会报错
build一下就能自动天生相关代码 就可以直接用了,具体用法可以参考上面提到的那篇文章iOS中多语言本地化流程的优化
语言切换
   语言切换的基本原理是使用Userdefault存储当前选择的语言,在设置的时间改变其内容即可
  主要涉及到两个问题


  • storyboard/xib如何切换语言
  • 如何刷新界面
对于上面都算是正常的本地化的内容,基本上介绍本地化的教程都会有。
对于自动化脚本这块算是比较新奇。
但是,脚本对于带空格的字符串天生的内容还是有问题,由于是使用sed下令,本人还不是很熟,只能想其他办法,这时间Base.lproj就派上用场了
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里不停到现在。
深知大多数前端工程师,想要提拔技能,往往是本身摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。本身不成体系的自学结果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开辟全套学习资料》,初衷也很简单,就是希望可以或许帮助到想自学提拔又不知道该从何学起的朋侪,同时减轻大家的负担。


既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提拔的进阶课程,基本涵盖了95%以上前端开辟知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习条记、源码课本、实战项目、解说视频,并且会连续更新!
假如你以为这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)
末了

一个好的心态和一个对峙的心很重要,很多冲着高薪的人想学习前端,但是能学到末了的没有几个,遇到困难就放弃了,这种人到处都是,就是由于有的东西难,所以他的回报才很大,我们评判一个前端开辟者是什么水平,就是他解决问题的本事有多强。
分享一些简单的前端面试题以及学习路线给大家,狂戳这里即可获取!!!

就放弃了,这种人到处都是,就是由于有的东西难,所以他的回报才很大,我们评判一个前端开辟者是什么水平,就是他解决问题的本事有多强。
分享一些简单的前端面试题以及学习路线给大家,狂戳这里即可获取!!!
[外链图片转存中…(img-XbRjJaBQ-1711669520352)]


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

半亩花草

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表