Any software that is used by more than a trivial number of people will at some point be used by people living in different countries, with different cultures. Different cultures have different conventions which might cover date format, decimal mark, currency, names, units of measurement, spelling and of course, language (that's natural language, not programming language).

The practice of building support for a variety of cultures into your software is called internationalisation, often referred to as I18N. This is the practice of writing software that is independent of any particular culture. There is a closely relation topic localisation (L10N). This can be thought of as taking an internationalised piece of software and localising it for one specific region.

You should be careful to separate your internationalisation from your business logic.

It is unlikely that you can cover every possible variation in this yourself. Luckily, there are several tools designed to deal with the problem of internationalisation. These will be covered in a future article so stay tuned!