Note: You are currently viewing documentation for Moodle 2.8. Up-to-date documentation for the latest stable version of Moodle may be available here: Multi-language content filter.

Multi-language content filter: Difference between revisions

From MoodleDocs
(Added *[https://moodle.org/mod/forum/discuss.php?d=320980 this forum thread] about translating a MOOC)
 
(60 intermediate revisions by 12 users not shown)
Line 1: Line 1:
Moodle will allow different resources to appear to users based upon their language.  There  is a filter called Multi language content (see [[Filters_%28administrator%29]]) and it should be turned on.  This page goes into details of several ways of displaying resources to users based on language.
{{Filters}}
 
== Overview multi language ==
 
The Multi-language content filter enables resources to be created in multiple languages. When turned on, it looks for <nowiki><span lang="xx" class="multilang"></nowiki> tags which indicate that a text contains multiple languages. Then it selects and outputs the best language for the current user. The language of the resource will change when the user changes their selected Moodle language.
The Multi-language content filter enables resources to be created in multiple languages. When turned on, it looks for <nowiki><span lang="xx" class="multilang"></nowiki> tags which indicate that a text contains multiple languages. Then it selects and outputs the best language for the current user. The language of the resource will change when the user changes their selected Moodle language.


The multilang syntax was changed in 1.8. <nowiki><lang></nowiki> is not supported any more. It is required to add ''class="multilang"'' into each <nowiki><span></nowiki> tag in multilang block. The new syntax is backwards compatible with old plugins, which means it can be used in older Moodle version.
== How to use in a course ==


== How to use ==
To use this feature first create your contents in multiple languages (in the same resource). Then enclose each language block (aka multilang block) in the following tags:
To use this feature first create your contents in multiple languages (in the same resource). Then enclose each language block in the following tags:


       <nowiki><span lang="XX" class="multilang">your_content_here</span>
       <nowiki><span lang="XX" class="multilang">your_content_here</span>
       <span lang="YY" class="multilang">your_content_in_other_language_here</span>
       <span lang="YY" class="multilang">your_content_in_other_language_here</span></nowiki>
</nowiki>
 
It is essential to be in the "code" editing (press <nowiki>[<>]</nowiki> in the HTML editor), when you enter these tags for them to work. Please note that ''class="multilang"'' is not required prior to 1.8.
 
The obsoleted HTML tagging
      <nowiki><lang lang="XX" class="multilang">your_content_here</lang>
      <lang lang="YY" class="multilang">your_content_in_other_language_here</lang>
</nowiki>
will not work in 1.8 and later.
      <nowiki><lang="XX">your_content_here</lang>
    <lang="YY">your_content_in_other_language_here</lang>
</nowiki>
does NOT work.
 
==Course summary and title tags==
To be able to change even resource titles and summaries, you must chose "all strings" in the adminstration choices.
<nowiki> <span lang="en" class="multilang">Matematically</span> <span lang="sv" class="multilang">Matematiskt (svenska)</span></nowiki>
would function as English or Swedish title.
 
It doesn't seem to work for course titles (neither long nor short version).
 
In the course summary:
 
<nowiki><span lang="en" class="multilang">Growth is often a major concern in planning society.
How can one avoid superficial conclusions? <br>
(Exists in Swedish too. Finns på svenska också)</span>
<span lang="sv" class="multilang">Tillväxt är ofta använt i samhällsdebatten.
Hur kan man undvika ytliga slutsatser?
(Finns på engelska också. Exists in English too.)
<br /></span> </nowiki>
 
Can show in the chosen language (and point out that the other language is there). Please note that ''class="multilang"'' is not required prior to Moodle 1.8.
 
== Block tags ==
 
'''this part is incorrect - please consider removing it'''
 
That the filter works on multilanguage blocks is important, see forum: http://moodle.org/mod/forum/discuss.php?d=51603 :
From which this is copied (and ought to be shortened):
<nowiki>
... how the multilang filter works:
 
1) First of all it looks for multilang Blocks.
One Multilang block of text is defined as one group of <span lang="XX">
tags together, without anything between them.
 
2) After this detection of Blocks, for each of them, Moodle selects
the best language for the user displaying the info, showing its info
and discarding the rest of lang tags in the block.
 
So, applying this behaviour to the example you wrote above, we have:
 
