1. 程式人生 > >網站多語言設計的一些思路。框架實現多國語言。

網站多語言設計的一些思路。框架實現多國語言。

介紹一個PHP 多國語框架 v5.1:https://lang-php.com/?lang=zh-CN

 

有時候做網站的時候需要考慮多語言設計,比如外貿網站。即便是簡體中文和繁體中文網站設計也不是簡單的繁簡轉換就行的。

多語言網站面臨的設計問題:

1、多語言語法問題

簡體中文和繁體中文是現代漢語並存的兩種書面形式。它們在語音、詞彙、語法等方面都有明顯差異,給大陸和港澳臺地區的交流和溝通造成障礙。並不是簡單的繁簡對照替換就行的。如,繁體中文裡的“家庭計劃”對應簡體中文中的“家庭的計劃”和“計劃生育”兩個意義;簡體中文中的“檢討”對應繁體中文的“檢查”和“討論”兩個意義。後一個例子中的詞語在理性意義和感情色彩都是不對應的。

即,繁簡字存在字形轉換模糊的不對稱,更何況英語、法語、韓語….語法總歸不是機器能解決的(至少目前不是)

2、資料庫多語言

主要是錄入資訊的多語言化,涉及到資料庫優化和資料庫設計方面。對於不同架構、不同級別的網站系統設計也有不同之處。

3、頁面多語言

這個,不解釋,一般情況下都是用語言包解決此問題。不過,有些情況下,模板中div的寬度神馬的都要考慮到語言包中對應的語句的長度,以免發生錯位現象。

4、使用者訪問語言統一

使用者初次訪問時,判斷使用者語言環境,自動跳轉…也不解釋

解決方案:

1、簡單:每個語言一個網站,還要注意分離使用者系統

優點:簡單解決。後顧無憂~

缺點:維護複雜,製作週期長~

2、簡單的呼叫谷歌翻譯整個頁面

優點:簡單、方便。

缺點:偶爾被牆、機器翻譯總是有點語法用詞不通順

3、真正實現網站的多語言設計

優點:基本上解決以上所有問題

缺點:設計複雜,實現麻煩,有些情況下得不償失

1、多語言語法問題解決:

這個,找專業翻譯吧..不歸你管

2、資料庫多語言資訊錄入

01、簡單實現:

1、比如,表中加lang欄位,每條資訊的lang欄位不同的值,中文是zh-cn,英文是en

2、多一個語言版本表,用來存放語言版本,每個語言版本對應一個langid,新增資訊的時候,資訊表中的lang欄位存放對應的langid,把lang欄位設計成索引。其實跟上一種設計方法差不多。

3、每條資訊對應一個分類(公告也可以分為多個分類嘛),比如:國內新聞(id=1)寶島新聞(id=2)每個分類的資訊表中有個欄位lang,對應不同的語言,新增新聞資訊的時候,分不同語言的分類新增資訊,這樣新聞資訊表就不用lang欄位區分不同語言的新聞了。使用者訪問的時候,不同語言的使用者訪問不同的分類,呼叫分類的時候區分開分類id就好了。嗯,分類有點多。不過這算是簡單實現中最好的一種了吧

總結,此種方案適合小型系統,沒什麼鴨梨,網站全部靜態化。缺點不好擴充套件~

02、一般實現:

1、繼續優化設計(01、簡單實現 中的 3 方法)。把不同語言的新聞資訊分表儲存,實現方法基本差不多。

總結:此方案適合中型應用。

03、複雜實現

1、同上設計方案,將不同語言資訊分不同資料庫存放。使用者資訊(賬戶、密碼、語言介面)等單獨存放。專門做一個使用者系統,通過api和網站進行溝通。順便實現同步登入神馬的~嗯。不同語言相當於一個子站,組成一個站群。例如使用者訪問www.gookang.com,判斷使用者語言環境為zh-cn,接著跳轉到cn.gookang.com。每個語言版本的子站,擁有不同的分類,不同的資料庫,不同的介面等等.. 複雜度增加了。好處也是有的,不同的語言可以根據壓力做分散式…嗯…思路上還需要再想想,完善下。

總結,好處是有的。缺點也是有的。不同情況不同分析吧。

2、更進一步就是在域名上做文章了,跳轉就不用php做了。其他的麼..再優化神馬的~ = =你是要做類似雅虎那樣的入口網站乜?每個國家一個網站..擦~壓力山大!

3、頁面多語言

1、php語言包+自定義lang()函式

比如一個網站的部落格模組。

語言包存放位置:language/zh-cn/blog/tpl.lang.php

語言包中內容:return $lang = array(‘xxx’=>’{name}xxxxx,{age}xxxxxxxx’)

自定義函式lang($lang, $var=array())  $lang 語言key,$var 語言中的引數

呼叫的時候,lang(‘blog_tpl_xxx’,array(‘name’=>’t-chris’,'age’=>’21′));

最後結果:t-chrisxxxxx,21xxxxxxxx

關於錯位情況,這個有時候可以把錯位的地方的div神馬的變寬點、變高點。不過可能會影響美觀。

所以,最好是每種語言一套模板。這樣保證了介面的統一性,使用者體驗也會爽點。

具體實現方法,此處省略1w字….

2、通過谷歌翻譯。

有些情況下,你不願意設計那麼複雜的資料庫,又是神馬分表儲存,又是神馬分欄位,分欄目….

“擦,分你妹啊分!還讓程式設計師活不活?就那麼幾個程式設計師,整天改bug,改細節。累死人!程式不是你想改,想改就能改…..程式猿,你傷不起啊!!”

噹噹噹當~~偉大的谷歌,它繼承了“為人民服務”的光榮傳統…現在,有谷歌翻譯介面。

具體實現方法,請谷歌“translate API”神馬的..記得查詢中文,假如你英文不好的話…

【補充】 youtube就是利用的 谷歌API翻譯內容.. 具體請翻牆

3、其他方法?

我沒想到…

4、使用者訪問語言統一

獲取瀏覽器的語言環境

$_SERVER['HTTP_ACCEPT_LANGUAGE']

js獲取使用者系統語言環境

<script type=”text/javascript”>
document.write(navigator.language);
document.write(navigator.systemLanguage);
document.write(navigator.browserLanguage);
</script>

通過ip判斷

不解釋~

還有其他….

獲取之後,寫cookie,寫session.. 總之就是讓使用者訪問其他頁面的時候,網站語言能統一起來。