TodoList: 国際化を考える2007年01月04日 11時51分20秒

TodoList の国際化をしたいと思っている。

表示画面の国際化なら、いくつかのプラグインが出ているようだ。つまり、app/views 以下の表示を設定言語によって変える事だ。しかし、ここでやりたいのはデータの国際化の方だ。

具体的には以下のようになる。今、TodoList には「Create TodoList」が登録されている。これを、日本語で「TodoList を作る」と入れれば、日本語が読める人はいいが、それ以外の人は困ってしまう。だからと言って、安直に todos テーブルに日本語と英語表記を追加しても、他の言語が追加できなくなる。

レコードの内容を自動翻訳しても面白いかも知れないが、自動翻訳の性能では使い物にならないので、却下だ。

現在、考えている用途としては次の様な場面だ。Todo を所属団体 (Organization) に公開できる機能を付けた。例えば、外注だとで出したときには、外注先の組織 (Organization) でも、外注の案件だけは見られる様にしたいのだ。もし、他言語圏の組織 (Organizaion) に外注した時には、その人達も読めるようにしなくてはならない。

そこで、同一の Todo に複数の言語で書けるようにする必要がある。わざわざ、他言語圏の組織 (Organization) に外注するわけだから、自分でその言語用の Todo は入れる事が出来るのを前提とする。つまり、システムは同一案件をうまくまとめて表示できるようにすればいい。

以下の作業を予定している。

  1. まず、言語を入れる languages テーブルを作る。
  2. 次に各ユーザ (User) に初期言語設定を設ける。
これは、http://localhost:3000/todo/new で新しい Todo を作るときに使う予定だ。
  1. todos テーブルに言語 id を追加する。
これで、各 Todo に言語属性を持たせられる。Rails では utf-8 で処理されるから、無くても困らないかも知れない。
  1. todos テーブル内で、一対多の関係を作る。
具体的には todo has many todos; todo belongs to primary todo だ。 まず、最初に作られた Todo を親とし、それに付随する他言語の Todo を入れられるようにする。他言語用のレコードは親レコードの id を持つことによって、他言語同一レコードを区別出来るようにする。
  1. その他
幾つかの view を変更しなければいけないだろうが、根本的な変更はこれで大丈夫だろう。あとは、必要になり次第対応する予定だ。

前回次回