2010-05-13 56 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