Dmitry Afanasyev a95403f594
Feat/fix start (#1)
format code
2023-09-16 20:09:40 +03:00

48 lines
1.4 KiB
Python

import os
import subprocess
from flask import jsonify, request, session
from flask_babel import Babel
def get_languages_from_dir(directory):
"""Return a list of directory names in the given directory."""
return [name for name in os.listdir(directory) if os.path.isdir(os.path.join(directory, name))]
BABEL_DEFAULT_LOCALE = "en_US"
BABEL_LANGUAGES = get_languages_from_dir("translations")
def create_babel(app):
"""Create and initialize a Babel instance with the given Flask app."""
babel = Babel(app)
app.config["BABEL_DEFAULT_LOCALE"] = BABEL_DEFAULT_LOCALE
app.config["BABEL_LANGUAGES"] = BABEL_LANGUAGES
babel.init_app(app, locale_selector=get_locale)
compile_translations()
def get_locale():
"""Get the user's locale from the session or the request's accepted languages."""
return session.get("language") or request.accept_languages.best_match(BABEL_LANGUAGES)
def get_languages():
"""Return a list of available languages in JSON format."""
return jsonify(BABEL_LANGUAGES)
def compile_translations():
"""Compile the translation files."""
result = subprocess.run(
["pybabel", "compile", "-d", "translations"],
stdout=subprocess.PIPE,
)
if result.returncode != 0:
raise Exception(f"Compiling translations failed:\n{result.stdout.decode()}")
print("Translations compiled successfully")