文章目录
前言
如果一开始写项目很潦草, 没做好国际化的准备, 产品经理那边突然喊一嗓子: 那谁, 加个国际化, 不难吧,明天完成给我看一下.
嘴上: 是是是! 好的! 没问题!
心里: 滚!
其实国际化主要就烦, 寻找项目中的中文做替换. 不过其实可以通过Regular Expression(正则表达式)搜索, 来解决这个烦恼.
Regular Expression
打开一个项目,点击左上角搜索标识, 就会出现当前这个页面
点击Text, 会出现两个选项 (想了解整个版面, 可以自行搜索一下, 这里只是重点介绍如何快速替换中文)
- Text
- Regular Expression(正则表达式搜索)
选择Regular Expression. 好, 接下来,开始如何替换中文吧.
最终4条正则表达式
先列出我们总结出的4条正则表达式吧.
1. 搜索只有中文字符串
(@"[\u4e00-\u9fa5]{1,}")
2. 搜索除去特定头部, 只有中文字符串
([^i_log(])(@"[\u4e00-\u9fa5]{1,}")
其中 i_log( 可替换为你任意头部
3. 搜索含有中文字符串
(@"((?!").)*?[\u4e00-\u9fa5].*?")
4. 搜索除去特定头部, 含有中文字符串
([^i_log(])(@"((?!").)*?[\u4e00-\u9fa5].*?")
其中 i_log( 可替换为你任意头部
使用示例
例如你有一个国际化的宏
#define XQ_Localized(key) NSLocalizedStringFromTable(key, @"国际化文件名称", @"描述")
替换纯中文字符串
项目没用过国际化宏
如下图, 搜索, 并替换.
输入搜索中文字符串之后, 就会查找到 @“哈哈” , 然后直接点击Replace All, 就能一键替换了
注意,一键替换还是少点用, 不然替换了一些莫名奇妙的代码, 就要被挨领导叼了. /(ㄒoㄒ)/~~
(@"[\u4e00-\u9fa5]{1,}")
替换框中的 $1 是查找到的值
项目已用国际化宏
就是如果项目已替换了一部分, 后面需要查找没替换的, 直接用上面那个, 肯定不行, 这个就需要用过滤头部了.
([^i_log(])(@"[\u4e00-\u9fa5]{1,}")
$1 是第一个 () 查找出来的头部
$2 是第二个 () 查找出来的内容
替换含有中文的字符串
上面两个只是会查找所有都是中文的字符串,我们也需要找出一些包含中文的字符串, 不过这个一般就不太能直接替换, 需要单独自己提取出来中文替换.
寻找不包括头部的,就直接取第四条正则放上去就行了
以上的正则表达式都是根据自己需要总结出来的, 你有自己的需求可以Google or 百度一下正则表达式, 内容不是很多, 抽个空闲时间看一遍就可以了.
ps: 这里说一下, 个人觉得xib不要用生成的.strings做国际化, 封装成库的时候, 总有一些坑.