# encoding: utf-8
=begin

 * Name: SiSU

 * Description: a framework for document structuring, publishing and search

 * Author: Ralph Amissah

 * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
   2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Ralph Amissah,
   All Rights Reserved.

 * License: GPL 3 or later:

   SiSU, a framework for document structuring, publishing and search

   Copyright (C) Ralph Amissah

   This program is free software: you can redistribute it and/or modify it
   under the terms of the GNU General Public License as published by the Free
   Software Foundation, either version 3 of the License, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful, but WITHOUT
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
   more details.

   You should have received a copy of the GNU General Public License along with
   this program. If not, see <http://www.gnu.org/licenses/>.

   If you have Internet connection, the latest version of the GPL should be
   available at these locations:
   <http://www.fsf.org/licensing/licenses/gpl.html>
   <http://www.gnu.org/licenses/gpl.html>

   <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>

 * SiSU uses:
   * Standard SiSU markup syntax,
   * Standard SiSU meta-markup syntax, and the
   * Standard SiSU object citation numbering and system

 * Hompages:
   <http://www.jus.uio.no/sisu>
   <http://www.sisudoc.org>

 * Download:
   <http://www.sisudoc.org/sisu/en/SiSU/download.html>

 * Git
   <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
   <http://sources.sisudoc.org/?p=code/sisu.git;a=blob;f=lib/sisu/v6/i18n.rb;hb=HEAD>

 * Ralph Amissah
   <ralph@amissah.com>
   <ralph.amissah@gmail.com>

 ** Description: internationalisation

