资源比本地化类的优势

时间:2019-11-19 01:26:42

标签: c# .net .net-core localization

我在以下thread上发表了评论,要求对答案进行澄清,作者建议我将评论扩展为一个正式问题。

响应表明了将资源用作模块化本地化解决方案的好处。我的问题是,与基于接口/类的解决方案相比,使用资源文件(和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转换为如下所示的类格式,这很简单。

为什么资源方法比这种方法更好?还是重申一下,这是攻击可重用本地化的更好方法?

0 个答案:

没有答案