1. ホーム
  2. android

簡体字・繁体字中国語と地域との比較

2023-11-30 21:51:54

質問

私の Android アプリケーションに繁体字および簡体字の中国語サポートを実装している最中ですが、これがどのように機能することになっているのか混乱しています。

を読むと ドキュメントを読むと のようないくつかの議論と同様に この この に簡体字の中国語を入れました。

  • 値-zh
  • 値-zh-rCN
  • 値-zh-rSG

と繁体字中国語を

  • 値-zh-rTW
  • 値-zh-rHK

これはすべてうまく動作しますが、どういうわけか私には意味がありません(中国語の簡体字と繁体字の使用について十分に理解していない場合は申し訳ありません)。

エミュレーターのロケール設定ダイアログや、root 化された携帯電話で確認したところ、ユーザーはロケールを簡体字中国語または繁体字中国語に変更できることがわかりました。

さて、ここで疑問が生じます。システムは、簡体字中国語または繁体字中国語の strings.xml をどこで取得するのか、どのようにして知るのでしょうか。簡体字中国語を表示することになっている場合、values-zh からそれを取得し、values-zh-rTW から繁体字を取得するという、ある種の仮定が組み込まれているのでしょうか?

しかし、ユーザーが香港に住んでいて、簡体字中国語を表示するようにデバイスをセットアップした場合はどうでしょうか。あるいは、世界のどこかに移住している人が、自分のデバイスを繁体字中国語に設定し、その地域がたとえば米国やカリフォルニア州であった場合はどうでしょうか。

ユーザーが自分のロケールを設定し、私のアプリが正しいロケールで表示されるようにするには、何をしなければなりませんか。

更新しました。

さらなる調査の結果、Android 携帯電話のユーザーは、言語とは別に国を設定することはできないようです。UI でロケールと呼ばれるものを設定することしかできません。これは言語と国から構成されますが、リストが限られているため、多くの組み合わせはできません。

たとえば、繁体字中国語を使用したい米国在住の中国人は、言語を繁体字中国語に設定でき (少なくとも root 化された携帯電話では)、ロケールは zh-rTW になるでしょう。その場合、ロケールはzh-rTWになります。この場合、国を米国に設定することはできません。同様に、あらゆる種類の移住者は、母国語を現在住んでいる国に設定することはできません。

基本的に、言語と国の組み合わせの束だけがサポートされていることを意味します。問題は、それらがどれなのかをどうやって見つけるかです。

どのように解決するのですか?

だから私はさらに調査した後、マークスの答えと思う私は自分自身の答えを提供するつもりです。ここに行く。

箱から出したばかりの Android には、簡体字中国語の zh_rCN と繁体字中国語の zh_rTW という 2 つのロケールしかありません。設定] アプリからわかるように、これらが唯一の提供ロケールです。

https://android.googlesource.com/platform/packages/apps/Settings/+/master/res/

しかし、Android システムの他の作成者、たとえば、中国などで販売される携帯電話用に、追加するものを変更することができます。理論的にサポートされている全体的なセットは、icu4c アプリで見つかったロケールのリストを見ることによって見つけることができます。

https://android.googlesource.com/platform/external/icu4c.git/+/master/data/locales/ 中国語の場合、以下のようになります。

  • zh.txt
  • zh_CN.txt
  • zh_HK.txt
  • zh_Hans.txt
  • zh_Hans_CN.txt
  • zh_Hans_HK.txt
  • zh_Hans_MO.txt
  • zh_Hans_SG.txt
  • zh_Hant.txt
  • zh_Hant_HK.txt
  • zh_Hant_MO.txt
  • zh_Hant_TW.txt
  • zh_MO.txt
  • zh_SG.txt
  • zh_TW.txt

Hant は繁体字中国語の ISO コードで、Hans は簡体字中国語の ISO コードです。つまり、理論的には、次のようになります。

  • 中国、香港、マカオ、シンガポールの簡体字中国語
  • 香港、マカオ、台湾の繁体字中国語

ただし、ロケールの異なる選択を行うには、設定アプリを変更する必要があることに留意してください。したがって、この段階では、簡体字中国語は zh_rCN に、繁体字中国語は zh_rTW に翻訳され、他のロケールをサポートするような変更済みの Android イメージを持っているユーザーは、離れている必要があります。

いずれにせよ、ロケールを取得するために設定クラスを使用することができます。例えば、アプリケーションクラスで getResources().getConfiguration().locale を使用します。

たとえば、ログを記録してデータをトラッキング システム (使用するものは何でも) に送信するか、サポートされているものをチェックして、メッセージ内のロケール設定で例外をスローし、それをマーケット インターフェースに表示することができます...ただし、アプリの最低 1 回のクラッシュを意味します (調子がよければ、数分後に公開および更新できます ...)。

要約すると、最小限の設定は、設定アプリ (zh-rCN と zh-rTW のみ) で行われていることのミラーリングですが、シンガポール、香港、マカオのデフォルト ロケールを提供し、デフォルトで繁体字中国語を提供したい場合は、そうすることもでき、それは機能するはずです。しかし、そのような設定がどこかで使用されているという証拠はありません...。

お役に立てれば幸いです。