They say that every contribution to open source software starts with a developer scratching his or her own itch, and this is probably true. (It certainly is for me!) The problem is that as a project grows in popularity and users, you have to start paying attention to other people’s itches. A common type of itch-scratching, which is important both because it can make your program more accessible to new users and because it draws in new contributors, is translation.
Lots of lovely people spend time translating various programs to their native languages, but often they don’t have the programming knowledge that’s needed to make changes to the actual program. Which means that whenever you as a programmer add a some text to the program that is untranslatable because you forgot to call the translations or concatenate it in some way that hinders translation lookups, you are hindering them from scratching their itch and new users from getting a completely satisfactory experience.
Personally I’m horrible about this, probably because I think in English and always have my systems set to English. It’s a time-honoured tradition that whenever I add any new feature to a program, be it Pinta or Tomboy, I forget that someone has to be able to translate this. This leads to extra work for testers and translators because they have to find my mistakes, and then again for me because I have to fix them. The other thing one might do is to not realize that a particular piece of text can mean different things depending on where it is. An example from Pinta is “Open Images”, which in one context is a command to open several files at once, but in another context is a description of a list of already opened files. For some languages there is a distinct difference in words depending on the context, which again means more work to either clarify the context in translation notes or find different wording.
So if you want to be a tidy and efficient programmer, there’s one more thing you have to check before you commit: Go over what you’ve written and ask yourself “Is this technically translatable?” and then “Can this text have multiple meanings depending on context?”. Think of the translators!