プロが教えるわが家の防犯対策術!

GetLocaleInfoでロケール情報が取れますが、
ここから、言語とコードページを識別したいのですが
たとえば、中国語(繁体字)、中国語(簡体字)、韓国語、
タイ語、英語といった単位で識別したいのですが
LOCALE_SLANGUAGEなどで、言語を取ろうとすると、
同じ中国語(繁体字)でも台湾と香港が別言語として
識別されたりして、細かすぎて使えず
かといって、ANSIコードページで識別しようとすると
西欧言語がすべて1251となって英語とフランス語などの識別が
できません。
自分で、ロケールID<->自分で作った言語識別コードの
変換テーブルを作成すればできる気もしますが
すでに世の中に出回っているロジックがあれば
それを使いたいと思います。

なにか、よい方法をご存知ないでしょうか?

A 回答 (2件)

> LOCALE_SLANGUAGEなどで、言語を取ろうとすると、


> 同じ中国語(繁体字)でも台湾と香港が別言語として
> 識別されたりして、細かすぎて使えず

> 中国語の簡体字と繁体字 (中略) などの言葉は同じだが、
> システム上、違う文字表示を使っている場合は、
> システム的には、別の言語としてみなしたい

一瞬,当初の要求と正反対のような気がして混乱しましたが,
元の質問をよく読むと確かに

> 中国語(繁体字)、中国語(簡体字)
> (中略) といった単位で識別したい

