久々にPyHackへ参加してきました。といっても1月の雪山合宿ぶりなので2か月ぐらい?
(第134回)Python mini Hack-a-thon(オンライン?) - connpass
(その前に雪山合宿の参加レポートを書くことをやってませんが、近々やります🙇
今日は去年やりたかったけどいろいろあってやってなかったことをメインで作業しました。アドバイスもらえたり、実際に動かしてみたりしてイメージが固まってきたと思う。
今日やりたいこと
- shizuhackの事務作業
- fuji.5374.jpの多言語化の環境づくり
- jinja2 + pybabelで多言語化したhtmlファイルを作りたい
- pybabelよくわからんので調べて使う
5374.jpの多言語化はいろんな方法があるらしいですが、Python使いな方面で検討してみた結果、jinja2 + pybabelを使って、pot->po->moファイルの作成と、多言語化したhtmlを生成させる処理を書いて見ることにしました。
やったこと
- shizuhackの事務作業
- お金計算: 食事周り計算
- 宿泊者の価格管理: 貸切金額から人数分で割り算してる。なるべく1日5K円に抑えたかったけど難しそうだった。後2人参加あったらもうちょっと安くなるかも
- 来週ぐらいから参加者みなさんをSlackへ呼べるようにします。
- 参加について: 宿泊ありはそろそろいっぱいになりそうで、宿泊なしは宿泊地確保が難しそうなので、お早めに検討くださいー
-
冒頭に翻訳で利用できるサービスを聞く
- みんなの自動翻訳@TexTra®: OSSでも利用されている。ユーザー管理がちょっと面倒
- deepl Pro: お金払うと翻訳結果をOSSでも利用できる(著作権がユーザー側になるらしい)
- transifex: 大規模向け
- 100~300数の翻訳内容なら、直接poファイルを編集した方がいい
- 翻訳いろいろ面倒あるけど気合いで頑張るしかない
-
長文を翻訳する時は細切れにしないで長めにやった方がいい。言語圏で文章の表現が違うので、まとまっていた方が理解されやすいとのこと
-
pybabel触ってみる
- ここの記事を半分以上利用: pybabel と Jinja2 で webapp2 アプリケーションを多言語化する - Qiita
pipenv install jinja2 pybabel
- 5374のindex.htmlを
html_template
のディレクトリにコピーして、翻訳で使うテンプレートとして見る - その後は ↑ の記事を参照に
- babel.cfgでjinja2の設定?を書く: mappingというらしい
- https://babel.readthedocs.io/en/latest/messages.html#extraction-method-mapping-and-configuration
- https://jinja.palletsprojects.com/en/3.0.x/integration/#babel-integration
- potファイル作成:
pybabel extract
https://t.co/npfdutdeUy の多言語化、jinja2+pybabelでまずはpotファイルまでは作れた。#pyhack pic.twitter.com/KP5Tb5UEm4
— Hiroshi Sano (@hrs_sano645) April 2, 2022- poファイル作成:
pybabel init
- moファイル作成:
pybabel compile
- moファイルまで生成できた
-
この後どうするかわからん
- jinja2でrenderして多言語化されたhtmlをそれぞれ個別に生成すればいいはず。ただそれぞれの言語でrenderさせる方法がよくわかってない。
- jinja2側で用意されているi18n拡張の扱い方がわからない
-
集中力も切れる
普段座らないところで作業続行させてるけど、もう眠ってしまいそう😪 pic.twitter.com/zJP2spzRz2
— Hiroshi Sano (@hrs_sano645) April 2, 2022
今回はpybabelの基本操作?とjinja2のレンダリングのやり方を確認してましたが、レンダリングさせるスクリプトの書き方でちょっと悩んでたところで終わりです。
pybabelの操作はなんとなく大丈夫そうなので、次は翻訳元のhtmlにjinja2のgettextあり変数タグを埋め込む作業をするスクリプトも用意します。
アドバイスしていただいたpyhack勢みなさまありがとうございます!