我有一个站点,该站点在前端使用Angular,在后端使用C#。我有一个c#类,可从数据库中获取数据。我要添加一个新字段(值的西班牙语翻译),不确定以下三种情况中的哪一种是最佳的。
这是当前代码的样子:
public class CustomerIssueManager
{
static public List<GenericRecordDTO> GetCustomerIssues(MyStore db)
{
List<GenericRecordDTO> responseDTO = new List<GenericRecordDTO>();
try
{
var customerIssues = db.CustomerIssues.Where(m => m.IsActive && m.Name.ToLower() != "none").OrderBy(o => o.Name).ToList();
foreach (var c in customerIssues)
{
GenericRecordDTO issue = new GenericRecordDTO();
issue.ID = c.ID;
issue.Value = c.Name;
responseDTO.Add(issue);
}
}
}
}
public class GenericRecordDTO
{
public int ID { get; set; }
public string Value {get; set; } = "";
}
这些是我正在考虑的方案:
场景1 : 将以下内容添加到GenericRecordDTO之间有什么显着区别:
public string SpanishValue { get; set; } = "";
说明:有许多使用GenericRecordDTO的类不需要SpanishValue
方案2 : 与创建另一个类相反:
public class GenericRecordTransDTO
并添加SpanishValue吗? 解决方案1中的问题
方案3 : 与按原样保留GenericRecordDTO.cs相反,但是在CustomerIssueManager.cs中,为西班牙站点设置了条件:
if(englishSite) { issue.Value = c.Name; }
else { issue.Value = c.SpanishName; }
不确定现在是否可以检查西班牙语网站还是以后需要检查?与在TypeScript / Angular中检查西班牙语站点相比,在此处检查西班牙语站点是否有任何弊端?
答案 0 :(得分:0)
我的问题是,为什么要在前端完全这样做?这要求您在两个级别上处理本地化,同时还需要将不需要的额外数据发送回浏览器。
对我来说,我将决定语言服务器端并适当地加载内容。如果是请求数据的西班牙语客户端,则“名称”字段将是西班牙语名称,英语用户,然后是英语名称,等等。。。这样做的好处是至少可以处理服务器端的所有本地化。就字符串而言。
但是,重要的是要理解,本地化不只是文本,因此您可能仍然需要客户端格式化数字,日期等。为此,我建议您使用可接收语言环境信息的格式化库,然后通过配置有效负载从服务器传递此信息。
就检测语言服务器端而言,这可以通过很多方法来完成。例如:
Accept-Language
标头来确定您要使用的语言。