|
3 | 3 | import tempfile |
4 | 4 | import threading |
5 | 5 | import webbrowser |
| 6 | +import modules.language_support as lang |
6 | 7 | from any_to_any import AnyToAny |
7 | | -from flask import Flask, render_template, request, send_file, Response, jsonify, abort |
| 8 | +from flask import Flask, render_template, request, send_file, Response, jsonify, abort, session |
8 | 9 | from flask_uploads import UploadSet, configure_uploads, ALL |
9 | 10 |
|
10 | 11 | """ |
11 | 12 | Web server providing a web interface as extension to the CLI-based any_to_any.py |
12 | 13 | """ |
13 | 14 |
|
14 | 15 | app = Flask(__name__, template_folder=os.path.abspath("templates")) |
| 16 | +app.secret_key = os.urandom(32) # Distinguish session |
| 17 | + |
15 | 18 | host = "127.0.0.1" |
16 | 19 | port = 5000 |
17 | 20 | any_to_any = AnyToAny() |
@@ -66,7 +69,17 @@ def process_params() -> tuple: |
66 | 69 |
|
67 | 70 | @app.route("/") |
68 | 71 | def index(): |
69 | | - return render_template("index.html", title="Any_To_Any.py", options=any_to_any.supported_formats) |
| 72 | + lang_code = session.get('language', 'en_US') |
| 73 | + language = lang.LANGUAGE_CODES[lang_code] |
| 74 | + translations = lang.get_all_translations(language) |
| 75 | + return render_template( |
| 76 | + "index.html", |
| 77 | + title="Any_To_Any.py", |
| 78 | + options=any_to_any.supported_formats, |
| 79 | + translations=translations, |
| 80 | + lang_code=lang_code[:2], |
| 81 | + supported_languages=lang.LANGUAGE_CODES |
| 82 | + ) |
70 | 83 |
|
71 | 84 |
|
72 | 85 | def send_to_backend( |
@@ -186,6 +199,23 @@ def download_zip(job_id): |
186 | 199 | abort(404) |
187 | 200 | return push_zip(cv_dir) |
188 | 201 |
|
| 202 | +@app.route('/language', methods=['POST']) |
| 203 | +def set_language(): |
| 204 | + # Web interface language is set via the browser, *not* via sys language |
| 205 | + # This POST helps retrieve client's language info |
| 206 | + data = request.get_json() |
| 207 | + lang_code = data.get('language') |
| 208 | + if "_" not in lang_code: |
| 209 | + for code, _ in lang.LANGUAGE_CODES.items(): |
| 210 | + if lang_code in code: |
| 211 | + lang_code = code |
| 212 | + break |
| 213 | + if lang_code and lang_code in lang.LANGUAGE_CODES: |
| 214 | + session['language'] = lang_code |
| 215 | + language = lang.LANGUAGE_CODES[lang_code] |
| 216 | + return {'success': True, 'lang_code': lang_code, 'language': language} |
| 217 | + return {'success': False}, 400 |
| 218 | + |
189 | 219 | if __name__ == "__main__": |
190 | 220 | webbrowser.open(any_to_any.web_host) |
191 | 221 | app.run(debug=False, host=host, port=port) |
0 commit comments