Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
本地化UWP应用程序_Uwp_Windows 10 Universal_Uwp Xaml - Fatal编程技术网

本地化UWP应用程序

本地化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:

我正在将应用程序从WindowsPhone8.1移植到UWP,但从资源中获取字符串时遇到问题。在WP 8.1中,我可以通过以下方式获得字符串:

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文件中的
默认语言
属性,这对我不起作用。