2009-11-16 108 views
5

在PHP中設計多語言應用程序有很多種方法。一些基於語言文件,其他基於數據庫。PHP - 多語言應用程序設計

  • 我期待用它主要是 少量文本e.g錯誤 - 在 最多的一個段落。

  • 我想我會需要二十左右
    語言。

真的,我在尋找建議而不是明確的答案。你有什麼之前使用,什麼是最快的,最簡單的更新等

非常感謝,

回答

8

Gettext家庭的功能是一個很好的起點:

gettext的功能實現的NLS (母語支持)API,其中 可用於國際化您的 PHP應用程序。

Zend_Translate非常靈活,並且具有gettext的線程安全實現。它解決了與天然國際實施方式存在以下問題手冊中指出:

  • 不一致API:對於不同的源 格式沒有單一的API。對於 示例,gettext的使用非常複雜。
  • PHP僅支持gettext和本地數組:PHP本身提供 只支持數組或gettext。 所有其他源格式必須手動編碼爲 ,因爲沒有 本機支持。
  • 未檢測到默認語言: 的默認語言如果沒有 ,則不能檢測到用戶對於不同Web瀏覽器的背景知識 。
  • Gettext不是線程安全的:PHP的gettext庫不是線程安全的,不應該在多線程環境中使用。這是由於gettext本身的問題,而不是PHP,但這是一個存在的問題。

值得一提的是,Zend Framework不是全棧框架 - 換句話說,你不需要使用整個事情只是爲了利用其國際化的API。

我真的很喜歡它,它支持multiple adapters for different data sources,您可以輕鬆地混合,匹配和更改,只需對應用程序進行非常輕微的修改即可。希望有所幫助。

0

我處理了這兩種解決方案。 (數據庫和平面文件)。但我會給你另一個視角。當您設計應用程序或軟件時,您應該從一開始就考慮另一個重要問題。您會將您的語言項目保存在數據庫和平面文件中。數據庫(或表格)和文本文件的語言支持很重要。如果您嘗試將拉丁文1數據庫中的土耳其字符保留下來,則會遇到一些問題。土耳其就是一個例子。數據庫必須支持您的語言項目的字符。