前言

hihi,勇敢的小伙伴儿们大家好~不知道大家有没有遇到在项目突然被要求实现国际化的情况,并且时间紧任务重,源代码中大量的中文需要全部替换对应的英文,这种情况需要不断的检索代码中的中文,防止有所遗漏,把有限的时间耗费在重复工作上,实在是太浪费了,而且效率低下,工期也会被延长。

那么我们需要动脑想一想,有什么可以节省时间减少重复劳动的办法呢?

嘿嘿嘿,当然是有的啦~

正文

如果你是一名开发者,相信你已经熟练的使用Xcode的Find(查找)功能了,在我们日常开发中提供了很大的便利,我们今天搜索汉字的方法也是需要使用Find功能。

也可以通过快捷键Command+Shift+F,进入全局搜索。

搜索

1.匹配模式Text更改为Regular Expression

2.OC输入 @"[^"]*[\u4E00-\u9FA5]+[^"\n]*?" 搜索

Swift需要去掉@

这时候在搜索结果里会显示项目中的所有满足要求的汉字。按需改动就好啦~

替换

不过,前面说了,这是国际化的小tip,国际化使用NSLocalizedString(key, comment)来根据系统语言切换显示的内容,所以为了方便把汉字替换成NSLocalizedString(key, comment),可以使用Replace功能。

在替换内容中输入 NSLocalizedString($0, nil) 进行替换。

Swift的语法稍有不同 NSLocalizedString($0, comment: "")

ps:上面填写的nil和"",是第二个实参comment,因为是注释,所以是可选的~可以灵活改动哦~

这样就可以大大缩短编辑时间,而且比普通遍历的数据更加完整,不容易有遗漏,快快学起来吧~

知识点

看到这里,我猜你一定是想知道这是什么“黑科技”能够快速找到所有汉字吧,我就喜欢你这种求知若渴的精神。这其实就是利用了正则表达式能够检查一个串是否含有某种子串的特点。

[^"]*[\u4E00-\u9FA5]+[^"\n]*?

[^ "] 表示匹配除了 " 以外的所有字符

* 表示前面的字符可以不出现,也可以出现一次或多次

[\u4E00-\u9FA5] 表示一个区间,匹配所有汉字。使用Unicode编码表示汉字。感兴趣可以到Code Charts检索一下都代表什么汉字。我仅把4E00和9FA5分享给大家~

+ 表示前面的字符必须至少出现一次(汉字必须出现)

[^"\n] 表示匹配除了 " 和 \n(换行符)以外的所有字符

* 表示前面的字符可以不出现,也可以出现一次或多次

?表示匹配前面的子表达式0次或1次,等价于{0,1}

* 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配。

正则表达式-教程 有兴趣可以了解一下哦~

字符串对照表

在搞定NSLocalizedString()宏替换字符串常量后,我们需要创建字符串对照表。

这里有一个小tips,网上大多数博主告诉我们可以创建一个名为Localizable的strings文件使用,我这里分享一个使用终端genstrings命令自动生成响应的字符串对照表的方法。

使用方法:

1.打开终端应用(Terminal.app);

2.切换至某个需要国际化文件所在的目录下(cd 某目录);

3.使用ls命令输出目录下的内容列表,确认列表中包含被国际化文件;

4.输入命令 genstrings xxxxx.m 并按回车键,执行完成后可在该目录下找到生成的字符串对照表Localizable.strings文件,可以看到前文中的字符串和注释都自动生成了;

5.生成strings文件后,为其他文件自动生成字符串时,使用命令 genstrings -a xxxxxx.m 并按回车键;

6.生成所有的字符串后,将Localizable.strings文件从Finder中拖曳至项目中,或者右击项目文件,选择Add Files to "xx"···菜单项,再选择Localizable.strings文件。Xcode会在构建应用时将该文件复制到应用程序包中;

7.由于还有其他语言版本,所以在项目导航面板中选中Localizable.strings文件,点击File inspector面板中Localization区域,点击Localize...按钮,加入其他语言版本的Localizable.strings。

注意:如果Xcode无法正确显示字符串对照表,可以在项目导航面板中选中Localizable.strings文件,如果编辑器中显示乱码,可以让Xcode以Unicode(UTF-16)编码重新解析(reinterpret)该文件。操作步骤:打开工具区域,选择File inspector面板,找到Text Settings区域,将Text Encoding的弹出菜单设置为Unicode(UTF-16),然后在对话框中选择reinterpret(重新解析)。

See U~

iOS 国际化小技巧“搜索项目中的所有汉字”相关推荐

  1. iOS必备小技巧(非常的全)

    IOS必备小技巧 退回输入键盘   - (BOOL)textFieldShouldReturn:(id)textField{     [textField resignFirstResponder]; ...

  2. 27个iOS开发小技巧

    <span style="word-wrap: normal; word-break: normal; line-height: 1.5em; font-size: 14px; out ...

  3. VB小技巧:字符变量中双引号的输入

    '如要输入表示    "aa" '理论表达方式如: a=""aa""  '但会出错 'ASC码可能达到效果 kk=chr(34)   &am ...

  4. iOS开发小技巧 -- tableView-section圆角边框解决方案

    iOS开发小技巧 -- tableView-section圆角边框解决方案 参考文章: (1)iOS开发小技巧 -- tableView-section圆角边框解决方案 (2)https://www. ...

  5. VB.net小技巧——VB.net中SHELL函数以及SendKeys函数

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 VB.net小技巧--VB.net中SHELL函数以及SendKeys函数 前言 shell 使用 前言 一直在研究怎么用VB.net ...

  6. 工作小技巧—在word中使用邮件批量插入excel中的数据

    工作小技巧-在word中使用邮件批量插入excel中的数据 word中使用邮件批量插入excel中的数据 1.选择数据源 2.插入数据 3.完成合并 word中使用邮件批量插入excel中的数据 1. ...

  7. IOS手机端页面在项目中遇到的一些问题及解决办法

    1.解决页面使用overflow: scroll在iOS上滑动卡顿的问题? 首先你可能会给页面的html和body增加了height: 100%, 然后就可能造成IOS上页面滑动的卡顿问题.解决方案是 ...

  8. 【三端通用】微信即时通讯+视频聊天(安卓、IOS、小程序)项目完整版

    # 简单描述: 此产品是本人耗时12day开发出来的,采用的是uniapp框架开发出来的,可快速云打包上线,也可以进行二次开发符合自己的具体需求.         为什么要选择uni-app框架去开发 ...

  9. iOS开发小技巧--学会包装控件(有些view的位置由于代码或系统原因,位置或者尺寸不容易修改或者容易受外界影响)...

    一.百思项目中遇到了两处这样的问题, 第一处 - 是评论界面的headerView,由于直接把自己搞的xib加载了放在了那里,xib中setFrame写了好多-=  +=,每次滚动的时候,会频繁调用x ...

最新文章

  1. pat1038. Recover the Smallest Number (30)
  2. 尽量使用const、enum、inline代替#define
  3. Django开发准则与最佳实践
  4. php 识别语种,HYPHP增加多国语言支持 PHP通过用户浏览器判断来源国家方案
  5. MySQL-Front的安装简介
  6. B君的圆锥(51Nod-1629)
  7. Python基础语法-04-生成器,迭代器
  8. Atitit mybatis快速开发 的sql api接口
  9. 啥是数据湖?老子(zǐ)告诉你 | 凌云时刻
  10. 【图像分割】基于pcnn脉冲神经网络结合区域生长算法实现图像分割附matlab代码
  11. gartner 服务器虚拟化 市场份额 2013,Gartner:VMware成虚拟化魔力象限领导者
  12. python计算图形面积的方法,python实现计算图形面积
  13. 邮件服务器匿名,ProtonMail最安全且匿名邮箱免费服务
  14. 使用 Cloudflare 进行域名跳转(重定向)
  15. uniapp-连接服务器超时,点击重试
  16. 刺激战场极寒模式到底有多疼?掌握这些攻略帮你活到最后
  17. python翻译中文读法_Python如何将中文翻译成拼音?,又,一个,奇葩,要求,是,转,的...
  18. springboot基于web的在线问答社区系统设计与实现毕业设计源码061628
  19. UltraEdit editplus notepad等的编码问题
  20. linux远程root拒绝,ubuntu拒绝root用户ssh远程登录解决办法

热门文章

  1. maven项目依赖导入不进去的解决方法或者报错的情况
  2. 与米老师的谈话之我的总结误区
  3. elasticsearch自定义企业词典
  4. Junit5废弃@Before和@After注解
  5. 安固士科技|数字化智慧工地到底有哪些黑科技?
  6. Caffe学习(7)——图像数据转换为db文件(leveldb/lmdb)
  7. 将X映射到0-1、a-b 公式(归一化公式)
  8. @Autowire/@Value注解实现
  9. Sql中日期类型的比较
  10. 读《JavaServer Faces 核心编程(第3版)》一书的记录—— 第 4 章 标准 JSF 标签——案例 flags