zend translate объединяет несколько файловых языков - PullRequest
3 голосов
/ 28 января 2011

Я пытаюсь добавить в свой языковой файл языковой файл ошибок формы zend, который можно найти в

ZendFramework-1.11.2.zip\ZendFramework-1.11.2\resources\languages

, чтобы иметь локализованные средства проверки правильности формы.Этот блог http://www.thomasweidner.com/flatpress/2010/03/25/working-with-multiple-translation-sources/comments/ объясняет, что я пытаюсь сделать, но не получается :( он переводится только из моего .ini-файла, .php не включен. Вот что я сделал:

это мойapplication.ini

resources.translate.adapter = "ini"
resources.translate.default.locale = "it_IT"
resources.translate.default.locale = "en_US"
resources.translate.default.file = APPLICATION_PATH "/lang/source-it.ini"
resources.translate.translation.en = APPLICATION_PATH "/lang/source-en.ini"
;resources.translate.data.directory = APPLICATION_PATH "/lang"
resources.translate.data = APPLICATION_PATH "/lang" 

и тогда у меня есть это

 <?php
    class Gestionale_Application_Resource_Translate extends Zend_Application_Resource_ResourceAbstract
    {
        public function init ()
        {
            $options = $this->getOptions();
            $adapter = $options['adapter'];
            $defaultTranslation = $options['default']['file'];
            $defaultLocale = $options['default']['locale'];


            $translate = new Zend_Translate($adapter, $defaultTranslation, $defaultLocale);

            $translation_addme = new Zend_Translate(
                'array', 
APPLICATION_PATH."/resources/languages/it/Zend_Validate.php"
                'it',
                array('scan' => Zend_Translate::LOCALE_DIRECTORY)
            );
            $translate->addTranslation($translation_addme);

            foreach ($options['translation'] as $locale => $translation) {
                $translate->addTranslation($translation, $locale);
            }
            Zend_Registry::set('Zend_Translate', $translate);
            return $translate;
        }
    }

, и это мой каталог

c:\www\www\gestionale\application>dir /w /aD
 Il volume nell'unità C è OS
 Numero di serie del volume: 6A5E-FD9B

 Directory di c:\www\www\gestionale\application

[.]           [..]          [.svn]        [configs]     [controllers]
[forms]       [lang]        [layouts]     [models]      [resources]
[views]
               0 File              0 byte
              11 Directory  447.780.282.368 byte disponibili

1 Ответ

4 голосов
/ 29 января 2011

Просто глядя на ваш код, я не могу вам многое сказать.Я подозреваю, что ваши проблемы могут быть связаны с тем, что вы создаете свой собственный плагин ресурсов, что для этой цели непривычно, что-то неправильно загружается или возникают некоторые конфликты с вашим application.ini.В любом случае, я опубликую свою настройку перевода и, возможно, она даст вам некоторые подсказки.

application.ini

Здесь нет ничего о переводе или локали, поскольку я настроил их в Bootstrap.php.

Bootstrap.php

protected function _initLocale() {
    // define locale
    $locale = new Zend_Locale('en');

    // register it so that it can be used all over the website
    Zend_Registry::set('Zend_Locale', $locale);
}

protected function _initTranslate() {
    // Get Locale
    $locale = Zend_Registry::get('Zend_Locale');


    // Set up and load the translations (there are my custom translations for my app)
    $translate = new Zend_Translate(
                    array(
                        'adapter' => 'array',
                        'content' => APPLICATION_PATH . '/languages/' . $locale . '.php',
                        'locale' => $locale)
    );

    // Set up ZF's translations for validation messages.
    $translate_msg = new Zend_Translate(
                    array(
                        'adapter' => 'array',
                        'content' => APPLICATION_PATH .
                        '/resources/languages/' . $locale . '/Zend_Validate.php',
                        'locale' => $locale)
    );

    // Add translation of validation messages
    $translate->addTranslation($translate_msg);

    Zend_Form::setDefaultTranslator($translate);

    // Save it for later
    Zend_Registry::set('Zend_Translate', $translate);
}
...