数据库应该怎么设计呢?谁有这方面的资料,谢谢。
31 个解决方案
#1
asp.net 怎么实现页面多国语言的切换??
==
看看ASP.NET 2.0的资源文件的使用
==
看看ASP.NET 2.0的资源文件的使用
#2
你是指在中文系统看是中文 英文系统是英文么 可以看看这个微软的官方视频或者像楼上的建议去看资源文件的使用
http://www.asp.net/learn/videos/video-40.aspx
http://www.asp.net/learn/videos/video-40.aspx
#3
简单的可用XML
复杂的就用资源文件配置
复杂的就用资源文件配置
#4
对每个页面建立资源文件 .resx
#5
JS
#6
跟楼主一样,学习中……
#7
#8
http://www.hydroponics.hk
#9
看看ASP.NET 2.0的资源文件的使用
------------------------------------
每一种语言对应一种资源文件,
你可以自定义设置使用哪种语言,或是由客户端所在区域来*选择拿种语言(资源文件)
------------------------------------
每一种语言对应一种资源文件,
你可以自定义设置使用哪种语言,或是由客户端所在区域来*选择拿种语言(资源文件)
#10
关注.....
#11
数据库呢?是每种语言的建一个字段吗?
#12
学习了
没有遇到过
没有遇到过
#13
you could look at http://msdn.microsoft.com/zh-cn/library/c6zyy3s9.aspx
#14
资源文件比较方便
参考:http://blog.csdn.net/lanlan520/archive/2007/07/27/1711442.aspx
参考:http://blog.csdn.net/lanlan520/archive/2007/07/27/1711442.aspx
#15
感觉还是资源文件方式不错
#16
至于网站内容的语言 可以建几个表 分别存放不同的语言版内容,也可以在一个表加个languageid字段 随意了
#17
顶一下
#18
刚进公司不久,正在了解中
#19
....貌似ie的客户端可以自己解决
如果想弄出两个语种版本的话,那就写两个aspx呗
如果想弄出两个语种版本的话,那就写两个aspx呗
#20
这样的话,不是等于做两个站了。文件一大堆,到时候如果需要修改,也很麻烦吧。
#21
了解了
#22
使用本地资源文件
#23
up
#24
关注..
#25
如果您创建的网页将由使用不同语言的用户阅读,则必须为这些读者提供用他们自己的语言查看网页的方法。一种方法是分别用各语言重新创建页面,但这种方法可能需要大量工作量、容易出错并且在更改原始页时很难维护。
ASP.NET 为您提供了一种方法,使用这种方法创建的页可以根据浏览器的首选语言设置或用户显式选择的语言获取内容和其他数据。内容和其他数据指的就是资源,此类数据可以存储在资源文件或其他源中。
在 ASP.NET 网页中,可以将控件配置为从资源获取其属性值。在运行时,资源表达式将被相应资源文件中的资源替换。
资源文件
资源文件是 XML 文件,其中包含要转换为不同语言或图像路径的字符串。资源文件包含键/值对,每一对都是一个单独的资源。键名不区分大小写。例如,资源文件可能包含带有 Button1 键和 Submit 值的资源。
您需要为每种语言(如英语和法语)或每种语言和区域性(如英语 [英国]、英语 [美国])分别创建一个资源文件。每个本地化资源文件都有相同的键/值对;本地化资源文件与默认资源文件的唯一区别就是前者所包含的资源可能少于后者。然后,语言回退处理非特定资源或默认资源的加载。
ASP.NET 中的资源文件具有 .resx 扩展名。在运行时,.resx 文件将编译进一个程序集内,该程序集有时称为附属程序集。由于 .resx 文件是用与 ASP.NET 网页相同的方式动态编译的,因此不必创建资源程序集。编译过程将多个语言类似的资源文件压缩在同一程序集内。
在创建资源文件时,首先开始创建基文件 .resx。对于要支持的每种语言,分别创建一个新文件,该文件具有同一基本文件名但包含语言或语言及区域性(区域性名称)。有关区域性名称的列表,请参见 CultureInfo。例如,您可以创建下列文件:
WebResources.resx
基资源文件。该文件是默认或后备资源文件。
WebResources.es.resx
西班牙语的资源文件。
WebResources.es-mx.resx
专用于西班牙语(墨西哥)的资源文件。
WebResources.de.resx
德语的资源文件。
在运行时,ASP.NET 使用与 CurrentUICulture 属性的设置最为匹配的资源文件。线程的 UI 区域性根据页的 UI 区域性进行设置。例如,如果当前的 UI 区域性是西班牙语,则 ASP.NET 使用 WebResources.es.resx 文件的已编译版本。如果当前的 UI 区域性没有匹配项,则 ASP.NET 会使用资源后备;首先用特定区域性的资源,接着用非特定区域性,最后用默认资源文件。在本例中,默认资源文件是 WebResource.resx。
为 ASP.NET 网站创建资源文件
在 ASP.NET 中,可以创建具有不同范围的资源文件。可以创建全局资源文件,这意味着可以从位于网站中的任意页或代码读取这些资源文件。也可以创建本地资源文件,这些文件存储单个 ASP.NET 网页(.aspx 文件)的资源。
全局资源文件
将资源文件放入应用程序根目录的保留文件夹 App_GlobalResources 中,即可创建全局资源文件。App_GlobalResources 文件夹中的任何 .resx 文件都具有全局范围。此外,ASP.NET 还生成了一个强类型对象,这为开发人员提供了一种以编程方式访问全局资源的简单方法。
本地资源文件
本地资源文件是只应用于一个 ASP.NET 页的文件(带有 .aspx、.ascx、.master 等扩展名的 ASP.NET 页)。本地资源文件所放入的文件夹具有 App_LocalResources 保留名称。App_LocalResources 文件夹可以存在于应用程序的任何文件夹中,这与 App_GlobalResources 根文件夹不同。通过资源文件名将一组资源文件与特定的网页相关联。
例如,如果在 App_LocalResources 文件夹中有一个名为 Default.aspx 的页,则可以创建下列文件:
Default.aspx.resx
默认的本地资源文件,如果找不到语言匹配项,则该文件为后备资源文件。
Default.aspx.es.resx
西班牙语的资源文件,不包含区域性信息。
Default.aspx.es-mx.resx
专用于西班牙语(墨西哥)的资源文件。
Default.aspx.de.resx
法语的资源文件,不包含区域性信息。
文件的基名称与页文件名相同,后跟语言和区域性名称,最后以扩展名 .resx 结尾。有关区域性名称的列表,请参见 CultureInfo。
在全局和本地资源文件之间选择
在 Web 应用程序中,可以任意组合使用全局和本地资源文件。通常情况下,当您希望在各页之间共享资源时,应向全局资源文件添加这些资源。全局资源文件中的资源还是强类型的,用于以编程方式访问。
但如果将所有本地化资源都存储在全局资源文件中,则这些文件会变得很大。此外,如果多个开发人员要处理不同的页但在同一个资源文件中工作时,全局资源文件也会更难于管理。
本地资源文件使得单个 ASP.NET 网页的资源比较容易管理,但您不能在各页之间共享资源。此外,如果有许多页必须本地化为多种语言,则可能会创建大量本地资源文件。如果站点是具有许多文件夹和使用多种语言的大型站点,则使用本地资源可能快速地在应用程序域中扩展程序集的数量。
在对默认资源文件进行更改时,无论它是本地资源文件还是全局资源文件,ASP.NET 都重新编译资源并重新启动 ASP.NET 应用程序,这可能会影响站点的整体性能。添加附属资源文件将不会导致重新编译资源,但 ASP.NET 应用程序仍将重新启动。
注意
只有全局资源文件支持链接资源。
在网页中使用资源
创建资源文件后,即可在 ASP.NET 网页中使用这些文件。通常使用资源来填充页上各控件的属性值。例如,可以使用资源设置 Button 控件的 Text 属性,而不必将该属性硬编码为特定的字符串。
若要使用资源设置控件属性值,可以使用隐式本地化或显式本地化,如下所示:
隐式本地化使用的是本地资源,并允许您将控件属性自动设置为匹配的资源。
显式本地化使您可以使用资源表达式将控件属性设置为本地或全局资源文件中的特定资源。
使用本地资源的隐式本地化
如果您已为特定页创建了本地资源文件,则可以使用隐式本地化从该资源文件中为控件填充属性值。使用隐式本地化时,ASP.NET 读取资源文件并将资源与属性值相匹配。
若要使用隐式本地化,必须对本地资源文件中的资源使用命名约定,命名约定采用以下模式:
Key . Property
例如,若要为名为 Button1 的 Button 控件创建资源,可以在本地资源文件中创建以下键/值对:
复制代码
Button1.Text
Button1.BackColor
Label1.Text
可以对 Key 使用任意名称,但 Property 必须与要本地化的控件的属性相匹配。
在页上,对该控件的标记使用特殊的 meta 属性可指定隐式本地化。不必显式指定要本地化的属性。配置为使用隐式本地化的 Button 控件看起来可能类似于下面的形式:
复制代码
<asp:Button ID="Button1" runat="server" Text="DefaultText"
meta:resourcekey="Button1" />
resourcekey 值与相应资源文件中的键相匹配。在运行时,ASP.NET 通过将控件标签用作 resourcekey 将资源与控件属性相匹配。如果在资源文件中定义了某个属性值,则 ASP.NET 会用资源值替换该属性。
显式本地化
此外,也可以使用显式本地化,此时将使用资源表达式。与隐式本地化不同,必须为要设置的每个属性分别使用一个资源表达式。
配置为从全局资源文件设置 Text 属性的 Button 控件看起来可能类似于下面这样:
复制代码
<asp:Button ID="Button1" runat="server"
Text="<%$ Resources:WebResources, Button1Caption %>" />
该资源表达式采用以下形式,其中 Class 是可选的(除非资源是全局资源),而 ResourceID 是必需的:
<%$ Resources: Class , ResourceID %>
Class 值标识要在使用全局资源时使用的资源文件。在编译 .resx 文件时,将不带扩展名的基文件名显式用作所得程序集的类名。若要使用本地资源文件(与当前页名匹配的文件)中的资源,则不必提供类名,因为 ASP.NET 将该页类与资源类相匹配。
ResourceID 值是要读取的资源的标识符。在前面的示例中,从全局资源文件 WebResources.resx(或相应的本地化版本)读取按钮的 Text 属性。在该文件中,ASP.NET 将该值用于带有标识符 Button1Caption 的资源及页本身。若要设置页属性,可以在 @ Page 指令中使用资源表达式。
本地化静态文本
如果页面包含静态文本,则可以使用 ASP.NET 本地化,方法是将该本地化包含在 Localize 控件中,然后使用显式本地化设置该静态文本。Localize 控件不呈现标记;它的唯一功能就是充当本地化文本的占位符。Localize 控件不仅可以在属性网格中编辑,还可以在“设计”视图中编辑。在运行时,ASP.NET 将 Localize 控件视为 Literal 控件。例如,页面可能包含下面的代码:
复制代码
<h1>
<asp:Localize runat=server
ID="WelcomeMessage"
Text="Welcome!" meta:resourcekey="LiteralResource1" />
</h1>
<br />
<br />
<asp:Localize runat="server"
ID="NameCaption"
Text="Name: " meta:resourcekey="LiteralResource2" />
<asp:TextBox runat="server" ID="TextBox1"
meta:resourcekey="TextBox1Resource1" />
为不同的语言选择资源文件
当正在运行某页并且 ASP.NET 正在从资源管理器中检索值时,ASP.NET 为该页选择与当前 UICulture 设置匹配程度最高的资源文件版本,或者使用资源后备获取资源。例如,如果正在运行 Default.aspx 页并且当前的 UICulture 属性设置为 es(西班牙语),则 ASP.NET 使用本地资源文件 Default.aspx.es.resx 的已编译版本。
ASP.NET 可以将该页的 UICulture 和 Culture 属性设置为浏览器所传递的语言和区域性值。或者,可以以声明方式或通过使用代码显式设置 UICulture 和 Culture 属性。还可以在 Web.config 文件中以声明方式设置这些值。有关详细信息,请参见如何:为 ASP.NET 网页全球化设置区域性和 UI 区域性。
注意
不应唯一依赖浏览器设置来设置语言和区域性信息,因为用户使用的可能不是自己计算机上的浏览器。此外,浏览器经常只传送语言,而不传送特定的区域性。在这种情况下,服务器必须推导数据格式设置的特定区域性。一个好的策略就是让用户显式选择语言。
ASP.NET 为您提供了一种方法,使用这种方法创建的页可以根据浏览器的首选语言设置或用户显式选择的语言获取内容和其他数据。内容和其他数据指的就是资源,此类数据可以存储在资源文件或其他源中。
在 ASP.NET 网页中,可以将控件配置为从资源获取其属性值。在运行时,资源表达式将被相应资源文件中的资源替换。
资源文件
资源文件是 XML 文件,其中包含要转换为不同语言或图像路径的字符串。资源文件包含键/值对,每一对都是一个单独的资源。键名不区分大小写。例如,资源文件可能包含带有 Button1 键和 Submit 值的资源。
您需要为每种语言(如英语和法语)或每种语言和区域性(如英语 [英国]、英语 [美国])分别创建一个资源文件。每个本地化资源文件都有相同的键/值对;本地化资源文件与默认资源文件的唯一区别就是前者所包含的资源可能少于后者。然后,语言回退处理非特定资源或默认资源的加载。
ASP.NET 中的资源文件具有 .resx 扩展名。在运行时,.resx 文件将编译进一个程序集内,该程序集有时称为附属程序集。由于 .resx 文件是用与 ASP.NET 网页相同的方式动态编译的,因此不必创建资源程序集。编译过程将多个语言类似的资源文件压缩在同一程序集内。
在创建资源文件时,首先开始创建基文件 .resx。对于要支持的每种语言,分别创建一个新文件,该文件具有同一基本文件名但包含语言或语言及区域性(区域性名称)。有关区域性名称的列表,请参见 CultureInfo。例如,您可以创建下列文件:
WebResources.resx
基资源文件。该文件是默认或后备资源文件。
WebResources.es.resx
西班牙语的资源文件。
WebResources.es-mx.resx
专用于西班牙语(墨西哥)的资源文件。
WebResources.de.resx
德语的资源文件。
在运行时,ASP.NET 使用与 CurrentUICulture 属性的设置最为匹配的资源文件。线程的 UI 区域性根据页的 UI 区域性进行设置。例如,如果当前的 UI 区域性是西班牙语,则 ASP.NET 使用 WebResources.es.resx 文件的已编译版本。如果当前的 UI 区域性没有匹配项,则 ASP.NET 会使用资源后备;首先用特定区域性的资源,接着用非特定区域性,最后用默认资源文件。在本例中,默认资源文件是 WebResource.resx。
为 ASP.NET 网站创建资源文件
在 ASP.NET 中,可以创建具有不同范围的资源文件。可以创建全局资源文件,这意味着可以从位于网站中的任意页或代码读取这些资源文件。也可以创建本地资源文件,这些文件存储单个 ASP.NET 网页(.aspx 文件)的资源。
全局资源文件
将资源文件放入应用程序根目录的保留文件夹 App_GlobalResources 中,即可创建全局资源文件。App_GlobalResources 文件夹中的任何 .resx 文件都具有全局范围。此外,ASP.NET 还生成了一个强类型对象,这为开发人员提供了一种以编程方式访问全局资源的简单方法。
本地资源文件
本地资源文件是只应用于一个 ASP.NET 页的文件(带有 .aspx、.ascx、.master 等扩展名的 ASP.NET 页)。本地资源文件所放入的文件夹具有 App_LocalResources 保留名称。App_LocalResources 文件夹可以存在于应用程序的任何文件夹中,这与 App_GlobalResources 根文件夹不同。通过资源文件名将一组资源文件与特定的网页相关联。
例如,如果在 App_LocalResources 文件夹中有一个名为 Default.aspx 的页,则可以创建下列文件:
Default.aspx.resx
默认的本地资源文件,如果找不到语言匹配项,则该文件为后备资源文件。
Default.aspx.es.resx
西班牙语的资源文件,不包含区域性信息。
Default.aspx.es-mx.resx
专用于西班牙语(墨西哥)的资源文件。
Default.aspx.de.resx
法语的资源文件,不包含区域性信息。
文件的基名称与页文件名相同,后跟语言和区域性名称,最后以扩展名 .resx 结尾。有关区域性名称的列表,请参见 CultureInfo。
在全局和本地资源文件之间选择
在 Web 应用程序中,可以任意组合使用全局和本地资源文件。通常情况下,当您希望在各页之间共享资源时,应向全局资源文件添加这些资源。全局资源文件中的资源还是强类型的,用于以编程方式访问。
但如果将所有本地化资源都存储在全局资源文件中,则这些文件会变得很大。此外,如果多个开发人员要处理不同的页但在同一个资源文件中工作时,全局资源文件也会更难于管理。
本地资源文件使得单个 ASP.NET 网页的资源比较容易管理,但您不能在各页之间共享资源。此外,如果有许多页必须本地化为多种语言,则可能会创建大量本地资源文件。如果站点是具有许多文件夹和使用多种语言的大型站点,则使用本地资源可能快速地在应用程序域中扩展程序集的数量。
在对默认资源文件进行更改时,无论它是本地资源文件还是全局资源文件,ASP.NET 都重新编译资源并重新启动 ASP.NET 应用程序,这可能会影响站点的整体性能。添加附属资源文件将不会导致重新编译资源,但 ASP.NET 应用程序仍将重新启动。
注意
只有全局资源文件支持链接资源。
在网页中使用资源
创建资源文件后,即可在 ASP.NET 网页中使用这些文件。通常使用资源来填充页上各控件的属性值。例如,可以使用资源设置 Button 控件的 Text 属性,而不必将该属性硬编码为特定的字符串。
若要使用资源设置控件属性值,可以使用隐式本地化或显式本地化,如下所示:
隐式本地化使用的是本地资源,并允许您将控件属性自动设置为匹配的资源。
显式本地化使您可以使用资源表达式将控件属性设置为本地或全局资源文件中的特定资源。
使用本地资源的隐式本地化
如果您已为特定页创建了本地资源文件,则可以使用隐式本地化从该资源文件中为控件填充属性值。使用隐式本地化时,ASP.NET 读取资源文件并将资源与属性值相匹配。
若要使用隐式本地化,必须对本地资源文件中的资源使用命名约定,命名约定采用以下模式:
Key . Property
例如,若要为名为 Button1 的 Button 控件创建资源,可以在本地资源文件中创建以下键/值对:
复制代码
Button1.Text
Button1.BackColor
Label1.Text
可以对 Key 使用任意名称,但 Property 必须与要本地化的控件的属性相匹配。
在页上,对该控件的标记使用特殊的 meta 属性可指定隐式本地化。不必显式指定要本地化的属性。配置为使用隐式本地化的 Button 控件看起来可能类似于下面的形式:
复制代码
<asp:Button ID="Button1" runat="server" Text="DefaultText"
meta:resourcekey="Button1" />
resourcekey 值与相应资源文件中的键相匹配。在运行时,ASP.NET 通过将控件标签用作 resourcekey 将资源与控件属性相匹配。如果在资源文件中定义了某个属性值,则 ASP.NET 会用资源值替换该属性。
显式本地化
此外,也可以使用显式本地化,此时将使用资源表达式。与隐式本地化不同,必须为要设置的每个属性分别使用一个资源表达式。
配置为从全局资源文件设置 Text 属性的 Button 控件看起来可能类似于下面这样:
复制代码
<asp:Button ID="Button1" runat="server"
Text="<%$ Resources:WebResources, Button1Caption %>" />
该资源表达式采用以下形式,其中 Class 是可选的(除非资源是全局资源),而 ResourceID 是必需的:
<%$ Resources: Class , ResourceID %>
Class 值标识要在使用全局资源时使用的资源文件。在编译 .resx 文件时,将不带扩展名的基文件名显式用作所得程序集的类名。若要使用本地资源文件(与当前页名匹配的文件)中的资源,则不必提供类名,因为 ASP.NET 将该页类与资源类相匹配。
ResourceID 值是要读取的资源的标识符。在前面的示例中,从全局资源文件 WebResources.resx(或相应的本地化版本)读取按钮的 Text 属性。在该文件中,ASP.NET 将该值用于带有标识符 Button1Caption 的资源及页本身。若要设置页属性,可以在 @ Page 指令中使用资源表达式。
本地化静态文本
如果页面包含静态文本,则可以使用 ASP.NET 本地化,方法是将该本地化包含在 Localize 控件中,然后使用显式本地化设置该静态文本。Localize 控件不呈现标记;它的唯一功能就是充当本地化文本的占位符。Localize 控件不仅可以在属性网格中编辑,还可以在“设计”视图中编辑。在运行时,ASP.NET 将 Localize 控件视为 Literal 控件。例如,页面可能包含下面的代码:
复制代码
<h1>
<asp:Localize runat=server
ID="WelcomeMessage"
Text="Welcome!" meta:resourcekey="LiteralResource1" />
</h1>
<br />
<br />
<asp:Localize runat="server"
ID="NameCaption"
Text="Name: " meta:resourcekey="LiteralResource2" />
<asp:TextBox runat="server" ID="TextBox1"
meta:resourcekey="TextBox1Resource1" />
为不同的语言选择资源文件
当正在运行某页并且 ASP.NET 正在从资源管理器中检索值时,ASP.NET 为该页选择与当前 UICulture 设置匹配程度最高的资源文件版本,或者使用资源后备获取资源。例如,如果正在运行 Default.aspx 页并且当前的 UICulture 属性设置为 es(西班牙语),则 ASP.NET 使用本地资源文件 Default.aspx.es.resx 的已编译版本。
ASP.NET 可以将该页的 UICulture 和 Culture 属性设置为浏览器所传递的语言和区域性值。或者,可以以声明方式或通过使用代码显式设置 UICulture 和 Culture 属性。还可以在 Web.config 文件中以声明方式设置这些值。有关详细信息,请参见如何:为 ASP.NET 网页全球化设置区域性和 UI 区域性。
注意
不应唯一依赖浏览器设置来设置语言和区域性信息,因为用户使用的可能不是自己计算机上的浏览器。此外,浏览器经常只传送语言,而不传送特定的区域性。在这种情况下,服务器必须推导数据格式设置的特定区域性。一个好的策略就是让用户显式选择语言。
#26
学习,可能会用到
#27
学习
#28
aspx页面一个就够了,但是对应的 .resx文件需要每种语言准备一个
数据库就不好解决了,如果本来存的就是英文的东西难道你在别人存的时候自己翻译成中文的再存一次吗?
数据库就不好解决了,如果本来存的就是英文的东西难道你在别人存的时候自己翻译成中文的再存一次吗?
#29
用资源文件
#30
http://topic.csdn.net/u/20080610/10/0fcb8e50-ddc6-4cdc-9897-3215d2c30f5e.html
#31
友情UP下
#1
asp.net 怎么实现页面多国语言的切换??
==
看看ASP.NET 2.0的资源文件的使用
==
看看ASP.NET 2.0的资源文件的使用
#2
你是指在中文系统看是中文 英文系统是英文么 可以看看这个微软的官方视频或者像楼上的建议去看资源文件的使用
http://www.asp.net/learn/videos/video-40.aspx
http://www.asp.net/learn/videos/video-40.aspx
#3
简单的可用XML
复杂的就用资源文件配置
复杂的就用资源文件配置
#4
对每个页面建立资源文件 .resx
#5
JS
#6
跟楼主一样,学习中……
#7
#8
http://www.hydroponics.hk
#9
看看ASP.NET 2.0的资源文件的使用
------------------------------------
每一种语言对应一种资源文件,
你可以自定义设置使用哪种语言,或是由客户端所在区域来*选择拿种语言(资源文件)
------------------------------------
每一种语言对应一种资源文件,
你可以自定义设置使用哪种语言,或是由客户端所在区域来*选择拿种语言(资源文件)
#10
关注.....
#11
数据库呢?是每种语言的建一个字段吗?
#12
学习了
没有遇到过
没有遇到过
#13
you could look at http://msdn.microsoft.com/zh-cn/library/c6zyy3s9.aspx
#14
资源文件比较方便
参考:http://blog.csdn.net/lanlan520/archive/2007/07/27/1711442.aspx
参考:http://blog.csdn.net/lanlan520/archive/2007/07/27/1711442.aspx
#15
感觉还是资源文件方式不错
#16
至于网站内容的语言 可以建几个表 分别存放不同的语言版内容,也可以在一个表加个languageid字段 随意了
#17
顶一下
#18
刚进公司不久,正在了解中
#19
....貌似ie的客户端可以自己解决
如果想弄出两个语种版本的话,那就写两个aspx呗
如果想弄出两个语种版本的话,那就写两个aspx呗
#20
这样的话,不是等于做两个站了。文件一大堆,到时候如果需要修改,也很麻烦吧。
#21
了解了
#22
使用本地资源文件
#23
up
#24
关注..
#25
如果您创建的网页将由使用不同语言的用户阅读,则必须为这些读者提供用他们自己的语言查看网页的方法。一种方法是分别用各语言重新创建页面,但这种方法可能需要大量工作量、容易出错并且在更改原始页时很难维护。
ASP.NET 为您提供了一种方法,使用这种方法创建的页可以根据浏览器的首选语言设置或用户显式选择的语言获取内容和其他数据。内容和其他数据指的就是资源,此类数据可以存储在资源文件或其他源中。
在 ASP.NET 网页中,可以将控件配置为从资源获取其属性值。在运行时,资源表达式将被相应资源文件中的资源替换。
资源文件
资源文件是 XML 文件,其中包含要转换为不同语言或图像路径的字符串。资源文件包含键/值对,每一对都是一个单独的资源。键名不区分大小写。例如,资源文件可能包含带有 Button1 键和 Submit 值的资源。
您需要为每种语言(如英语和法语)或每种语言和区域性(如英语 [英国]、英语 [美国])分别创建一个资源文件。每个本地化资源文件都有相同的键/值对;本地化资源文件与默认资源文件的唯一区别就是前者所包含的资源可能少于后者。然后,语言回退处理非特定资源或默认资源的加载。
ASP.NET 中的资源文件具有 .resx 扩展名。在运行时,.resx 文件将编译进一个程序集内,该程序集有时称为附属程序集。由于 .resx 文件是用与 ASP.NET 网页相同的方式动态编译的,因此不必创建资源程序集。编译过程将多个语言类似的资源文件压缩在同一程序集内。
在创建资源文件时,首先开始创建基文件 .resx。对于要支持的每种语言,分别创建一个新文件,该文件具有同一基本文件名但包含语言或语言及区域性(区域性名称)。有关区域性名称的列表,请参见 CultureInfo。例如,您可以创建下列文件:
WebResources.resx
基资源文件。该文件是默认或后备资源文件。
WebResources.es.resx
西班牙语的资源文件。
WebResources.es-mx.resx
专用于西班牙语(墨西哥)的资源文件。
WebResources.de.resx
德语的资源文件。
在运行时,ASP.NET 使用与 CurrentUICulture 属性的设置最为匹配的资源文件。线程的 UI 区域性根据页的 UI 区域性进行设置。例如,如果当前的 UI 区域性是西班牙语,则 ASP.NET 使用 WebResources.es.resx 文件的已编译版本。如果当前的 UI 区域性没有匹配项,则 ASP.NET 会使用资源后备;首先用特定区域性的资源,接着用非特定区域性,最后用默认资源文件。在本例中,默认资源文件是 WebResource.resx。
为 ASP.NET 网站创建资源文件
在 ASP.NET 中,可以创建具有不同范围的资源文件。可以创建全局资源文件,这意味着可以从位于网站中的任意页或代码读取这些资源文件。也可以创建本地资源文件,这些文件存储单个 ASP.NET 网页(.aspx 文件)的资源。
全局资源文件
将资源文件放入应用程序根目录的保留文件夹 App_GlobalResources 中,即可创建全局资源文件。App_GlobalResources 文件夹中的任何 .resx 文件都具有全局范围。此外,ASP.NET 还生成了一个强类型对象,这为开发人员提供了一种以编程方式访问全局资源的简单方法。
本地资源文件
本地资源文件是只应用于一个 ASP.NET 页的文件(带有 .aspx、.ascx、.master 等扩展名的 ASP.NET 页)。本地资源文件所放入的文件夹具有 App_LocalResources 保留名称。App_LocalResources 文件夹可以存在于应用程序的任何文件夹中,这与 App_GlobalResources 根文件夹不同。通过资源文件名将一组资源文件与特定的网页相关联。
例如,如果在 App_LocalResources 文件夹中有一个名为 Default.aspx 的页,则可以创建下列文件:
Default.aspx.resx
默认的本地资源文件,如果找不到语言匹配项,则该文件为后备资源文件。
Default.aspx.es.resx
西班牙语的资源文件,不包含区域性信息。
Default.aspx.es-mx.resx
专用于西班牙语(墨西哥)的资源文件。
Default.aspx.de.resx
法语的资源文件,不包含区域性信息。
文件的基名称与页文件名相同,后跟语言和区域性名称,最后以扩展名 .resx 结尾。有关区域性名称的列表,请参见 CultureInfo。
在全局和本地资源文件之间选择
在 Web 应用程序中,可以任意组合使用全局和本地资源文件。通常情况下,当您希望在各页之间共享资源时,应向全局资源文件添加这些资源。全局资源文件中的资源还是强类型的,用于以编程方式访问。
但如果将所有本地化资源都存储在全局资源文件中,则这些文件会变得很大。此外,如果多个开发人员要处理不同的页但在同一个资源文件中工作时,全局资源文件也会更难于管理。
本地资源文件使得单个 ASP.NET 网页的资源比较容易管理,但您不能在各页之间共享资源。此外,如果有许多页必须本地化为多种语言,则可能会创建大量本地资源文件。如果站点是具有许多文件夹和使用多种语言的大型站点,则使用本地资源可能快速地在应用程序域中扩展程序集的数量。
在对默认资源文件进行更改时,无论它是本地资源文件还是全局资源文件,ASP.NET 都重新编译资源并重新启动 ASP.NET 应用程序,这可能会影响站点的整体性能。添加附属资源文件将不会导致重新编译资源,但 ASP.NET 应用程序仍将重新启动。
注意
只有全局资源文件支持链接资源。
在网页中使用资源
创建资源文件后,即可在 ASP.NET 网页中使用这些文件。通常使用资源来填充页上各控件的属性值。例如,可以使用资源设置 Button 控件的 Text 属性,而不必将该属性硬编码为特定的字符串。
若要使用资源设置控件属性值,可以使用隐式本地化或显式本地化,如下所示:
隐式本地化使用的是本地资源,并允许您将控件属性自动设置为匹配的资源。
显式本地化使您可以使用资源表达式将控件属性设置为本地或全局资源文件中的特定资源。
使用本地资源的隐式本地化
如果您已为特定页创建了本地资源文件,则可以使用隐式本地化从该资源文件中为控件填充属性值。使用隐式本地化时,ASP.NET 读取资源文件并将资源与属性值相匹配。
若要使用隐式本地化,必须对本地资源文件中的资源使用命名约定,命名约定采用以下模式:
Key . Property
例如,若要为名为 Button1 的 Button 控件创建资源,可以在本地资源文件中创建以下键/值对:
复制代码
Button1.Text
Button1.BackColor
Label1.Text
可以对 Key 使用任意名称,但 Property 必须与要本地化的控件的属性相匹配。
在页上,对该控件的标记使用特殊的 meta 属性可指定隐式本地化。不必显式指定要本地化的属性。配置为使用隐式本地化的 Button 控件看起来可能类似于下面的形式:
复制代码
<asp:Button ID="Button1" runat="server" Text="DefaultText"
meta:resourcekey="Button1" />
resourcekey 值与相应资源文件中的键相匹配。在运行时,ASP.NET 通过将控件标签用作 resourcekey 将资源与控件属性相匹配。如果在资源文件中定义了某个属性值,则 ASP.NET 会用资源值替换该属性。
显式本地化
此外,也可以使用显式本地化,此时将使用资源表达式。与隐式本地化不同,必须为要设置的每个属性分别使用一个资源表达式。
配置为从全局资源文件设置 Text 属性的 Button 控件看起来可能类似于下面这样:
复制代码
<asp:Button ID="Button1" runat="server"
Text="<%$ Resources:WebResources, Button1Caption %>" />
该资源表达式采用以下形式,其中 Class 是可选的(除非资源是全局资源),而 ResourceID 是必需的:
<%$ Resources: Class , ResourceID %>
Class 值标识要在使用全局资源时使用的资源文件。在编译 .resx 文件时,将不带扩展名的基文件名显式用作所得程序集的类名。若要使用本地资源文件(与当前页名匹配的文件)中的资源,则不必提供类名,因为 ASP.NET 将该页类与资源类相匹配。
ResourceID 值是要读取的资源的标识符。在前面的示例中,从全局资源文件 WebResources.resx(或相应的本地化版本)读取按钮的 Text 属性。在该文件中,ASP.NET 将该值用于带有标识符 Button1Caption 的资源及页本身。若要设置页属性,可以在 @ Page 指令中使用资源表达式。
本地化静态文本
如果页面包含静态文本,则可以使用 ASP.NET 本地化,方法是将该本地化包含在 Localize 控件中,然后使用显式本地化设置该静态文本。Localize 控件不呈现标记;它的唯一功能就是充当本地化文本的占位符。Localize 控件不仅可以在属性网格中编辑,还可以在“设计”视图中编辑。在运行时,ASP.NET 将 Localize 控件视为 Literal 控件。例如,页面可能包含下面的代码:
复制代码
<h1>
<asp:Localize runat=server
ID="WelcomeMessage"
Text="Welcome!" meta:resourcekey="LiteralResource1" />
</h1>
<br />
<br />
<asp:Localize runat="server"
ID="NameCaption"
Text="Name: " meta:resourcekey="LiteralResource2" />
<asp:TextBox runat="server" ID="TextBox1"
meta:resourcekey="TextBox1Resource1" />
为不同的语言选择资源文件
当正在运行某页并且 ASP.NET 正在从资源管理器中检索值时,ASP.NET 为该页选择与当前 UICulture 设置匹配程度最高的资源文件版本,或者使用资源后备获取资源。例如,如果正在运行 Default.aspx 页并且当前的 UICulture 属性设置为 es(西班牙语),则 ASP.NET 使用本地资源文件 Default.aspx.es.resx 的已编译版本。
ASP.NET 可以将该页的 UICulture 和 Culture 属性设置为浏览器所传递的语言和区域性值。或者,可以以声明方式或通过使用代码显式设置 UICulture 和 Culture 属性。还可以在 Web.config 文件中以声明方式设置这些值。有关详细信息,请参见如何:为 ASP.NET 网页全球化设置区域性和 UI 区域性。
注意
不应唯一依赖浏览器设置来设置语言和区域性信息,因为用户使用的可能不是自己计算机上的浏览器。此外,浏览器经常只传送语言,而不传送特定的区域性。在这种情况下,服务器必须推导数据格式设置的特定区域性。一个好的策略就是让用户显式选择语言。
ASP.NET 为您提供了一种方法,使用这种方法创建的页可以根据浏览器的首选语言设置或用户显式选择的语言获取内容和其他数据。内容和其他数据指的就是资源,此类数据可以存储在资源文件或其他源中。
在 ASP.NET 网页中,可以将控件配置为从资源获取其属性值。在运行时,资源表达式将被相应资源文件中的资源替换。
资源文件
资源文件是 XML 文件,其中包含要转换为不同语言或图像路径的字符串。资源文件包含键/值对,每一对都是一个单独的资源。键名不区分大小写。例如,资源文件可能包含带有 Button1 键和 Submit 值的资源。
您需要为每种语言(如英语和法语)或每种语言和区域性(如英语 [英国]、英语 [美国])分别创建一个资源文件。每个本地化资源文件都有相同的键/值对;本地化资源文件与默认资源文件的唯一区别就是前者所包含的资源可能少于后者。然后,语言回退处理非特定资源或默认资源的加载。
ASP.NET 中的资源文件具有 .resx 扩展名。在运行时,.resx 文件将编译进一个程序集内,该程序集有时称为附属程序集。由于 .resx 文件是用与 ASP.NET 网页相同的方式动态编译的,因此不必创建资源程序集。编译过程将多个语言类似的资源文件压缩在同一程序集内。
在创建资源文件时,首先开始创建基文件 .resx。对于要支持的每种语言,分别创建一个新文件,该文件具有同一基本文件名但包含语言或语言及区域性(区域性名称)。有关区域性名称的列表,请参见 CultureInfo。例如,您可以创建下列文件:
WebResources.resx
基资源文件。该文件是默认或后备资源文件。
WebResources.es.resx
西班牙语的资源文件。
WebResources.es-mx.resx
专用于西班牙语(墨西哥)的资源文件。
WebResources.de.resx
德语的资源文件。
在运行时,ASP.NET 使用与 CurrentUICulture 属性的设置最为匹配的资源文件。线程的 UI 区域性根据页的 UI 区域性进行设置。例如,如果当前的 UI 区域性是西班牙语,则 ASP.NET 使用 WebResources.es.resx 文件的已编译版本。如果当前的 UI 区域性没有匹配项,则 ASP.NET 会使用资源后备;首先用特定区域性的资源,接着用非特定区域性,最后用默认资源文件。在本例中,默认资源文件是 WebResource.resx。
为 ASP.NET 网站创建资源文件
在 ASP.NET 中,可以创建具有不同范围的资源文件。可以创建全局资源文件,这意味着可以从位于网站中的任意页或代码读取这些资源文件。也可以创建本地资源文件,这些文件存储单个 ASP.NET 网页(.aspx 文件)的资源。
全局资源文件
将资源文件放入应用程序根目录的保留文件夹 App_GlobalResources 中,即可创建全局资源文件。App_GlobalResources 文件夹中的任何 .resx 文件都具有全局范围。此外,ASP.NET 还生成了一个强类型对象,这为开发人员提供了一种以编程方式访问全局资源的简单方法。
本地资源文件
本地资源文件是只应用于一个 ASP.NET 页的文件(带有 .aspx、.ascx、.master 等扩展名的 ASP.NET 页)。本地资源文件所放入的文件夹具有 App_LocalResources 保留名称。App_LocalResources 文件夹可以存在于应用程序的任何文件夹中,这与 App_GlobalResources 根文件夹不同。通过资源文件名将一组资源文件与特定的网页相关联。
例如,如果在 App_LocalResources 文件夹中有一个名为 Default.aspx 的页,则可以创建下列文件:
Default.aspx.resx
默认的本地资源文件,如果找不到语言匹配项,则该文件为后备资源文件。
Default.aspx.es.resx
西班牙语的资源文件,不包含区域性信息。
Default.aspx.es-mx.resx
专用于西班牙语(墨西哥)的资源文件。
Default.aspx.de.resx
法语的资源文件,不包含区域性信息。
文件的基名称与页文件名相同,后跟语言和区域性名称,最后以扩展名 .resx 结尾。有关区域性名称的列表,请参见 CultureInfo。
在全局和本地资源文件之间选择
在 Web 应用程序中,可以任意组合使用全局和本地资源文件。通常情况下,当您希望在各页之间共享资源时,应向全局资源文件添加这些资源。全局资源文件中的资源还是强类型的,用于以编程方式访问。
但如果将所有本地化资源都存储在全局资源文件中,则这些文件会变得很大。此外,如果多个开发人员要处理不同的页但在同一个资源文件中工作时,全局资源文件也会更难于管理。
本地资源文件使得单个 ASP.NET 网页的资源比较容易管理,但您不能在各页之间共享资源。此外,如果有许多页必须本地化为多种语言,则可能会创建大量本地资源文件。如果站点是具有许多文件夹和使用多种语言的大型站点,则使用本地资源可能快速地在应用程序域中扩展程序集的数量。
在对默认资源文件进行更改时,无论它是本地资源文件还是全局资源文件,ASP.NET 都重新编译资源并重新启动 ASP.NET 应用程序,这可能会影响站点的整体性能。添加附属资源文件将不会导致重新编译资源,但 ASP.NET 应用程序仍将重新启动。
注意
只有全局资源文件支持链接资源。
在网页中使用资源
创建资源文件后,即可在 ASP.NET 网页中使用这些文件。通常使用资源来填充页上各控件的属性值。例如,可以使用资源设置 Button 控件的 Text 属性,而不必将该属性硬编码为特定的字符串。
若要使用资源设置控件属性值,可以使用隐式本地化或显式本地化,如下所示:
隐式本地化使用的是本地资源,并允许您将控件属性自动设置为匹配的资源。
显式本地化使您可以使用资源表达式将控件属性设置为本地或全局资源文件中的特定资源。
使用本地资源的隐式本地化
如果您已为特定页创建了本地资源文件,则可以使用隐式本地化从该资源文件中为控件填充属性值。使用隐式本地化时,ASP.NET 读取资源文件并将资源与属性值相匹配。
若要使用隐式本地化,必须对本地资源文件中的资源使用命名约定,命名约定采用以下模式:
Key . Property
例如,若要为名为 Button1 的 Button 控件创建资源,可以在本地资源文件中创建以下键/值对:
复制代码
Button1.Text
Button1.BackColor
Label1.Text
可以对 Key 使用任意名称,但 Property 必须与要本地化的控件的属性相匹配。
在页上,对该控件的标记使用特殊的 meta 属性可指定隐式本地化。不必显式指定要本地化的属性。配置为使用隐式本地化的 Button 控件看起来可能类似于下面的形式:
复制代码
<asp:Button ID="Button1" runat="server" Text="DefaultText"
meta:resourcekey="Button1" />
resourcekey 值与相应资源文件中的键相匹配。在运行时,ASP.NET 通过将控件标签用作 resourcekey 将资源与控件属性相匹配。如果在资源文件中定义了某个属性值,则 ASP.NET 会用资源值替换该属性。
显式本地化
此外,也可以使用显式本地化,此时将使用资源表达式。与隐式本地化不同,必须为要设置的每个属性分别使用一个资源表达式。
配置为从全局资源文件设置 Text 属性的 Button 控件看起来可能类似于下面这样:
复制代码
<asp:Button ID="Button1" runat="server"
Text="<%$ Resources:WebResources, Button1Caption %>" />
该资源表达式采用以下形式,其中 Class 是可选的(除非资源是全局资源),而 ResourceID 是必需的:
<%$ Resources: Class , ResourceID %>
Class 值标识要在使用全局资源时使用的资源文件。在编译 .resx 文件时,将不带扩展名的基文件名显式用作所得程序集的类名。若要使用本地资源文件(与当前页名匹配的文件)中的资源,则不必提供类名,因为 ASP.NET 将该页类与资源类相匹配。
ResourceID 值是要读取的资源的标识符。在前面的示例中,从全局资源文件 WebResources.resx(或相应的本地化版本)读取按钮的 Text 属性。在该文件中,ASP.NET 将该值用于带有标识符 Button1Caption 的资源及页本身。若要设置页属性,可以在 @ Page 指令中使用资源表达式。
本地化静态文本
如果页面包含静态文本,则可以使用 ASP.NET 本地化,方法是将该本地化包含在 Localize 控件中,然后使用显式本地化设置该静态文本。Localize 控件不呈现标记;它的唯一功能就是充当本地化文本的占位符。Localize 控件不仅可以在属性网格中编辑,还可以在“设计”视图中编辑。在运行时,ASP.NET 将 Localize 控件视为 Literal 控件。例如,页面可能包含下面的代码:
复制代码
<h1>
<asp:Localize runat=server
ID="WelcomeMessage"
Text="Welcome!" meta:resourcekey="LiteralResource1" />
</h1>
<br />
<br />
<asp:Localize runat="server"
ID="NameCaption"
Text="Name: " meta:resourcekey="LiteralResource2" />
<asp:TextBox runat="server" ID="TextBox1"
meta:resourcekey="TextBox1Resource1" />
为不同的语言选择资源文件
当正在运行某页并且 ASP.NET 正在从资源管理器中检索值时,ASP.NET 为该页选择与当前 UICulture 设置匹配程度最高的资源文件版本,或者使用资源后备获取资源。例如,如果正在运行 Default.aspx 页并且当前的 UICulture 属性设置为 es(西班牙语),则 ASP.NET 使用本地资源文件 Default.aspx.es.resx 的已编译版本。
ASP.NET 可以将该页的 UICulture 和 Culture 属性设置为浏览器所传递的语言和区域性值。或者,可以以声明方式或通过使用代码显式设置 UICulture 和 Culture 属性。还可以在 Web.config 文件中以声明方式设置这些值。有关详细信息,请参见如何:为 ASP.NET 网页全球化设置区域性和 UI 区域性。
注意
不应唯一依赖浏览器设置来设置语言和区域性信息,因为用户使用的可能不是自己计算机上的浏览器。此外,浏览器经常只传送语言,而不传送特定的区域性。在这种情况下,服务器必须推导数据格式设置的特定区域性。一个好的策略就是让用户显式选择语言。
#26
学习,可能会用到
#27
学习
#28
aspx页面一个就够了,但是对应的 .resx文件需要每种语言准备一个
数据库就不好解决了,如果本来存的就是英文的东西难道你在别人存的时候自己翻译成中文的再存一次吗?
数据库就不好解决了,如果本来存的就是英文的东西难道你在别人存的时候自己翻译成中文的再存一次吗?
#29
用资源文件
#30
http://topic.csdn.net/u/20080610/10/0fcb8e50-ddc6-4cdc-9897-3215d2c30f5e.html
#31
友情UP下