TYPO3 v6中的语言切换

时间:2013-11-17 10:44:26

标签: internationalization typo3

切换前端语言对我不起作用。到目前为止我做了什么:

在根页面,我创建了两种网站语言,德语和英语:

two languages

在typoscript模板中,我添加了以下设置,我发现大部分内容散布在网络上:

config {
  tx_realurl_enable = 1
  simulateStaticDocuments = 0
  sys_language_uid = 0
  language = de
  locale_all = de_DE
  htmlTag_langKey = de
  linkVars := addToList(L)
  uniqueLinkVars = 1
  sys_language_mode = content_fallback
  sys_language_overlay = 1
}

[globalVar = GP:L = 0]
config.sys_language_uid = 0
config.language = de
config.locale_all = de_DE
config.htmlTag_langKey = de
[global]

[globalVar = GP:L = 2]
config.sys_language_uid = 1
config.language = en
config.locale_all = en_EN
config.htmlTag_langKey = en
[global]

在一个页面上,我为该页面创建了一个新的翻译并添加了一些内容。

translation

左边是标准语言(在这种情况下是德语),里面装满了lorem ipsum。在右边是新语言(英语),其中包含一些不同的内容,只是为了看到一些效果。

现在,当我点击英文专栏上方的小预览图标时,我需要index.php?id=3&L=2,表示已添加L=2。但网站上的内容仍然是标准(german / lorem ipsum)内容。我哪里做错了?

另外:我在前端添加了一个菜单,让用户在语言之间切换:

  languageMenu = HMENU
  languageMenu {
    special = language
    special.value = 0,2
    1 = TMENU
    1 {
      wrap = <ul id="language"> | </ul>
      NO = 1
      NO {
        wrapItemAndSub = <li> | </li>
        stdWrap.override = deutsch || english
      }
      ACT < .NO
      ACT {
        ATagParams = class="active"
      }
    }
  }

结合realurl,这会产生如下网址:

德语:/startseite/ 英语:/2/home/

  1. 是否可以使用deen之类的参数代替语言的数字?
  2. 如何确保网址始终包含德语或英语语言参数?
  3. 当您在/startseite/时,相应的链接会获得class="active",但在/2/home/上,没有任何链接被标记为有效。怎么能修好?
  4. TYPO3和多语言似乎是一个令人困惑的话题,我希望你们中的一些人可以回答我的一些问题。提前谢谢!

    编辑:感谢Daniel。

    找到解决方案

    以防万一其他人有同样的问题:

    设定:

    config {
      tx_realurl_enable = 1
      simulateStaticDocuments = 0
      sys_language_uid = 0
      language = de
      locale_all = de_DE
      htmlTag_langKey = de
      linkVars := addToList(L)
      uniqueLinkVars = 1
      sys_language_mode = content_fallback
      sys_language_overlay = 1
    }
    
    [globalVar = GP:L = 0]
    config.sys_language_uid = 0
    config.language = de
    config.locale_all = de_DE
    config.htmlTag_langKey = de
    [global]
    
    [globalVar = GP:L = 2]
    config.sys_language_uid = 2
    config.language = en
    config.locale_all = en_EN
    config.htmlTag_langKey = en
    [global]
    
    [...]
    
      languageMenu = HMENU
      languageMenu {
        special = language
        special.value = 0,2
        1 = TMENU
        1 {
          wrap = <ul id="language"> | </ul>
          NO = 1
          NO {
            wrapItemAndSub = <li> | </li>
            stdWrap.override = deutsch || english
          }
          ACT < .NO
          ACT {
            ATagParams = class="active"
          }
        }
      }
    

    RealUrl conf:

        'preVars' => 
        array(
          0 => 
          array(
            'GETvar' => 'L',
            'valueMap' => 
            array(
              'de' => '0',
              'en' => '2',
            ),
            'valueDefault' => 'de'
          ),
        ),
    

1 个答案:

答案 0 :(得分:3)

1)+ 2) 在realURL配置中使用valueMap:

   'preVars' =>
      array(
       0 =>
          array(
            'GETvar' => 'L',
            'valueMap' =>
              array(
                'de' => '0',                    
                'en' => '2'
              ),
          )
      )

3)尽量让你的L param与sys_language_uid保持同步。 所以对于englisch使用:

[globalVar = GP:L = 1]
    config.sys_language_uid = 1
    config.language = en
    config.locale_all = en_EN
    config.htmlTag_langKey = en
[global]