前記事(r3 と stickleback を試してみる - セットアップ - おぎろぐはてな)の続き。
移動中の電車の中で、ボールペン片手にドキュメントを読んでみた。まだ最後まで読み終わってないので勘違いがあるかも。。
で、これってどういうものなのか
productとintlをベースに、テンプレートを管理、一括生成する仕組みで、自由度の高いローカライズ等を可能にするもの。ヘッダーとかの埋め込みも、辞書を使ったローカライズも、リアルタイムにせずに、予め生成してしまって、ファイル一杯サーバにアップしちゃったほうが早いじゃない。ってアプローチだと思います。
多言語、多地域、大小のいくつものプロダクトでサービス展開をするポータルみたいなサイト (それって、Yahoo!とかgoogleとか)では、有効だと思うのですが、個人でやってる分には、きちんと継承関係が整理されるくらいのメリットなのかも。
Yahoo!は、様々な言語でサービスされていて、国が違っても共通化されているサービスがあります。(日本のヤフーはおいといて)
で、ロケールで表示を出し分けてたりすることがあり、例えば、下のID登録画面はそんな感じに見えます。
- https://edit.yahoo.com/config/eval_register?.intl=us (アメリカ)
- https://edit.yahoo.com/config/eval_register?.intl=br (ブラジル)
- https://edit.yahoo.com/config/eval_register?.intl=tw (台湾)
- https://edit.yahoo.com/config/eval_register?.intl=jp (一応中途半端な日本語もある)
googleもそう
- http://www.google.co.jp/search?q=stickleback&hl=ja (日本語)
- http://www.google.co.jp/search?q=stickleback&hl=en (英語)
- http://www.google.co.jp/search?q=stickleback&hl=fr (フランス語)
これが、r3で言ってる "international sites" (intl)。
もう1つ、"products" は、webサイトにあたるようなので、"Yahoo! News", "Yahoo! Maps" みたいな区切りなんでしょうか。粒度は分かんないけど、そんな感じだと思います。
そして、intlとproductsはさらに他を継承するという概念があります。デモチュートリアルを読んでいくと分かるのですが、例の productでは、こんなツリー構成にしています。
generic_product--+--cookery--+--wine | +--cars
ベースのgeneric_productから、cookery(料理)、cars(車)、そしてwine(ワイン)は、cookeryを継承しています。
さらに継承の操作には "template", "translation", "page" の3つのドメインがあり、それぞれを別に継承することもできるようです。
日本に住んでると意識することがないのですが、カナダでは英語とフランス語が両方話されていて、フランス語版と英語版があったりするようです。こうなると、エリア的には北米として、アメリカを継承するけれど、言語は、フランス語だから、フランスを継承したいということも出てくるわけで、その際、translationの継承だけをfrにして、対応するといったことが可能です。
いろいろ奥が深そうだけど、他言語展開のサービスなんて自分で作ることないからなぁ。。
はじめての、かんたん r3 プロジェクト
ここからドキュメントに沿って、つたない日本語訳で進めていきます。
r3の簡単なプロジェクトを作っていきましょう。
r3は "複数の言語" の "複数のwebサイト" を管理することができます。この例では、3つの独立したプロダクト(だけれど、関連がある)を4つの言語で作成します。このプロジェクトは、以下の構成にします。
プロダクトは以下の3つ
- cookery (料理)
- wine (ワイン)
- cars (車)
そして、国 (intl)は、以下の4つ
- アメリカ (us)
- フランス語のカナダ (ca)
- フランス (fr)
- 日本 (jp)
これらのプロダクトとinternational sites (intls)は、適当に選んだわけではありません。これらは、多くの相互関係を持っています。ワインと料理の例は一般的なサイト構成に近い (一方はもう一方のサブサイトとなる)、ca (カナダ)は、言語は fr (フランス) と共通だけれど、文化の多くは us (アメリカ)と共通の部分が多いです。
逆に、車と料理は殆ど共通点が無いし、カナダと日本もそう。
3つのプロダクトと4つの言語を掛け合わせると 3 * 4 = 12 のwebサイトができます
- cookery/us
- cookery/ca
- cookery/fr
- cookery/jp
- wine/us
- wine/ca
- wine/fr
- wine/jp
- cars/us
- cars/ca
- cars/fr
- cars/jp
この時点でけっこう複雑なので、この中ではそれぞれ1ページ (page)だけ作ることにします。
各ページは、シンプルな共通の構成を共有します。こんな感じ。
container--+--header--+--core branding | | | +--site branding | +--navigation | +--content
プロジェクトの事前設定
始めに、products と intl を作成する必要があります。
products と intl は、r3の用語で "dimensions" と呼ばれるものです。r3のバージョン0.9では、もう1つのdimensionとして、"page"があります。将来的には、自分でその他のdimensionを定義することができるようになります。
。。。
時間切れ。おやすみなさい。