0

私は同じサイトデータベースから情報を取得するいくつかのメタデータを埋めるために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ステートメント内で、さまざまな言語の変数$ value['cat_name']を$meta_en、$ meta_fr、および$meta_es内に格納する必要があることに注意してください。

4

1 に答える 1

0

通話と使用法ではJText::_()、言語を変更する方法は提供されません。これはアプリケーション全体の翻訳用であるため、各リクエストごとにバインドされたアプリケーション言語が使用されます。

代わりに、独自のJLanguageオブジェクトを作成することを検討して、使用する言語をより細かく制御できます。

于 2012-06-19T02:24:47.393 に答える