Multi-Language Content (v2)

Filters ::: filter_multilang2
Maintained by Iñaki Arenaza, Iñigo Zendegi Urzelai, Kepa Urzelai
This filter is a greatly simplified multi-language filter. It uses very simple non-HTML tags to mark multi-language blocks. Namely {mlang XX} {mlang} pairs, where XX is the Moodle short name for the language pack (i.e., en, fr, eu, es, es_mx, etc.) It uses the same tags as the filter_multilangsecond plugin (to be compatible with it), but there is one difference between the two. This filter allows standalone {mlang} tags that don't require adjoining alternative language tags. This makes the filter more flexible at the cost of potentially producing empty sets of tags.
Latest release:
4094 sites
1k downloads
78 fans
Current versions available: 4

To Install it manually

  • Unzip the plugin in the moodle .../filter/ directory.

To Enable it

  • Go to "Site Administration >> Plugins >> Filters >> Manage filters" and enable the plugin there.

To Use it

  • Create your contents in multiple languages.
  • Enclose every language content between {mlang NN} and {mlang} tags:
    {mlang XX}content in language XX{mlang}
    {mlang YY}content in language YY{mlang}
    {mlang other}content for other languages{mlang}
  • where XX and YY are the Moodle short names for the language packs (i.e., en, fr, de, etc.) or the special language name 'other'.
  • Version 1.1.1 and later: a new enhanced syntax to be able to specify multiple languages for a single tag is now available. Just specify the list of the languages separated by commas:
  {mlang XX,YY,ZZ}Text displayed if current lang is XX, YY or ZZ, or one of their parent laguages.{mlang}
  • Test it (by changing your browsing language in Moodle).

How it works

  • Look for "lang blocks" in the text to be filtered.
  • For each "lang block":
    • If there are texts in the currently active language, print them.
    • Else, if there exist texts in the current parent language, print them.
    • Else, as fallback, print the text with language 'other' if such one is set.
  • Text outside of "lang blocks" will always be shown.

Definition of "lang block"

Is any text (including spaces, tabs, linefeeds or return characters) placed between '{mlang XX}' and '{mlang}' markers. You can not only put text inside "lang block", but also images, videos or external embedded content. For example, this is a valid "lang block":

{mlang es,es_mx,es_co}
First paragraph of text. First paragraph of text. First paragraph of text.

Second paragraph of text. Second paragraph of text. Second paragraph of text.

                   An image could go here

Third paragraph of text. Third paragraph of text. Third paragraph of text.

                   An embedded Youtube video could go here

Fourth paragraph of text. Fourth paragraph of text. Fourth paragraph of text.
{mlang}

A couple of examples in action

Using text only

This text:

  {mlang other}Hello!{mlang}{mlang es,es_mx}¡Hola!{mlang}
  This text is common for all languages because it's outside of all lang blocks.
  {mlang other}Bye!{mlang}{mlang it}Ciao!{mlang}
  • If the current language is any language except "Spanish International", "Spanish - Mexico" or Italian, it will print:
  Hello!
  This text is common for all languages because it's outside of all lang blocks.
  Bye!
  • If the current language is "Spanish International" or "Spanish - Mexico", it will print:
  ¡Hola!
  This text is common for all languages because it's outside of all lang blocks.
  • Notice the final 'Bye!' / 'Ciao!' is not printed.
  • If the current language is Italian, it will print:
  This text is common for all languages because it's outside of all lang blocks.
  Ciao!
  • Notice the leading 'Hello!' / '¡Hola!' and the final 'Bye!' are not printed.

Using text, images and external embedded content

We create a label with the content shown in the following image:

Multi-Language content in Spanish, English, an language-independent content

The "lang block" tags are highlighted using blue boxes. You can see that we have three pieces of content: the Spanish-only content (light yellow box), the language-independent content (light blue) and the English-only content (light red).

If the user browses the page with English as her configured language, she will see the common content (light blue box) and the English-only content (light red):

Multi-Language content when browsed in English

If the user browses the page with Spanish as her configured language, she will see the Spanish-only content (light yellow) plus the common content (light blue box):

Multi-Language content when browsed in Spanish

Screenshots

Screenshot #0
Screenshot #1
Screenshot #2

Contributors

Iñaki Arenaza (Lead maintainer)
Iñigo Zendegi Urzelai
Please login to view contributors details and/or to contact them

Comments RSS

