1、cms框架如何用一套模板一個資料庫搭建多國語言的網站
建議你參考這方面做得非常好的CMS,國外很有名的Joomla。可以實現十幾種語言的切換。其中很重要的組件是Joomfish
2、資料庫輔導:SQLServer存儲多語言數據的幾種方法
一般的,如果是普通的項目型軟體,就比較簡單了,你只需要設計出固定的 ChineseName和EnglishName欄位就可以了。本文並不討論這種形式,而是討論在大型平台化的ERP軟體中如何實現通用化的多語言存儲和讀取。
子表方式第一種方式是建立一張子表,U9大概就是這個樣子,你需要注意的是,每一個實體如果包含多語言欄位,都會出現以_Trl為後綴的表。也許你會覺得麻煩,其實不然,這些都是平台在後台自動處理了,你僅僅需要標記這個欄位是多語言欄位就可以了。
從理論上來說,他的存儲是最符合資料庫設計原則的,不管你的系統使用多少語言,資料庫結構是不變的。但是我總覺得查詢起來SQL會比較復雜,雖然這事平台也會幫助你完成。我在想,如果我要一個多語言策略如何實現呢?多語言策略的例子:如果此欄位沒有對應的繁體中文,取簡體中文,如果還沒有,取默認的語言內容。那麼在一個SQL中如何實現呢?
數據結構是一樣的,唯一的區別是通過ORM屏蔽了資料庫的結構,在設計實體時,你僅僅設計了Name欄位,其類型是「多語言類型」,然後在客戶那裡初始化時,客戶可以決定採用多少種語言,然後ORM在後台自動添加這些列。
這是我希望的設計,因為他足夠的簡潔,任何人都可以非常方便的寫出SQL語言。而且執行起來一定是最高效的。而且實現上面說的取值策略也很容易,只需要實現編排好多個嵌套的IIF函數就是了。
缺點呢?當然有,首先冗餘很大,即使沒有填寫對應的英文,一樣要佔用一個空間。其次,如果客戶發神經,一下子選擇了十幾個語言,然後發現他並不需要,又想刪除掉?那麼我需要檢查資料庫的所有相關欄位是否全部沒有數據,才能決定可以刪除這個語言並刪除所有相關的欄位。這是個問題。
XML欄位
這種方式我就不畫圖了,很簡單,還是只有一個欄位Name,不過數據類型不是nvarchar,而是把定義成XML類型,這是SQLServer2005新增的類型,我們可以在此欄位存儲諸如下面這樣的數據:
<items
<item lng="" value="默認" /
<item lng="CHS" value="中文" /
<item lng="EN" value="English" /
</items
Select EmployeeId,Name.value(』(/items/item[@lng="CHS"]/@value)[1]』,』nvarchar(max)』) FROM Employees
很簡單,我喜歡。
不過有人可能會說,其實沒有xml類型前,我就已經使用nvarchar來實現了,使用一個自定義函數一樣可以解決(使用諸如:/en/english /chs/中文的方式存儲)。但是我認為字元串方式處理並不完美,主要表現在你必須自己小心處理特殊字元,否則很容易亂套。使用XML類型的話資料庫會處理這些。另外,SQL Server對XML類型的查詢有優化處理,比起SQL自定義函數運行的速度要快的多。
3、PHP關於自定義欄位+多語言的網站資料庫設計
首先說明一點,用序列化和JSON不會不安全啊,數據安不安全取決於你的程序有沒有過版濾並且處權理好要入庫的數據,一般來說,入庫的數據是需要保證安全的。
對於你這個問題,最好的做法還是欄位擴展,這樣至少搜索速度上不會出現大問題,如果是將所有的數據都放到一個欄位上,就是上面的content欄位,這樣後續並不利於搜索,數據感覺也比較混亂。如果僅僅是多語言實現,單詞之間的對應關系,這樣使用單欄位還是可以的,畢竟數據也不多。
4、網站資料庫設計需要學會哪些語言 請詳細點 謝
資料庫設計是針對資料庫的設計,懂資料庫原理和結構即可根據需求建立資料庫手機,表,視圖,鍵,鎖等,本身就是一門學問,跟別的語言無關
5、網站開發,各種語言和資料庫之間是怎麼樣的搭配的?那種搭配好?比如說dreamweaver +sql.
dreamweaver 不是語言,謝謝 sql也不是資料庫,再次謝謝
先搞清楚概念
6、SQLServer存儲多語言數據的幾種方法
一般的,如果是普通的項目型軟體,就比較簡單了,你只需要設計出固定的 ChineseName和EnglishName欄位就可以了。本文並不討論這種形式,而是討論在大型平台化的ERP軟體中如何實現通用化的多語言存儲和讀取。子表方式第一種方式是建立一張子表,U9大概就是這個樣子,你需要注意的是,每一個實體如果包含多語言欄位,都會出現以_Trl為後綴的表。也許你會覺得麻煩,其實不然,這些都是平台在後台自動處理了,你僅僅需要標記這個欄位是多語言欄位就可以了。從理論上來說,他的存儲是最符合資料庫設計原則的,不管你的系統使用多少語言,資料庫結構是不變的。但是我總覺得查詢起來SQL會比較復雜,雖然這事平台也會幫助你完成。我在想,如果我要一個多語言策略如何實現呢?多語言策略的例子:如果此欄位沒有對應的繁體中文,取簡體中文,如果還沒有,取默認的語言內容。那麼在一個SQL中如何實現呢?數據結構是一樣的,唯一的區別是通過ORM屏蔽了資料庫的結構,在設計實體時,你僅僅設計了Name欄位,其類型是「多語言類型」,然後在客戶那裡初始化時,客戶可以決定採用多少種語言,然後ORM在後台自動添加這些列。這是我希望的設計,因為他足夠的簡潔,任何人都可以非常方便的寫出SQL語言。而且執行起來一定是最高效的。而且實現上面說的取值策略也很容易,只需要實現編排好多個嵌套的IIF函數就是了。缺點呢?當然有,首先冗餘很大,即使沒有填寫對應的英文,一樣要佔用一個空間。其次,如果客戶發神經,一下子選擇了十幾個語言,然後發現他並不需要,又想刪除掉?那麼我需要檢查資料庫的所有相關欄位是否全部沒有數據,才能決定可以刪除這個語言並刪除所有相關的欄位。這是個問題。XML欄位這種方式我就不畫圖了,很簡單,還是只有一個欄位Name,不過數據類型不是nvarchar,而是把定義成XML類型,這是SQLServer2005新增的類型,我們可以在此欄位存儲諸如下面這樣的數據:12345<items<item lng= VALUE=默認 /<item lng=CHS VALUE=中文 /<item lng=EN VALUE=English /</itemsSelect EmployeeId,Name.value(』(/items/item[@lng="CHS"]/@value)[1]』,』nvarchar(max)』) FROM Employees很簡單,我喜歡。不過有人可能會說,其實沒有xml類型前,我就已經使用nvarchar來實現了,使用一個自定義函數一樣可以解決(使用諸如:/en/english /chs/中文的方式存儲)。但是我認為字元串方式處理並不完美,主要表現在你必須自己小心處理特殊字元,否則很容易亂套。使用XML類型的話資料庫會處理這些。另外,SQL Server對XML類型的查詢有優化處理,比起SQL自定義函數運行的速度要快的多。
7、請問:網站開發有多種語言及資料庫,分別什麼語言使用什麼資料庫?規律是怎麼樣的
這個看個人吧,ASP也是可以使用MYSQL或ORACLE的
但是常見的是以專下搭配:屬asp+access/mssql
.net+mssql/access
php+mysql/sqlite
jsp+mysql/oracle
8、多語言網頁在設計上該考慮什麼,才能有好的使用者體驗
1.域名的選擇
一般來說不同語種的網站,用不同的域名比較好,但這樣要申請很多域名,經濟條件允許的情況下推薦此種方法。
所以還可以用不同的二級域名來做,這是比較折中的方法,可以優先選擇。
另外一種辦法就是用不同的目錄來做,可以直接用子目錄建站,也可以使用偽靜態的形式。
還有就是使用參數形式,但是這種方法不推薦使用。
對於搜索引擎來說,不同的域名(不管是頂級域名還是二級域名)的網站都當做獨立的網站來對待,收錄或者權重會更有利。
2.翻譯方式的選擇
最理想的選擇當然是人工翻譯每一篇文章,不過這樣成本比較大,尤其是沒有合適的人才儲備時。其次還有使用google或其他網站提供的js即時翻譯,但並不推薦使用這樣的方法,因為一會影響網站排版,二來翻譯速度慢,三來介面不穩定,第四不利於搜索引擎收錄。第三種選擇就是使用自動翻譯軟體翻譯後保存在資料庫,然後直接調用,算是一個比較折中的方法。
3.各語言的切換
如果沒有添加多語言切換方式,那麼用戶無法在你的網站頁面中自由切換語言,從而沒法找到自己想要的語言版本,那麼之前的工作也算白做了。
一般來說,語言切換方式最常見到的地方有3個,一個是首頁或第一次訪問網站時,一個是網頁的右上角,還有網頁的底部,當然也可以放在其他位置,只要美觀並且方便用戶找到切換位置就可以了。切換時可以直接把各種支持的語言列出來,也可以用下拉菜單,也可以用彈出框。這是做多語言版本網站必須要重視的一個小細節。
有的網站會在每一種語言選項的前面添加一個小國旗,這樣會顯得語言選項更加醒目,使用戶感覺網站更加正規和情切,從而讓你的網站充滿了國際范。
4.各種語言的一致性
建立了多語言網站就需要保證各種語言的一致性,比如經常見到一個產品有中文,但是沒英文,除非確實市場策略就是如此,否則應該保持同步。或者英文站一個樣式,中文站一個樣式,url結構不同等等,為了保證整體的對外效果,還是使用同一個樣式為好。
過去流行使用一個歡迎界面,然後讓用戶選擇語言,但是現在流行檢測用戶操作系統或瀏覽器語音,然後直接跳轉,並且任意頁面均可自由切換至其他語言。
要做多語言,就一定要做徹底,不要中英文混排,或者漏翻譯,包括圖片也應該完全是針對不同語言進行制圖。同時也不要使用特殊的驗證碼,只要英文和數字即可,以免用戶無法輸入。建議使用sleda多語種建站系統,免費又好用。
9、網站如何實現多語言架構,比如同時支持中,英,法,俄
此文轉載至:黃熊
電子商務網站多語言版設計思路
1. 資料庫設計
1. 分庫,還是分表
2. 單表還是多表1234
這步其實很關鍵:首先 這直接涉及到代碼邏輯,一有不慎,可能會導致原有方案失效
說說我們的設計思路吧!
我們採用的是分庫方式!
一種語言一個資料庫
這樣的好處有哪些呢?
1.避免單庫數據量過大,導致查詢難以優化。
舉個例子:假設有2種語言,中文和英文。在商品表中,一個商品在不同語言下,其實還是同一件商品,他們有共同的屬性,共同的價格,共同的庫存等等;如果放在一個庫中那麼本來商品數據有100W,現在直接變成了200W。so優化起來是不是更麻煩了呢。而且對於像商品這種表,更新操作是非常頻繁的,這樣就要不斷的去維護索引,這其中開銷也是蠻大的。12
- 為什麼不用分表?
假如一種語言一個表,那跟分庫道理不就一樣了嗎?
其實我個人覺得分表有很多不足的地方。
如果採用一個語言一張表,那麼我們表的數據過大怎麼辦呢?這時候是不是還要繼續分表呢?就目前的狀況來看,很多公司都會採用分表去解決。也就是說要分2次表,這樣不是很麻煩嗎,而且表在同一個資料庫中,數據量變大的時候怎麼辦呢,當達到Mysql儲存上限(這里指的是mysql存儲到一定數據時候就變得難以優化的情況)不就更麻煩嗎?
所以我們採用了分庫策略。
表如何設計
需要中英文對於的表,放到對於的庫中即可,無需把所有的表都copy
舉個例子
商品表:
假設我們的商品欄位如上
這個時候我們添加商品的時候肯定是要往資料庫(多個語言)裡面添加數據。也就是說我添加了一個中文語言的商品,對應的英文資料庫也應該插入同樣的數據。然後再去編輯英文的商品數據。這樣就保證了一個商品是一定會有多語言的。
那麼我們如何做到同時添加
1. 剛開始想用觸發器直接同步添加,可是這樣一個庫就要建立一個觸發器?很顯然,這樣肯定就會陷入一個死循環中。(事實上MySQL是會報錯的,為什麼我就不說了)。所以這種偷懶的方案是不能實現得了啊。
2. 後來我想用存儲過程去實現,但是呢,存錯過程確實存在不少問題,可以參考我的一片文章 MySQL 存儲過程的優缺點 。so只能放棄這種方案
3. 修改PHP框架的資料庫操作方法。
我們採用的是THINKPHP。 這里說下如何修改tp 的 add .
tp的add方法是聲明在Model下。所以我們新建一個commonModel來繼承他的Model類
首先要在配置文件中配置好多個資料庫dsn
eg : 'DB_LIST' => array('DN_CN' => 'mysql:XXXX', 'DN_EN' => 'mysql:XXXX'配置公共資料庫的表
eg 'LANG_TABLE' => array( 'goods' => array('stock,status'), //這里配置的是該表需要更新的欄位;比如商品的庫存和狀態肯定都是一致的)123刪除也是同理
更新數據
一個表中肯定會有一些欄位是不用做多語言的,但是必須保證不用語言下的數據是一致的。比如商品價格,商品庫存等
這個時候更新了一條記錄,也要去同步下其他庫的數據
其實上面是很簡單的。真正的重點在下面
我們取商品的數據的時候通常是通過id去查詢。
那麼我們多個庫的時候,要取數據還能用id嗎?
如果能用id那麼這篇文章已經結束了,哈哈!
那麼為什麼不能用id了呢?
其實很簡單的道理:你沒辦法保證多個語言庫的id是一致的,因為我們id是increament,so id沒辦法同步?舉個例子:A用戶往中文庫插入一條數據,id 為100,這時候b用戶往英文表插入一條數據id也有100,(這種情況是很有可能發生的,所以id肯定會不一樣)?
換個角度想想:如果我們加事務呢,這樣是不是能保證數據一致性呢?其實這更可怕,很可能會造成死鎖!
Why ? 死鎖其實道理很簡單。
A用戶往中文庫插入一條數據,id 為100,這時候中文庫的表肯定被鎖住了,這時候b用戶往英文表插入一條數據id也有100,這時候英文庫的表也被鎖住了。但是他們又要同步到其他庫。這時候A這邊會發現英文庫的表鎖了,那麼它要插入數據就必須等英文庫的表解鎖。但是與此同時b用戶也會發現中文庫的表鎖了,它也要等解鎖。這樣就造成了雙方都在等。死鎖就這樣形成了。
所以id是很不靠譜的。
解決方案:
新增一個欄位,類型為int,該欄位的生成規則可是時間戳+隨機數(這裡面還涉及到一些演算法,我就不公布了)。(為什麼是int我就不解釋了,很簡單的道理)。這樣多個語言的數據就通過此欄位來獲取(因為這個值是事先生成的,每個庫的值都是一樣的,所以不會沖突)。
10、在開發多語言網站的時候,應該如何設計資料庫呢?請賜教
一個庫 每個鍛多一個或幾個外語的就好了 調用的時候那種語言調用那個段