/ / Zend_Translate skanuj pliki tłumaczeń - zend-framework, localization, gettext

Zend_Translate skanuj pliki tłumaczeń - zend-framework, localization, gettext

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 № 1

Myś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.