Monday, April 02, 2007

Language preferences in domain model design

Every time I start on a new project I face the same dilemma: What language my domain model will be written in.
Generally I prefer English because it fits nicely into most programming languages, and foreigners will be able to understand it. I have done a lot of government law based applications, and sometimes English adds quite some complexity to the model. When there is no exact translation of the terms, you end up with a lot of nonsense of approximated terms or made-up words in the model and you need a great deal of commenting for anybody to understand it. Its not a domain model your domain experts understand.

Working with multiple languages is a pain, and I don't recommend it. I have seen lots of projects where the domain model was a mix , and it just adds complexity to the project.

I would very much like to hear your thoughts on this.. How do you handle developing for non English domains. At the moment I feel like going all the way and develop the domain model all in non English if needed.
On top of that I want to try out using letters like æøå in the domain model. The problem with this is that although the programming language supports it I can't count on all systems supporting it:(


  1. I've always choosen english as our development and documentation language. Yes - Sometimes I stop and have to search for the words I want to use, but in the end, this is the way for me to guarantee that everyone on the project team understands what's going on. So go ahead and write those extra comment lines, and make sure people of different nationalities can work together on our projects. And make it in one single language!

    Nikolaj's two cents...

  2. It's all about taxonomy. I do everything in english and yes, sometimes I have to make up some words in order to translate danish stuff. The important thing here is not that the word is a bit weird as long as everyone knows what it means! 1) So find an acceptable word, 2) Stick to it (just use that one word, don't have a handfuld), 3) explain the word (in comments or documentation - I actually have the danish word in my code comments)

  3. After having tried it I must conclude that it doesn't work out. It works nicely if you stay within one technology, but not if you have to connect to a database or such.

    I'm therefore back to English domain models, but I would still like a translation of my domain model so I can discuss it with my users. Maybe I should start an UML editor project that supports ressource files, containing different languages.