使用多语言支持的"正确"方式

Fel*_*yde 4 asp.net multilingual visual-studio-2010

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

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

  1. 我应该将网站中的每个文本都作为标签保存并在资源文件中管理其内容吗?看起来/感觉奇怪,特别是在考虑带有几个段落的文本时.

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

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

Sea*_*ver 8

多年来,ASP.NET Web窗体本地化的最佳实践并没有真正发生太大变化.如果您没有太多动态内容,那么您可以放弃隐式本地化并将Web表单控件(表单元素和是,甚至标签)绑定到资源文件.如果您想要更多地控制在具有多个标题的控件中呈现本地化文本的位置或您自己创建的内容,则显式本地化非常有用.对于如何执行其中任何一项操作,您无需从MS的指导步骤看起来很远.

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

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

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

扩展资源提供程序以在数据库中存储资源*更新的实现

或者你可以自己动手!

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

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