システムプラグイン「Language Manager」をなんとか書き直したので、さまざまな言語のテキストをデータベース(DB)に保存します。
JText(すべてのアプリケーションコードに存在する)を書き換える方法がわからないので、ローカルファイルからではなく、DBから直接各言語のテキストを取得します。 「Language Manager」がDBからのみデータを取得するために必要なのと同じこと。
よろしくお願いします!ありがとうございました
JTextクラスを上書きまたは変更する代わりに、データベースから翻訳を取得して文字列を返す関数呼び出し関数をモデルに記述しないのはなぜですか?
モデルを含めた後、ビューに文字列をエコーします。
//INCLUDE AT THE TOP OF THE LAYOUT FILE
$mymodel= JModelLegacy::getInstance('ViewName','MyComponentNameModel');
//ECHO OUT TRANSLATION WHERE YOU NEED IT
echo $mymodel->getTranslation('MY_TRANSLATION_STRING');
これをモデルファイルに追加します。
public function getTranslation($string)
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$sql = "SELECT text FROM #__mycom_translations WHERE translation = '$string'";
$db->setQuery($sql);
$row = $db->getObject();
return $row->text;
}
私はあなたに完全な答えを与えることはできませんが、おそらくあなたがそれを解決するのを助けるための手がかりのカップルです。
JTextクラスはここにあります:
libraries\joomla\language\text.php
おそらく、JTextクラスを独自のものでオーバーライドし、バージョンのファイルの代わりにDBを使用できます。
コアの前にロードするので、まったくロードされません。
こちらをご覧ください:
http://www.informit.com/articles/article.aspx?p=1858258&seqNum=8