0

我正在构建一个 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']

4

1 回答 1

0

JText::_()呼叫和使用不会为您提供任何更改语言的方法。它用于应用程序范围的翻译,因此使用每个请求绑定的应用程序语言。

相反,您可以考虑创建自己的JLanguage对象,这样您就可以更好地控制要使用的语言。

于 2012-06-19T02:24:47.393 回答