=end
module SiSU_i18n
  @@language_table,@@language_list=nil,nil
  class Languages
    def language
      def table
        @@language_table ||= {
          am:    { c: 'am',    n: 'Amharic',           t: 'Amharic',                     xlp: 'amharic'          },
          bg:    { c: 'bg',    n: 'Bulgarian',         t: 'Български (Bəlgarski)',       xlp: 'bulgarian'        },
          bn:    { c: 'bn',    n: 'Bengali',           t: 'Bengali',                     xlp: 'bengali'          },
          br:    { c: 'br',    n: 'Breton',            t: 'Breton',                      xlp: 'breton'           },
          ca:    { c: 'ca',    n: 'Catalan',           t: 'catalan',                     xlp: 'catalan'          },
          cs:    { c: 'cs',    n: 'Czech',             t: 'česky',                       xlp: 'czech'            },
          cy:    { c: 'cy',    n: 'Welsh',             t: 'Welsh',                       xlp: 'welsh'            },
          da:    { c: 'da',    n: 'Danish',            t: 'dansk',                       xlp: 'danish'           },
          de:    { c: 'de',    n: 'German',            t: 'Deutsch',                     xlp: 'german'           },
          el:    { c: 'el',    n: 'Greek',             t: 'Ελληνικά (Ellinika)',         xlp: 'greek'            },
          en:    { c: 'en',    n: 'English',           t: 'English',                     xlp: 'english'          },
          eo:    { c: 'eo',    n: 'Esperanto',         t: 'Esperanto',                   xlp: 'esperanto'        },
          es:    { c: 'es',    n: 'Spanish',           t: 'español',                     xlp: 'spanish'          },
          et:    { c: 'et',    n: 'Estonian',          t: 'Estonian',                    xlp: 'estonian'         },
          eu:    { c: 'eu',    n: 'Basque',            t: 'basque',                      xlp: 'basque'           },
          fi:    { c: 'fi',    n: 'Finnish',           t: 'suomi',                       xlp: 'finnish'          },
          fr:    { c: 'fr',    n: 'French',            t: 'français',                    xlp: 'french'           },
          ga:    { c: 'ga',    n: 'Irish',             t: 'Irish',                       xlp: 'irish'            },
          gl:    { c: 'gl',    n: 'Galician',          t: 'Galician',                    xlp: 'galician'         },
          he:    { c: 'he',    n: 'Hebrew',            t: 'Hebrew',                      xlp: 'hebrew'           },
          hi:    { c: 'hi',    n: 'Hindi',             t: 'Hindi',                       xlp: 'hindi'            },
          hr:    { c: 'hr',    n: 'Croatian',          t: 'Croatian',                    xlp: 'croatian'         },
          hy:    { c: 'hy',    n: 'Armenian',          t: 'Armenian',                    xlp: 'armenian'         },
          ia:    { c: 'ia',    n: 'Interlingua',       t: 'Interlingua',                 xlp: 'interlingua'      },
          is:    { c: 'is',    n: 'Icelandic',         t: 'Icelandic',                   xlp: 'icelandic'        },
          it:    { c: 'it',    n: 'Italian',           t: 'Italiano',                    xlp: 'italian'          },
          ja:    { c: 'ja',    n: 'Japanese',          t: '日本語 (Nihongo)',            xlp: 'japanese'         },
          ko:    { c: 'ko',    n: 'Korean',            t: 'Korean',                      xlp: 'korean'           },
          la:    { c: 'la',    n: 'Latin',             t: 'Latin',                       xlp: 'latin'            },
          lo:    { c: 'lo',    n: 'Lao',               t: 'Lao',                         xlp: 'lao'              },
          lt:    { c: 'lt',    n: 'Lithuanian',        t: 'Lithuanian',                  xlp: 'lithuanian'       },
          lv:    { c: 'lv',    n: 'Latvian',           t: 'Latvian',                     xlp: 'latvian'          },
          ml:    { c: 'ml',    n: 'Malayalam',         t: 'Malayalam',                   xlp: 'malayalam'        },
          mr:    { c: 'mr',    n: 'Marathi',           t: 'Marathi',                     xlp: 'marathi'          },
          nl:    { c: 'nl',    n: 'Dutch',             t: 'Nederlands',                  xlp: 'dutch'            },
          no:    { c: 'no',    n: 'Norwegian',         t: 'norsk',                       xlp: 'norsk'            },
          nn:    { c: 'nn',    n: 'Norwegian Nynorsk', t: 'nynorsk',                     xlp: 'nynorsk'          },
          oc:    { c: 'oc',    n: 'Occitan',           t: 'Occitan',                     xlp: 'occitan'          },
          pl:    { c: 'pl',    n: 'Polish',            t: 'polski',                      xlp: 'polish'           },
          pt:    { c: 'pt',    n: 'Portuguese',        t: 'Português',                   xlp: 'portuges'         },
          pt_BR: { c: 'pt_BR', n: 'Portuguese Brazil', t: 'Brazilian Português',         xlp: 'brazilian'        },
          ro:    { c: 'ro',    n: 'Romanian',          t: 'română',                      xlp: 'romanian'         },
          ru:    { c: 'ru',    n: 'Russian',           t: 'Русский (Russkij)',           xlp: 'russian'          },
          sa:    { c: 'sa',    n: 'Sanskrit',          t: 'Sanskrit',                    xlp: 'sanskrit'         },
          se:    { c: 'se',    n: 'Sami',              t: 'Samin',                       xlp: 'samin'            },
          sk:    { c: 'sk',    n: 'Slovak',            t: 'slovensky',                   xlp: 'slovak'           },
          sl:    { c: 'sl',    n: 'Slovenian',         t: 'Slovenian',                   xlp: 'slovenian'        },
          sq:    { c: 'sq',    n: 'Albanian',          t: 'Albanian',                    xlp: 'albanian'         },
          sr:    { c: 'sr',    n: 'Serbian',           t: 'Serbian',                     xlp: 'serbian'          },
          sv:    { c: 'sv',    n: 'Swedish',           t: 'svenska',                     xlp: 'swedish'          },
          ta:    { c: 'ta',    n: 'Tamil',             t: 'Tamil',                       xlp: 'tamil'            },
          te:    { c: 'te',    n: 'Telugu',            t: 'Telugu',                      xlp: 'telugu'           },
          th:    { c: 'th',    n: 'Thai',              t: 'Thai',                        xlp: 'thai'             },
          tk:    { c: 'tk',    n: 'Turkmen',           t: 'Turkmen',                     xlp: 'turkmen'          },
          tr:    { c: 'tr',    n: 'Turkish',           t: 'Türkçe',                      xlp: 'turkish'          },
          uk:    { c: 'uk',    n: 'Ukranian',          t: 'українська (ukrajins\'ka)',   xlp: 'ukrainian'        },
          ur:    { c: 'ur',    n: 'Urdu',              t: 'Urdu',                        xlp: 'urdu'             },
          us:    { c: 'en',    n: 'English (American)',t: 'English',                     xlp: 'english'          },
          vi:    { c: 'vi',    n: 'Vietnamese',        t: 'Vietnamese',                  xlp: 'vietnamese'       },
          zh:    { c: 'zh',    n: 'Chinese',           t: '中文',                        xlp: 'chinese'          },
          en:    { c: 'en',    n: 'English',           t: 'English',                     xlp: 'english'          },
          xx:    { c: 'xx',    n: 'Default',           t: 'English',                     xlp: 'english'          },
        }
      end
      def list
        @@language_list ||= {
          'am'    => table[:am],
          'bg'    => table[:bg],
          'bn'    => table[:bn],
          'br'    => table[:br],
          'ca'    => table[:ca],
          'cs'    => table[:cs],
          'cy'    => table[:cy],
          'da'    => table[:da],
          'de'    => table[:de],
          'el'    => table[:el],
          'en'    => table[:en],
          'eo'    => table[:eo],
          'es'    => table[:es],
          'et'    => table[:et],
          'eu'    => table[:eu],
          'fi'    => table[:fi],
          'fr'    => table[:fr],
          'ga'    => table[:ga],
          'gl'    => table[:gl],
          'he'    => table[:he],
          'hi'    => table[:hi],
          'hr'    => table[:hr],
          'hy'    => table[:hy],
          'ia'    => table[:ia],
          'is'    => table[:is],
          'it'    => table[:it],
          'ja'    => table[:ja],
          'ko'    => table[:ko],
          'la'    => table[:la],
          'lo'    => table[:lo],
          'lt'    => table[:lt],
          'lv'    => table[:lv],
          'ml'    => table[:ml],
          'mr'    => table[:mr],
          'nl'    => table[:nl],
          'no'    => table[:no],
          'nn'    => table[:nn],
          'oc'    => table[:oc],
          'pl'    => table[:pl],
          'pt'    => table[:pt],
          'pt_BR' => table[:pt_BR],
          'ro'    => table[:ro],
          'ru'    => table[:ru],
          'sa'    => table[:sa],
          'se'    => table[:se],
          'sk'    => table[:sk],
          'sl'    => table[:sl],
          'sq'    => table[:sq],
          'sr'    => table[:sr],
          'sv'    => table[:sv],
          'ta'    => table[:ta],
          'te'    => table[:te],
          'th'    => table[:th],
          'tk'    => table[:tk],
          'tr'    => table[:tr],
          'uk'    => table[:uk],
          'ur'    => table[:ur],
          'us'    => table[:en],
          'vi'    => table[:vi],
          'zh'    => table[:zh],
          'en'    => table[:en],
          'xx'    => table[:en]
        }
      end
      self
    end
  end
  class Alphabet
    def initialize(lng_code)
      @lng_code=lng_code
    end
    def hash_arrays
      @alph=case @lng_code
      when /en/                                                              #english
        {
          u: %w[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z],
          l: %w[a b c d e f g h i j k l m n o p q r s t u v w x y z]
        }
      when /da|no|nn/                                                        #danish, norwegian
        {
          u: %w[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Å Æ Ø],
          l: %w[a b c d e f g h i j k l m n o p q r s t u v w x y z å æ ø]
          #u: %W[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ Ø Å],
          #l: %w[a b c d e f g h i j k l m n o p q r s t u v w x y z æ ø å]
        }
      when /sv/                                                              #swedish
        {
          u: %w[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Å Ä Ö],
          l: %w[a b c d e f g h i j k l m n o p q r s t u v w x y z å ä ö]
        }
      else                                                                   #english default
        {
          u: %w[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z],
          l: %w[a b c d e f g h i j k l m n o p q r s t u v w x y z]
        }
      end
    end
    def hash_strings
      { u: hash_arrays[:u].join, l: hash_arrays[:l].join }
    end
  end
