[Flask] Babel tries...
Xavier
somenxavier at gmail.com
Sun Dec 13 14:26:57 EST 2015
Hi,
I have a simply app:
# Imports
from flask import Flask, jsonify, request, make_response, render_template,
url_for, flash, redirect
from yaml import load, dump
try:
from yaml import CLoader as Loader, CDumper as Dumper
except ImportError:
from yaml import Loader, Dumper
from flask.ext.babel import Babel
# Global variables
version = "0.1"
app = Flask(__name__)
app.secret_key = 'el meu secret'
# Babel settings
app.config.from_pyfile('configuration.cfg')
babel = Babel(app)
LANGUAGES = {
'en': 'English',
'es': 'Español',
'ca': 'Català'
}
@babel.localeselector
def get_locale():
return request.accept_languages.best_match(LANGUAGES.keys())
# Main procedure
def create_new_activity():
"""It creates a new activity after a POST request"""
flash(request.form.get('name'))
flash(request.form.get('body'))
flash(request.form.getlist('tags'))
return redirect(url_for('add_activity'))
def show_new_activity_form():
"""It shows a form for create a new activity"""
return render_template('add_activity.html')
@app.route("/add/", methods=['GET', 'POST'])
def add_activity():
"""Add a new activity to the collection"""
if request.method == 'POST':
return create_new_activity()
else:
return show_new_activity_form()
if __name__ == "__main__":
app.run(debug=True)
My babel.cfg is
[python: **.py]
[jinja2: **/templates/**.html]
extensions=jinja2.ext.autoescape,jinja2.ext.with_
and my configuration.cfg is
BABEL_DEFAULT_LOCALE="en"
When I run
#!/usr/bin/env sh
pybabel extract -F babel.cfg -o messages.pot templates/
pybabel init -i messages.pot -d translations -l ca
pybabel init -i messages.pot -d translations -l en
pybabel init -i messages.pot -d translations -l es
pybabel compile -d translations
I get EMPTY (nothing to be translated) files, although in my templates I
have the base.html with words for translating:
<!DOCTYPE html>
<html>
<head>
<!-- Standard meta -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="x-ua-compatible" content="ie=edge">
<!-- Robots -->
<meta name="robots" content="index,follow" />
<meta name="Revisit-After" content="10 Days" />
<!-- Generator -->
<meta name="generator" content="Flask" />
<!-- title -->
<title>{% block title %}{% endblock %} ∈ Activiteca </title>
<!-- block of CSS and Javascript -->
{% block css_js %}
<!-- jQuery javascript -->
<script src="
https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="
https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7"
crossorigin="anonymous">
<!-- Bootstrap theme CSS -->
<link rel="stylesheet" href="
https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css"
integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r"
crossorigin="anonymous">
<!-- Bootstrap javascript -->
<script src="
https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"
integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS"
crossorigin="anonymous"></script>
<!-- Icons -->
<link rel="stylesheet" href="
https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css
">
<!-- Some custom things -->
<link rel="stylesheet" href="{{ url_for('static', filename='meu.css')
}}">
{% endblock %}
</head>
<body>
{% block header %}
<header>
<!-- begin: Main menu -->
<nav class="navbar navbar-default" id="nav-global" role="navigation">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="/"><i class="fa fa-home"></i>
Activiteca</a>
<!-- collapsible button -->
<button class="navbar-toggle collapsed" type="button"
data-toggle="collapse" data-target="#collapsing-menu" title="Menu"
aria-expanded="false">
☰
</button>
</div>
<!-- collapsing menu -->
<div class="collapse navbar-collapse" id="collapsing-menu">
<ul class="nav navbar-nav navbar-right">
<!-- Activities submenu -->
<li class="dropdown">
<a href="#" class="dropdown-toggle"
data-toggle="dropdown" role="button" aria-haspopup="true"
aria-expanded="false"><i class="fa fa-file"></i> {{ gettext("Activity") }}
<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="{{ url_for('add_activity') }}"
title="Add activity">{{ gettext("Add") }}</a></li>
<li><a href="#">List</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<!-- final: Main menu -->
</header>
{% endblock %}
<div class="container">
<div class="section">
{% block content %}{% endblock %}
</div>
</div>
{% block footer %}
<!-- the footer -->
<footer class="footer">
<div class="container">
<p><small><a rel="license" href="
http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons
License" style="border-width:0" src="
http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/by.svg"
width="88"/></a></small></p>
<p><small>Except where otherwise noted, the content on <a
xmlns:cc="http://creativecommons.org/ns#" href="
http://activiteca.somenxavier.xyz" property="cc:attributionName"
rel="cc:attributionURL">this site</a> is licensed under a <a rel="license"
href="http://creativecommons.org/licenses/by/4.0/">Creative Commons
Attribution 4.0 International license</a>.</small></p>
</div>
</footer>
<!-- ends the footer -->
{% endblock %}
</body>
</html>
Any hints?
Thanks,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/flask/attachments/20151213/e6f7048a/attachment.html>
More information about the Flask
mailing list