【问题标题】:Localization in the Business Layer业务层本地化
【发布时间】:2011-12-04 13:22:36
【问题描述】:

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

对我们必须不时添加的这些字符串进行本地化的最佳方法是什么?在 web 项目中,我们使用资源语言文件,所以一切都真正由 .net 框架处理。您能否获得一个类库项目(业务层)来像 Web 项目一样利用自动本地化?

【问题讨论】:

    标签: asp.net-mvc localization business-logic


    【解决方案1】:

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

    string dummy = Properties.ResourceFileName.Reverse;
    

    如果您在 Visual Studio 中添加资源文件,IDE 将负责生成所需的代码隐藏以使其正常工作。

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

    Reverse {0}
    

    然后将{0}替换为实际的交易描述。这样,如果特定语言需要,翻译者将能够在“反向”之前移动{0}。这只是一个示例,但最佳实践建议我们避免连接可本地化的字符串,因为它们可能会在不同的语言中中断。示例:

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

    【讨论】:

    • 这是有道理的,也是我的想法。但是,我的问题是,您能否让业务层对文化敏感并像 Web 项目一样自动获取正确的资源文件(Strings.resx、Strings.es.resx、String.fr.resx 等)?或者您是否必须从网络项目中传递文化信息并从中选择正确的资源文件?
    • 运行时使用在运行线程中指定的文化,这(通常)由 Web 应用程序设置,所以是的,会自动使用适当的文化。
    • 酷。我得去看看。谢谢。
    • 如果有人使用 Cookie 来控制 Web 项目中的本地化而不是运行时文化怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    • 2011-12-06
    • 2011-06-16
    • 2012-09-10
    • 2014-04-23
    • 1970-01-01
    相关资源
    最近更新 更多