【问题标题】:The "correct" way of using multilingual support使用多语言支持的“正确”方式
【发布时间】:2015-09-27 10:08:14
【问题描述】:

我刚开始使用 ASP.NET,我正在尝试带来一些我认为健康的编码标准。在这些标准中,有多语言支持和资源使用以轻松处理未来的变化。

当我过去编写桌面应用程序的代码时,每个文本都必须翻译,因此为我想向客户提供的每种语言提供语言文件是一种常见的做法。在这些文件中,我将映射每一个文本,从按钮标签到错误消息。在 ASP.NET 中,在 Visual Studio 的帮助下,我不得不使用 IDE 来生成此类资源文件(从工具 -> 生成本地资源),但是我必须用标签填充我的网页 - 至少那样是我从文章和教程中学到的。然而,这种方法看起来有点奇怪,我很想猜测它闻起来也没有那么好。现在问题来了:

  1. 我是否应该将网站中的每一个文本都作为标签保留并在资源文件中管理其内容?尤其是在考虑包含多个段落的文本时,它看起来/感觉很奇怪。

  2. 每当我向 aspx 文件添加/删除某些内容(例如:按钮)时,我也必须将其添加到资源文件中,因为再次生成资源文件只会覆盖我之前对其所做的所有更改.对我来说,这根本不像是可重用的代码。

也许我从教程中弄错了,因为它看起来不像是一个标准化的问题 - 特别是如果它需要在必须进行某些更改时重新编译整个应用程序。

【问题讨论】:

  • 对于初学者,我建议阅读 Satinder Singh 的 this article。清晰易懂。

标签: asp.net visual-studio-2010 multilingual


【解决方案1】:

多年来,ASP.NET Web 窗体本地化的最佳实践并没有真正改变。如果您没有太多动态内容,那么您可以摆脱隐式本地化并将 Web 表单控件(表单元素,是的,甚至标签)绑定到资源文件。如果您想要更多地控制本地化文本在具有多个标题或您自己创建的控件中呈现的位置,则显式本地化很有用。您无需费心寻找 MS 提供的有关如何执行其中任何一项的说明性步骤。

Walkthrough: Using Resources for Localization with ASP.NET

如果您的本地化要求更加动态,例如,您希望轻松提供新语言、集中资源,或者您需要在新维度(如每个客户)上提供新的字符串标题,那么你需要多一点创意。 .NET 允许您扩展 资源提供者,您可以实现一个数据库后端,以便轻松管理本地化资源。

Extending the ASP.NET 2.0 Resource-Provider Model, Building a Database Resource Provider

Extending Resource-Provider for storing resources in the database * 一个更新的实现

或者你可以自己滚动!

我还挖出了一个重复的 SO 帖子。它已经有几年了,但从经验来看,我相信在引用的代码项目页面上找到的建议仍然是正确的(对于 Web 表单):Globalization and localization demystified in ASP.NET 2.0

希望对您有所帮助!如果您对本地化有任何更具体的问题,请将它们添加到您的问题或 cmets。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2011-11-08
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多