Since most programming languages are based on English, you end up mixing English and Swedish for example, if you are working with a Swedish domain. Of course, the benefits of working with these concepts in Swedish are very hard to argue against. But the dichotomy between the programming language and the domain language is definitely something that hurts my eyes, so I’m generally not very fond of that approach.
I face the same problem with Portuguese, but luckily most of the times, I just translate the concepts to English and keep my program clear of Portuguese words (that wouldn’t work in some languages because we need more than the ascii characters).
One of the things I’ve proposed to make this situation better is to create an external DSL that is fully in the domain language. The implementation of that DSL can then be implemented in English. The main benefit is that there is a clear separation.between the domain language and the programming language. On the other hand, the overhead of creating the DSL and also the complexities involved in translating the domain concepts into programming language concepts can become problematic too.
Well, if you have a strong need for the domain language, you would need a DSL even if it was in English. So the overhead would be minimum in most cases.
I’m also not sure if this is actually a really good idea or not. It might be. The other thing I’ve been thinking about is how to handle multilingual editing. What if you want to be able to switch back and forth between languages? How can you handle identifiers with more than one name. Would you want to?
Read the full article and my comment on his blog for my opinion about this.