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.
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.
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.
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.
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.
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