问题描述
||
虽然翻译在开发服务器上可以正常工作,但我们在生产服务器上得到以下通知:没有可用的语言'fr \'的翻译。
这是引导程序中的转换配置(强制测试的语言环境):
$locale = \"fr_CA.utf8\";
$translate = new Zend_Translate(
array(
\'adapter\'=>\'gettext\',\'content\' => APPLICATION_PATH . \'/lang\',\'locale\' => $locale,\'scan\' => Zend_Translate::LOCALE_DIRECTORY,\'disableNotices\' => false,\'clear\' =>true,\'reload\'=>true,)
);
.mo文件位于APPLICATION_PATH / lang / fr_CA.utf8 / LC_MESSAGES / messages.mo中
根据\“ locale -a \” ,. mo文件中包含翻译后的字符串,并且两个服务器上都存在语言环境。
关于为什么这样的设置可以在一台服务器上运行而不在另一台服务器上运行的任何线索?
编辑:
我将其与以下配置一起使用:
$translate = new Zend_Translate(
array(
\'adapter\'=>\'gettext\',\'content\' => APPLICATION_PATH.\'/lang/\'.$locale.\'/LC_MESSAGES/messages.mo\',\'disableNotices\' => true,)
);
扫描似乎无效。
解决方法
我有一个类似的问题(使用阵列适配器)
原因:生产站点的webroot路径包含隐藏目录
/home/.sites/path/to/my/webroot/
// Settings:
$locale = new Zend_Locale(\'browser\');
$language = $locale->getLanguage();
// Solution: added option \'ignore\' => \'===\' to override
// default $_options settings in Zend_Translate_Adapter
$translate = new Zend_Translate(array(
\'adapter\' => \'array\',\'content\' => APPLICATION_PATH . \'/languages/\' . $language,\'scan\' => Zend_Translate::LOCALE_DIRECTORY,\'locale\' => $locale,\'ignore\' => \'===\',// override default \'.\'
));
,我有一个类似的问题,但是使用application.ini来配置翻译。
这些是与Zend_Translate相关的行:
resources.translate.adapter = \"gettext\"
resources.translate.content = APPLICATION_PATH \"/languages\"
resources.translate.options.scan = \'directory\'
在我们的开发服务器上,但在登台服务器上,这没什么问题。我们必须从扫描选项中删除引号:
resources.translate.options.scan = directory
没有引号就可以了。但是我不知道为什么这个特殊的配置行不能在我们的登台服务器上处理引号。