Ich habe es mit einer anderen Sprachseite mit flask-babel gemacht, also habe ich dokumentiert, wie man es macht
Ich habe auf [diese Site] verwiesen (http://d.hatena.ne.jp/nullpobug/20100923/1285251361), aber einige von ihnen wurden vor ungefähr 5 Jahren geschrieben und entsprechen nicht der aktuellen Situation. Also habe ich es ein wenig modifiziert.
Der Beispielcode wird auf github [hier] angegeben (https://github.com/shibacow/flask_babel_sample). https://github.com/shibacow/flask_babel_sample (Eigentlich könnte dies allein die Absicht dieses Blogs erreicht haben). Ich denke, es wird funktionieren, wenn Sie das obige Repository klonen und Flask und Flask-Babel hinzufügen.
flask-babel ist eine Bibliothek zur Implementierung von i18n mit flask. Die Seite von flask-babel ist hier
Installieren Sie mit pip wie folgt
pip install Flask-Babel
Sie können mit der ursprünglichen Website gehen.
https://github.com/shibacow/flask_babel_sample/blob/master/srv.py
von
@babel.localeselector
def get_locale():
return request.accept_languages.best_match(['ko','zh','ja', 'ja_JP', 'en'])
Kann mit automatisch ermittelt werden.
https://github.com/shibacow/flask_babel_sample/blob/master/templates/hello.html
Mögen,
<p>
message: {{ gettext('Hello world!') }}
</p>
Bereiten Sie einen Satz vor, der in gettext wie eingeschlossen ist. Sie können `_ ()`
like `message: {{_ ('Hello world!')}}` `Verwenden. Diese
'Hallo Welt!'
`` Ist das Ziel der Ersatzformulierung.
Bereiten Sie danach babel.cfg wie in [diesem Artikel] gezeigt vor (http://d.hatena.ne.jp/nullpobug/20100923/1285251361).
$ pybabel extract -F babel.cfg -k lazy_gettext -o messages.pot .
$ pybabel init -i messages.pot -d translations -l ja
Sie können einen Ja-Ordner unter Übersetzungen erstellen.
Mit einem ähnlichen Gefühl
$ pybabel init -i messages.pot -d translations -l en
$ pybabel init -i messages.pot -d translations -l zh
$ pybabel init -i messages.pot -d translations -l ko
Und so weiter. Namen von Sprachgebietsschemas wie ko und zh scheinen durch den Code ISO-639-1 (https://ja.wikipedia.org/wiki/ISO_639-1%E3%82%B3%E3%83%) bestimmt zu werden BC% E3% 83% 89% E4% B8% 80% E8% A6% A7)
Dann
https://github.com/shibacow/flask_babel_sample/blob/master/translations/ja/LC_MESSAGES/messages.po
Kann gemacht werden. Öffnen Sie messages.po und setzen Sie den übersetzten Wortlaut in msgid unter msgid. msgid ist enthalten, msgid ist jedoch nicht enthalten. Geben Sie daher den von Ihnen übersetzten Wortlaut ein.
Nach der Übersetzung aller Sprachen
$ pybabel compile -d translations
Kompilieren mit. Wenn das Wort Fuzzy in /messages.po enthalten ist, wird es nicht kompiliert (es wird als übersetzt angesehen). Entfernen Sie daher das Wort Fuzzy aus messages.po.
Nach dem Kompilieren wird messages.mo erstellt.
https://github.com/shibacow/flask_babel_sample/blob/master/translations/ja/LC_MESSAGES/messages.mo
Es sieht aus wie eine Binärdatei.
Wenn Sie in diesem Zustand `` `python srv.py``` ausführen, wird der Teil, der ursprünglich Hello World enthält, abhängig von der Sprachauswahl des Browsers geändert.
Und
Es wird durch die übersetzte Sprache ersetzt.