I really think that the example you wrote above is wrong! First of all, letme explain a bit 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>
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 only contain ONE lang tag, it's returned, so results are:
For Block A: von links
For Block B: <span="en"><font size="3"> </font></span>from the left
Then obviously, in one web page, those results are showed as:von linksfrom the left
(as you defined in your initial post)
The key concept here is the Block of lang
. Once you get it, everything is easily to understand.
Also note that the HTMLEditor seems to introduce an excess of "noisy" tags under some circumstances and, if it does so between lang tags, it will be, in fact, breaking your blocks of langs! It's always recommended to check the final HTML generated by the HTML Editor in order to verify that the lang tags (and their grouping
together is conforming blocks of langs) are properly written.
Hope this helps...ciao