美文网首页
【iOS】给已有工程添加多语言的快速方法

【iOS】给已有工程添加多语言的快速方法

作者: 秋名山代驾 | 来源:发表于2017-05-18 11:13 被阅读62次

    对于已存在的单语言老工程,里面还是直接的:

    label.text = @"你好";
    

    这种需要做多语言升级的话,可以按照下面的步骤来快速操作:

    1.提取出工程里面用的老字段

    Paste_Image.png

    使用下面的正则表达式搜索(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)
    

    ,处理成如下格式:

    Paste_Image.png

    然后把处理结果翻译成需要翻译的他国语言,比如繁体:

    Paste_Image.png
    然后把翻译后的结果保存为zh-hant.txt,再注释刚才的python代码中的
    print key
    

    这行,然后最后就输出XCode可以直接使用的资源文件格式:

    Paste_Image.png

    正则表达式也许并不一定适合你工程中的文字情况,需要酌情修改,python脚本也是匆忙完成,仅实现基本功能,也需要按需调整。:)
    感谢:
    http://www.jianshu.com/p/f79bb2212b64

    相关文章

      网友评论

          本文标题:【iOS】给已有工程添加多语言的快速方法

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