2011-03-12 37 views
0

嗨,讓我們說我下面的應用:如何使用Zend Framework處理l10n應用程序?

  • 沒有本地化
  • 一個數據庫語言無關

我需要這個應用程序的本地化和國際化。

每個網站將可通過一個域(domain.co.uk,domain.fr,domain.it或可能來自一個子域fr.domain.com,en.domain.com,it.domain.com這是與本地語言相關性更高)。

例如,您將如何處理數據庫?

一個數據庫與每個實體的語言環境信息?

像id,article_title,article_body,article_locale?或單獨的數據庫?

  • domain_fr
  • domain_en

您將如何部署應用程序?

  • 每個虛擬主機一個?
  • 到處都是同樣的指向,但是在bootstrap上本地化?也許選擇數據庫在這裏會很棘手。

與當前應用程序的向後兼容性如何?

我的想法:

  • 使用虛擬主機型動物/每語言
  • 使用的application.ini定義本地
  • 使用的application.ini選擇數據庫服務器使用

由於應用程序本地化有不同的內容,我不需要能夠在其中切換語言,所以我可以在配置中硬編碼區域設置。

我在這裏可以看到的唯一不足之處是數據庫的發展,因爲如果我需要添加一個列,我需要在任何地方都做到這一點。所以,如果需要的話,可能需要一個帶有locale選項的中央數據庫會更好,但可能需要更多的工作。

什麼是反饋?這是一個決定性的決定,我想採取正確的方式。

回答

0

您可以使用不同的認爲你的目標要求:

  1. 因爲你使用不同的虛擬主機爲每一種語言,你可以設置本地在environement變量。 使用基於主機名的特定路由。
  2. 具有區域後,需要到指定的國際化,採用了Zend_Framework
  3. 接下來,我建議您創建數據庫的字段來選擇語言(最簡單的解決方案)OR必須通過Langugage不同的數據庫選擇在引導(不容易維護)

對於表例如pagecontent,你必須:

  • PAGEID(主)
  • 語言(初級)
  • 標題
  • 恢復
  • 內容

隨着一個元組由 「內容和語言」。

+0

感謝您的回答,您在模型中處理區域設置信息的過程是什麼?在*()或find *()方法中顯式請求它會更好嗎?或者直接在模型中使用Zend_Locale :: getLocale()方法? – 2011-03-12 14:57:03

+0

'Zend_Locale :: getLocale()'更好,因爲除非在模型中,否則不需要在應用程序中進行更改。 – Akarun 2011-03-12 16:05:12

相關問題