Flask-Babel不会在Web项目中翻译任何内容

时间:2015-01-23 03:55:12

标签: python flask flask-sqlalchemy flask-login babel

我的用法说明:

这是我的项目结构(主要基于 Flask Web Development ):

├── README.md
├── app
│   ├── __init__.py
│   ├── admin
│   │   ├── __init__.py
│   │   ├── user_admin.py
│   ├── auth
│   │   ├── __init__.py
│   │   ├── forms.py
│   │   ├── views.py
│   ├── decorators.py
│   ├── main
│   │   ├── __init__.py
│   │   ├── errors.py
│   │   ├── forms.py
│   │   ├── views.py
│   ├── models.py
│   └── templates
│       ├── auth
│       │   ├── login.html
│       │   └── register.html
│       ├── base.html
│       ├── edit-profile.html
│       ├── index.html
│       ├── layout.html
│       └── user.html
├── babel.cfg
├── config.py
├── manage.py
├── migrations
│   ├── README
│   ├── alembic.ini
│   ├── env.py
│   ├── script.py.mako
│   └── versions
│       ├── 20c68396e6d8_.py
├── requirement.txt
├── test
└── translations
    └── zh_CN
        └── LC_MESSAGES
            ├── messages.mo
            └── messages.po

/babel.cfg和/ app / __ init __。py

中的配置

babel.cfg:

[python: **.py]
[jinja2: **/templates/**.html]
extensions=jinja2.ext.autoescape,jinja2.ext.with_

应用程序/ __ INIT __ PY:

# ...
from flask_babelex import Babel

babel = Babel()

@babel.localeselector
def get_locale():
    return 'zh_CN'

def create_app(config_name):
    #...
    babel.init_app(app)
    return app

然后我按照Flask-Babel文件

运行$ pybabel extract -F babel.cfg -o messages.pot .

运行$ pybabel extract -F babel.cfg -k lazy_gettext -o messages.pot .

他们确实找到了所有gettextlazy_gettext s。

运行$ pybabel init -i messages.pot -d translations -l zh_CN

这为我生成/translations/zh_CN/LC_MESSAGES/messages.po。我在其中修改了一些翻译。(包括删除# .fuzzy

最后我运行$ pybabel compile -d translations。这会成功生成/tranlations/zh_CN/LC_MESSAGES/messages.mo

但是没有翻译......我真的不知道如何修复这个错误。

我真的搞砸了好几天。

有关详细信息,我将此项目放在Github上。

1 个答案:

答案 0 :(得分:1)

因为babel解析的实际区域设置名称是" zh_Hans_CN",请将您的翻译目录命名为" zh_Hans_CN",然后找到它。