2

私は WPF アプリケーションに取り組んでおり、.resx ファイルにローカライズされたリソース (en、fr、zh) があります。次のテスト コードは、ローカライズされた文字列を表示するために使用されます。英語、フランス語では問題なく動作しますが、中国語では失敗します。中国語では、英語のテキストのみが表示されます。zh-CN、zh-Hans、zh-Hant、「古い」zh-CHS、zh-CHTなどの中国文化のすべてのバリアントを使用してみましたが、うまくいきませんでした。

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
       // CultureInfo culture = CultureInfo.CreateSpecificCulture("zh-CHT");
        CultureInfo culture = new CultureInfo("zh-CN");
        Thread.CurrentThread.CurrentCulture = culture;
        Thread.CurrentThread.CurrentUICulture = culture;
        MessageBox.Show(Properties.Resources.address);
    }
}

リソース フィールドは、Resources.resx、Resources.fr.resx、Resources.zh.resx と名付けられています。

4

2 に答える 2

1

それは、zh-CHS がニュートラル カルチャーだからです。ASP.NET 2.0 では、CurrentCulture を zh-CHS のようなニュートラル カルチャに設定することはできません。ただし、zh-CN のような特定のカルチャに設定できます。zh-CHS などのニュートラル カルチャを使用する必要がある場合は、代わりに CurrentUICulture プロパティを設定できます。CurrentUICulture は、リソース ファイルからテキストを取得する役割を果たします。CurrentCulture は、Number、DateTime、および Currency の書式設定を担当します。

ところで、ASP.NET 4.0 では CurrentCulture を Neutral Culture に設定できますが、v2.0 では設定できません。私のコードでは、.NET 2 または .NET 4 のいずれかでサイトを実行できる場合、次のようにします。

    public static void SetCurrentCulture(string cultureName)
    {
        try
        {
            Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName);
        }
        catch (Exception)
        {
            // Ignore if exception happens: In ASP.NET 2.0 setting CurrentCulture = Neutral culture (like zh-CHS) throws an exception:
            // Culture 'zh-CHS' is a neutral culture. It cannot be used in formatting and parsing and therefore cannot be set as the thread's current culture.
        }
        Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureName);
        HttpCookie cultureCookie = new HttpCookie("CultureCookie", cultureName);
        HttpContext.Current.Response.Cookies.Set(cultureCookie);
    }
于 2014-09-10T16:00:31.910 に答える
0

同様の問題がありました。現在のカルチャは、開始時に zh-CN に設定されましたが、英語によって上書きされました。私の場合の解決策-Windows設定から中国語をインストールします。

于 2015-06-19T14:06:35.457 に答える