[PYTHON] Faisons un site multilingue en utilisant flask-babel

Je l'ai fait avec un autre site de langue en utilisant flask-babel, donc j'ai documenté comment le faire

J'ai fait référence à ce site, mais certains d'entre eux ont été écrits il y a environ 5 ans et ne correspondent pas à la situation actuelle. Alors je l'ai un peu modifié.

L'exemple de code est donné sur github ici. https://github.com/shibacow/flask_babel_sample (En fait, cela seul peut avoir atteint l'intention de ce blog). Je pense que cela fonctionnera si vous clonez le référentiel ci-dessus et ajoutez Flask et Flask-Babel.

Installation

flask-babel est une bibliothèque pour implémenter i18n avec flask. Le site de flask-babel est ici

Installer à l'aide de pip comme suit

pip install Flask-Babel 

Vous pouvez aller avec le site d'origine.

Se préparer à la discrimination automatique de la langue

https://github.com/shibacow/flask_babel_sample/blob/master/srv.py

de

@babel.localeselector
def get_locale():
    return request.accept_languages.best_match(['ko','zh','ja', 'ja_JP', 'en'])

Peut être déterminé automatiquement avec.

Préparation du code source html

https://github.com/shibacow/flask_babel_sample/blob/master/templates/hello.html

Comme,

<p>
  message: {{ gettext('Hello world!') }}
</p>

Préparez une phrase incluse dans gettext comme. Vous pouvez utiliser _ () comme message: {{_ ('Hello world!')}}. Ce Bonjour tout le monde! '' Est la cible du libellé de remplacement.

Traduction

Après cela, préparez babel.cfg comme indiqué dans cet article,

$ pybabel extract -F babel.cfg -k lazy_gettext -o messages.pot .
$ pybabel init -i messages.pot -d translations -l ja

Vous pouvez créer un dossier ja sous les traductions.

Avec un sentiment similaire

$ 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

Etc. Les noms de langue tels que ko et zh semblent être déterminés par le code ISO-639-1 (https://ja.wikipedia.org/wiki/ISO_639-1%E3%82%B3%E3%83% BC% E3% 83% 89% E4% B8% 80% E8% A6% A7)

Puis

https://github.com/shibacow/flask_babel_sample/blob/master/translations/ja/LC_MESSAGES/messages.po

Peut être fait. Ouvrez messages.po et mettez le texte traduit dans msgid sous msgid. msgid est inclus, mais msgid n'est pas inclus, alors remplissez le libellé que vous avez traduit.

Après avoir traduit toutes les langues

$ pybabel compile -d translations

Compiler avec. Si le mot flou est inclus dans /messages.po, il ne sera pas compilé (il est considéré comme étant en cours de traduction), supprimez donc le mot flou de messages.po.

Après la compilation, messages.mo sera créé.

https://github.com/shibacow/flask_babel_sample/blob/master/translations/ja/LC_MESSAGES/messages.mo

Cela ressemble à un fichier binaire.

Confirmation du résultat de la traduction

Si vous exécutez `` python srv.py '' dans cet état, la partie qui contient à l'origine Hello World sera modifiée en fonction de la sélection de langue du navigateur.

中国語

Et

日本語

Il sera remplacé par la langue traduite.

Recommended Posts

Faisons un site multilingue en utilisant flask-babel
Faisons un module pour Python en utilisant SWIG
Faisons un robot Discord.
Créons facilement un gif mathématique en utilisant Google Colaboratory
Créons un bot LINE en utilisant divers services [ngrok edition]
Faisons une rumba distante [Matériel]
Faisons une rumba distante [Logiciel]
Créer un outil de reconnaissance de visage à l'aide de TensorFlow
Faisons une rupture de bloc avec wxPython
Faisons un service de vente au comptant 1
Faisons un graphe avec python! !!
Faisons un spacon avec xCAT
Faisons un service de vente au comptant 3
Faisons une discussion WEB en utilisant WebSocket avec AWS sans serveur (Python)!
Faisons un jeu de shiritori avec Python
Faisons la voix lentement avec Python
Faisons un langage simple avec PLY 1
Créez un framework Web avec Python! (1)
Faisons une IA à trois yeux avec Pylearn 2
Faisons un calcul de combinaison avec Python
Comment créer un plan de site Pelican
Faisons un bot Twitter avec Python!
Créez un framework Web avec Python! (2)
Faisons un plug-in backend pour Errbot
Créons une API REST en utilisant SpringBoot + MongoDB
Remplaçons UWSC par Python (5) Faisons un robot
[Chat De Tornado] Créez un chat en utilisant WebSocket dans Tornado
J'ai créé un jeu ○ ✕ avec TensorFlow
Quoi qu'il en soit, je suis à la maison, alors faisons un bot de fonction de capture d'écran (site) avec Discord!
Faisons un service de vente au comptant 9 (édition Task Queue)
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 1 ~
Faisons un Makefile et construisons-le (super débutant)
[Jouons avec Python] Créer un livre de comptes de ménage
Facilitons un peu la gestion des dépendances avec pip
Comment créer un package Python à l'aide de VS Code
[Pour jouer] Essayez de faire de Yuma un robot LINE (Python)
Créons une application Mac avec Tkinter et py2app
Essayez de créer une grille sphérique avec Rhinoceros / Grasshopper / GHPython
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 2 ~
Faisons un service de vente au comptant 8 (édition de téléchargement d'image)
[Super facile] Faisons un LINE BOT avec Python.
Créer un discriminateur Sato Yohei en utilisant OpenCV et TensorFlow
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 3 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 4 ~
Faisons un programme cron en Java! !! (Planificateur de tâches)
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 5 ~
Faisons un jeu de squash
Faire un décorateur de fonction
Je vais créer un mot de passe!
Créer un bouton Nyan
Je veux faire un changeur de voix en utilisant Python et SPTK en référence à un site célèbre
Créez un jeu à la Tetris!
Créer un décodeur Base64
Créons un client de socket Web avec Python. (Authentification par jeton d'accès)
Créons une fonction pour le test paramétré à l'aide d'un objet frame
Faisons un robot qui résout le Rubik Cube! 2 Algorithme
Faisons un service de vente au comptant 4 (en Python mini Hack-a-thon)
Faisons un robot qui résout le Rubik Cube! 3 Logiciel
Faisons un robot qui résout le Rubik Cube! 1. Vue d'ensemble