1

英語、ドイツ語、ロシア語の 3 つの言語を搭載したシンプルな Windows ストア アプリケーションを作成しました。ru-RU、en-US、de-DE などの完全なカルチャ名は使用していませんが、言語を指定しているだけです: ru、en、de。したがって、次のリソースファイル構造があります。

prj-folder
\ strings
  \ de
    \ Resource.resw
  \ en
    \ Resource.resw
  \ ru
    \ Resource.resw

マニフェストで、デフォルトのカルチャを「en」に設定しました。私の開発ワークステーションには en-US カルチャがあるため、アプリを実行するとすべてが英語になります (予想どおり)。他の文化をテストするために、次のコードを に追加しますApp.ctor

public App()
{
    InitializeComponent();

    var culture = new CultureInfo("ru-RU");
    Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = culture.Name;
    CultureInfo.DefaultThreadCurrentCulture = culture;
    CultureInfo.DefaultThreadCurrentUICulture = culture;

    // ...
}

それはうまくいきます。ロシア語またはドイツ語ですべてを見ることができます。

アプリをリリースしました - 今日、ストアに登場しました。開発ワークステーション (en-US) では、すべてが期待どおりに機能します。しかし!ドイツ語 (de-DE 文化) のワークステーションでは、すべてが英語でも表示されます。Windows ストアの説明とアプリケーションの UI です。ローカリゼーションの何が問題なのか、すべてが常に英語である理由がわかりません。

注: 重要な場合があります。アプリのアップデートでドイツ語とロシア語を追加しました。最初のバージョンには 1 つの言語しか搭載されていませんでした。英語であり、既定のカルチャは en-US でした。

更新:問題はドイツ語 Windows 8 のデバイスに関連しているようです。ほとんどのアプリケーションは de-DE カルチャで実行されていますが、私のアプリは en-US カルチャで実行されています。私たちの理由を理解しようとします。

4

1 に答える 1

2

マニフェストに 3 つの言語すべてが記載されていますか? アプリケーションで使用される言語のセットは、マニフェストに存在する言語にフィルター処理されるため、マニフェストに "en" のみが含まれている場合は、ユーザー設定に関係なく、それが取得されます。

.NET カルチャと UI カルチャは、Windows ストア アプリのローカライズには影響しません。関心のある設定は次のとおりです。

Windows.Globalization.ApplicationLanguages.Languages これは、リソース ローダーによって使用されるリストであり、次のものから構築されます。

1) Windows.System.UserProfile.GlobalizationPreferences.Languages 言語で設定されたユーザー言語プロファイル

2) Windows.Globalization.ApplicationLanguages.ManifestLanguages. アプリケーション マニフェストで定義されている言語。

3) Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride。オプションのアプリケーション固有の永続的な主要言語。

少し単純化すると、ApplicationLanguages.Languages は GlobalizationLPreferences.Languages と ManifestLanguages の共通部分です。交差がない場合は、マニフェスト言語が優先されます。プライマリ言語のオーバーライドは、マニフェストに対してフィルター処理されることなく、常にリストの先頭に追加されます。

他の最新のアプリでドイツ語が表示される場合、最も可能性の高い原因は、マニフェストにドイツ語が含まれていないことです。もう 1 つの可能性は、PrimaryLanguageOverride がどういうわけか英語で行き詰まっていることです。

于 2012-12-08T04:48:31.647 に答える