Show comments
  • Dan Jeffries
    Fri, Jan 5, 2024, 7:44 PM
    Thanks. I've asked the Theme developer for some guidance too.
  • Iñaki Arenaza
    Fri, Jan 5, 2024, 10:32 PM
    Hi Dan,

    before opening an issue in the plugin tracker, check that the standard multi-language plugin from Moodle works. If the standard plugin doesn't work, then most probably the issue is on the theme side.

    Saludos.

    Iñaki.
  • Fabian Glagovsky
    Thu, Jan 25, 2024, 4:31 PM
    Hi, we are using this plugin in Moodle 4.1. Will it be compatible with 4.3? Any ETA? Best!
  • Iñaki Arenaza
    Thu, Jan 25, 2024, 5:42 PM
    The plugin is already compatible with 4.2 and 4.3. We simply haven't updated the compatibility data here in the plugins database. Sorry about that!
  • Iñaki Arenaza
    Thu, Jan 25, 2024, 5:44 PM
    I just updated the supported Moodle versions.
  • Fabian Glagovsky
    Sun, Jan 28, 2024, 11:08 PM
    Thank you!
  • Freelance Shree Ram
    Mon, Mar 4, 2024, 3:43 AM
    Here is the latest video link. How in case be used. Steps by steps guide from installation to using this
  • Craig Ferguson
    Tue, Apr 30, 2024, 2:05 AM
    Hi, Iñaki and team (and anyone else who might have insight into this),

    I love this plugin. We've been using it for a few years and really appreciate the work you put into it.

    We've been having an issue since the start where, once a learner reaches the end of a lesson, the automatically generated Lesson Completion page isn't being parsed by the mlang filter. So, when you reach the end of a lesson, you get a button that says, "Proceed to {mlang en}Chapter 2: Lesson{mlang} {mlang fr_ca}Chapitre 2: Leçon{mlang}" or "Aller à {mlang en}Chapter 2: Lesson{mlang} {mlang fr_ca}Chapitre 2: Leçon{mlang}" depending on your language.

    To get around this, we created fake end of lesson pages and have had to get creative with the completion settings. I'm wondering if there's a fix for this? Is there a way to make the multilang filter parse the "Proceed to" button text?

    Thanks!

    Craig
  • Iñigo Zendegi Urzelai
    Tue, Apr 30, 2024, 2:56 PM
    Hi Craig,

    I've been able to replicate that issue, but it's not an issue of this plugin but on core lesson module.

    It's easy to fix but it has to be done in the Moodle core, so I've created an issue on the tracker and proposed a patch: https://tracker.moodle.org/browse/MDL-81733
  • tom müller
    Thu, May 2, 2024, 2:09 AM
    Hi,
    I have the problem that words in the glossary do not stand under the correct first character. "Operating system" stands under Special and not under O. This word has keywords. Titles, which has (yz) stands under Special, too. Titles with "Ä", too, and 62-bit stand under 2 and not under 6. How can I fixed this?
  • Iñaki Arenaza
    Thu, May 2, 2024, 5:12 PM
    Hi Tom,

    could you provide us with an example to try and reproduce the issue? I'm not sure I'm understanding it right. If you could provide us a couple of the problematic multilang2 strings (their raw definition, before they are processed by the filter), how they are displayed once filtered (e.g, by providing a screenshot), and where they end up in the Glossary (again, with a screenshot), that could help us.

    Thanks in advance.
  • Iñigo Zendegi Urzelai
    Thu, May 2, 2024, 6:32 PM
    Hi Tom,

    I've been able to replicate your issue, it seems that the glossary's filter by the concept's first letter is using the concept's name before applying the filters and in consequence all of them appear under the "Special" filter because it detects the first character being "<" (core mlang syntax) or "{" (this plugin's mlang syntax), and that's incongruous with the way it shows the concept list (order after applying the filters)

    I'll try to find and propose a solution to this issue, but it has to be done in the Moodle core and not within this plugin.

  • tom müller
    Mon, May 13, 2024, 6:26 PM
    Hi,
    thanks for your answer, and sorry for my late answer.
    The entry Blended learning will show under "Special", too . I take a screenshot from this code.

    You find these under
    https://is.gd/fAdMtc
    https://is.gd/tNekgZ
    https://is.gd/gPL0MU

    Maybe you can add a new element for Keywords to select the language.
  • Ian Rogers
    Thu, May 30, 2024, 3:22 AM
    Does it support Moodle 4.4+ yet?
  • Iñigo Zendegi Urzelai
    Tue, Jun 4, 2024, 9:55 PM
    Hi Ian,

    As far as we've tested the plugin works fine on Moodle 4.4.
1 2 3 4 5 6 7 8 9
Please login to post comments