0

在我的多语言 joomla 2.5 页面上,我想使用JoomGallery。图像被分配到类别。如何根据网页当前语言制作这些类别?

谢谢你。尖刺

4

1 回答 1

0

简短回答:尚不支持类别翻译。作为一种解决方法,您可以使用 joomla 的字符串翻译功能。我为设计的快速而肮脏的感觉辩解:主要目标是能够在不更改管理代码的情况下更改后端管理员的翻译。下面的示例以德语作为其基本语言,这意味着:

  1. 每个类别名称都以德语输入(例如“Katgeorie 1”)
  2. 我们创建一个新常量,其名称与德语版本相同,但修改为命名空间可能性(例如“CATEGORY1”)。这将允许自动匹配。
  3. 在模板代码中,如果我们在与原始页面不同的语言页面(这里是德语)上,我们会替换类别输出。

以下函数有助于在其他语言中自动获取正确的常量值。

/**
 * 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;
}

如何使用:替换模板中显示类别名称的字符串函数:

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

代替

<?php echo $this->escape($row->name); ?>
于 2012-08-03T08:32:02.680 回答