django-international is a combination of data, models, and forms, for handling country- and currency-related information in your Django project. The data used in this app comes from Wikipedia and XE.com, and will be updated from time to time when sources become updated.
Language name data is acquired from babel if babel is installed.
This is a tuple of tuples in the following format:
COUNTRIES_RAW = ( (CO, CC, CNT, NUM, FN), ... )
CO is the two-letter continent code. CC is the country code as per ISO 3166-1 standard. CNT is the 3-letter code as per ISO 3166-1 standard. NUM is the three-digit code as per ISO-3166-1 standard. FN is the full name of the country as a translatable string (wrapped in django.util.translation.ugettext).
This tuple is processed at runtime to derive the choices-compatible tuple.
Please note that some country names were modified and that the choices tuple will omit anything that appears in brackets compared to the original list on Wikipedia.
This is a tuple of tuples compatible with choices argument passed to Django’s model/form fields. The values are 2-letter country codes, and display values are full country names without the parts that appear in brackets.
This tuple is also used as choices argument in the country form if use_static argument is passed to the constructor, or COUNTRY_FORM_USE_STATIC configuration setting is set to True.
This is atuple of tuples compatible with choices argument passed to Django’s model/form fields. The values are ISO 4217 3-letter currency codes, and display values are the same codes with full currency names. For example:
('USD', 'USD - United States Dollar')
This tuple is used as choices argument for the ChoicesField in the currency form.
This list provides a list of choices-compatible tuples that pair locale identifiers (e.g., 'en_US') with both native and English language names of the language. For languages whose native names are in English, no translation is used. E.g.:
jp 日本語 (Japanese) en_US U.S. English
This list is empty if babel is not installed, but having babel installed is not a requirement if you do not need language lists.
Same as international.models.langauges but using only native version of the name as label. As with other language lists, this list is only populated if babel is installed.
Same as international.models.langauges but using only English version of the name as label. AS with other language lists, this is only populated if babel is installed.
The models module contains a Country model. It is a full model (not abstract) and it is meant to be linked to from your other modules via foreign keys.
This field contains 2-letter ISO code for your country as per ISO 3166-1 alpha 2 standard. The field is constrained by choices which allows a full set of countries found on Wikipedia. There is currently no way of restricting the choices with configuration settings.
The full names of countries are translatable strings, and can be displayed by using the standard Django API for display names:
>>> c = Country(code='AR', continent='SA') >>> c.get_code_display() u'Argentina'
This field contains two-letter codes for continents as per Wikipedia. These are restricted to:
The full names are translatable, and can be obtained using Django’s standard display name API:
>>> c = Country(code='AR', continent='SA') >>> c.get_continent_display() u'South America'
The constructor is invoked usual form arguments and some additional arguments:
CountryForm(*arg, use_static=False, include_empty=False, empty_value='', empty_label='All countries', **kwarg)
This is a simple form with a single ChoiceField field called country. It is marked as optional, has a translatable label that reads ‘country’, and has empty string as initial value.
Some aspects of this form can be controlled using configuration settings or constructor arguments. Any arguments that a standard Django form accepts are also acceptable (e.g., initial or data). Note that constructor arguments always take precedence over settings.
Following sections describe available configuration settings and matching constructor arguments.
Just like CountryForm (q.v., international.forms.CountryForm), CurrencyForm can be invoked with additional arguments:
CurrencyForm(*arg, include_empty=False, empty_value='', empty_label='All currencies', **kwarg)
Simple form with a simple ChoiceField field called currency. It uses the CURRENCIES tuple as choices argument.
This form has similar configuration parameters as the CountryForm form.
This is an experimental feature that combines both the CountryForm and CurrencyForm into a single form. This form is governed by both sets of settings and constructor arguments that apply to either of the simple forms.
This feature hsan’t been tested thoroughly (especially the constructor arguments), but it is known to work as expected with configuration settings.
The international/fixtures/ directory contains a set of fixtures that can be loaded using the loaddata management command. The fixtures are generated based on COUNTRIES_RAW tuple, and contains the data for the Country model. It is intentionally not the initial data fixture, since the purpose of the Country model is to create an editable list of countries, and not have them hard-coded. Initial data fixture would overwrite the data each time syncdb command is used, so it would effectively invalidate the very purpose of the model.
TODO: Figure out how to actually get changelog content.
Changelog content for this version goes here.