end
__END__
Language Lists
* po4a c:
  <http://www.debian.org/international/l10n/po/>
  Px[:lng_lst] see constants.rb
* polyglossia xlp:
  <http://mirrors.ctan.org/macros/xetex/latex/polyglossia/polyglossia.pdf>
  missing from (:c) list:
    arabic asturian bahasai bahasam coptic divehi farsi lsorbian magyar scottish syriac usorbian
note ISO_639-1
  <http://en.wikipedia.org/wiki/ISO_639-1>
  <http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes>
also note ISO_639-2
  <http://en.wikipedia.org/wiki/ISO_639-2>
  <http://en.wikipedia.org/wiki/List_of_ISO_639-2_codes>

Px[:lng_lst] # constants.rb

module SiSU_TextTranslation
  class Language
    def initialize(md)
      @md=md
    end
    def tex_name(char)
      @lang=if char
        case char
        when 'sq'    then 'albanian'
        when 'am'    then 'amharic'
       #when 'ar'    then 'arabic'         # see polyglossia
        when 'hy'    then 'armenian'
       #when ''      then 'asturian'       # polyglossia
       #when ''      then 'bahasai'        # polyglossia
       #when ''      then 'bahasam'        # polyglossia
        when 'eu'    then 'basque'
        when 'bn'    then 'bengali'
        when 'pt_BR' then 'brazilian'
        when 'br'    then 'breton'
        when 'bg'    then 'bulgarian'
        when 'ca'    then 'catalan'        # see polyglossia
       #when ''      then 'coptic'         # polyglossia
        when 'hr'    then 'croatian'
        when 'cs'    then 'czech'
        when 'da'    then 'danish'
       #when ''      then 'divehi'         # polyglossia
        when 'nl'    then 'dutch'          # see polyglossia
        when 'en'    then 'english'        # see polyglossia
        when 'eo'    then 'esperanto'      # see polyglossia
        when 'et'    then 'estonian'
        when 'gl'    then 'galician'
        when 'de'    then 'german'
        when 'el'    then 'greek'          #gl ?
        when 'he'    then 'hebrew'
        when 'hi'    then 'hindi'
        when 'is'    then 'icelandic'
        when 'ia'    then 'interlingua'
        when 'ga'    then 'irish'
        when 'it'    then 'italian'
       #when ''      then 'farsi'          # polyglossia
        when 'fi'    then 'finnish'
        when 'fr'    then 'french'
        when 'lo'    then 'lao'
        when 'la'    then 'latin'
        when 'lv'    then 'latvian'
        when 'lt'    then 'lithuanian'
       #when ''      then 'lsorbian'       # polyglossia
       #when ''      then 'magyar'         # polyglossia
        when 'ml'    then 'malayalam'
        when 'mr'    then 'marathi'
       #when 'hu'    then 'magyar'
        when 'no'    then 'norske'
        when 'nn'    then 'nynorsk'
        when 'oc'    then 'occitan'
        when 'pl'    then 'polish'
        when 'pt'    then 'portuges'
        when 'ro'    then 'romanian'
        when 'ru'    then 'russian'
        when 'se'    then 'samin'          #(check sami?)
        when 'sa'    then 'sanskrit'
        when 'sr'    then 'serbian'
       #when ''      then 'scottish'       # polyglossia  (gd (Gaelic (Scots)))
        when 'sk'    then 'slovak'
        when 'sl'    then 'slovenian'
        when 'es'    then 'spanish'
        when 'sv'    then 'swedish'
        when 'ta'    then 'tamil'
        when 'te'    then 'telugu'
        when 'th'    then 'thai'
        when 'tr'    then 'turkish'
        when 'tk'    then 'turkmen'
        when 'uk'    then 'ukrainian'
        when 'ur'    then 'urdu'
       #when ''      then 'usorbian'       # polyglossia
        when 'vi'    then 'vietnamese'
        when 'cy'    then 'welsh'
        when 'us'    then 'USenglish'      # depreciated, see iso-639-2
        else         then 'english'
        end
      else            'english'
      end
    end
  end
