2014-02-27 55 views
1

我目前正在爲Joomla 3.x開發我的第一個MVC組件。總而言之,我有點掙扎於數據庫中的語言/翻譯問題。將數據庫中的翻譯版本存儲爲Joomla組件

我的問題是我需要存儲來自後端的用戶生成內容的翻譯內容。例如,某人用德語輸入一個新項目(存儲在數據庫中)並需要用另一種語言進行翻譯。如何在Joomla中實現?當其餘部分完全相同時,我不喜歡爲每種不同的語言生成新的項目。

我考慮表 「項目」 和表 「item_language」 與該結構(非常簡化用於觀看的目的):

id PRIMARY INT 
price DOUBLE(4,2) 

item_language

itemid PRIMARY INT 
language PRIMARY CHAR(5) 
name VARCHAR(50) 

item_language我想存儲diffe租翻譯版本。在language字段中將會有區域代碼(例如de-DE)來識別該語言。

我的問題:

  • 如何顯示在後端不同(翻譯)版本?
  • 這是正確的數據庫模型嗎?

任何幫助表示讚賞!

回答

0

我找到了一種方法來處理我需要的東西。
謝謝瓦倫丁·德斯帕引導我在正確的方向:-)。

在這裏,整個過程(簡化 - 驗證和準確的步驟中省略):

  • 定義在models/forms/site.xml表單字段爲正常。
  • views/site/tmpl/edit.phpviews/site/tmpl/edit.php中添加自編碼的Javascript(基於jQuery)來處理在數據庫中存儲爲JSON的多種語言內容的字段。
    • 克隆原始表單元素並修改所需的屬性(id,name,...)以顯示僅用於定義語言的特殊版本。作爲內容 - 從原始字段內容和顯示中提取所需語言的JSON。
    • 用Javascript隱藏原始字段並將自定義版本附加到DOM。
  • 之後在tables/site.php我與JInput讀取的動態生成的內容和通過產生JSON和保存到數據庫一起建立原始字段。

它的工作方式與預期的一樣。

1

你真的發現你自己是Joomla的第一個組件的一個不錯的任務!

一個相當通才答案:

  • 數據庫模型似乎是正確。或者,您可以使用JSON編碼語言數據,但這可能會使後面的查詢操作變得困難。這樣你就只有一張桌子可以使用。據我所知(如果您使用JModel/JTable來操作數據)不能直接執行此操作,因爲JTable實際上僅用於操作單個表。

你可以做什麼:

  • 對於編輯:圖的方式以圖形方式表示這(爲你的用戶能夠查看和編輯該一對多的關係),併發布該數據(語言文本作爲數組)到JModel。在模型中,您可以維護所需的關係並使用JTable保存數據。

  • 查看(不編輯)不應該是一個問題,它將是一個簡單的JOIN。

如果你願意在github上創建一個基本組件,我甚至可能會給你一個JModel/JTable。

+0

感謝您的回覆。我只是想知道在JForm中代表它的最佳方式是什麼。對於不同的語言,首選的方式是我自定義的JFormField實現。你能提出一些建議嗎? :-)閱讀並在列表中顯示正確的版本不是問題。我只是想知道用不同版本創建/編輯條目的表單。謝謝! – thedom

+1

嘗試尋找一種通用的JavaScript/jQuery解決方案來滿足您的需求。讓它獨立工作,而不是用JFormField來實現它 –