2012-02-02 112 views
0

問題

我有一個相當靜態的網站只有幾個基本的PHP使用情況。現在,客戶希望翻譯此網站。我有有一個解決方案,但它很麻煩,我想知道其他人是如何做到這一點,什麼是標準(在框架等)。簡單的方法來翻譯網站

我的路

我的方式(我已經簡化它有點爲更容易地理解):我生成從數據庫中每一種語言PHP數組,這個數組存儲在一個語言文件,像ES。 PHP的西班牙語。

然後我用TR功能類似這樣的翻譯在HTML的字符串:
前:<h1>Hello World</h1>
後:<h1><?php echo tr('Hello World'); ?></h1>這給<h1>Hola Mundo</h1>西班牙。

的問題

這是麻煩的並且容易出錯。我必須瀏覽每個.php文件,並用這個帶有echo的PHP標記替換所有硬編碼的字符串。
有沒有更好的方法?別人怎麼做呢?如果需要,我可以詳細說明我的實現。

+0

的可能重複[PHP - 如何將網站劃分爲多個語言?](http://stackoverflow.com/questions/954160/php-how-to-translate-a-website-into-multiple-languages) – 2012-02-02 23:32:08

回答

2

有點遲到,我想,但如果像我這樣的人在這個線程絆倒...因爲我目前有同樣的問題,你做。 不幸的是,用PHP來做這件事似乎並不是一種「非繁瑣的方式」。一切似乎都涉及很多函數調用(如果你有很多文本)。

呃......有一個方便的方法。雖然不完全安全。操縱輸出緩衝器之前它發送給用戶: =>http://dev-tips.com/featured/output-buffering-for-web-developers-a-beginners-guide

所以,你可以根據選擇只定義填充陣列「從 - >到」數據並替換緩衝區中的所有可讀文本的語言通過循環。

但當然......如果你用「senden」(德語)替換「send」(英語),並鏈接到「send.html」,它會打斷該鏈接。

因此,如果人們不僅需要翻譯長而且絕對唯一的字符串,而且還要翻譯更短的字符串,那麼只能操作用戶可讀的文本。有是一個解決方案太 - 但是,這是基於JavaScript: =>http://www.isogenicengine.com/documentation/jquery-multi-language-site-plugin/

4

你應該看看PHP的gettext擴展,它是非常快,會掃描你的PHP文件的字符串與.MO和.po文件翻譯

然後,您可以簡單地這樣做__('Hello World');或者,如果你已經都與tr('Hello World');那麼你可以只修改tr功能通過__(string)gettext(string)喜歡將它傳遞的字符串..

function tr($string){ 
    __($string) 
} 
+0

如何這是否解決了我的問題?這不會改變我在HTML中使用翻譯的方式,並且由於我已經實現了後端,所以我沒有看到任何好處。 – 2012-02-02 23:55:02

+0

那麼首先你的問題是你使用PHP,這是做語言翻譯的標準和最好的方法,比使用PHP數組要好得多。基本搜索將備份這些語句,但如果您知道一個更好的解決方案,請使用它。 – JasonDavis 2012-02-03 22:26:46

+0

就像我說的,你的解決方案並不比我的更好,並且不會給我的問題帶來任何好處。 – 2012-02-04 10:58:53

2

你總是可以踢和使用谷歌的翻譯Tools and Resourcesyour site

通常,我認爲多語言網站不再是「靜態」的。我使用Drupal來實施網站。它有一些優秀的internationalization options

+0

不,這不是一種選擇,因爲翻譯必須專業,網站的設計也必須專業,即沒有一些難看的谷歌翻譯