What follows is something of a dumping ground for thoughts. It'll probably be incomplete, and if you don't understand it, don't worry.
We're looking at completely redoing the way the multilingualism is done in
Mooix. Specifically, instead of having xml files that each contain all
languages, we're going to have separate files for translations into each
language. So that instead of having one name, you'd have name.en, name.jbo,
name.es, or whatever else.
One advantage is that it would be faster than splitting the xml. Another
advantage comes from the fact that language packs could be made much more
easily (so you could download an entire language and add it to your MOO,
without it breaking anything that currently exists). It also makes it much
clearer which fields are subject to translation (so you won't be like me,
with an editor of "<lang code='en'>vim</lang><lang code='jbo'>vim</lang>".
So far the chief difficulty seems to be with inheritance.
In the following, we have two users, John (who language is Lojban, "jbo"),
and Ed (whose language is English, "en"). Ed creates a Meep, and gives it a
description in English. Finally, John derives his own mipri from Ed's Meep,,
but doesn't change anything in it. So we've got:
/usr/lib/mooix/contrib/animal/description.en: An animal. /var/lib/mooix/contrib/animal/description.jbo: .i danlu /var/lib/mooix/users/ed/portfolio/Meep1/description.en: A meep!
It seems desirable that both John and Ed see the Meep described as "A meep!"
(even though for John that's not his own language), instead of John seeing
".i danlu" (which just means "[It's an] animal").
In addition, we want John to be able to create a descendant of Ed's meep, with properly translated messages, like:
/var/lib/mooix/users/ed/portfolio/Meep2/description.jbo: .i me la mip
Here's a picture of this case:
What inheritance strategy provides this? We want John looking at the first Meep to see English (the wrong language for him) and we want Ed looking at the second Meep to see English (the correct language for him).
More interestingly, what inheritance strategy handles that and the following case?
/usr/.../room/description.en: A room. /var/.../room/description.jbo: .i kumfa /var/lib/mooix/users/ed/portfolio/My_Room contains no description* files at all.
We want both John and Ed looking at My Room to see their own languages (jbo and en, resp.).
In this case, the bottom-most definition in the user's language prevails.
Both John and Ed looking at Meep2 or My Room see the correct messages in their own language.
John looking at Meep 1 sees the generic ".i danlu".