国際化プログラミングの常識:プログラマーの常識をJavaで身につける(5)(1/3 ページ)
本連載は、Java言語やその文法は一通り理解しているが、「プログラマー」としては初心者、という方を対象とします。Javaコアパッケージを掘り下げることにより「プログラマーの常識」を身に付けられるように話を進めていきます。今回は、「国際化プログラミング」について。国際化なんて自分には関係ないと思っていませんか? 実は身近な存在で、プログラムの基本となる知識も含んでいます。
今回は、「国際化プログラミング」に関する常識をJavaで身に付けていきます。国際化プログラミングと聞いて、いまひとつピンと来ない人もいるでしょう。実際には、国際化プログラミングは私たちの身近にあるものなのです。
そのうえ、国際化プログラミングの中に、ソフトウェアを開発するための基本的なノウハウの多くも含まれています。幸いJava言語では、国際化プログラミングのためのAPIが一通り提供されています。Java言語のAPIを通じて、国際化プログラミングを学び、プログラマーの常識を身に付けていきましょう。
実は、身近なところにある国際化対応プログラム
私たちの身近にある国際化対応されたプログラムとしてEclipseを取り上げてみましょう。
Javaプログラマーの多くが利用している Eclipseは、1つのプログラムで多くの国・地域・言語による利用に対応しています。Eclipseの国際化対応を確認してみましょう。
デフォルト設定でEclipseを起動してみるとしてみると
まず、通常の設定で Eclipseを起動してみます。
メニューなどが日本語で表示されていますね。
Eclipseを「英語―米国」と設定して起動するには?するには?
次に、Eclipseを「英語―米国」と設定を変更して起動してみましょう。Eclipseがインストールされたフォルダにeclipse.iniというファイルがありますので、以下の手順で編集してください。
1.eclipse.iniのバックアップを取る
2.eclipse.iniファイルをメモ帳で下記のように編集(改行コードの処理の都合、以下のように表示される)
3.編集後の状態(テキスト版)
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
さて、これでEclipseを起動してみます。すると、英語メニューに切り替わっています。
一部、「階層」などの用語が日本語のまま残っていますが、該当のタブをクリックすると、ちゃんと英語に切り替わると思います。
Eclipseを「フランス語―フランス」と設定して起動
次に、フランス語で起動してみます。英語のときと同様に、今度は以下のように設定します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
すると、フランス語メニューに切り替わっています。
Eclipseを言語を切りかえて起動してみましたが、いかがでしたか? さながら、デスクトップ上の仮想世界旅行ですね。ここで確認したかったことは、「単一のプログラムで多くの地域・言語に対応できるものが存在する」ということです。これは、国際化プログラミングという取り組みの結果、初めて実現できていることなのです。
注意!!
実験が終わったら、eclipse.iniを変更前の状態に戻してください。
起動オプションによって言語や地域を切り替える
では、言語を切り替えてEclipseを起動した際に設定した-Duser.languageなどの記述について簡単に説明しておきます。
まず、eclipse.iniファイルの記述内容は、Eclipseを経由して最終的には、Java実行環境に引き継がれます。
-Dなどと記述されている内容は、Javaアプリケーション起動ツール(javaコマンド)のオプション指定方法と一致しています。どのように記載するかについての詳細は、「java - Java アプリケーション起動ツール(Windows版)」の「システムプロパティの値を設定」から読み取れます。
そして、-Dオプションで指定された値は、システムプロパティとしてJavaへと引き継がれます。プログラミング言語上では、java.lang.System#getProperties()などから参照できます。
getProperties()にuser.languageについて記載されていませんが、これは別途「Java国際化FAQ」というサン・マイクロシステムズから提供されているドキュメントに記載があります。
このように、-Dオプションで指定された値はJavaのデフォルトロケール(既定の地域・言語)として、Java言語のいろいろなAPIへと作用するようになっていたのです。このように、いくつもの層を経て、これら言語の切り替えが実現されていたのです。
ISOの言語コードと国コード
-Duser.languageで指定したen、frは「言語」を表す値です。また、-Duser.countryで指定したUS、FRは「国」を表す値です。
Javaにおいてどのような値を設定するのかについては、java.util.Localeクラスのドキュメントに説明が記載されています(参考として、旧バージョンの1.4.2のドキュメントへのリンク)。
これら言語や国を表す文字列は、Javaで利用できるものであるとともに、国際的な標準(ISO)として定められているものでもあります。関連するISOの標準については、Localeクラスのドキュメント上に記載のある下記のリンク先の記述が、全体像を把握しやすいと思います。
Copyright © ITmedia, Inc. All Rights Reserved.