Ok I have the following app:
babel.cfg
[python: **.py] [jinja2: **/templates/**.html] extensions=jinja2.ext.autoescape,jinja2.ext.with_ lucy/init.py
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' lucy/controllers/main.py
main_blueprint = Blueprint( 'main', __name__, template_folder='../templates/main', ) @main_blueprint.route('/debug') def debug(): print get_locale() return gettext('A simple string') I ran the following commands:
- pybabel extract -F babel.cfg -o messages.pot .
- pybabel init -i messages.pot -d translations -l de
- pybabel compile -d translations/
This is what my project structure looks like:
. |-- 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 These are the results from translation:
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 <[email protected]>\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 "" translation/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 <[email protected]>\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" translation/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 <[email protected]> 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 When I visit /debug, I see that my locale is de. However, I still see A simple string being outputted. Any ideas why?
lazy_gettext.