<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      ASP完成多語言支持

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

      正 文 :
          一 、 介 紹

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

          具 體 實 現 過 程 分 以 下 三 個 步 驟 :
          ◇ 設 計 數 據 庫 并 存 儲 文 本 和 文 件 路 徑 。
          ◇ 從 數 據 庫 讀 取 數 據 到 字 典 對 象 。
          ◇ 在 ASP 頁 面 引 用 文 本 和 文 件 路 徑 。

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

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

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

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

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

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

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

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

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

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

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

      < Script RUNAT=SERVER Language=VBScript>
      Sub Application_OnStart()
      Dim DictCommonStrings
      Dim DictSpecializedStrings

      Dim Conn
      Dim rsCommonStrings
      Dim rsSpecializedStrings

      Set DictCommonStrings = Server.CreateObject("Scripting.Dictionary")
      Set DictSpecializedStrings = Server.CreateObject
      ("Scripting.Dictionary")

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

      '建立數據庫連接
      Set Conn = Server. CreateObject("ADODB.Connection")<BR>
      Conn.ConnectionString = "Some Connection String"<BR>
      Conn.open

      '打開 CommonStrings 表, 遍歷所有記錄并裝入數據
      Set rsCommonStrings = Conn.Execute("Select StringKey, StringHolder
      from CommonStrings")
      Do until rsCommonStrings.EOF
      DictCommonStrings.Add rsCommonStrings("StringLanguage") &
      rsCommonStrings("StringKey")  _
      ,rsCommonStrings("StringHolder")
      rsCommonStrings.MoveNext
      Loop

      '打開SpecializedStrings表, 遍歷所有記錄并裝入數據
      Set rsSpecializedStrings = Conn.Execute("Select StringKey,
      StringHolder from SpecializedStrings")
      Do until rsSpecializedStrings.EOF
      DictSpecializedStrings.Add rsSpecializedStrings ("StringLanguage") &  
      _
      rsSpecializedStrings ("StringKey")  , rsSpecializedStrings
      ("StringHolder")
      rsSpecializedStrings.MoveNext
      Loop

      rsSpecializedStrings.Close
      rsCommonStrings.Close
      Conn.Close
      Set rsSpecializedStrings = Nothing
      Set rsCommonStrings = Nothing
      Set Conn = Nothing
      End Sub

      < /Script>

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

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


      < Script Language=VBScript>
      Sub Session_OnStart()
      Session("Lang") = Request.Server.Variables("HTTP_ACCEPT_LANGUAGE")
      End Sub
      < /Script>

           通 過 鍵 值 可 以 從 字 典 對 象 取 得 對 應 的 文 本 ( 或 圖 片
      文 件 路 徑 ) , 鍵 值 由 語 言 前 綴 加 名 字 組 成 。 以 下 為 示 例
      代 碼 :
      < HTML>
      < P Align=center>
      < h1>< %= DictSpecializedStrings.Item(Session("Lang")  
      & "Confirmation")%>< /h1>
      < /P><BR>
      < P Align=center>
      < h5>< %= DictSpecializedStrings.Item(Session("Lang")  
      & "OrderDisclaimer")%>< /h5>
      < /P>
      < /HTML>

          對 于 中 文 瀏 覽 器 , 該 頁 面 的 提 示 類 如 :
          感 謝 您 的 購 買 。 請 進 入 下 一 頁 付 款 。
          而 對 于 一 個 缺 省 語 言 為 英 文 的 的 瀏 覽 器 , 則 提 示
      為 :
      Thank you for your order. Continue to the Next Page to make your
      payment.

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

          五 、 討 論

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



      日韩精品一区二区三区高清