Some things are displayed differently in some cultures/countries/parts of countries then in others.
Take for instance date/time and addresses. For the first it is obvious (although there is more to it then just am/pm or 24h display for time or long and short date formats).
Use the iso standard tables for countries for this one. Each and every country in the world has a predefined iso-key. For Belgium this is be, for the netherlands it is nl, france it is fr, united kingdom it is uk and usa is us.
For instance, you can have 3 languages in Belgium: french, german and dutch.
But there is a distinction between american english, uk english etc as well.
Hence, you need to separate as well in language. These 2 fields will comprise the actual primary key btw.
In fact, part of the browser settings that get sent over. Apache for one can make those values sent by the client's browser retrievable. That way you know some localisation.
IE can set what language setting you prefer before what other. Especially handy if you'd want some i18n. There is always a default language (mostly us_en or uk_en).
A language can use more than one script. As an example, there exist countries in which both latin and cyrillic scripts are used equivocally. Therefore, there should be a way to provide localized variants in both scripts, for the same country and same language.
- long date format for a country
- short date format for a country
- time format (am/pm, 24hrs, ...)
- day of week
- week of year
- UTC/GMT offset(s)
- currency diplayal format ( positive, negative, 0 )
- iso naming
- symbol (prefix/postfix)
- decimal separator, 1000 separator ( is it 1,000.15 EUR or 1.000,15 EUR )
We need to look at what constitutes an address as well, since there are countries where there needs to be a state/province (usa) where other countries have unique codes for every street and yet others have a zipcode/community pair.
The formatting for all of them is slightly different, but I can tell you that a belgian address formatted in a uk or usa way looks awfull and a letter probably will not get delivered if you send a snailmail to it.
That is why this is important.
There are lots of fields to apply it to. It will actually help us configure sitewide standards or personalised standards as well with more ease if this is centralised somewhere either in the database or in a 'cached' file.
Feel free to continue and add to this page as much as you can/want. Especially if I left some things out.