Asp.net mvc 业务层的本地化

Asp.net mvc 业务层的本地化,asp.net-mvc,localization,business-logic,Asp.net Mvc,Localization,Business Logic,我们正在编写一个ASP.NET MVC应用程序,每隔一段时间,我们就需要向描述中添加一个字符串,或者向数据库记录中添加一个UI未生成的注释。例如,如果我们需要撤销交易,我们将在原始交易的描述前加上“撤销”一词 我们必须时不时地添加这些字符串,本地化这些字符串的最佳方法是什么?在web项目中,我们使用的是资源语言文件,因此所有内容都由.net framework负责。您能否获得一个类库项目(业务层)来利用自动本地化,就像web项目一样?我们通常做的是在后端项目中添加额外的资源文件。通常它们不会长得

我们正在编写一个ASP.NET MVC应用程序,每隔一段时间,我们就需要向描述中添加一个字符串,或者向数据库记录中添加一个UI未生成的注释。例如,如果我们需要撤销交易,我们将在原始交易的描述前加上“撤销”一词


我们必须时不时地添加这些字符串,本地化这些字符串的最佳方法是什么?在web项目中,我们使用的是资源语言文件,因此所有内容都由.net framework负责。您能否获得一个类库项目(业务层)来利用自动本地化,就像web项目一样?

我们通常做的是在后端项目中添加额外的资源文件。通常它们不会长得那么大,所以我认为这样做是安全的。通常,您可以通过以下方式访问这些资源:

string dummy = Properties.ResourceFileName.Reverse;
Reverse {0}
如果您在VisualStudio中添加一个资源文件,IDE将负责生成所需的代码以使其工作

对于您的示例,我建议您使用如下字符串:

string dummy = Properties.ResourceFileName.Reverse;
Reverse {0}
然后用实际的事务描述替换
{0}
。这样,如果特定语言需要,翻译人员可以将
{0}
移动到“反转”之前。这只是一个例子,但最佳实践建议我们避免连接可本地化字符串,因为它们可能在不同的语言中中断。例如:

string dummy = string.Format(Properties.ResourceFileName.Reverse, transactionDescription);

这是有道理的,我也是这么想的。但是,我的问题是,您能否使业务层对区域性敏感,并像web项目一样自动获取正确的资源文件(Strings.resx、Strings.es.resx、String.fr.resx等)?或者您必须从web项目中传入区域性信息并从中选择正确的资源文件吗?运行时使用运行线程中指定的区域性(通常由web应用程序设置),因此是的,会自动使用适当的区域性。酷。我得检查一下。谢谢。如果有人使用Cookies来控制web项目中的本地化,而不是运行时区域性,该怎么办?