2015-06-01 52 views
1

我目前正在翻譯一個網站。 爲了方便地進行這種翻譯,我創建了一個.csv file,其中包含兩種語言(日語 - >英語)之間的匹配。 然後,使用PHP解析此文件,並在頁面上調用ob_start()以替換所需的字符串。在ob_start緩衝區中包含javascript文件內容

下面是腳本:

function lang_modify($buffer){ 

       require('get_messages.php'); 
       for($i=0; $i<count($messages); $i++){ 
        $buffer = str_replace($messages[$i][0], $messages[$i][1], $buffer); 
       } 

       return $buffer; 

     } 

    $buffer = ob_start('lang_modify'); 

此腳本完美的作品在PHP/HTML文件。但是,ob_start不會讀取javascript文件,所以我想知道是否有人知道如何將javascript文件包含到輸出緩衝區中,以便ob_start()函數將替換在javascript中找到的單詞。

有人建議我做AddFile聲明(.htaccess)搜索的東西,但我根本不知道我怎麼能用它來做我想做的。

有沒有人有線索?

+0

是否當您添加腳本文件,而不是在一個單獨的文件中有它的工作? – RST

+0

如果Javascript代碼直接寫入每個頁面,它就會工作,但我不能在這種類型的項目中這樣做。 –

回答

0

你在這裏面臨什麼,是關注問題上分離。

你的翻譯是從PHP產生。

然而,你的JavaScript顯示和(有時)生成這些消息。

我該如何解決這個問題?

1)確保您的翻譯來自一個單一來源,最好是來自PHP

2)使用國際化JS庫來處理您的翻譯。我建議:https://airbnb.github.io/polyglot.js/

3)如果您使用Polyglot,請確保您的PHP翻譯正在生成一個js文件,然後根據本地化進行加載。

Polygot會將您的默認訊息翻譯成國際化訊息。

簡而言之:

  • 啓用模塊化 - 管理(CRUD)在PHP中所有的翻譯。在數據庫中存儲 他們將是理想的
  • JS去耦從翻譯 - Polygot將只提供翻譯的消息,你的觀點(HTML)。
+0

謝謝你的回答Mysteryos。 但是,我忘了解釋一些方面。 該網站是一個相當龐大的項目,並通過結合Wordpress和FuelPHP創建。它也被公司的其他成員使用,根據我被授予的任務,我將不允許修改網站的結構,或者在服務器上安裝一些庫(事實上,我甚至沒有權限訪問服務器)。 所以我想在這裏不是爲JS文件應用單獨的翻譯方式,而是試圖將js文件包含在用我解釋的過程創建的輸出緩衝區中。 –

+0

WordPress的有一個國際化的模塊(處理js文件),你有沒有試過看這個?恐怕,在你的限制下,沒有什麼選擇。上面提出的解決方案將爲您的項目提供最低的技術和可維護性債務,除了完成此任務之外,這應該是您在整個任務中的目標。 – Mysteryos