1) Moodle looks for Blocks and it finds TWO blocks:


Block A: <span lang="de">von links</span>
It is essential to be in '''the code editing mode''' (press <nowiki>[<>]</nowiki> in the HTML editor), when you enter these tags for them to work. Only spaces, tabs and enters can be used between the individual languages in the multilang block.
Block B:<span lang="en"><span="en"><font size="3"> </font></span>from the left</span>


2) For each block, Moodle display the better language. As Both blocks
==How to use for assignment submission agreements==
only contain ONE lang tag, it's returned, so results are:
#Since Moodle 2.8.2 it's possible to have assignment submission statements in different languages.
#With the filter enabled, go to Site administration>Plugins>Activity modules>Assignment>Assignment settings.
#In the submission statement, add (for example)


For Block A: von links
      <nowiki><span lang="en" class="multilang">This assignment is my own work, except where I have acknowledged the use of the works of other people.</span>
For Block B: <span="en"><font size="3"> </font></span>from the left
<span lang="fr" class="multilang">Ce devoir est le fruit de mon travail personnel, sauf aux endroits où l'utilisation d'oeuvre d'autres auteurs est clairement indiquée.</span> </nowiki>


Then obviously, in one web page, those results are showed as:
== How it works internally ==


von links
# Filter first looks for ''multilang blocks'' in the text
from the left
# For each multilang block:
#* If there are texts in the currently active language, print them
#* Else, if there exists texts in the current parent language, print them
#* Else, print the first language found in the text
# Text outside of multilang blocks will be shown always


The key concept here is the Block of lang. Once you get it, everything is easily to understand.
== Common problems ==


Also note that the HTMLEditor seems to introduce an excess of "noisy" tags
* The multilang filter is not enabled. It can be enabled by a site administrator in ''Settings > Site administration > Plugins > Filters > Manage filters''.
under some circumstances and, if it does so between lang tags, it will be,
* Extra characters between language span tags - editor might add <nowiki><br /></nowiki> or other tags, please review the html in source view
in fact, breaking your blocks of langs! It's always recommended to check the
* If the course setting is "force" some language, you won't be able to change the displayed language.
final HTML generated by the HTML Editor in order to verify that the lang tags
* Extra spaces in language span tag
(and their grouping together is conforming blocks of langs) are properly
* Can not easily access language choice dropdown! Unfortunately you must go to the site homepage or your own profile to change the displayed language. It is possible to manually quickly change displayed lang by editing the URL in the browsers address bar. See Tips and tricks below!
written.</nowiki>
* The multilang filter does not work with the course short name! A course's short name is meant as a unique course identifier, so it does not use the multilang filter


== Translations with tags ==  
==Tips and tricks==  
If I were to want to translate a word or phrase to a chosen language in an English text:


<nowiki>If I want to include an explanation <span lang="en"> </span>
===Changing language displayed without going to front page===
  <span lang="sv" class="multilang">(sv: förklaring)</span> in a running text can I do it?
It is possible to change the displayed language by manually changing the link.  
<br />
*Here is the default language page at id=2306. This link is in English, the default language:
<br /><span lang="en" class="multilang>If I want to include an explanation in a running text
:http://moodle.org/mod/resource/view.php?id=2306
can I do it? </span>
*The link to change the page display to Spanish is
<span lang="sv" class="multilang>If I want to include an explanation (sv: förklaring) in a
:http://moodle.org/mod/resource/view.php?id=2306&lang=es ,
running text can I do it?</span></nowiki>
*When the default language is an other language, to change the page to an English version, the link would be:
:http://moodle.org/mod/resource/view.php?id=2306&lang=en


would both work, but not:
Thus, with a bit of editing, you can manually change the displayed language by adding "&lang=xx" to the URL in the location bar of the browser. Where xx is the abbreviation for the language you want.


<nowiki>If I want to include an explanation <span lang="en" class="multilang></span>
==The 'Restriction by language' additional plugin==
<span lang="sv" class="multilang>(sv: förklaring)</span> in a running text can I do it?
Language filters are great, but sometimes they can make your resources and activities very complex.
<br />If I want to include an explanation <span lang="sv" class="multilang>(sv: förklaring)</span>
in a running text can I do it?<br /></nowiki>
which would show the Swedish even if English was the chosen language. NOTE the "span lang=en" must contain something, at least a space.


