Нет перевода на язык - работает на сервере разработки, но не на производстве - PullRequest
0 голосов
/ 14 апреля 2011

Хотя перевод работает на сервере разработки, мы получаем следующее уведомление на рабочем сервере: перевод на язык 'fr' недоступен.

Вот конфигурация перевода в начальной загрузке (форсирование локали для теста):

$locale = "fr_CA.utf8";
$translate = new Zend_Translate( 
    array(
        'adapter'=>'gettext', 
        'content' => APPLICATION_PATH . '/lang',
        'locale' => $locale,
        'scan' => Zend_Translate::LOCALE_DIRECTORY, 
        'disableNotices' => false,
        'clear' =>true,
        'reload'=>true,
    )
);

Файл .mo находится в файле APPLICATION_PATH / lang / fr_CA.utf8 / LC_MESSAGES / messages.mo

В файле .mo есть переведенные строки, и локаль существует на обоих серверах, согласно "locale -a".

Любая подсказка, почему такая установка может работать на одном сервере, а не на другом?

РЕДАКТИРОВАТЬ:

Я получил его для работы со следующей конфигурацией:

        $translate = new Zend_Translate( 
        array(
            'adapter'=>'gettext', 
            'content' => APPLICATION_PATH.'/lang/'.$locale.'/LC_MESSAGES/messages.mo',
            'locale' => $locale,
            'disableNotices' => true,
            'clear' =>true,
            'reload'=>true,
        )
    );

Кажется, сканирование не работает.

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

У меня была похожая проблема (с использованием адаптера массива)

Причина: путь webroot рабочего сайта содержит скрытый каталог /home/.sites/path/to/my/webroot/

// Settings:
$locale = new Zend_Locale('browser');
$language = $locale->getLanguage();

// Solution: added option 'ignore'  => '===' to override
// default $_options settings in Zend_Translate_Adapter

$translate = new Zend_Translate(array(
    'adapter' => 'array',
    'content' => APPLICATION_PATH . '/languages/' . $language,
    'scan'    => Zend_Translate::LOCALE_DIRECTORY,
    'locale'  => $locale,
    'ignore'  => '===',        // override default '.'

));
0 голосов
/ 17 января 2012

У меня была похожая проблема, но я использовал application.ini для настройки перевода.

Это были строки, связанные с Zend_Translate:

resources.translate.adapter = "gettext"
resources.translate.content = APPLICATION_PATH "/languages"
resources.translate.options.scan = 'directory'

Это нормально работало на нашем сервере разработки, но не на нашемпромежуточный сервер.Пришлось убрать кавычки из опции сканирования:

resources.translate.options.scan = directory

Без кавычек это работало.Но я понятия не имею, почему эта конкретная строка конфигурации не может обрабатывать кавычки на нашем промежуточном сервере.

...