LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

ASP實現多語言支持

admin
2010年7月8日 1:2 本文熱度 7412

綱要:

讓我們設想你使用activeserverpages設計了一個成功的站點,而你的客戶紛紛要求將此站點國際化以提供多種語言版本。這時候你該怎么辦?請看本文。

正文:

   一、介紹

  讓我們設想你使用activeserverpages設計了一個成功的站點,而你的客戶紛紛要求將此站點國際化以提供多種語言版本。該問題的關鍵在于,你必須使用某種方法實現快速的頁面內容轉換。可以將此問題看成是從數據庫提取適當數據并用asp動態顯示。在本文中我們將討論如何使用activeserverpages的字典對象以及一個后臺數據庫實現國際化支持。

  具體實現過程分以下三個步驟:

   ◇設計數據庫并存儲文本和文件路徑。

   ◇從數據庫讀取數據到字典對象。

   ◇在asp頁面引用文本和文件路徑。

  二、步驟1-設計數據庫并存儲文本和文件路徑

  我們需要在數據庫設計上花些時間。使用此數據庫,我們希望能夠把所有要用到的文本和圖片適當編目,并且這些文本和圖片不能重復;如果要在應用中把“是”改成“確定”,希望只在一個地方作改動;web維護者在更改內容時應能夠快速找到目標文本。基于以上要求,讓我們開始設計數據庫。

  首先創建兩個表來放置文本。其中一個表為commonstrings,用于存放在整個站點重復使用的單詞和短語。另外一個表為specializedstrings,用于存放只在特定頁面使用的單詞和短語。把公用和限于特定頁面使用的文本分別存放有利于簡化站點維護。

  兩個表都使用stringkey字段來標記紀錄,使用stringlanguage來說明所用語言,聯合stringkey和stringlanguage創建一個主鍵。字段stringholder用來保存單詞、短語或語句。這個字段必須創建唯一索引以保證不會輸入重復的單詞、短語或語句。

  對于specializedstrings表,還需要一個額外的字段asppage來標記文本所在的asp頁面。

  對于圖片文件,我們可以使用相同的步驟創建表來存儲指向這些文件的路徑。只需要在commonimage表和specializedimage表中用filename字段替換對應的stringholder就可以了。

  在新創建的表中裝入數據時,stringkey的內容應該給站點維護者盡可能多的提示以表明頁面上將顯示的文本。例如,對于一個在線銷售站點來說有關拒絕承諾的聲明語句使用orderdisclaimer是一個不錯的選擇,站點維護者由此可以非常清楚地了解使用該記錄將在web頁面上顯示的內容。

  把那些公用的單詞和短語放在commonstrings表。這樣,維護者就知道如果他們修改commonstrings表中的一個記錄,將影響到站點內的許多頁面。

  對于大的站點,可以設計一個易于使用的界面來輸入和修改數據庫中的文本。準備這些資料是一項冗長乏味的任務,越簡單就越少出錯。

  三、步驟2-從數據庫讀取數據到字典對象

  字典對象(dictionaryobject)是一個多用途的服務器端對象,它相當于二維數組,保存了鍵以及與鍵相關聯的數據。提取數據的唯一途徑在于取得鍵值或索引。可以把字典對象的作用范圍配置為整個應用范圍或對話范圍,而不必擔心損失性能。賦予應用層作用范圍意味著對象只被實例化一次,且所有會話均使用同一個字典對象。以下代碼創建兩個字典對象實例,分別和兩個文本表關聯。記住,我們希望對象只被初始化一次,所以把這些代碼放在application_onstart事件中:

<scriptrunat=serverlanguage=vbscript>

subapplication_onstart()

dimdictcommonstrings

dimdictspecializedstrings

dimconn

dimrscommonstrings

dimrsspecializedstrings

setdictcommonstrings=server.createobject("scripting.dictionary")

setdictspecializedstrings=server.createobject("scripting.dictionary")

  接下來的任務是把數據裝入字典對象。我們將遍歷表,連接stringkey和stringlanguage,并把連接后的值作為字典的鍵值,把stringholder放在對應的字典數據區。由此我們獲得了使用數據庫存儲數據的彈性,并避免了持久的數據庫連接而導致的性能影響。事實上,數據庫只在應用啟動時被訪問一次,其后asp頁面將從速度更快的字典對象讀取所需數據。

'建立數據庫連接

setconn=server.createobject("adodb.connection")<br/>

conn.connectionstring="someconnectionstring"<br/>

conn.open

'打開commonstrings表,遍歷所有記錄并裝入數據

setrscommonstrings=conn.execute("selectstringkey,stringholderfromcommonstrings")

dountilrscommonstrings.eof

dictcommonstrings.addrscommonstrings("stringlanguage")&rscommonstrings("stringkey")_

,rscommonstrings("stringholder")

rscommonstrings.movenext

loop

'打開specializedstrings表,遍歷所有記錄并裝入數據

setrsspecializedstrings=conn.execute("selectstringkey,stringholderfromspecializedstrings")

dountilrsspecializedstrings.eof

dictspecializedstrings.addrsspecializedstrings("stringlanguage")&_

rsspecializedstrings("stringkey"),rsspecializedstrings("stringholder")

rsspecializedstrings.movenext

loop

rsspecializedstrings.close

rscommonstrings.close

conn.close

setrsspecializedstrings=nothing

setrscommonstrings=nothing

setconn=nothing

endsub


  四、步驟3-在asp頁面引用文本和文件路徑

  接下來的工作是在asp頁面引用已經實例化的字典對象中的文本(以及文件路徑)。首先我們需要知道當前用戶所使用的語言,其中一個辦法是從request.server.variables取得該值。請把下列代碼放入session_onstart事件處理過程:


<scriptlanguage=vbscript>

subsession_onstart()

session("lang")=request.server.variables("http_accept_language")

endsub


 通過鍵值可以從字典對象取得對應的文本(或圖片文件路徑),鍵值由語言前綴加名字組成。以下為示例代碼:


<palign=center>

<h1>                <%=dictspecializedstrings.item(session("lang")&"confirmation")%>            </h1>

<p></p><br/>

<palign=center>

<h5>                    <%=dictspecializedstrings.item(session("lang")&"orderdisclaimer")%>                </h5>

<p></p>


  對于中文瀏覽器,該頁面的提示類如:

   感謝您的購買。請進入下一頁付款。

   而對于一個缺省語言為英文的的瀏覽器,則提示為:

thankyouforyourorder.continuetothenextpagetomakeyourpayment.

  根據我的經驗,從字典對象引用文本(以及圖片路徑)和直接在asp代碼中輸入數據相比,沒有性能上的不利影響。這是由于文本(和圖片路徑)字典被放在內存中,因而可以快速地提取。

  五、討論

  當然,實現多語言支持還有其它的因素需要考慮。使站點內容的變化和應用開發者隔離是本文試圖說明的實質內容。本方案不僅對于實現站點內容國際化非常有用,而且對于站點內容頻繁改變而布局基本不變的情形,本方案同樣能起作用。后臺數據庫、集合對象(字典對象)以及asp技術提供了一個極好的方案來實現站點內容從源語言到其它語言的擴展。

</palign=center>        </palign=center>    </scriptlanguage=vbscript> </scriptrunat=serverlanguage=vbscript>


該文章在 2025/8/21 12:04:50 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
色婷婷亚洲中文字幕的 | 久久亚洲国产精品五月天婷 | 最新国产精品久 | 午夜老司机免费在线观看中文字幕 | 亚洲成A人片77777国产精品 | 久久精品专区网 |