ASP實現(xiàn)多語言支持
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
綱要: 正文: 讓我們設(shè)想你使用activeserverpages設(shè)計了一個成功的站點,而你的客戶紛紛要求將此站點國際化以提供多種語言版本。該問題的關(guān)鍵在于,你必須使用某種方法實現(xiàn)快速的頁面內(nèi)容轉(zhuǎn)換??梢詫⒋藛栴}看成是從數(shù)據(jù)庫提取適當(dāng)數(shù)據(jù)并用asp動態(tài)顯示。在本文中我們將討論如何使用activeserverpages的字典對象以及一個后臺數(shù)據(jù)庫實現(xiàn)國際化支持。 具體實現(xiàn)過程分以下三個步驟: 二、步驟1-設(shè)計數(shù)據(jù)庫并存儲文本和文件路徑 我們需要在數(shù)據(jù)庫設(shè)計上花些時間。使用此數(shù)據(jù)庫,我們希望能夠把所有要用到的文本和圖片適當(dāng)編目,并且這些文本和圖片不能重復(fù);如果要在應(yīng)用中把“是”改成“確定”,希望只在一個地方作改動;web維護(hù)者在更改內(nèi)容時應(yīng)能夠快速找到目標(biāo)文本。基于以上要求,讓我們開始設(shè)計數(shù)據(jù)庫。 首先創(chuàng)建兩個表來放置文本。其中一個表為commonstrings,用于存放在整個站點重復(fù)使用的單詞和短語。另外一個表為specializedstrings,用于存放只在特定頁面使用的單詞和短語。把公用和限于特定頁面使用的文本分別存放有利于簡化站點維護(hù)。 兩個表都使用stringkey字段來標(biāo)記紀(jì)錄,使用stringlanguage來說明所用語言,聯(lián)合stringkey和stringlanguage創(chuàng)建一個主鍵。字段stringholder用來保存單詞、短語或語句。這個字段必須創(chuàng)建唯一索引以保證不會輸入重復(fù)的單詞、短語或語句。 對于specializedstrings表,還需要一個額外的字段asppage來標(biāo)記文本所在的asp頁面。 對于圖片文件,我們可以使用相同的步驟創(chuàng)建表來存儲指向這些文件的路徑。只需要在commonimage表和specializedimage表中用filename字段替換對應(yīng)的stringholder就可以了。 在新創(chuàng)建的表中裝入數(shù)據(jù)時,stringkey的內(nèi)容應(yīng)該給站點維護(hù)者盡可能多的提示以表明頁面上將顯示的文本。例如,對于一個在線銷售站點來說有關(guān)拒絕承諾的聲明語句使用orderdisclaimer是一個不錯的選擇,站點維護(hù)者由此可以非常清楚地了解使用該記錄將在web頁面上顯示的內(nèi)容。 把那些公用的單詞和短語放在commonstrings表。這樣,維護(hù)者就知道如果他們修改commonstrings表中的一個記錄,將影響到站點內(nèi)的許多頁面。 對于大的站點,可以設(shè)計一個易于使用的界面來輸入和修改數(shù)據(jù)庫中的文本。準(zhǔn)備這些資料是一項冗長乏味的任務(wù),越簡單就越少出錯。 三、步驟2-從數(shù)據(jù)庫讀取數(shù)據(jù)到字典對象 字典對象(dictionaryobject)是一個多用途的服務(wù)器端對象,它相當(dāng)于二維數(shù)組,保存了鍵以及與鍵相關(guān)聯(lián)的數(shù)據(jù)。提取數(shù)據(jù)的唯一途徑在于取得鍵值或索引??梢园炎值鋵ο蟮淖饔梅秶渲脼檎麄€應(yīng)用范圍或?qū)υ挿秶?,而不必?fù)?dān)心損失性能。賦予應(yīng)用層作用范圍意味著對象只被實例化一次,且所有會話均使用同一個字典對象。以下代碼創(chuàng)建兩個字典對象實例,分別和兩個文本表關(guān)聯(lián)。記住,我們希望對象只被初始化一次,所以把這些代碼放在application_onstart事件中: 四、步驟3-在asp頁面引用文本和文件路徑 接下來的工作是在asp頁面引用已經(jīng)實例化的字典對象中的文本(以及文件路徑)。首先我們需要知道當(dāng)前用戶所使用的語言,其中一個辦法是從request.server.variables取得該值。請把下列代碼放入session_onstart事件處理過程: 通過鍵值可以從字典對象取得對應(yīng)的文本(或圖片文件路徑),鍵值由語言前綴加名字組成。以下為示例代碼: <%=dictspecializedstrings.item(session("lang")&"orderdisclaimer")%> 對于中文瀏覽器,該頁面的提示類如: 根據(jù)我的經(jīng)驗,從字典對象引用文本(以及圖片路徑)和直接在asp代碼中輸入數(shù)據(jù)相比,沒有性能上的不利影響。這是由于文本(和圖片路徑)字典被放在內(nèi)存中,因而可以快速地提取。 五、討論 當(dāng)然,實現(xiàn)多語言支持還有其它的因素需要考慮。使站點內(nèi)容的變化和應(yīng)用開發(fā)者隔離是本文試圖說明的實質(zhì)內(nèi)容。本方案不僅對于實現(xiàn)站點內(nèi)容國際化非常有用,而且對于站點內(nèi)容頻繁改變而布局基本不變的情形,本方案同樣能起作用。后臺數(shù)據(jù)庫、集合對象(字典對象)以及asp技術(shù)提供了一個極好的方案來實現(xiàn)站點內(nèi)容從源語言到其它語言的擴(kuò)展。 該文章在 2010/7/8 1:02:35 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |