[Marble-devel] Proposal to improve support for ISO 3166 Country Codes in KLocale

John Layt johnlayt at googlemail.com
Thu Feb 4 23:36:16 CET 2010


[cc: to Marble, Edu, and i18n lists for comment, please try reply to k-c-d to 
keep thread in one place]

I would like to propose improving our support for the ISO 3166 Country Code 
standard (http://en.wikipedia.org/wiki/ISO_3166) in two areas.

Firstly, some apps need to translate between the alpha 2, alpha 3 and numeric 
forms of the code, e.g. the EXIF standard uses alpha 3 codes, but KDE uses 
alpha 2 for example when fetching the translated country name to display.

Secondly, some libraries and apps would like to use the subdivision codes as 
provided by ISO 3166-2 (http://en.wikipedia.org/wiki/ISO_3166-2), e.g. 
KHolidays wants to know a users state or province to know which regional 
holidays to display.  Other users could be Marble, KGeography, etc.

While it would be easy to add the alpha 3 code to each locale's .desktop file, 
this would be inefficient on a one-off look-up (reading 100 files each time on 
average), so I was initially thinking a static table loaded from a file would 
work better.

The subdivisions, however, with some 4200 codes currently defined, could 
quickly become a support and translation nightmare.

Fortunately, there exists the iso-codes project (http://pkg-
isocodes.alioth.debian.org/) which provides the ISO 639 Language Codes, ISO 
3166 Country Codes, ISO 4217 Currency Codes, and ISO 15924 Script Codes in XML 
files, along with translations into some 38 languages.

I propose that we depend on iso-codes, use the 3166 xml file as the source for 
a code conversion method, and use the 3166-2 xml file as a source for the 
subdivision codes.  The package appears in every major distro I've looked at.

My big question is over translations.  The XML file contains subdivision names 
in their local version, so even en_US would require translating.  I assume we 
would be able to use the provided translations, or would we have to do our 
own?  In either event, not all KDE supported languages are included in iso-
codes, would we be able to mix their translations and our own?  Or would we 
prefer to do our own for all languages?

Obviously it's not fair to demand all 4200 subdivisions be translated into 
every language.  I would propose instead we would only require they are 
available in English and their country's language(s).  It would then be at 
each translation team's discretion as to which other codes they translate, 
i.e. I'd expect neighbouring countries and US States to be a popular target, 
but New Zealand regions not so much.

Besides KLocale providing access methods, System Settings would allow 
selection of the users default subdivision.  We could also in theory provide 
locale files for any country subdivision with localisation standards that 
differ from the rest of the country.

Thoughts?  Any possible problems?  Has anyone looked at using these files in 
the past?  Any suggestions on alternative sources for the codes or 
translations (GeoNames?), or other uses in KDE?  Any demand out there for 
support of the US standard FIPS codes as well?

Cheers!

John.

P.S. Wish I'd known about this when doing currency codes, although it doesn't 
have all the details we support the translations would have been handy :-)


More information about the Marble-devel mailing list