#
# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
__docformat__ = 'restructuredtext'
# import standard library
# import interfaces
# import packages
from pyams_utils.request import check_request
from pyams_utils.vocabulary import vocabulary_config
from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
from pyams_i18n import _
BASE_LANGUAGES = {'aa': _('Afar'),
'ab': _('Abkhazian'),
'ae': _('Avestan'),
'af': _('Afrikaans'),
'ak': _('Akan'),
'am': _('Amharic'),
'an': _('Aragonese'),
'ar': _('Arabic'),
'as': _('Assamese'),
'av': _('Avaric'),
'ay': _('Aymara'),
'az': _('Azerbaijani'),
'ba': _('Bashkir'),
'be': _('Belarusian'),
'bg': _('Bulgarian'),
'bh': _('Bihari'),
'bi': _('Bislama'),
'bm': _('Bambara'),
'bn': _('Bengali'),
'bo': _('Tibetan'),
'br': _('Breton'),
'bs': _('Bosnian'),
'ca': _('Catalan'),
'ce': _('Chechen'),
'ch': _('Chamorro'),
'co': _('Corsican'),
'cr': _('Cree'),
'cs': _('Czech'),
'cu': _('Old Church Slavonic'),
'cv': _('Chuvash'),
'cy': _('Welsh'),
'da': _('Danish'),
'de': _('German'),
'dv': _('Divehi'),
'dz': _('Dzongkha'),
'ee': _('Ewe'),
'el': _('Greek'),
'en': _('English'),
'eo': _('Esperanto'),
'es': _('Spanish'),
'et': _('Estonian'),
'eu': _('Basque'),
'fa': _('Persian'),
'ff': _('Fulah'),
'fi': _('Finnish'),
'fj': _('Fijian'),
'fo': _('Faroese'),
'fr': _('French'),
'fy': _('Western Frisian'),
'ga': _('Irish'),
'gd': _('Scottish Gaelic'),
'gl': _('Galician'),
'gn': _('Guarani'),
'gu': _('Gujarati'),
'gv': _('Manx'),
'ha': _('Hausa'),
'he': _('Hebrew'),
'hi': _('Hindi'),
'ho': _('Hiri Motu'),
'hr': _('Croatian'),
'ht': _('Haitian'),
'hu': _('Hungarian'),
'hy': _('Armenian'),
'hz': _('Herero'),
'ia': _('Interlingua'),
'id': _('Indonesian'),
'ie': _('Interlingue'),
'ig': _('Igbo'),
'ii': _('Sichuan Yi'),
'ik': _('Inupiaq'),
'io': _('Ido'),
'is': _('Icelandic'),
'it': _('Italian'),
'iu': _('Inuktitut'),
'ja': _('Japanese'),
'jv': _('Javanese'),
'ka': _('Georgian'),
'kg': _('Kongo'),
'ki': _('Kikuyu'),
'kj': _('Kwanyama'),
'kk': _('Kazakh'),
'kl': _('Kalaallisut'),
'km': _('Khmer'),
'kn': _('Kannada'),
'ko': _('Korean'),
'kr': _('Kanuri'),
'ks': _('Kashmiri'),
'ku': _('Kurdish'),
'kv': _('Komi'),
'kw': _('Cornish'),
'ky': _('Kirghiz'),
'la': _('Latin'),
'lb': _('Luxembourgish'),
'lg': _('Ganda'),
'li': _('Limburgish'),
'ln': _('Lingala'),
'lo': _('Lao'),
'lt': _('Lithuanian'),
'lu': _('Luba-Katanga'),
'lv': _('Latvian'),
'mg': _('Malagasy'),
'mh': _('Marshallese'),
'mi': _('Maori'),
'mk': _('Macedonian'),
'ml': _('Malayalam'),
'mn': _('Mongolian'),
'mo': _('Moldavian'),
'mr': _('Marathi'),
'ms': _('Malay'),
'mt': _('Maltese'),
'my': _('Burmese'),
'na': _('Nauru'),
'nb': _('Norwegian Bokmal'),
'nd': _('North Ndebele'),
'ne': _('Nepali'),
'ng': _('Ndonga'),
'nl': _('Dutch'),
'nn': _('Norwegian Nynorsk'),
'no': _('Norwegian'),
'nr': _('South Ndebele'),
'nv': _('Navajo'),
'ny': _('Chichewa'),
'oc': _('Occitan'),
'oj': _('Ojibwa'),
'om': _('Oromo'),
'or': _('Oriya'),
'os': _('Ossetian'),
'pa': _('Panjabi'),
'pi': _('Pali'),
'pl': _('Polish'),
'ps': _('Pashto'),
'pt': _('Portuguese'),
'qu': _('Quechua'),
'rm': _('Raeto-Romance'),
'rn': _('Kirundi'),
'ro': _('Romanian'),
'ru': _('Russian'),
'rw': _('Kinyarwanda'),
'sa': _('Sanskrit'),
'sc': _('Sardinian'),
'sd': _('Sindhi'),
'se': _('Northern Sami'),
'sg': _('Sango'),
'si': _('Sinhalese'),
'sk': _('Slovak'),
'sl': _('Slovene'),
'sm': _('Samoan'),
'sn': _('Shona'),
'so': _('Somali'),
'sq': _('Albanian'),
'sr': _('Serbian'),
'ss': _('Swati'),
'st': _('Sotho'),
'su': _('Sundanese'),
'sv': _('Swedish'),
'sw': _('Swahili'),
'ta': _('Tamil'),
'te': _('Telugu'),
'tg': _('Tajik'),
'th': _('Thai'),
'ti': _('Tigrinya'),
'tk': _('Turkmen'),
'tl': _('Tagalog'),
'tn': _('Tswana'),
'to': _('Tonga'),
'tr': _('Turkish'),
'ts': _('Tsonga'),
'tt': _('Tatar'),
'tw': _('Twi'),
'ty': _('Tahitian'),
'ug': _('Uighur'),
'uk': _('Ukrainian'),
'ur': _('Urdu'),
'uz': _('Uzbek'),
've': _('Venda'),
'vi': _('Vietnamese'),
'vo': _('Volapuk'),
'wa': _('Walloon'),
'wo': _('Wolof'),
'xh': _('Xhosa'),
'yi': _('Yiddish'),
'yo': _('Yoruba'),
'za': _('Zhuang'),
'zh': _('Chinese'),
'zu': _('Zulu')}
[docs]@vocabulary_config(name='PyAMS base languages')
class BaseLanguagesVocabulary(SimpleVocabulary):
"""Base languages vocabulary, matching ISO 639-1 languages codes"""
def __init__(self, *args, **kw):
request = check_request()
translate = request.localizer.translate
terms = sorted([SimpleTerm(v, title=translate(t)) for v, t in BASE_LANGUAGES.items()],
key=lambda x: x.title)
super(BaseLanguagesVocabulary, self).__init__(terms)
ISO_LANGUAGES = {'aa-ET': _("Afar (Ethiopia)"),
'ab-GE': _("Abkhazian"),
'ae-IR': _("Avestan (Iran)"),
'af-ZA': _('Afrikaans'),
'ak-GH': _("Akan (Ghana)"),
'am-ET': _('Amharic (Ethiopia)'),
'an-ES': _("Aragonese (Spain)"),
'ar-AE': _('Arabic united Arab Emirates)'),
'ar-BH': _('Arabic (Bahrain)'),
'ar-DZ': _('Arabic (Algeria)'),
'ar-EG': _('Arabic (Egypt)'),
'ar-IQ': _('Arabic (Iraq)'),
'ar-JO': _('Arabic (Jordan)'),
'ar-KW': _('Arabic (Kuwait)'),
'ar-LB': _('Arabic (Lebanon)'),
'ar-LY': _('Arabic (Libyan Arab Jamahiriya)'),
'ar-MA': _('Arabic (Morocco)'),
'ar-OM': _('Arabic (Oman)'),
'ar-QA': _('Arabic (Qatar)'),
'ar-SA': _('Arabic (Saudi Arabia)'),
'ar-SY': _('Arabic (Syrian Arab Republic)'),
'ar-TN': _('Arabic (Tunisia)'),
'ar-YE': _('Arabic (Yemen)'),
'arn-CL': _('Mapudungun (Chile)'),
'as-IN': _('Assamese (India)'),
'ast-ES': _('Asturien'),
'av-RU': _("Avaric (Russia)"),
'ay-BO': _("Aymara (Bolivia)"),
'az-AZ-Cyrl': _('Azerbaijani (Cyrillic)'),
'az-AZ-Latn': _('Azerbaijani (Latin)'),
'ba-RU': _('Bashkir (Russia)'),
'be-BY': _('Belarusian (Belarus)'),
'ber-DZ': _('Berber (Algeria, Latin)'),
'bg-BG': _('Bulgarian'),
'bh-IN': _("Bihari (India)"),
'bi-VU': _("Bislama (Vanuatu)"),
'bm-ML': _("Bambara (Mali)"),
'bn-IN': _('Bengali (India)'),
'bo-BT': _('Tibetan (Bhutan)'),
'bo-CN': _('Tibetan (China)'),
'br-FR': _('Breton'),
'bs-BA-Cyrl': _('Bosnian (Bosnia Herzegovina, Cyrillic)'),
'bs-BA-Latn': _('Bosnian (Bosnie Herzegovina, Latin)'),
'ca-AD': _('Catalan (Andorra)'),
'ca-ES': _('Catalan (Spain)'),
'ca-FR': _('Catalan (France)'),
'ce-RU': _('Chechen'),
'ch-US': _('Chamorro'),
'co-FR': _('Corsican (France)'),
'cr-CA': _('Cree (Canada)'),
'cs-CZ': _('Czech'),
'cu-BG': _('Old Slavonic'),
'cv-RU': _('Chuvash (Russia)'),
'cy-GB': _('Welsh'),
'da-DK': _('Danish'),
'de-AT': _('German (Austria)'),
'de-CH': _('German (Swotzerland)'),
'de-DE': _('German (Germany)'),
'de-LI': _('German (Liechtenstein)'),
'de-LU': _('German (Luxembourg)'),
'dv-MV': _('Divehi (Maldives)'),
'dz-BT': _('Dzongkha (Bhutan)'),
'ee-GH': _('Ewe (Ghana)'),
'el-GR': _('Greek'),
'en-AU': _('English (Australia)'),
'en-BZ': _('English (Belize)'),
'en-CA': _('English (Canada)'),
'en-CB': _('English (Caraibes)'),
'en-GB': _('English (United Kingdom)'),
'en-IE': _('English (Ireland)'),
'en-IN': _('English (India)'),
'en-JA': _('English (Jamaica)'),
'en-MY': _('English (Malaysia)'),
'en-NZ': _('English (New Zealand)'),
'en-PH': _('English (Philippines)'),
'en-SG': _('English (Singapore)'),
'en-TT': _('English (Trinidad)'),
'en-US': _('English (United States)'),
'en-ZA': _('English (South Africa)'),
'en-ZW': _('English (Zimbabwe)'),
'eo': _('Esperanto'),
'es-AR': _('Spanish (Argentina)'),
'es-BO': _('Spanish (Bolivia)'),
'es-CL': _('Spanish (Chile)'),
'es-CO': _('Spanish (Colombia)'),
'es-CR': _('Spanish (Costa Rica)'),
'es-DO': _('Spanish (Dominican Republic)'),
'es-EC': _('Spanish (Ecuador)'),
'es-ES': _('Spanish (Spain)'),
'es-ES-ts': _('Spanish (Spain, Traditional)'),
'es-GT': _('Spanish (Guatemala)'),
'es-HN': _('Spanish (Honduras)'),
'es-MX': _('Spanish (Mexico)'),
'es-NI': _('Spanish (Nicaragua)'),
'es-PA': _('Spanish (Panama)'),
'es-PE': _('Spanish (Peru)'),
'es-PR': _('Spanish (Puerto Rico)'),
'es-PY': _('Spanish (Paraguay)'),
'es-SV': _('Spanish (El Salvador)'),
'es-UR': _('Spanish (Uruguay)'),
'es-US': _('Spanish (United States)'),
'es-VE': _('Spanish (Venezuela)'),
'et-EE': _('Estonian (Estonia)'),
'eu-ES': _('Basque'),
'fa-IR': _('Persian (Iran)'),
'fi-FI': _('Finish'),
'fil-PH': _('Philippine'),
'fj-FJ': _('Fijian'),
'fo-FO': _('Faroese (Faroe Islands)'),
'fr-FR': _('French (France)'),
'fr-BE': _('French (Belgium)'),
'fr-CA': _('French (Canada)'),
'fr-CH': _('French (Switzerland)'),
'fr-LU': _('French (Luxembourg)'),
'fr-MC': _('French (Monaco)'),
'fur-IT': _('Frioulan (Italia)'),
'fy-NL': _('Frisian (Netherlands)'),
'ga-IE': _('Irish'),
'gbz-AF': _('Dari (Afghanistan)'),
'gd-GB': _('Gaelic (Scotland)'),
'gl-ES': _('Galician'),
'gsw-FR': _('Alsatian (France)'),
'gu-IN': _('Gujarati (India)'),
'ha-NG-Latn': _('Hausa (Nigeria)'),
'he-IL': _('Hebrew (Israel)'),
'hi-IN': _('Hindi (Inde)'),
'hr-BA': _('Croatian (Bosnia Herzegovina, Latin)'),
'hr-HR': _('Croatian (Croatia)'),
'hu-HU': _('Hungarian'),
'hy-AM': _('Armenian (Armenia)'),
'id-ID': _('Indonesian'),
'ii-CN': _('Yi (China)'),
'iu-CA-Cans': _('Inuktitut (Canada, Syllabic)'),
'iu-CA-Latn': _('Inuktitut (Canada, Latin)'),
'is-IS': _('Icelandic'),
'it-CH': _('Italian (Switzerland)'),
'it-IT': _('Italian (Italia)'),
'ja-JP': _('Japanese'),
'ja-JP-mac': _('Japanese (Japan, Mac)'),
'ka-GE': _('Georgian'),
'kk-KZ': _('Kazakh (Kazakhstan)'),
'kl-GL': _('Greenlandic'),
'km-KH': _('Khmer (Cambodia)'),
'kn-IN': _('Kannada (India)'),
'ko-KR': _('Korean (Korea)'),
'kok-IN': _('Konkani (India)'),
'kw-GB': _('Cornish'),
'ky-KG': _('Kirghiz (Kyrgizstan)'),
'lb-LU': _('Luxembourgish'),
'lo-LA': _('Lao'),
'lt-LT': _('Lituanian'),
'lv-LV': _('Latvian'),
'mi-NZ': _('Maori (New Zealand)'),
'mk-MK': _('Macedonian'),
'ml-IN': _('Malayalam (Inde)'),
'mn-CN': _('Mongolian (China)'),
'mn-MN': _('Mongolian (Mongolia)'),
'moh-CA': _('Mohawk (Canada)'),
'mr-IN': _('Marathi (Inde)'),
'ms-BN': _('Malay (Brunei)'),
'ms-MY': _('Malay'),
'mt-MT': _('Maltese'),
'my-MM': _('Burmese (Myanmar)'),
'nb-NO': _('Norwegian (Bokmal)'),
'nn-NO': _('Norwegian (Nynorsk)'),
'ne-NP': _('Nepali'),
'nl-BE': _('Dutch (Belgium)'),
'nl-NL': _('Dutch (Netherlands)'),
'oc-FR': _('Occitan (France)'),
'or-IN': _('Oriya (India)'),
'pa-IN': _('Punjabi (India)'),
'pl-PL': _('Polish'),
'ps-AF': _('Pachto (Afghanistan)'),
'pt-BR': _('Portuguese (Brazil)'),
'pt-PT': _('Portuguese (Portugal)'),
'que-BO': _('Quechua (Bolivia)'),
'que-EC': _('Quechua (Ecuador)'),
'que-PE': _('Quechua (Peru)'),
'rm-CH': _('Romansh'),
'ro-RO': _('Romanian'),
'ru-RU': _('Russian'),
'rw-RW': _('Kinyarwanda (Rwanda)'),
'sa-IN': _('Sanskrit (Inde)'),
'sah-RU': _('Yakut (Russia)'),
'se-FI': _('Sami (Northern, Finland)'),
'se-NO': _('Sami (Northern, Norway)'),
'se-SE': _('Sami (Northern, Sweden)'),
'si-LK': _('Sinhala (Sri Lanka)'),
'sk-SK': _('Slovak'),
'sl-SI': _('Slovenian'),
'sr-BA-Cyrl': _('Serbian (Bosnia Herzegovina, Cyrillic)'),
'sr-BA-Latn': _('Serbian (Bosnia Herzegovina, Latin)'),
'sr-SP-Cyrl': _('Serbian (Serbia and Montenegro, Cyrillic)'),
'sr-SP-Latn': _('Serbian (Serbia and Montenegro, Latin)'),
'sma-NO': _('Sami (Southern, Norway)'),
'sma-SE': _('Sami (Southern, Sweden)'),
'smj-NO': _('Sami (Lule, Norway)'),
'smj-SE': _('Sami (Lule, Sweden)'),
'smn-FI': _('Sami (Inari, Finland)'),
'sms-FI': _('Sami (Skolt, Finland)'),
'sq-AL': _('Albanian'),
'sv-FI': _('Swedish (Finland)'),
'sv-SE': _('Swedish (Sweden)'),
'sw-KE': _('Swahili (Kenya)'),
'syr-SY': _('Syriac'),
'ta-IN': _('Tamil (India)'),
'te-IN': _('Telugu (India)'),
'tg-TJ-Cyrl': _('Tajik (Tajikistan)'),
'th-TH': _('Thai (Thailand)'),
'tk-TM': _('Turkmen (Turkmenistan)'),
'tn-ZA': _('Tswana (South Africa)'),
'tr-TR': _('Turkish'),
'tt-RU': _('Tatar (Russia)'),
'ug-CN': _('Uighur (China)'),
'uk-UA': _('Ukrainian'),
'ur-IN': _('Urdu (Inde)'),
'ur-PK': _('Urdu (Pakistan)'),
'uz-UZ-Cyrl': _('Uzbek uzbekistan, Cyrillic)'),
'uz-UZ-Latn': _('Uzbek uzbekistan, Latin)'),
'vi-VN': _('Vietnamese'),
'wen-DE': _('Sorbian (Germany)'),
'wo-SN': _('Wolof (Senegal)'),
'xh-ZA': _('Xhosa (South Africa)'),
'yo-NG': _('Yoruba (Nigeria)'),
'zh-CHS': _('Chinese (Simplified)'),
'zh-CHT': _('Chinese (Traditional)'),
'zh-CN': _('Chinese (China)'),
'zh-HK': _('Chinese (Hong Kong, China)'),
'zh-MO': _('Chinese (Macao)'),
'zh-SG': _('Chinese (Singapore)'),
'zh-TW': _('Chinese (Taiwan)'),
'zu-ZA': _('Zulu (South Africa)')}
[docs]@vocabulary_config(name='PyAMS ISO languages')
class ISOLanguagesVocabulary(SimpleVocabulary):
def __init__(self, *args, **kw):
request = check_request()
translate = request.localizer.translate
terms = sorted([SimpleTerm(v, title=translate(t)) for v, t in ISO_LANGUAGES.items()])
terms.sort(key=lambda x: x.title)
super(ISOLanguagesVocabulary, self).__init__(terms)