我在以下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转换为如下所示的类格式,这很简单。
为什么资源方法比这种方法更好?还是重申一下,这是攻击可重用本地化的更好方法?