Mozilla 国際化と地域化ガイドライン
目次
- ガイドライン
- API レファレンスおよびモジュール定義
国際化および地域化の概観
昔々のこと、ソフトウェア開発の薄暗い揺籃期には、多くのソフトウェアは一度に一つの言語しか「話す」ことができなかった。各国・各地域には独自のバージョンが必要だったわけだ。ある場合には、国際的に重要な機能が、英語圏製品に追加導入されることもあった。また別の場合には、英語圏のバージョンと国際バージョンが完全に切り離された別個の製品になることもあった。もしかすると、基本的なコードのいくらかは共有されていたかもしれないが、多くの場合、共有されるのはその製品名くらいのものだった。この傾向は、北米やヨーロッパで開発された製品のアジア圏向けのバージョンで著しかった。いずれの場合においても、販売製品に遡及的な変更を施すにせよ、平行バージョンの開発を行うにせよ、その結果は通常、長たらしく費用ばかりがかかる製品サイクルしか生み出さなかった。
たとえソフトウェアが複数の国でも問題なく使えるような機能を持っていたとしても、その製品の適切な言語バージョンを製造するのは難しかった。なぜなら、製品のユーザーインタフェース(UI)を構成するメニューやダイアログボックス、メッセージが、(printf タイプの構文を使って)プログラムソースコードに直接書き込まれていたからだ。そうしたソースファイルをうまい具合に翻訳するというのは、多くの理由から、かなり難しく、費用がかかり、時間がかかった。そうした作業には、言語的な知識と技術的な知識の両方が必要だが、そうした知識を備えた人は多くはいない。ミスをするのは簡単だった。そして翻訳されたコードは多くの場合期待通りには機能しない。なぜならコードの著者は、UI の言語、英単語の長さや位置(これらは他の言語に翻訳されれば変わる)といったことについては単に推測するだけだったからだ。
これはまずい。
幸運にも、多くのソフトウェア開発者が、もし初めから複数のロケールによるコンピューティングで必要とされる条件を理解して製品を設計するれば、製品をより少ないコストでより早く世界市場に配布することができ、「古臭いやり方」で設計された製品よりもより多くの成功を収めることができる、ということをだんだんと理解し始めた。こうした複数ロケールに対応した製品は、「世界規模で利用できるソフトウェア」と呼ぶこともできるだろう。世界規模で利用できるソフトウェアとは、一つの国・地域だけでなく、世界的に幅広い言語や文化的な習慣、フォント、エンコーディングその他の便利な機能をサポートできるソフトウェアのことだ。さらに、世界規模で利用できる製品のユーザーインターフェースは、コアの命令コードから切り離されており、ソフトウェアを再コンパイルをすることなく翻訳できるようでなければならない。世界的に利用できるソフトウェアではユーザーインターフェースの言語について推測をしないので、翻訳されたプログラムはより頑強で、多くの「修正」や個々の言語をサポートするための特殊な拡張を必要としない。これで、翻訳されたプログラムのリリースを加速することができる。
これはいい。
Mozilla ファミリー(Navigator と Communicator)は世界的に利用できる(またそうあり続けなければならない)。各プラットフォームに向けたコアの Mozilla バイナリ実行ファイルは、北米英語圏や西ヨーロッパ、中央ヨーロッパ、中国、日本、韓国のロケールでのコンピューティングをサポートしている。ユーザーインターフェースは、リソースファイルに収められており、多くの部分でコアバイナリーから完全に切り離されている。コアコードから UI を切り離しておくことで、日本語の Web ページを閲覧するのに Mozilla の日本語版を使わなくても済むことになる。Mozilla の英語版やフランス語版、どのバージョンを使っても日本語のページを閲覧することができる(またその逆も然り)。もちろんそれに適したフォントや設定がされていることが必要だが。
これはとてもいい。
このドキュメントの残りの部分では、Mozilla を世界的に利用可能なソフトウェアプロジェクトとして維持できるような、十分な情報を提供しよう。将来の Mozilla 製品は、少なくとも、現在の国際化レベルを維持していかなければならない。我々は将来 Mozilla を拡張して、より多くの言語やエンコーディングなどの、世界的に重要な機能をサポートしたいと考えている。
これはまったくすばらしいことになるだろう。
定義
先に進む前に、ここで使われている主な専門用語やコンセプトの定義を確立しておこう:
|
国際化(Internationalization)
(または Globalization、あるいは Enabling) |
ソフトウェア製品が多様なロケールで作動するように設計・開発することを指す。このプロセスには、サポートするロケールを識別し、そのロケールをサポートする機能を盛り込み、サポートするロケールではどれもきちんと動くようなコードを書くという作業が含まれる。 |
| 地域化・ローカライゼーション(Localization) | ソフトを特定のロケールの要求に合わせることを指す。例えばユーザーインタフェースの翻訳、ドキュメント作成、パッケージ化、ダイアログボックスの位置の変更、(必要に応じて)機能のカスタマイズ、そしてそうやってできた製品の動作(最低でもオリジナルと同じ動きをするか)を保証するためのテスト、その他もろもろの作業が含まれる。 |
| 地域化度(Localizability) | あるソフトウェア製品のローカライズできる度合。地域化度の高い製品では、データとコードがしっかり分けられており、目的の言語を表示し、ローカライズされた後にも適切に動作する。 |
| i18n | 「internationalization(国際化)」を縮めて「i」+ 18 文字 +「n」としたもの。i が小文字なのは数字の 1 (いち)と区別するため。 |
| L10n | 「localization(地域化)」を縮めて「L」+ 10 文字 +「n」としたもの。L が大文字なのは数字の 1 (いち)と区別するため。 |
| L12y | 「localizability」を縮めて「L」+ 12 文字 +「y」としたもの。L が大文字なのは数字の 1 (いち)と区別するため。 |
| ロケール(Locale) | 特定の地政学的な区域で決まっている、言葉や習慣から来るきまりごと。書き言葉や日付・数字・金額の表記方法、そして文字の並び順など 。(必ずしもこれだけにとどまらない) |
| リソース(Resource) |
1.ユーザに見える部分、あるいはユーザによって変更または設定できるあらゆるプログラムの部分。 2.プログラムのデータのあらゆる断片。プログラムのコードと相対するもの。 |
| コア製品(Core product) | 言語とは無関係なソフトウェア製品の部分(英語版を含めて、ローカライズされた特定のバージョンのことではない)。ただし、時にはこの言葉は、他のローカライズド版に対する英語版製品を指すために使われることもある。 |
根拠(または「なぜ気を配る必要があるのか?」)
おそらくインターネットは、空洞になった丸太を叩いて部族の仲間たちに合図を送ることを知った名も知れない石器人以来、人類のコミュニケーションにおける最も大きな革命だろう。インターネットは、世界に散らばる人々を繋げる力を持つ世界規模の媒体だ。しかしそれには、あらゆる言語やエンコーディング、我々の異なる文化を成り立たせている習慣の寄せ集めである、混沌とした状態を適切に処理できるように通信手段が整備されていることが前提となる。単一言語しか理解しない製品を再エンジニアし、異なるロケールをサポートできるようにしようとする試みに付きまとう問題は、このドキュメントの冒頭で触れた。適切に設計されたソフトウェア、というのがその答えだ。それぞれ異なる単一言語しか理解しないアプリケーションを次から次へと繰出すことではない。
もし、言語やロケールという点から、アプリケーションが本当の意味においてある限られた対象にしか重要でない場合、国際化や地域化の問題に注意を払う必要はないかもしれない。しかし、アプリケーションが世界のどこででも役に立ち、ターゲットユーザが複数の国、地域、言語に散らばっているのなら、ユーザの手へと届きにくくするする必要がどこにあるだろう?これらのガイドラインに従えば、世界規模で優れた製品をリリースすることがはるかに簡単になるのだ。
コア製品の開発途上で近道をしたりミスを犯したりすれば、地域化作業の際に修正に時間と費用がかかることになりかねない。このような遅れや出費は、地域化されたリリースからの利益を(金銭的にも機会の損失という意味でも)削いでしまう。適切に国際化された製品なら、地域化という過程を、混乱に満ちた代償の高い「ゲーム」から油の良く効いたスムーズなマシーンへと変えてくれる。
このようなガイドラインを示すことの意義は、つまり、国際的に通用する、地域化可能な製品ができるだけ速やかにリリースできるような環境を整えるということだ。さまざまなプロジェクトで作業をする中で、次の簡単に覚えられるキャッチフレーズを頭に入れておいてほしい:
- ひとつのコードベースを全世界に
- 英語は単なる一言語でしかない
Copyright © 1998 Netscape Communications Corporation