首页 > 解决方案 > 资源对本地化类的好处

问题描述

我在以下线程中发表了评论,要求澄清答案,作者建议我将评论扩展为正式问题。

响应说明了将资源用作模块化本地化解决方案的好处。我的问题是,与基于接口/类的解决方案相比,使用资源文件(和 resx 管理器)的内在好处是什么。在我看来,在 MVC/MVVM 类型的设计模式中,视图几乎完全是变量引用。如果您为每个视图创建一个界面,您将立即了解视图是否已针对一种语言完全实现。这可以实现如下所示:

语言文件:

public interface IMyAppLogin
{
    string LoginPrompt { get; }
    string ForgotPWLabel { get; }
}

public class Eng : IMyAppLogin
{
    public string LoginPrompt => "Please Login";

    public string ForgotPWLabel => "Forgot your password?";
}

public class Portuguese : IMyAppLogin
{
    public string LoginPrompt =>  "Login por favor";

    public string ForgotPWLabel => "Não lembro o Senha?";
}

模型:

public class MyAppLoginModel
{
    IMyAppLogin Lang;
}

控制器:

 public class AController
{
    MyAppLoginModel m;
    public AController(string la)
    {
        switch(la)
        {
            case "pt": 
                m.Lang = new Portuguese();
                break;
            default:
                m.Lang = new Eng();
                break;
        }

    }

}

最后,您的视图将引用模型来填充文本。

这些语言类可以在它们自己的标准 .Net 库中进行划分和移植。如果您需要将其发送给翻译人员,您可以创建一个 excel 模板以向外部发送,然后创建一个将 excel 生成的 .csv 转换为如下所示的类格式的脚本将是微不足道的。

为什么资源方法比这个方法好?或者也许重述,哪个是攻击可重用本地化的更好方法?

标签: c#.net.net-corelocalization

解决方案


推荐阅读