笨笨的思想片斷

          零碎片斷,雜七雜八。
          posts - 25, comments - 79, trackbacks - 0, articles - 0

          ASP 程序的國際化/本地化

          Posted on 2006-03-20 16:11 笨笨 閱讀(1331) 評論(0)  編輯  收藏 所屬分類: 軟件開發

          前段時間在寫一個小程序。用的是 ASP+MSSQL/MYSQL。要求能夠同時出簡/繁中文版本。
          就碰到了一些ASP的國際化、本地化的問題,其中的一些處理技巧,與大家共享。

          1 HTML頁面、Web應用、ASP 程序源文件全部采用 UTF-8 編碼。
          在文件頭部加入行<%@ LANGUAGE=JScript CODEPAGE=65001%>

          2 SQL Server 2000 數據庫:
          ??? 1 數據庫字符串字段采用 NVARCHAR/NTEXT/NCHAR Unicode 字符類型。
          ??? 2 數據庫操作SQL 中,字符串全部加 N 前綴: SELECT * FROM TABLE WHERE FIELD LIKE N'中文%'

          3 ASP 程序如果要訪問文件,需要用如下代碼打開 UTF-16 格式文件:
          FileSystemObject.OpenTextFile(file,1,false,-1);
          保證在不同平臺下,相同文件都能夠正確讀取。

          4 ASP 源文件中,不包含任何語言相關字符串,如標題、錯誤消息。這些消息統一保存到某個文件inc_l10n.asp中。另外,提供一個 inc_strutil.asp 程序,輔助格式化字符串。
          這樣,要更換語言版本,只要更新的 inc_l10n.asp 即可。

          inc_l10n.asp
          <%
          var l10n_title = "ASP Application Title";
          var l10n_about= "About ASP Application";
          var l10n_dict_homename = "HOME NAME";
          %>

          inc_strutil.asp:
          <%
          //Replace a substring in a String
          //
          function replaceAll(data, from, to) {
          ??? var buf = "";
          ??? var pos = -1;
          ??? var i = 0;
          ??? while ((pos = data.indexOf(from, i)) != -1) {
          ??????? buf = buf + (data.substring(i, pos))+ to;
          ??????? i = pos + from.length;
          ??? }
          ??? buf = buf + data.substring(i);
          ??? return buf;
          }

          //return the substitution result from Resource String
          //Invoke examples: getString("Substitution Example: $1 $2","111","222")
          //Invoke Result: "Substitution Example: 111 222"
          function getString()
          {
          ??? if ( arguments.length == 0 )
          ??????? return "";
          ??? if ( arguments.length == 1 )
          ??????? return ""+arguments[0];
          ??? var rawStr = arguments[0];
          ??? var i = 0;
          ??? for(i=1;i<arguments.length;i++){
          ??????? rawStr = replaceAll(rawStr,"$"+i,arguments[i]);???
          ??? }
          ??? return rawStr;
          }
          %>

          主站蜘蛛池模板: 松潘县| 新龙县| 阿尔山市| 遂宁市| 清原| 孟津县| 肇东市| 汶川县| 磐石市| 九寨沟县| 阳泉市| 马鞍山市| 仪陇县| 平乐县| 遵义市| 广安市| 湘潭市| 汶上县| 九台市| 扶风县| 蓬溪县| 青阳县| 方正县| 祥云县| 五河县| 和田县| 南康市| 桓仁| 龙泉市| 剑河县| 巴林左旗| 台湾省| 苏尼特右旗| 大新县| 清徐县| 四子王旗| 新沂市| 黄梅县| 柞水县| 岚皋县| 安顺市|