我尝试使用多语言应用工具包本地化我的Windows通用应用。 因为您无法直接从XAML中的.resw文件绑定字符串,所以我使用了ReswFileCodeGenerator工具。它在代码背后效果很好,但在XAML中,我无法做到这一点。
在Windows Phone 8.0中,我可以使用:
Text="{Binding Path=LocalizedResources.StringName, Source={StaticResource Strings}}"
在Windows(Phone)8.1中使用ReswFileGenerator工具有类似的方法吗?
答案 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" />
答案 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(大写大写)的附加属性,它们返回该大小写中的字符串。我希望你会发现它很有用。 :)
注意:该工具不适合其他人使用,因此我只是编写了我需要的内容,因此可能无法正常工作。