Difference between revisions of "Multi-language content filter"

Jump to: navigation, search

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

m (Translations with tags)
m (re-wording, category)
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.
 
 
== 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.
 
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 ==
+
== 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:
 
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:
  
Line 30: Line 27:
 
== How it works internally ==
 
== How it works internally ==
  
# filter first looks for ''multilang blocks'' in the text
+
# Filter first looks for ''multilang blocks'' in the text
# for each multilang block:
+
# For each multilang block:
## if there are texts in the currently active language, print them
+
#* If there are texts in the currently active language, print them
## else, if there exists texts in the current parent language, print them
+
#* Else, if there exists texts in the current parent language, print them
## else, print the first language found in the text
+
#* Else, print the first language found in the text
# text outside of multilang blocks will be showed always
+
# Text outside of multilang blocks will be shown always
  
 
==Course summary and title tags==
 
==Course summary and title tags==
To be able to change even resource titles and summaries, you must chose ''Filter all strings'' in the adminstration choices.
+
 
 +
To be able to change text such as resource titles and summaries, an administrator must choose ''Filter all strings'' in the site administration.
 +
 
 
  <nowiki> <span lang="en" class="multilang">Matematically</span> <span lang="sv" class="multilang">Matematiskt (svenska)</span></nowiki>
 
  <nowiki> <span lang="en" class="multilang">Matematically</span> <span lang="sv" class="multilang">Matematiskt (svenska)</span></nowiki>
would function as English or Swedish title.
+
functions as English or Swedish title.
  
 
It doesn't seem to work for course titles (neither long nor short version).
 
It doesn't seem to work for course titles (neither long nor short version).
Line 57: Line 56:
  
 
== Translations with tags ==  
 
== Translations with tags ==  
If I were to want to translate a word or phrase to a chosen language in an English text:
+
If you wish to translate a word or phrase in an English text to another language:
  
 
  <nowiki>If I want to include an explanation <span lang="en"> </span>
 
  <nowiki>If I want to include an explanation <span lang="en"> </span>
Line 78: Line 77:
 
{{Moodle 1.8}}
 
{{Moodle 1.8}}
 
* <nowiki><span lang="xx"> and <lang></nowiki> should not be used anymore
 
* <nowiki><span lang="xx"> and <lang></nowiki> should not be used anymore
* existing content can be upgraded using admin/multilangupgrade.php script, there is a link on admin notification page if the upgrade is needed
+
* Existing content can be upgraded using the admin/multilangupgrade.php script, there is a link in the admin notification page if a multilang upgrade is required.
* multilang filter can be configured to use old syntax only - see ''Multi-Language Content Settings''; this setting may be removed in 1.9
+
* The multilang filter can be configured to use old syntax only - see ''Multi-Language Content Settings''; this setting may be removed in 1.9
* new syntax is forced during new installation in 1.8, for upgraded sites the new syntax is enabled after the Multilang upgrade
+
* New syntax is forced during a new 1.8 installation, for upgraded sites the new syntax is enabled after the multilang upgrade
  
 
== Common problems ==
 
== Common problems ==
* Multilang filter is not enabled - go to filter settings and enable it
+
 
 +
* The multilang filter is not enabled - go to filter settings and enable it
 
* ''Filter all strings'' not enabled on sites that need multilang in titles, navigation, headings, etc.
 
* ''Filter all strings'' not enabled on sites that need multilang in titles, navigation, headings, etc.
* extra characters between language span tags - editor might add <nowiki><br /></nowiki> or other tags, please review the html in source view
+
* Extra characters between language span tags - editor might add <nowiki><br /></nowiki> or other tags, please review the html in source view
* extra spaces in language span tag
+
* Extra spaces in language span tag
  
== See Also ==
+
== See also ==
[[Filters_%28administrator%29]]
 
  
Forum discussion  http://moodle.org/mod/forum/discuss.php?d=51603
+
*[[Filters (administrator)]]
 +
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=51603 Multilanguage filter - does not work ...] forum discussion
  
  
 
[[Category:Administrator]]
 
[[Category:Administrator]]
 +
[[Category:Teacher]]
 
[[Category:Filter]]
 
[[Category:Filter]]
  
 
[[es:Filtros (Administrador)]]
 
[[es:Filtros (Administrador)]]
 
[[fr:Contenu multilingue]]
 
[[fr:Contenu multilingue]]

Revision as of 18:57, 21 February 2007

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.

The multilang syntax was changed in 1.8. <lang> is not supported any more. It is required to add class="multilang" into each <span> 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

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. Please note that class="multilang" is not required prior to 1.8.

Following code

      <lang="XX">your_content_here</lang>
      <lang="YY">your_content_in_other_language_here</lang>

does NOT work.

The obsoleted HTML tagging

      <lang lang="XX">your_content_here</lang>
      <lang lang="YY">your_content_in_other_language_here</lang>

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

will not work in 1.8 and later. In 1.8 the lang attribute without class="multilang" can be used to mark the language of the text - see http://www.w3.org/TR/html4/struct/dirlang.html

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

Course summary and title tags

To be able to change text such as resource titles and summaries, an administrator must choose Filter all strings in the site administration.

 <span lang="en" class="multilang">Matematically</span> <span lang="sv" class="multilang">Matematiskt (svenska)</span>

functions as English or Swedish title.

It doesn't seem to work for course titles (neither long nor short version).

In the course summary:

<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> 

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.

Translations with tags

If you wish to translate a word or phrase in an English text to another language:

If I want to include an explanation <span lang="en"> </span>
 <span lang="sv" class="multilang">(sv: förklaring)</span> in a running text can I do it?
<br />
<br /><span lang="en" class="multilang>If I want to include an explanation in a running text
 can I do it? </span>
<span lang="sv" class="multilang>If I want to include an explanation (sv: förklaring) in a 
running text can I do it?</span>

would both work, but not:

If I want to include an explanation <span lang="en" class="multilang></span>
 <span lang="sv" class="multilang>(sv: förklaring)</span> in a running text can I do it?
<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 />

which would show the Swedish even if English was the chosen language. NOTE that before 1.8 the "span lang=en" must contain something, at least a space.

New multilang syntax

Template:Moodle 1.8

  • <span lang="xx"> and <lang> should not be used anymore
  • Existing content can be upgraded using the admin/multilangupgrade.php script, there is a link in the admin notification page if a multilang upgrade is required.
  • The multilang filter can be configured to use old syntax only - see Multi-Language Content Settings; this setting may be removed in 1.9
  • New syntax is forced during a new 1.8 installation, for upgraded sites the new syntax is enabled after the multilang upgrade

Common problems

  • The multilang filter is not enabled - go to filter settings and enable it
  • Filter all strings not enabled on sites that need multilang in titles, navigation, headings, etc.
  • Extra characters between language span tags - editor might add <br /> or other tags, please review the html in source view
  • Extra spaces in language span tag

See also