Apple Developer Connection
Advanced Search
Member Login Log In | Not a Member? Contact ADC


ウィジェットのローカライズ

ウィジェットをローカライズすれば、外国語をしゃべるユーザに対して、より安心で快適な体験を提供できます。ウィジェットが英語以外の言葉をしゃべる地域で使われる場合は、ウィジェットをローカライズするべきです。

ウィジェットのローカライズには、2つの側面があります。

本章では、ウィジェットの内容のローカライズに加え、Finderおよびウィジェットバーの中に表示されるウィジェットの名前をローカライズする方法も取り上げます。

注: Xcode Toolsをインストールしたあとハードディスクの/Developer/Examples/Dashboard/に置かれる“Hello Welt”のサンプルは、ウィジェットのローカライズのコード例を示しています。

The Hello Welt Widget

In this section:

言語プロジェクト
Dashboardがしてくれること
Dashboardに対して提供する必要があるもの
ローカライズされた文字列の例
ローカライズされたウィジェット名


言語プロジェクト

Dashboardウィジェットのローカライズについて話をする前に、Mac OS Xにおいてローカリゼーションがどのように行われるかを知っておく必要があります。Mac OS Xのほとんどのアプリケーションでは、画像、文字列、nibファイルなどのローカライズされたリソースは、Contents/Resources/の下のアプリケーションバンドルに存在します。それぞれの言語に個別にディレクトリが用意され、そのリソースの言語に基づく名前が付けられます。名前とバンドル内での位置は厳密に規定されています。Mac OS Xは、ローカライズされたものを要求されたとき、対象がその位置にあることを想定するからです。これらのフォルダは「言語プロジェクトディレクトリ」と呼ばれ、名前が必ず.lprojという拡張子で終わります。

アプリケーションを起動すると、実行可能ファイルはMac OS Xに対して、特定のローカライズされたリソースを要求します。すると、Mac OS Xは、システム環境設定に設定されている優先言語リストの最初のエントリに一致する言語プロジェクトを、アプリケーションのバンドルの中で探します。最優先の言語に対応する言語プロジェクトが見つからなければ、Mac OS Xは優先リストの次の言語に対応する言語プロジェクトを探し、以下同様に探します。この処理はほとんど自動的に行われます。つまり、アプリケーションが言語プロジェクトの実際の検索を行うことはありません。アプリケーションは、単にリソースを要求し、Mac OS Xがリソースを提供します。

言語および地域の環境設定を変更する方法の詳細については、「Language and Local Preferences」を参照してください。

Dashboardがしてくれること

Dashboardの中で動作するウィジェットは、リソースのロード時に、Mac OS Xアプリケーションと同様のプロセスを使います。コードの中でリソースのロードが発生すると、Dashboardはまずウィジェットバンドルの言語プロジェクトディレクトリの中を探します。言語プロジェクトディレクトリ内にリソースが見つかると、Dashboardはそれをウィジェットに返します。見つからなかった場合、Dashboardはシステム環境設定に設定されている優先順に従って残りの言語プロジェクトディレクトリを探します。最後に、どの言語プロジェクトにも該当するリソースが見つからなかった場合、Dashboardはバンドルのルートレベルから探索を始めます。

Dashboardは、ローカライズされたりソースを次の場合に探します。

これは、『Dashboard Tutorial』で述べているように、マークアップ、ロジック、デザインを別々のファイルに分割することをお勧めするもう1つの理由です。

Dashboardに対して提供する必要があるもの

ウィジェットのローカライズするには、Dashboardに対してローカライズしたリソースを提供します。ローカライズしたリソースとしては、ウィジェットに表示される文字列、言語や地域に応じて変わる画像、言語固有のレイアウトなどがあります。スタイルシートをHTMLファイルに含めるのではなく、ウィジェットにインポートするようにした場合は、ローカライズしたスタイルシートを提供することもできます。

ウィジェットのローカライズ対象言語ごとに、個別に言語プロジェクトディレクトリが必要です。言語プロジェクトディレクトリには、該当言語のローカライズしたリソースをすべて入れます。言語プロジェクトディレクトリはそれぞれ、ウィジェットのルートレベルにおく必要があります。Table 12に、一般的な言語と、それらに対応する言語プロジェクトディレクトリの名前を示します。

Table 12  一般的な言語と、対応する言語プロジェクトディレクトリ名

言語

言語プロジェクトディレクトリ名

中国語(簡体字)

zh_Hans.lproj

中国語(繁体字)

zh_Hant.lproj

デンマーク語

da.lproj

