OS Xのローカライズ
皆さんがお手持ちのMacのホームフォルダ内にある「書類」フォルダのファイルシステム上の名前は「Documents」ですが、ファインダに表示される名称はユーザの使用する言語ごとに異なります。日本語の場合は「書類」と表示し、ドイツ語なら「Dokumente」と表示されます。もちろん、そのほかの言語についても同様です。
英語を母国語としない人にとっては、英語で「Documents」と書いてあっても、それが主に文書ファイルを保管するフォルダだとすぐにはわかりません。そこで、利用する言語ごとに表示を変え、利用者にわかりやすくしているのです。
こうした、ユーザの地域や言語に応じて表示や操作性を変えて利便性を向上させることを「ローカライズ(localize)」と呼びます。たとえば時間や通貨の表記は地域や言語で異なります。英国なら英国標準時、日本なら日本時間に表示するよう「ローカライズ」されるわけです。OS Xでは、フォルダの表示もローカライズできます。今回は、この「フォルダ名のローカライズ」を解説したいと思います。
なお、本稿ではファイルシステムに記載されている本来のフォルダ名を「フォルダ名」、「書類」のように言語ごとに表示される名前を「表示名(DisplayName)」と呼んで区別します。
システム標準での表示名の場合
冒頭に挙げた「Documents」と「書類」のように、特定の名前のフォルダ名については、OS Xにより言語ごとに決まった表示名があらかじめ用意されており、ローカライズされた表示名で記されています。
この、システム標準の表示名を使うには2つの条件があります。1つは、OSが決めたファイル名であること。「Applications」や「Library」「Documents」などがシステムで決まっているフォルダ名となります(下表)。
もう1つは、そのフォルダの直下に、「.localized」というファイルがあることです。このファイルは普段ファインダからは見えない「隠しファイル」になっています。たとえフォルダ名が「Documents」でも、「.localized」ファイルを作らない限りは勝手に「書類」と表示されません。
逆に、ユーザのホームフォルダにある「Documents」フォルダなどには最初から「.localized」ファイルがありますが、これを消してしまえば表示名ではなく、フォルダ名で表示されるようになります。
特定フォルダの表示名の場合
VMウェア社の仮想化ソフト「VMウェア・フュージョン(VMWare Fusion)」をインストールしていると、「書類」フォルダに「仮想マシン」と表示されるフォルダが作られます。この「仮想マシン」も実は言語ごとに異なり、英語では「Virtual Machines」と表示されます。
もちろん「Virtual Machines」はシステム標準でローカライズされるフォルダ名には含まれません。OS Xではソフトウェアの作成者やシステムの管理者の利便性を考え、任意のフォルダにローカライズされた表示名を用意できるようになっています。
まず、表示名を変えたいフォルダには拡張子「.localized」を付けます。先述の「Virtual Machines」と表示されるフォルダはファイルシステム上のフォルダ名としては「Virtual Machines.localized」となっています。
次に、対象のフォルダの下に「.localized」という「フォルダ」を作成します。そして「.localized」フォルダの中に「fr.strings」「ja.strings」など、言語ごとにファイルを作成、表示名を記載していきます。
なお、「.localzied」フォルダがなかったり、フォルダの中に自身の言語に対応する拡張子「strings」のファイルがないなどで表示名が取れない場合は、フォルダ名から拡張子「.localized」を外した名前で表示されます。
この方法を使えば、言語ごとに好きな表示名を用意することができます。
他のOSではどうなる?
このフォルダ名のローカライズは、OS X 10・2ジャガーにて導入されました。ココアやOS Xの持つローカライズ機能のほとんどは、OS Xの元となった「NeXTSTEP」から受け継いだものなのですが、そのNeXTSTEPでもフォルダ名はフォルダ名のままで表示されていました。フォルダ名のローカライズ機能はかなり先進的なものだったのです。
OS X 以前のMac OSではフォルダ名そのものを日本語に書き換えていました。英語のMac OSでは「System」というフォルダ名が、日本語のMac OSでは「システム」というフォルダ名になっているのです。表示としてはOS Xと同じかもしれませんが、フォルダ名そのものが異なるので、言語が違うと意図しない動作をする恐れがありました。
この問題に対処するため、Mac OSではフォルダごとにフォルダ名を取得するAPI(FindFolder)が用意されていました。しかし、システムフォルダやデスクトップフォルダなど特定のフォルダでしか有効ではなく、APIを使っていないソフトウェアでは言語が変わると正しく動かない、なんてことも多々ありました。
ウィンドウズでは、XPまではローカライズされたフォルダ名はありませんでした。日本語版のウィンドウズでもソフトウェアは「Program Files」に格納され、デスクトップは「Desktop」フォルダでした。
ただ、ウィンドウズの場合、ソフトウェアはスタートメニューから起動するので「Program Files」フォルダを参照することが極めて少なかったり、OS X以上にデスクトップに何でもファイルを置く文化だったこともあり、そこまで困ることはありませんでした。周りに利用者も多くて「Documents」ぐらいなら慣れてしまっていた、というのもあるかもしれません。
ウィンドウズ・ビスタからはOS Xに近いフォルダのローカライズ機能が入り、「Documents」フォルダが「ドキュメント」と表示されるようになりました。ウィンドウズでのフォルダ名のローカライズは、「desktop.ini」というOSによって保護された隠しファイルで設定されています。
特定フォルダの表示名の例
VMウェア・フュージョンが作成する「仮想マシン」フォルダは実際には「Virtual Machines.localized」というフォルダ名です。拡張子「.localized」がついたフォルダでは、そのフォルダ内の「.localized」フォルダ以下の各言語ごとの「strings」ファイルを読み、そこに記載されている名称で表示されるようになっています。なお、「en」は英語、「ja」は日本語、「de」はドイツ語の略です。
【L10N】
L10Nは「Localization(現地語化)」の略で、今回説明したローカライズを指します。その地域の人が使いやすいように表示や機能を調整する、という意味です。時刻や年号を現地時間で表示したり、メニューやメッセージをその国の言葉で記載することから、今回のようなフォルダの表示名の変更まで、さまざまなことが対象になります。昔のソフトウェアやOSは、英語版を作ってから改造して各国語版を作成していました。I18NせずにL10Nだけをしていたのです。OS Xは当初からI18Nが前提で、言語ごとのリソースを追加することでL10Nができるような仕組みになっています。
【I18N】
I18Nは「Internationalization(国際化)」の略で、あるソフトウェアが特定の言語に依存せず、どの言語でも正しく動作するように作られていることを指します。昔は英語でしか動かない、8bitの文字コードに依存している、などが当たり前にあったので、I18Nは重要な概念でした。しかし、今ではOSの提供するフレームワークを適切に利用すればI18Nは成り立つようになってきています。なお、I18Nという表記は、最初のIからNまでの間に18文字あることからきています。欧米人でも長い単語は略したくなるようです。
【非表示】
UNIXの伝統を継いでいるOS Xでは、ファイル名の先頭が「.(ドット)」で始まるファイルは、ファインダなどでは表示されないようになっています。これを「隠しファイル」と呼んでいます。
【Win】
ビスタ以降のウィンドウズでも、OS Xと同じくI18Nされた共通システムに各国語のランゲージパックを追加することで、L10Nするようになっています。
文●千種菊理
本職はエンタープライズ系技術職だが、一応アップル系開発者でもあり、二足の草鞋。もっとも、近年は若手の育成や技術支援、調整ごとに追い回されコードを書く暇もなく、一体何が本業やら…。