4

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

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

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

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

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

4

1 回答 1

8

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

演练:通过 ASP.NET 使用资源进行本地化

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

扩展 ASP.NET 2.0 资源提供者模型,构建数据库资源提供者

扩展 Resource-Provider 以在数据库中存储资源* 一个更新的实现

或者你可以自己动手!

我还挖了一个重复的 SO 帖子。它已经有几年的历史了,但从经验来看,我相信在引用的代码项目页面上找到的建议仍然是正确的(对于 Web 窗体):全球化和本地化在 ASP.NET 2.0 中揭开神秘面纱

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

于 2012-06-30T15:12:28.333 回答