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"/>
在 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"/>