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

4

我刚开始接触ASP.NET,尝试将一些健康的编码标准带入其中。其中一个标准是多语言支持和使用资源轻松处理未来的更改。

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

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

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

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


对于初学者,我建议阅读Satinder Singh的这篇文章。内容清晰易懂。 - Ahmad Maleki
1个回答

8
多年来,ASP.NET Web表单本地化的最佳实践基本没有什么改变。如果您没有太多的动态内容,那么您可以使用隐式本地化并将Web表单控件(表单元素和甚至标签)绑定到资源文件。如果您想对带有多个字幕的控件或自己创建的控件中的本地化文本的呈现位置有更多的控制,则显式本地化非常有用。您不需要在MS的指导步骤中寻找很远就可以完成这些操作。 ASP.NET资源本地化演练 如果您的本地化要求更加动态,例如,您想轻松提供新语言,集中资源,或者需要在新维度(如每个客户端)上为新字符串字幕提供支持,则需要更有创意。 .NET允许您扩展资源提供程序,并实现一个数据库后端,以便轻松管理本地化资源。 扩展ASP.NET 2.0资源提供程序模型,构建数据库资源提供程序

将资源提供程序扩展以将资源存储在数据库中*一个更近期的实现

或者你可以自己动手!

我还找到了一个重复的SO帖子。虽然它已经几年了,但从我的经验来看,我相信在引用的代码项目页面上找到的建议仍然适用于Web Forms:ASP.NET 2.0中的全球化和本地化解密

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接