Я намагаюся використовувати Zend_Translate з Zend Framework
Я використовую "POEdit" для створення "gettext" файлів перекладу.
Мої файли знаходяться під адресою /www/mysite.com/webapps/includes/locale (цей шлях знаходиться в моєму шляху включення). У мене є: pictures.en.mo pictures.en.po (Я планую мати фотографії.ес.мо незабаром)
Все працює добре, якщо я вручну додаю переказ () для кожного файлу. Однак я хочу використовувати метод автоматичного сканування файлів.
Я спробував обидва з них:
<?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 для відповіді № 1Я думаю, що є лише одна маленька "помилка".
$translate = new Zend_Translate(
"gettext",
LOCALE,
null,
array("scan" => Zend_Translate::LOCALE_DIRECTORY) // <--
);
Якщо ви використовуєте LOCALE_FILENAME, ZF шукає всередині цього файлу для вашого перекладу.