2011-03-19 22 views
0

我不知道一種方法來提取automaticaly字符串在文件中翻譯。Zend_Translate:從視圖中自動提取字符串

例如,你有你的佈局和視圖一些echo $this->translate('my_string');,我想創建的文件「en_US.php」,「fr_FR.php」,「es_ES.php」與比較數組:

<?php return array('my_string' => 'translation of my string'); ?> 

這可能嗎?

謝謝。

+0

我認爲你需要gettext adapater和一個像poedit這樣的工具 – opHASnoNAME 2011-03-19 14:30:50

回答

1

看那一個Zend_Translate適配器和選擇一個。我熱烈推薦gettext適配器。

這裏是如何實現國際化在Zend框架應用程序:引導過程中

  1. 設置翻譯適配器
  2. 存儲適配器對象與合適的詞彙註冊表設置::(「一個Zend_Translate」,$翻譯);
  3. 用$ translate-> translate('This is translatable text')等價換行所有文本;
  4. 在您的開發機器上安裝'gettext'。
  5. 安裝並設置poEdit。 poEdit將掃描您的應用程序並查找所有可翻譯的字符串。然後它會將它們存儲在一個.po文件中,您可以對其他語言進行編輯和乘法。
  6. 完成後,保存它並且poEdit商店創建.mo文件。 Zend_Translate gettext適配器需要這些。
0

使用PHP翻譯項目對於小型項目來說非常方便,因此您不應該需要這樣的工具。

gettext有這樣的工具,如poedit,它將解析您的項目並搜索給定的函數/方法(translate())。 poEdit的將產生的.po文件,basicly由純/文本文件,它看起來像:

#: src/name.c:36 
msgid "My name is %s.\n" 
msgstr "" 

如果你真的需要使用PHP文件爲您的翻譯,您可以嘗試一些grepsedawk,像這應該給一個起點(沒有測試):

echo "return array(" > mytranslation.php | \ 
grep "translate(" * | \ 
cut -f1 | \ 
sed -r '[email protected]*translate\((.*)\).*@\1 => "Not translated yet",@' >> mytranslation.php && \ 
echo ");" >> mytranslation.php 
1

是的,它是。

把你application.ini

resources.translate.adapter = Array 
resources.translate.locale = fr_FR 
resources.translate.disableNotices = true 
resources.translate.data = APPLICATION_PATH "/data" 

並把文件fr_FR.phpAPPLICATION_PATH "/data"目錄。它應該工作。

文件必須是這樣的:

return array (
    'Good day' => 'Bojour', 
);