站長資訊網
        最全最豐富的資訊網站

        ASP如何實現站點國際化多語言支持?

        如果 客 戶 紛 紛 要 求 將 Asp的 站 點 國 際 化 以 提 供 多 種 語 言 版 本 ,這個問題如何實現呢? 該 問 題 的 關 鍵 在 于 , 你 必 須 使 用 某 種 方 法 實 現 快 速 的 頁 面 內 容 轉 換 。 可 以 將 此 問 題 看 成 是 從 數 據 庫 提 取 適 當 數 據 并 用 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”)

        Conn.ConnectionString = “Some Connection String”

        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>

         

         

        分享到: 更多

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产精品99久久免费观看| 国产99久久久国产精品~~牛 | 国产精品无码久久四虎| 无码国产精品一区二区免费16| 国产精品一香蕉国产线看观看| 成人无码精品1区2区3区免费看| 在线亚洲精品福利网址导航| 国产三级精品三级| 亚洲精品理论电影在线观看| AAA级久久久精品无码片| 色欲久久久天天天综合网精品| 久久久精品国产亚洲成人满18免费网站 | 国产麻豆精品久久一二三 | 9久热这里只有精品| 国产午夜精品一区理论片| 人妻少妇精品视频一区二区三区 | 少妇精品无码一区二区三区| 无翼乌无遮挡全彩老师挤奶爱爱帝国综合社区精品 | 国产精品99爱免费视频| 免费欧美精品a在线| 99久久免费国产精品热| 国产成人精品无码片区在线观看 | 在线涩涩免费观看国产精品 | 狠狠精品干练久久久无码中文字幕 | 精品人妻一区二区三区毛片 | 国产精品久久永久免费| 9久久9久久精品| 国产精品对白交换视频| 精品久久久久香蕉网| 久久发布国产伦子伦精品| 老司机午夜精品视频资源| 亚洲精品国产av成拍色拍| 亚洲午夜精品一级在线播放放| 亚洲第一永久AV网站久久精品男人的天堂AV | 久久精品免费网站网| 精品久久久久中文字| 国内精品久久久久久不卡影院 | 国产精品合集一区二区三区 | 国产成人综合久久精品尤物| 国产精品成人国产乱一区| 国产精品一区二区三区99 |