LanguageMenuProcessor

This menu processor generates a list of language menu items which can be assigned to the FLUIDTEMPLATE as a variable.

Options:

if

if
Type
if condition
Required
false

Only if the condition is met the data processor is executed.

languages

languages
Type
string / stdWrap
Required
true
Default
"auto"
Example
"0,1,2"

A list of comma-separated language IDs (e.g. 0,1,2) to use for the menu creation or auto to load from the site configuration.

addQueryString.exclude

addQueryString.exclude
Type
string / stdWrap
Required
true
Default
""
Example
"gclid,contrast"

A list of comma-separated parameter names to be excluded from the language menu URLs.

as

as
Type
string
Required
false
Default
defaults to the fieldName

The variable name to be used in the Fluid template.

Example: Menu of all language from site configuration

Please see also About the examples.

TypoScript

Using the LanguageMenuProcessor the following scenario is possible:

EXT:examples/Configuration/TypoScript/DataProcessors/Processors/LanguageMenuProcessor.typoscript
tt_content {
    examples_dataproclang =< lib.contentElement
    examples_dataproclang {
        templateName = DataProcLangMenu
        # Before TYPO3 v12.1 you have to specify the fully-qualified class name of the processor
        # dataProcessing.10 = TYPO3\CMS\Frontend\DataProcessing\LanguageMenuProcessor
        # Since TYPO3 v12.1 one can also use the available alias
        dataProcessing.10 = language-menu
        dataProcessing.10 {
            languages = auto
            as = languageNavigation
        }
    }
}
Copied!

New in version 12.1

One can use the alias language-menu instead of the fully-qualified class name \TYPO3\CMS\Frontend\DataProcessing\LanguageMenuProcessor.

The Fluid template

This generated menu can be used in Fluid like this:

EXT:examples/Resources/Private/Templates/ContentElements/DataProcLangMenu.html
<html data-namespace-typo3-fluid="true" xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers">
   <h2>Data in variable languageNavigation</h2>
   <f:debug inline="true">{languageNavigation}</f:debug>

   <h2>Output</h2>
   <f:if condition="{languageNavigation}">
      <ul id="language" class="language-menu">
         <f:for each="{languageNavigation}" as="item">
            <li class="{f:if(condition: item.active, then: 'active')}
                    {f:if(condition: item.available, else: ' text-muted')}">
               <f:if condition="{item.available}">
                  <f:then>
                     <a href="{item.link}" hreflang="{item.hreflang}"
                        title="{item.navigationTitle}">
                        <span>{item.navigationTitle}</span>
                     </a>
                  </f:then>
                  <f:else>
                     <span>{item.navigationTitle}</span>
                  </f:else>
               </f:if>
            </li>
         </f:for>
      </ul>
   </f:if>

</html>
Copied!

Output

The array now contains information on all languages as defined in the site configuration. As the current page is not translated into German, the German language has the item.available set to false. It therefore does not get linked in the template.