【问题标题】:is possible to use JText::_ to change a variable name to all site langs?是否可以使用 JText::_ 将变量名称更改为所有站点语言?
【发布时间】:2012-06-21 01:16:46
【问题描述】:

我正在构建一个 php 代码来填充一些从同一个站点数据库获取信息的元数据,这个站点是英语、法语和西班牙语的。现在我需要用每种语言创建 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']

【问题讨论】:

    标签: php joomla metadata


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 2016-01-31
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多