1

iOS アプリの WP8 への移植に取り組んでいます。iOS アプリは 5 つの異なる言語にローカライズされています。ローカライズされた文字列は別のファイルに保存されます。たとえば、「app.strings」はアプリに固有のすべての文字列を保持し、「common.strings」は他のアプリでも使用される文字列を保持します。もちろん、各 .strings ファイルには 5 つのバージョンがあります (app.de.strings、app.en.strings、....)。

iOS コードでは、「String_ID_123」を簡単に参照できます。システムは、すべての .strings ファイルでその文字列を自動的に検索し、この文字列が app.strings、common.strings、または他の場所で見つかるかどうかに関係なく、正しい値を表示します。 . これはWP8でも可能ですか?

VS は、ローカリゼーションをサポートするために 2 つのファイルを自動的に作成しました。

  • 実際の文字列を保持する AppResources.resx (コードビハインドとしてAppRessources.Designer.csを使用)
  • バインディングをサポートするヘルパー クラスであるLocalizedStrings.cs

もちろん、追加の .resx ファイルをプロジェクトに追加して、それらを使用して iOS プロジェクトと同じ構造を作成することもできます。ただし、正しい .resx も参照する LocalizedStrings.cs (LocalizedStrings_Common.cs など) の追加バージョンを追加する必要があります。次に、XAML で正しいソースを明示的に使用する必要があります。

String_ID_123 が定義されている場所を知る必要があります。XAML/C# に自動的に実行させる方法はありますか?

4

1 に答える 1

1

残念ながら、VS はこれで役に立ちません。第 1 に、String_ID_123 が存在するリソース ファイルを指定せずにアドレス指定することはできません。あなたはそれを自分でしなければならないでしょう。

   public class LocalizedStrings
    {
        private static AppResources _localizedResources = new AppResources();
        private static CommonResources _locallizedCommonResources = new CommonResources();

        public AppResources LocalizedResources { get { return _localizedResources; } }
        public CommonResources LocalizedCommonResources { get { return _locallizedCommonResources; } }

そして 3 番目に、プロジェクトに新しい言語を追加すると、VS は AppResources.fr.resx を生成しますが、CommonResources.fr.resx は生成しません。自分でコピーを追加する必要があります。

于 2013-10-31T08:21:56.430 に答える