c# - 资源对本地化类的好处
问题描述
我在以下线程中发表了评论,要求澄清答案,作者建议我将评论扩展为正式问题。
响应说明了将资源用作模块化本地化解决方案的好处。我的问题是,与基于接口/类的解决方案相比,使用资源文件(和 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 转换为如下所示的类格式的脚本将是微不足道的。
为什么资源方法比这个方法好?或者也许重述,哪个是攻击可重用本地化的更好方法?
解决方案
推荐阅读
- laravel - Livewire,Laravel - 我可以从 Livewire 组件调用控制器“存储”方法吗?
- r - R readxl excel文件与美元符号
- android - 如何在 Android 中捕获签名时检查空位图
- c# - Visual Studio 无法识别新的表单名称/引用
- sql-server - Entity Framework Core + API .NET Core + n 对 n 关系
- typescript - 元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于在 angularjs 中进行索引
- android - 模拟器上 SD 文件夹的 Android ACTION_PICK
- java - 对如何处理这个 public void addRating 方法感到困惑?
- sql-server - 如何使用 OpenQuery 在 SQL Server 中创建别名 (IBM DB2)
- c - C 中的 printf 函数未按预期工作