使用一种资源进行UWP本地化

Tldragoon

因此,我尝试将本地化添加到正在处理的UWP应用程序中。通过在线研究,我可以使用Mulitlingual App Toolkit进行添加。我遇到的一个问题是资源文件中的重复值。例如,假设我需要用相同的值标记2个不同的控件。控件是一个按钮(使用属性button.Content)和一个文本块(使用textBlock.Text)。我只想在资源文件中有一个名称/值对,即可用于这两个控件。有没有办法做到这一点?我也想能够在xaml中设置这些值。提前致谢。

拉斐尔Z

一般而言,UWP的本地化

首先,国际化(i18n)和本地化(l10n)的默认方式是对每种语言使用不同的语言.resw(或.resx用于其他环境,例如Xamarin)。在这些文件中,您将存储带有某些标识符键的转换后的字符串。

Mulitlingual App Toolkit是一种工具,用于促进和某种程度上管理(例如,跟踪审阅状态)与可能不是实际开发团队成员的人员实际翻译字符串的周围过程。但是最后,它也只是.resw像手动完成一样生成文件。因此,您不必使用MAT来本地化您的App。

实施它

实现所需功能的方法是使用某种绑定。

我个人喜欢使用自定义标记扩展名,以便能够区分实际的动态数据和硬编码的国际化字符串。此外,它使绑定很短。然后看起来像Title="{i18n:Translate GlossaryPageTitle}"

不幸的是,到目前为止,UWP中似乎还没有Markup Extensions(源代码)。

因此,可以使用的方法(无论如何都更简单)是使用Converter并将所需文本的Key作为参数传递。像这样:Title="{x:Bind Converter={StaticResource LocalizationConverter}, ConverterParameter=GlossaryPageTitle}"

转换器的实现如下所示:

public class LocalizationConverter : IValueConverter
{
    private readonly ResourceLoader _resourceLoader = ResourceLoader.GetForViewIndependentUse("/Resources");

    public object Convert(object value, Type targetType, object parameter, string language)
    {
        if (parameter is string resourceId)
        {
            return _resourceLoader.GetString(resourceId);
        }
        return DependencyProperty.UnsetValue;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotSupportedException();
    }
}

然后在应用程序中的某个位置(按视图或全局)注册Converter,就可以了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在本地化时间戳周期(AM / PM)到另一种语言

代号一:访问本地化的字符串资源

重复的本地化资源文件

使用python / django进行日期时间本地化

Android本地化资源

有没有一种方法可以在Interface Builder中向本地化字符串添加注释?

如何始终在Windows Store UWP应用中安装所有本地化资源?

使用resx文件进行本地化会生成MissingManifestResourceException

Swift中的本地化-将应用程序限制为一种语言,即使该应用程序支持多种语言

本地化UWP App

有没有一种可移植的方法来提供在PyPI上分发的软件包的本地化?

有没有一种方法可以强制Xcode以其他语言本地化应用名称?

如何使用Xamarin Forms绑定资源文件中的动态数据以进行本地化

使用laravel对页面标题进行本地化

是否有一种语法可供所有平台使用uno跨平台库项目中存储的.resw文件中的本地化资源

每种语言使用多个resx文件进行本地化

如何使用BufferedReader进行本地化?

使用资源文件进行.NET本地化的策略

使用自定义的本地化资源进行构建

使用静态方法进行WPF本地化

使用节点本地化

使用资源文件进行MVC 3本地化全球化

使用Babel进行Flask WTF本地化

uwp FileSavePicker本地化

在同一语言环境中进行本地化?

使用本地化资源构建 DevOps

带有 1 个资源文件的 uwp 本地化语言的所有变体

使用@page 指令进行本地化

在bigquery中,你可以在使用format_date时指定一种语言 - 日期函数中的本地化