前段时间公司要上一个海外版的APP,要做国际化,整理了本地化字符串拿去翻译。翻译回来的文案有些格式不小心被改动了,毕竟那么多字符串,不小心改动了也很正常,不能怪人家翻译的人。偏偏xcode这货报错还没有提示是哪一行格式不对,找的是那个头晕眼花啊。只能全部注释掉,然后一段一段的打开注释,编译,找的想吐血。后来在网上找到了一个好用的脚本,在这记录一下,以后就不用这么麻烦了。
如何使用
1. 修改 DESPATH 为你项目的路径;
2. 直接在脚本所在的目录下,打开终端执行 python localizableError.py,这里的 localizableError.py 为脚本文件名。
3. 执行完成后,控制台会打印报错的代码行。如
脚本代码如下:
# coding=utf-8
import os
import re
# 将要解析的本地化字符串路径
DESPATH = "/Users/xxx/Downloads/xxx/xxx/xxx/zh-Hans.lproj"
def filename(filePath):
return os.path.split(filePath)[1]
def pragram_error(filePath):
with open(filePath) as f:
isMutliNote = False
fname = filePath.replace(DESPATH, '')
for index, line in enumerate(f):
line = line.strip()
if '/*' in line:
isMutliNote = True
if '*/' in line:
isMutliNote = False
if isMutliNote:
continue
if len(line) == 0 or line == '*/':
continue
if re.findall(r'^/+', line):
continue
regx = r'^".*s?"\s*=\s*".*?";$'
matchs = re.findall(regx, line)
if not matchs:
result = fname + ':line[' + str(index) + '] : ' + line
print(filePath)
print(result)
def find_from_file(path):
paths = os.listdir(path)
for aCompent in paths:
aPath = os.path.join(path, aCompent)
if os.path.isdir(aPath):
find_from_file(aPath)
elif os.path.isfile(aPath) and os.path.splitext(aPath)[1]=='.strings':
pragram_error(aPath)
if __name__ == '__main__':
find_from_file(DESPATH)
print('已完成')