end
#% Language List po4a
http://www.debian.org/international/l10n/po/
see polyglossia for subset
* CSB (Unknown language)
* KAB (Unknown language)
* TLH (Unknown language)
* aa (Afar)
* ab (Abkhazian)
* af (Afrikaans)
* af_ZA (Afrikaans, as spoken in South Africa)
* am (Amharic)
* an (Unknown language)
* ang (Unknown language)
* ar (Arabic)
* ar_AR (Arabic, as spoken in Argentina)
* ar_EG (Arabic, as spoken in Egypt)
* ar_OM (Arabic, as spoken in Oman)
* ar_PS (Arabic, as spoken in Palestinian Territory, Occupied)
* ar_SA (Arabic, as spoken in Saudi Arabia)
* ar_SY (Arabic, as spoken in Syrian Arab Republic)
* as (Assamese)
* ast (Unknown language)
* ay (Aymara)
* az (Azerbaijani)
* az_IR (Azerbaijani, as spoken in Iran)
* be (Belarusian)
* be@latin (Unknown language)
* be@tarask (Unknown language)
* bem (Unknown language)
* bg (Bulgarian)
* bg_BG (Bulgarian, as spoken in Bulgaria)
* bi (Bislama)
* bn (Bengali)
* bn_BD (Bengali, as spoken in Bangladesh)
* bn_IN (Bengali, as spoken in India)
* bo (Tibetan)
* br (Breton)
* bs (Bosnian)
* bs_BA (Bosnian, as spoken in Bosnia and Herzegovina)
* bs_BS (Bosnian, as spoken in Bahamas)
* byn (Unknown language)
* ca (Catalan)
* ca@valencia (Unknown language)
* ca_AD (Catalan, as spoken in Andorra)
* ca_ES (Catalan, as spoken in Spain)
* ca_ES@valencia (Unknown language)
* ca_FR (Catalan, as spoken in France)
* ca_IT (Catalan, as spoken in Italy)
* co (Corsican)
* crh (Unknown language)
* cs (Czech)
* cs_CZ (Czech, as spoken in Czech Republic)
* csb (Unknown language)
* cy (Welsh)
* cy_GB (Welsh, as spoken in Great Britain)
* cz (Unknown language)
* da (Danish)
* da_DK (Danish, as spoken in Denmark)
* de (German)
* de_AT (German, as spoken in Austria)
* de_CH (German, as spoken in Switzerland)
* de_DE (German, as spoken in Germany)
* dk (Unknown language)
* dz (Dzongkha)
* el (Greek)
* el_GR (Greek, as spoken in Greece)
* en (English)
* en@boldquot (Unknown language)
* en@quot (Unknown language)
* en@shaw (Unknown language)
* en_AU (English, as spoken in Australia)
* en_CA (English, as spoken in Canada)
* en_GB (English, as spoken in Great Britain)
* en_NZ (English, as spoken in New Zealand)
* en_US (English, as spoken in United States)
* en_US@piglatin (Unknown language)
* en_ZA (English, as spoken in South Africa)
* eo (Esperanto)
* es (Spanish)
* es_AR (Spanish, as spoken in Argentina)
* es_CL (Spanish, as spoken in Chile)
* es_CO (Spanish, as spoken in Colombia)
* es_CR (Spanish, as spoken in Costa Rica)
* es_DO (Spanish, as spoken in Dominican Republic)
* es_EC (Spanish, as spoken in Ecuador)
* es_ES (Spanish, as spoken in Spain)
* es_GA (Spanish, as spoken in Gabon)
* es_GT (Spanish, as spoken in Guatemala)
* es_HN (Spanish, as spoken in Honduras)
* es_LA (Spanish, as spoken in Lao People''s Democratic Republic)
* es_MX (Spanish, as spoken in Mexico)
* es_NI (Spanish, as spoken in Nicaragua)
* es_PA (Spanish, as spoken in Panama)
* es_PE (Spanish, as spoken in Peru)
* es_PR (Spanish, as spoken in Puerto Rico)
* es_SV (Spanish, as spoken in El Salvador)
* es_UY (Spanish, as spoken in Uruguay)
* es_VE (Spanish, as spoken in Venezuela)
* et (Estonian)
* et_EE (Estonian, as spoken in Estonia)
* eu (Basque)
* eu_ES (Basque, as spoken in Spain)
* fa (Persian)
* fa_AF (Persian, as spoken in Afghanistan)
* fa_IR (Persian, as spoken in Iran)
* fi (Finnish)
* fi_FI (Finnish, as spoken in Finland)
* fil (Unknown language)
* fo (Faeroese)
* fo_FO (Faeroese, as spoken in Faroe Islands)
* fr (French)
* fr_BE (French, as spoken in Belgium)
* fr_CA (French, as spoken in Canada)
* fr_CH (French, as spoken in Switzerland)
* fr_FR (French, as spoken in France)
* fr_FX (French, as spoken in France, Metropolitan)
* fr_LU (French, as spoken in Luxembourg)
* frp (Unknown language)
* fur (Unknown language)
* fy (Frisian)
* fy_NL (Frisian, as spoken in Netherlands)
* ga (Irish)
* gd (Gaelic (Scots))
* gez (Unknown language)
* gl (Galician)
* gl_ES (Galician, as spoken in Spain)
* gn (Guarani)
* gu (Gujarati)
* gv (Manx)
* ha (Hausa)
* he (Hebrew)
* he_IL (Hebrew, as spoken in Israel)
* hi (Hindi)
* hne (Unknown language)
* hr (Croatian)
* hr_HR (Croatian, as spoken in Croatia)
* ht (Unknown language)
* hu (Hungarian)
* hu_HU (Hungarian, as spoken in Hungary)
* hy (Armenian)
* ia (Interlingua)
* id (Indonesian)
* id_ID (Indonesian, as spoken in Indonesia)
* ig (Unknown language)
* io (Unknown language)
* is (Icelandic)
* is_IS (Icelandic, as spoken in Iceland)
* it (Italian)
* it_CH (Italian, as spoken in Switzerland)
* it_IT (Italian, as spoken in Italy)
* iu (Inuktitut)
* ja (Japanese)
* ja_JP (Japanese, as spoken in Japan)
* jv (Unknown language)
* jv_ID (Unknown language)
* ka (Georgian)
* kab (Unknown language)
* kk (Kazakh)
* kl (Kalaallisut)
* km (Khmer)
* km_KH (Khmer, as spoken in Cambodia)
* kn (Kannada)
* ko (Korean)
* ko_KR (Korean, as spoken in Korea)
* ks (Kashmiri)
* ku (Kurdish)
* kw (Cornish)
* ky (Kirghiz)
* la (Latin)
* lb (Letzeburgesch)
* lg (Unknown language)
* li (Unknown language)
* ln (Lingala)
* lo (Lao)
* lt (Lithuanian)
* lt_LT (Lithuanian, as spoken in Lithuania)
* lv (Latvian)
* lv_LV (Latvian, as spoken in Latvia)
* mai (Unknown language)
* mal (Unknown language)
* mg (Malagasy)
* mi (Maori)
* mk (Macedonian)
* mk_MK (Macedonian, as spoken in Macedonia, the Former Yugoslav Republic of)
* ml (Malayalam)
* ml_IN (Malayalam, as spoken in India)
* ml_ML (Malayalam, as spoken in Mali)
* mn (Mongolian)
* mr (Marathi)
* ms (Malay)
* ms_MY (Malay, as spoken in Malaysia)
* mt (Maltese)
* my (Burmese)
* my_MM (Burmese, as spoken in Myanmar)
* na (Nauru)
* nb (Norwegian Bokmål)
* nb_NO (Norwegian Bokmål, as spoken in Norway)
* nds (Unknown language)
* ne (Nepali)
* new (Unknown language)
* nl (Dutch)
* nl_BE (Dutch, as spoken in Belgium)
* nl_NL (Dutch, as spoken in Netherlands)
* nn (Norwegian Nynorsk)
* nn_NO (Norwegian Nynorsk, as spoken in Norway)
* no (Norwegian)
* no_NO (Norwegian, as spoken in Norway)
* nr (Ndebele, South)
* nso (Unknown language)
* oc (Occitan (post 1500))
* oc_FR (Occitan (post 1500), as spoken in France)
* om (Oromo)
* or (Oriya)
* pa (Panjabi)
* pl (Polish)
* pl_PL (Polish, as spoken in Poland)
* pms (Unknown language)
* ps (Pushto)
* pt (Portuguese)
* pt_BR (Portuguese, as spoken in Brazil)
* pt_PT (Portuguese, as spoken in Portugal)
* qu (Quechua)
* rm (Rhaeto-Romance)
* ro (Romanian)
* ro_RO (Romanian, as spoken in Romania)
* ru (Russian)
* ru_RU (Russian, as spoken in Russia)
* rw (Kinyarwanda)
* sa (Sanskrit)
* sc (Sardinian)
* sd (Sindhi)
* se (Sami)
* se_NO (Sami, as spoken in Norway)
* si (Sinhalese)
* si_LK (Sinhalese, as spoken in Sri Lanka)
* si_SI (Sinhalese, as spoken in Slovenia)
* sk (Slovak)
* sk_SK (Slovak, as spoken in Slovakia)
* sl (Slovenian)
* sl_SI (Slovenian, as spoken in Slovenia)
* sl_SL (Slovenian, as spoken in Sierra Leone)
* so (Somali)
* sp (Unknown language)
* sq (Albanian)
* sq_AL (Albanian, as spoken in Albania)
* sr (Serbian)
* sr@Latn (Unknown language)
* sr@ije (Unknown language)
* sr@ijekavian (Unknown language)
* sr@ijekavianlatin (Unknown language)
* sr@latin (Unknown language)
* sr_SR (Serbian, as spoken in Suriname)
* sr_YU (Serbian, as spoken in Yugoslavia)
* st (Sotho)
* su (Sundanese)
* su_ID (Sundanese, as spoken in Indonesia)
* sv (Swedish)
* sv_SE (Swedish, as spoken in Sweden)
* sw (Swahili)
* ta (Tamil)
* ta_LK (Tamil, as spoken in Sri Lanka)
* te (Telugu)
* tg (Tajik)
* th (Thai)
* th_TH (Thai, as spoken in Thailand)
* ti (Tigrinya)
* tig (Unknown language)
* tk (Turkmen)
* tl (Tagalog)
* tlh (Unknown language)
* to (Tonga)
* tr (Turkish)
* tr_TR (Turkish, as spoken in Turkey)
* tt (Tatar)
* ug (Uighur)
* ug_CN (Uighur, as spoken in China)
* uk (Ukrainian)
* uk_UA (Ukrainian, as spoken in Ukraine)
* ur (Urdu)
* ur_PK (Urdu, as spoken in Pakistan)
* uz (Uzbek)
* uz@cyrillic (Unknown language)
* ve (Unknown language)
* vi (Vietnamese)
* vi_AR (Vietnamese, as spoken in Argentina)
* vi_DE (Vietnamese, as spoken in Germany)
* vi_PL (Vietnamese, as spoken in Poland)
* vi_TR (Vietnamese, as spoken in Turkey)
* vi_VN (Vietnamese, as spoken in Vietnam)
* wa (Unknown language)
* wal (Unknown language)
* wo (Wolof)
* xh (Xhosa)
* yi (Yiddish)
* yo (Yoruba)
* zh (Chinese)
* zh_CN (Chinese, as spoken in China)
* zh_HK (Chinese, as spoken in Hong Kong)
* zh_TW (Chinese, as spoken in Taiwan)
* zu (Zulu)

 'sq';    'albanian'
 'am';    'amharic'
