在XAML中使用ReswFileCodeGenerator从.resw文件绑定字符串

时间:2014-12-31 04:23:13

标签: c# xaml localization windows-runtime windows-phone-8.1

我尝试使用多语言应用工具包本地化我的Windows通用应用。 因为您无法直接从XAML中的.resw文件绑定字符串,所以我使用了ReswFileCodeGenerator工具。它在代码背后效果很好,但在XAML中,我无法做到这一点。

在Windows Phone 8.0中,我可以使用:

Text="{Binding Path=LocalizedResources.StringName, Source={StaticResource Strings}}"

在Windows(Phone)8.1中使用ReswFileGenerator工具有类似的方法吗?

3 个答案:

答案 0 :(得分:8)

我仍然建议你按照Depechie的建议去做:使用x:Uid属性。

如果您需要从代码中获取本地化字符串,只需将资源名称中的.替换为/即可。所以,在XAML中你会写:

<TextBlock x:Uid="appString" />

在代码中,您将使用:

var resourceLoader = new ResourceLoader();
var localizedText = resourceLoader.GetString("appString/Text");

答案 1 :(得分:3)

使用.resw文件在wp8.1中进行资源转换时,需要在xaml控件上使用x:Uid属性!

<TextBlock x:Uid="FieldKey" />

Details are mentioned here...

答案 2 :(得分:2)

我编写了一些东西来帮助我。它可能不完美,但对我来说效果很好。这是一个link to the helper。您构建它并将.exe文件放在一个易于访问的文件夹中。

在包含资源的项目中,您将预构建操作设置为类似的内容(您只需要将“path \更改为\ ResourcesHelper.exe”部分):

call "path\to\ResourcesHelper.exe" "$(TargetName)" "$(ProjectDir)\" "$(RootNameSpace)" "universal"

此外,主要资源必须位于项目的 Resources / en-US 文件夹中(您可以在代码中更改它)。

这样,在构建项目时,它将生成一个名为 LocalizedStrings.cs 的文件,类似于为.resx文件生成的文件。它包含一些称为LC(小写),UC(大写)和UCF(大写大写)的附加属性,它们返回该大小写中的字符串。我希望你会发现它很有用。 :)

注意:该工具不适合其他人使用,因此我只是编写了我需要的内容,因此可能无法正常工作。