我正在使用查找表为qTranslate插件定义一些内容
Table
$trans_home = array(\'en\' => \'Home\',\'it\' => \'Home\',\'de\' => \'Home\',\'zh\' => \'首页\',\'es\' => \'Página de inicio\',\'fr\' => \'Page d\\\'accueil\');
$trans_company = array(\'en\' => \'Company\',\'it\' => \'L\\\'azienda\',\'de\' => \'Firma\',\'zh\' => \'公司\',\'es\' => \'Empresa\',\'fr\' => \'Société\');
Code calling up lookup table
echo $trans_home[qtrans_getLanguage()];
echo $trans_company[qtrans_getLanguage()];
我认为,如果我将查找表放在头文件中,我将能够在整个模板中调用该表,但似乎我需要在模板的每个部分定义查找表,因此,例如,我必须在页眉和页脚中都定义该表才能使其工作。
因此,问题是如何定义一个可以跨模板的所有PHP元素工作的查找表?
最合适的回答,由SO网友:s_ha_dum 整理而成
将其加载到收割台中应该有效,或者在init
钩你需要申报global
也所以
// define
global $trans_home;
$trans_home = array(\'en\' => \'Home\',\'it\' => \'Home\',\'de\' => \'Home\',\'zh\' => \'首页\',\'es\' => \'Página de inicio\',\'fr\' => \'Page d\\\'accueil\');
// and use in your templates
global $trans_home;
echo $trans_home[qtrans_getLanguage()];
SO网友:chrisguitarguy
我会使用某种函数或对象来包装内容,而不是使用全局变量。WordPress已经有很多了,无需再添加更多。
例如:。
<?php
function wpse71942_home($l)
{
// only set it once
static $langs = null;
// Using filters makes your theme more extensible later
if(is_null($langs))
$langs = apply_filters(\'wpse71942_home_trans\', array(\'en\' => \'Home\',\'it\' => \'Home\',\'de\' => \'Home\',\'zh\' => \'首页\',\'es\' => \'Página de inicio\',\'fr\' => \'Page d\\\'accueil\'));
return isset($langs[$l]) ? $langs[$l] : \'\';
}
用法:
<?php
echo wpse71942_home(qtrans_getLanguage());
请注意,当前的语言是传入的——它与qTranslate的“松散耦合”程度更高。