为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕运维8079593 2022-12-24 14:49:19
我正在尝试学习如何使用 MvvmCross.Forms 在 Xamarin Forms 应用程序中实施和测试本地化。使用 Visual Studio 2017 或 2019 社区版。到目前为止,我已尝试按照教程进行操作。https://www.mvvmcross.com/documentation/plugins/resxlocalizationhttps://mobileprogrammerblog.wordpress.com/2017/12/30/mvvm-cross-with-xamarin-platform-resx-localization/https://learn.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/localization/但是这些都没有显示如何为 .Net Standard 类实现解决方案,其中 Visual Studio 解决方案具有以下设置。Application.Core - 这用于 ViewModels 和服务(带有 MvvmCross NuGet 的 .Net Standard 2.0 库)Application.UI - 这是共享的视图和视图逻辑(.Net Standard 2.0 Library with Xamarin.Forms MvvmCross MvvmCross.Forms NuGets)Application.UWP - 特定于应用程序的演示者 (Xamarin.Forms MvvmCross MvvmCross.Forms NuGets)Application.Android - 特定于应用程序的演示者 (Xamarin.Forms MvvmCross MvvmCross.Forms NuGets)Application.iOS - 特定于应用程序的演示者(Xamarin.Forms MvvmCross MvvmCross.Forms NuGets)NuGet 版本Xamarin.Forms-v3.6MvvmCross-v6.2.3MvvmCross.Forms-v6.2.3我想了解如何使用尽可能少的代码进入特定于应用程序的表示层来实现本地化。任何人都可以指出有关如何使用 Xamarin.Forms 实现 MvvmCross.Forms 的教程吗?我很高兴使用 JSon、RESX 或任何其他方法来存储特定语言,但我也希望能够支持从右到左的语言和布局。
查看完整描述

1 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

如果您使用的是 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>

然后创建一个类,名称类似于从 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 项目以查看有多少东西(如本地化字符串)有效;)


查看完整回答
反对 回复 2022-12-24
  • 1 回答
  • 0 关注
  • 57 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信