我试图使用Zend Framework的Zend_Translate
我使用“POEdit”生成“gettext”翻译文件。
我的文件位于/www/mysite.com/webapps/includes/locale(此路径位于我的包含路径中)。 我有: pictures.en.mo pictures.en.po (我打算尽快买picture.es.mo)
如果我为每个文件手动执行addTranslation(),一切正常。但是我想使用自动文件扫描方法。
我试过了两个:
<?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行
如果我尝试进行目录扫描,它也有效。
答案 0 :(得分:1)
我认为只有一个小“错误”。
$translate = new Zend_Translate(
'gettext',
LOCALE,
null,
array('scan' => Zend_Translate::LOCALE_DIRECTORY) // <--
);
如果您使用LOCALE_FILENAME,ZF会在此FILE中搜索您的翻译。