[PYTHON] Lassen Sie uns mit flask-babel eine mehrsprachige Site erstellen

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.

Installation

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.

Vorbereitung auf die automatische Sprachdiskriminierung

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.

Vorbereitung der Übersetzungsquelle HTML

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.

Übersetzung

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.

Bestätigung des Übersetzungsergebnisses

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.

Recommended Posts

Lassen Sie uns mit flask-babel eine mehrsprachige Site erstellen
Lassen Sie uns mit SWIG ein Modul für Python erstellen
Machen wir einen Discord Bot.
Lassen Sie uns mit Google Colaboratory ganz einfach ein mathematisches GIF erstellen
Lassen Sie uns einen LINE-Bot mit verschiedenen Diensten erstellen [ngrok edition]
Machen wir eine Remote-Rumba [Hardware]
Lassen Sie uns eine Remote-Rumba erstellen [Software]
Erstellen Sie mit TensorFlow eine Gesichtserkennung
Machen wir einen Blockbruch mit wxPython
Machen wir einen Spot Sale Service 1
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Machen wir mit xCAT einen Spacon
Machen wir einen Spot Sale Service 3
Lassen Sie uns einen Web-Chat mit WebSocket mit AWS serverless (Python) durchführen!
Lassen Sie uns mit Python ein Shiritori-Spiel machen
Lassen Sie uns mit Python langsam sprechen
Lassen Sie uns mit PLY 1 eine einfache Sprache erstellen
Erstellen Sie ein Webframework mit Python! (1)
Machen wir mit Pylearn 2 eine dreiäugige KI
Lassen Sie uns eine Kombinationsberechnung mit Python durchführen
Wie erstelle ich eine Pelican Site Map?
Machen wir einen Twitter-Bot mit Python!
Erstellen Sie ein Webframework mit Python! (2)
Lassen Sie uns ein Backend-Plug-In für Errbot erstellen
Erstellen wir eine REST-API mit SpringBoot + MongoDB
Ersetzen wir UWSC durch Python (5) Machen wir einen Roboter
[Chat De Tornado] Erstellen Sie einen Chat mit WebSocket in Tornado
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Wie auch immer, ich bin zu Hause, also machen wir mit Discord einen (Site-) Screenshot-Funktionsbot!
Machen wir einen Spot Sale Service 9 (Task Queue Edition)
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 1 ~
Lass uns ein Makefile machen und es bauen (super Anfänger)
[Lass uns mit Python spielen] Ein Haushaltsbuch erstellen
Lassen Sie uns das Abhängigkeitsmanagement mit pip etwas einfacher machen
So erstellen Sie ein Python-Paket mit VS Code
[Zum Spielen] Versuche Yuma zu einem LINE Bot zu machen (Python)
Lassen Sie uns eine Mac-App mit Tkinter und py2app erstellen
Versuchen Sie, mit Rhinoceros / Grasshopper / GHPython ein sphärisches Gitter zu erstellen
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 2 ~
Machen wir einen Spot Sale Service 8 (Image Uploader Edition)
[Super einfach] Machen wir einen LINE BOT mit Python.
Erstellen Sie mit OpenCV und TensorFlow einen Sato Yohei-Diskriminator
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 3 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 4 ~
Lassen Sie uns ein Cron-Programm in Java erstellen! !! (TaskScheduler)
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 5 ~
Lass uns ein Squashspiel machen
Machen Sie einen Funktionsdekorateur
Ich mache ein Passwort!
Machen Sie einen Nyan-Knopf
Ich möchte einen Sprachwechsler mit Python und SPTK in Bezug auf eine berühmte Site erstellen
Mach ein Spiel im Tetris-Stil!
Erstellen Sie einen Base64-Decoder
Lassen Sie uns mit Python einen Web-Socket-Client erstellen. (Zugriffstoken-Authentifizierung)
Erstellen wir eine Funktion für den parametrisierten Test mithilfe eines Rahmenobjekts
Lassen Sie uns einen Roboter bauen, der den Zauberwürfel löst! 2 Algorithmus
Machen wir einen Spot Sale Service 4 (in Python Mini Hack-a-thon)
Lassen Sie uns einen Roboter bauen, der den Zauberwürfel löst! 3 Software
Lassen Sie uns einen Roboter bauen, der den Zauberwürfel löst! 1. Übersicht