mirror of
https://github.com/Balshgit/gpt_chat_bot.git
synced 2025-09-11 22:30:41 +03:00
48 lines
1.4 KiB
Python
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")
|