是否可以使用JText :: _将变量名称更改为所有站点lang?

时间:2012-06-19 02:13:54

标签: php joomla metadata

我正在构建一个php代码来填充一些元数据从同一个站点db获取信息,这个站点是英语,法语和西班牙语。现在我需要在每种语言中创建3个句子,并且我从数据库中获取了一些需要翻译的字符串。有没有办法可以使用JText :: _从语言文件中获取翻译并将其设置为每种语言的不同变量。 ?

我的意思是

$var_en = JText::_($cat_name) //store the category name in english
$var_fr = JText::_($cat_name) //store the category name in french

如何在我的代码中为JText指定我想要使用的语言?

它可能很复杂我知道,为了更好地理解,我将与您分享我的代码

function createmetadatainfo(){
    global $mtconf;

//USE THIS IF SCRIPT EXECUTION TAKES TOO LONG
//set_time_limit(300);

//USE THE $app OBJECT TO CLOSE THE APPLICATION BEFORE JOOMLA RENDERS THE SITE
$app        = JFactory::getApplication('admin');
    //DATABASE
    global $database;   
    $database       =& JFactory::getDBO();

        //CREATE AND UPDATE METADESC FOR CATEGORIES.
            $query = 'SELECT 
                        `cat_id` , `cat_name` , `cat_links`
                      FROM 
                        `#__mt_cats`
                      ORDER BY 
                        `cat_id`';

            $database->setQuery($query);
            $metaCats = $database->loadAssocList();

            foreach ($metaCats as $value) {
                //building metadescription sentences in different languages. 
                $meta_en = $value['cat_links']." listings on ".$value['cat_name']." category"; 
                $meta_fr = $value['cat_links']." annonces sur ".$value['cat_name']." catégorie";
                $meta_es = $value['cat_links']." listados en la categoría ".$value['cat_name'];
                $cat_id = $value['cat_id'];
                $query_cat_metadesc = "UPDATE `#__mt_cats` SET `metadesc` = '$meta_en' ,
                                                            `metadesc_fr` = '$meta_fr' ,
                                                            `metadesc_es` = '$meta_es'
                                                             WHERE `cat_id` = '$cat_id'";
                $database->setQuery($query_cat_metadesc);
                $database->query();
            }

//CLOSE the $app
$app->close();

}

请注意foreach声明中我需要以不同语言存储$ meta_en,$ meta_fr和$ meta_es变量$ value [' cat_name']

1 个答案:

答案 0 :(得分:0)

JText::_()来电和使用不会为您提供更改语言的方法。它适用于应用程序范围的转换,因此使用了每个请求绑定的应用程序语言。

相反,您可以考虑创建自己的JLanguage对象,以便更好地控制使用哪种语言。