Palm Programmer's Laboratory

トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Palm OS Programmer's Companion Volume I/12-5

← 4 節に戻る ↑12 章トップへ 6 節に進む →


12-5 ロケール情報の取得

 
いくつかのアプリケーションは、現在のロケールに関する情報を必要とします。例えば、多くのアプリケーションは日付や数値を表示するための書式を知る必要があります。これらはロケールとして一部定義されています(詳細はこの章のセクション“日付”と“数値表現”で説明しています)。アプリケーションによっては、国名など他の情報を必要とするかもしれません。

多くのアプリケーションが要求する情報は、システムプリファレンス構造体に格納されており、PrefGetPreference で取得することができます。ロケール依存の設定の多くはユーザーによって変更可能なため、この方法での取得がお勧めです。アプリケーションはどのような場合でもロケールのデフォルト設定よりユーザー設定に忠実であるべきです。

システムプリファレンスに保存されておらず、ユーザーによって変更することができないようなロケール依存の設定も存在します。これらの設定は、(現在システムが使用しているロケールを含め)いくつかのロケールに関する情報を含むプライベートリソースに保存されています。例えば、ユーザーは通貨のシンボルを変更することができません。アプリケーションがこのような情報を必要とする場合、ロケールマネージャ関数 LmGetLocaleSetting を使用して取得する必要があります。ロケールマネージャは Palm OS 4.0 で追加されましたが、互換性のために対応する PalmOSGlue 関数の LmGlueGetLocaleSetting を使用することができます。リスト 12.2 に LmGlueGetLocaleSetting 関数の使い方を示します。

リスト 12.2 ロケールマネージャを使用したロケール設定の取得

LmLocaleType locale;
Char currencySymbol[kMaxCurrencySymbolLen+1];
UInt16 index;

// Find out what the current locale is.
OmGlueGetCurrentLocale(&locale);

// Find out which index in the locale resource
// contains info about that locale.
LmGlueLocaleToIndex(&locale, &index);

// Get the currency symbol stored in the locale at
// that index.
LmGlueGetLocaleSetting(index, lmChoiceCurrencySymbol,
                       currencySymbol, sizeof(currencySymbol));

表 12.2 では、どの種類のロケール情報をシステムプリファレンスから取得すべきか、またどのロケール情報をロケールリソースから取得すべきかを示しています。もちろん、別のロケールの情報を取得したい場合や現在のロケールのデフォルト設定を探している場合には、常にプリファレンスマネージャのかわりにロケールマネージャを使用することができます。

表 12.2 ロケール情報の取得

取得に使用する関数
言語コード PrefGetPreference(prefLanguage)
ロケールの説明 PrefGetPreference(prefLocale)
地域コード PrefGetPreference(prefCountry)
地域名 LmGlueGetLocaleSetting(...,lmChoiceCountryName,...)
通貨名 LmGlueGetLocaleSetting(...,lmChoiceCurrencyName,...)
通貨のシンボル LmGlueGetLocaleSetting(...,lmChoiceCurrencySymbol,...)
一意の通貨記号 LmGlueGetLocaleSetting(...,lmChoiceUniqueCurrencySymbol,...)
測量法(メートル法あるいは英国式) PrefGetPreference(prefMeasurementSystem)
数値の書式 PrefGetPreference(prefNumberFormat)
通貨表現における小数点以下の桁数 LmGlueGetLocaleSetting(...,lmChoiceCurrencyDecimalPlaces,...)
週の開始曜日 PrefGetPreference(prefWeekStartDay)
日付の書式 PrefGetPreference(prefDateFormat),
PrefGetPreference(prefLongDateFormat)
時刻の書式 PrefGetPreference(prefTimeFormat)
タイムゾーン PrefGetPreference(prefMinutesWestOfGMT) (Palm OS 4.0 未満),
PrefGetPreference(prefTimeZone) (Palm OS 4.0 以降)
夏時間 PrefGetPreference(prefDaylightSavings) (Palm OS 4.0 未満),
PrefGetPreference(prefDaylightSavingAdjustment)(Palm OS 4.0 以降)

 


← 4 節に戻る ↑12 章トップへ 6 節に進む →