2011-07-12 20 views
0

我有一個現有的數據庫驅動的PHP應用程序,大約40頁打印未知(但數量很多)的英文字符串。字符串當前全部是硬編碼的。還有一組靜態文檔頁面。我現在需要爲此應用程序添加語言支持。本地化現有的PHP應用程序

據我所知,gettext似乎是這個問題的標準解決方案,但gettext對我來說非常像「黑客」。我也不確定它會造成額外的開銷(包括開發和運行時間)。有沒有其他解決方案或框架可以更好地滿足我的要求?任何最佳實踐或陷阱我應該知道什麼時候開始這個項目?

回答

2

gettext是多語言文本存儲的「標準」,但最終它只是一個存儲引擎。它沒有把正確的文本放入你的頁面。您需要從視圖中提取文本,以便插入正確的文本。

最後,您需要一種將語言文本放置在文檔中的方法。這意味着以某種方式「標記」文本,以便可以用所需的語言文本進行搜索和替換。對於我管理的電子商務網站(3種語言),我使用了源自Facebook FBML標籤系統的技術。

您可以將您的文字包裹在「標籤」<trans id="slt">something like this</trans>中。然後使用PHP中的DOM工具提取ID,根據id查找翻譯後的文本,用適當的語言文本替換標記之間的內容。您仍然可以將gettext用於存儲機制或數據庫。您的瀏覽器將忽略這些標籤,因此您的網頁在開發期間仍然會顯示正常。

這只是一個標記示例。您可以使用任何標記機制並使用grep來提取,搜索和替換。

對於靜態頁面,您可以預先生成翻譯版本並加載相應的語言版本。這樣,不同語言就不會有額外的開銷。

+0

最後我們結束了gettext。這比我預期的痛苦少。 – pehrs