Off hand I can think of a few reasons for using the mapping object as they did in angular-translate:
- It may make sense to translate the same English sentence to something slightly different in different contexts in German.
- JSLint/JSHint should be able to check for usages on an identifier like TITLE, PARAGRAPH_ABOUT_FOO, etc. easier than comparing strings (you'd have to build something custom for that).
- Brevity. If you have the same long string of text written twice it may be useful to have a shorter identifier for it.
I agree with not translating language names though, in the real world that doesn't really make sense.
> JSLint/JSHint should be able to check for usages on an identifier like TITLE, PARAGRAPH_ABOUT_FOO, etc. easier than comparing strings (you'd have to build something custom for that)
That's not difficult if you absolutely need it
> Brevity. If you have the same long string of text written twice it may be useful to have a shorter identifier for it
You don't need them twice. Add attribute telling: this text can be translated. That's all.
In the "real world", you'll eventually run into cases where you have to translate recurring words/phrases/sentences differently due to context or language peculiarities.
angular-translate is really a pleasure to use. I used it in two separate smallish apps and wouldn't hesitate to do it again. Very compact, easy API and great docs.
translate("This is a paragraph.")
PS and in the real world, please don't translate language names with each language change