function translate($key, $filter = false, $aParams = array(),
$langCode = null)
{
if (!is_null($langCode)) {
return SGL_String::translate2($key, $filter, $aParams, $langCode);
}
…
而CmsSimpleRenderer在調用它時就沒有指定第4個參數:
$navText = SGL_String::translate($section->title);
因此沒有轉交給SGL_Translation3處理。
但是就算是修改CmsSimpleRenderer,調用SGL_String::translate時加了第4個參數,也只PageMgr有效果,
ContentMgr及其他Mrg無效果,Why?
因為缺少navigation字典! 參考PageMgr的validate當中是這麼寫的:
// We need the navigation dictionary
$trans = SGL_Translation3::singleton(’array’);
$input->cLang = $req->get(’cLang’)
? $req->get(’cLang’)
: $trans->defaultLangCode;
$trans->loadDictionary(’navigation’, $input->cLang);
$input->aLanguages = $trans->getAvailableLanguages();
所以要解決這個問題,必須注意:
1. 修改CmsSimpleRenderer,在產生navText時指定translate第4個參數。
2. 寫Mgr時別忘了載入navigation所使用的字典。