Я создал файл it_IT.mo и it_IT.po, который я поместил в папку
module/application/language/mydomain/
в файле module.php Я вошел
public function onBootstrap(MvcEvent $e)
{
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
$eventManager->attach('dispatch.error', array($this,'onDispatchError'), 100);
$translator = $e->getApplication()->getServiceManager()->get('translator');
$translator->addTranslationFile(
'phpArray',
'vendor/zendframework/zendframework/resources/languages/it/Zend_Validate.php',
'default',
'it_IT'
);
$translator->addTranslationFilePattern('Gettext',"module/Application/language/mydomain/","mydomain");
AbstractValidator::setDefaultTranslator($translator);
}
в моем Посмотреть
<?php echo $this->translate("operation_allowed_false","ha","it_IT"); die();?>
msgid файла
распечатайте ключ, а не переведенный текст
это мой файл
msgid ""msgstr """Project-Id-Version: ha\n""POT-Creation-Date: 2014-09-17 13:09+0100\n""PO-Revision-Date: 2014-09-17 13:14+0100\n""Last-Translator: \n""Language-Team: \n""Language: it_IT\n""MIME-Version: 1.0\n""Content-Type: text/plain; charset=UTF-8\n""Content-Transfer-Encoding: 8bit\n""X-Generator: Poedit 1.6.9\n""X-Poedit-Basepath: C:\\Users\\DEVELOPMENT\\xamp\\htdocs\\ha\\doc\\phpstring""\\contenuti\n""Plural-Forms: nplurals=2; plural=(n != 1);\n""X-Poedit-SearchPath-0: C:\\Users\\DEVELOPMENT\\xamp\\htdocs\\ha\\doc""\\phpstring\\contenuti\n"
#: C:\Users\DEVELOPMENT\xamp\htdocs\ha\doc\phpstring\contenuti/base.php:9
msgid "operation_allowed_false"msgstr "Operazione non consentita."
В module.php Вы регистрируете gettext translationFilePattern с неверным шаблоном. Строка шаблона должна содержать «% s», который заменяется строкой локали.
Пример:
$translator->addTranslationFilePattern('gettext',"module/Application/language/mydomain","%s.mo");
Так что, если ваша локаль это it_IT, переводчик загрузит файл модуль / Application / язык / MYDOMAIN / it_IT.mo
В вашем Посмотреть вы хотите перевести с домена ха (второй параметр):
<?php echo $this->translate("operation_allowed_false","ha","it_IT"); die();?>
Но вы не зарегистрировали свой файл translationFilePattern в текстовом домене. Установите этот параметр на null
использовать домен по умолчанию:
<?php echo $this->translate("operation_allowed_false" null,"it_IT"); die();?>
Я также рекомендовал бы перенести конфигурацию переводчика на ваш module.config.php:
'translator' => array(
'locale' => 'it_IT',
'translation_files' => array(
array(
'type' => 'phpArray',
'filename' => '/vendor/zendframework/zendframework/resources/languages/it/Zend_Validate.php',
'locale' => 'it_IT',
),
),
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language/mydomain',
'pattern' => '%s.mo',
),
),
),
Все не проверено
Других решений пока нет …