【发布时间】:2017-01-09 23:59:27
【问题描述】:
我有一个 UWP 应用,其中包含一组文本文件,每个文件对应我们支持的每种语言。我想根据系统设置的语言读取一个文本文件的内容。例如,假设文本文件名为 MyTextFile.txt,我支持的 2 种语言是英语和法语,我的包中有以下 2 个文件:
fr-fr\MyTextFile.txt
en-us\MyTextFile.txt
如果系统设置为法语,我想加载和读取法语文本文件并显示其内容。我当前的解决方案仅适用于我的开发机器,当我将我的应用程序部署到另一台机器时,它仅适用于操作系统是英文的。如果我将操作系统设置为法语并安装我的应用程序,它不会加载文本文件。这就是我正在做的事情:
1) 我的文本文件存储在 [appname]\Files[language]\MyTextFile.txt 2)我有一个加载文件的道具文件,它包含:
<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);
也许有更好的方法来加载这个不同语言的文本文件?它必须是文本文件,因为它包含一些合法文本,并且不能是 resw 文件中的字符串
谢谢
乔治
【问题讨论】: