我目前正在使用PHP和MySQL構建一個多語言網站,並且想知道關於本地化的最佳方法是關於我的數據模型。每個表格都包含需要翻譯的字段(例如,name
,description
....)以多種語言。使用mysql/PHP進行本地化
第一個想法是要建立一個字段爲每種語言(例如name_en
,name_de
,name_fr
),使用變量(例如$entry['name_' . LANGUAGE]
)從PHP檢索適當的字段。雖然它可以工作,但這種方法在我看來有許多缺點:
- 您需要儘可能多地發生每個字段(因爲您可以使用en-US,en-CA,en-GB ...) )
- 如果您添加或刪除的語言,你需要改變
- 如果你有翻譯領域,他們仍然不顯得很優化的每個條目創建的數據庫結構
第二個想法是創建可用於存儲數據庫中任何表格的任何字段的翻譯的翻譯表:
---------------- translation ---------------- id INT table_name VARCHAR field_name VARCHAR value VARCHAR language_id VARCHAR
table_name
和field_name
將允許標識翻譯是關於哪個表和哪個字段,而language_id
將指示翻譯如果是哪種語言。這個想法是創建模型,根據用戶選擇的語言,用相應的翻譯來替換可翻譯字段的值(例如name
,description
)。
您可以看到這種方法的缺點嗎?你有建議嗎?
謝謝。
此問題已被提問。建議你通過SO進行搜索。看看http://stackoverflow.com/questions/6242478/php-translation-frontend-similar-to-rosetta/6244655#6244655這裏http://stackoverflow.com/questions/6000541/multi-language-php-application -best-practice/6000874#6000874 – PurplePilot
正如你從給出的答案中可以看到的那樣,仍然有討論的空間。 – Max