# iso-codes https://salsa.debian.org/iso-codes-team/iso-codes This project provides lists of various ISO standards (e.g. country, language, language scripts, and currency names) in one place, rather than repeated in many programs throughout the system. Currently there are lists of languages and countries embedded in several different programs, which leads to dozens of lists of 200 languages, translated into more than 90 languages ... not very efficient. With this project, we create a single "gettext domain" for every supported ISO standard which contains the translations of that domain. It is easy for a programmer to re-use those translations instead of maintaining their own translation infrastructure. Moreover, the programmer does not need to follow changes in the ISO standard and will not work with outdated information. To use this translation infrastructure, the programmer just needs to call `dgettext()` in their program. Example: ``` dgettext("iso_639-2", "French") ``` will return the translation for "French", depending on the current locale. Furthermore, this project provides the ISO standards as JSON files to be used by other applications as well. All those JSON files are stored in the directory "/usr/share/iso-codes/json". # Status of translations Below you can see the current translation status, with the two most important gettext domains listed first (countries and languages). * ISO 3166-1 (countries): [![Translation status](https://hosted.weblate.org/widgets/iso-codes/-/iso-3166-1/287x66-white.png)](https://hosted.weblate.org/engage/iso-codes/?utm_source=widget) * ISO 639-2 (languages): [![Translation status](https://hosted.weblate.org/widgets/iso-codes/-/iso-639-2/287x66-white.png)](https://hosted.weblate.org/engage/iso-codes/?utm_source=widget) The other gettext domains are also useful, but probably not as important as the first two. * ISO 4217 (currencies): [![Translation status](https://hosted.weblate.org/widgets/iso-codes/-/iso-4217/287x66-white.png)](https://hosted.weblate.org/engage/iso-codes/?utm_source=widget) * ISO 3166-2 (countries and subdivisions): [![Translation status](https://hosted.weblate.org/widgets/iso-codes/-/iso-3166-2/287x66-white.png)](https://hosted.weblate.org/engage/iso-codes/?utm_source=widget) * ISO 3166-3 (formerly used country codes): [![Translation status](https://hosted.weblate.org/widgets/iso-codes/-/iso-3166-3/287x66-white.png)](https://hosted.weblate.org/engage/iso-codes/?utm_source=widget) * ISO 639-3 (languages): [![Translation status](https://hosted.weblate.org/widgets/iso-codes/-/iso-639-3/287x66-white.png)](https://hosted.weblate.org/engage/iso-codes/?utm_source=widget) * ISO 639-5 (language families and groups): [![Translation status](https://hosted.weblate.org/widgets/iso-codes/-/iso-639-5/287x66-white.png)](https://hosted.weblate.org/engage/iso-codes/?utm_source=widget) * ISO 15924 (script names): [![Translation status](https://hosted.weblate.org/widgets/iso-codes/-/iso-15924/287x66-white.png)](https://hosted.weblate.org/engage/iso-codes/?utm_source=widget) # NEWS * A new ISO standard has been included, ISO 3166-3. The gettext domain is called `iso_3166-3`. Basically, this is a split of the old domain `iso_3166` into `iso_3166-1` and `iso_3166-3`, because the old domain `iso_3166` contained both standards. However, the standard ISO 3166-3 was more or less inaccessible. * The standard ISO 4217 (currency names) now includes only the currently used currencies. Entries of withdrawn currencies are no longer included. * The standard ISO 639-5 now includes only the language families which are part of the official standard. The previously included languages were not part of the standard and have been removed. This reduced the number of language families from about 1900 to about 110. * The XML files are **deprecated** and should not be used for new projects. However, they are kept in sync with the JSON data for now. * The gettext domains have been renamed to better match the actual ISO number: - ISO 639-2: Renamed from `iso_639` to `iso_639-2` - ISO 639-3: Renamed from `iso_639_3` to `iso_639-3` - ISO 639-5: Renamed from `iso_639_5` to `iso_639-5` - ISO 3166-1: Renamed from `iso_3166` to `iso_3166-1` - ISO 3166-2: Renamed from `iso_3166_2` to `iso_3166-2` All previously used gettext domains are linked to the new domain names, so that this transition should be smooth for programs using those domain names. ## ISO 639-2 This lists the 2-letter and 3-letter language codes and language names. The official ISO 639-2 maintenance agency is the Library of Congress. The gettext domain is "iso_639-2". ## ISO 639-3 This is a further development of ISO 639-2, see above. All codes of ISO 639-2 are included in ISO 639-3. ISO 639-3 attempts to provide as complete an enumeration of languages as possible, including living, extinct, ancient, and constructed languages, whether major or minor, written or unwritten. The gettext domain is "iso_639-3". The official ISO 639-3 maintenance agency is SIL International. ## ISO 639-5 This standard is highly incomplete list of alpha-3 codes for language families and groups. The official ISO 639-5 maintenance agency is the Library of Congress. The gettext domain is "iso_639-5". ## ISO 3166-1 This lists the 2-letter country code and "short" country name. The official ISO 3166-1 maintenance agency is ISO. The gettext domain is "iso_3166-1". ## ISO 3166-2 The ISO 3166 standard includes a "Country Subdivision Code", giving a code for the names of the principal administrative subdivisions of the countries coded in ISO 3166. The official ISO 3166-2 maintenance agency is ISO. The gettext domain is "iso_3166-2". ## ISO 3166-3 The ISO 3166-3 standard defines codes for country names which have been removed from ISO 3166-1. The official ISO 3166-3 maintenance agency is ISO. The gettext domain is "iso_3166-3". ## ISO 4217 This lists the currency codes and names. The official ISO 4217 maintenance agency is the Swiss Association for Standardization. The gettext domain is "iso_4217". ## ISO 15924 This lists the language scripts names. The official ISO 15924 maintenance agency is the Unicode Consortium. The gettext domain is "iso_15924". # Tracking updates to the various ISO standards Below is a list of websites we use to check for updates to the standards. ISO 639-2: ISO 639-3: ISO 639-5: ISO 3166-1, ISO 3166-2, and ISO 3166-3: ISO 4217: ISO-15924: # Adding or updating translations The iso-codes project uses the Weblate translation service as the primary way of managing translations. You can find more information about this on the website: You can also send your translation as a bug report against the package iso-codes to the Debian Bug Tracking System. You can either send an email or use the tool reportbug. More details are on this website: # Reporting a bug If you find a bug in iso-codes, there are several ways to contact us. * Salsa issues This system can be accessed via webbrowser. * Debian Bug Tracking System This system can be accessed via e-mail. # Developing using pkgconfig A pkgconfig file has been included to aid developing with this project. You can detect the prefix where the translations have been placed using ``` $ pkg-config --variable=prefix iso-codes /usr ``` You can detect which gettext domains have been installed using ``` $ pkg-config --variable=domains iso-codes iso_639-2 iso_639-3 iso_639-5 iso_3166-1 iso_3166-2 iso_3166-3 iso_4217 iso_15924 ```