オランダ語

nl.lproj

英語

en.lproj

フィンランド語

fi.lproj

フランス語

fr.lproj

ドイツ語

de.lproj

イタリア語

it.lproj

日本語

ja.lproj

韓国語

ko.lproj

ノルウェー語

nb.lproj

ポルトガル語

pt.lproj

スウェーデン語

sv.lproj

スペイン語

es.lproj

上記は、可能なローカリゼーションのごく一部です。Mac OS XとDashboardは、はるかに多くの言語と地域をサポートします。『Internationalization Programming Topics』の「Language and Locale Designations」では、Mac OS Xにおけるアプリケーションのローカライズに使用する言語プロジェクトディレクトリの命名規則について解説しています。

ローカライズされた文字列の例

ウィジェットのローカライズの例として、ウィジェットのすべての文字列をローカライズしてみましょう。ローカライズする各文字列ファイルには、文字列の配列を指定します。配列の添え字には、すべてのローカライズ対象文字列ファイルで共通の変数を使います。ファイルを用意したら、そのファイルをHTMLファイルにインクルードします。以後、文字列が必要なときには、配列から取得するだけです。

この考えかたを実装するための最初のステップは、対象文字列を格納した、同じ名前のファイルを、正しい名前を与えられた各言語プロジェクトディレクトリに用意します。たとえば、各言語プロジェクトディレクトリに、LocalizedStrings.jsという名前のファイルを用意します。ドイツ語のローカリゼーションの場合、ファイルは次のようになります。

var localizedStrings = new Array;
 
localizedStrings['Hello, World!'] = 'Hallo, Welt!';
localizedStrings['Default'] = 'German';

localizedStrings配列の添え字が文字列であることに注目してください。この方法は、ローカライズされた文字列を取得するアクセサメソッドと組み合わせると便利です。

function getLocalizedString (key)
{
    try {
        var ret = localizedStrings[key];
        if (ret === undefined)
            ret = key;
        return ret;
    } catch (ex) {}
 
    return key;
}

利点は2つあります。第一に、添え字を文字列にすると覚えやすく、第二に、文字列の取得に失敗しても添え字に使用した文字列が返されます。その結果、状況にかかわらず、必ず何らかの文字列が返されることが保証されます。これは、ウィジェットをSafariでテストする場合に特に有用です。

最後に、ローカライズした文字列をウィジェットの中で使う必要があります。次のコードは、これまでに説明した考え方をすべて1つに結び付けて、文字列をウィジェットに挿入します。

function setup()
{
 
    document.getElementById('helloText').innerText = getLocalizedString('Hello, World!');
    document.getElementById('language').innerText = getLocalizedString('Default');
}

ローカライズした正しいファイルがすでに読み込まれているので、このコードはlocalizedStrings配列から“Hello, World!”に該当するローカライズされた文字列を取得し、ウィジェットのレイアウトの中に配置します。

注: “HelloWelt”サンプルコードの各言語プロジェクトディレクトリには、ローカライズされたスタイルシートも含まれています。これは、言語に応じてウィジェットのデザインを変えることを可能にします。ウィジェットのローカライズ時には、言語によって文字列の長さが異なる点を忘れずに考慮してください。

ローカライズされたウィジェット名

ウィジェットの内容のローカライズに加え、ウィジェットの名前もローカライズするべきです。ウィジェットの名前は、Finderとウィジェットバーに表示され、Info.plist情報プロパティファイルとローカライズされたInfoPlist.stringsファイル群から取得されます。

Info.plistファイルの中で、キーとしてCFBundleDisplayNameを指定し、対応する値を指定する必要があります。

<key>CFBundleDisplayName</key>
<string>Hello World</string>

この値は、ローカライズされた文字列が見つからなかったときに使用されるデフォルト値です。また、ディスク上のウィジェットの名前から、ファイル拡張子.wdgtを除いた名前でなければなりません。ウィジェットの各言語プロジェクトディレクトリの中に、InfoPlist.stringsという名前のファイルを置き、そのファイルに、次の形式でローカライズした正しい名前を指定します。

CFBundleDisplayName = "Hallo Welt";

CFBundleDisplayNameの詳細については、『Runtime Configuration Guidelines』を参照してください。





Last updated: 2006-08-07




Did this document help you?
Yes: Tell us what works for you.

It’s good, but: Report typos, inaccuracies, and so forth.

It wasn’t helpful: Tell us what would have helped.
Get information on Apple products.
Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Copyright © 2007 Apple Inc.
All rights reserved. | Terms of use | Privacy Notice