设置语言方向相应的dir属性
许多时候,我们还需要设置本地化文本的方向(这是使用<html>或<body>标签的dir属性设置的)。这是必需的,因为有些语言从右到左(RTL)读取,例如Arabic,不同于象Hindi和English这样语言的标准的从左到右(LTR)的读取方式。这可以通过把.resx文件中的dir属性设置为适当的值来实现。
首先,你可以在所有资源文件中创建一个Direction(你可以使用任何名)域,并基于单个资源文件把它的属性设置为RTL或LTR。对于Arabic,这个域的值是RTL,而对于Hindi则是LTR。然后,把<body>标签的dir属性设置为如下:
<body runat="server" dir="<%$ Resources: TestSiteResources, Direction %>"> |
这样就可以设置正确的方向,因为该值来自于资源文件(基于当前线程文化)。
三、使用数据库实现本地化 我们已经看到了如何本地化控件的文本和UI描述。但是,存储在数据库中的内容会怎么呢?其实,这一部分内容也需要本地化,但是由于它存储在一个DB中,所以我们不能使用资源文件来实现相同目的。为此,我们需要创建新的表格。
假定我有一个存储用户评价的表格。该表格结构如下所示:
现在,我们想实现以本地化的文本来显示Comments和Name字段,但是,我们不可能把所有这些域的不同语言版本都存储在同一个表格中(既然存在不需要被本地化但却重复的其它域)。因此,我们需要重新组织该表格结构并且创建另一个表格来存储这两个域的本地化版本。首先,我们需要从这个表格中删除这两个域并创建一个如下所示的新表格:
在此,我们添加了一个新域:CultureID,它等价于LCID(或Locale标识符)。我们能够按如下所示添加文化特定的本地化数据:
现在,我们可以使用以CultureID(LCID)作为参数的SQL查询来取得本地化内容。我们还能够提供一个用户接口来把本地化数据输入到这样的表格以便能够以一种交互方式创建相应的内容。
四、总结 在本文中,我们讨论了在ASP.NET 2.0开发中有关实现全球化的一些重要方面,并且看到,这是非常容易实现的事情;但是,也存在许多值得注意的重要问题:
1.不要依赖于web浏览器的设置。你可以在应用程序中显示一个链接(可以在头部位置)以便用户能够通过点击它来选择他们的语言。
2.使用资源文件来把GUI中与描述相关的数据分离开来。资源fallback是ASP.NET使用的方法-当它不能找到相应于一种特定文化的资源文件时。它将首先试用中立资源文件,然后是缺省的资源文件或fallback资源文件(TestSiteResource.resx)。
3.使用数据库表格把数据存储到一个DB中。为此,你需要创建单独的表格来存储本地化内容。
4.如果你使用sn.exe来为你的主应用程序程序集创建一个强类型名,那么,你需要使用同一对密钥对(由sn.exe生成)中的私钥来签名你的小程序集;因为,强类型名字的程序集要求小程序集也应该是强类型名字。
查看本文来源