2008-10-02 91 views
17

我一直在玩.NET内置的本地化功能,他们似乎都依赖于将数据放入resx文件。你如何本地化一个数据库驱动的网站

但是大多数系统不能依靠这个,因为它们是数据库驱动的。那么你如何解决这个问题呢?有没有建立在.NET的方式,或者你在SQL中创建一个翻译表,并手动做这一切?如果你必须在大多数网站上这样做,是否有任何理由甚至使用resx的本地化方式?

一个例子是我在我的网站上有一个FAQ列表,我在数据库中保存了这个列表,所以我可以轻松地添加/删除更多,但通过将其放入数据库中,我没有好的方法来翻译这个信息转换成多种语言。

回答

16

在我看来,本地化动态内容(例如,你的FAQ)应该由你在你的数据库中完成。根据问题的存储方式,我可能会创建一个“区域设置”列,并在从数据库中选择常见问题时使用该列。我不确定当你开始本地化大量表格时这是否会很好地扩展。

对于静态内容(例如,表单字段标签,静态文本,图标等),您应该可以很好地使用基于文件的资源。但是,如果你真的想要创建一个可以处理这个问题的自定义资源提供者实现,这看起来不会太难。

下面是一些相关链接:

0

目前,T转换不是可以自动完成的。最好的方法是让一个人翻译并使用Nick的方法来显示正确的语言。

2

对于数据模型中的给定项目,将说明部分拆分为具有区域设置Id列(LCID)的本地化表格。

所以表产品不会实际上包含的产品描述或名称,而只是它的硬性价值(产品编号,EAN,NumberInStock,NextStockData,IsActive,|评论)等

产品描述则包含 ProductId,Name,Description,LCID

2

我住在加拿大,所以使用多种语言是一件大事。我见过两种方法。第一个选项是将特定记录的所有本地化数据存储在不同的表中,通过主键链接到原始表以及区域设置。第二种选择类似于第一种,除了每种语言环境都有一个不同的表格,区域设置作为表格名称的后缀。

选项A

Item (ItemID, ...) 
ItemLocal (ItemID,LocaleID,....) 

选项B

Item (ItemID, ...) 
Item_ENUS (ItemID,....) 
Item_ENGB (ItemID,....) 
Item_FR (ItemID,....) 

第三个选择我想到了最近的,这将是非常好的,如果一个数据库支持它本身是存储值的所有当地人在同一个领域。如果该字段设置为varchar-multilocal,那么您将不得不通过传递参数来指定语言来访问它。就我所知,没有像这样存在的东西,但是我认为这会让事情变得更容易,并且更加流畅。

+3

FYI:local!= locale – Tanktalus 2008-10-02 20:04:14