トップ回答者
C#で既に英語/日本語でリソースが切り替わるアプリケーションに中国語を追加したいのですが。。。

質問
-
現在、C#でアプリケーションを開発しています。
すでに、既定言語=英語、追加言語を日本語として、jaフォルダ以下に、リソースのみのDLLを配置するように、作りました。
ここまでは、特に支障はなく、アセンブリリソースの新規追加で、プロジェクトをBuildすると、DLLが作成されていました。
最近、中国語も追加しようとして、同じようにアセンブリリソースの新規追加で、中国語のリソースを作成し、プロジェクトをBuild
してみたところ、jaのリソースはBuildされますが、zhのリソースはBuildされません。
プロジェクトや、ソリューションのプロパティをみても、特に、追加したzhのリソースDLLをBuildするような記述を追加する方法が見当たりません。
ちなみに、jaのリソースのBuildはAL.exeで行われているのが、Buildの出力画面で見えるのですが、zhのリソースのBuildがでてきません。
プロジェクトのツリーには、*.zh.resxという中国語のファイルは存在しています。
ご助言いただければ幸いです。
Reiji Tanaka
回答
-
するとリンク先に書かれている
Windows Vista アプリケーションでは、名前として、"zh-CHS" ではなく "zh-Hans" を、"zh-CHT" ではなく "zh-Hant" を使用してください。カルチャ名 "zh-Hans" と "zh-Hant" は現在の標準です。古い名前を使用する理由が特にない限り、こちらを使用してください。
が該当するのでしょうか。
「古い名前を使用する理由が特にない限り」などと曖昧に書かずに「Windows Server 2003以前で使用しない場合は」とかならわかりやすいのに。- 回答としてマーク Reiji 2009年3月19日 15:17
-
Vistaでzh-Hansが導入された+.NET Framework 2.0 SP1でzh-CHS→zh-Hansフォールバックするようになったとなると、
Vista SPなし環境ではzh-Hansしか読まない可能性があるため胆ですね、と書きました。
で調べましたが杞憂でした。
.NET Framework 2.0 on XP SP3: zh-CHS
.NET Framework 2.0 SP1 on XP SP3: zh-CHS→zh-Hans
.NET Framework 2.0 on Vista: zh-CHS→zh-Hans
.NET Framework 2.0 SP1 on Vista SP1: zh-CHS→zh-Hans
- 回答としてマーク Reiji 2009年3月30日 9:43
すべての返信
-
カルチャ名は好き勝手に付けられるわけではなく、システムで定められている名前を使用する必要があります。
CultureInfoクラスにはカルチャの一覧がありますが、ここにzhはありません。
詳しくは知らないのですが、中国語にはzh-Hans(簡体字中国語)とzh-Hant(繁体字中国語)とがあり、どちらかを選ぶ必要があるからだと思います。
これらはja-JPやen-USと同等の限定カルチャと誤解しそうですが、実際にはjaやenと同等のニュートラルカルチャです。 -
佐祐理 さん
適格な助言ありがとうございました。
zh-HansにするとリソースDLLが生成できました。
一つ課題がくりあできましたが、このモジュールをターゲットPCにコピーしてみましたが、既定の英語しか表示されませんでした。
日本語OSで日本語のリソースは表示されましたが、中国語(簡体字)の設定のOSで、zh-Hansのフォルダにある中国語リソースは使用されずに、既定の英語になってしまいました。
日本語OSでは日本語リソース(ja)(ニュートラルカルチャ)で表示できていることと、今回のzh-Hansになるとコードが必要になるのでしょうか?
ご助言いただければたすかります。
Reiji Tanaka -
Reiji の発言:佐祐理 さん
適格な助言ありがとうございました。
zh-HansにするとリソースDLLが生成できました。
一つ課題がくりあできましたが、このモジュールをターゲットPCにコピーしてみましたが、既定の英語しか表示されませんでした。
日本語OSで日本語のリソースは表示されましたが、中国語(簡体字)の設定のOSで、zh-Hansのフォルダにある中国語リソースは使用されずに、既定の英語になってしまいました。
日本語OSでは日本語リソース(ja)(ニュートラルカルチャ)で表示できていることと、今回のzh-Hansになるとコードが必要になるのでしょうか?
ご助言いただければたすかります。
Reiji Tanaka
Vistaでは、同じ環境でも中国語(簡体字)で表示できましたが、WindowsXPでは、英語になってしまうようです。
OSによって、カルチャーの指定が異なるのでしょうか?
ちょっと調べてみます。
Reiji Tanaka -
するとリンク先に書かれている
Windows Vista アプリケーションでは、名前として、"zh-CHS" ではなく "zh-Hans" を、"zh-CHT" ではなく "zh-Hant" を使用してください。カルチャ名 "zh-Hans" と "zh-Hant" は現在の標準です。古い名前を使用する理由が特にない限り、こちらを使用してください。
が該当するのでしょうか。
「古い名前を使用する理由が特にない限り」などと曖昧に書かずに「Windows Server 2003以前で使用しない場合は」とかならわかりやすいのに。- 回答としてマーク Reiji 2009年3月19日 15:17
-
Reiji の発言: WindowsXPの場合は、zh-CHS(中国語:簡体字)でうまく表示できました。
結局のところ、XPとVistaで2つのリソースを提供しないとうまく対応できないようですが、課題は解決できました。
そういう対応は好きではないので調べてみました。zh-CN(中国-中国語)では次の順で読み込んでいました。
.NET Framework 2.0 on XP SP3: zh-CHS
.NET Framework 2.0 SP1 on XP SP3: zh-CHS→zh-Hans
.NET Framework 2.0 on Vista: めんどいのでパス
.NET Framework 2.0 SP1 on Vista SP1: zh-CHS→zh-Hans
あああVista SPなしでの挙動が胆ですね(ぁ
-
佐祐理 の発言: そういう対応は好きではないので調べてみました。zh-CN(中国-中国語)では次の順で読み込んでいました。
.NET Framework 2.0 on XP SP3: zh-CHS
.NET Framework 2.0 SP1 on XP SP3: zh-CHS→zh-Hans
.NET Framework 2.0 on Vista: めんどいのでパス
.NET Framework 2.0 SP1 on Vista SP1: zh-CHS→zh-Hans
あああVista SPなしでの挙動が胆ですね(ぁ
佐祐理 さん
助言いただきありがとうございます。
Vistaでも、zh-CHSだけで中国語(簡体字)が表示できました。
Vista SPなしの環境が作れませんのでなんともわかりませんが、”Vista SPなしでの挙動が胆ですね”と書かれているのは、
実際に何か気になることが、おありでしょうか?それとも単に未確認なので、完全にOKといいきれないということでしょうか?
一度は、その環境を確認しておこうかとは思いますが、、、やはり面倒ですね。
Reiji Tanaka -
Vistaでzh-Hansが導入された+.NET Framework 2.0 SP1でzh-CHS→zh-Hansフォールバックするようになったとなると、
Vista SPなし環境ではzh-Hansしか読まない可能性があるため胆ですね、と書きました。
で調べましたが杞憂でした。
.NET Framework 2.0 on XP SP3: zh-CHS
.NET Framework 2.0 SP1 on XP SP3: zh-CHS→zh-Hans
.NET Framework 2.0 on Vista: zh-CHS→zh-Hans
.NET Framework 2.0 SP1 on Vista SP1: zh-CHS→zh-Hans
- 回答としてマーク Reiji 2009年3月30日 9:43