2010-05-13 59 views
1

我試圖用一個Zend_Translate從Zend框架一個Zend_Translate掃描翻譯文件

我使用「poEdit的」生成「gettext的」翻譯文件。

我的文件位於/www/mysite.com/webapps/includes/locale(此路徑位於我的包含路徑中)。 我: pictures.en.mo pictures.en.po (我計劃在不久pictures.es.mo有)

這一切工作正常,如果我做手工addTranslation()爲每個文件。但是我想使用自動文件掃描方法。

我都嘗試那些:

<?php 
/*Localization*/ 
require_once 'Zend/Translate.php'; 
require_once 'Zend/Locale.php'; 
define('LOCALE','/www/mysite.com/webapps/includes/locale'); 

if(!empty($_GET['locale'])){ 
    $locale = new Zend_Locale($_GET['locale']); 
} 
else{ 
    $locale = new Zend_Locale(); 
} 

$translate = new Zend_Translate('gettext', LOCALE, null, array('scan' => Zend_Translate::LOCALE_FILENAME)); 


if ($translate->isAvailable($locale->getLanguage())){ 
    $translate->setLocale($locale);           
} 
else{ 
    $translate->setLocale('en'); 
} 

這:

<?php 
/*Localization*/ 
require_once 'Zend/Translate.php'; 
require_once 'Zend/Locale.php'; 
define('LOCALE','/www/mysite.com/webapps/includes/locale'); 

if(!empty($_GET['locale'])){ 
    $locale = new Zend_Locale($_GET['locale']); 
} 
else{ 
    $locale = new Zend_Locale(); 
} 

$translate = new Zend_Translate('gettext', LOCALE); 


if ($translate->isAvailable($locale->getLanguage())){ 
    $translate->setLocale($locale);           
} 
else{ 
    $translate->setLocale('en'); 
} 

在這兩種情況下,我得到一個通知:沒有翻譯成 'en' 可用的語言。在/www/mysite.com/webapps/includes/Zend/Translate/Adapter.php在線411

它也工作,如果我試圖做目錄掃描。

回答

1

我認爲只有一個小小的「bug」。

$translate = new Zend_Translate(
     'gettext', 
     LOCALE, 
     null, 
     array('scan' => Zend_Translate::LOCALE_DIRECTORY) // <--  
); 

如果您使用LOCALE_FILENAME,ZF將在此FILE中搜索您的翻譯。

+0

我挑選了「FILENAME」,以便掃描文件名「pictures.en.mo」並找到「en」。這是我從文檔中理解的。 「DIRECTORY」將要求我保持每種語言的目錄結構。 – 2010-05-17 16:22:47