美文网首页
iOS自动检测国际化文本格式错误脚本

iOS自动检测国际化文本格式错误脚本

作者: 阿古斯年 | 来源:发表于2018-01-30 14:55 被阅读151次

前段时间公司要上一个海外版的APP,要做国际化,整理了本地化字符串拿去翻译。翻译回来的文案有些格式不小心被改动了,毕竟那么多字符串,不小心改动了也很正常,不能怪人家翻译的人。偏偏xcode这货报错还没有提示是哪一行格式不对,找的是那个头晕眼花啊。只能全部注释掉,然后一段一段的打开注释,编译,找的想吐血。后来在网上找到了一个好用的脚本,在这记录一下,以后就不用这么麻烦了。

如何使用
1.  修改 DESPATH 为你项目的路径;
2.  直接在脚本所在的目录下,打开终端执行 python localizableError.py,这里的 localizableError.py 为脚本文件名。
3.  执行完成后,控制台会打印报错的代码行。如
图片 1.png

脚本代码如下:

# 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('已完成')

相关文章

网友评论

      本文标题:iOS自动检测国际化文本格式错误脚本

      本文链接:https://www.haomeiwen.com/subject/tvlczxtx.html