手軽に多言語対応したい

YAPC::Asiaも終わったことですし(?)久々に

時間と工数が少ない中で、多言語対応する必要に迫られました。

Locale::Maketext::Lexiconあたりを使ってテンプレート側でフィルタかけて差し替えるってのが正攻法ではある

ただ、これだと

  • テンプレートを直さないとならないので、作業現場のユースケースに合っていない
  • PMやマークアップエンジニアに仕組みを周知させる時間が厳しい
  • アプリケーションの機能開発が絶賛継続中なので、余計な事はしたくない

とか諸々問題があって、考え悩んでたのですが、天啓をえました

Plack::MiddleWareを利用してみる

天啓というほどではないのですが、出口の所で全部差し替えればいいんじゃねと思いたって、 こんなモジュールを用意しました

https://gist.github.com/takihito/27d6fca91cb24be5e396

このモジュールをbuilderで以下のように読み込んで上げれば表示される HTMLタグ内の日本語が差し替わるようになる算段

builder {
    enable "Plack::Middleware::Ja2Ko";

今回は一部特定のページなので、パフォーマンスを気にしなくて良いのもあります。 Project::Ja2Ko内のTRANSLATION_LISTを別ファイル(CSV)で定義して読み込めば運用としても理解しやすいレベルになるんじゃないかと思っています

アプリケーション本体はガンガン開発してもらって、それとは関係なしに実装したほうが作業が被らない。

Plackで呼び出せるなら他のアプリケーションにも多言語フィルタかけれるんじゃないかと思った次第

追記

Plack::Middleware::Static::I18N( Plack::Middleware::I18N ? ) ってのがあるみたいですが、(放置されてるのかな) I18N宣言するモチベーションも時間ないので今回はここまで。