【发布时间】:2015-01-23 03:55:12
【问题描述】:
我的用法说明:
这是我的项目结构(基本上基于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_
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 .
他们确实找到了所有gettexts 和lazy_gettexts。
运行$ 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。
【问题讨论】:
-
我不明白为什么如果你将你的语言环境定义为
zh,你最终会得到一个/translations/zh_CN/LC_MESSAGES路径。语言代码不同。 -
很困惑,我已经将它们统一到'zh_CN',但仍然没有发生翻译动作。我很高兴你在这里留下了评论,Miguel。你的书和博客对我帮助很大。
-
看起来只有翻译的文本被输入 Flask-Admin。也许您应该尝试一些更简单的方法,只需将您翻译的这些单词中的一个直接放入模板中,看看是否有效。
-
它们在模板中也不起作用。想知道我的本地配置是否有问题,或者它们进入了错误的“gettext”方法?
标签: python flask flask-sqlalchemy python-babel flask-babel