对于已存在的单语言老工程,里面还是直接的:
label.text = @"你好";
这种需要做多语言升级的话,可以按照下面的步骤来快速操作:
1.提取出工程里面用的老字段
使用下面的正则表达式搜索(Swift中去掉@):
@("[^\")]*?[\u4E00-\u9FA5]+[^\")]*?)"
然后把所有搜索结果全部复制到language.txt文本,等会用python脚本来过滤处理。
然后再把刚才搜索的结果全部替换成
NSLocalizedString($1, nil)
正则表达式两边加括号的目的是为了能够在替换时用$1获取原有字符串的值,在替换时把原有值放入宏定义内key的位置,整个项目中的字符串就被替换成
NSLocalizedString(key, comment)
形式
2. python处理结果
import re
import sys
reload(sys)
sys.setdefaultencoding('utf8')
#(@"[\u4E00-\u9FA5]+")]
reg = re.compile(':\d+:')
file = open("language.txt", "r")
x = 0;
list = [];
for line in file:
# ret = re.findall(r":\d+:", line)
ret = re.findall(u'"[^\")]*?[\u4E00-\u9FA5]+[^\")]*?"', line.decode('utf8'))
for word in ret:
if word not in list:
list.append(word)
file.close()
print len(list)
file = open('zh-hant.txt', 'r')
hants = file.readlines()
for i in xrange(0,len(list)):
key = list[i]
value = hants[i].strip()
#print ("%s = %s;") % (key, value) #处理成资源文件
print key #处理成待翻译格式
file.close()
先注释
#print ("%s = %s;") % (key, value)
,处理成如下格式:
然后把处理结果翻译成需要翻译的他国语言,比如繁体:
然后把翻译后的结果保存为
zh-hant.txt
,再注释刚才的python代码中的
print key
这行,然后最后就输出XCode可以直接使用的资源文件格式:
正则表达式也许并不一定适合你工程中的文字情况,需要酌情修改,python脚本也是匆忙完成,仅实现基本功能,也需要按需调整。:)
感谢:
http://www.jianshu.com/p/f79bb2212b64