自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

實現(xiàn)ASP.NET全球化

開發(fā) 后端
本文介紹實現(xiàn)ASP.NET全球化,我們討論了有關實現(xiàn)ASP.NET全球化的一些重要方面,并且看到,這是非常容易實現(xiàn)的事情。

一、 ASP.NET全球化信息

在我的網(wǎng)站中,在創(chuàng)建資源文件并加入一些本地化數(shù)據(jù)后,我首先開始使用顯式本地化來設置控件(例如,在我的網(wǎng)站中的標簽)的文本,以便它們可以從資源文件中得到它們的值。既然存在四種語言;所以,除一個完全可依賴的資源文件之外(沒有本地化命名),我創(chuàng)建了四個資源文件。

四個資源文件


注意,這些資源文件都以本地化標記作為它們的中間名稱,因此,我需要把UICulture設置為與該本地化相同的名字以便ASP.NET存取這些資源文件。

但是,問題是:我該怎樣在PostBack事件中動態(tài)地改變文化呢?幸好,ASP.NET在Page類中提供了一種可重載的方法: InitializeCulture()。這個方法在頁面生命周期(在生成任何控件之前)中執(zhí)行得很早,并且在此,我們能夠設置當前線程的UICulture和Culture。

由于這個方法位于Page類中,并且我不想針對每一個web頁面都重復相同的代碼,所以我創(chuàng)建了一個BasePage類,我的應用程序中的所有的aspx頁面都派生自這個BasePage類。但是現(xiàn)在,我又面臨另一個問題。

回到UI設計:我使用了一個MasterPage和一個Header用戶控件(在一個ContentPlaceHolder內(nèi))。我把一個缺省的頁面與該MasterPage相關聯(lián)。整個站點必須動態(tài)地實現(xiàn)本地化。因此,在頂部,有一個下拉框,用戶可以從中選擇一種語言/文化。在BasePage的 InitilializeCulture方法中,我必須取得用戶從下拉框選擇的項的值;但是,因為它還沒有被初始化,所以,我還不能存取任何控件的值。答案是:使用表單集合(從響應對象內(nèi))。

一旦我們從web應用程序中提取了所有的內(nèi)容并且基于用戶選擇和使用Resources.TestWebSite.XXXPropertyName設置好了Culture和UICulture,那么,我們就已經(jīng)為我們的全球化框架作好了準備。現(xiàn)在,剩下的唯一事情是把資源特定的數(shù)據(jù)添加到相應的資源文件中。針對每一種文件類型,我們需要有一個單獨的(和適當命名的)資源文件。這個過程稱為本地化。在我的web.config文件中,我使用了下列屬性:

  1. <globalization responseEncoding"=utf-8" requestEncoding="utf-8" fileEncoding="utf-8" />  

二、設置語言方向相應的dir屬性

許多時候,我們還需要設置本地化文本的方向(這是使用<html> 或<body>標簽的dir屬性設置的)。這是必需的,因為有些語言從右到左(RTL)讀取,例如Arabic,不同于象Hindi和 English這樣語言的標準的從左到右(LTR)的讀取方式。這可以通過把.resx文件中的dir屬性設置為適當?shù)闹祦韺崿F(xiàn)。

首先,你可以在所有資源文件中創(chuàng)建一個Direction(你可以使用任何名)域,并基于單個資源文件把它的屬性設置為RTL或LTR。對于Arabic,這個域的值是RTL,而對于Hindi則是LTR。然后,把<body>標簽的dir屬性設置為如下:

  1. <body runat="server" dir="<%$ Resources: TestSiteResources, Direction %>"> 


三、使用數(shù)據(jù)庫實現(xiàn)本地化

我們已經(jīng)看到了如何本地化控件的文本和UI描述。但是,存儲在數(shù)據(jù)庫中的內(nèi)容會怎么呢?其實,這一部分內(nèi)容也需要本地化,但是由于它存儲在一個DB中,所以我們不能使用資源文件來實現(xiàn)相同目的。為此,我們需要創(chuàng)建新的表格。

假定我有一個存儲用戶評價的表格。該表格結構如下所示:

存儲用戶評價的表格

現(xiàn)在,我們想實現(xiàn)以本地化的文本來顯示Comments和Name字段,但是,我們不可能把所有這些域的不同語言版本都存儲在同一個表格中(既然存在不需要被本地化但卻重復的其它域)。因此,我們需要重新組織該表格結構并且創(chuàng)建另一個表格來存儲這兩個域的本地化版本。首先,我們需要從這個表格中刪除這兩個域并創(chuàng)建一個如下所示的新表格:

ASP.NET全球化與本地化之全球化

在此,我們添加了一個新域:CultureID,它等價于LCID(或Locale標識符)。我們能夠按如下所示添加文化特定的本地化數(shù)據(jù):

添加文化特定的本地化數(shù)據(jù)

現(xiàn)在,我們可以使用以CultureID(LCID)作為參數(shù)的SQL查詢來取得本地化內(nèi)容。我們還能夠提供一個用戶接口來把本地化數(shù)據(jù)輸入到這樣的表格以便能夠以一種交互方式創(chuàng)建相應的內(nèi)容。

四、總結

在本文中,我們討論了有關實現(xiàn)ASP.NET全球化的一些重要方面,并且看到,這是非常容易實現(xiàn)的事情.

【編輯推薦】

  1. ASP.NET插件的實現(xiàn)方式
  2. 概述ASP.NET應用程序
  3. 淺談ASP.NET 2.0數(shù)據(jù)綁定
  4. ASP.NET阻止Java Script注入式攻擊
  5. ASP.NET MVC使用T4
責任編輯:佚名 來源: 51CTO博客
相關推薦

2010-08-05 09:59:55

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-07-22 17:45:35

ASP.NET教程

2021-01-05 07:51:06

版本化ASP

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入門教程

2009-08-05 17:58:34

實現(xiàn)ASP.NET網(wǎng)站

2009-08-10 17:17:10

ASP.NET安裝部署

2009-07-28 15:29:03

實現(xiàn)HTTP請求ASP.NET

2009-07-20 15:44:32

ASP.NET MVC

2009-07-28 10:01:16

ASP.NET Exc

2009-07-22 17:13:21

Asp.Net編程

2009-07-22 17:45:11

ASP.NET插件

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設計

2009-07-29 17:11:25

ASP.NET ISA

2009-07-29 16:08:07

ASP和ASP.NET

2009-08-03 17:35:07

ASP.NET WebASP.NET編程工具

2009-07-28 09:02:32

asp.net aja

2009-07-23 13:36:03

2009-07-29 11:18:21

ASP.NET連接My
點贊
收藏

51CTO技術棧公眾號