使用Python脚本处理OC中的中文字符串
由于Xcode对中文支持良好,所以在开发过程中经常直接使用中文字符串。不过苹果推荐多语言化,需要为中文字符串添加个NSLocalizedString宏。#!/usr/bin/python# -*- coding: utf-8 -*-'''Localization The Objective-C Code@"..."-->NSLocalizedStrin
·
由于Xcode对中文支持良好,所以在开发过程中经常直接使用中文字符串。
不过苹果推荐多语言化,需要为中文字符串添加个NSLocalizedString宏。
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
Localization The Objective-C Code
@"..." --> NSLocalizedString(@"...", nil)
Jason Lee 2012-03-01
'''
import os, sys
import re
import codecs
targetPattern = re.compile('@"[^"]+"')
global newFile, newFilePointer
def isChineseCharacter(ch):
return 0x4e00 <= ord(ch) <= 0x9fa5
def hasChineseCharacter(str):
for char in str:
if isChineseCharacter(char):
return True
return False
def buildNewString(oldStr):
newStrPrefix = 'NSLocalizedString('
newStrSuffix = ', nil)'
newStr = newStrPrefix + oldStr + newStrSuffix
return newStr
def processLine(line):
global newFile, newFilePointer
matchResult = targetPattern.findall(line)
for result in matchResult:
if hasChineseCharacter(result):
#print result, buildNewString(result)
p = re.compile(result)
line = p.sub(buildNewString(result), line)
newFilePointer.write(line)
def processFile(filename):
#Xcode file is saved with utf-8
global newFile, newFilePointer
newFile = 'Replaced.' + filename
newFilePointer = codecs.open(newFile, 'wb', 'utf-8')
fp = codecs.open(filename, 'rb', 'utf-8')
for line in fp:
processLine(line)
fp.close()
newFilePointer.close()
oldFile = 'Old.' + filename
os.system('mv ' + filename + ' ' + oldFile)
os.system('mv ' + newFile + ' ' + filename)
#os.system('rm -f ' + oldFile)
if __name__ == "__main__":
if len(sys.argv) > 1:
output = os.popen('ls ' + sys.argv[1]).read()
filelist = re.split('\n', output)
filelist = filelist[:-1]
#print filelist
print 'Localizing...'
for file in filelist:
if os.path.exists(file):
try:
#print 'Processing File :', file
processFile(file)
except Exception as e:
print e
print 'Localization Done.'
之后需要做的事情参考:http://blog.csdn.net/jasonblog/article/details/7299544
代码没用经过严格验证,请慎用。起码,没有检查该字符串是否已经加了NSLocalizedString宏。
:)
更多推荐
已为社区贡献1条内容
所有评论(0)