となってますね.(^^;

言語と文字集合を一緒くたに扱おうとするからややこしくなるんだと思います.
言語は言語 ID (または primary language ID) で,
文字集合はコードページ (LOCALE_IDEFAULTANSICODEPAGE) で
識別すればいいんじゃないでしょうか.


●中国語の場合
 LOCALE_SLANGUAGE: "中国語 (中国)" (8)
 LOCALE_ILANGUAGE: 0x0804 (LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED)
 LOCALE_IDEFAULTANSICODEPAGE: 936 (ANSI/OEM - Simplified Chinese (GBK))

 LOCALE_SLANGUAGE: "中国語 (台湾)" (8)
 LOCALE_ILANGUAGE: 0x0404 (LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL)
 LOCALE_IDEFAULTANSICODEPAGE: 950 (ANSI/OEM - Traditional Chinese (Big5))

 LOCALE_SLANGUAGE: "中国語 (香港)" (8)
 LOCALE_ILANGUAGE: 0x0C04 (LANG_CHINESE, SUBLANG_CHINESE_HONGKONG)
 LOCALE_IDEFAULTANSICODEPAGE: 950 (ANSI/OEM - Traditional Chinese (Big5))

●アゼルバイジャン語の場合
 LOCALE_SLANGUAGE: "アゼルバイジャン語 (ラテン)" (15)
 LOCALE_ILANGUAGE: 0x042C (LANG_AZERI, SUBLANG_AZERI_LATIN)
 LOCALE_IDEFAULTANSICODEPAGE: 1254 (ANSI - Turkish)

 LOCALE_SLANGUAGE: "アゼルバイジャン語 (キリル)" (15)
 LOCALE_ILANGUAGE: 0x082C (LANG_AZERI, SUBLANG_AZERI_CYRILLIC)
 LOCALE_IDEFAULTANSICODEPAGE: 1251 (ANSI - Cyrillic)

なおアゼルバイジャン語の場合は,SUBLANG_* が使用する文字集合を
表していますが,香港の場合はそうではないので,SUBLANG_* で
文字集合を識別するという手は一般には使えません.



> LOCALE_SNATIVELANGNAMEを使うのが、一番かなと思ったのですが
> これは名称文字列をもってきますが、文字列そのものの比較は
> なにか違和感を感じます、

LOCALE_SNATIVELANGNAME から言語と文字集合を識別しようとする
ならば,結局自分で対応表を用意するしかないと思います.

#1 の出力例だけから判断すると,文字集合ぐらいは識別できそうに
思えるかもしれませんが,次のような場合もあります.

 LOCALE_SLANGUAGE: "フィンランド語" (7)
 LOCALE_SNATIVELANGNAME: "suomi" (5)
 LOCALE_ILANGUAGE: 0x040B (LANG_FINNISH)
 LOCALE_IDEFAULTANSICODEPAGE: 1252 (ANSI - Latin I)

LOCALE_SNATIVELANGNAME に出現している個別の文字から文字集合を
識別すると,フィンランド語に必要な Windows-1252 や ISO-8859-1 ではなく,
ASCII で十分と誤判定してしまうでしょう.


> コードはもってないでしょうか?

ないはずです.LOCALE_"I"NATIVELANGNAME というマクロは
定義されていませんし,検索してもヒットしません.
    • good
    • 0
この回答へのお礼

ありがとうございます。
やはり、ご指摘の通り、
主言語とコードページを見るのが一番よさそうですね。

お礼日時:2007/11/06 10:50

> LOCALE_SLANGUAGEなどで、言語を取ろうとすると、


> 同じ中国語(繁体字)でも台湾と香港が別言語として
> 識別されたりして、細かすぎて使えず

言語 ID (LOCALE_ILANGUAGE) を丸ごと使おうとするからそうなります.
PRIMARYLANGID() マクロを使って言語 ID から primary language ID だけを
取り出せば同じ中国語 (LANG_CHINESE) として認識できます.

なお言語 ID は Windows 独自のものだと思うので (未確認),
Windows 以外のシステムとの互換性が必要ならば,言語 ID じゃなくて
ISO639 言語コード (LOCALE_SISO639LANGNAME) の方がいいかも.

ISO 639 (Wikipedia)
http://ja.wikipedia.org/wiki/ISO_639


> ANSIコードページで識別しようとすると西欧言語がすべて
> 1251となって英語とフランス語などの識別ができません。

そりゃ Windows-1252 (1251 はキリル文字ね) は複数西欧言語対応の
符号化文字集合ですから….

Code Pages Supported by Windows (Microsoft)
http://www.microsoft.com/globaldev/reference/Win …

コードページ (Wikipedia)
http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%BC% …



以下,2年ほど前に作った全ロケール情報取得テストプログラム
(GetLocaleInfoW() 使用) の出力から,言語とコードページに
関する部分だけ抜粋.
(元々 Unicode テキストなので一部文字化けしています.)

[4] Locale ID: 0x00000404
LOCALE_SSORTNAME: "画数" (2)
LOCALE_ILANGUAGE: 0x0404 (LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL)
LOCALE_IDEFAULTLANGUAGE: 0x0404 (LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL)
LOCALE_SLANGUAGE: "中国語 (台湾)" (8)
LOCALE_SABBREVLANGNAME: "CHT" (3)
LOCALE_SNATIVELANGNAME: "中文(繁體)" (6)
LOCALE_SENGLANGUAGE: "Chinese" (7)
LOCALE_SISO639LANGNAME: "zh" (2)
LOCALE_ICOUNTRY: 886 (CTRY_TAIWAN)
LOCALE_IDEFAULTCOUNTRY: 886 (CTRY_TAIWAN)
LOCALE_SCOUNTRY: "台湾" (2)
LOCALE_SABBREVCTRYNAME: "TWN" (3)
LOCALE_SNATIVECTRYNAME: "台灣" (2)
LOCALE_SENGCOUNTRY: "Taiwan" (6)
LOCALE_SISO3166CTRYNAME: "TW" (2)
LOCALE_IDEFAULTCODEPAGE: 950 (ANSI/OEM - Traditional Chinese (Big5))
LOCALE_IDEFAULTANSICODEPAGE: 950 (ANSI/OEM - Traditional Chinese (Big5))
LOCALE_IDEFAULTEBCDICCODEPAGE: 500 (IBM EBCDIC - International)
LOCALE_IDEFAULTMACCODEPAGE: 10002 (MAC - Traditional Chinese (Big5))

[68] Locale ID: 0x00000804
LOCALE_SSORTNAME: "発音" (2)
LOCALE_ILANGUAGE: 0x0804 (LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED)
LOCALE_IDEFAULTLANGUAGE: 0x0804 (LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED)
LOCALE_SLANGUAGE: "中国語 (中国)" (8)
LOCALE_SABBREVLANGNAME: "CHS" (3)
LOCALE_SNATIVELANGNAME: "中文(简体)" (6)
LOCALE_SENGLANGUAGE: "Chinese" (7)
LOCALE_SISO639LANGNAME: "zh" (2)
LOCALE_ICOUNTRY: 86 (CTRY_PRCHINA)
LOCALE_IDEFAULTCOUNTRY: 86 (CTRY_PRCHINA)
LOCALE_SCOUNTRY: "中華人民共和国" (7)
LOCALE_SABBREVCTRYNAME: "CHN" (3)
LOCALE_SNATIVECTRYNAME: "中华人民共和国" (7)
LOCALE_SENGCOUNTRY: "People's Republic of China" (26)
LOCALE_SISO3166CTRYNAME: "CN" (2)
LOCALE_IDEFAULTCODEPAGE: 936 (ANSI/OEM - Simplified Chinese (GBK))
LOCALE_IDEFAULTANSICODEPAGE: 936 (ANSI/OEM - Simplified Chinese (GBK))
LOCALE_IDEFAULTEBCDICCODEPAGE: 500 (IBM EBCDIC - International)
LOCALE_IDEFAULTMACCODEPAGE: 10008 (MAC - Simplified Chinese (GB2312))

[83] Locale ID: 0x00000C04
LOCALE_SSORTNAME: "画数" (2)
LOCALE_ILANGUAGE: 0x0C04 (LANG_CHINESE, SUBLANG_CHINESE_HONGKONG)
LOCALE_IDEFAULTLANGUAGE: 0x0C04 (LANG_CHINESE, SUBLANG_CHINESE_HONGKONG)
LOCALE_SLANGUAGE: "中国語 (香港)" (8)
LOCALE_SABBREVLANGNAME: "ZHH" (3)
LOCALE_SNATIVELANGNAME: "中文(繁體)" (6)
LOCALE_SENGLANGUAGE: "Chinese" (7)
LOCALE_SISO639LANGNAME: "zh" (2)
LOCALE_ICOUNTRY: 852 (CTRY_HONG_KONG)
LOCALE_IDEFAULTCOUNTRY: 852 (CTRY_HONG_KONG)
LOCALE_SCOUNTRY: "中華人民共和国香港特別行政区" (14)
LOCALE_SABBREVCTRYNAME: "HKG" (3)
LOCALE_SNATIVECTRYNAME: "香港特别行政区" (7)
LOCALE_SENGCOUNTRY: "Hong Kong S.A.R." (16)
LOCALE_SISO3166CTRYNAME: "HK" (2)
LOCALE_IDEFAULTCODEPAGE: 950 (ANSI/OEM - Traditional Chinese (Big5))
LOCALE_IDEFAULTANSICODEPAGE: 950 (ANSI/OEM - Traditional Chinese (Big5))
LOCALE_IDEFAULTEBCDICCODEPAGE: 500 (IBM EBCDIC - International)
LOCALE_IDEFAULTMACCODEPAGE: 10002 (MAC - Traditional Chinese (Big5))

[90] Locale ID: 0x00001004
LOCALE_SSORTNAME: "発音" (2)
LOCALE_ILANGUAGE: 0x1004 (LANG_CHINESE, SUBLANG_CHINESE_SINGAPORE)
LOCALE_IDEFAULTLANGUAGE: 0x1004 (LANG_CHINESE, SUBLANG_CHINESE_SINGAPORE)
LOCALE_SLANGUAGE: "中国語 (シンガポール)" (12)
LOCALE_SABBREVLANGNAME: "ZHI" (3)
LOCALE_SNATIVELANGNAME: "中文(简体)" (6)
LOCALE_SENGLANGUAGE: "Chinese" (7)
LOCALE_SISO639LANGNAME: "zh" (2)
LOCALE_ICOUNTRY: 65 (CTRY_SINGAPORE)
LOCALE_IDEFAULTCOUNTRY: 65 (CTRY_SINGAPORE)
LOCALE_SCOUNTRY: "シンガポール" (6)
LOCALE_SABBREVCTRYNAME: "SGP" (3)
LOCALE_SNATIVECTRYNAME: "新加坡" (3)
LOCALE_SENGCOUNTRY: "Singapore" (9)
LOCALE_SISO3166CTRYNAME: "SG" (2)
LOCALE_IDEFAULTCODEPAGE: 936 (ANSI/OEM - Simplified Chinese (GBK))
LOCALE_IDEFAULTANSICODEPAGE: 936 (ANSI/OEM - Simplified Chinese (GBK))
LOCALE_IDEFAULTEBCDICCODEPAGE: 500 (IBM EBCDIC - International)
LOCALE_IDEFAULTMACCODEPAGE: 10008 (MAC - Simplified Chinese (GB2312))

[18] Locale ID: 0x00000412
LOCALE_SSORTNAME: "Dictionary" (10)
LOCALE_ILANGUAGE: 0x0412 (LANG_KOREAN, SUBLANG_KOREAN)
LOCALE_IDEFAULTLANGUAGE: 0x0412 (LANG_KOREAN, SUBLANG_KOREAN)
LOCALE_SLANGUAGE: "韓国語" (3)
LOCALE_SABBREVLANGNAME: "KOR" (3)
LOCALE_SNATIVELANGNAME: "한국어" (3)
LOCALE_SENGLANGUAGE: "Korean" (6)
LOCALE_SISO639LANGNAME: "ko" (2)
LOCALE_ICOUNTRY: 82 (CTRY_SOUTH_KOREA)
LOCALE_IDEFAULTCOUNTRY: 82 (CTRY_SOUTH_KOREA)
LOCALE_SCOUNTRY: "韓国" (2)
LOCALE_SABBREVCTRYNAME: "KOR" (3)
LOCALE_SNATIVECTRYNAME: "대한민국" (4)
LOCALE_SENGCOUNTRY: "Korea" (5)
LOCALE_SISO3166CTRYNAME: "KR" (2)
LOCALE_IDEFAULTCODEPAGE: 949 (ANSI/OEM - Korean (Unified Hangeul Code))
LOCALE_IDEFAULTANSICODEPAGE: 949 (ANSI/OEM - Korean (Unified Hangeul Code))
LOCALE_IDEFAULTEBCDICCODEPAGE: 20833 (IBM EBCDIC - Korean Extended)
LOCALE_IDEFAULTMACCODEPAGE: 10003 (MAC - Korean)

[29] Locale ID: 0x0000041E
LOCALE_SSORTNAME: "既定値" (3)
LOCALE_ILANGUAGE: 0x041E (LANG_THAI)
LOCALE_IDEFAULTLANGUAGE: 0x041E (LANG_THAI)
LOCALE_SLANGUAGE: "タイ語" (3)
LOCALE_SABBREVLANGNAME: "THA" (3)
LOCALE_SNATIVELANGNAME: "ไทย" (3)
LOCALE_SENGLANGUAGE: "Thai" (4)
LOCALE_SISO639LANGNAME: "th" (2)
LOCALE_ICOUNTRY: 66 (CTRY_THAILAND)
LOCALE_IDEFAULTCOUNTRY: 66 (CTRY_THAILAND)
LOCALE_SCOUNTRY: "タイ" (2)
LOCALE_SABBREVCTRYNAME: "THA" (3)
LOCALE_SNATIVECTRYNAME: "ไทย" (3)
LOCALE_SENGCOUNTRY: "Thailand" (8)
LOCALE_SISO3166CTRYNAME: "TH" (2)
LOCALE_IDEFAULTCODEPAGE: 874 (ANSI/OEM - Thai (same as 28605, ISO 8859-15))
LOCALE_IDEFAULTANSICODEPAGE: 874 (ANSI/OEM - Thai (same as 28605, ISO 8859-15))
LOCALE_IDEFAULTEBCDICCODEPAGE: 20838 (IBM EBCDIC - Thai)
LOCALE_IDEFAULTMACCODEPAGE: 10021 (MAC - Thai)

[9] Locale ID: 0x00000409
LOCALE_SSORTNAME: "既定値" (3)
LOCALE_ILANGUAGE: 0x0409 (LANG_ENGLISH, SUBLANG_ENGLISH_US)
LOCALE_IDEFAULTLANGUAGE: 0x0409 (LANG_ENGLISH, SUBLANG_ENGLISH_US)
LOCALE_SLANGUAGE: "英語 (米国)" (7)
LOCALE_SABBREVLANGNAME: "ENU" (3)
LOCALE_SNATIVELANGNAME: "English" (7)
LOCALE_SENGLANGUAGE: "English" (7)
LOCALE_SISO639LANGNAME: "en" (2)
LOCALE_ICOUNTRY: 1 (CTRY_UNITED_STATES)
LOCALE_IDEFAULTCOUNTRY: 1 (CTRY_UNITED_STATES)
LOCALE_SCOUNTRY: "米国" (2)
LOCALE_SABBREVCTRYNAME: "USA" (3)
LOCALE_SNATIVECTRYNAME: "United States" (13)
LOCALE_SENGCOUNTRY: "United States" (13)
LOCALE_SISO3166CTRYNAME: "US" (2)
LOCALE_IDEFAULTCODEPAGE: 437 (OEM - U.S.)
LOCALE_IDEFAULTANSICODEPAGE: 1252 (ANSI - Latin I)
LOCALE_IDEFAULTEBCDICCODEPAGE: 37 (IBM EBCDIC - U.S./Canada)
LOCALE_IDEFAULTMACCODEPAGE: 10000 (MAC - Roman)

[70] Locale ID: 0x00000809
LOCALE_SSORTNAME: "既定値" (3)
LOCALE_ILANGUAGE: 0x0809 (LANG_ENGLISH, SUBLANG_ENGLISH_UK)
LOCALE_IDEFAULTLANGUAGE: 0x0809 (LANG_ENGLISH, SUBLANG_ENGLISH_UK)
LOCALE_SLANGUAGE: "英語 (英国)" (7)
LOCALE_SABBREVLANGNAME: "ENG" (3)
LOCALE_SNATIVELANGNAME: "English" (7)
LOCALE_SENGLANGUAGE: "English" (7)
LOCALE_SISO639LANGNAME: "en" (2)
LOCALE_ICOUNTRY: 44 (CTRY_UNITED_KINGDOM)
LOCALE_IDEFAULTCOUNTRY: 44 (CTRY_UNITED_KINGDOM)
LOCALE_SCOUNTRY: "英国" (2)
LOCALE_SABBREVCTRYNAME: "GBR" (3)
LOCALE_SNATIVECTRYNAME: "United Kingdom" (14)
LOCALE_SENGCOUNTRY: "United Kingdom" (14)
LOCALE_SISO3166CTRYNAME: "GB" (2)
LOCALE_IDEFAULTCODEPAGE: 850 (OEM - Multilingual Latin I)
LOCALE_IDEFAULTANSICODEPAGE: 1252 (ANSI - Latin I)
LOCALE_IDEFAULTEBCDICCODEPAGE: 20285 (IBM EBCDIC - United Kingdom)
LOCALE_IDEFAULTMACCODEPAGE: 10000 (MAC - Roman)

[85] Locale ID: 0x00000C09
LOCALE_SSORTNAME: "既定値" (3)
LOCALE_ILANGUAGE: 0x0C09 (LANG_ENGLISH, SUBLANG_ENGLISH_AUS)
LOCALE_IDEFAULTLANGUAGE: 0x0C09 (LANG_ENGLISH, SUBLANG_ENGLISH_AUS)
LOCALE_SLANGUAGE: "英語 (オーストラリア)" (12)
LOCALE_SABBREVLANGNAME: "ENA" (3)
LOCALE_SNATIVELANGNAME: "English" (7)
LOCALE_SENGLANGUAGE: "English" (7)
LOCALE_SISO639LANGNAME: "en" (2)
LOCALE_ICOUNTRY: 61 (CTRY_AUSTRALIA)
LOCALE_IDEFAULTCOUNTRY: 61 (CTRY_AUSTRALIA)
LOCALE_SCOUNTRY: "オーストラリア" (7)
LOCALE_SABBREVCTRYNAME: "AUS" (3)
LOCALE_SNATIVECTRYNAME: "Australia" (9)
LOCALE_SENGCOUNTRY: "Australia" (9)
LOCALE_SISO3166CTRYNAME: "AU" (2)
LOCALE_IDEFAULTCODEPAGE: 850 (OEM - Multilingual Latin I)
LOCALE_IDEFAULTANSICODEPAGE: 1252 (ANSI - Latin I)
LOCALE_IDEFAULTEBCDICCODEPAGE: 500 (IBM EBCDIC - International)
LOCALE_IDEFAULTMACCODEPAGE: 10000 (MAC - Roman)

[12] Locale ID: 0x0000040C
LOCALE_SSORTNAME: "既定値" (3)
LOCALE_ILANGUAGE: 0x040C (LANG_FRENCH, SUBLANG_FRENCH)
LOCALE_IDEFAULTLANGUAGE: 0x040C (LANG_FRENCH, SUBLANG_FRENCH)
LOCALE_SLANGUAGE: "フランス語 (フランス)" (12)
LOCALE_SABBREVLANGNAME: "FRA" (3)
LOCALE_SNATIVELANGNAME: "français" (8)
LOCALE_SENGLANGUAGE: "French" (6)
LOCALE_SISO639LANGNAME: "fr" (2)
LOCALE_ICOUNTRY: 33 (CTRY_FRANCE)
LOCALE_IDEFAULTCOUNTRY: 33 (CTRY_FRANCE)
LOCALE_SCOUNTRY: "フランス" (4)
LOCALE_SABBREVCTRYNAME: "FRA" (3)
LOCALE_SNATIVECTRYNAME: "France" (6)
LOCALE_SENGCOUNTRY: "France" (6)
LOCALE_SISO3166CTRYNAME: "FR" (2)
LOCALE_IDEFAULTCODEPAGE: 850 (OEM - Multilingual Latin I)
LOCALE_IDEFAULTANSICODEPAGE: 1252 (ANSI - Latin I)
LOCALE_IDEFAULTEBCDICCODEPAGE: 20297 (IBM EBCDIC - France)
LOCALE_IDEFAULTMACCODEPAGE: 10000 (MAC - Roman)

[72] Locale ID: 0x0000080C
LOCALE_SSORTNAME: "既定値" (3)
LOCALE_ILANGUAGE: 0x080C (LANG_FRENCH, SUBLANG_FRENCH_BELGIAN)
LOCALE_IDEFAULTLANGUAGE: 0x080C (LANG_FRENCH, SUBLANG_FRENCH_BELGIAN)
LOCALE_SLANGUAGE: "フランス語 (ベルギー)" (12)
LOCALE_SABBREVLANGNAME: "FRB" (3)
LOCALE_SNATIVELANGNAME: "français" (8)
LOCALE_SENGLANGUAGE: "French" (6)
LOCALE_SISO639LANGNAME: "fr" (2)
LOCALE_ICOUNTRY: 32 (CTRY_BELGIUM)
LOCALE_IDEFAULTCOUNTRY: 32 (CTRY_BELGIUM)
LOCALE_SCOUNTRY: "ベルギー" (4)
LOCALE_SABBREVCTRYNAME: "BEL" (3)
LOCALE_SNATIVECTRYNAME: "Belgique" (8)
LOCALE_SENGCOUNTRY: "Belgium" (7)
LOCALE_SISO3166CTRYNAME: "BE" (2)
LOCALE_IDEFAULTCODEPAGE: 850 (OEM - Multilingual Latin I)
LOCALE_IDEFAULTANSICODEPAGE: 1252 (ANSI - Latin I)
LOCALE_IDEFAULTEBCDICCODEPAGE: 20297 (IBM EBCDIC - France)
LOCALE_IDEFAULTMACCODEPAGE: 10000 (MAC - Roman)

[87] Locale ID: 0x00000C0C
LOCALE_SSORTNAME: "既定値" (3)
LOCALE_ILANGUAGE: 0x0C0C (LANG_FRENCH, SUBLANG_FRENCH_CANADIAN)
LOCALE_IDEFAULTLANGUAGE: 0x0C0C (LANG_FRENCH, SUBLANG_FRENCH_CANADIAN)
LOCALE_SLANGUAGE: "フランス語 (カナダ)" (11)
LOCALE_SABBREVLANGNAME: "FRC" (3)
LOCALE_SNATIVELANGNAME: "français" (8)
LOCALE_SENGLANGUAGE: "French" (6)
LOCALE_SISO639LANGNAME: "fr" (2)
LOCALE_ICOUNTRY: 2 (CTRY_CANADA)
LOCALE_IDEFAULTCOUNTRY: 2 (CTRY_CANADA)
LOCALE_SCOUNTRY: "カナダ" (3)
LOCALE_SABBREVCTRYNAME: "CAN" (3)
LOCALE_SNATIVECTRYNAME: "Canada" (6)
LOCALE_SENGCOUNTRY: "Canada" (6)
LOCALE_SISO3166CTRYNAME: "CA" (2)
LOCALE_IDEFAULTCODEPAGE: 850 (OEM - Multilingual Latin I)
LOCALE_IDEFAULTANSICODEPAGE: 1252 (ANSI - Latin I)
LOCALE_IDEFAULTEBCDICCODEPAGE: 20297 (IBM EBCDIC - France)
LOCALE_IDEFAULTMACCODEPAGE: 10000 (MAC - Roman)

この回答への補足

回答ありがとうございます。
PRIMARYLANGIDマクロをつかってみました。
この場合、中国語の簡体字と繁体字や
アゼルバイジャン語 (キリル)
アゼルバイジャン語 (ラテン)
などの言葉は同じだが、システム上、違う文字表示を
使っている場合は、システム的には、別の言語としてみなしたい場合に
(リソースファイルを作成する単位として、システム的な
 言語を定義したい)
不都合があるので、
LOCALE_SNATIVELANGNAMEを使うのが、一番かなと思ったのですが
これは名称文字列をもってきますが、文字列そのものの比較は
なにか違和感を感じます、コードはもってないでしょうか?

補足日時:2007/10/29 17:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!