如何解決Seagull CMS菜單無法對應正確語文的問題?

2 views
Skip to first unread message

Henry Juan

unread,
Dec 10, 2008, 7:56:57 AM12/10/08
to Seagull中文讨论区
這個解決方案花了我好多時間,關鍵在於SGL_String的translate方法有4個參數,第4個參數如果沒給就不會調用
translate2:

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所使用的字典。

Reply all
Reply to author
Forward
0 new messages