mirror of
https://github.com/minetest/contentdb.git
synced 2024-11-08 08:33:45 +01:00
Enable translation support
This commit is contained in:
parent
eba1626f2e
commit
482c9e5905
1
.gitignore
vendored
1
.gitignore
vendored
@ -11,6 +11,7 @@ app/public/thumbnails
|
|||||||
celerybeat-schedule
|
celerybeat-schedule
|
||||||
/data
|
/data
|
||||||
.idea
|
.idea
|
||||||
|
*.mo
|
||||||
|
|
||||||
# Created by https://www.gitignore.io/api/linux,macos,python,windows
|
# Created by https://www.gitignore.io/api/linux,macos,python,windows
|
||||||
|
|
||||||
|
@ -16,7 +16,9 @@ COPY utils utils
|
|||||||
COPY config.cfg config.cfg
|
COPY config.cfg config.cfg
|
||||||
COPY migrations migrations
|
COPY migrations migrations
|
||||||
COPY app app
|
COPY app app
|
||||||
|
COPY translations translations
|
||||||
|
|
||||||
|
RUN pybabel compile -d translations
|
||||||
RUN chown -R cdb:cdb /home/cdb
|
RUN chown -R cdb:cdb /home/cdb
|
||||||
|
|
||||||
USER cdb
|
USER cdb
|
||||||
|
@ -33,6 +33,12 @@ app.config["FLATPAGES_ROOT"] = "flatpages"
|
|||||||
app.config["FLATPAGES_EXTENSION"] = ".md"
|
app.config["FLATPAGES_EXTENSION"] = ".md"
|
||||||
app.config["FLATPAGES_MARKDOWN_EXTENSIONS"] = MARKDOWN_EXTENSIONS
|
app.config["FLATPAGES_MARKDOWN_EXTENSIONS"] = MARKDOWN_EXTENSIONS
|
||||||
app.config["FLATPAGES_EXTENSION_CONFIG"] = MARKDOWN_EXTENSION_CONFIG
|
app.config["FLATPAGES_EXTENSION_CONFIG"] = MARKDOWN_EXTENSION_CONFIG
|
||||||
|
app.config["BABEL_TRANSLATION_DIRECTORIES"] = "../translations"
|
||||||
|
app.config["LANGUAGES"] = {
|
||||||
|
"en": "English",
|
||||||
|
"fr": "Français",
|
||||||
|
}
|
||||||
|
|
||||||
app.config.from_pyfile(os.environ["FLASK_CONFIG"])
|
app.config.from_pyfile(os.environ["FLASK_CONFIG"])
|
||||||
|
|
||||||
r = redis.Redis.from_url(app.config["REDIS_URL"])
|
r = redis.Redis.from_url(app.config["REDIS_URL"])
|
||||||
@ -57,6 +63,7 @@ login_manager = LoginManager()
|
|||||||
login_manager.init_app(app)
|
login_manager.init_app(app)
|
||||||
login_manager.login_view = "users.login"
|
login_manager.login_view = "users.login"
|
||||||
|
|
||||||
|
|
||||||
from .sass import sass
|
from .sass import sass
|
||||||
sass(app)
|
sass(app)
|
||||||
|
|
||||||
@ -66,14 +73,9 @@ if not app.debug and app.config["MAIL_UTILS_ERROR_SEND_TO"]:
|
|||||||
app.logger.addHandler(build_handler(app))
|
app.logger.addHandler(build_handler(app))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# @babel.localeselector
|
|
||||||
# def get_locale():
|
|
||||||
# return request.accept_languages.best_match(app.config["LANGUAGES"].keys())
|
|
||||||
|
|
||||||
from . import models, template_filters
|
from . import models, template_filters
|
||||||
|
|
||||||
|
|
||||||
@login_manager.user_loader
|
@login_manager.user_loader
|
||||||
def load_user(user_id):
|
def load_user(user_id):
|
||||||
return models.User.query.filter_by(username=user_id).first()
|
return models.User.query.filter_by(username=user_id).first()
|
||||||
@ -104,7 +106,8 @@ def check_for_ban():
|
|||||||
current_user.rank = models.UserRank.MEMBER
|
current_user.rank = models.UserRank.MEMBER
|
||||||
models.db.session.commit()
|
models.db.session.commit()
|
||||||
|
|
||||||
from .utils import clearNotifications
|
from .utils import clearNotifications, is_safe_url
|
||||||
|
|
||||||
|
|
||||||
@app.before_request
|
@app.before_request
|
||||||
def check_for_notifications():
|
def check_for_notifications():
|
||||||
@ -114,3 +117,31 @@ def check_for_notifications():
|
|||||||
@app.errorhandler(404)
|
@app.errorhandler(404)
|
||||||
def page_not_found(e):
|
def page_not_found(e):
|
||||||
return render_template("404.html"), 404
|
return render_template("404.html"), 404
|
||||||
|
|
||||||
|
|
||||||
|
@babel.localeselector
|
||||||
|
def get_locale():
|
||||||
|
locales = app.config["LANGUAGES"].keys()
|
||||||
|
|
||||||
|
locale = request.cookies.get("locale")
|
||||||
|
if locale in locales:
|
||||||
|
return locale
|
||||||
|
|
||||||
|
return request.accept_languages.best_match(locales)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/set-locale/", methods=["POST"])
|
||||||
|
def set_locale():
|
||||||
|
locale = request.form.get("locale")
|
||||||
|
if locale not in app.config["LANGUAGES"].keys():
|
||||||
|
flash("Unknown locale {}".format(locale), "danger")
|
||||||
|
locale = None
|
||||||
|
|
||||||
|
next_url = request.form.get("r")
|
||||||
|
if next_url and is_safe_url(next_url):
|
||||||
|
resp = make_response(redirect(next_url))
|
||||||
|
else:
|
||||||
|
resp = make_response(redirect(url_for("homepage.home")))
|
||||||
|
|
||||||
|
resp.set_cookie("locale", locale)
|
||||||
|
return resp
|
@ -109,12 +109,15 @@
|
|||||||
<i class="fas fa-plus"></i>
|
<i class="fas fa-plus"></i>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
<a class="nav-link dropdown-toggle"
|
<a class="nav-link dropdown-toggle"
|
||||||
data-toggle="dropdown"
|
data-toggle="dropdown"
|
||||||
role="button"
|
role="button"
|
||||||
aria-expanded="false">{{ current_user.display_name }}
|
aria-expanded="false">
|
||||||
<span class="caret"></span></a>
|
{{ current_user.display_name }}
|
||||||
|
<span class="caret"></span>
|
||||||
|
</a>
|
||||||
|
|
||||||
<ul class="dropdown-menu dropdown-menu-right" role="menu">
|
<ul class="dropdown-menu dropdown-menu-right" role="menu">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
@ -154,6 +157,34 @@
|
|||||||
{% else %}
|
{% else %}
|
||||||
<li><a class="nav-link" href="{{ url_for('users.login') }}">{{ _("Sign in") }}</a></li>
|
<li><a class="nav-link" href="{{ url_for('users.login') }}">{{ _("Sign in") }}</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<a class="nav-link dropdown-toggle"
|
||||||
|
data-toggle="dropdown"
|
||||||
|
role="button"
|
||||||
|
aria-expanded="false">
|
||||||
|
<i class="fas fa-language"></i>
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu dropdown-menu-right" role="menu">
|
||||||
|
<li class="nav-item">
|
||||||
|
<form method="POST" action="{{ url_for('set_locale') }}">
|
||||||
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
|
<input type="hidden" name="locale" value="en" />
|
||||||
|
<input type="hidden" name="r" value="{{ url_set_query() }}" />
|
||||||
|
<input type="submit" class="btn btn-link nav-link" value="English (en)">
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<form method="POST" action="{{ url_for('set_locale') }}">
|
||||||
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
|
<input type="hidden" name="locale" value="fr" />
|
||||||
|
<input type="hidden" name="r" value="{{ url_set_query() }}" />
|
||||||
|
<input type="submit" class="btn btn-link nav-link" value="Français (fr)">
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user