好的我有以下应用:
[python: **.py]
[jinja2: **/templates/**.html]
extensions=jinja2.ext.autoescape,jinja2.ext.with_
babel = Babel()
def create_app(object_name):
app = Flask(__name__)
app.config.from_object(object_name)
app.register_blueprint(main_blueprint)
app.register_blueprint(category_blueprint)
app.register_blueprint(item_blueprint)
babel.init_app(app)
db.init_app(app)
return app
@babel.localeselector
def get_locale():
return 'de'
main_blueprint = Blueprint(
'main',
__name__,
template_folder='../templates/main',
)
@main_blueprint.route('/debug')
def debug():
print get_locale()
return gettext('A simple string')
我运行了以下命令:
这就是我的项目结构:
.
|-- README.md
|-- babel.cfg
|-- fabfile.py
|-- lucy
| |-- __init__.py
| |-- config.py
| |-- controllers
| | |-- __init__.py
| | |-- category.py
| | |-- item.py
| | `-- main.py
| |-- forms.py
| |-- models.py
| |-- static
| | |-- css
| | `-- js
| `-- templates
| |-- boilerplate
| | |-- items.html
| | `-- layout.html
| |-- category
| | `-- show.html
| |-- item
| | |-- index.html
| | `-- show.html
| `-- main
| `-- signup.html
|-- manage.py
|-- messages.pot
|-- requirements.txt
|-- tests
| |-- __init__.py
| `-- test_models.py
`-- translations
`-- de
`-- LC_MESSAGES
|-- messages.mo
`-- messages.po
这些是翻译的结果:
messages.pot
# Translations template for PROJECT.
# Copyright (C) 2016 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2016.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2016-07-19 16:07+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.3.4\n"
#: lucy/controllers/main.py:20
msgid "A simple string"
msgstr ""
翻译/ DE / LC_MESSAGES / message.po
# German translations for PROJECT.
# Copyright (C) 2016 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2016.
#
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2016-07-19 16:07+0800\n"
"PO-Revision-Date: 2016-07-19 16:07+0800\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: de\n"
"Language-Team: de <LL@li.org>\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.3.4\n"
#: lucy/controllers/main.py:20
msgid "A simple string"
msgstr "german string berlin"
翻译/ DE / LC_MESSAGES / message.mo
??,<=?M?A simple stringProject-Id-Version: PROJECT VERSION
Report-Msgid-Bugs-To: EMAIL@ADDRESS
POT-Creation-Date: 2016-07-19 16:07+0800
PO-Revision-Date: 2016-07-19 16:07+0800
Last-Translator: FULL NAME <EMAIL@ADDRESS>
Language: de
Language-Team: de <LL@li.org>
Plural-Forms: nplurals=2; plural=(n != 1)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Generated-By: Babel 2.3.4
german string berlin
当我访问/调试时,我发现我的语言环境是de
。但是,我仍然看到A simple string
正在输出。有什么想法吗?
答案 0 :(得分:3)
对我来说,解决方案是设置BABEL_TRANSLATION_DIRECTORIES变量。它包含一个字符串,其路径以';'分隔。
在我的配置中(只有一个位置):
BABEL_TRANSLATION_DIRECTORIES ='/ home / work / python / project / translations'
答案 1 :(得分:2)
我的答案与fmelan相同,但是我使用绝对路径:
ax.set_xlim(0.0,)
答案 2 :(得分:0)
从fmelan的答案扩展:如果您的translations
目录与flask_app.py
位于同一位置,那么您可以这样做:
app.config['BABEL_TRANSLATION_DIRECTORIES'] = './translations'
...,而不必担心绝对路径是否在应用程序运行的任何地方都可以使用。
对我来说,这很好地解决了将页面部署到PythonAnywhere时的怪异行为。