Mhhhh.... All this both gives some bread for thoughts and rings some allarm bells. For years the main software to create text-adventures would implement Italian language on top of a hardcoded English layer (basically, the parser was just translating italian input into English commands). That gave rise to lots of problems, many of which broke gameplay. Either some words had both a meaning in italian and (a different one) in english, resulting in conflicts, or either changes to italian commands specific to certains rooms or puzzles could be circumvented by using english commands instead. It was a bit of a nightmare, and ultimately is what killed any residual passion I had into creating text-adventures--I could write them in English, but i don't like it very much, I'd preferr Italian, but then most of my energy had to be wasted into tricking the system to play-along "as if Italian".
Here is not the case, but having had such an experience of language conflicts I'd rather go for a ultra-clean code from start. Also, Italian has a very different structure from English and requires many case adaptation (gender, number, ecc.) which in English just don't exist (this is a general problem also when localizing software in general, English is quite a simple language, and often the i18n string simply can't be translated in other languages and cover all the same contexts in which they occur).
From the "Adding Comand Tutorial" I read:
If you want to overload existing default commands (such as look or get), just add your new command with the same key as the old one - it will overload the default one. Just remember that you must use @reload to see any changes.
yet it isn't that simple apparently.
I've traced the "from evennia import default_cmds" and it seems to do quite a few acrobatics though. At the end I seem to understand that if I want to override the whole set I would have to move quite a few files and also define my own DefaultCmds class. Not sure about that, but what I see is that default_cmds is in fact initializing this class:
class DefaultCmds(_EvContainer)
which in turn imports all the various Evennia cmds and cmdsets.
Is there a reason why these files have not been also copied into game folder so that they might be modified? I thought that when drawing the separation line between Evennia the library (which might change and be updated) and the user mud code, all that regarded play commands (system/admin aside) would have been something completely in the hands of the game developer (which, localization aside, might be implementing non-Mux commands, ecc.
I'm sure that as Evennia evolves, and more example codes, tutorials and documentation will be available, all this might seem trivial easy.
At present I feel it's a bit confusing. Partly because I've reading almost all the documentation right in the time of the big change of splitting evennia and game (so most of my notes are obsolete right now, and I often get confused about what I read before and what after).
On the other hand, I had gathered from the tutorial that "self.add(CmdLook())" was going to overload / replace the existing CmdLook. Surely, CmdLook() is not replaced if both the english and italian version coexist. Also when I type "help guarda" I get the English docstring, and not the Italian one. So it's not clear to me by which criteria it invokes either of them.
Instead of directing the aliases to a dummy, couldn't I just get rid of them during at_creation? Would that get rid off completely of any reference to English look?
Sorry if I bother you so much, but I am happier admiting my stupidity than giving up on coding-with-understanding or building anything with spurious staff carried around. What might seem a small problem at start might end up a huge pain once the Mud world builds in size. I preferr to have control over it since start. Better start slowly and solid, momentum gain always comes after a good start.
Tristano