美文网首页
flask_babelex 使用

flask_babelex 使用

作者: 冰_Angus | 来源:发表于2019-12-13 11:32 被阅读0次
    # https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xiii-i18n-and-l10n
    # 请在rqlicense-server 目录下操作
    # 生成翻译文件模版
    # pybabel extract -F babel.cfg -k _l -o messages.pot .
    # 生成翻译文件 一般只需要 init 一次
    # pybabel init -i messages.pot -d rqlicense/translations -l en
    # 更新翻译文件
    # pybabel update -i messages.pot -d rqlicense/translations -l en
    # 编译
    # pybabel compile -d rqlicense/translations
    

    附赠 messages.po 谷歌翻译脚本

    #!/usr/bin/python3
    # encoding: utf-8 
    # @Time    : 2019/12/13 15:25
    # @author  : zza
    # @Email   : 740713651@qq.com
    # @File    : 翻译messages.po文件.py
    import re
    from tqdm import tqdm
    from googletrans import Translator
    
    proxies = {"http": 'http://localhost:9999',
               "https": 'https://localhost:9999'}
    translate = Translator(proxies=proxies)
    
    
    def service(messages_po_path):
        with open(messages_po_path, "r", encoding="utf8") as f:
            messages_body = f.read()
        messages_lines = messages_body.split("\n")
        result_lines = []
        msgid = ""
        msgstr = ""
        for line in tqdm(messages_lines):
            if line.startswith("msgid"):
                msgid = line
            elif line.startswith("msgstr"):
                msgstr = line
                if msgid == 'msgid ""':
                    pass
                elif msgstr == 'msgstr ""':
                    translate_str = re.findall(r"msgid \"(.*)\"", msgid)[0]
                    en_str = translate.translate(translate_str).text
                    msgstr = msgstr.replace('""', '"{}"'.format(en_str))
                result_lines.append(msgid)
                result_lines.append(msgstr)
            else:
                result_lines.append(line)
        result_body = "\n".join(result_lines)
        messages_po_to_path = messages_po_path.replace(".po", "bak.po")
        with open(messages_po_to_path, "w", encoding="utf8") as f:
            f.write(result_body)
    
    
    if __name__ == '__main__':
        messages_po_path = r"D:\PycharmProjects\rqlicense\rqlicense-server\rqlicense\translations\en\LC_MESSAGES\messages.po"
        service(messages_po_path)
    
    

    相关文章

      网友评论

          本文标题:flask_babelex 使用

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