我刚刚开始使用ASP.NET,我试图带来一些我认为健康的编码标准。在这些标准中,有多语言支持和资源使用,可以轻松处理未来的变化。
当我以前编写桌面应用程序代码时,每个文本都必须翻译,因此通常的做法是为每个我希望提供给客户的语言提供语言文件。在这些文件中,我会映射每个文本,从按钮标签到错误消息。在ASP.NET中,在Visual Studio的帮助下,我可以使用IDE生成这样的资源文件(来自Tools - > Generate Local Resource),但是我必须用标签填充我的网页 - 至少这就是我从文章和教程中学到的东西。然而,这种方法看起来有点奇怪,我很想猜它也闻不到那么好。现在回答问题:
我应该将网站中的每个文字都作为标签保存并在资源文件中管理其内容吗?它看起来很奇怪,尤其是在考虑带有几个段落的文本时。
每当我添加/删除某些内容(例如:按钮)到aspx文件时,我也必须将其添加到资源文件中,因为再次生成资源文件会简单地覆盖我以前对它的所有更改。对我来说,这根本不是一个可重复使用的代码。
也许我从教程中弄错了,因为它似乎不是一个标准化的问题 - 特别是如果它需要在需要进行一些更改时重新编译整个应用程序。
答案 0 :(得分:8)
多年来,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
我希望有所帮助!如果您对本地化有任何更具体的问题,请将其添加到您的问题或评论中。