Referencing Languages

Referencing some document in a particular language or the current document in another language is very easily achieved with Qgoda.

Since the asset.lingua variable is just a taxonomy, referencing a particular document in a certain language is just a matter of adding the language to the filter set you are using.

That means that language links are just a special case of Listings and Links. Read there for the full picture. This page just outlines the general idea.

Listings and Links for the Current Language ("l-methods")

All methods of the Qgoda plug-in that take a set of filters as an argument have a corresponding version with the letter "l" prepended to the name that automatically adds a filter for the current language.


Creating a listing of posts for the tag "JavaScript" looks like this for a single-language site:

[% FOREACH post IN q.list('tags', ['contains', 'JavaScript']) %]
<a href="[% post.permalink %]">[% post.title | html %]</a>
[% END %]

For a multi-language site you would add one more filter:

[% FOREACH post IN q.list('lingua' = asset.lingua
                          'tags', ['contains', 'JavaScript']) %]
<a href="[% post.permalink %]">[% post.title | html %]</a>
[% END %]

And since this is such a common task, you can just use the method q.llist (think "language list") instead that adds that filter automatically:

[% FOREACH post IN q.llist('tags', ['contains', 'JavaScript']) %]
<a href="[% post.permalink %]">[% post.title | html %]</a>
[% END %]

So in the end, a multi-language site requires just a single letter more of template code.

Language Switches

Another common tasks is to create a list of all language variants of a particular document. That can be achieved like this:

[% FOREACH lingua IN config.linguas %]
  <li><a href="[% lingua=lingua) %]">[% lingua %]</a>
[% END %]

This is using two filters. The first one is restricting the hits to those documents that have the same name property. The second one lingua=lingua further restricts to the language from the loop variable. Note that lingua=lingua is equivalent to 'lingua'=lingua; the left lingua is the name of the asset variable of the "other" document, the right one is the lopp variable.

This website uses cookies and similar technologies to provide certain features, enhance the user experience and deliver content that is relevant to your interests. Depending on their purpose, analysis and marketing cookies may be used in addition to technically necessary cookies. By clicking on "Agree and continue", you declare your consent to the use of the aforementioned cookies. Here you can make detailed settings or revoke your consent (in part if necessary) with effect for the future. For further information, please refer to our Privacy Policy.