Question

I'm building a multilingual website with ModX, so I installed the Babel extra and the things seem to be working fine.

I am now wondering how to handle my templates and I can't come up with a solution for using the same template for pages with different languages (would be ideal, no code duplication).

Indeed, consider this code in my template that lists posts in the sidebar:

   <h3>Archives</h3>
   <ul>
     [[!Archivist? &target=`7` &parents=`3,4`]]
   </ul>

target=7 and parents=3,4 refer to Resources in English, so I obviously cannot use this code in my template for Resources in Chinese. The only workaround I could think of is to have different templates for each language. Is this the right way to go?

Was it helpful?

Solution

You can create system settings in the language contexts. [click on the context in the resource tree & go to settings.] You can then use these just like system settings:

[[!Archivist? &target=`[[++system_setting_1]]` &parents=`[[++system_setting_2]]`]]

As for the

Archives

- you can use lexicon settings for those or detect the context:

[[*context_key:is=`French`:then=`Archiv`:else=`Archives`]]

OTHER TIPS

This is exactly what lexicons are for. Read the docs here: http://rtfm.modx.com/revolution/2.x/developing-in-modx/advanced-development/internationalization

Add the lexicons you need, in each language, then implement in your template as follows:

<h3>[[%archives? 
      &topic=`mytopic` 
      &namespace=`mynamespace` 
      &language=`[[++cultureKey]]`
      ]]
</h3>

<ul>
  [[!Archivist? &target=`7` &parents=`3,4`]]
</ul>

Sean's suggestion above regarding Context Settings is the correct way to feed in context-specific parameters for your snippets.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top