UWP 中的 Mvvmcross 本地化

Mvvmcross localization in UWP

在 UWP 中使用本地化的现代方法是什么?

JsonUWP 的本地化插件既没有提取 Json 也没有提取 ResourseLoader 插件。此外,它没有安装任何 bootstrap 文件(不确定 UWP 中是否仍然需要它们)。

假设它在没有 bootstraping 的情况下也能正常工作,并且该插件已经包含所有必要的东西,我按照视频中的指示实现了示例,并获得了“||ViewHeader”字符串而不是本地化的字符串。 json 内容显然类似于

{
    "ViewHeader":"Test view header"
}

我在 NativeLanguageConverter.Convert 上添加了断点,发现 value.TextProvider.ResourceLoader 为空。我已经手动添加了所有这些插件,但错误是相同的 - 似乎它们未注册,所以我必须 bootstrap 它们。

遇到这种情况我该怎么办?

更新:确实,问题是缺少 bootstraps:https://github.com/MvvmCross/MvvmCross-Plugins/issues/113

但是,即使在添加它们之后,我仍然得到格式为“|%AssemblyName%|%ViewmodelName%|%KeyName%”而不是“%ValueName%”的字符串。在调试器中,我可以看到字典包含正确的键值对,但不知何故 returns 不是值,而是格式化的键。

花了几个小时后,我想出了工作组合。

为了解决这个问题,我必须为不同的 ViewModel 创建不同的 LanguageBinders。

public IMvxLanguageBinder FirstViewModelTextSource
    {
        get
        {
            return new MvxLanguageBinder(GeneralConstants.LocalizationGeneralNamespace, "FirstViewModel");
        }
    }

然后在视图上:

<TextBlock Text="{Binding FirstViewModelTextSource,Converter={StaticResource Language},ConverterParameter=ViewHeader,FallbackValue=ViewHeader,Mode=OneTime}" 
                   Margin="10,0,10,50" TextWrapping="Wrap"/>