我的用法说明:
这是我的项目结构(主要基于Flask Web开发):
├── 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_
app / __ 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 .
他们确实找到了所有
gettext
和lazy_gettext
。运行
$ 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上。
最佳答案
因为babel解析的实际语言环境名称是“ zh_Hans_CN”,所以将您的翻译目录命名为“ zh_Hans_CN”,这样就可以找到它。
关于python - Flask-Babel不会在Web项目中翻译任何内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28102769/