{{Moodle 1.8}}
The 'Restriction by language' availability condition is an additional plugin for Moodle 2.7, available in the [https://moodle.org/plugins/view.php?plugin=availability_language Moodle plugins database], that makes it easy to show an English resource only to English users and an activity in French only to French speaking students.
== New multilang syntax ==


[[File:Restriction by language.png]]


== See Also ==
==See also==  
[[Filters_%28administrator%29]]


Forum discussion  http://moodle.org/mod/forum/discuss.php?d=51603
*[[Language]]
*Custom menu items in [[Theme settings]]
*[https://moodle.org/mod/forum/discuss.php?d=320980 this forum thread] about translating a MOOC




[[Category:Administrator]]
[[Category:Language]]
[[Category:Filter]]


[[es:Filtros (Administrador)]]
[[de:Mehrsprachiger Inhalt]]
[[fr:Filtres (administrateur)]]
[[es:Contenido multilingüe]]
[[fr:Contenu multilingue]]
[[ja:多言語シンタックス]]

Latest revision as of 13:38, 17 October 2015

The Multi-language content filter enables resources to be created in multiple languages. When turned on, it looks for <span lang="xx" class="multilang"> tags which indicate that a text contains multiple languages. Then it selects and outputs the best language for the current user. The language of the resource will change when the user changes their selected Moodle language.

How to use in a course

To use this feature first create your contents in multiple languages (in the same resource). Then enclose each language block (aka multilang block) in the following tags:

      <span lang="XX" class="multilang">your_content_here</span>
      <span lang="YY" class="multilang">your_content_in_other_language_here</span>

It is essential to be in the code editing mode (press [<>] in the HTML editor), when you enter these tags for them to work. Only spaces, tabs and enters can be used between the individual languages in the multilang block.

How to use for assignment submission agreements

  1. Since Moodle 2.8.2 it's possible to have assignment submission statements in different languages.
  2. With the filter enabled, go to Site administration>Plugins>Activity modules>Assignment>Assignment settings.
  3. In the submission statement, add (for example)
      <span lang="en" class="multilang">This assignment is my own work, except where I have acknowledged the use of the works of other people.</span>
<span lang="fr" class="multilang">Ce devoir est le fruit de mon travail personnel, sauf aux endroits où l'utilisation d'oeuvre d'autres auteurs est clairement indiquée.</span> 

How it works internally

  1. Filter first looks for multilang blocks in the text
  2. For each multilang block:
    • If there are texts in the currently active language, print them
    • Else, if there exists texts in the current parent language, print them
    • Else, print the first language found in the text
  3. Text outside of multilang blocks will be shown always

Common problems

  • The multilang filter is not enabled. It can be enabled by a site administrator in Settings > Site administration > Plugins > Filters > Manage filters.
  • Extra characters between language span tags - editor might add <br /> or other tags, please review the html in source view
  • If the course setting is "force" some language, you won't be able to change the displayed language.
  • Extra spaces in language span tag
  • Can not easily access language choice dropdown! Unfortunately you must go to the site homepage or your own profile to change the displayed language. It is possible to manually quickly change displayed lang by editing the URL in the browsers address bar. See Tips and tricks below!
  • The multilang filter does not work with the course short name! A course's short name is meant as a unique course identifier, so it does not use the multilang filter

Tips and tricks

Changing language displayed without going to front page

It is possible to change the displayed language by manually changing the link.

  • Here is the default language page at id=2306. This link is in English, the default language:
http://moodle.org/mod/resource/view.php?id=2306
  • The link to change the page display to Spanish is
http://moodle.org/mod/resource/view.php?id=2306&lang=es ,
  • When the default language is an other language, to change the page to an English version, the link would be:
http://moodle.org/mod/resource/view.php?id=2306&lang=en

Thus, with a bit of editing, you can manually change the displayed language by adding "&lang=xx" to the URL in the location bar of the browser. Where xx is the abbreviation for the language you want.

The 'Restriction by language' additional plugin

Language filters are great, but sometimes they can make your resources and activities very complex.

The 'Restriction by language' availability condition is an additional plugin for Moodle 2.7, available in the Moodle plugins database, that makes it easy to show an English resource only to English users and an activity in French only to French speaking students.

Restriction by language.png

See also