如何定义一个可以跨模板的所有PHP元素工作的查找表?

时间:2012-11-08 作者:Vince Pettit

我正在使用查找表为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元素工作的查找表?

2 个回复
最合适的回答,由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的“松散耦合”程度更高。

结束

相关推荐

从子主题函数声明父主题中包含的类的实例。php

Please note this is all \"working\" - the question is about the best practice and to try and work out why I need to include the PHP file which contains the class in two places for it to work correctly.我正在研究一个简单的父主题,以加快我自己的开发周期,并且已经达到了测试一个简单的子主题的程度。我知道func