2016-09-02 10 views
0

私は、私たちがサポートしている言語ごとに1セットのテキストファイルを持つUWPアプリケーションを持っています。私は、システムが設定されている言語に基づいて、1つのテキストファイルの内容を読みたいと思います。UWPアプリケーションの別の言語で異なるテキストファイルを読み込む最良の方法は何ですか?

fr-fr\MyTextFile.txt

en-us\MyTextFile.txt

の場合:たとえば、私は私のパッケージに、以下の2つのファイルを持っているでしょう、テキストファイルがMyTextFile.txtと呼ばれ、私はサポート2つの言語は英語とフランス語であると言うことができますシステムがフランス語に設定されている場合は、フランス語のテキストファイルを読み込んで読み込み、その内容を表示します。私の現在のソリューションは、私の開発マシンでのみ動作しています。別のマシンにアプリケーションをデプロイすると、OSが英語であれば動作します。 OSをフランス語に設定してアプリをインストールしても、テキストファイルはロードされません。

1)私は、\ファイル[言語] \ MyTextFile.txt 2)私は、ファイルをロードする小道具ファイルを持っているが、それはこのことを含んでいる[appnameの]の下の私のテキストファイルストアを持っている:これは私がやっているものです

<PropertyGroup> 
    <FileDir>$(SolutionDir)App\[appname]\Files\</EulaDir> 
    </PropertyGroup> 
    <ItemGroup>  
    <Content Include="$(FileDir)\en-us\MyTextFile.txt"> 
     <Link>en-us\MyTextFile.txt</Link> 
    </Content> 
    <Content Include="$(FileDir)\fr-fr\MyTextFile.txt"> 
     <Link>fr-fr\MyTextFile.txt</Link> 
    </Content> 
    </ItemGroup> 
</Project> 

3)英語で働く私のコードは、()は、このようなファイルロード:

var rc = ResourceManager.Current.MainResourceMap.GetSubtree("Files").GetValue("MyTextFile.txt", ResourceContext.GetForCurrentView()); 

var lang = rc.Qualifiers.FirstOrDefault(q => q.QualifierName == "Language").QualifierValue; 

// Get the file 
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///" + lang + "/" + "MyTextFile.txt")); 

// Read the contents of the file 
UI.Text = await FileIO.ReadTextAsync(file, UnicodeEncoding.Utf8); 

をおそらく、異なる言語でのこのテキストファイルをロードするためのより良い方法はありますか?それはあなただけ、手動で言語を指定する必要はありませんおかげ

ジョージ

答えて

0

reswファイルには、いくつかの法的なテキストが含まれているため、テキストファイルである必要があり、文字列にすることはできません通常どおりファイルを読みます。

// Get the file 
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///MyTextFile.txt")); 

// Read the contents of the file 
UI.Text = await FileIO.ReadTextAsync(file, UnicodeEncoding.Utf8); 
+0

はい、これは素晴らしい仕事でした - ありがとう!だからシンプル – user6115111

0

おそらく別の言語でこのテキストファイルをロードするためのより良い方法はありますか?

アプリケーションリソースを使用して、ローカライズ可能なコンテンツをアプリケーションコードから分離することをお勧めします。リソースにより、アプリケーションを複数の言語にローカライズしたり、さまざまなデバイスのDPIやフォームファクタに合わせてカスタマイズしたり、特定の種類のユーザーに合わせてカスタマイズすることができます。

のアプリのlocalizationの詳細については、あなたがGlobalization and localizationを参照することができますに、ここでは公式のApplication resources and localization sampleあり、このサンプルでは、​​あなたのアプリから、このような文字列やファイルとして、あなたのリソースを分離することが奨励されていることがわかりますコードを使用して、独自にリソースを維持したり変更することができます。

+0

私の場合は、私たちの法務チームによって個別にローカライズされた別個のファイルが必要でした。彼らは他の文字列のようにローカライズされていません。上のソリューションは素晴らしい仕事をした – user6115111

関連する問題