ウェブ地図のようなウェブアプリケーションや GeoJSON のような JSON データを後づけで国際化するためのアプローチの一案を整理してみた。
基本アイディア
基本アイディアはシンプルで、次のとおり。
- 1. 【データレイヤ】これまで string で表現されていた値を {"ja": "レイヤ", "en": ”layers"} といった object に置き換える。
- 【アプリレイヤ】上記の値を利用するときに、適切な言語の値を取り出すようにする。
データレイヤの詳細
データレイヤでの object の書き方は、JSON-LD の Language Maps と同じである。
つまり、キーはBCP 47(言語タグ) を使うということだ。日本の場合の現状では、ja と en を使うことが多いことになると思う。
適用例
navigator.language によって表示を切り替えるウェブアプリの例
Simple i18n with Leafletは、上記 Language Map を引数として渡した時に navigator.language をキーとして string を返す function である _ を使って、ブラウザの言語設定によって右下のテキストを日本語と英語の間で切り替える。→ 切り替えに成功していることを示すスクリーンショット
function _ は、上記サンプルでは下記のようなナイーブな実装になっているが、実用的には、クロスブラウザ対応や、引数に string が渡された時はそのまま返す処理等を入れるべきと考える。
var _ = function(o) {
return o[navigator.language.substr(0, 2)];
}
適用が考えられる例
gsimaps の多言語対応
例えば、gsimaps.js のグローバル変数 CONFIG の設定 を次のように書き換えることで、gsimaps の多言語対応を進めることが可能となる可能性がある。
CONFIG.MAPMENU = {
title : {'ja': '情報', 'en': 'Layers'}
};
GeoJSON や GeoJSON ベクトルタイルの多言語対応
これらについては、まだあまり具体的には考えてこられていなかったが、適宜 string を Language Map に書き換えていく手法により、整理された方法かつ漸進的に修正することが可能になると思う。