Tech:android:apps:locale
出典: Tariki
目次 |
ロケールと言語環境
私のmagicは台湾購入である。では日本語表示・入力はどうしているのか?
実は不便はまっっったくない。
UNIXerなひとにはこれは当然のことである。WindowsMobilerなひとも、最近は香港購入端末を日本語で、なんてのは当たり前になってきた。android OSには何語版というのはない。そういえばこれUNIXマシンだった(笑)。
コンピュータとロケール
Windowsユーザなどに誤解が多いが、そもそもコンピュータをつかさどるOSには何語版というのはない。ダイアログやメッセージといった出力、それから日本(多文字言語)固有の問題として入力のinput methodには何語というのはあるだろうが、それはアプリケーションソフトの問題である。いっとくがWindowsではシェル(『エクスプローラ』)から『コントロールパネル』からすべての『アプリケーション』がOS抱き合わせでそれしか使えないからOSと思い込みやすいだけで、これらは単なるアプリケーションソフトである。OSは『Segmentation fault』とか『予期せぬエラーが』などとは言わない。男は黙ってexit(255)とかするだけで、それを『Segmentation fault』とかに通訳するのは嫁の仕事である (よくわからん)。
じゃあアプリケーションが入力・表示する言語とか、エディタやワープロ・ブラウザなんかの場合は『言葉そのものを扱う』わけだから内部で処理する文字コードとか、はたまた時差とか曜日年月日金額の表記とか挨拶するときはお辞儀するとか(関係ない)、そういったことはどうするの、というのがロケール処理である。
鯨は泳ぐから魚でしょというくらいおおざっぱに言えば、コンピュータが扱う『国』には3種類(くらい)あって
- そのコンピュータで入力・処理・出力されるのはナニ語か
- そのコンピュータを使うのはナニ人か
- そのコンピュータはどこにいるか
というくらいである。
1.はいわゆる文字コードの問題である。結論からいっちゃうと、androidではUnicodeが最初から採用されているので問題ない。ただしフォントの問題がある。このへんはUnicode反対派の私に語らせたら熱くなっちゃうのだが、まあUnicodeの利点を活かしてかしているかな、と思う。フォントなんてどうせ気に入ったのに入れ替えるのが (Windows PCでもUNIX X端末でもWindows Mobileでも) 当たり前になっているので、ほぼ表示は問題ないといえる。
入力はそれ専用のプログラムが必要であるが、androidの『とにかく独立できるものは独立』思想(?)のおかげと、数々の実力あるフリーソフトウェア作者さまのおかげでこれも、問題なく使えている。というか、携帯電話・PDAでは間違いなく世界一の環境、考えようによってはWindowsのPCより良い環境である。
2.は文化・習慣の問題である。例えば日本語では『年/月/日』と書くが、アメリカは『月/日/年』でヨーロッパは『日/月/年』である。月はアメリカヨーロッパでは名前だが日本中国は数字である。曜日は日本アメリカヨーロッパは名前だが中国では数字で、イスラム暦は13年で夏冬逆転、とか考えると、日付表示するだけでも死にそうになる。やっぱりその国専用に何とか語版OS・ソフトを作るのが正しいんだろうかと思いつめてしまう。
このへんはUNIX文化 (あとNT以降のWindowsなんかでも) では、ライブラリに吸収させて、環境変数LOCALEにてきとーに国の名前をセットしておけばライブラリが(多言語化されている場合)てきとーに変換して表示してくれる、とかいうアプローチをしている (ペンギンは泳ぐから魚でしょ、というくらい大雑把に言うとだ)。
1.と2.をまとめたものは(まあこれもUNIXのアプローチだが) localeとよばれていて、例えば『ja_JP.EUC-JP』なんてセットしておくと (まあandroidではこの不思議な記号を知らなくてもメニューから設定できるが)、『日本人が日本で使う日本語でEUC日本語漢字コードを使いたがっている』みたいな (飛び魚は飛ぶから魚くらい大雑把(略))処理をしてくれる……よう、アプリケーションに伝える。
したがって日本語で表示されるかどうかはアプリケーションソフト作者さまのご意向によるわけだが、まずHTC純正アプリとかGoogle総本山アプリなんてのは結構、多言語化されている。日本はHTCのターゲットにもなっているわけだから (NTTがOEM)、これは当たり前であろう。その国で売るから『わざわざ』日本語化する、というアプローチは古い。
フリーソフトなんかは、作者の国籍が分かって面白かったりするが、あれれと思うものがロケールを日本語にすると(変な)日本語でメッセージを吐いたりとかする。なお自国語(あとそのアプリユーザが多そうな国とか)以外にも英語ロケールのメッセージを仕込んでおくのは最低限必要と思われる。エンドユーザとしてはロシア作とかドイツ作のアプリケーションが難なく使える、という点ではよいのだが、逆に作者になったら敷居が上がるわけだよなあ。
3.は通常固定されたコンピュータではあまり問題にならない。それでも時差 (timezone) は、ハナからネット接続がふつうであったUNIXでは吸収すべく設計されている(コンピュータ内部ではUTを使って環境変数TZをセットしライブラリがローカルタイムを計算(略))。
ところがandroidは持ち歩ける。HTCウィジェットの時計なんかは(デザインのひとつは)『現在地の天気(予報)を時計の下に表示』なんてのがあるが、GPSを使って現在の緯度・経度をゲット→都市名を判別→天気サーバからダウンロード(半分はサーバの仕業であって内部処理じゃないと思うが)、なんてことをするので大変である。
フォントの日本語化
独立させました。フォント遊び参照。
日本語IM
これについては各国語IMの項を参考のこと。
日本語ロケールがないときは
ロケールの設定はSettings (設定) ツールでできる。また購入して(ROMを入れて)いの一番の表示はロケール選びのメニューである。
余談になるが、ロケールを変えるとホームラウンチャーの中のアプリケーション名まで日本語化とかされてしまう。文字を読んでいる分には分かりやすいのだが、言語によって並び順が変わるのは勘弁してほしい。
これが(Settingsのバージョンによるのだろうか?) ROM (付属のSettingsアプリ) によっては日本語が選べないことがある。例えば私の場合、台湾購入直後のHTC純正1.5は選べなかった。1.5の後発のROMや1.6系ではたいてい、NTTへのOEM化が済んでいたからか選べるようになっていたが、SuperMagicなどはTrojanになってから突然、日本語ロケールが消えたりした。
この場合でもロケールを設定すれば日本語でメッセージ類が表示されたりする (前にも書いたようにHTC/Google純正アプリはたいてい対応している)。単純に唯一ユーザのシェルの環境変数LOCALEを設定しているだけと思われるが、この種のツールはいろいろある。
ひとつはCustomLocaleで、これは好きなLOCALE文字列を作れるので、『ja_JP』をセットすればよい。
もうひとつはMoreLocale (全ての地域/言語) で、これは日本の作者さまによるようで日本語が選択メニューの中に入っている。
ところで現在、Trojanを使っているのでMoreLocaleから日本語を選んだり(まあ週替わりで英語とか中国語とかイタリア語とかも使ってみたり)しているが、みているとヘブライ語・リトアニア語・ラトビア語なんてのがある (私が好きなネパール語はなかかった。ヒンディー語があったが試しに選んでみたら目に付くところ全て英語だった(笑))。こういう地域でもHTCって展開してるんでしょうか?
