Windowsで同じ言語を識別する方法

このQ&Aのポイント
  • Windowsで同じ言語を識別する方法について調べました。GetLocaleInfoを使用してロケール情報を取得し、言語とコードページを識別する方法を探しています。
  • LOCALE_SLANGUAGEを使用して言語を取得しようとすると、中国語(繁体字)の台湾と香港が別言語として識別されるなど、細かすぎるため使えません。また、ANSIコードページを使用して識別しようとすると、西欧言語がすべて1251となり、英語とフランス語などの識別ができません。
  • 自分でロケールIDと言語識別コードの変換テーブルを作成する方法も考えられますが、既存のロジックを使用したいと思っています。良い方法があれば教えてください。
回答を見る
  • ベストアンサー

Windowsで、システム上同じ言語と思えるものを識別するには?

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

質問者が選んだベストアンサー

  • ベストアンサー
  • noocyte
  • ベストアンサー率58% (171/291)
回答No.1

> 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/WinCP.mspx コードページ (Wikipedia) http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%BC%E3%83%89%E3%83%9A%E3%83%BC%E3%82%B8 以下,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)

kurinkurinkurin
質問者

補足

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

その他の回答 (1)

  • noocyte
  • ベストアンサー率58% (171/291)
回答No.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 というマクロは 定義されていませんし,検索してもヒットしません.

kurinkurinkurin
質問者

お礼

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

関連するQ&A

  • Windows10言語設定が勝手に変化する 

    Windous10で言語設定を第1設定 日本語 第2設定中国語(簡体字)第3設定中国語(繁体字)にしているが、PC起動時に勝手に第2になってしまう。第1に設定しておいても、又ほかの画面(例えばメール)などに変更すると、勝手に第2に変わってしまう。

  • AdobeReader9.1 言語パックについて

    先日Adobe Reader9.1をインストールしました。 Ver8の時まであったアジア・中央言語フォントパック(中国語[簡体字]・中国語[繁体字]・韓国語など)が見当たらないのですが、ご存知の方いらっしゃいますか?

  • 多言語の天気予報ブログパーツ

    多言語(少なくとも英語・中国簡体字・中国繁体字)対応している天気予報ブログパーツを探しています。 多言語対応のウェブサイトに貼付けたいと思っています。 ブログパーツに限らずいい方法などがあればご教示ください。 宜しくお願い致します。

  • 追加言語のリストの中に中国語がありません。

    追加言語として中国語(簡体字と繁体字)を追加したいのですが、IMEの追加言語のリストの中に中国語が表示されておらず、追加言語として中国語を追加することができません。 どうしたら良いのでしょうか。 ご教示宜しくお願い致します。 ※OKWAVEより補足:「富士通FMV」についての質問です。

  • 中国語 繁体字 パソコンでの入力

    中国語の簡体字はピンインでパソコン入力できるのですが、繁体字は言語バーを中国語繁体字(香港など)に設定しても入力できません。どのようにしたらできるのでしょうか。パソコンはWindows Vistaを使っています。

  • 中国語簡体字 ←→ 中国語繁体字 変換

    中国語繁体字は日本の漢字と同じだったり、似ていたりして辞書で調べるのも簡単ですが、 中国語簡体字では知らない文字を辞書で調べるのは一苦労だったりします。 そこで、Web上で 中国語簡体字 ←→ 中国語繁体字 の変換が できるサイトを探しているのですが、どなたか知りませんか? または、中国語簡体字 ←→ 中国語繁体字 対応表のあるサイトでもかまいません。 よろしくお願いします。

  • windows Vista で中国語繁体字入力

    vistaで北京語を簡体字入力することは、出来るように 環境設定できたのですが、繁体字をピンインで入力する 方法がわかりません。 コントロールパネルの言語設定で、中国語繁体字入力を 設定しましたが、ピンイン入力が出来ませんでした。 繁体字をピンイン入力する方法ご存知でしたら、 教えて下さい。 よろしくお願いします。

  • 「世界の言語」について学べる本

    世界中の言語について学べる本を探しています。 さほど詳しくなくても、基本的なことや雑学レベルでいいです。 例えば、フランス語は××国や**国で使われており、使用文字は◇◇。 □□語や▽▽語は、日本語に近い文法である。 ドイツ語には女性名詞・男性名詞・中性名詞や、格変化がある。 中国語には繁体字と簡体字とがあり、台湾や香港では繁体字が一般的である。 などという具合の事が知りたいと思っています。 他に、例えば△△語には「おはよう」に該当する言葉がない、など、雑学や背景の文化も分かればますますいいなと思うのですが・・・いい本はないでしょうか。 ご回答お願いいたします!!

  • 簡体語、繁体語という呼び方

    中国語ド素人です。 教えていただきたいことがあります。 繁体語や簡体語という呼び方は正しいのでしょうか? 繁体字、簡体字という字体のことだと思っていたのですが…。 韓国語をハングル語と言わないのと同じだと思っていました。 教えていただければ幸いです。 宜しくお願いいたします。

  • 繁体字と簡体字について

    中国語には、繁体字と簡体字があるようですが、私は、台湾で使われている 繁体字で勉強したいと思うのですが、 私が購入した、 だれにもわかる文法と発音のルール "ゼロからスタート中国語シリーズ"の 会話編・文法編・Basic1400は、簡体字ではないのかと思ってしまいました。 簡体字でも台湾の人に通じるのだろうかと不安になってきました。 それと、繁体字と簡体字というのは、字体が違うだけで、発音は同じなのか? という疑問もあります。 わからないので教えてください よろしくお願いします。 音の違いはあるのか?