本地化UWP应用程序
我正在将应用程序从WindowsPhone8.1移植到UWP,但从资源中获取字符串时遇到问题。在WP 8.1中,我可以通过以下方式获得字符串:本地化UWP应用程序,uwp,windows-10-universal,uwp-xaml,Uwp,Windows 10 Universal,Uwp Xaml,我正在将应用程序从WindowsPhone8.1移植到UWP,但从资源中获取字符串时遇到问题。在WP 8.1中,我可以通过以下方式获得字符串: Text="{Binding Path=LocalizedResources.lDownloadStatus , Source={StaticResource LocalizedStrings}}" UWP或我是否有类似的解决方案必须设置x:UID,然后在资源文件集中设置,例如:“Button.Content | SampleContent”?使用x:
Text="{Binding Path=LocalizedResources.lDownloadStatus , Source={StaticResource LocalizedStrings}}"
UWP或我是否有类似的解决方案必须设置x:UID,然后在资源文件集中设置,例如:“Button.Content | SampleContent”?使用x:UID加载资源字符串,或者您可以使用ResourceManager从后端获取资源字符串。 以下是来自MSDN的示例:
希望有帮助 使用x:uid加载资源字符串,或者使用ResourceManager从后端获取资源字符串。 以下是来自MSDN的示例: 希望有帮助 您应该在项目中创建文件夹“Strings”,对于法语,请在其中创建另一个具有国家/地区LCID名称的文件夹(法国为fr)。并在那里创建resource.resw文件 若要使用TextBlock.Text中的值,请将.resw文件中的字段命名为“Hello.Text”,并为其指定一个值“Bonjour” 转到文本块并设置x:Uid=“Hello” 使用ApplicationLanguages.PrimaryLanguageOverride=“fr fr.”更改您的语言。您应该在项目中创建文件夹“Strings”,对于法语,请在其中创建另一个具有国家/地区LCID名称的文件夹(fr fr for France)。并在那里创建resource.resw文件 若要使用TextBlock.Text中的值,请将.resw文件中的字段命名为“Hello.Text”,并为其指定一个值“Bonjour” 转到文本块并设置x:Uid=“Hello”
使用ApplicationLanguages.primarylanguagesoverride=“fr fr.”更改您的语言。我在使用CustomResources方面有很好的经验 只需在UI项目中的任意位置创建一个新类,该类继承自CustomXamlResourceLoader,并实现以下方法:
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中使用相同的分隔符
您不会在设计器中获得预览,但最大的优势是您可以拆分资源文件,而不必将所有内容都放在一个文件中
有关更多信息,请参阅。我在CustomResources方面有很好的经验 只需在UI项目中的任意位置创建一个新类,该类继承自CustomXamlResourceLoader,并实现以下方法:
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中使用相同的分隔符
您不会在设计器中获得预览,但最大的优势是您可以拆分资源文件,而不必将所有内容都放在一个文件中
有关更多信息,请参阅。您可以使用
x:Uid
或使用ResourceLoader-创建类似于本地化字符串的内容。您可以使用x:Uid
或使用ResourceLoader-创建类似于本地化字符串的内容。您不能像创建文件夹一样创建文件夹吗?而不是fr?例如,如果我创建de de,它仅适用于德国,我是否应该为austia german的au de创建另一个文件夹?@batmaci您只能创建fr。它将覆盖所有法语国家。ApplicationLanguages.primarylanguagesoverride=“fr”
在何处添加此行?据我所知,我们只需要更改Package.appxmanifest文件中的默认语言
属性,该文件对我不起作用。您不能像fr一样创建文件夹吗?而不是fr?例如,如果我创建de de,它仅适用于德国,我是否应该为austia german的au de创建另一个文件夹?@batmaci您只能创建fr。它将覆盖所有法语国家。ApplicationLanguages.primarylanguagesoverride=“fr”
在何处添加此行?据我所知,我们只需要更改Package.appxmanifest文件中的默认语言
属性,这对我不起作用。