2014-03-26 32 views
4

我最近一直在使用Pootle來翻譯一個小的PHP項目。我們的國際化文件是爲PHP數組,例如:Pootle導出不正確的PHP數組文件

return array(
    'word.in' => 'en', 
    'word.yes' => 'Sí', 
    'word.no' => 'No', 
    'word.with' => 'con', 
); 

所以我創建了Pootle的管理面板項目,並設置源文件是PHP的數組。之後我可以很好地上傳和翻譯文件。

問題是當我嘗試出口,渲染文件的語法如下:

return array->'word.in'='for'; 
return array->'word.yes'='Yes'; 
return array->'word.no'='No'; 
return array->'word.with'='with'; 

這AFAIK甚至不是合法的PHP語法。

我已閱讀了Pootle和翻譯工具包的文檔,我發現它通過某種'模板'來生成糟糕的輸出。

任何想法如何我可以解決這個問題,並能夠導出我的PHP數組確切地說我上傳了相同的語法?任何幫助非常感謝!

+0

有相當多的PHP錯誤前面翻譯的工具包版本處理的,所以確保使用最新的一個。 –

+0

我正在使用最新的Pootle 2.5.1,並使用了Translate Toolkit 1.11.0。也許我從他們的文檔中跳過了我想要如何導出php文件的內容? –

+0

我不太瞭解Pootle對PHP文件的支持,對不起。但很好,你正在使用最新的翻譯工具包,舊版本是真的打破了PHP文件。 –

回答

0

任何想法如何解決這個問題,並能夠導出我的PHP數組完全相同的語法,我上傳了嗎?

return語句之前,如果你需要真正該數組寫入文件,後來又看了一遍,我會做這樣的事情..

$arrayExport = var_export(
array(
    'word.in' => 'en', 
    'word.yes' => 'Sí', 
    'word.no' => 'No', 
    'word.with' => 'con', 
), true); 

比寫下$ arrayExport。例如:

file_put_contents($filePathName, 
'<?php $exportedArrayName = '.$arrayExport.";\n ?>", 
LOCK_EX); 

...不是去怪異Pootle和翻譯休息...

但如果你需要讀一遍經過一段時間不存儲它,使用$ _SESSIONS和序列化。

$_SESSION['exportedArray'] = serialize(array(
     'word.in' => 'en', 
     'word.yes' => 'Sí', 
     'word.no' => 'No', 
     'word.with' => 'con', 
    )); 

從會話讀取..

$exportedArray = unserialize($_SESSION['exportedArray']);