unoh.github.com

I18Nって何のこと?

Tue May 09 23:14:09 -0700 2006

こんにちはジュンヤです。

良く「インターネットは世界中からアクセスできるのだから、ホームページを持つこと、あるいはブログをもつことは全世界に向けて発信することなんだ」というフレーズを聞きますが、実際にはそんなことはありませんよね。内容が日本語で書かれていれば、実質的に発信先は日本国内、あるいは世界全体としても日本語が読める人たちに限定してしまっています。

せっかく物理的な制約はなくどこの国の人たちにも届けることができるのにもったい話です。ウノウのサービスはスタートは日本からとしても、つねに海外に発展させていくことを視野にいれています。

ラボのサービスといえどもその例外ではなく、かなぶんではひらがなを学びたいという海外の方のために英語表示に切り替えられるようになっていますし、アイコンエディタもテキストはなるべく少なく、極力日本語が使われていないので、海外の人にも使えるようになっています。

このように言語や国が違っても同じ製品やサービスを使えるようにしておくことを国際化、英語では Internationalization と言います。英語の方はスペルが長く、タイプするのが面倒なので、知っている人の間では良く I18N と略して書かれることがあります。これは I で始まり N で終わり、I と N の間に18文字あることから、このように表記されます。

では I18N の一例を。かなぶんでは一度日本語表示にした人が再度訪れたときにも日本語で表示されるように、クッキーに言語の値を保存しておきそれを見るようにしています。一番最初に訪れた人の場合には、その人が使っているブラウザの言語(IEでは「ツール」>「インターネットオプション」 の「言語」で設定できます)をチェックして、日本語があれば日本語表示を、なければ英語表示する、というロジックを使ってます。以下がその部分を表す php のコードです。

if (!empty($_GET['lang'])) {
    $lang = $_GET['lang'];
} elseif (!empty($_COOKIE['kanabun_lang'])) {
    $lang = $_COOKIE['kanabun_lang'];
} elseif (ereg("ja", $_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
    $lang = "ja";
} elseif ($_SERVER['HTTP_ACCEPT_LANGUAGE'] != '') {
    $lang = "en";
} else {
    $lang = "ja";
}


インターネットで情報発信、というとき日本以外のユーザーにも少し配慮することで、思わぬところの思わぬ人があなたの情報を受け取って喜んで感謝してくれるかもしれません。