對于已存在的單語言老工程缸沃,里面還是直接的:
label.text = @"你好";
這種需要做多語言升級的話飒责,可以按照下面的步驟來快速操作:
1.提取出工程里面用的老字段
Paste_Image.png
使用下面的正則表達(dá)式搜索(Swift中去掉@):
@("[^\")]*?[\u4E00-\u9FA5]+[^\")]*?)"
然后把所有搜索結(jié)果全部復(fù)制到language.txt文本,等會(huì)用python腳本來過濾處理把鉴。
然后再把剛才搜索的結(jié)果全部替換成
NSLocalizedString($1, nil)
正則表達(dá)式兩邊加括號的目的是為了能夠在替換時(shí)用$1獲取原有字符串的值故黑,在替換時(shí)把原有值放入宏定義內(nèi)key的位置愁拭,整個(gè)項(xiàng)目中的字符串就被替換成
NSLocalizedString(key, comment)
形式
2. python處理結(jié)果
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)
碍遍,處理成如下格式:
Paste_Image.png
然后把處理結(jié)果翻譯成需要翻譯的他國語言吨枉,比如繁體:
Paste_Image.png
然后把翻譯后的結(jié)果保存為
zh-hant.txt
揍堰,再注釋剛才的python代碼中的
print key
這行,然后最后就輸出XCode可以直接使用的資源文件格式:
Paste_Image.png
正則表達(dá)式也許并不一定適合你工程中的文字情況诗轻,需要酌情修改钳宪,python腳本也是匆忙完成,僅實(shí)現(xiàn)基本功能扳炬,也需要按需調(diào)整吏颖。:)
感謝:
http://www.reibang.com/p/f79bb2212b64