Commit d1d54641 by Bill DeRusha Committed by Clinton Blackburn

IETF language tags

parent 9970fe92
default_app_config = 'course_discovery.apps.ietf_language_tags.apps.IETFLanguageTagsConfig'
""" Admin configuration. """
from django.contrib import admin
from course_discovery.apps.ietf_language_tags.models import LanguageTag
@admin.register(LanguageTag)
class LanguageTagAdmin(admin.ModelAdmin):
list_display = ('code', 'name',)
ordering = ('code', 'name',)
search_fields = ('code', 'name',)
from django.apps import AppConfig
class IETFLanguageTagsConfig(AppConfig):
name = 'course_discovery.apps.ietf_language_tags'
verbose_name = 'IETF Language Tags'
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='LanguageTag',
fields=[
('code', models.CharField(primary_key=True, max_length=50, serialize=False)),
('name', models.CharField(max_length=255)),
],
),
]
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
# Set of language names, language tags. Source: http://ss64.com/locale.html
LANGTAGS = (
("Afrikaans", "af"),
("Albanian", "sq"),
("Arabic – Algeria", "ar-dz"),
("Arabic – Bahrain", "ar-bh"),
("Arabic – Egypt", "ar-eg"),
("Arabic – Iraq", "ar-iq"),
("Arabic – Jordan", "ar-jo"),
("Arabic – Kuwait", "ar-kw"),
("Arabic – Lebanon", "ar-lb"),
("Arabic – Libya", "ar-ly"),
("Arabic – Morocco", "ar-ma"),
("Arabic – Oman", "ar-om"),
("Arabic – Qatar", "ar-qa"),
("Arabic – Saudi Arabia", "ar-sa"),
("Arabic – Syria", "ar-sy"),
("Arabic – Tunisia", "ar-tn"),
("Arabic – United Arab Emirates", "ar-ae"),
("Arabic – Yemen", "ar-ye"),
("Armenian", "hy"),
("Azeri – Latin", "az-az"),
("Basque (Basque)", "eu"),
("Belarusian", "be"),
("Bulgarian", "bg"),
("Catalan", "ca"),
("Chinese – China", "zh-cn"),
("Chinese – Hong Kong SAR", "zh-hk"),
("Chinese – Macau SAR", "zh-mo"),
("Chinese – Singapore", "zh-sg"),
("Chinese – Taiwan", "zh-tw"),
("Croatian", "hr"),
("Czech", "cs"),
("Danish", "da"),
("Dutch – Belgium", "nl-be"),
("Dutch – Netherlands", "nl-nl"),
("English – Australia", "en-au"),
("English – Belize", "en-bz"),
("English – Canada", "en-ca"),
("English – Caribbean", "en-cb"),
("English – India", "en-in"),
("English – Ireland", "en-ie"),
("English – Jamaica", "en-jm"),
("English – Malaysia", "en-my"),
("English – New Zealand", "en-nz"),
("English – Phillippines", "en-ph"),
("English – Singapore", "en-sg"),
("English – Southern Africa", "en-za"),
("English – Trinidad", "en-tt"),
("English – Great Britain", "en-gb"),
("English – United States", "en-us"),
("English – Zimbabwe", "en-zw"),
("Estonian", "et"),
("Farsi", "fa"),
("Finnish", "fi"),
("Faroese", "fo"),
("French – France", "fr-fr"),
("French – Belgium", "fr-be"),
("French – Canada", "fr-ca"),
("French – Luxembourg", "fr-lu"),
("French – Switzerland", "fr-ch"),
("Irish – Ireland", "gd-ie"),
("Scottish Gaelic – United Kingdom", "gd"),
("German – Germany", "de-de"),
("German – Austria", "de-at"),
("German – Liechtenstein", "de-li"),
("German – Luxembourg", "de-lu"),
("German – Switzerland", "de-ch"),
("Greek", "el"),
("Hebrew", "he"),
("Hindi", "hi"),
("Hungarian", "hu"),
("Icelandic", "is"),
("Indonesian", "id"),
("Italian – Italy", "it-it"),
("Italian – Switzerland", "it-ch"),
("Japanese", "ja"),
("Korean", "ko"),
("Latvian", "lv"),
("Lithuanian", "lt"),
("F.Y.R.O. Macedonia", "mk"),
("Malay – Malaysia", "ms-my"),
("Malay – Brunei", "ms-bn"),
("Maltese", "mt"),
("Marathi", "mr"),
("Norwegian – Bokmål", "nb-no"),
("Norwegian – Nynorsk", "nn-no"),
("Polish", "pl"),
("Portuguese – Portugal", "pt-pt"),
("Portuguese – Brazil", "pt-br"),
("Raeto-Romance", "rm"),
("Romanian – Romania", "ro"),
("Romanian – Republic of Moldova", "ro-mo"),
("Russian", "ru"),
("Russian – Republic of Moldova", "ru-mo"),
("Sanskrit", "sa"),
("Serbian – Latin", "sr-sp"),
("Setsuana", "tn"),
("Slovenian", "sl"),
("Slovak", "sk"),
("Sorbian", "sb"),
("Spanish – Spain (Modern)", "es-es"),
("Spanish – Argentina", "es-ar"),
("Spanish – Bolivia", "es-bo"),
("Spanish – Chile", "es-cl"),
("Spanish – Colombia", "es-co"),
("Spanish – Costa Rica", "es-cr"),
("Spanish – Dominican Republic", "es-do"),
("Spanish – Ecuador", "es-ec"),
("Spanish – Guatemala", "es-gt"),
("Spanish – Honduras", "es-hn"),
("Spanish – Mexico", "es-mx"),
("Spanish – Nicaragua", "es-ni"),
("Spanish – Panama", "es-pa"),
("Spanish – Peru", "es-pe"),
("Spanish – Puerto Rico", "es-pr"),
("Spanish – Paraguay", "es-py"),
("Spanish – El Salvador", "es-sv"),
("Spanish – Uruguay", "es-uy"),
("Spanish – Venezuela", "es-ve"),
("Southern Sotho", "st"),
("Swahili", "sw"),
("Swedish – Sweden", "sv-se"),
("Swedish – Finland", "sv-fi"),
("Tamil", "ta"),
("Tatar", "tt"),
("Thai", "th"),
("Turkish", "tr"),
("Tsonga", "ts"),
("Ukrainian", "uk"),
("Urdu", "ur"),
("Uzbek – Latin", "uz-uz"),
("Vietnamese", "vi"),
("Xhosa", "xh"),
("Yiddish", "yi"),
("Zulu", "zu"),
)
def add_language_tags(apps, schema_editor):
LanguageTag = apps.get_model('ietf_language_tags', 'LanguageTag')
for name, code in LANGTAGS:
LanguageTag.objects.update_or_create(code=code, defaults={ 'name': name })
def drop_language_tags(apps, schema_editor):
LanguageTag = apps.get_model('ietf_language_tags', 'LanguageTag')
codes = [code for __, code in LANGTAGS]
LanguageTag.objects.filter(code__in=codes).delete()
class Migration(migrations.Migration):
dependencies = [
('ietf_language_tags', '0001_initial'),
]
operations = [
migrations.RunPython(add_language_tags, drop_language_tags)
]
""" IETF language tag models. """
from django.db import models
class LanguageTag(models.Model):
""" Table of language tags as defined by BCP 47. https://tools.ietf.org/html/bcp47 """
code = models.CharField(max_length=50, primary_key=True)
name = models.CharField(max_length=255)
def __str__(self):
return '{code} - {name}'.format(code=self.code, name=self.name)
""" Tests for models. """
from django.test import TestCase
from course_discovery.apps.ietf_language_tags.models import LanguageTag
class LanguageTagTests(TestCase):
""" Tests for the LanguageTag class. """
def test_str(self):
""" Verify casting a LanguageTag to a string returns a string containing the code and name of the model. """
code = 'te-st',
name = 'Test LanguageTag'
tag = LanguageTag(code=code, name=name)
self.assertEqual(str(tag), '{code} - {name}'.format(code=code, name=name))
......@@ -37,6 +37,7 @@ THIRD_PARTY_APPS = (
PROJECT_APPS = (
'course_discovery.apps.core',
'course_discovery.apps.ietf_language_tags',
'course_discovery.apps.api',
'course_discovery.apps.catalogs',
'course_discovery.apps.course_metadata',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment