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

  • 質問

  • 現在、C#でアプリケーションを開発しています。
    すでに、既定言語=英語、追加言語を日本語として、jaフォルダ以下に、リソースのみのDLLを配置するように、作りました。
    ここまでは、特に支障はなく、アセンブリリソースの新規追加で、プロジェクトをBuildすると、DLLが作成されていました。

    最近、中国語も追加しようとして、同じようにアセンブリリソースの新規追加で、中国語のリソースを作成し、プロジェクトをBuild
    してみたところ、jaのリソースはBuildされますが、zhのリソースはBuildされません。
    プロジェクトや、ソリューションのプロパティをみても、特に、追加したzhのリソースDLLをBuildするような記述を追加する方法が見当たりません。

    ちなみに、jaのリソースのBuildはAL.exeで行われているのが、Buildの出力画面で見えるのですが、zhのリソースのBuildがでてきません。
    プロジェクトのツリーには、*.zh.resxという中国語のファイルは存在しています。

    ご助言いただければ幸いです。
    Reiji Tanaka
    2009年3月18日 6:02

回答

  • するとリンク先に書かれている
    Windows Vista アプリケーションでは、名前として、"zh-CHS" ではなく "zh-Hans" を、"zh-CHT" ではなく "zh-Hant" を使用してください。カルチャ名 "zh-Hans" と "zh-Hant" は現在の標準です。古い名前を使用する理由が特にない限り、こちらを使用してください。
    が該当するのでしょうか。
    「古い名前を使用する理由が特にない限り」などと曖昧に書かずに「Windows Server 2003以前で使用しない場合は」とかならわかりやすいのに。
    • 回答としてマーク Reiji 2009年3月19日 15:17
    2009年3月19日 12:04
  • 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
    2009年3月24日 12:52

すべての返信

  • カルチャ名は好き勝手に付けられるわけではなく、システムで定められている名前を使用する必要があります。
    CultureInfoクラスにはカルチャの一覧がありますが、ここにzhはありません。
    詳しくは知らないのですが、中国語にはzh-Hans(簡体字中国語)とzh-Hant(繁体字中国語)とがあり、どちらかを選ぶ必要があるからだと思います。
    これらはja-JPやen-USと同等の限定カルチャと誤解しそうですが、実際にはjaやenと同等のニュートラルカルチャです。

    2009年3月18日 13:06
  •  
    佐祐理 さん

    適格な助言ありがとうございました。
    zh-HansにするとリソースDLLが生成できました。
    一つ課題がくりあできましたが、このモジュールをターゲットPCにコピーしてみましたが、既定の英語しか表示されませんでした。
    日本語OSで日本語のリソースは表示されましたが、中国語(簡体字)の設定のOSで、zh-Hansのフォルダにある中国語リソースは使用されずに、既定の英語になってしまいました。
    日本語OSでは日本語リソース(ja)(ニュートラルカルチャ)で表示できていることと、今回のzh-Hansになるとコードが必要になるのでしょうか?

    ご助言いただければたすかります。

    Reiji Tanaka
    2009年3月19日 2:16
  • Reiji の発言:

     

    佐祐理 さん

    適格な助言ありがとうございました。
    zh-HansにするとリソースDLLが生成できました。
    一つ課題がくりあできましたが、このモジュールをターゲットPCにコピーしてみましたが、既定の英語しか表示されませんでした。
    日本語OSで日本語のリソースは表示されましたが、中国語(簡体字)の設定のOSで、zh-Hansのフォルダにある中国語リソースは使用されずに、既定の英語になってしまいました。
    日本語OSでは日本語リソース(ja)(ニュートラルカルチャ)で表示できていることと、今回のzh-Hansになるとコードが必要になるのでしょうか?

    ご助言いただければたすかります。

    Reiji Tanaka



    Vistaでは、同じ環境でも中国語(簡体字)で表示できましたが、WindowsXPでは、英語になってしまうようです。
    OSによって、カルチャーの指定が異なるのでしょうか?
    ちょっと調べてみます。
    Reiji Tanaka
    2009年3月19日 3:00
  • するとリンク先に書かれている
    Windows Vista アプリケーションでは、名前として、"zh-CHS" ではなく "zh-Hans" を、"zh-CHT" ではなく "zh-Hant" を使用してください。カルチャ名 "zh-Hans" と "zh-Hant" は現在の標準です。古い名前を使用する理由が特にない限り、こちらを使用してください。
    が該当するのでしょうか。
    「古い名前を使用する理由が特にない限り」などと曖昧に書かずに「Windows Server 2003以前で使用しない場合は」とかならわかりやすいのに。
    • 回答としてマーク Reiji 2009年3月19日 15:17
    2009年3月19日 12:04
  •  
    佐祐理 さん


    ご助言ありがとうございました。
    WindowsXPの場合は、zh-CHS(中国語:簡体字)でうまく表示できました。
    結局のところ、XPとVistaで2つのリソースを提供しないとうまく対応できないようですが、課題は解決できました。
    ありがとうございました。

    Reiji Tanaka
    2009年3月19日 15:16
  • 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なしでの挙動が胆ですね(ぁ

    2009年3月20日 7:23
  • 佐祐理 の発言:

    そういう対応は好きではないので調べてみました。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
    2009年3月23日 7:09
  • 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
    2009年3月24日 12:52
  • 佐祐理 さん

    いろいろ調べていただき本当に助かりました。
    ありがとうございました。


    Reiji Tanaka
    2009年3月30日 9:43