所述“正确"字样是“正确的".使用多语言支持的方式 [英] The "correct" way of using multilingual support

查看:89
本文介绍了所述“正确"字样是“正确的".使用多语言支持的方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

返回时,我曾经为桌面应用程序编写代码,每个文本都必须翻译,因此通常的做法是拥有要提供给客户的每种语言的语言文件.在这些文件中,我将映射每个文本,从按钮标签到错误消息.在ASP.NET中,借助于Visual Studio,我不得不使用IDE来生成这样的资源文件(从工具"->生成本地资源"),但是然后我必须在我的网页上填充标签-至少这是我从文章和教程中学到的东西.但是,这种方法看起来有些奇怪,我很想知道它也没有那么香.现在问题来了:

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

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

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

解决方案

多年来,ASP.NET Web Forms本地化的最佳实践并没有真正改变.如果您没有太多动态内容,则可以摆脱隐式本地化,并将Web表单控件(表单元素甚至是标签)绑定到资源文件.如果您想要更多地控制本地化文本在带有多个标题或您自己创建的控件的控件中的位置,则显式本地化很有用.您无需花太多时间就可以找到MS上有关如何执行这两个步骤的指导步骤.

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

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

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

用于在数据库中存储资源的扩展Resource-Provider *一种最新的实现方式

或者您也可以自己动手!

我也挖了一个重复的SO帖子.它已有几年历史了,但是根据经验,我认为在引用的代码项目页面上找到的建议仍然是正确的(对于Web窗体): 解决方案

Best practices for ASP.NET Web Forms localization have not really changed much over the years. If you don't have much dynamic content then you can get away with implicit localization and bind web forms controls (form elements and yes, even labels) to resource files. Explicit localization is useful if you want a bit more control over where localized text is rendered in a control with multiple captions or something you've created yourself. You don't need to look very far for instructional steps from MS on how to do either of these.

Walkthrough: Using Resources for Localization with ASP.NET

If your localization requirements are more dynamic, for example, you want to easily provision new languages, centralize resources, or you need to provision new string captions on a new dimension (like per client), then you need to get a bit more creative. .NET allows you to extend the the resource provider and you can implement a database backend that allows for easy administration of localized resources.

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

Extending Resource-Provider for storing resources in the database * A more recent implementation

Or you could just roll your own!

I've also dug up a duplicate SO post. It's a few years old, but speaking from experience I believe the advice found on the referenced code project page are still true (for Web Forms): Globalization and localization demystified in ASP.NET 2.0

I hope that helps! If you have any more specific questions regarding localization please add them to your Questions or comments.

这篇关于所述“正确"字样是“正确的".使用多语言支持的方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