#'ar';    'arabic'         # see polyglossia
 'hy';    'armenian'
#'';      'asturian'       # polyglossia
#'';      'bahasai'        # polyglossia
#'';      'bahasam'        # polyglossia
 'eu';    'basque'
 'bn';    'bengali'
 'pt_BR'; 'brazilian'
 'br';    'breton'
 'bg';    'bulgarian'
 'ca';    'catalan'        # see polyglossia
#'';      'coptic'         # polyglossia
 'hr';    'croatian'
 'cs';    'czech'
 'da';    'danish'
#'';      'divehi'         # polyglossia
 'nl';    'dutch'          # see polyglossia
 'en';    'english'        # see polyglossia
 'eo';    'esperanto'      # see polyglossia
 'et';    'estonian'
 'gl';    'galician'
 'de';    'german'
 'el';    'greek'          #gl ?
 'he';    'hebrew'
 'hi';    'hindi'
 'is';    'icelandic'
 'ia';    'interlingua'
 'ga';    'irish'
 'it';    'italian'
#'';      'farsi'          # polyglossia
 'fi';    'finnish'
 'fr';    'french'
 'lo';    'lao'
 'la';    'latin'
 'lv';    'latvian'
 'lt';    'lithuanian'
#'';      'lsorbian'       # polyglossia
#'';      'magyar'         # polyglossia
 'ml';    'malayalam'
 'mr';    'marathi'
#'hu';    'magyar'
 'no';    'norske'
 'nn';    'nynorsk'
 'oc';    'occitan'
 'pl';    'polish'
 'pt';    'portuges'
 'ro';    'romanian'
 'ru';    'russian'
 'se';    'samin'          #(check sami?)
 'sa';    'sanskrit'
 'sr';    'serbian'
#'';      'scottish'       # polyglossia  (gd (Gaelic (Scots)))
 'sk';    'slovak'
 'sl';    'slovenian'
 'es';    'spanish'
 'sv';    'swedish'
 'ta';    'tamil'
 'te';    'telugu'
 'th';    'thai'
 'tr';    'turkish'
 'tk';    'turkmen'
 'uk';    'ukrainian'
 'ur';    'urdu'
#'';      'usorbian'       # polyglossia
 'vi';    'vietnamese'
 'cy';    'welsh'
 'us';    'USenglish'      # depreciated, see iso-639-2
