2011-09-07 42 views
0

我要本地化我的MySQL數據庫,我不知道如何做到最好:本地化的數據庫信息

1)針對不同的語言創建附加列: ID Field1_RU Field2_RU Field1_EN Field2_EN Field1_UA Field2_UA

當從DB負荷記錄,傳遞給SQL查詢語言參數 「RU」

2)針對不同的語言CRE吃了不同的表格或數據庫。

那麼我怎樣才能以一種好的方式本地化我的數據庫?感謝名單!

+0

您是試圖本地化數據庫*用戶界面*還是實際的數據本身? –

回答

1

您需要支持多少種語言?如果只有一兩個,那麼在每個表中使用帶有語言前綴的額外字段。如果它是一個任意數字或大數字(例如> = 3),則使用子表格來存儲每個字段的多語言數據以及語言標識符。

+0

這兩種解決方案中的任何一種都會導致數據庫不規範化,並且兩者都要求程序員包含邏輯以實時重寫SQL(在第一種情況下更改列名稱,第二種情況下更改表名) 。 –

+0

@larry:不是。 '在parent.id = subtable.id和language ='EN''上選擇subtable.text join subtable。將語言代碼與翻譯文本一起存儲在字段中。唯一的改寫就是插入語言代碼。 –

+0

我假設每個語言都有一個子表,因此是「子表」。部分會改變爲每種語言。如果每種語言沒有不同的表格,爲什麼你需要子表格(而不是帶有語言標識符的單個表格)? –

2

一般來說,最好的解決方案是一張表,一組列和一個額外的列來指定語言。然後,爲該數據庫中的每種語言添加一行。使用這種技術選擇不同的本地化就像在您的查詢中更改單個參數的值一樣簡單 - 無需嘗試重​​新編寫SQL來查看不同的列或不同的表。

但是,如果您嘗試本地化應用程序界面或實際本地化數據庫中的數據記錄,我不清楚。

+0

我想本地化數據庫中的數據記錄 – yozhik

+0

使用一個表,一組列和一個新列來指定語言。這將導致正確的標準化,易於針對數據庫編程。 –