Próbuję użyć Zend_Translate z Zend Framework
Używam "POEdit" do generowania plików tłumaczeniowych "gettext".
Moje pliki są pod /www/mysite.com/webapps/includes/locale (ta ścieżka znajduje się w mojej ścieżce dołączania). Mam: pictures.en.mo pictures.en.po (Planuję wkrótce mieć picture.es.mo)
Wszystko działa dobrze, jeśli ręcznie robię addTranslation () dla każdego pliku. Jednak chcę użyć metody automatycznego skanowania plików.
Próbowałem obu tych:
<?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");
}
I to:
<?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");
}
W obu przypadkach otrzymuję komunikat: Brak tłumaczenia dla języka "en". w /www/mysite.com/webapps/includes/Zend/Translate/Adapter.php on line 411
To działało również, gdy próbowałem wykonać skanowanie katalogów.
Odpowiedzi:
1 dla odpowiedzi № 1Myślę, że jest tylko jeden mały "bug".
$translate = new Zend_Translate(
"gettext",
LOCALE,
null,
array("scan" => Zend_Translate::LOCALE_DIRECTORY) // <--
);
Jeśli używasz LOCALE_FILENAME, to ZF przeszukuje w tym PLIKU swoje tłumaczenie.