Palm Programmer's Laboratory
Palm OS Programmer's Companion Volume I/12-5
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 以降) |