Zend_Translate扫描翻译文件

时间:2010-05-13 21:24:03

标签: zend-framework localization gettext

我试图使用Zend Framework的Zend_Translate

我使用“POEdit”生成“gettext”翻译文件。

我的文件位于/www/mysite.com/webapps/includes/locale(此路径位于我的包含路径中)。 我有: pictures.en.mo pictures.en.po (我打算尽快买picture.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 个答案:

答案 0 :(得分:1)

我认为只有一个小“错误”。

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

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