多語言網站解決方案 php

前言:
    多語言網站開發,重點的還是在解決語言之間的問題。
    那如何解決這個問題呢?大概就分三步走:
   
    1.頁面多語言
    2.數據庫多語言
    3.用戶訪問語言統一
   
1.頁面多語言
  需要考慮的問題:
  A.用戶登陸時候,自動識別字符,調用不同的語言包?
  B.用戶切換不同語言時候,調用不同的語言包?
  C.增加多語言後的目錄結構?
  
  頁面多語言也就是外觀的多語言化,這裏可以採用靜態的語言包的方式。
  設計時候就應該包括language的目錄,針對不同語言有獨立的子目錄。
  如英文language/en  ,簡體中文language/gb,繁體中文language/b5 (可以擴展其他語言)
  每個目錄下就包含了對每個頁面的語言版本。選擇語言版本時候就可以調用相應版本的語言包。
  
  具體做法:
   0.利用js語言,識別瀏覽器語言,在調用不同的語言包.
   
   1.language/en/global.ln是針對英文版的全局語言包。
  
   2.global.ln 內容爲:
          $title = "English webstie";
          $charset = "UTF-8";
  
   3.index.php調用:
   <?php
   require_once()
   ?>;
   <html>;
   <head>;
   <title>;$title<title>;
   <meta http-equiv="content-type" content="text/html;charset=$charset">;
   </head>;
   <body>;</body>;
   </html>;
   
   這樣通過擴展就可以實現頁面的多語言化.
      
2.數據庫多語言
  這個考慮的問題:
  A.後臺錄入數據的多語言化?
  B.用戶在不同版本下,提交的內容,如何保存?
  C.提供三種語言包,還是提供英文和簡體,簡體通過轉化提供繁體?
  
  數據庫多語言就是達到多語言在數據庫裏面的統一。就需要採用utf-8統一編碼。
  無論什麼語言的文字,都統一使用utf-8來存放到數據庫裏面。採用表字段來表識
  屬於什麼語言版本的文字。
  
  具體:
  
  A.對於後臺添加的問題:
  
  1.後臺添加時候,就需要多語言化的錄入。先建立一個以utf-8編碼的數據庫,錄入英文/簡體,簡體在通過轉化爲繁體,
  再以utf-8編碼方式存於數據庫中。
  
  2.建立以utf-8爲編碼的表結構,importlanguage標識屬於什麼語言版本
    但在某個版本下,就搜索屬於這個版本的文字來顯示。其他文字不顯示。
        DROP TABLE IF EXISTS `zz_importer`;
        CREATE TABLE IF NOT EXISTS `zz_importer` (
          `importID` int(11) NOT NULL auto_increment,
          `importTime` date NOT NULL default '0000-00-00',
          `improtfile` varchar(100) NOT NULL default '',
          `importlanguage` varchar(100) NOT NULL default ''
          PRIMARY KEY  (`importID`)
        ) ENGINE=MyISAM DEFAULT CHARSET=uft-8;
  
  3.簡體轉化的繁體。
    利用php的iconv.此過程對於linux/unix有效,對於windows無效。
    iconv("GB2312","BIG5",$text);
     
  4.因爲,charset = "utf-8",數據就都是以utf-8編碼方式存在,
    添加數據時候,要分別用en/gb/big5來標識語言版本.
    INSERT INTO `zz_importer` VALUES (,'', '', 'en');
    INSERT INTO `zz_importer` VALUES (,'', '', 'gb');
    INSERT INTO `zz_importer` VALUES (,'', '', 'big5');
     
  B.對於用戶添加的問題:
   1.假設下簡體中文下.用戶因爲頁面頭爲UTF-8.則用戶瀏覽器會以utf-8編碼
   方式瀏覽頁面。
   
   2.添加的數據庫本身以utf-8方式存在。
   
   3.添加數據時候,要分別用gb來標識語言版本
   INSERT INTO `zz_importer` VALUES (,'', '', 'gb');
   
   C.對於簡體和繁體是單獨提供還是轉化問題
   
    單獨提供 - 比較符合多語言的標準,靈活性大,對ISP沒有特別的要求。
   
    轉化提供 - 提交速度會受影響,同時要ISP提供iconv的函數支持。 
   
3.用戶訪問語言統一
  
  A.假設用戶簡體中文版時候:
  <meta http-equiv="content-type" content="text/html;charset=UTF-8">;
  所有語言版本都是這樣。
  
  B.調用language/gb的語言包。
  
  C.搜索數據庫有語言字段爲gb的數據,並顯示
  
  D.當用戶提交信息,參照上面數據庫多語言的B問題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章