2016-07-26 73 views
1

所以我对开发世界很新,我已经知道如何在XAML上进行本地化[只需放入一个x:Uid,非常简单]。但我怎么能在代码上做到这一点?我已经尝试了一些东西,但没有成功。有人能帮我吗? 这里是代码我试图分配:UWP C#本地化

private void OnShowLoadingChanged(Visibility newVisibility) 
    { 
     ui_progressRing.IsActive = newVisibility == Visibility.Visible; 
     ui_progressRing.Visibility = Visibility.Visible; 
     ui_textBlock.Text = "Loading Comments"; 
     PlayAnimation(newVisibility); 
    } 

显然是加载注释字符串,我知道我必须使用的GetString,但我只是没有做正确的...

回答

1

你需要一个资源加载器,但你可以得到一个和重新使用它像这样:

private ResourceLoader MyResourceLoader 
{ 
    get 
    { 
     if (_resourceLoader == null) 
      _resourceLoader = new ResourceLoader(); 
     return _resourceLoader; 
    } 
} 
private ResourceLoader _resourceLoader { get; set; } 

然后,它只是

MyResourceLoader.GetString(key) 
+1

已经找到了另一种方式,无论如何。我只是把 'ResourceContext resourceContext = new ResourceContext(); ResourceMap resourceMap = ResourceManager.Current.MainResourceMap.GetSubtree(“Resources”);' and'ui_textBlock.Text = resourceMap.GetValue(“LoadingC/Text”,resourceContext).ValueAsString;' –

0

在资源文件中设置了[tbImage.Text],[imgMain.Source]。 您可以在xaml中使用x:Uid。而在C#中的方法,根据语言获得资源,您可以使用此代码片段:

ResourceContext resourceContext = new ResourceContext(); 
resourceContext.Languages = new string[] { language }; 
ResourceMap resourceMap = ResourceManager.Current.MainResourceMap.GetSubtree("Resources"); 
string imageSource= resourceMap.GetValue("imgMain/Source", resourceContext).ValueAsString; 
this.imgMain.Source = new BitmapImage(new Uri(imageSource, UriKind.RelativeOrAbsolute)); 
this.tbImage.Text = resourceMap.GetValue("tbImage/Text", resourceContext).ValueAsString; 

有一个关于在MSDN UWP本土化样本。 https://code.msdn.microsoft.com/how-to-create-a-localizatio-c61f4b37