2012-05-12 10 views

答えて

0

短い回答:カテゴリの翻訳はまだサポートされていません。回避策として、joomlaの文字列翻訳機能を使用することができます。設計の迅速で汚れたタッチに対する私の言い訳:主な目標は、管理コードを変更せずにバックエンドの管理者の翻訳を変更できるようにすることでした。私たちはそのドイツ語版のような同じ名前を持つ新しい定数を作成

  1. をすべてのカテゴリ名が
  2. (例えば「Katgeorie 1」)は、ドイツで入力されますが、以下の例では、これが意味そのベース言語としてドイツ語取り名前空間の可能性(例: "CATEGORY1")に変更されました。これにより、自動マッチングが可能になります。
  3. テンプレートのコードでは、元の言語ページ(ここではドイツ語)よりもカテゴリの出力を置き換えます。

次の関数は、他の言語で正しい定数値を自動的に取得するのに役立ちます。カテゴリ名を表示するテンプレートで文字列関数を置き換えます:

<?php echo translate($this->escape($row->name)); ?> 

代わりの

<?php echo $this->escape($row->name); ?> 
これを使用する方法

/** 
* Remove umlauts and special chars. 
*/ 
if(!function_exists('toASCII')) { 
    function toASCII($str) { 
     $str = mb_strtolower($str,'UTF-8'); // Useful if the current server setting is not UTF-8 
     //$str = strtolower($str); 
     $str = preg_replace('#ß#' , "ss", $str); // maps German ß onto ss 
     $str = preg_replace('#ä#' , "ae", $str); // Æ => AE 
     $str = preg_replace('#ö#' , "oe", $str); // Œ => OE 
     $str = preg_replace('#ü#' , "ue", $str); // œ => oe 
     $str = preg_replace('#Ä#' , "ae", $str); // Æ => AE 
     $str = preg_replace('#Ö#' , "oe", $str); // Œ => OE 
     $str = preg_replace('#Ü#' , "ue", $str); // œ => oe 
     $str = preg_replace('# #' , "", $str);  // remove spaces 
     $str = preg_replace('#-#' , "", $str);  // remove hyphens 
     $str = preg_replace("#'#" , "", $str);  // remove apostrophs 
     $str = preg_replace("#/#" , "", $str);  // remove apostrophs 
     $str = preg_replace("#\(#" , "", $str);  // remove apostrophs 
     $str = preg_replace("#\)#" , "", $str);  // remove apostrophs 
     $str = preg_replace("#\.#" , "", $str);  // remove apostrophs 
     $str = preg_replace("#,#" , "", $str);  // remove apostrophs 
     $str = preg_replace("#\[#" , "", $str);  // remove apostrophs 
     $str = preg_replace("#\]#" , "", $str);  // remove apostrophs 
     // Process all other special chars 
     $str = strtr(utf8_decode($str), 
       utf8_decode('ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ'), 
       'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy'); 
     return strtoupper($str); 
    } 
} 

function translate($de_string) { 

    // Translate all JoomGallery category names 
    $menu = JFactory::getApplication()->getMenu(); 
    $active = $menu->getActive(); 
    $activeItemLanguage = $active->language; 
    $lang = substr($activeItemLanguage, 0, 2); 

    // Do not translate german category names 
    $trans_str = $de_string; 
    if ($lang != "de") { 
     // Parse all category names and replace them with an existing override-string. 
     $const = toASCII($trans_str); 
     $trans_str = JText::_($const); 
    } 
    return $trans_str; 
} 

関連する問題