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!