2016-06-29 50 views
0

我将应用程序从Windows Phone 8.1移植到UWP,并且从资源获取字符串时遇到问题。在WP 8.1,我可以通过书面形式得到的字符串:本地化UWP应用程序

Text="{Binding Path=LocalizedResources.lDownloadStatus , Source={StaticResource LocalizedStrings}}" 

是否有UWP任何类似的解决方案或我必须设置X:UID,然后在资源文件中设置,例如:“Button.Content | SampleContent”?

+2

您可以使用'x:Uid'或通过使用* ResourceLoader * - [在此帖子中的小示例](http://stackoverflow.com/a/24258472/2681948)创建类似于* LocalizedStrings *的内容。 – Romasz

回答

0

使用x:uid加载资源字符串,或者使用ResourceManager从后端获取资源字符串。 以下是MSDN的示例:How to create a localization UWP App

希望它有帮助!

2

您应该在项目中创建文件夹“Strings”,为法语创建另一个具有国家LCID名称(fr-fr为法国)的文件夹。并创建那里resource.resw文件。

如果要使用TextBlock.Text中的值,请将.resw文件中的字段命名为“Hello.Text”,并为其赋值“Bonjour”。

转到您的TextBlock并设置x:Uid =“Hello”。

使用ApplicationLanguages.PrimaryLanguageOverride =“fr-fr”更改yor语言。

0

我对CustomResources做了很好的体验。

就在从CustomXamlResourceLoader继承你的UI项目的任何地方创建一个新的类,并实现以下方法:

protected override object GetResource(string resourceId, string objectType, string propertyName, string propertyType) 
    { 
     var parts = resourceId.Split('|'); 

     if (parts.Length != 2) 
      throw new ArgumentException(); 

     return ResourceLoader.GetForViewIndependentUse(parts[0]).GetString(split[1]); 
    } 

然后创建资源的文件,我用他们的名字像我的页面,即“MainPage.resw”。

就是这样,现在你可以开始使用你的资源从XAML:

Text="{CustomResource MainPage|MyResourceKey}" 

当然,分隔符可以做你想做的,它不局限于任何管道。只要确保你在你的ResourceLoader和你的XAML中使用相同的分隔符。

您不会在Designer中看到预览,但最大的好处是您可以拆分资源文件,而不必将所有内容合并到一起。

有关更多信息,请参阅https://msdn.microsoft.com/en-us/windows/uwp/xaml-platform/customresource-markup-extension