Source code for pyams_i18n.language

#
# 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)