是否有关于 MvvmCross.Forms 和使用 .Net Standard 进行本地化的教程

Is There a tutorial on MvvmCross.Forms and Localization using .Net Standard

我正在尝试学习如何使用 MvvmCross.Forms 在 Xamarin Forms 应用程序中实施和测试本地化。使用 Visual Studio 2017 或 2019 社区版。

到目前为止,我已尝试按照教程进行操作。

https://www.mvvmcross.com/documentation/plugins/resxlocalization

https://mobileprogrammerblog.wordpress.com/2017/12/30/mvvm-cross-with-xamarin-platform-resx-localization/

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/localization/

但是其中 none 展示了如何为 .Net 标准 class 实施解决方案,其中 Visual Studio 解决方案具有以下设置。

NuGet 版本

我想了解如何使用尽可能少的代码进入特定于应用程序的表示层来实现本地化。

任何人都可以向我指出如何使用 Xamarin.Forms 实现 MvvmCross.Forms 的教程吗?

我很乐意使用 JSon、RESX 或任何其他存储特定语言的方法,但我也希望能够支持从右到左的语言和布局。

如果您使用的是 Xamarin Forms,则可以在核心项目中创建 resx 文件,例如 AppResources.resx 和 AppResources.es.resx 并在其中放置一个简单的文本,例如:

在AppResources.resx

<data name="Hello" xml:space="preserve">
    <value>Hello</value> 
</data>

并在 AppResources.es.resx

<data name="Hello" xml:space="preserve">
    <value>Hola</value> 
</data>

然后您创建一个 class 名称类似于从 MvxViewModel 扩展的 BaseViewModel 并在那里引用字符串本地化的索引:

public class BaseViewModel : MvxViewModel
{
    public BaseViewModel()
    {
    }

    public string this[string index] => AppResources.ResourceManager.GetString(index);
}

现在从该 BaseViewModel 扩展所有视图模型。 然后在来自 xamarin 表单的 xaml 文件中,当您创建一个内容页面时,将其设为 MvxContentPage 并且您可以通过 x:TypeArguments 将视图模型附加到它,那里有对 AppResources 索引的引用,所以如果想要使用本地化 resx 中的字符串,只需使用常规 xamarin 表单绑定并将字符串名称作为索引传递,例如:

<Label
    FontSize="Medium"
    TextColor="Black"
    Text="{Binding [Hello]}" />

或使用mvx绑定系统

<Label
    FontSize="Medium"
    TextColor="Black"
    mvx:Bi.nd="Text [Hello]" />

您可以检查 Star Wars Sample project 以查看有多少东西(如本地化字符串)有效 ;)