Palm Programmer's Laboratory
Palm OS Programmer's API Reference/41
この章の索引
41 ロケール マネージャ
この章では、ヘッダファイル LocaleMgr.h で定義されているロケール マネージャ API について説明します。以下の内容について説明します。
ロケール マネージャについての更なる情報は、Palm OS Programmer's Companion, vol. I の「アプリケーションのローカライズ」を参照してください。
ロケール マネージャ データ タイプ ^TOP^
CountryType Typedef ^TOP^
目的
CountryType はカントリー コードを定義します。PalmLocale.h の中のカントリー定数が CountryType 変数のためのとり得る値を定義しています。
Prototype
typedef UInt8 CountryType;
互換性
バージョン 4.0 より前では、CountryType は 33ヶ国のみを定義していた Preference.h の中の列挙体でした。CountryType の Palm OS 4.0 定義はそれ以前の定義と互換性があります。
LanguageType Typedef ^TOP^
目的
LanguageType は言語コードを定義します。PalmLocale.h の中の言語定数は LanguageType 変数のためにとり得る値を定義しています。
Prototype
typedef UInt8 LanguageType;
互換性
LanguageType 定義は Palm OS 3.5 で追加されました。バージョン 4.0 より前では、LanguageType は 8 つのみの言語コードを定義していた Preference.h の中の列挙体でした。LanguageType の Palm OS 4.0 定義はそれ以前の定義と互換性があります。
LmLocaleType 構造体 ^TOP^
目的
LmLocaleType 構造体はロケールの中で使用されるカントリーと言語を定義します。
Prototype
struct _LmLocaleType { UInt16 language; UInt16 country; }; typedef struct _LmLocaleType LmLocaleType;
フィールド
- language
- 言語定数の 1 つです。この値は現在のロケールの中で話されている言語を指定します。
- country
- カントリー定数の 1 つです。この値は方言を指定する助けとなるロケールのカントリーを指定します。例えば、lEnglish の言語は、カントリーが cUnitedKingdom の場合と cUnitedStates の場合では、異なる方言を指定します。
language と country フィールドは、LanguageType と CountryType のである代わりに、UInt16 型であることに注意してください。
互換性
LmLocaleType は、4.0 New Feature Set が満たされる場合にのみ、定義されます。それは Palm OS 3.5 で導入された OmLocaleType を抑制し、LmLocaleType は OmLocaleType とビット-互換性があります。
NumberFormatType 列挙体 ^TOP^
目的
NumberFormatType 列挙体は、数がどのようにフォーマットされるのかを指定します。NumberFormatType 値を LocGetNumberSeparators()|Palm OS Programmer's API Reference/60 に渡すことができ、千ごとと小数のための適切な区切り文字を受け取ることができます。
Prototype
typedef enum { nfCommaPeriod, nfPeriodComma, nfSpaceComma, nfApostrophePeriod, nfApostropheComma } NumberFormatType;
定数
- nfCommaPeriod
- 千ごとの区切りとしてカンマ(,)を、小数の区切りとしてピリオド(.)を使用します。
- nfPeriodComma
- 千ごとの区切りとしてピリオド(.)を、小数の区切りとしてカンマ(,)を使用します。
- nfSpaceComma
- 千ごとの区切りとしてスペース( )を、小数の区切りとしてカンマ(,)を使用します。
- nfApostrophPeriod
- 千ごとの区切りとしてアポストロフィ(')を、小数の区切りとしてピリオド(.)を使用します。
- nfApostrophComma
- 千ごとの区切りとしてアポストロフィ(')を、小数の区切りとしてカンマ(,)を使用します。
ロケール マネージャ定数 ^TOP^
文字エンコード定数 ^TOP^
PalmLocal.h ファイルは、CharEncodingType|Palm OS Programmer's API Reference/55 変数の値として使用される、いくつかの文字エンコード定数を定義します。文字エンコード定数は一般に以下のフォーマットに従います:
charEncodingName
Name には、文字エンコードの名前が入ります。
以下の表は文字エンコード定数の例を示してます。完全なリストは、PalmLocale.h ファイルを参照してください。
定数 | 説明 |
---|---|
charEncodingUnknown | Palm OS のこのバージョンでは未知です。 |
charEncodingAscii | ISO 646-1991 |
charEncodingISO8859_1 | ISO 8859 パート 1(ISO ラテン 1 としても知られています)。このエンコードは一般にローマ字のために使用されます。 |
charEncodingPalmLatin | Microsoft Windows コード ページ 1252 の Palm OS バージョンです。このエンコードは、Palm 指定文字がコントロール レンジに追加された状態で、コード ページ 1252 と等価です。 |
charEncodingShiftJIS | シングル-バイト片仮名(訳者注: 半角かな文字)を持つ 0208-1990 のためのエンコードです。このエンコードは一般に日本語のアルファベットのために使用されます。 |
charEncodingPalmSJIS | Microsoft Windows コード ページ 932 の Palm OS バージョンです。このエンコードは、Palm 指定文字がコントロール レンジに追加され、円シンボルがロケーション 0x5c の逆スラッシュ文字の代わりにある状態で、コード ページ 932 と等価です。 |
charEncodingCP1252 | Microsoft Windows の ISO 8859 パート 1 への拡張です。 |
charEncodingCP932 | Microsoft Windows の Shift JIS への拡張です。 |
charEncodingUTF8 | Unicode のための 8-ビットの安全なエンコードです。 |
カントリー定数 ^TOP^
PalmLocale.h ファイルは、CountryType 変数の値として使用される、いくつかのカントリー定数を定義します。カントリー タイプ定数は以下のフォーマットに従います:
cCountryName
CountryName にはカントリーの名前が入ります。現在のところ 239 のカントリーを定義している ISO 3166 標準の中で識別される各カントリーのための 1 つの定数があります。
以下の表は、カントリー タイプ定数の例を示しています。完全なリストは、PalmLocale.h ファイルを参照してください。
定数 | 説明 |
---|---|
cAustralia | オーストラリア |
cAustria | オーストリア |
cBelgium | ベルギー |
言語定数 ^TOP^
PalmLocale.h ファイルは、LanguageType 変数の値として使用される、いくつかの言語定数を定義します。言語タイプ定数は以下のフォーマットに従います:
lLanguageName
LanguageName には言語の名前が入ります。現在のところ 137 の言語を定義している ISO 639 標準の中で識別される各言語のための 1 つの定数があります。
以下の表は、言語タイプ定数の例を示しています。完全なリストは、PalmLocale.h ファイルを参照してください。
定数 | 説明 |
---|---|
lEnglish | 英語 |
lFrench | フランス語 |
lGerman | ドイツ語 |
ロケール マネージャ サイズ定数 ^TOP^
ロケール マネージャ サイズ定数を、あるロケール設定のために割り当てられる文字列のサイズを決定するために、使用することができます。
NOTE: 以下の表の中の定数は終端 null 文字をカウントしていません。それゆえ、例えばカントリー命を保持するにはサイズ kMaxCountryNameLen+1 の文字列を割り当てる必要があります。
定数 | 値 | 説明 |
---|---|---|
kMaxCountryNameLen | 19 | カントリー名文字列の最大長 |
kMaxCurrencyNameLen | 19 | 通貨名文字列の最大長 |
kMaxCurrencySymbolNameLen | 5 | 通貨シンボル文字列の最大長 |
ロケール マネージャ関数 ^TOP^
LmGetLocaleSetting 関数 ^TOP^
目的
与えられたロケールのために要求される設定を返します。
宣言されている場所
LocaleMgr.h
Prototype
Err LmGetLocaleSetting ( UInt16 iLocaleIndex, LmLocaleSettingChoice iChoice, void *oValue, UInt16 iValueSize )
パラメータ
- → iLocaleIndex
- ロケールのインデックス。このロケールの設定を取得します。
- → iChoice
- 取得したい設定。これは lmChoice... の形をした定数の 1 つです。とり得る値のリストは、表 41.1 を参照してください。
- ← oValue
- iChoice 設定の値。表 41.1 で示すように、このバッファのサイズは iChoice の値に依存します。
- → iValueSize
- oValue バッファのサイズ。
返り値
以下の値の 1 つを返します。
- errNone
- 成功
- lmErrBadLocaleIndex
- iLocaleIndex は範囲外です。
- lmErrSettingDataOverflow
- oValue バッファは、設定の値を保持するには小さすぎます。
- lmErrBadLocaleSettingChoice
- iChoice パラメータは未知またはサポートされない値を保持しています。
コメント
この関数はプライベート ロケール システム リソースにアクセスして、oValue パラメータの中に要求された情報を返します。oValue パラメータのサイズとタイプは取得したい設定に依存します。表 41.1 は、とり得る設定と各設定に対して oValue で返されるデータのタイプをリストして説明しています。固定サイズの値に対しては、oValue バッファのサイズが正確に返り値のサイズであることを確認しくください。そのサイズを返り値のサイズよりも大きくも小さくもすべきではありません。
この関数はロケールのデフォルトの設定を返します。ユーザは多くのロケールの設定を設定アプリケーションを使ってオーバライドすることができます。アプリケーションは、常にロケールのデフォルトよりもユーザの設定のほうを尊重すべきです。このため、対応するシステム設定が利用可能な場合は、そちらのほうをチェックすることが推奨されます(PrefGetPreference()|Palm OS Programmer's API Reference/48 を使って)。ユーザがオーバライドできない値(カントリー名や通貨のシンボルなど)を取得する場合、または、現在のロケールではなく他のロケールについての情報を取得する場合にのみ、LmGetLocaleSetting を使用してください。
表 41.1 LmGetLocaleSetting の選択とサイズ
lmChoice... | oValue データ タイプ | 説明 |
---|---|---|
CountryName | サイズ kMaxCountryNameLen+1 バイトの文字列バッファ | ロケールのカントリーの名前 |
CurrencyName | サイズ kMaxCurrencyNameLen+1 バイトの文字列バッファ | このロケールで使用される通貨の名前 |
CurrencySymbol | サイズ kMaxCurrencySymbolLen+1 バイトの文字列バッファ | このロケールの貨幣の値を示すために使用されるシンボル |
CurrencyDecimalPalces | UInt16 | 通常、貨幣の値が与えられる十進数の桁数 |
DateFormat | DateFormatType | このロケールで使用されるショート日付フォーマット。例えば: 95/12/31 |
InboundDefaultVObjectEncoding | CharEncodingType | CHARSET プロパティを持たない vObject のためのインバウンド エンコード(原文: inbound encoding) |
Locale | LmLocaleType | ロケールの言語とカントリー コードを保持している構造体 |
LongDateFormat | DateFormatType | このロケールで使用されるロング日付フォーマット。例えば: 31 Dec 1995 |
NumberFormat | NumberFormatType | このロケールの千ごとの区切り文字と小数点に関係を持つ数のために使用されるフォーマット |
OutboundVObjectEncoding | CharEncodingType | vObject のためのアウトバウンド エンコード |
PrimaryEmailEncoding | CharEncodingType | Email で最初に試みられるエンコード |
PrimarySMSEncoding | CharEncodingType | SMS で最初に試みられるエンコード |
SecondaryEmailEncoding | CharEncodingType | Email で 2 番目に試みられるエンコード |
SecondarySMSEncoding | CharEncodingType | SMS で 2 番目に試みられるエンコード |
SupportsLunarCalendar | Boolean | ロケールは中国の陰暦をサポートするか? |
TimeFormat | TimeFormatType|Palm OS Programmer's API Reference/58 | このロケールでの時間の値のために使用されるフォーマット |
UniqueCurrencySymbol | サイズ kMaxCurrencySymbolLen+1 バイトの文字列バッファ | 貨幣の値のための固有のシンボル 例えば、シンボル $ は US ドルとポルトガルのエスクードの両方で使用されます。US ドルの固有の貨幣シンボルは US$ です。 |
WeekStartDay | UInt16 | このロケールでの週の最初の曜日(日曜日または月曜日)。週の曜日は日曜日 = 0 から始まる 0 から 6 までの番号を付けられます。 |
互換性
4.0 New Feature Set が満たされる場合にのみ、実装されます。より前のバージョンの Palm OS で実行されることを意図したコードの中でこの関数を使用するには、PalmOSGlue ライブラリにリンクをはり、LmGlueGetLocaleSetting を呼び出します。更なる情報は、第 80 章 「Palm OSGlue ライブラリ」?を参照してください。
参照
LmGetNumLocales(), LmLocaleToIndex()
LmGetNumLocales 関数 ^TOP^
目的
既知のロケールの数を返します。
宣言されている場所
LocaleMgr.h
Prototype
UInt16 LmGetNumLocales ( void )
パラメータ
ありません。
返り値
システム リソースが定義するロケールの数を返します。
コメント
この関数を、LmGetLocaleSetting() に渡すことができるインデックスの値のとり得る範囲を取得するために、使用します。LmGetNumLocales が 3 を返す場合、LmGetLocaleSetting は 0 から 2 の範囲のインデックスを受け付けます。
この関数は ROM が持っているロケール情報のロケール数のみを返します。定義される可能性のあるロケールの数を返すわけではありません。例えば、システム リソースが現在のところ、言語が lHebrew でカントリーが cIsrael のロケール、それは有効なロケールではありますが、を保持していません。
互換性
4.0 New Feature Set が満たされる場合にのみ、実装されます。より前のバージョンの Palm OS で実行されることを意図したコードの中でこの関数を使用するには、PalmOSGlue ライブラリにリンクをはり、LmGlueGetNumLocales を呼び出します。更なる情報は、第 80 章 「Palm OSGlue ライブラリ」?を参照してください。
LmLocaleToIndex 関数 ^TOP^
目的
LmLocaleType をインデックスに変換します。
宣言されている場所
LocaleMgr.h
Prototype
Err LmLocaleToIndex ( const LmLocaleType *iLocale, UInt16 *oLocaleIndex )
パラメータ
- → iLocale
- 変換するロケール
- ← oLocaleIndex
- 返り時の iLocale のインデックス
返り値
成功時には errNone を返します。ロケールを見つけることができなかった場合は、lmErrUnknownLocale を返します。
コメント
この関数を、LmGetLocaleSetting() に渡す有効なインデックスことができるインデックスの値を取得するために、使用します。例えば、現在のシステムで使用されているロケールを取得するためにオーバレイ マネージャ ルーチン OmGetSystemLocale() を使用し、それから、そのロケールのインデックスを取得するためにそのロケールをこの関数に渡すことがあるかもしれません。
LmLocaleType locale; Char oValue[kMaxCurrencySymbolLen+1]; UInt16 index; OmGetSystemLocale(&locale); LmLocaleToIndex(&locale, &index); LmGetLocaleSetting(index, lmChoiceCurrencySymbol, oValue, sizeof(oValue));
iLocale に渡される LmLocaleType にはワイルドカードとして lmAnyCountry または lmAnyLanguage を使用することができます。例えば、カントリーが lmAnyCount である場合、LmLocaleIndex はその言語に一致する最初のロケールのインデックスを返します。
互換性
4.0 New Feature Set が満たされる場合にのみ、実装されます。より前のバージョンの Palm OS で実行されることを意図したコードの中でこの関数を使用するには、PalmOSGlue ライブラリにリンクをはり、LmGlueLocaleToIndex を呼び出します。更なる情報は、第 80 章 「Palm OSGlue ライブラリ」?を参照してください。