Some locale codes in eZ Publish are wrong according to definition, see below. We should fix them. Note backwards compatibility - should we only deprecate them and make the new ones as copies?
The current kernel does not allow us to code all locales correctly. This is what we currently support:
For example eng-GB.utf8@euro, which means english, as spoken in the UK, in the utf-8 charset, using the 'euro' countryvariation (presumably using the euro instead of GBP). Countryvariation is only used for locales. It can not be used when fetching translations. See eZLocale::localeInformation() and eZLocale->TranslationCode.
For serbian, there are two translations, using the same language and country (srp-RS), but different alphabets (latin and serbian cyrillic). Charset is irrelevant here. Thus, we cannot support serbian using our current locale codes.
1) Change the kernel code to support countryvariations in translation names (i.e. srp-RS and srp-RS@latin). Then we can keep the existing locale code rules.
2) Change the locale code rules to allow variations in the language (i.e. srp-RS and srplatin-RS). Then we can keep the existing kernel code.
3) Extend the locale code rules to include alphabets, i.e. language@alphabet-COUNTRY.charset@countryvariation or, to be backwards compatible: language-COUNTRY.charset@countryvariation@alphabet
I like 1), it seems clean although this is not the originally intended purpose of countryvariations. We can make it backwards compatible by making it fall back to swe-SE when swe-SE@euro is not found among the translations.
The following locale changes must be done to be consistent with the standards:
cro-HR -> hrv-HR
ell-GR -> gre-GR
nor-NO -> nob-NO (Norwegian BokmÃ¥l) 
ser-SR -> srp-RS@latin 
cyr-SR -> srp-RS (Cyrillic)
slk-SK -> slo-SK
esl-ES -> spa-ES (Spanish, Castilian)
Both SVN and ez.no must be updated. Furthermore, we must confirm that the locale variation syntax (srp-RS@latin) actually works with languages. So far it has AFAIK only been used for locales.
ISO 639-2 (languages)
Following the bibliographic (B) rather than the terminology (T) here, i.e. for chinese, "chi" rather than "zho".
ISO 3166-1-alpha-2 (countries)
There is no single standard norwegian, so nor-NO should not be used.
 Cyrillic is the official script: