Commit 48a43d1f authored by Seb's avatar Seb
Browse files

Rework track models, add to modeladmin instead formset

parent 9a65727f
# Generated by Django 2.2.17 on 2021-01-28 23:06
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('app', '0002_customtrack'),
]
operations = [
migrations.AlterField(
model_name='customtrack',
name='language',
field=models.CharField(blank=True, choices=[('aa', 'Afar'), ('aa-DJ', 'Afar - Djibouti'), ('aa-ER', 'Afar - Eritrea'), ('aa-ET', 'Afar - Ethiopia'), ('af', 'Afrikaans'), ('af-NA', 'Afrikaans - Namibia'), ('af-ZA', 'Afrikaans - South Africa'), ('agq', 'Aghem'), ('agq-CM', 'Aghem - Cameroon'), ('ak', 'Akan'), ('ak-GH', 'Akan - Ghana'), ('sq', 'Albanian'), ('sq-AL', 'Albanian - Albania'), ('sq-MK', 'Albanian - North Macedonia'), ('gsw', 'Alsatian'), ('gsw-FR', 'Alsatian - France'), ('gsw-LI', 'Alsatian - Liechtenstein'), ('gsw-CH', 'Alsatian - Switzerland'), ('am', 'Amharic'), ('am-ET', 'Amharic - Ethiopia'), ('ar', 'Arabic'), ('ar-DZ', 'Arabic - Algeria'), ('ar-BH', 'Arabic - Bahrain'), ('ar-TD', 'Arabic - Chad'), ('ar-KM', 'Arabic - Comoros'), ('ar-DJ', 'Arabic - Djibouti'), ('ar-EG', 'Arabic - Egypt'), ('ar-ER', 'Arabic - Eritrea'), ('ar-IQ', 'Arabic - Iraq'), ('ar-IL', 'Arabic - Israel'), ('ar-JO', 'Arabic - Jordan'), ('ar-KW', 'Arabic - Kuwait'), ('ar-LB', 'Arabic - Lebanon'), ('ar-LY', 'Arabic - Libya'), ('ar-MR', 'Arabic - Mauritania'), ('ar-MA', 'Arabic - Morocco'), ('ar-OM', 'Arabic - Oman'), ('ar-PS', 'Arabic - Palestinian Authority'), ('ar-QA', 'Arabic - Qatar'), ('ar-SA', 'Arabic - Saudi Arabia'), ('ar-SO', 'Arabic - Somalia'), ('ar-SS', 'Arabic - South Sudan'), ('ar-SD', 'Arabic - Sudan'), ('ar-SY', 'Arabic - Syria'), ('ar-TN', 'Arabic - Tunisia'), ('ar-AE', 'Arabic - U.A.E.'), ('ar-001', 'Arabic - World'), ('ar-YE', 'Arabic - Yemen'), ('hy', 'Armenian'), ('hy-AM', 'Armenian - Armenia'), ('as', 'Assamese'), ('as-IN', 'Assamese - India'), ('ast', 'Asturian'), ('ast-ES', 'Asturian - Spain'), ('asa', 'Asu'), ('asa-TZ', 'Asu - Tanzania'), ('az-Cyrl', 'Azerbaijani (Cyrillic)'), ('az-Cyrl-AZ', 'Azerbaijani (Cyrillic) - Azerbaijan'), ('az', 'Azerbaijani (Latin)'), ('az-Latn', 'Azerbaijani (Latin), Latn'), ('az-Latn-AZ', 'Azerbaijani (Latin) - Azerbaijan'), ('ksf', 'Bafia'), ('ksf-CM', 'Bafia - Cameroon'), ('bm', 'Bamanankan'), ('bm-Latn-ML', 'Bamanankan (Latin) - Mali'), ('bn', 'Bangla'), ('bn-BD', 'Bangla - Bangladesh'), ('bn-IN', 'Bangla - India'), ('bas', 'Basaa'), ('bas-CM', 'Basaa - Cameroon'), ('ba', 'Bashkir'), ('ba-RU', 'Bashkir - Russia'), ('eu', 'Basque'), ('eu-ES', 'Basque - Spain'), ('be', 'Belarusian'), ('be-BY', 'Belarusian - Belarus'), ('bem', 'Bemba'), ('bem-ZM', 'Bemba - Zambia'), ('bez', 'Bena'), ('bez-TZ', 'Bena - Tanzania'), ('byn', 'Blin'), ('byn-ER', 'Blin - Eritrea'), ('brx', 'Bodo'), ('brx-IN', 'Bodo - India'), ('bs-Cyrl', 'Bosnian (Cyrillic)'), ('bs-Cyrl-BA', 'Bosnian (Cyrillic) - Bosnia and Herzegovina'), ('bs', 'Bosnian (Latin)'), ('bs-Latn', 'Bosnian (Latin), Latn'), ('bs-Latn-BA', 'Bosnian (Latin) - Bosnia and Herzegovina'), ('br', 'Breton'), ('br-FR', 'Breton - France'), ('bg', 'Bulgarian'), ('bg-BG', 'Bulgarian - Bulgaria'), ('my', 'Burmese'), ('my-MM', 'Burmese - Myanmar'), ('ca', 'Catalan'), ('ca-AD', 'Catalan - Andorra'), ('ca-FR', 'Catalan - France'), ('ca-IT', 'Catalan - Italy'), ('ca-ES', 'Catalan - Spain'), ('ceb', 'Cebuano'), ('ceb-Latn', 'Cebuan (Latin)'), ('ceb-Latn-PH', 'Cebuan (Latin) - Philippines'), ('tzm-Latn-MA', 'Central Atlas Tamazight (Latin) - Morocco'), ('ku', 'Central Kurdish'), ('ku-Arab', 'Central Kurdish, Arab'), ('ku-Arab-IQ', 'Central Kurdish - Iraq'), ('ccp', 'Chakma'), ('ccp-Cakm', 'Chakma - Chakma'), ('ccp-Cakm-BD', 'Chakma - Bangladesh'), ('ccp-Cakm-IN', 'Chakma - India'), ('cd-RU', 'Chechen - Russia'), ('chr', 'Cherokee'), ('chr-Cher', 'Cherokee, Cher'), ('chr-Cher-US', 'Cherokee - United States'), ('cgg', 'Chiga'), ('cgg-UG', 'Chiga - Uganda'), ('zh', 'Chinese (Simplified)'), ('zh-Hans', 'Chinese (Simplified), Hans'), ('zh-CN', "Chinese (Simplified) - People's Republic of China"), ('zh-SG', 'Chinese (Simplified) - Singapore'), ('zh-Hant', 'Chinese (Traditional)'), ('zh-HK', 'Chinese (Traditional) - Hong Kong S.A.R.'), ('zh-MO', 'Chinese (Traditional) - Macao S.A.R.'), ('zh-TW', 'Chinese (Traditional) - Taiwan'), ('cu-RU', 'Church Slavic - Russia'), ('swc', 'Congo Swahili'), ('swc-CD', 'Congo Swahili - Congo DRC'), ('kw', 'Cornish'), ('kw-GB', 'Cornish - United Kingdom'), ('co', 'Corsican'), ('co-FR', 'Corsican - France'), ('hr,', 'Croatian'), ('hr-HR', 'Croatian - Croatia'), ('hr-BA', 'Croatian (Latin) - Bosnia and Herzegovina'), ('cs', 'Czech'), ('cs-CZ', 'Czech - Czech Republic'), ('da', 'Danish'), ('da-DK', 'Danish - Denmark'), ('da-GL', 'Danish - Greenland'), ('prs', 'Dari'), ('prs-AF', 'Dari - Afghanistan'), ('dv', 'Divehi'), ('dv-MV', 'Divehi - Maldives'), ('dua', 'Duala'), ('dua-CM', 'Duala - Cameroon'), ('nl', 'Dutch'), ('nl-AW', 'Dutch - Aruba'), ('nl-BE', 'Dutch - Belgium'), ('nl-BQ', 'Dutch - Bonaire, Sint Eustatius and Saba'), ('nl-CW', 'Dutch - Curaçao'), ('nl-NL', 'Dutch - Netherlands'), ('nl-SX', 'Dutch - Sint Maarten'), ('nl-SR', 'Dutch - Suriname'), ('dz', 'Dzongkha'), ('dz-BT', 'Dzongkha - Bhutan'), ('ebu', 'Embu'), ('ebu-KE', 'Embu - Kenya'), ('en', 'English'), ('en-AS', 'English - American Samoa'), ('en-AI', 'English - Anguilla'), ('en-AG', 'English - Antigua and Barbuda'), ('en-AU', 'English - Australia'), ('en-AT', 'English - Austria'), ('en-BS', 'English - Bahamas'), ('en-BB', 'English - Barbados'), ('en-BE', 'English - Belgium'), ('en-BZ', 'English - Belize'), ('en-BM', 'English - Bermuda'), ('en-BW', 'English - Botswana'), ('en-IO', 'English - British Indian Ocean Territory'), ('en-VG', 'English - British Virgin Islands'), ('en-BI', 'English - Burundi'), ('en-CM', 'English - Cameroon'), ('en-CA', 'English - Canada'), ('en-029', 'English - Caribbean'), ('en-KY', 'English - Cayman Islands'), ('en-CX', 'English - Christmas Island'), ('en-CC', 'English - Cocos [Keeling] Islands'), ('en-CK', 'English - Cook Islands'), ('en-CY', 'English - Cyprus'), ('en-DK', 'English - Denmark'), ('en-DM', 'English - Dominica'), ('en-ER', 'English - Eritrea'), ('en-150', 'English - Europe'), ('en-FK', 'English - Falkland Islands'), ('en-FI', 'English - Finland'), ('en-FJ', 'English - Fiji'), ('en-GM', 'English - Gambia'), ('en-DE', 'English - Germany'), ('en-GH', 'English - Ghana'), ('en-GI', 'English - Gibraltar'), ('en-GD', 'English - Grenada'), ('en-GU', 'English - Guam'), ('en-GG', 'English - Guernsey'), ('en-GY', 'English - Guyana'), ('en-HK', 'English - Hong Kong'), ('en-IN', 'English - India'), ('en-IE', 'English - Ireland'), ('en-IM', 'English - Isle of Man'), ('en-IL', 'English - Israel'), ('en-JM', 'English - Jamaica'), ('en-JE', 'English - Jersey'), ('en-KE', 'English - Kenya'), ('en-KI', 'English - Kiribati'), ('en-LS', 'English - Lesotho'), ('en-LR', 'English - Liberia'), ('en-MO', 'English - Macao SAR'), ('en-MG', 'English - Madagascar'), ('en-MW', 'English - Malawi'), ('en-MY', 'English - Malaysia'), ('en-MT', 'English - Malta'), ('en-MH', 'English - Marshall Islands'), ('en-MU', 'English - Mauritius'), ('en-FM', 'English - Micronesia'), ('en-MS', 'English - Montserrat'), ('en-NA', 'English - Namibia'), ('en-NR', 'English - Nauru'), ('en-NL', 'English - Netherlands'), ('en-NZ', 'English - New Zealand'), ('en-NG', 'English - Nigeria'), ('en-NU', 'English - Niue'), ('en-NF', 'English - Norfolk Island'), ('en-MP', 'English - Northern Mariana Islands'), ('en-PK', 'English - Pakistan'), ('en-PW', 'English - Palau'), ('en-PG', 'English - Papua New Guinea'), ('en-PN', 'English - Pitcairn Islands'), ('en-PR', 'English - Puerto Rico'), ('en-PH', 'English - Republic of the Philippines'), ('en-RW', 'English - Rwanda'), ('en-KN', 'English - Saint Kitts and Nevis'), ('en-LC', 'English - Saint Lucia'), ('en-VC', 'English - Saint Vincent and the Grenadines'), ('en-WS', 'English - Samoa'), ('en-SC', 'English - Seychelles'), ('en-SL', 'English - Sierra Leone'), ('en-SG', 'English - Singapore'), ('en-SX', 'English - Sint Maarten'), ('en-SI', 'English - Slovenia'), ('en-SB', 'English - Solomon Islands'), ('en-ZA', 'English - South Africa'), ('en-SS', 'English - South Sudan'), ('en-SH', 'English - St Helena, Ascension, Tristan da Cunha'), ('en-SD', 'English - Sudan'), ('en-SZ', 'English - Swaziland'), ('en-SE', 'English - Sweden'), ('en-CH', 'English - Switzerland'), ('en-TZ', 'English - Tanzania'), ('en-TK', 'English - Tokelau'), ('en-TO', 'English - Tonga'), ('en-TT', 'English - Trinidad and Tobago'), ('en-TC', 'English - Turks and Caicos Islands'), ('en-TV', 'English - Tuvalu'), ('en-UG', 'English - Uganda'), ('en-AE', 'English - United Arab Emirates'), ('en-GB', 'English - United Kingdom'), ('en-US', 'English - United States'), ('en-UM', 'English - US Minor Outlying Islands'), ('en-VI', 'English - US Virgin Islands'), ('en-VU', 'English - Vanuatu'), ('en-001', 'English - World'), ('en-ZM', 'English - Zambia'), ('en-ZW', 'English - Zimbabwe'), ('eo', 'Esperanto'), ('eo-001', 'Esperanto - World'), ('et', 'Estonian'), ('et-EE', 'Estonian - Estonia'), ('ee', 'Ewe'), ('ee-GH', 'Ewe - Ghana'), ('ee-TG', 'Ewe - Togo'), ('ewo', 'Ewondo'), ('ewo-CM', 'Ewondo - Cameroon'), ('fo', 'Faroese'), ('fo-DK', 'Faroese - Denmark'), ('fo-FO', 'Faroese - Faroe Islands'), ('fil', 'Filipino'), ('fil-PH', 'Filipino - Philippines'), ('fi', 'Finnish'), ('fi-FI', 'Finnish - Finland'), ('fr', 'French'), ('fr-DZ', 'French - Algeria'), ('fr-BE', 'French - Belgium'), ('fr-BJ', 'French - Benin'), ('fr-BF', 'French - Burkina Faso'), ('fr-BI', 'French - Burundi'), ('fr-CM', 'French - Cameroon'), ('fr-CA', 'French - Canada'), ('fr-CF', 'French - Central African Republic'), ('fr-TD', 'French - Chad'), ('fr-KM', 'French - Comoros'), ('fr-CG', 'French - Congo'), ('fr-CD', 'French - Congo, DRC'), ('fr-CI', "French - Côte d'Ivoire"), ('fr-DJ', 'French - Djibouti'), ('fr-GQ', 'French - Equatorial Guinea'), ('fr-FR', 'French - France'), ('fr-GF', 'French - French Guiana'), ('fr-PF', 'French - French Polynesia'), ('fr-GA', 'French - Gabon'), ('fr-GP', 'French - Guadeloupe'), ('fr-GN', 'French - Guinea'), ('fr-HT', 'French - Haiti'), ('fr-LU', 'French - Luxembourg'), ('fr-MG', 'French - Madagascar'), ('fr-ML', 'French - Mali'), ('fr-MQ', 'French - Martinique'), ('fr-MR', 'French - Mauritania'), ('fr-MU', 'French - Mauritius'), ('fr-YT', 'French - Mayotte'), ('fr-MA', 'French - Morocco'), ('fr-NC', 'French - New Caledonia'), ('fr-NE', 'French - Niger'), ('fr-MC', 'French - Principality of Monaco'), ('fr-RE', 'French - Reunion'), ('fr-RW', 'French - Rwanda'), ('fr-BL', 'French - Saint Barthélemy'), ('fr-MF', 'French - Saint Martin'), ('fr-PM', 'French - Saint Pierre and Miquelon'), ('fr-SN', 'French - Senegal'), ('fr-SC', 'French - Seychelles'), ('fr-CH', 'French - Switzerland'), ('fr-SY', 'French - Syria'), ('fr-TG', 'French - Togo'), ('fr-TN', 'French - Tunisia'), ('fr-VU', 'French - Vanuatu'), ('fr-WF', 'French - Wallis and Futuna'), ('fy', 'Frisian'), ('fy-NL', 'Frisian - Netherlands'), ('fur', 'Friulian'), ('fur-IT', 'Friulian - Italy'), ('ff', 'Fulah'), ('ff-Latn', 'Fulah (Latin)'), ('ff-Latn-BF', 'Fulah (Latin) - Burkina Faso'), ('ff-CM', 'Fulah - Cameroon'), ('ff-Latn-CM', 'Fulah (Latin) - Cameroon'), ('ff-Latn-GM', 'Fulah (Latin) - Gambia'), ('ff-Latn-GH', 'Fulah (Latin) - Ghana'), ('ff-GN', 'Fulah - Guinea'), ('ff-Latn-GN', 'Fulah (Latin) - Guinea'), ('ff-Latn-GW', 'Fulah (Latin) - Guinea-Bissau'), ('ff-Latn-LR', 'Fulah (Latin) - Liberia'), ('ff-MR', 'Fulah - Mauritania'), ('ff-Latn-MR', 'Fulah (Latin) - Mauritania'), ('ff-Latn-NE', 'Fulah (Latin) - Niger'), ('ff-NG', 'Fulah - Nigeria'), ('ff-Latn-NG', 'Fulah (Latin) - Nigeria'), ('ff-Latn-SN', 'Fulah - Senegal'), ('ff-Latn-SL', 'Fulah (Latin) - Sierra Leone'), ('gl', 'Galician'), ('gl-ES', 'Galician - Spain'), ('lg', 'Ganda'), ('lg-UG', 'Ganda - Uganda'), ('ka', 'Georgian'), ('ka-GE', 'Georgian - Georgia'), ('de', 'German'), ('de-AT', 'German - Austria'), ('de-BE', 'German - Belgium'), ('de-DE', 'German - Germany'), ('de-IT', 'German - Italy'), ('de-LI', 'German - Liechtenstein'), ('de-LU', 'German - Luxembourg'), ('de-CH', 'German - Switzerland'), ('el', 'Greek'), ('el-CY', 'Greek - Cyprus'), ('el-GR', 'Greek - Greece'), ('kl', 'Greenlandic'), ('kl-GL', 'Greenlandic - Greenland'), ('gn', 'Guarani'), ('gn-PY', 'Guarani - Paraguay'), ('gu', 'Gujarati'), ('gu-IN', 'Gujarati - India'), ('guz', 'Gusii'), ('guz-KE', 'Gusii - Kenya'), ('ha', 'Hausa (Latin)'), ('ha-Latn', 'Hausa (Latin), Latn'), ('ha-Latn-GH', 'Hausa (Latin) - Ghana'), ('ha-Latn-NE', 'Hausa (Latin) - Niger'), ('ha-Latn-NG', 'Hausa (Latin) - Nigeria'), ('haw', 'Hawaiian'), ('haw-US', 'Hawaiian - United States'), ('he', 'Hebrew'), ('he-IL', 'Hebrew - Israel'), ('hi', 'Hindi'), ('hi-IN', 'Hindi - India'), ('hu', 'Hungarian'), ('hu-HU', 'Hungarian - Hungary'), ('is', 'Icelandic'), ('is-IS', 'Icelandic - Iceland'), ('ig', 'Igbo'), ('ig-NG', 'Igbo - Nigeria'), ('id', 'Indonesian'), ('id-ID', 'Indonesian - Indonesia'), ('ia', 'Interlingua'), ('ia-FR', 'Interlingua - France'), ('ia-001', 'Interlingua - World'), ('iu', 'Inuktitut (Latin)'), ('iu-Latn', 'Inuktitut (Latin), Latn'), ('iu-Latn-CA', 'Inuktitut (Latin) - Canada'), ('iu-Cans', 'Inuktitut (Syllabics)'), ('iu-Cans-CA', 'Inuktitut (Syllabics) - Canada'), ('ga', 'Irish'), ('ga-IE', 'Irish - Ireland'), ('it', 'Italian'), ('it-IT', 'Italian - Italy'), ('it-SM', 'Italian - San Marino'), ('it-CH', 'Italian - Switzerland'), ('it-VA', 'Italian - Vatican City'), ('ja', 'Japanese'), ('ja-JP', 'Japanese - Japan'), ('jv', 'Javanese'), ('jv-Latn', 'Javanese - Latin'), ('jv-Latn-ID', 'Javanese - Latin, Indonesia'), ('dyo', 'Jola-Fonyi'), ('dyo-SN', 'Jola-Fonyi - Senegal'), ('kea', 'Kabuverdianu'), ('kea-CV', 'Kabuverdianu - Cabo Verde'), ('kab', 'Kabyle'), ('kab-DZ', 'Kabyle - Algeria'), ('kkj', 'Kako'), ('kkj-CM', 'Kako - Cameroon'), ('kln', 'Kalenjin'), ('kln-KE', 'Kalenjin - Kenya'), ('kam', 'Kamba'), ('kam-KE', 'Kamba - Kenya'), ('kn', 'Kannada'), ('kn-IN', 'Kannada - India'), ('ks', 'Kashmiri'), ('ks-Arab', 'Kashmiri - Perso-Arabic'), ('ks-Arab-IN', 'Kashmiri - Perso-Arabic, IN'), ('kk', 'Kazakh'), ('kk-KZ', 'Kazakh - Kazakhstan'), ('km', 'Khmer'), ('km-KH', 'Khmer - Cambodia'), ('quc', "K'iche"), ('quc-Latn-GT', "K'iche - Guatemala"), ('ki', 'Kikuyu'), ('ki-KE', 'Kikuyu - Kenya'), ('rw', 'Kinyarwanda'), ('rw-RW', 'Kinyarwanda - Rwanda'), ('sw', 'Kiswahili'), ('sw-KE', 'Kiswahili - Kenya'), ('sw-TZ', 'Kiswahili - Tanzania'), ('sw-UG', 'Kiswahili - Uganda'), ('kok', 'Konkani'), ('kok-IN', 'Konkani - India'), ('ko', 'Korean'), ('ko-KR', 'Korean - Korea'), ('ko-KP', 'Korean - North Korea'), ('khq', 'Koyra Chiini'), ('khq-ML', 'Koyra Chiini - Mali'), ('ses', 'Koyraboro Senni'), ('ses-ML', 'Koyraboro Senni - Mali'), ('nmg', 'Kwasio'), ('nmg-CM', 'Kwasio - Cameroon'), ('ky', 'Kyrgyz'), ('ky-KG', 'Kyrgyz - Kyrgyzstan'), ('ku-Arab-IR', 'Kurdish - Perso-Arabic, Iran'), ('lkt', 'Lakota'), ('lkt-US', 'Lakota - United States'), ('lag', 'Langi'), ('lag-TZ', 'Langi - Tanzania'), ('lo', 'Lao'), ('lo-LA', 'Lao - Lao P.D.R.'), ('lv', 'Latvian'), ('lv-LV', 'Latvian - Latvia'), ('ln', 'Lingala'), ('ln-AO', 'Lingala - Angola'), ('ln-CF', 'Lingala - Central African Republic'), ('ln-CG', 'Lingala - Congo'), ('ln-CD', 'Lingala - Congo DRC'), ('lt', 'Lithuanian'), ('lt-LT', 'Lithuanian - Lithuania'), ('nds', 'Low German'), ('nds-DE', 'Low German - Germany'), ('nds-NL', 'Low German - Netherlands'), ('dsb', 'Lower Sorbian'), ('dsb-DE', 'Lower Sorbian - Germany'), ('lu', 'Luba-Katanga'), ('lu-CD', 'Luba-Katanga - Congo DRC'), ('luo', 'Luo'), ('luo-KE', 'Luo - Kenya'), ('lb', 'Luxembourgish'), ('lb-LU', 'Luxembourgish - Luxembourg'), ('luy', 'Luyia'), ('luy-KE', 'Luyia - Kenya'), ('mk', 'Macedonian'), ('mk-MK', 'Macedonian - North Macedonia'), ('jmc', 'Machame'), ('jmc-TZ', 'Machame - Tanzania'), ('mgh', 'Makhuwa-Meetto'), ('mgh-MZ', 'Makhuwa-Meetto - Mozambique'), ('kde', 'Makonde'), ('kde-TZ', 'Makonde - Tanzania'), ('mg', 'Malagasy'), ('mg-MG', 'Malagasy - Madagascar'), ('ms', 'Malay'), ('ms-BN', 'Malay - Brunei Darussalam'), ('ms-MY', 'Malay - Malaysia'), ('ml', 'Malayalam'), ('ml-IN', 'Malayalam - India'), ('mt', 'Maltese'), ('mt-MT', 'Maltese - Malta'), ('gv', 'Manx'), ('gv-IM', 'Manx - Isle of Man'), ('mi', 'Maori'), ('mi-NZ', 'Maori - New Zealand'), ('arn', 'Mapudungun'), ('arn-CL', 'Mapudungun - Chile'), ('mr', 'Marathi'), ('mr-IN', 'Marathi - India'), ('mas', 'Masai'), ('mas-KE', 'Masai - Kenya'), ('mas-TZ', 'Masai - Tanzania'), ('mzn-IR', 'Mazanderani - Iran'), ('mer', 'Meru'), ('mer-KE', 'Meru - Kenya'), ('mgo', "Meta'"), ('mgo-CM', "Meta' - Cameroon"), ('moh', 'Mohawk'), ('moh-CA', 'Mohawk - Canada'), ('mn', 'Mongolian (Cyrillic)'), ('mn-Cyrl', 'Mongolian (Cyrillic), Cyrl'), ('mn-MN', 'Mongolian (Cyrillic) - Mongolia'), ('mn-Mong', 'Mongolian (Traditional Mongolian)'), ('mn-Mong-CN', "Mongolian (Traditional Mongolian) - People's Republic of China"), ('mn-Mong-MN', 'Mongolian (Traditional Mongolian) - Mongolia'), ('mfe', 'Morisyen'), ('mfe-MU', 'Morisyen - Mauritius'), ('mua', 'Mundang'), ('mua-CM', 'Mundang - Cameroon'), ('nqo', "N'ko"), ('nqo-GN', "N'ko - Guinea"), ('naq', 'Nama'), ('naq-NA', 'Nama - Namibia'), ('ne', 'Nepali'), ('ne-IN', 'Nepali - India'), ('ne-NP', 'Nepali - Nepal'), ('nnh', 'Ngiemboon'), ('nnh-CM', 'Ngiemboon - Cameroon'), ('jgo', 'Ngomba'), ('jgo-CM', 'Ngomba - Cameroon'), ('lrc-IQ', 'Northern Luri - Iraq'), ('lrc-IR', 'Northern Luri - Iran'), ('nd', 'North Ndebele'), ('nd-ZW', 'North Ndebele - Zimbabwe'), ('no', 'Norwegian (Bokmal)'), ('nb', 'Norwegian (Bokmal), nb'), ('nb-NO', 'Norwegian (Bokmal) - Norway'), ('nn', 'Norwegian (Nynorsk)'), ('nn-NO', 'Norwegian (Nynorsk) - Norway'), ('nb-SJ', 'Norwegian Bokmål - Svalbard and Jan Mayen'), ('nus', 'Nuer'), ('nus-SD', 'Nuer - Sudan'), ('nus-SS', 'Nuer - South Sudan'), ('nyn', 'Nyankole'), ('nyn-UG', 'Nyankole - Uganda'), ('oc', 'Occitan'), ('oc-FR', 'Occitan - France'), ('or', 'Odia'), ('or-IN', 'Odia - India'), ('om', 'Oromo'), ('om-ET', 'Oromo - Ethiopia'), ('om-KE', 'Oromo - Kenya'), ('os', 'Ossetian'), ('os-GE', 'Ossetian - Cyrillic, Georgia'), ('os-RU', 'Ossetian - Cyrillic, Russia'), ('ps', 'Pashto'), ('ps-AF', 'Pashto - Afghanistan'), ('ps-PK', 'Pashto - Pakistan'), ('fa', 'Persian'), ('fa-AF', 'Persian - Afghanistan'), ('fa-IR', 'Persian - Iran'), ('pl', 'Polish'), ('pl-PL', 'Polish - Poland'), ('pt', 'Portuguese'), ('pt-AO', 'Portuguese - Angola'), ('pt-BR', 'Portuguese - Brazil'), ('pt-CV', 'Portuguese - Cabo Verde'), ('pt-GQ', 'Portuguese - Equatorial Guinea'), ('pt-GW', 'Portuguese - Guinea-Bissau'), ('pt-LU', 'Portuguese - Luxembourg'), ('pt-MO', 'Portuguese - Macao SAR'), ('pt-MZ', 'Portuguese - Mozambique'), ('pt-PT', 'Portuguese - Portugal'), ('pt-ST', 'Portuguese - São Tomé and Príncipe'), ('pt-CH', 'Portuguese - Switzerland'), ('pt-TL', 'Portuguese - Timor-Leste'), ('prg-001', 'Prussian'), ('qps-ploca', 'Pseudo Language - Pseudo locale for east Asian/complex script localization testing'), ('qps-ploc', 'Pseudo Language - Pseudo locale used for localization testing'), ('qps-plocm', 'Pseudo Language - Pseudo locale used for localization testing of mirroredlocales'), ('pa', 'Punjabi'), ('pa-Arab', 'Punjabi, Arab'), ('pa-IN', 'Punjabi - India'), ('pa-Arab-PK', 'Punjabi - Islamic Republic of Pakistan'), ('quz', 'Quechua'), ('quz-BO', 'Quechua - Bolivia'), ('quz-EC', 'Quechua - Ecuador'), ('quz-PE', 'Quechua - Peru'), ('ksh', 'Ripuarian'), ('ksh-DE', 'Ripuarian - Germany'), ('ro', 'Romanian'), ('ro-MD', 'Romanian - Moldova'), ('ro-RO', 'Romanian - Romania'), ('rm', 'Romansh'), ('rm-CH', 'Romansh - Switzerland'), ('rof', 'Rombo'), ('rof-TZ', 'Rombo - Tanzania'), ('rn', 'Rundi'), ('rn-BI', 'Rundi - Burundi'), ('ru', 'Russian'), ('ru-BY', 'Russian - Belarus'), ('ru-KZ', 'Russian - Kazakhstan'), ('ru-KG', 'Russian - Kyrgyzstan'), ('ru-MD', 'Russian - Moldova'), ('ru-RU', 'Russian - Russia'), ('ru-UA', 'Russian - Ukraine'), ('rwk', 'Rwa'), ('rwk-TZ', 'Rwa - Tanzania'), ('ssy', 'Saho'), ('ssy-ER', 'Saho - Eritrea'), ('sah', 'Sakha'), ('sah-RU', 'Sakha - Russia'), ('saq', 'Samburu'), ('saq-KE', 'Samburu - Kenya'), ('smn', 'Sami (Inari)'), ('smn-FI', 'Sami (Inari) - Finland'), ('smj', 'Sami (Lule)'), ('smj-NO', 'Sami (Lule) - Norway'), ('smj-SE', 'Sami (Lule) - Sweden'), ('se', 'Sami (Northern)'), ('se-FI', 'Sami (Northern) - Finland'), ('se-NO', 'Sami (Northern) - Norway'), ('se-SE', 'Sami (Northern) - Sweden'), ('sms', 'Sami (Skolt)'), ('sms-FI', 'Sami (Skolt) - Finland'), ('sma', 'Sami (Southern)'), ('sma-NO', 'Sami (Southern) - Norway'), ('sma-SE', 'Sami (Southern) - Sweden'), ('sg', 'Sango'), ('sg-CF', 'Sango - Central African Republic'), ('sbp', 'Sangu'), ('sbp-TZ', 'Sangu - Tanzania'), ('sa', 'Sanskrit'), ('sa-IN', 'Sanskrit - India'), ('gd', 'Scottish Gaelic'), ('gd-GB', 'Scottish Gaelic - United Kingdom'), ('seh', 'Sena'), ('seh-MZ', 'Sena - Mozambique'), ('sr-Cyrl', 'Serbian (Cyrillic)'), ('sr-Cyrl-BA', 'Serbian (Cyrillic) - Bosnia and Herzegovina'), ('sr-Cyrl-ME', 'Serbian (Cyrillic) - Montenegro'), ('sr-Cyrl-RS', 'Serbian (Cyrillic) - Serbia'), ('sr-Cyrl-CS', 'Serbian (Cyrillic) - Serbia and Montenegro (Former)'), ('sr', 'Serbian (Latin)'), ('sr-Latn', 'Serbian (Latin), Latn'), ('sr-Latn-BA', 'Serbian (Latin) - Bosnia and Herzegovina'), ('sr-Latn-ME', 'Serbian (Latin) - Montenegro'), ('sr-Latn-RS', 'Serbian (Latin) - Serbia'), ('sr-Latn-CS', 'Serbian (Latin) - Serbia and Montenegro (Former)'), ('nso', 'Sesotho sa Leboa'), ('nso-ZA', 'Sesotho sa Leboa - South Africa'), ('tn', 'Setswana'), ('tn-BW', 'Setswana - Botswana'), ('tn-ZA', 'Setswana - South Africa'), ('ksb', 'Shambala'), ('ksb-TZ', 'Shambala - Tanzania'), ('sn', 'Shona'), ('sn-Latn', 'Shona - Latin'), ('sn-Latn-ZW', 'Shona - Zimbabwe'), ('sd', 'Sindhi'), ('sd-Arab', 'Sindhi, Arab'), ('sd-Arab-PK', 'Sindhi - Islamic Republic of Pakistan'), ('si', 'Sinhala'), ('si-LK', 'Sinhala - Sri Lanka'), ('sk', 'Slovak'), ('sk-SK', 'Slovak - Slovakia'), ('sl', 'Slovenian'), ('sl-SI', 'Slovenian - Slovenia'), ('xog', 'Soga'), ('xog-UG', 'Soga - Uganda'), ('so', 'Somali'), ('so-DJ', 'Somali - Djibouti'), ('so-ET', 'Somali - Ethiopia'), ('so-KE', 'Somali - Kenya'), ('so-SO', 'Somali - Somalia'), ('st', 'Sotho'), ('st-ZA', 'Sotho - South Africa'), ('nr', 'South Ndebele'), ('nr-ZA', 'South Ndebele - South Africa'), ('st-LS', 'Southern Sotho - Lesotho'), ('es', 'Spanish'), ('es-AR', 'Spanish - Argentina'), ('es-BZ', 'Spanish - Belize'), ('es-VE', 'Spanish - Bolivarian Republic of Venezuela'), ('es-BO', 'Spanish - Bolivia'), ('es-BR', 'Spanish - Brazil'), ('es-CL', 'Spanish - Chile'), ('es-CO', 'Spanish - Colombia'), ('es-CR', 'Spanish - Costa Rica'), ('es-CU', 'Spanish - Cuba'), ('es-DO', 'Spanish - Dominican Republic'), ('es-EC', 'Spanish - Ecuador'), ('es-SV', 'Spanish - El Salvador'), ('es-GQ', 'Spanish - Equatorial Guinea'), ('es-GT', 'Spanish - Guatemala'), ('es-HN', 'Spanish - Honduras'), ('es-419', 'Spanish - Latin America'), ('es-MX', 'Spanish - Mexico'), ('es-NI', 'Spanish - Nicaragua'), ('es-PA', 'Spanish - Panama'), ('es-PY', 'Spanish - Paraguay'), ('es-PE', 'Spanish - Peru'), ('es-PH', 'Spanish - Philippines'), ('es-PR', 'Spanish - Puerto Rico'), ('es-ES', 'Spanish - Spain'), ('es-ES_tradnl', 'Spanish - Spain, ES_tradnl'), ('es-US', 'Spanish - United - States'), ('es-UY', 'Spanish - Uruguay'), ('zgh', 'Standard Moroccan Tamazight'), ('zgh-Tfng-MA', 'Standard Moroccan Tamazight - Morocco'), ('zgh-Tfng', 'Standard Moroccan Tamazight - Tifinagh'), ('ss', 'Swati'), ('ss-ZA', 'Swati - South Africa'), ('ss-SZ', 'Swati - Swaziland'), ('sv', 'Swedish'), ('sv-AX', 'Swedish - Åland Islands'), ('sv-FI', 'Swedish - Finland'), ('sv-SE', 'Swedish - Sweden'), ('syr', 'Syriac'), ('syr-SY', 'Syriac - Syria'), ('shi', 'Tachelhit'), ('shi-Tfng', 'Tachelhit - Tifinagh'), ('shi-Tfng-MA', 'Tachelhit - Tifinagh, Morocco'), ('shi-Latn', 'Tachelhit (Latin)'), ('shi-Latn-MA', 'Tachelhit (Latin) - Morocco'), ('dav', 'Taita'), ('dav-KE', 'Taita - Kenya'), ('tg', 'Tajik (Cyrillic)'), ('tg-Cyrl', 'Tajik (Cyrillic), Cyrl'), ('tg-Cyrl-TJ', 'Tajik (Cyrillic) - Tajikistan'), ('tzm', 'Tamazight (Latin)'), ('tzm-Latn', 'Tamazight (Latin), Latn'), ('tzm-Latn-DZ', 'Tamazight (Latin) - Algeria'), ('ta', 'Tamil'), ('ta-IN', 'Tamil - India'), ('ta-MY', 'Tamil - Malaysia'), ('ta-SG', 'Tamil - Singapore'), ('ta-LK', 'Tamil - Sri Lanka'), ('twq', 'Tasawaq'), ('twq-NE', 'Tasawaq - Niger'), ('tt', 'Tatar'), ('tt-RU', 'Tatar - Russia'), ('te', 'Telugu'), ('te-IN', 'Telugu - India'), ('teo', 'Teso'), ('teo-KE', 'Teso - Kenya'), ('teo-UG', 'Teso - Uganda'), ('th', 'Thai'), ('th-TH', 'Thai - Thailand'), ('bo', 'Tibetan'), ('bo-IN', 'Tibetan - India'), ('bo-CN', "Tibetan - People's Republic of China"), ('tig', 'Tigre'), ('tig-ER', 'Tigre - Eritrea'), ('ti', 'Tigrinya'), ('ti-ER', 'Tigrinya - Eritrea'), ('ti-ET', 'Tigrinya - Ethiopia'), ('to', 'Tongan'), ('to-TO', 'Tongan - Tonga'), ('ts', 'Tsonga'), ('ts-ZA', 'Tsonga - South Africa'), ('tr', 'Turkish'), ('tr-CY', 'Turkish - Cyprus'), ('tr-TR', 'Turkish - Turkey'), ('tk', 'Turkmen'), ('tk-TM', 'Turkmen - Turkmenistan'), ('uk', 'Ukrainian'), ('uk-UA', 'Ukrainian - Ukraine'), ('hsb', 'Upper Sorbian'), ('hsb-DE', 'Upper Sorbian - Germany'), ('ur', 'Urdu'), ('ur-IN', 'Urdu - India'), ('ur-PK', 'Urdu - Islamic Republic of Pakistan'), ('ug', 'Uyghur'), ('ug-CN', "Uyghur - People's Republic of China"), ('uz-Arab', 'Uzbek - Perso-Arabic'), ('uz-Arab-AF', 'Uzbek - Perso-Arabic, Afghanistan'), ('uz-Cyrl', 'Uzbek (Cyrillic)'), ('uz-Cyrl-UZ', 'Uzbek (Cyrillic) - Uzbekistan'), ('uz', 'Uzbek (Latin)'), ('uz-Latn', 'Uzbek (Latin), Latn'), ('uz-Latn-UZ', 'Uzbek (Latin) - Uzbekistan'), ('vai', 'Vai'), ('vai-Vaii', 'Vai, Vaii'), ('vai-Vaii-LR', 'Vai - Liberia'), ('vai-Latn-LR', 'Vai (Latin) - Liberia'), ('vai-Latn', 'Vai (Latin)'), ('ca-ES-valencia', 'Valencian - Spain'), ('ve', 'Venda'), ('ve-ZA', 'Venda - South Africa'), ('vi', 'Vietnamese'), ('vi-VN', 'Vietnamese - Vietnam'), ('vo', 'Volapük'), ('vo-001', 'Volapük - World'), ('vun', 'Vunjo'), ('vun-TZ', 'Vunjo - Tanzania'), ('wae', 'Walser'), ('wae-CH', 'Walser - Switzerland'), ('cy', 'Welsh'), ('cy-GB', 'Welsh - United Kingdom'), ('wal', 'Wolaytta'), ('wal-ET', 'Wolaytta - Ethiopia'), ('wo', 'Wolof'), ('wo-SN', 'Wolof - Senegal'), ('xh', 'Xhosa'), ('xh-ZA', 'Xhosa - South Africa'), ('yav', 'Yangben'), ('yav-CM', 'Yangben - Cameroon'), ('ii', 'Yi'), ('ii-CN', "Yi - People's Republic of China"), ('yo', 'Yoruba'), ('yo-BJ', 'Yoruba - Benin'), ('yo-NG', 'Yoruba - Nigeria'), ('dje', 'Zarma'), ('dje-NE', 'Zarma - Niger'), ('zu', 'Zulu'), ('zu-ZA', 'Zulu - South Africa')], default='en', help_text='Required if type is "Subtitle"', max_length=50, unique=True),
),
]
# Generated by Django 2.2.17 on 2021-01-28 23:40
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0003_auto_20210129_1006'),
]
operations = [
migrations.DeleteModel(
name='CustomTrack',
),
]
...@@ -5,7 +5,8 @@ from wagtail.admin.edit_handlers import StreamFieldPanel ...@@ -5,7 +5,8 @@ from wagtail.admin.edit_handlers import StreamFieldPanel
from wagtailvideos.edit_handlers import VideoChooserPanel from wagtailvideos.edit_handlers import VideoChooserPanel
from wagtailvideos.blocks import VideoChooserBlock from wagtailvideos.blocks import VideoChooserBlock
from wagtailvideos.models import AbstractVideo, AbstractVideoTranscode, AbstractTrack from wagtailvideos.models import AbstractVideo, AbstractVideoTranscode
from modelcluster.fields import ParentalKey
class CustomVideoModel(AbstractVideo): class CustomVideoModel(AbstractVideo):
...@@ -30,9 +31,6 @@ class CustomVideoTranscode(AbstractVideoTranscode): ...@@ -30,9 +31,6 @@ class CustomVideoTranscode(AbstractVideoTranscode):
) )
class CustomTrack(AbstractTrack):
video = models.ForeignKey(CustomVideoModel, related_name='tracks', on_delete=models.CASCADE)
class TestPage(Page): class TestPage(Page):
video_field = models.ForeignKey( video_field = models.ForeignKey(
'wagtailvideos.Video', related_name='+', null=True, blank=True, on_delete=models.SET_NULL) 'wagtailvideos.Video', related_name='+', null=True, blank=True, on_delete=models.SET_NULL)
......
...@@ -16,6 +16,7 @@ INSTALLED_APPS = [ ...@@ -16,6 +16,7 @@ INSTALLED_APPS = [
'wagtail.snippets', 'wagtail.snippets',
'wagtail.images', 'wagtail.images',
'wagtail.documents', 'wagtail.documents',
'wagtail.contrib.modeladmin',
'django.contrib.admin', 'django.contrib.admin',
'django.contrib.auth', 'django.contrib.auth',
......
# Generated by Django 2.2.17 on 2021-01-28 03:08
from django.db import migrations, models
import django.db.models.deletion
import wagtailvideos.models
class Migration(migrations.Migration):
dependencies = [
('wagtailvideos', '0010_video_ordering'),
]
operations = [
migrations.CreateModel(
name='Track',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('file', models.FileField(upload_to=wagtailvideos.models.get_upload_to, verbose_name='file')),
('kind', models.CharField(choices=[('subtitles', 'Subtitles'), ('captions', 'Captions'), ('descriptions', 'Descriptions'), ('chapters', 'Chapters'), ('metadata', 'Metadata')], default='subtitles', max_length=50)),
('label', models.CharField(blank=True, help_text='A user-readable title of the text track.', max_length=255)),
('language', models.CharField(blank=True, choices=[('Afar', 'aa'), ('Afar - Djibouti', 'aa-DJ'), ('Afar - Eritrea', 'aa-ER'), ('Afar - Ethiopia', 'aa-ET'), ('Afrikaans', 'af'), ('Afrikaans - Namibia', 'af-NA'), ('Afrikaans - South Africa', 'af-ZA'), ('Aghem', 'agq'), ('Aghem - Cameroon', 'agq-CM'), ('Akan', 'ak'), ('Akan - Ghana', 'ak-GH'), ('Albanian', 'sq'), ('Albanian - Albania', 'sq-AL'), ('Albanian - North Macedonia', 'sq-MK'), ('Alsatian', 'gsw'), ('Alsatian - France', 'gsw-FR'), ('Alsatian - Liechtenstein', 'gsw-LI'), ('Alsatian - Switzerland', 'gsw-CH'), ('Amharic', 'am'), ('Amharic - Ethiopia', 'am-ET'), ('Arabic', 'ar'), ('Arabic - Algeria', 'ar-DZ'), ('Arabic - Bahrain', 'ar-BH'), ('Arabic - Chad', 'ar-TD'), ('Arabic - Comoros', 'ar-KM'), ('Arabic - Djibouti', 'ar-DJ'), ('Arabic - Egypt', 'ar-EG'), ('Arabic - Eritrea', 'ar-ER'), ('Arabic - Iraq', 'ar-IQ'), ('Arabic - Israel', 'ar-IL'), ('Arabic - Jordan', 'ar-JO'), ('Arabic - Kuwait', 'ar-KW'), ('Arabic - Lebanon', 'ar-LB'), ('Arabic - Libya', 'ar-LY'), ('Arabic - Mauritania', 'ar-MR'), ('Arabic - Morocco', 'ar-MA'), ('Arabic - Oman', 'ar-OM'), ('Arabic - Palestinian Authority', 'ar-PS'), ('Arabic - Qatar', 'ar-QA'), ('Arabic - Saudi Arabia', 'ar-SA'), ('Arabic - Somalia', 'ar-SO'), ('Arabic - South Sudan', 'ar-SS'), ('Arabic - Sudan', 'ar-SD'), ('Arabic - Syria', 'ar-SY'), ('Arabic - Tunisia', 'ar-TN'), ('Arabic - U.A.E.', 'ar-AE'), ('Arabic - World', 'ar-001'), ('Arabic - Yemen', 'ar-YE'), ('Armenian', 'hy'), ('Armenian - Armenia', 'hy-AM'), ('Assamese', 'as'), ('Assamese - India', 'as-IN'), ('Asturian', 'ast'), ('Asturian - Spain', 'ast-ES'), ('Asu', 'asa'), ('Asu - Tanzania', 'asa-TZ'), ('Azerbaijani (Cyrillic)', 'az-Cyrl'), ('Azerbaijani (Cyrillic) - Azerbaijan', 'az-Cyrl-AZ'), ('Azerbaijani (Latin)', 'az'), ('Azerbaijani (Latin), Latn', 'az-Latn'), ('Azerbaijani (Latin) - Azerbaijan', 'az-Latn-AZ'), ('Bafia', 'ksf'), ('Bafia - Cameroon', 'ksf-CM'), ('Bamanankan', 'bm'), ('Bamanankan (Latin) - Mali', 'bm-Latn-ML'), ('Bangla', 'bn'), ('Bangla - Bangladesh', 'bn-BD'), ('Bangla - India', 'bn-IN'), ('Basaa', 'bas'), ('Basaa - Cameroon', 'bas-CM'), ('Bashkir', 'ba'), ('Bashkir - Russia', 'ba-RU'), ('Basque', 'eu'), ('Basque - Spain', 'eu-ES'), ('Belarusian', 'be'), ('Belarusian - Belarus', 'be-BY'), ('Bemba', 'bem'), ('Bemba - Zambia', 'bem-ZM'), ('Bena', 'bez'), ('Bena - Tanzania', 'bez-TZ'), ('Blin', 'byn'), ('Blin - Eritrea', 'byn-ER'), ('Bodo', 'brx'), ('Bodo - India', 'brx-IN'), ('Bosnian (Cyrillic)', 'bs-Cyrl'), ('Bosnian (Cyrillic) - Bosnia and Herzegovina', 'bs-Cyrl-BA'), ('Bosnian (Latin)', 'bs'), ('Bosnian (Latin), Latn', 'bs-Latn'), ('Bosnian (Latin) - Bosnia and Herzegovina', 'bs-Latn-BA'), ('Breton', 'br'), ('Breton - France', 'br-FR'), ('Bulgarian', 'bg'), ('Bulgarian - Bulgaria', 'bg-BG'), ('Burmese', 'my'), ('Burmese - Myanmar', 'my-MM'), ('Catalan', 'ca'), ('Catalan - Andorra', 'ca-AD'), ('Catalan - France', 'ca-FR'), ('Catalan - Italy', 'ca-IT'), ('Catalan - Spain', 'ca-ES'), ('Cebuano', 'ceb'), ('Cebuan (Latin)', 'ceb-Latn'), ('Cebuan (Latin) - Philippines', 'ceb-Latn-PH'), ('Central Atlas Tamazight (Latin) - Morocco', 'tzm-Latn-MA'), ('Central Kurdish', 'ku'), ('Central Kurdish, Arab', 'ku-Arab'), ('Central Kurdish - Iraq', 'ku-Arab-IQ'), ('Chakma', 'ccp'), ('Chakma - Chakma', 'ccp-Cakm'), ('Chakma - Bangladesh', 'ccp-Cakm-BD'), ('Chakma - India', 'ccp-Cakm-IN'), ('Chechen - Russia', 'cd-RU'), ('Cherokee', 'chr'), ('Cherokee, Cher', 'chr-Cher'), ('Cherokee - United States', 'chr-Cher-US'), ('Chiga', 'cgg'), ('Chiga - Uganda', 'cgg-UG'), ('Chinese (Simplified)', 'zh'), ('Chinese (Simplified), Hans', 'zh-Hans'), ("Chinese (Simplified) - People's Republic of China", 'zh-CN'), ('Chinese (Simplified) - Singapore', 'zh-SG'), ('Chinese (Traditional)', 'zh-Hant'), ('Chinese (Traditional) - Hong Kong S.A.R.', 'zh-HK'), ('Chinese (Traditional) - Macao S.A.R.', 'zh-MO'), ('Chinese (Traditional) - Taiwan', 'zh-TW'), ('Church Slavic - Russia', 'cu-RU'), ('Congo Swahili', 'swc'), ('Congo Swahili - Congo DRC', 'swc-CD'), ('Cornish', 'kw'), ('Cornish - United Kingdom', 'kw-GB'), ('Corsican', 'co'), ('Corsican - France', 'co-FR'), ('Croatian', 'hr,'), ('Croatian - Croatia', 'hr-HR'), ('Croatian (Latin) - Bosnia and Herzegovina', 'hr-BA'), ('Czech', 'cs'), ('Czech - Czech Republic', 'cs-CZ'), ('Danish', 'da'), ('Danish - Denmark', 'da-DK'), ('Danish - Greenland', 'da-GL'), ('Dari', 'prs'), ('Dari - Afghanistan', 'prs-AF'), ('Divehi', 'dv'), ('Divehi - Maldives', 'dv-MV'), ('Duala', 'dua'), ('Duala - Cameroon', 'dua-CM'), ('Dutch', 'nl'), ('Dutch - Aruba', 'nl-AW'), ('Dutch - Belgium', 'nl-BE'), ('Dutch - Bonaire, Sint Eustatius and Saba', 'nl-BQ'), ('Dutch - Curaçao', 'nl-CW'), ('Dutch - Netherlands', 'nl-NL'), ('Dutch - Sint Maarten', 'nl-SX'), ('Dutch - Suriname', 'nl-SR'), ('Dzongkha', 'dz'), ('Dzongkha - Bhutan', 'dz-BT'), ('Embu', 'ebu'), ('Embu - Kenya', 'ebu-KE'), ('English', 'en'), ('English - American Samoa', 'en-AS'), ('English - Anguilla', 'en-AI'), ('English - Antigua and Barbuda', 'en-AG'), ('English - Australia', 'en-AU'), ('English - Austria', 'en-AT'), ('English - Bahamas', 'en-BS'), ('English - Barbados', 'en-BB'), ('English - Belgium', 'en-BE'), ('English - Belize', 'en-BZ'), ('English - Bermuda', 'en-BM'), ('English - Botswana', 'en-BW'), ('English - British Indian Ocean Territory', 'en-IO'), ('English - British Virgin Islands', 'en-VG'), ('English - Burundi', 'en-BI'), ('English - Cameroon', 'en-CM'), ('English - Canada', 'en-CA'), ('English - Caribbean', 'en-029'), ('English - Cayman Islands', 'en-KY'), ('English - Christmas Island', 'en-CX'), ('English - Cocos [Keeling] Islands', 'en-CC'), ('English - Cook Islands', 'en-CK'), ('English - Cyprus', 'en-CY'), ('English - Denmark', 'en-DK'), ('English - Dominica', 'en-DM'), ('English - Eritrea', 'en-ER'), ('English - Europe', 'en-150'), ('English - Falkland Islands', 'en-FK'), ('English - Finland', 'en-FI'), ('English - Fiji', 'en-FJ'), ('English - Gambia', 'en-GM'), ('English - Germany', 'en-DE'), ('English - Ghana', 'en-GH'), ('English - Gibraltar', 'en-GI'), ('English - Grenada', 'en-GD'), ('English - Guam', 'en-GU'), ('English - Guernsey', 'en-GG'), ('English - Guyana', 'en-GY'), ('English - Hong Kong', 'en-HK'), ('English - India', 'en-IN'), ('English - Ireland', 'en-IE'), ('English - Isle of Man', 'en-IM'), ('English - Israel', 'en-IL'), ('English - Jamaica', 'en-JM'), ('English - Jersey', 'en-JE'), ('English - Kenya', 'en-KE'), ('English - Kiribati', 'en-KI'), ('English - Lesotho', 'en-LS'), ('English - Liberia', 'en-LR'), ('English - Macao SAR', 'en-MO'), ('English - Madagascar', 'en-MG'), ('English - Malawi', 'en-MW'), ('English - Malaysia', 'en-MY'), ('English - Malta', 'en-MT'), ('English - Marshall Islands', 'en-MH'), ('English - Mauritius', 'en-MU'), ('English - Micronesia', 'en-FM'), ('English - Montserrat', 'en-MS'), ('English - Namibia', 'en-NA'), ('English - Nauru', 'en-NR'), ('English - Netherlands', 'en-NL'), ('English - New Zealand', 'en-NZ'), ('English - Nigeria', 'en-NG'), ('English - Niue', 'en-NU'), ('English - Norfolk Island', 'en-NF'), ('English - Northern Mariana Islands', 'en-MP'), ('English - Pakistan', 'en-PK'), ('English - Palau', 'en-PW'), ('English - Papua New Guinea', 'en-PG'), ('English - Pitcairn Islands', 'en-PN'), ('English - Puerto Rico', 'en-PR'), ('English - Republic of the Philippines', 'en-PH'), ('English - Rwanda', 'en-RW'), ('English - Saint Kitts and Nevis', 'en-KN'), ('English - Saint Lucia', 'en-LC'), ('English - Saint Vincent and the Grenadines', 'en-VC'), ('English - Samoa', 'en-WS'), ('English - Seychelles', 'en-SC'), ('English - Sierra Leone', 'en-SL'), ('English - Singapore', 'en-SG'), ('English - Sint Maarten', 'en-SX'), ('English - Slovenia', 'en-SI'), ('English - Solomon Islands', 'en-SB'), ('English - South Africa', 'en-ZA'), ('English - South Sudan', 'en-SS'), ('English - St Helena, Ascension, Tristan da Cunha', 'en-SH'), ('English - Sudan', 'en-SD'), ('English - Swaziland', 'en-SZ'), ('English - Sweden', 'en-SE'), ('English - Switzerland', 'en-CH'), ('English - Tanzania', 'en-TZ'), ('English - Tokelau', 'en-TK'), ('English - Tonga', 'en-TO'), ('English - Trinidad and Tobago', 'en-TT'), ('English - Turks and Caicos Islands', 'en-TC'), ('English - Tuvalu', 'en-TV'), ('English - Uganda', 'en-UG'), ('English - United Arab Emirates', 'en-AE'), ('English - United Kingdom', 'en-GB'), ('English - United States', 'en-US'), ('English - US Minor Outlying Islands', 'en-UM'), ('English - US Virgin Islands', 'en-VI'), ('English - Vanuatu', 'en-VU'), ('English - World', 'en-001'), ('English - Zambia', 'en-ZM'), ('English - Zimbabwe', 'en-ZW'), ('Esperanto', 'eo'), ('Esperanto - World', 'eo-001'), ('Estonian', 'et'), ('Estonian - Estonia', 'et-EE'), ('Ewe', 'ee'), ('Ewe - Ghana', 'ee-GH'), ('Ewe - Togo', 'ee-TG'), ('Ewondo', 'ewo'), ('Ewondo - Cameroon', 'ewo-CM'), ('Faroese', 'fo'), ('Faroese - Denmark', 'fo-DK'), ('Faroese - Faroe Islands', 'fo-FO'), ('Filipino', 'fil'), ('Filipino - Philippines', 'fil-PH'), ('Finnish', 'fi'), ('Finnish - Finland', 'fi-FI'), ('French', 'fr'), ('French - Algeria', 'fr-DZ'), ('French - Belgium', 'fr-BE'), ('French - Benin', 'fr-BJ'), ('French - Burkina Faso', 'fr-BF'), ('French - Burundi', 'fr-BI'), ('French - Cameroon', 'fr-CM'), ('French - Canada', 'fr-CA'), ('French - Central African Republic', 'fr-CF'), ('French - Chad', 'fr-TD'), ('French - Comoros', 'fr-KM'), ('French - Congo', 'fr-CG'), ('French - Congo, DRC', 'fr-CD'), ("French - Côte d'Ivoire", 'fr-CI'), ('French - Djibouti', 'fr-DJ'), ('French - Equatorial Guinea', 'fr-GQ'), ('French - France', 'fr-FR'), ('French - French Guiana', 'fr-GF'), ('French - French Polynesia', 'fr-PF'), ('French - Gabon', 'fr-GA'), ('French - Guadeloupe', 'fr-GP'), ('French - Guinea', 'fr-GN'), ('French - Haiti', 'fr-HT'), ('French - Luxembourg', 'fr-LU'), ('French - Madagascar', 'fr-MG'), ('French - Mali', 'fr-ML'), ('French - Martinique', 'fr-MQ'), ('French - Mauritania', 'fr-MR'), ('French - Mauritius', 'fr-MU'), ('French - Mayotte', 'fr-YT'), ('French - Morocco', 'fr-MA'), ('French - New Caledonia', 'fr-NC'), ('French - Niger', 'fr-NE'), ('French - Principality of Monaco', 'fr-MC'), ('French - Reunion', 'fr-RE'), ('French - Rwanda', 'fr-RW'), ('French - Saint Barthélemy', 'fr-BL'), ('French - Saint Martin', 'fr-MF'), ('French - Saint Pierre and Miquelon', 'fr-PM'), ('French - Senegal', 'fr-SN'), ('French - Seychelles', 'fr-SC'), ('French - Switzerland', 'fr-CH'), ('French - Syria', 'fr-SY'), ('French - Togo', 'fr-TG'), ('French - Tunisia', 'fr-TN'), ('French - Vanuatu', 'fr-VU'), ('French - Wallis and Futuna', 'fr-WF'), ('Frisian', 'fy'), ('Frisian - Netherlands', 'fy-NL'), ('Friulian', 'fur'), ('Friulian - Italy', 'fur-IT'), ('Fulah', 'ff'), ('Fulah (Latin)', 'ff-Latn'), ('Fulah (Latin) - Burkina Faso', 'ff-Latn-BF'), ('Fulah - Cameroon', 'ff-CM'), ('Fulah (Latin) - Cameroon', 'ff-Latn-CM'), ('Fulah (Latin) - Gambia', 'ff-Latn-GM'), ('Fulah (Latin) - Ghana', 'ff-Latn-GH'), ('Fulah - Guinea', 'ff-GN'), ('Fulah (Latin) - Guinea', 'ff-Latn-GN'), ('Fulah (Latin) - Guinea-Bissau', 'ff-Latn-GW'), ('Fulah (Latin) - Liberia', 'ff-Latn-LR'), ('Fulah - Mauritania', 'ff-MR'), ('Fulah (Latin) - Mauritania', 'ff-Latn-MR'), ('Fulah (Latin) - Niger', 'ff-Latn-NE'), ('Fulah - Nigeria', 'ff-NG'), ('Fulah (Latin) - Nigeria', 'ff-Latn-NG'), ('Fulah - Senegal', 'ff-Latn-SN'), ('Fulah (Latin) - Sierra Leone', 'ff-Latn-SL'), ('Galician', 'gl'), ('Galician - Spain', 'gl-ES'), ('Ganda', 'lg'), ('Ganda - Uganda', 'lg-UG'), ('Georgian', 'ka'), ('Georgian - Georgia', 'ka-GE'), ('German', 'de'), ('German - Austria', 'de-AT'), ('German - Belgium', 'de-BE'), ('German - Germany', 'de-DE'), ('German - Italy', 'de-IT'), ('German - Liechtenstein', 'de-LI'), ('German - Luxembourg', 'de-LU'), ('German - Switzerland', 'de-CH'), ('Greek', 'el'), ('Greek - Cyprus', 'el-CY'), ('Greek - Greece', 'el-GR'), ('Greenlandic', 'kl'), ('Greenlandic - Greenland', 'kl-GL'), ('Guarani', 'gn'), ('Guarani - Paraguay', 'gn-PY'), ('Gujarati', 'gu'), ('Gujarati - India', 'gu-IN'), ('Gusii', 'guz'), ('Gusii - Kenya', 'guz-KE'), ('Hausa (Latin)', 'ha'), ('Hausa (Latin), Latn', 'ha-Latn'), ('Hausa (Latin) - Ghana', 'ha-Latn-GH'), ('Hausa (Latin) - Niger', 'ha-Latn-NE'), ('Hausa (Latin) - Nigeria', 'ha-Latn-NG'), ('Hawaiian', 'haw'), ('Hawaiian - United States', 'haw-US'), ('Hebrew', 'he'), ('Hebrew - Israel', 'he-IL'), ('Hindi', 'hi'), ('Hindi - India', 'hi-IN'), ('Hungarian', 'hu'), ('Hungarian - Hungary', 'hu-HU'), ('Icelandic', 'is'), ('Icelandic - Iceland', 'is-IS'), ('Igbo', 'ig'), ('Igbo - Nigeria', 'ig-NG'), ('Indonesian', 'id'), ('Indonesian - Indonesia', 'id-ID'), ('Interlingua', 'ia'), ('Interlingua - France', 'ia-FR'), ('Interlingua - World', 'ia-001'), ('Inuktitut (Latin)', 'iu'), ('Inuktitut (Latin), Latn', 'iu-Latn'), ('Inuktitut (Latin) - Canada', 'iu-Latn-CA'), ('Inuktitut (Syllabics)', 'iu-Cans'), ('Inuktitut (Syllabics) - Canada', 'iu-Cans-CA'), ('Irish', 'ga'), ('Irish - Ireland', 'ga-IE'), ('Italian', 'it'), ('Italian - Italy', 'it-IT'), ('Italian - San Marino', 'it-SM'), ('Italian - Switzerland', 'it-CH'), ('Italian - Vatican City', 'it-VA'), ('Japanese', 'ja'), ('Japanese - Japan', 'ja-JP'), ('Javanese', 'jv'), ('Javanese - Latin', 'jv-Latn'), ('Javanese - Latin, Indonesia', 'jv-Latn-ID'), ('Jola-Fonyi', 'dyo'), ('Jola-Fonyi - Senegal', 'dyo-SN'), ('Kabuverdianu', 'kea'), ('Kabuverdianu - Cabo Verde', 'kea-CV'), ('Kabyle', 'kab'), ('Kabyle - Algeria', 'kab-DZ'), ('Kako', 'kkj'), ('Kako - Cameroon', 'kkj-CM'), ('Kalenjin', 'kln'), ('Kalenjin - Kenya', 'kln-KE'), ('Kamba', 'kam'), ('Kamba - Kenya', 'kam-KE'), ('Kannada', 'kn'), ('Kannada - India', 'kn-IN'), ('Kashmiri', 'ks'), ('Kashmiri - Perso-Arabic', 'ks-Arab'), ('Kashmiri - Perso-Arabic, IN', 'ks-Arab-IN'), ('Kazakh', 'kk'), ('Kazakh - Kazakhstan', 'kk-KZ'), ('Khmer', 'km'), ('Khmer - Cambodia', 'km-KH'), ("K'iche", 'quc'), ("K'iche - Guatemala", 'quc-Latn-GT'), ('Kikuyu', 'ki'), ('Kikuyu - Kenya', 'ki-KE'), ('Kinyarwanda', 'rw'), ('Kinyarwanda - Rwanda', 'rw-RW'), ('Kiswahili', 'sw'), ('Kiswahili - Kenya', 'sw-KE'), ('Kiswahili - Tanzania', 'sw-TZ'), ('Kiswahili - Uganda', 'sw-UG'), ('Konkani', 'kok'), ('Konkani - India', 'kok-IN'), ('Korean', 'ko'), ('Korean - Korea', 'ko-KR'), ('Korean - North Korea', 'ko-KP'), ('Koyra Chiini', 'khq'), ('Koyra Chiini - Mali', 'khq-ML'), ('Koyraboro Senni', 'ses'), ('Koyraboro Senni - Mali', 'ses-ML'), ('Kwasio', 'nmg'), ('Kwasio - Cameroon', 'nmg-CM'), ('Kyrgyz', 'ky'), ('Kyrgyz - Kyrgyzstan', 'ky-KG'), ('Kurdish - Perso-Arabic, Iran', 'ku-Arab-IR'), ('Lakota', 'lkt'), ('Lakota - United States', 'lkt-US'), ('Langi', 'lag'), ('Langi - Tanzania', 'lag-TZ'), ('Lao', 'lo'), ('Lao - Lao P.D.R.', 'lo-LA'), ('Latvian', 'lv'), ('Latvian - Latvia', 'lv-LV'), ('Lingala', 'ln'), ('Lingala - Angola', 'ln-AO'), ('Lingala - Central African Republic', 'ln-CF'), ('Lingala - Congo', 'ln-CG'), ('Lingala - Congo DRC', 'ln-CD'), ('Lithuanian', 'lt'), ('Lithuanian - Lithuania', 'lt-LT'), ('Low German', 'nds'), ('Low German - Germany', 'nds-DE'), ('Low German - Netherlands', 'nds-NL'), ('Lower Sorbian', 'dsb'), ('Lower Sorbian - Germany', 'dsb-DE'), ('Luba-Katanga', 'lu'), ('Luba-Katanga - Congo DRC', 'lu-CD'), ('Luo', 'luo'), ('Luo - Kenya', 'luo-KE'), ('Luxembourgish', 'lb'), ('Luxembourgish - Luxembourg', 'lb-LU'), ('Luyia', 'luy'), ('Luyia - Kenya', 'luy-KE'), ('Macedonian', 'mk'), ('Macedonian - North Macedonia', 'mk-MK'), ('Machame', 'jmc'), ('Machame - Tanzania', 'jmc-TZ'), ('Makhuwa-Meetto', 'mgh'), ('Makhuwa-Meetto - Mozambique', 'mgh-MZ'), ('Makonde', 'kde'), ('Makonde - Tanzania', 'kde-TZ'), ('Malagasy', 'mg'), ('Malagasy - Madagascar', 'mg-MG'), ('Malay', 'ms'), ('Malay - Brunei Darussalam', 'ms-BN'), ('Malay - Malaysia', 'ms-MY'), ('Malayalam', 'ml'), ('Malayalam - India', 'ml-IN'), ('Maltese', 'mt'), ('Maltese - Malta', 'mt-MT'), ('Manx', 'gv'), ('Manx - Isle of Man', 'gv-IM'), ('Maori', 'mi'), ('Maori - New Zealand', 'mi-NZ'), ('Mapudungun', 'arn'), ('Mapudungun - Chile', 'arn-CL'), ('Marathi', 'mr'), ('Marathi - India', 'mr-IN'), ('Masai', 'mas'), ('Masai - Kenya', 'mas-KE'), ('Masai - Tanzania', 'mas-TZ'), ('Mazanderani - Iran', 'mzn-IR'), ('Meru', 'mer'), ('Meru - Kenya', 'mer-KE'), ("Meta'", 'mgo'), ("Meta' - Cameroon", 'mgo-CM'), ('Mohawk', 'moh'), ('Mohawk - Canada', 'moh-CA'), ('Mongolian (Cyrillic)', 'mn'), ('Mongolian (Cyrillic), Cyrl', 'mn-Cyrl'), ('Mongolian (Cyrillic) - Mongolia', 'mn-MN'), ('Mongolian (Traditional Mongolian)', 'mn-Mong'), ("Mongolian (Traditional Mongolian) - People's Republic of China", 'mn-Mong-CN'), ('Mongolian (Traditional Mongolian) - Mongolia', 'mn-Mong-MN'), ('Morisyen', 'mfe'), ('Morisyen - Mauritius', 'mfe-MU'), ('Mundang', 'mua'), ('Mundang - Cameroon', 'mua-CM'), ("N'ko", 'nqo'), ("N'ko - Guinea", 'nqo-GN'), ('Nama', 'naq'), ('Nama - Namibia', 'naq-NA'), ('Nepali', 'ne'), ('Nepali - India', 'ne-IN'), ('Nepali - Nepal', 'ne-NP'), ('Ngiemboon', 'nnh'), ('Ngiemboon - Cameroon', 'nnh-CM'), ('Ngomba', 'jgo'), ('Ngomba - Cameroon', 'jgo-CM'), ('Northern Luri - Iraq', 'lrc-IQ'), ('Northern Luri - Iran', 'lrc-IR'), ('North Ndebele', 'nd'), ('North Ndebele - Zimbabwe', 'nd-ZW'), ('Norwegian (Bokmal)', 'no'), ('Norwegian (Bokmal), nb', 'nb'), ('Norwegian (Bokmal) - Norway', 'nb-NO'), ('Norwegian (Nynorsk)', 'nn'), ('Norwegian (Nynorsk) - Norway', 'nn-NO'), ('Norwegian Bokmål - Svalbard and Jan Mayen', 'nb-SJ'), ('Nuer', 'nus'), ('Nuer - Sudan', 'nus-SD'), ('Nuer - South Sudan', 'nus-SS'), ('Nyankole', 'nyn'), ('Nyankole - Uganda', 'nyn-UG'), ('Occitan', 'oc'), ('Occitan - France', 'oc-FR'), ('Odia', 'or'), ('Odia - India', 'or-IN'), ('Oromo', 'om'), ('Oromo - Ethiopia', 'om-ET'), ('Oromo - Kenya', 'om-KE'), ('Ossetian', 'os'), ('Ossetian - Cyrillic, Georgia', 'os-GE'), ('Ossetian - Cyrillic, Russia', 'os-RU'), ('Pashto', 'ps'), ('Pashto - Afghanistan', 'ps-AF'), ('Pashto - Pakistan', 'ps-PK'), ('Persian', 'fa'), ('Persian - Afghanistan', 'fa-AF'), ('Persian - Iran', 'fa-IR'), ('Polish', 'pl'), ('Polish - Poland', 'pl-PL'), ('Portuguese', 'pt'), ('Portuguese - Angola', 'pt-AO'), ('Portuguese - Brazil', 'pt-BR'), ('Portuguese - Cabo Verde', 'pt-CV'), ('Portuguese - Equatorial Guinea', 'pt-GQ'), ('Portuguese - Guinea-Bissau', 'pt-GW'), ('Portuguese - Luxembourg', 'pt-LU'), ('Portuguese - Macao SAR', 'pt-MO'), ('Portuguese - Mozambique', 'pt-MZ'), ('Portuguese - Portugal', 'pt-PT'), ('Portuguese - São Tomé and Príncipe', 'pt-ST'), ('Portuguese - Switzerland', 'pt-CH'), ('Portuguese - Timor-Leste', 'pt-TL'), ('Prussian', 'prg-001'), ('Pseudo Language - Pseudo locale for east Asian/complex script localization testing', 'qps-ploca'), ('Pseudo Language - Pseudo locale used for localization testing', 'qps-ploc'), ('Pseudo Language - Pseudo locale used for localization testing of mirroredlocales', 'qps-plocm'), ('Punjabi', 'pa'), ('Punjabi, Arab', 'pa-Arab'), ('Punjabi - India', 'pa-IN'), ('Punjabi - Islamic Republic of Pakistan', 'pa-Arab-PK'), ('Quechua', 'quz'), ('Quechua - Bolivia', 'quz-BO'), ('Quechua - Ecuador', 'quz-EC'), ('Quechua - Peru', 'quz-PE'), ('Ripuarian', 'ksh'), ('Ripuarian - Germany', 'ksh-DE'), ('Romanian', 'ro'), ('Romanian - Moldova', 'ro-MD'), ('Romanian - Romania', 'ro-RO'), ('Romansh', 'rm'), ('Romansh - Switzerland', 'rm-CH'), ('Rombo', 'rof'), ('Rombo - Tanzania', 'rof-TZ'), ('Rundi', 'rn'), ('Rundi - Burundi', 'rn-BI'), ('Russian', 'ru'), ('Russian - Belarus', 'ru-BY'), ('Russian - Kazakhstan', 'ru-KZ'), ('Russian - Kyrgyzstan', 'ru-KG'), ('Russian - Moldova', 'ru-MD'), ('Russian - Russia', 'ru-RU'), ('Russian - Ukraine', 'ru-UA'), ('Rwa', 'rwk'), ('Rwa - Tanzania', 'rwk-TZ'), ('Saho', 'ssy'), ('Saho - Eritrea', 'ssy-ER'), ('Sakha', 'sah'), ('Sakha - Russia', 'sah-RU'), ('Samburu', 'saq'), ('Samburu - Kenya', 'saq-KE'), ('Sami (Inari)', 'smn'), ('Sami (Inari) - Finland', 'smn-FI'), ('Sami (Lule)', 'smj'), ('Sami (Lule) - Norway', 'smj-NO'), ('Sami (Lule) - Sweden', 'smj-SE'), ('Sami (Northern)', 'se'), ('Sami (Northern) - Finland', 'se-FI'), ('Sami (Northern) - Norway', 'se-NO'), ('Sami (Northern) - Sweden', 'se-SE'), ('Sami (Skolt)', 'sms'), ('Sami (Skolt) - Finland', 'sms-FI'), ('Sami (Southern)', 'sma'), ('Sami (Southern) - Norway', 'sma-NO'), ('Sami (Southern) - Sweden', 'sma-SE'), ('Sango', 'sg'), ('Sango - Central African Republic', 'sg-CF'), ('Sangu', 'sbp'), ('Sangu - Tanzania', 'sbp-TZ'), ('Sanskrit', 'sa'), ('Sanskrit - India', 'sa-IN'), ('Scottish Gaelic', 'gd'), ('Scottish Gaelic - United Kingdom', 'gd-GB'), ('Sena', 'seh'), ('Sena - Mozambique', 'seh-MZ'), ('Serbian (Cyrillic)', 'sr-Cyrl'), ('Serbian (Cyrillic) - Bosnia and Herzegovina', 'sr-Cyrl-BA'), ('Serbian (Cyrillic) - Montenegro', 'sr-Cyrl-ME'), ('Serbian (Cyrillic) - Serbia', 'sr-Cyrl-RS'), ('Serbian (Cyrillic) - Serbia and Montenegro (Former)', 'sr-Cyrl-CS'), ('Serbian (Latin)', 'sr'), ('Serbian (Latin), Latn', 'sr-Latn'), ('Serbian (Latin) - Bosnia and Herzegovina', 'sr-Latn-BA'), ('Serbian (Latin) - Montenegro', 'sr-Latn-ME'), ('Serbian (Latin) - Serbia', 'sr-Latn-RS'), ('Serbian (Latin) - Serbia and Montenegro (Former)', 'sr-Latn-CS'), ('Sesotho sa Leboa', 'nso'), ('Sesotho sa Leboa - South Africa', 'nso-ZA'), ('Setswana', 'tn'), ('Setswana - Botswana', 'tn-BW'), ('Setswana - South Africa', 'tn-ZA'), ('Shambala', 'ksb'), ('Shambala - Tanzania', 'ksb-TZ'), ('Shona', 'sn'), ('Shona - Latin', 'sn-Latn'), ('Shona - Zimbabwe', 'sn-Latn-ZW'), ('Sindhi', 'sd'), ('Sindhi, Arab', 'sd-Arab'), ('Sindhi - Islamic Republic of Pakistan', 'sd-Arab-PK'), ('Sinhala', 'si'), ('Sinhala - Sri Lanka', 'si-LK'), ('Slovak', 'sk'), ('Slovak - Slovakia', 'sk-SK'), ('Slovenian', 'sl'), ('Slovenian - Slovenia', 'sl-SI'), ('Soga', 'xog'), ('Soga - Uganda', 'xog-UG'), ('Somali', 'so'), ('Somali - Djibouti', 'so-DJ'), ('Somali - Ethiopia', 'so-ET'), ('Somali - Kenya', 'so-KE'), ('Somali - Somalia', 'so-SO'), ('Sotho', 'st'), ('Sotho - South Africa', 'st-ZA'), ('South Ndebele', 'nr'), ('South Ndebele - South Africa', 'nr-ZA'), ('Southern Sotho - Lesotho', 'st-LS'), ('Spanish', 'es'), ('Spanish - Argentina', 'es-AR'), ('Spanish - Belize', 'es-BZ'), ('Spanish - Bolivarian Republic of Venezuela', 'es-VE'), ('Spanish - Bolivia', 'es-BO'), ('Spanish - Brazil', 'es-BR'), ('Spanish - Chile', 'es-CL'), ('Spanish - Colombia', 'es-CO'), ('Spanish - Costa Rica', 'es-CR'), ('Spanish - Cuba', 'es-CU'), ('Spanish - Dominican Republic', 'es-DO'), ('Spanish - Ecuador', 'es-EC'), ('Spanish - El Salvador', 'es-SV'), ('Spanish - Equatorial Guinea', 'es-GQ'), ('Spanish - Guatemala', 'es-GT'), ('Spanish - Honduras', 'es-HN'), ('Spanish - Latin America', 'es-419'), ('Spanish - Mexico', 'es-MX'), ('Spanish - Nicaragua', 'es-NI'), ('Spanish - Panama', 'es-PA'), ('Spanish - Paraguay', 'es-PY'), ('Spanish - Peru', 'es-PE'), ('Spanish - Philippines', 'es-PH'), ('Spanish - Puerto Rico', 'es-PR'), ('Spanish - Spain', 'es-ES'), ('Spanish - Spain, ES_tradnl', 'es-ES_tradnl'), ('Spanish - United - States', 'es-US'), ('Spanish - Uruguay', 'es-UY'), ('Standard Moroccan Tamazight', 'zgh'), ('Standard Moroccan Tamazight - Morocco', 'zgh-Tfng-MA'), ('Standard Moroccan Tamazight - Tifinagh', 'zgh-Tfng'), ('Swati', 'ss'), ('Swati - South Africa', 'ss-ZA'), ('Swati - Swaziland', 'ss-SZ'), ('Swedish', 'sv'), ('Swedish - Åland Islands', 'sv-AX'), ('Swedish - Finland', 'sv-FI'), ('Swedish - Sweden', 'sv-SE'), ('Syriac', 'syr'), ('Syriac - Syria', 'syr-SY'), ('Tachelhit', 'shi'), ('Tachelhit - Tifinagh', 'shi-Tfng'), ('Tachelhit - Tifinagh, Morocco', 'shi-Tfng-MA'), ('Tachelhit (Latin)', 'shi-Latn'), ('Tachelhit (Latin) - Morocco', 'shi-Latn-MA'), ('Taita', 'dav'), ('Taita - Kenya', 'dav-KE'), ('Tajik (Cyrillic)', 'tg'), ('Tajik (Cyrillic), Cyrl', 'tg-Cyrl'), ('Tajik (Cyrillic) - Tajikistan', 'tg-Cyrl-TJ'), ('Tamazight (Latin)', 'tzm'), ('Tamazight (Latin), Latn', 'tzm-Latn'), ('Tamazight (Latin) - Algeria', 'tzm-Latn-DZ'), ('Tamil', 'ta'), ('Tamil - India', 'ta-IN'), ('Tamil - Malaysia', 'ta-MY'), ('Tamil - Singapore', 'ta-SG'), ('Tamil - Sri Lanka', 'ta-LK'), ('Tasawaq', 'twq'), ('Tasawaq - Niger', 'twq-NE'), ('Tatar', 'tt'), ('Tatar - Russia', 'tt-RU'), ('Telugu', 'te'), ('Telugu - India', 'te-IN'), ('Teso', 'teo'), ('Teso - Kenya', 'teo-KE'), ('Teso - Uganda', 'teo-UG'), ('Thai', 'th'), ('Thai - Thailand', 'th-TH'), ('Tibetan', 'bo'), ('Tibetan - India', 'bo-IN'), ("Tibetan - People's Republic of China", 'bo-CN'), ('Tigre', 'tig'), ('Tigre - Eritrea', 'tig-ER'), ('Tigrinya', 'ti'), ('Tigrinya - Eritrea', 'ti-ER'), ('Tigrinya - Ethiopia', 'ti-ET'), ('Tongan', 'to'), ('Tongan - Tonga', 'to-TO'), ('Tsonga', 'ts'), ('Tsonga - South Africa', 'ts-ZA'), ('Turkish', 'tr'), ('Turkish - Cyprus', 'tr-CY'), ('Turkish - Turkey', 'tr-TR'), ('Turkmen', 'tk'), ('Turkmen - Turkmenistan', 'tk-TM'), ('Ukrainian', 'uk'), ('Ukrainian - Ukraine', 'uk-UA'), ('Upper Sorbian', 'hsb'), ('Upper Sorbian - Germany', 'hsb-DE'), ('Urdu', 'ur'), ('Urdu - India', 'ur-IN'), ('Urdu - Islamic Republic of Pakistan', 'ur-PK'), ('Uyghur', 'ug'), ("Uyghur - People's Republic of China", 'ug-CN'), ('Uzbek - Perso-Arabic', 'uz-Arab'), ('Uzbek - Perso-Arabic, Afghanistan', 'uz-Arab-AF'), ('Uzbek (Cyrillic)', 'uz-Cyrl'), ('Uzbek (Cyrillic) - Uzbekistan', 'uz-Cyrl-UZ'), ('Uzbek (Latin)', 'uz'), ('Uzbek (Latin), Latn', 'uz-Latn'), ('Uzbek (Latin) - Uzbekistan', 'uz-Latn-UZ'), ('Vai', 'vai'), ('Vai, Vaii', 'vai-Vaii'), ('Vai - Liberia', 'vai-Vaii-LR'), ('Vai (Latin) - Liberia', 'vai-Latn-LR'), ('Vai (Latin)', 'vai-Latn'), ('Valencian - Spain', 'ca-ES-valencia'), ('Venda', 've'), ('Venda - South Africa', 've-ZA'), ('Vietnamese', 'vi'), ('Vietnamese - Vietnam', 'vi-VN'), ('Volapük', 'vo'), ('Volapük - World', 'vo-001'), ('Vunjo', 'vun'), ('Vunjo - Tanzania', 'vun-TZ'), ('Walser', 'wae'), ('Walser - Switzerland', 'wae-CH'), ('Welsh', 'cy'), ('Welsh - United Kingdom', 'cy-GB'), ('Wolaytta', 'wal'), ('Wolaytta - Ethiopia', 'wal-ET'), ('Wolof', 'wo'), ('Wolof - Senegal', 'wo-SN'), ('Xhosa', 'xh'), ('Xhosa - South Africa', 'xh-ZA'), ('Yangben', 'yav'), ('Yangben - Cameroon', 'yav-CM'), ('Yi', 'ii'), ("Yi - People's Republic of China", 'ii-CN'), ('Yoruba', 'yo'), ('Yoruba - Benin', 'yo-BJ'), ('Yoruba - Nigeria', 'yo-NG'), ('Zarma', 'dje'), ('Zarma - Niger', 'dje-NE'), ('Zulu', 'zu'), ('Zulu - South Africa', 'zu-ZA')], default='en', help_text='Required if type is "Subtitle"', max_length=50, unique=True)),
('video', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tracks', to='wagtailvideos.Video')),
],
options={
'abstract': False,
},
),
]
# Generated by Django 2.2.17 on 2021-01-28 23:40
from django.db import migrations, models
import django.db.models.deletion
import modelcluster.fields
import wagtailvideos.models
class Migration(migrations.Migration):
dependencies = [
('app', '0004_tracks'),
('wagtailvideos', '0010_video_ordering'),
]
operations = [
migrations.CreateModel(
name='TrackListing',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('video', models.OneToOneField(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='tracks', to='app.CustomVideoModel')),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='VideoTrack',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('file', models.FileField(upload_to=wagtailvideos.models.get_upload_to, verbose_name='file')),
('kind', models.CharField(choices=[('subtitles', 'Subtitles'), ('captions', 'Captions'), ('descriptions', 'Descriptions'), ('chapters', 'Chapters'), ('metadata', 'Metadata')], default='subtitles', max_length=50)),
('label', models.CharField(blank=True, help_text='A user-readable title of the text track.', max_length=255)),
('language', models.CharField(blank=True, choices=[('aa', 'Afar'), ('aa-DJ', 'Afar - Djibouti'), ('aa-ER', 'Afar - Eritrea'), ('aa-ET', 'Afar - Ethiopia'), ('af', 'Afrikaans'), ('af-NA', 'Afrikaans - Namibia'), ('af-ZA', 'Afrikaans - South Africa'), ('agq', 'Aghem'), ('agq-CM', 'Aghem - Cameroon'), ('ak', 'Akan'), ('ak-GH', 'Akan - Ghana'), ('sq', 'Albanian'), ('sq-AL', 'Albanian - Albania'), ('sq-MK', 'Albanian - North Macedonia'), ('gsw', 'Alsatian'), ('gsw-FR', 'Alsatian - France'), ('gsw-LI', 'Alsatian - Liechtenstein'), ('gsw-CH', 'Alsatian - Switzerland'), ('am', 'Amharic'), ('am-ET', 'Amharic - Ethiopia'), ('ar', 'Arabic'), ('ar-DZ', 'Arabic - Algeria'), ('ar-BH', 'Arabic - Bahrain'), ('ar-TD', 'Arabic - Chad'), ('ar-KM', 'Arabic - Comoros'), ('ar-DJ', 'Arabic - Djibouti'), ('ar-EG', 'Arabic - Egypt'), ('ar-ER', 'Arabic - Eritrea'), ('ar-IQ', 'Arabic - Iraq'), ('ar-IL', 'Arabic - Israel'), ('ar-JO', 'Arabic - Jordan'), ('ar-KW', 'Arabic - Kuwait'), ('ar-LB', 'Arabic - Lebanon'), ('ar-LY', 'Arabic - Libya'), ('ar-MR', 'Arabic - Mauritania'), ('ar-MA', 'Arabic - Morocco'), ('ar-OM', 'Arabic - Oman'), ('ar-PS', 'Arabic - Palestinian Authority'), ('ar-QA', 'Arabic - Qatar'), ('ar-SA', 'Arabic - Saudi Arabia'), ('ar-SO', 'Arabic - Somalia'), ('ar-SS', 'Arabic - South Sudan'), ('ar-SD', 'Arabic - Sudan'), ('ar-SY', 'Arabic - Syria'), ('ar-TN', 'Arabic - Tunisia'), ('ar-AE', 'Arabic - U.A.E.'), ('ar-001', 'Arabic - World'), ('ar-YE', 'Arabic - Yemen'), ('hy', 'Armenian'), ('hy-AM', 'Armenian - Armenia'), ('as', 'Assamese'), ('as-IN', 'Assamese - India'), ('ast', 'Asturian'), ('ast-ES', 'Asturian - Spain'), ('asa', 'Asu'), ('asa-TZ', 'Asu - Tanzania'), ('az-Cyrl', 'Azerbaijani (Cyrillic)'), ('az-Cyrl-AZ', 'Azerbaijani (Cyrillic) - Azerbaijan'), ('az', 'Azerbaijani (Latin)'), ('az-Latn', 'Azerbaijani (Latin), Latn'), ('az-Latn-AZ', 'Azerbaijani (Latin) - Azerbaijan'), ('ksf', 'Bafia'), ('ksf-CM', 'Bafia - Cameroon'), ('bm', 'Bamanankan'), ('bm-Latn-ML', 'Bamanankan (Latin) - Mali'), ('bn', 'Bangla'), ('bn-BD', 'Bangla - Bangladesh'), ('bn-IN', 'Bangla - India'), ('bas', 'Basaa'), ('bas-CM', 'Basaa - Cameroon'), ('ba', 'Bashkir'), ('ba-RU', 'Bashkir - Russia'), ('eu', 'Basque'), ('eu-ES', 'Basque - Spain'), ('be', 'Belarusian'), ('be-BY', 'Belarusian - Belarus'), ('bem', 'Bemba'), ('bem-ZM', 'Bemba - Zambia'), ('bez', 'Bena'), ('bez-TZ', 'Bena - Tanzania'), ('byn', 'Blin'), ('byn-ER', 'Blin - Eritrea'), ('brx', 'Bodo'), ('brx-IN', 'Bodo - India'), ('bs-Cyrl', 'Bosnian (Cyrillic)'), ('bs-Cyrl-BA', 'Bosnian (Cyrillic) - Bosnia and Herzegovina'), ('bs', 'Bosnian (Latin)'), ('bs-Latn', 'Bosnian (Latin), Latn'), ('bs-Latn-BA', 'Bosnian (Latin) - Bosnia and Herzegovina'), ('br', 'Breton'), ('br-FR', 'Breton - France'), ('bg', 'Bulgarian'), ('bg-BG', 'Bulgarian - Bulgaria'), ('my', 'Burmese'), ('my-MM', 'Burmese - Myanmar'), ('ca', 'Catalan'), ('ca-AD', 'Catalan - Andorra'), ('ca-FR', 'Catalan - France'), ('ca-IT', 'Catalan - Italy'), ('ca-ES', 'Catalan - Spain'), ('ceb', 'Cebuano'), ('ceb-Latn', 'Cebuan (Latin)'), ('ceb-Latn-PH', 'Cebuan (Latin) - Philippines'), ('tzm-Latn-MA', 'Central Atlas Tamazight (Latin) - Morocco'), ('ku', 'Central Kurdish'), ('ku-Arab', 'Central Kurdish, Arab'), ('ku-Arab-IQ', 'Central Kurdish - Iraq'), ('ccp', 'Chakma'), ('ccp-Cakm', 'Chakma - Chakma'), ('ccp-Cakm-BD', 'Chakma - Bangladesh'), ('ccp-Cakm-IN', 'Chakma - India'), ('cd-RU', 'Chechen - Russia'), ('chr', 'Cherokee'), ('chr-Cher', 'Cherokee, Cher'), ('chr-Cher-US', 'Cherokee - United States'), ('cgg', 'Chiga'), ('cgg-UG', 'Chiga - Uganda'), ('zh', 'Chinese (Simplified)'), ('zh-Hans', 'Chinese (Simplified), Hans'), ('zh-CN', "Chinese (Simplified) - People's Republic of China"), ('zh-SG', 'Chinese (Simplified) - Singapore'), ('zh-Hant', 'Chinese (Traditional)'), ('zh-HK', 'Chinese (Traditional) - Hong Kong S.A.R.'), ('zh-MO', 'Chinese (Traditional) - Macao S.A.R.'), ('zh-TW', 'Chinese (Traditional) - Taiwan'), ('cu-RU', 'Church Slavic - Russia'), ('swc', 'Congo Swahili'), ('swc-CD', 'Congo Swahili - Congo DRC'), ('kw', 'Cornish'), ('kw-GB', 'Cornish - United Kingdom'), ('co', 'Corsican'), ('co-FR', 'Corsican - France'), ('hr,', 'Croatian'), ('hr-HR', 'Croatian - Croatia'), ('hr-BA', 'Croatian (Latin) - Bosnia and Herzegovina'), ('cs', 'Czech'), ('cs-CZ', 'Czech - Czech Republic'), ('da', 'Danish'), ('da-DK', 'Danish - Denmark'), ('da-GL', 'Danish - Greenland'), ('prs', 'Dari'), ('prs-AF', 'Dari - Afghanistan'), ('dv', 'Divehi'), ('dv-MV', 'Divehi - Maldives'), ('dua', 'Duala'), ('dua-CM', 'Duala - Cameroon'), ('nl', 'Dutch'), ('nl-AW', 'Dutch - Aruba'), ('nl-BE', 'Dutch - Belgium'), ('nl-BQ', 'Dutch - Bonaire, Sint Eustatius and Saba'), ('nl-CW', 'Dutch - Curaçao'), ('nl-NL', 'Dutch - Netherlands'), ('nl-SX', 'Dutch - Sint Maarten'), ('nl-SR', 'Dutch - Suriname'), ('dz', 'Dzongkha'), ('dz-BT', 'Dzongkha - Bhutan'), ('ebu', 'Embu'), ('ebu-KE', 'Embu - Kenya'), ('en', 'English'), ('en-AS', 'English - American Samoa'), ('en-AI', 'English - Anguilla'), ('en-AG', 'English - Antigua and Barbuda'), ('en-AU', 'English - Australia'), ('en-AT', 'English - Austria'), ('en-BS', 'English - Bahamas'), ('en-BB', 'English - Barbados'), ('en-BE', 'English - Belgium'), ('en-BZ', 'English - Belize'), ('en-BM', 'English - Bermuda'), ('en-BW', 'English - Botswana'), ('en-IO', 'English - British Indian Ocean Territory'), ('en-VG', 'English - British Virgin Islands'), ('en-BI', 'English - Burundi'), ('en-CM', 'English - Cameroon'), ('en-CA', 'English - Canada'), ('en-029', 'English - Caribbean'), ('en-KY', 'English - Cayman Islands'), ('en-CX', 'English - Christmas Island'), ('en-CC', 'English - Cocos [Keeling] Islands'), ('en-CK', 'English - Cook Islands'), ('en-CY', 'English - Cyprus'), ('en-DK', 'English - Denmark'), ('en-DM', 'English - Dominica'), ('en-ER', 'English - Eritrea'), ('en-150', 'English - Europe'), ('en-FK', 'English - Falkland Islands'), ('en-FI', 'English - Finland'), ('en-FJ', 'English - Fiji'), ('en-GM', 'English - Gambia'), ('en-DE', 'English - Germany'), ('en-GH', 'English - Ghana'), ('en-GI', 'English - Gibraltar'), ('en-GD', 'English - Grenada'), ('en-GU', 'English - Guam'), ('en-GG', 'English - Guernsey'), ('en-GY', 'English - Guyana'), ('en-HK', 'English - Hong Kong'), ('en-IN', 'English - India'), ('en-IE', 'English - Ireland'), ('en-IM', 'English - Isle of Man'), ('en-IL', 'English - Israel'), ('en-JM', 'English - Jamaica'), ('en-JE', 'English - Jersey'), ('en-KE', 'English - Kenya'), ('en-KI', 'English - Kiribati'), ('en-LS', 'English - Lesotho'), ('en-LR', 'English - Liberia'), ('en-MO', 'English - Macao SAR'), ('en-MG', 'English - Madagascar'), ('en-MW', 'English - Malawi'), ('en-MY', 'English - Malaysia'), ('en-MT', 'English - Malta'), ('en-MH', 'English - Marshall Islands'), ('en-MU', 'English - Mauritius'), ('en-FM', 'English - Micronesia'), ('en-MS', 'English - Montserrat'), ('en-NA', 'English - Namibia'), ('en-NR', 'English - Nauru'), ('en-NL', 'English - Netherlands'), ('en-NZ', 'English - New Zealand'), ('en-NG', 'English - Nigeria'), ('en-NU', 'English - Niue'), ('en-NF', 'English - Norfolk Island'), ('en-MP', 'English - Northern Mariana Islands'), ('en-PK', 'English - Pakistan'), ('en-PW', 'English - Palau'), ('en-PG', 'English - Papua New Guinea'), ('en-PN', 'English - Pitcairn Islands'), ('en-PR', 'English - Puerto Rico'), ('en-PH', 'English - Republic of the Philippines'), ('en-RW', 'English - Rwanda'), ('en-KN', 'English - Saint Kitts and Nevis'), ('en-LC', 'English - Saint Lucia'), ('en-VC', 'English - Saint Vincent and the Grenadines'), ('en-WS', 'English - Samoa'), ('en-SC', 'English - Seychelles'), ('en-SL', 'English - Sierra Leone'), ('en-SG', 'English - Singapore'), ('en-SX', 'English - Sint Maarten'), ('en-SI', 'English - Slovenia'), ('en-SB', 'English - Solomon Islands'), ('en-ZA', 'English - South Africa'), ('en-SS', 'English - South Sudan'), ('en-SH', 'English - St Helena, Ascension, Tristan da Cunha'), ('en-SD', 'English - Sudan'), ('en-SZ', 'English - Swaziland'), ('en-SE', 'English - Sweden'), ('en-CH', 'English - Switzerland'), ('en-TZ', 'English - Tanzania'), ('en-TK', 'English - Tokelau'), ('en-TO', 'English - Tonga'), ('en-TT', 'English - Trinidad and Tobago'), ('en-TC', 'English - Turks and Caicos Islands'), ('en-TV', 'English - Tuvalu'), ('en-UG', 'English - Uganda'), ('en-AE', 'English - United Arab Emirates'), ('en-GB', 'English - United Kingdom'), ('en-US', 'English - United States'), ('en-UM', 'English - US Minor Outlying Islands'), ('en-VI', 'English - US Virgin Islands'), ('en-VU', 'English - Vanuatu'), ('en-001', 'English - World'), ('en-ZM', 'English - Zambia'), ('en-ZW', 'English - Zimbabwe'), ('eo', 'Esperanto'), ('eo-001', 'Esperanto - World'), ('et', 'Estonian'), ('et-EE', 'Estonian - Estonia'), ('ee', 'Ewe'), ('ee-GH', 'Ewe - Ghana'), ('ee-TG', 'Ewe - Togo'), ('ewo', 'Ewondo'), ('ewo-CM', 'Ewondo - Cameroon'), ('fo', 'Faroese'), ('fo-DK', 'Faroese - Denmark'), ('fo-FO', 'Faroese - Faroe Islands'), ('fil', 'Filipino'), ('fil-PH', 'Filipino - Philippines'), ('fi', 'Finnish'), ('fi-FI', 'Finnish - Finland'), ('fr', 'French'), ('fr-DZ', 'French - Algeria'), ('fr-BE', 'French - Belgium'), ('fr-BJ', 'French - Benin'), ('fr-BF', 'French - Burkina Faso'), ('fr-BI', 'French - Burundi'), ('fr-CM', 'French - Cameroon'), ('fr-CA', 'French - Canada'), ('fr-CF', 'French - Central African Republic'), ('fr-TD', 'French - Chad'), ('fr-KM', 'French - Comoros'), ('fr-CG', 'French - Congo'), ('fr-CD', 'French - Congo, DRC'), ('fr-CI', "French - Côte d'Ivoire"), ('fr-DJ', 'French - Djibouti'), ('fr-GQ', 'French - Equatorial Guinea'), ('fr-FR', 'French - France'), ('fr-GF', 'French - French Guiana'), ('fr-PF', 'French - French Polynesia'), ('fr-GA', 'French - Gabon'), ('fr-GP', 'French - Guadeloupe'), ('fr-GN', 'French - Guinea'), ('fr-HT', 'French - Haiti'), ('fr-LU', 'French - Luxembourg'), ('fr-MG', 'French - Madagascar'), ('fr-ML', 'French - Mali'), ('fr-MQ', 'French - Martinique'), ('fr-MR', 'French - Mauritania'), ('fr-MU', 'French - Mauritius'), ('fr-YT', 'French - Mayotte'), ('fr-MA', 'French - Morocco'), ('fr-NC', 'French - New Caledonia'), ('fr-NE', 'French - Niger'), ('fr-MC', 'French - Principality of Monaco'), ('fr-RE', 'French - Reunion'), ('fr-RW', 'French - Rwanda'), ('fr-BL', 'French - Saint Barthélemy'), ('fr-MF', 'French - Saint Martin'), ('fr-PM', 'French - Saint Pierre and Miquelon'), ('fr-SN', 'French - Senegal'), ('fr-SC', 'French - Seychelles'), ('fr-CH', 'French - Switzerland'), ('fr-SY', 'French - Syria'), ('fr-TG', 'French - Togo'), ('fr-TN', 'French - Tunisia'), ('fr-VU', 'French - Vanuatu'), ('fr-WF', 'French - Wallis and Futuna'), ('fy', 'Frisian'), ('fy-NL', 'Frisian - Netherlands'), ('fur', 'Friulian'), ('fur-IT', 'Friulian - Italy'), ('ff', 'Fulah'), ('ff-Latn', 'Fulah (Latin)'), ('ff-Latn-BF', 'Fulah (Latin) - Burkina Faso'), ('ff-CM', 'Fulah - Cameroon'), ('ff-Latn-CM', 'Fulah (Latin) - Cameroon'), ('ff-Latn-GM', 'Fulah (Latin) - Gambia'), ('ff-Latn-GH', 'Fulah (Latin) - Ghana'), ('ff-GN', 'Fulah - Guinea'), ('ff-Latn-GN', 'Fulah (Latin) - Guinea'), ('ff-Latn-GW', 'Fulah (Latin) - Guinea-Bissau'), ('ff-Latn-LR', 'Fulah (Latin) - Liberia'), ('ff-MR', 'Fulah - Mauritania'), ('ff-Latn-MR', 'Fulah (Latin) - Mauritania'), ('ff-Latn-NE', 'Fulah (Latin) - Niger'), ('ff-NG', 'Fulah - Nigeria'), ('ff-Latn-NG', 'Fulah (Latin) - Nigeria'), ('ff-Latn-SN', 'Fulah - Senegal'), ('ff-Latn-SL', 'Fulah (Latin) - Sierra Leone'), ('gl', 'Galician'), ('gl-ES', 'Galician - Spain'), ('lg', 'Ganda'), ('lg-UG', 'Ganda - Uganda'), ('ka', 'Georgian'), ('ka-GE', 'Georgian - Georgia'), ('de', 'German'), ('de-AT', 'German - Austria'), ('de-BE', 'German - Belgium'), ('de-DE', 'German - Germany'), ('de-IT', 'German - Italy'), ('de-LI', 'German - Liechtenstein'), ('de-LU', 'German - Luxembourg'), ('de-CH', 'German - Switzerland'), ('el', 'Greek'), ('el-CY', 'Greek - Cyprus'), ('el-GR', 'Greek - Greece'), ('kl', 'Greenlandic'), ('kl-GL', 'Greenlandic - Greenland'), ('gn', 'Guarani'), ('gn-PY', 'Guarani - Paraguay'), ('gu', 'Gujarati'), ('gu-IN', 'Gujarati - India'), ('guz', 'Gusii'), ('guz-KE', 'Gusii - Kenya'), ('ha', 'Hausa (Latin)'), ('ha-Latn', 'Hausa (Latin), Latn'), ('ha-Latn-GH', 'Hausa (Latin) - Ghana'), ('ha-Latn-NE', 'Hausa (Latin) - Niger'), ('ha-Latn-NG', 'Hausa (Latin) - Nigeria'), ('haw', 'Hawaiian'), ('haw-US', 'Hawaiian - United States'), ('he', 'Hebrew'), ('he-IL', 'Hebrew - Israel'), ('hi', 'Hindi'), ('hi-IN', 'Hindi - India'), ('hu', 'Hungarian'), ('hu-HU', 'Hungarian - Hungary'), ('is', 'Icelandic'), ('is-IS', 'Icelandic - Iceland'), ('ig', 'Igbo'), ('ig-NG', 'Igbo - Nigeria'), ('id', 'Indonesian'), ('id-ID', 'Indonesian - Indonesia'), ('ia', 'Interlingua'), ('ia-FR', 'Interlingua - France'), ('ia-001', 'Interlingua - World'), ('iu', 'Inuktitut (Latin)'), ('iu-Latn', 'Inuktitut (Latin), Latn'), ('iu-Latn-CA', 'Inuktitut (Latin) - Canada'), ('iu-Cans', 'Inuktitut (Syllabics)'), ('iu-Cans-CA', 'Inuktitut (Syllabics) - Canada'), ('ga', 'Irish'), ('ga-IE', 'Irish - Ireland'), ('it', 'Italian'), ('it-IT', 'Italian - Italy'), ('it-SM', 'Italian - San Marino'), ('it-CH', 'Italian - Switzerland'), ('it-VA', 'Italian - Vatican City'), ('ja', 'Japanese'), ('ja-JP', 'Japanese - Japan'), ('jv', 'Javanese'), ('jv-Latn', 'Javanese - Latin'), ('jv-Latn-ID', 'Javanese - Latin, Indonesia'), ('dyo', 'Jola-Fonyi'), ('dyo-SN', 'Jola-Fonyi - Senegal'), ('kea', 'Kabuverdianu'), ('kea-CV', 'Kabuverdianu - Cabo Verde'), ('kab', 'Kabyle'), ('kab-DZ', 'Kabyle - Algeria'), ('kkj', 'Kako'), ('kkj-CM', 'Kako - Cameroon'), ('kln', 'Kalenjin'), ('kln-KE', 'Kalenjin - Kenya'), ('kam', 'Kamba'), ('kam-KE', 'Kamba - Kenya'), ('kn', 'Kannada'), ('kn-IN', 'Kannada - India'), ('ks', 'Kashmiri'), ('ks-Arab', 'Kashmiri - Perso-Arabic'), ('ks-Arab-IN', 'Kashmiri - Perso-Arabic, IN'), ('kk', 'Kazakh'), ('kk-KZ', 'Kazakh - Kazakhstan'), ('km', 'Khmer'), ('km-KH', 'Khmer - Cambodia'), ('quc', "K'iche"), ('quc-Latn-GT', "K'iche - Guatemala"), ('ki', 'Kikuyu'), ('ki-KE', 'Kikuyu - Kenya'), ('rw', 'Kinyarwanda'), ('rw-RW', 'Kinyarwanda - Rwanda'), ('sw', 'Kiswahili'), ('sw-KE', 'Kiswahili - Kenya'), ('sw-TZ', 'Kiswahili - Tanzania'), ('sw-UG', 'Kiswahili - Uganda'), ('kok', 'Konkani'), ('kok-IN', 'Konkani - India'), ('ko', 'Korean'), ('ko-KR', 'Korean - Korea'), ('ko-KP', 'Korean - North Korea'), ('khq', 'Koyra Chiini'), ('khq-ML', 'Koyra Chiini - Mali'), ('ses', 'Koyraboro Senni'), ('ses-ML', 'Koyraboro Senni - Mali'), ('nmg', 'Kwasio'), ('nmg-CM', 'Kwasio - Cameroon'), ('ky', 'Kyrgyz'), ('ky-KG', 'Kyrgyz - Kyrgyzstan'), ('ku-Arab-IR', 'Kurdish - Perso-Arabic, Iran'), ('lkt', 'Lakota'), ('lkt-US', 'Lakota - United States'), ('lag', 'Langi'), ('lag-TZ', 'Langi - Tanzania'), ('lo', 'Lao'), ('lo-LA', 'Lao - Lao P.D.R.'), ('lv', 'Latvian'), ('lv-LV', 'Latvian - Latvia'), ('ln', 'Lingala'), ('ln-AO', 'Lingala - Angola'), ('ln-CF', 'Lingala - Central African Republic'), ('ln-CG', 'Lingala - Congo'), ('ln-CD', 'Lingala - Congo DRC'), ('lt', 'Lithuanian'), ('lt-LT', 'Lithuanian - Lithuania'), ('nds', 'Low German'), ('nds-DE', 'Low German - Germany'), ('nds-NL', 'Low German - Netherlands'), ('dsb', 'Lower Sorbian'), ('dsb-DE', 'Lower Sorbian - Germany'), ('lu', 'Luba-Katanga'), ('lu-CD', 'Luba-Katanga - Congo DRC'), ('luo', 'Luo'), ('luo-KE', 'Luo - Kenya'), ('lb', 'Luxembourgish'), ('lb-LU', 'Luxembourgish - Luxembourg'), ('luy', 'Luyia'), ('luy-KE', 'Luyia - Kenya'), ('mk', 'Macedonian'), ('mk-MK', 'Macedonian - North Macedonia'), ('jmc', 'Machame'), ('jmc-TZ', 'Machame - Tanzania'), ('mgh', 'Makhuwa-Meetto'), ('mgh-MZ', 'Makhuwa-Meetto - Mozambique'), ('kde', 'Makonde'), ('kde-TZ', 'Makonde - Tanzania'), ('mg', 'Malagasy'), ('mg-MG', 'Malagasy - Madagascar'), ('ms', 'Malay'), ('ms-BN', 'Malay - Brunei Darussalam'), ('ms-MY', 'Malay - Malaysia'), ('ml', 'Malayalam'), ('ml-IN', 'Malayalam - India'), ('mt', 'Maltese'), ('mt-MT', 'Maltese - Malta'), ('gv', 'Manx'), ('gv-IM', 'Manx - Isle of Man'), ('mi', 'Maori'), ('mi-NZ', 'Maori - New Zealand'), ('arn', 'Mapudungun'), ('arn-CL', 'Mapudungun - Chile'), ('mr', 'Marathi'), ('mr-IN', 'Marathi - India'), ('mas', 'Masai'), ('mas-KE', 'Masai - Kenya'), ('mas-TZ', 'Masai - Tanzania'), ('mzn-IR', 'Mazanderani - Iran'), ('mer', 'Meru'), ('mer-KE', 'Meru - Kenya'), ('mgo', "Meta'"), ('mgo-CM', "Meta' - Cameroon"), ('moh', 'Mohawk'), ('moh-CA', 'Mohawk - Canada'), ('mn', 'Mongolian (Cyrillic)'), ('mn-Cyrl', 'Mongolian (Cyrillic), Cyrl'), ('mn-MN', 'Mongolian (Cyrillic) - Mongolia'), ('mn-Mong', 'Mongolian (Traditional Mongolian)'), ('mn-Mong-CN', "Mongolian (Traditional Mongolian) - People's Republic of China"), ('mn-Mong-MN', 'Mongolian (Traditional Mongolian) - Mongolia'), ('mfe', 'Morisyen'), ('mfe-MU', 'Morisyen - Mauritius'), ('mua', 'Mundang'), ('mua-CM', 'Mundang - Cameroon'), ('nqo', "N'ko"), ('nqo-GN', "N'ko - Guinea"), ('naq', 'Nama'), ('naq-NA', 'Nama - Namibia'), ('ne', 'Nepali'), ('ne-IN', 'Nepali - India'), ('ne-NP', 'Nepali - Nepal'), ('nnh', 'Ngiemboon'), ('nnh-CM', 'Ngiemboon - Cameroon'), ('jgo', 'Ngomba'), ('jgo-CM', 'Ngomba - Cameroon'), ('lrc-IQ', 'Northern Luri - Iraq'), ('lrc-IR', 'Northern Luri - Iran'), ('nd', 'North Ndebele'), ('nd-ZW', 'North Ndebele - Zimbabwe'), ('no', 'Norwegian (Bokmal)'), ('nb', 'Norwegian (Bokmal), nb'), ('nb-NO', 'Norwegian (Bokmal) - Norway'), ('nn', 'Norwegian (Nynorsk)'), ('nn-NO', 'Norwegian (Nynorsk) - Norway'), ('nb-SJ', 'Norwegian Bokmål - Svalbard and Jan Mayen'), ('nus', 'Nuer'), ('nus-SD', 'Nuer - Sudan'), ('nus-SS', 'Nuer - South Sudan'), ('nyn', 'Nyankole'), ('nyn-UG', 'Nyankole - Uganda'), ('oc', 'Occitan'), ('oc-FR', 'Occitan - France'), ('or', 'Odia'), ('or-IN', 'Odia - India'), ('om', 'Oromo'), ('om-ET', 'Oromo - Ethiopia'), ('om-KE', 'Oromo - Kenya'), ('os', 'Ossetian'), ('os-GE', 'Ossetian - Cyrillic, Georgia'), ('os-RU', 'Ossetian - Cyrillic, Russia'), ('ps', 'Pashto'), ('ps-AF', 'Pashto - Afghanistan'), ('ps-PK', 'Pashto - Pakistan'), ('fa', 'Persian'), ('fa-AF', 'Persian - Afghanistan'), ('fa-IR', 'Persian - Iran'), ('pl', 'Polish'), ('pl-PL', 'Polish - Poland'), ('pt', 'Portuguese'), ('pt-AO', 'Portuguese - Angola'), ('pt-BR', 'Portuguese - Brazil'), ('pt-CV', 'Portuguese - Cabo Verde'), ('pt-GQ', 'Portuguese - Equatorial Guinea'), ('pt-GW', 'Portuguese - Guinea-Bissau'), ('pt-LU', 'Portuguese - Luxembourg'), ('pt-MO', 'Portuguese - Macao SAR'), ('pt-MZ', 'Portuguese - Mozambique'), ('pt-PT', 'Portuguese - Portugal'), ('pt-ST', 'Portuguese - São Tomé and Príncipe'), ('pt-CH', 'Portuguese - Switzerland'), ('pt-TL', 'Portuguese - Timor-Leste'), ('prg-001', 'Prussian'), ('qps-ploca', 'Pseudo Language - Pseudo locale for east Asian/complex script localization testing'), ('qps-ploc', 'Pseudo Language - Pseudo locale used for localization testing'), ('qps-plocm', 'Pseudo Language - Pseudo locale used for localization testing of mirroredlocales'), ('pa', 'Punjabi'), ('pa-Arab', 'Punjabi, Arab'), ('pa-IN', 'Punjabi - India'), ('pa-Arab-PK', 'Punjabi - Islamic Republic of Pakistan'), ('quz', 'Quechua'), ('quz-BO', 'Quechua - Bolivia'), ('quz-EC', 'Quechua - Ecuador'), ('quz-PE', 'Quechua - Peru'), ('ksh', 'Ripuarian'), ('ksh-DE', 'Ripuarian - Germany'), ('ro', 'Romanian'), ('ro-MD', 'Romanian - Moldova'), ('ro-RO', 'Romanian - Romania'), ('rm', 'Romansh'), ('rm-CH', 'Romansh - Switzerland'), ('rof', 'Rombo'), ('rof-TZ', 'Rombo - Tanzania'), ('rn', 'Rundi'), ('rn-BI', 'Rundi - Burundi'), ('ru', 'Russian'), ('ru-BY', 'Russian - Belarus'), ('ru-KZ', 'Russian - Kazakhstan'), ('ru-KG', 'Russian - Kyrgyzstan'), ('ru-MD', 'Russian - Moldova'), ('ru-RU', 'Russian - Russia'), ('ru-UA', 'Russian - Ukraine'), ('rwk', 'Rwa'), ('rwk-TZ', 'Rwa - Tanzania'), ('ssy', 'Saho'), ('ssy-ER', 'Saho - Eritrea'), ('sah', 'Sakha'), ('sah-RU', 'Sakha - Russia'), ('saq', 'Samburu'), ('saq-KE', 'Samburu - Kenya'), ('smn', 'Sami (Inari)'), ('smn-FI', 'Sami (Inari) - Finland'), ('smj', 'Sami (Lule)'), ('smj-NO', 'Sami (Lule) - Norway'), ('smj-SE', 'Sami (Lule) - Sweden'), ('se', 'Sami (Northern)'), ('se-FI', 'Sami (Northern) - Finland'), ('se-NO', 'Sami (Northern) - Norway'), ('se-SE', 'Sami (Northern) - Sweden'), ('sms', 'Sami (Skolt)'), ('sms-FI', 'Sami (Skolt) - Finland'), ('sma', 'Sami (Southern)'), ('sma-NO', 'Sami (Southern) - Norway'), ('sma-SE', 'Sami (Southern) - Sweden'), ('sg', 'Sango'), ('sg-CF', 'Sango - Central African Republic'), ('sbp', 'Sangu'), ('sbp-TZ', 'Sangu - Tanzania'), ('sa', 'Sanskrit'), ('sa-IN', 'Sanskrit - India'), ('gd', 'Scottish Gaelic'), ('gd-GB', 'Scottish Gaelic - United Kingdom'), ('seh', 'Sena'), ('seh-MZ', 'Sena - Mozambique'), ('sr-Cyrl', 'Serbian (Cyrillic)'), ('sr-Cyrl-BA', 'Serbian (Cyrillic) - Bosnia and Herzegovina'), ('sr-Cyrl-ME', 'Serbian (Cyrillic) - Montenegro'), ('sr-Cyrl-RS', 'Serbian (Cyrillic) - Serbia'), ('sr-Cyrl-CS', 'Serbian (Cyrillic) - Serbia and Montenegro (Former)'), ('sr', 'Serbian (Latin)'), ('sr-Latn', 'Serbian (Latin), Latn'), ('sr-Latn-BA', 'Serbian (Latin) - Bosnia and Herzegovina'), ('sr-Latn-ME', 'Serbian (Latin) - Montenegro'), ('sr-Latn-RS', 'Serbian (Latin) - Serbia'), ('sr-Latn-CS', 'Serbian (Latin) - Serbia and Montenegro (Former)'), ('nso', 'Sesotho sa Leboa'), ('nso-ZA', 'Sesotho sa Leboa - South Africa'), ('tn', 'Setswana'), ('tn-BW', 'Setswana - Botswana'), ('tn-ZA', 'Setswana - South Africa'), ('ksb', 'Shambala'), ('ksb-TZ', 'Shambala - Tanzania'), ('sn', 'Shona'), ('sn-Latn', 'Shona - Latin'), ('sn-Latn-ZW', 'Shona - Zimbabwe'), ('sd', 'Sindhi'), ('sd-Arab', 'Sindhi, Arab'), ('sd-Arab-PK', 'Sindhi - Islamic Republic of Pakistan'), ('si', 'Sinhala'), ('si-LK', 'Sinhala - Sri Lanka'), ('sk', 'Slovak'), ('sk-SK', 'Slovak - Slovakia'), ('sl', 'Slovenian'), ('sl-SI', 'Slovenian - Slovenia'), ('xog', 'Soga'), ('xog-UG', 'Soga - Uganda'), ('so', 'Somali'), ('so-DJ', 'Somali - Djibouti'), ('so-ET', 'Somali - Ethiopia'), ('so-KE', 'Somali - Kenya'), ('so-SO', 'Somali - Somalia'), ('st', 'Sotho'), ('st-ZA', 'Sotho - South Africa'), ('nr', 'South Ndebele'), ('nr-ZA', 'South Ndebele - South Africa'), ('st-LS', 'Southern Sotho - Lesotho'), ('es', 'Spanish'), ('es-AR', 'Spanish - Argentina'), ('es-BZ', 'Spanish - Belize'), ('es-VE', 'Spanish - Bolivarian Republic of Venezuela'), ('es-BO', 'Spanish - Bolivia'), ('es-BR', 'Spanish - Brazil'), ('es-CL', 'Spanish - Chile'), ('es-CO', 'Spanish - Colombia'), ('es-CR', 'Spanish - Costa Rica'), ('es-CU', 'Spanish - Cuba'), ('es-DO', 'Spanish - Dominican Republic'), ('es-EC', 'Spanish - Ecuador'), ('es-SV', 'Spanish - El Salvador'), ('es-GQ', 'Spanish - Equatorial Guinea'), ('es-GT', 'Spanish - Guatemala'), ('es-HN', 'Spanish - Honduras'), ('es-419', 'Spanish - Latin America'), ('es-MX', 'Spanish - Mexico'), ('es-NI', 'Spanish - Nicaragua'), ('es-PA', 'Spanish - Panama'), ('es-PY', 'Spanish - Paraguay'), ('es-PE', 'Spanish - Peru'), ('es-PH', 'Spanish - Philippines'), ('es-PR', 'Spanish - Puerto Rico'), ('es-ES', 'Spanish - Spain'), ('es-ES_tradnl', 'Spanish - Spain, ES_tradnl'), ('es-US', 'Spanish - United - States'), ('es-UY', 'Spanish - Uruguay'), ('zgh', 'Standard Moroccan Tamazight'), ('zgh-Tfng-MA', 'Standard Moroccan Tamazight - Morocco'), ('zgh-Tfng', 'Standard Moroccan Tamazight - Tifinagh'), ('ss', 'Swati'), ('ss-ZA', 'Swati - South Africa'), ('ss-SZ', 'Swati - Swaziland'), ('sv', 'Swedish'), ('sv-AX', 'Swedish - Åland Islands'), ('sv-FI', 'Swedish - Finland'), ('sv-SE', 'Swedish - Sweden'), ('syr', 'Syriac'), ('syr-SY', 'Syriac - Syria'), ('shi', 'Tachelhit'), ('shi-Tfng', 'Tachelhit - Tifinagh'), ('shi-Tfng-MA', 'Tachelhit - Tifinagh, Morocco'), ('shi-Latn', 'Tachelhit (Latin)'), ('shi-Latn-MA', 'Tachelhit (Latin) - Morocco'), ('dav', 'Taita'), ('dav-KE', 'Taita - Kenya'), ('tg', 'Tajik (Cyrillic)'), ('tg-Cyrl', 'Tajik (Cyrillic), Cyrl'), ('tg-Cyrl-TJ', 'Tajik (Cyrillic) - Tajikistan'), ('tzm', 'Tamazight (Latin)'), ('tzm-Latn', 'Tamazight (Latin), Latn'), ('tzm-Latn-DZ', 'Tamazight (Latin) - Algeria'), ('ta', 'Tamil'), ('ta-IN', 'Tamil - India'), ('ta-MY', 'Tamil - Malaysia'), ('ta-SG', 'Tamil - Singapore'), ('ta-LK', 'Tamil - Sri Lanka'), ('twq', 'Tasawaq'), ('twq-NE', 'Tasawaq - Niger'), ('tt', 'Tatar'), ('tt-RU', 'Tatar - Russia'), ('te', 'Telugu'), ('te-IN', 'Telugu - India'), ('teo', 'Teso'), ('teo-KE', 'Teso - Kenya'), ('teo-UG', 'Teso - Uganda'), ('th', 'Thai'), ('th-TH', 'Thai - Thailand'), ('bo', 'Tibetan'), ('bo-IN', 'Tibetan - India'), ('bo-CN', "Tibetan - People's Republic of China"), ('tig', 'Tigre'), ('tig-ER', 'Tigre - Eritrea'), ('ti', 'Tigrinya'), ('ti-ER', 'Tigrinya - Eritrea'), ('ti-ET', 'Tigrinya - Ethiopia'), ('to', 'Tongan'), ('to-TO', 'Tongan - Tonga'), ('ts', 'Tsonga'), ('ts-ZA', 'Tsonga - South Africa'), ('tr', 'Turkish'), ('tr-CY', 'Turkish - Cyprus'), ('tr-TR', 'Turkish - Turkey'), ('tk', 'Turkmen'), ('tk-TM', 'Turkmen - Turkmenistan'), ('uk', 'Ukrainian'), ('uk-UA', 'Ukrainian - Ukraine'), ('hsb', 'Upper Sorbian'), ('hsb-DE', 'Upper Sorbian - Germany'), ('ur', 'Urdu'), ('ur-IN', 'Urdu - India'), ('ur-PK', 'Urdu - Islamic Republic of Pakistan'), ('ug', 'Uyghur'), ('ug-CN', "Uyghur - People's Republic of China"), ('uz-Arab', 'Uzbek - Perso-Arabic'), ('uz-Arab-AF', 'Uzbek - Perso-Arabic, Afghanistan'), ('uz-Cyrl', 'Uzbek (Cyrillic)'), ('uz-Cyrl-UZ', 'Uzbek (Cyrillic) - Uzbekistan'), ('uz', 'Uzbek (Latin)'), ('uz-Latn', 'Uzbek (Latin), Latn'), ('uz-Latn-UZ', 'Uzbek (Latin) - Uzbekistan'), ('vai', 'Vai'), ('vai-Vaii', 'Vai, Vaii'), ('vai-Vaii-LR', 'Vai - Liberia'), ('vai-Latn-LR', 'Vai (Latin) - Liberia'), ('vai-Latn', 'Vai (Latin)'), ('ca-ES-valencia', 'Valencian - Spain'), ('ve', 'Venda'), ('ve-ZA', 'Venda - South Africa'), ('vi', 'Vietnamese'), ('vi-VN', 'Vietnamese - Vietnam'), ('vo', 'Volapük'), ('vo-001', 'Volapük - World'), ('vun', 'Vunjo'), ('vun-TZ', 'Vunjo - Tanzania'), ('wae', 'Walser'), ('wae-CH', 'Walser - Switzerland'), ('cy', 'Welsh'), ('cy-GB', 'Welsh - United Kingdom'), ('wal', 'Wolaytta'), ('wal-ET', 'Wolaytta - Ethiopia'), ('wo', 'Wolof'), ('wo-SN', 'Wolof - Senegal'), ('xh', 'Xhosa'), ('xh-ZA', 'Xhosa - South Africa'), ('yav', 'Yangben'), ('yav-CM', 'Yangben - Cameroon'), ('ii', 'Yi'), ('ii-CN', "Yi - People's Republic of China"), ('yo', 'Yoruba'), ('yo-BJ', 'Yoruba - Benin'), ('yo-NG', 'Yoruba - Nigeria'), ('dje', 'Zarma'), ('dje-NE', 'Zarma - Niger'), ('zu', 'Zulu'), ('zu-ZA', 'Zulu - South Africa')], default='en', help_text='Required if type is "Subtitle"', max_length=50, unique=True)),
('listing', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='tracks', to='wagtailvideos.TrackListing')),
],
),
]
from wagtailvideos import get_video_model_string
from modelcluster.models import ClusterableModel
from modelcluster.fields import ParentalKey
import logging import logging
import mimetypes import mimetypes
import os import os
...@@ -73,7 +76,7 @@ def get_upload_to(instance, filename): ...@@ -73,7 +76,7 @@ def get_upload_to(instance, filename):
return instance.get_upload_to(filename) return instance.get_upload_to(filename)
class AbstractVideo(CollectionMember, index.Indexed, models.Model): class AbstractVideo(CollectionMember, index.Indexed, ClusterableModel):
title = models.CharField(max_length=255, verbose_name=_('title')) title = models.CharField(max_length=255, verbose_name=_('title'))
file = models.FileField( file = models.FileField(
verbose_name=_('file'), upload_to=get_upload_to) verbose_name=_('file'), upload_to=get_upload_to)
...@@ -314,8 +317,18 @@ class VideoTranscode(AbstractVideoTranscode): ...@@ -314,8 +317,18 @@ class VideoTranscode(AbstractVideoTranscode):
) )
class AbstractTrack(models.Model): class TrackListing(ClusterableModel):
# TODO move to TextChoices once djang0 < 3 is dropped video = models.OneToOneField(
get_video_model_string(), on_delete=models.CASCADE,
related_name='tracks')
def __str__(self):
return self.video.title
class VideoTrack(models.Model):
listing = ParentalKey(TrackListing, related_name='tracks', on_delete=models.CASCADE)
# TODO move to TextChoices once django < 3 is dropped
track_kinds = [ track_kinds = [
('subtitles', 'Subtitles'), ('subtitles', 'Subtitles'),
('captions', 'Captions'), ('captions', 'Captions'),
...@@ -345,10 +358,3 @@ class AbstractTrack(models.Model): ...@@ -345,10 +358,3 @@ class AbstractTrack(models.Model):
folder_name = 'video_tracks' folder_name = 'video_tracks'
filename = self.file.field.storage.get_valid_name(filename) filename = self.file.field.storage.get_valid_name(filename)
return os.path.join(folder_name, filename) return os.path.join(folder_name, filename)
class Meta:
abstract = True
class Track(AbstractTrack):
video = models.ForeignKey(Video, related_name='tracks', on_delete=models.CASCADE)
...@@ -6,6 +6,7 @@ from django.db import transaction ...@@ -6,6 +6,7 @@ from django.db import transaction
from django.db.models.signals import post_delete, post_save from django.db.models.signals import post_delete, post_save
from wagtailvideos import ffmpeg, get_video_model from wagtailvideos import ffmpeg, get_video_model
from wagtailvideos.models import VideoTrack
@contextmanager @contextmanager
...@@ -47,7 +48,7 @@ def video_post_save(instance, **kwargs): ...@@ -47,7 +48,7 @@ def video_post_save(instance, **kwargs):
if hasattr(instance, '_from_signal'): if hasattr(instance, '_from_signal'):
# Sender was us, don't run post save # Sender was us, don't run post save
return return
has_changed = instance._initial_file is not instance.file has_changed = instance._initial_file is not instance.file
filled_out = instance.thumbnail is not None and instance.duration is not None filled_out = instance.thumbnail is not None and instance.duration is not None
if has_changed or not filled_out: if has_changed or not filled_out:
...@@ -67,10 +68,8 @@ def video_post_save(instance, **kwargs): ...@@ -67,10 +68,8 @@ def video_post_save(instance, **kwargs):
def register_signal_handlers(): def register_signal_handlers():
Video = get_video_model() Video = get_video_model()
VideoTranscode = Video.get_transcode_model() VideoTranscode = Video.get_transcode_model()
VideoTrack = Video.get_track_model()
post_save.connect(video_post_save, sender=Video) post_save.connect(video_post_save, sender=Video)
post_delete.connect(post_delete_file_cleanup, sender=Video) post_delete.connect(post_delete_file_cleanup, sender=Video)
post_delete.connect(post_delete_file_cleanup, sender=VideoTranscode) post_delete.connect(post_delete_file_cleanup, sender=VideoTranscode)
post_delete.connect(post_delete_file_cleanup, sender=VideoTrack) post_delete.connect(post_delete_file_cleanup, sender=VideoTrack)
...@@ -41,6 +41,9 @@ ...@@ -41,6 +41,9 @@
{% include "wagtailadmin/shared/field_as_li.html" with li_classes="label-above label-uppercase" %} {% include "wagtailadmin/shared/field_as_li.html" with li_classes="label-above label-uppercase" %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</ul>
<h2 class="u-text-transform-uppercase">Tracks</h2>
<p>Add/edit subtitles or accessibility captions for you video. For information about the filetype that should be used see the mozilla docs on <a href="https://developer.mozilla.org/en-US/docs/Web/API/WebVTT_API">WebVTT</a></p>
<li> <li>
<input type="submit" class="button" value="{% trans 'Save' %}" /> {% if user_can_delete %} <input type="submit" class="button" value="{% trans 'Save' %}" /> {% if user_can_delete %}
<a href="{% url 'wagtailvideos:delete' video.id %}" class="button button-secondary no">{% trans "Delete video" %}</a> {% endif %} <a href="{% url 'wagtailvideos:delete' video.id %}" class="button button-secondary no">{% trans "Delete video" %}</a> {% endif %}
...@@ -76,10 +79,10 @@ ...@@ -76,10 +79,10 @@
</div> </div>
<div class="row" style='margin-top: 2em;'> <div class="row" style='margin-top: 2em;'>
{% if can_transcode %} {% if can_transcode %}
<h3 class="label no-float u-text-transform-uppercase">Transcodes</h3> <h2 class="u-text-transform-uppercase">Transcodes</h2>
<p>If you wish to generate HTML5 compliant transcodes use the form below. This may take a while depending on the length of the video.</p> <p>If you wish to generate HTML5 compliant transcodes use the form below. This may take a while depending on the length of the video.</p>
{% if transcodes %} {% if transcodes %}
<h3 class="label no-float u-text-transform-uppercase">Available Transcodes</h3> <h3 class="u-text-transform-uppercase">Available Transcodes</h3>
<ul> <ul>
{% for transcode in transcodes %} {% for transcode in transcodes %}
<li> <li>
...@@ -93,7 +96,7 @@ ...@@ -93,7 +96,7 @@
{% endfor %} {% endfor %}
</ul> </ul>
{% endif %} {% endif %}
<h3 class="label no-float u-text-transform-uppercase">Create transcode</h3> <h3 class="u-text-transform-uppercase">Create transcode</h3>
<form action="{% url 'wagtailvideos:create_transcode' video.id %}" method="POST"> <form action="{% url 'wagtailvideos:create_transcode' video.id %}" method="POST">
<ul class="fields"> <ul class="fields">
{% csrf_token %} {% csrf_token %}
......
...@@ -2,16 +2,16 @@ from distutils.version import LooseVersion ...@@ -2,16 +2,16 @@ from distutils.version import LooseVersion
import wagtail import wagtail
from django.core.paginator import Paginator from django.core.paginator import Paginator
from django.http import HttpResponseNotAllowed
from django.shortcuts import get_object_or_404, redirect, render from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse from django.urls import reverse
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django.views.decorators.http import require_POST
from django.views.decorators.vary import vary_on_headers from django.views.decorators.vary import vary_on_headers
from wagtail.admin import messages from wagtail.admin import messages
from wagtail.admin.forms.search import SearchForm from wagtail.admin.forms.search import SearchForm
from wagtail.core.models import Collection from wagtail.core.models import Collection
from wagtail.search.backends import get_search_backends from wagtail.search.backends import get_search_backends
from django.forms import modelformset_factory
from wagtailvideos import ffmpeg, get_video_model from wagtailvideos import ffmpeg, get_video_model
from wagtailvideos.forms import VideoTranscodeAdminForm, get_video_form from wagtailvideos.forms import VideoTranscodeAdminForm, get_video_form
from wagtailvideos.permissions import permission_policy from wagtailvideos.permissions import permission_policy
...@@ -104,10 +104,7 @@ def edit(request, video_id): ...@@ -104,10 +104,7 @@ def edit(request, video_id):
for backend in get_search_backends(): for backend in get_search_backends():
backend.add(video) backend.add(video)
messages.success(request, _("Video '{0}' updated.").format(video.title), buttons=[ messages.success(request, _("Video '{0}' updated.").format(video.title))
messages.button(reverse('wagtailvideos:edit', args=(video.id,)), _('Edit again'))
])
return redirect('wagtailvideos:index')
else: else:
messages.error(request, _("The video could not be saved due to errors.")) messages.error(request, _("The video could not be saved due to errors."))
else: else:
...@@ -121,9 +118,6 @@ def edit(request, video_id): ...@@ -121,9 +118,6 @@ def edit(request, video_id):
messages.button(reverse('wagtailvideos:delete', args=(video.id,)), _('Delete')) messages.button(reverse('wagtailvideos:delete', args=(video.id,)), _('Delete'))
]) ])
Track = Video.get_track_model()
TrackFormset = modelformset_factory(Track, exclude=('video',))
return render(request, "wagtailvideos/videos/edit.html", { return render(request, "wagtailvideos/videos/edit.html", {
'video': video, 'video': video,
'form': form, 'form': form,
...@@ -131,14 +125,12 @@ def edit(request, video_id): ...@@ -131,14 +125,12 @@ def edit(request, video_id):
'can_transcode': ffmpeg.installed(), 'can_transcode': ffmpeg.installed(),
'transcodes': video.transcodes.all(), 'transcodes': video.transcodes.all(),
'transcode_form': VideoTranscodeAdminForm(video=video), 'transcode_form': VideoTranscodeAdminForm(video=video),
'track_formset': TrackFormset(queryset=video.tracks.all()),
'user_can_delete': permission_policy.user_has_permission_for_instance(request.user, 'delete', video) 'user_can_delete': permission_policy.user_has_permission_for_instance(request.user, 'delete', video)
}) })
@require_POST
def create_transcode(request, video_id): def create_transcode(request, video_id):
if request.method != 'POST':
return HttpResponseNotAllowed(['POST'])
video = get_object_or_404(get_video_model(), id=video_id) video = get_object_or_404(get_video_model(), id=video_id)
transcode_form = VideoTranscodeAdminForm(data=request.POST, video=video) transcode_form = VideoTranscodeAdminForm(data=request.POST, video=video)
...@@ -193,13 +185,13 @@ def add(request): ...@@ -193,13 +185,13 @@ def add(request):
}) })
def usage(request, image_id): def usage(request, video_id):
image = get_object_or_404(get_video_model(), id=image_id) video = get_object_or_404(get_video_model(), id=video_id)
paginator = Paginator(image.get_usage(), per_page=12) paginator = Paginator(video.get_usage(), per_page=12)
page = paginator.get_page(request.GET.get('p')) page = paginator.get_page(request.GET.get('p'))
return render(request, "wagtailvideos/videos/usage.html", { return render(request, "wagtailvideos/videos/usage.html", {
'image': image, 'video': video,
'used_by': page 'used_by': page
}) })
from wagtail.admin.edit_handlers import InlinePanel
from wagtailvideos.edit_handlers import VideoChooserPanel
from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register
from django.conf.urls import include, url from django.conf.urls import include, url
from django.templatetags.static import static
from django.urls import reverse from django.urls import reverse
from django.utils.html import format_html from django.utils.html import format_html
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from wagtail.admin.menu import MenuItem, SubmenuMenuItem, Menu from wagtail.admin.menu import Menu, MenuItem, SubmenuMenuItem
from wagtail.admin.search import SearchArea from wagtail.admin.search import SearchArea
from wagtail.admin.site_summary import SummaryItem from wagtail.admin.site_summary import SummaryItem
from wagtail.core import hooks from wagtail.core import hooks
from django.utils.html import format_html
from django.templatetags.static import static from wagtailvideos import get_video_model, urls
from wagtailvideos import urls
from wagtailvideos.forms import GroupVideoPermissionFormSet from wagtailvideos.forms import GroupVideoPermissionFormSet
from wagtailvideos import get_video_model from wagtailvideos.models import TrackListing
from django.utils.safestring import mark_safe
from .permissions import permission_policy from .permissions import permission_policy
Video = get_video_model() Video = get_video_model()
...@@ -48,7 +52,7 @@ class VideoMenu(Menu): ...@@ -48,7 +52,7 @@ class VideoMenu(Menu):
def menu_items_for_request(self, request): def menu_items_for_request(self, request):
return [ return [
MenuItem(_('Videos'), reverse('wagtailvideos:index'), MenuItem(_('Manage videos'), reverse('wagtailvideos:index'),
name='videos', classnames='icon icon-media', order=300) name='videos', classnames='icon icon-media', order=300)
] ]
...@@ -109,3 +113,19 @@ def register_media_search_area(): ...@@ -109,3 +113,19 @@ def register_media_search_area():
@hooks.register('insert_global_admin_css') @hooks.register('insert_global_admin_css')
def summary_css(): def summary_css():
return format_html('<link rel="stylesheet" href="{}">', static('wagtailvideos/css/summary-override.css')) return format_html('<link rel="stylesheet" href="{}">', static('wagtailvideos/css/summary-override.css'))
@modeladmin_register
class TracksAdmin(ModelAdmin):
model = TrackListing
list_display = ('__str__', 'track_count')
def track_count(self, track_listing):
return track_listing.tracks.count()
track_count.short_description = 'No. tracks'
panels = [
VideoChooserPanel('video'),
InlinePanel('tracks', heading="Tracks")
]
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