8

儘管我發現了相當多的與此問題相關的資源,但他們都沒有精確地給出使用Zend Framework的多語言CMS的答案。使用zend框架的多語言內容託管網站(CMS)

zend framwork中有許多可用的z end translate adapters。但是最需要數據庫(mysql)驅動的網站的那個(zend sql adapter)還沒有發佈。

對於那些非數據庫驅動的多語種網站,內容可以放在文件(xml,mo或任何其他文件)中,並且其中一個zend翻譯適配器用於處理內容以顯示正確的語言。

我們將如何處理數據庫驅動的多語種網站?以前,我們習慣於使用php,並使用精心設計的多語言數據庫,並將每篇文章(頁面)保留在表格中,並提供所有必需的翻譯。如果我們將通過使用zend框架來做同樣的事情,那麼是否會過度殺死或放慢網站?我們仍然使用zend緩存使其更快,但我們無法利用zend翻譯。後來,當用於sql的zend翻譯適配器將可用時,使用zend翻譯可以輕鬆切換多語言內容管理系統。

有沒有人試過嗎?什麼可能是優點和玉米?

另一種解決方案可能是讓我們的設計良好的多語言數據庫,並在管理區使用GUI的每個變更admin上生成基於xml的語言文件。然後使用Zend翻譯適配器來處理這些XML文件。我想這可能是矯枉過正,用大炮殺死一隻鳥:)

當我在談論整個頁面的內容放在數據庫中。它可以包含一些html標籤,如b,span,br,p等。zend翻譯如何處理html標籤中的內容?

如果以前有人已經實現了這一點,那麼使用zend框架處理多語言內容託管網站的最佳方法是什麼?

有沒有專家意見!

回答

1

在zend框架中有許多zend翻譯適配器可用。但是最需要數據庫(mysql)驅動的網站的那個(zend sql adapter)還沒有發佈。

對於那些非數據庫驅動的多語種網站,內容可以放在文件(xml,mo或任何其他文件)中,並且其中一個zend翻譯適配器用於處理內容以顯示正確的語言。

這些都是錯誤的假設。並不是說,DB驅動的應用程序需要使用DB驅動的翻譯系統。您可以輕鬆使用靜態文件系統。

我們將如何處理數據庫驅動的多語種網站?以前,我們習慣於使用php,並使用精心設計的多語言數據庫,並將每篇文章(頁面)保留在表格中,並提供所有必需的翻譯。

我認爲你有點誤 - 我知道你想使用翻譯爲您的網頁(文章)的動態內容。翻譯的目的是將視圖國際化 - 靜態內容。我的意思是一樣的東西登錄寄存器歡迎文本等,而且這些真應該在文件中(考慮文件靜態緩存),而不是在數據庫中,因爲巨大的負荷的它將使(DB應無論如何都要緩存)。存儲在數據庫中的文章是一個不同的東西,你想實現的是多語言頁面內容。您可以輕鬆處理,無需翻譯(請記住,翻譯對於視圖來說很好!),只需在表格中添加國家/語言標誌並通過您的模型檢索合適的(過濾給定語言)數據即可。它非常簡單,並且不需要任何後端進行翻譯。

我不確定翻譯是如何工作的,但我可以假設它檢查語言,然後加載整個翻譯文件並將其作爲集合(或簡單關聯數組)存儲在腳本內存中,以提供快速和強大的翻譯機制(注意,它不需要爲每個給定的鍵調用一個DB或一個文件,因爲它們全部都在內存中)。保持整個頁面,這樣的文章根本沒有意義,主要是因爲你每頁僅需要1-2篇文章(爲什麼浪費內存呢?),有時還有數百個本地化視圖字符串(所以你不想撥打電話到數據庫或文件爲他們每個人)

另一種解決方案可以使我們的設計以及多語言數據庫,併產生對每一個變化管理的基於XML的語言文件使管理區使用GUI。然後使用Zend翻譯適配器來處理這些XML文件。我想這可能是矯枉過正,造成了鳥兒大炮:)

如果談論的翻譯靜態內容 - 這真的是很常見的解決方案:保留在數據庫中的翻譯方便地訪問/修改和生成XML/CSV /發生更改時的任何文件。

當我在談論整個頁面的內容放入數據庫。它可以包含一些html標籤,如b,span,br,p等。zend翻譯如何處理html標籤中的內容?

它可能會處理好,但仍然在考慮動態內容。靜態內容應該在視圖內格式化。所以,我想是死路一條。

底線:使用轉換爲所有你提到的,那就可以查殺鳥用大炮:)

+1

你讀這http://framework.zend.com/manual/en/zend。 translate.adapter.html。它說其他* .sql適配器可能在未來實現? – Developer

+0

他們可能是或者他們可能不是,無論如何。它不會改變,使用它爲你想要使用的是一個非常糟糕的設計和實踐。這不是翻譯的意思。 – jacek