Zend_Translate сканирует перевод файлов - PullRequest
1 голос
/ 14 мая 2010

Я пытаюсь использовать Zend_Translate от Zend Framework

Я использую "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');
}

В обоих случаях я получаю Уведомление: перевод на английский язык недоступен. в /www/mysite.com/webapps/includes/Zend/Translate/Adapter.php в строке 411

Это также сработало, если я попытался выполнить сканирование каталогов.

1 Ответ

1 голос
/ 14 мая 2010

Я думаю, что есть только одна маленькая "ошибка".

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

Если вы используете LOCALE_FILENAME, ZF ищет в этом ФАЙЛЕ ваш перевод.

...