Back to index

plone3  3.1.7
languages.py
Go to the documentation of this file.
00001 # -*- coding: UTF-8 -*-
00002 
00003 from plone.i18n.locales.interfaces import IContentLanguageAvailability
00004 from plone.i18n.locales.interfaces import IMetadataLanguageAvailability
00005 from plone.i18n.locales.interfaces import ILanguageAvailability
00006 from zope.interface import implements
00007 
00008 class LanguageAvailability(object):
00009     """A list of available languages.
00010 
00011     Let's make sure that this implementation actually fulfills the API.
00012 
00013       >>> from zope.interface.verify import verifyClass
00014       >>> verifyClass(ILanguageAvailability, LanguageAvailability)
00015       True
00016     """
00017     implements(ILanguageAvailability)
00018 
00019     def getAvailableLanguages(self, combined=False):
00020         """Return a sequence of language tags for available languages.
00021         """
00022         languages = _languagelist.keys()
00023         if combined:
00024             languages.extend(_combinedlanguagelist.keys())
00025         return languages
00026 
00027     def getLanguages(self, combined=False):
00028         """Return a sequence of Language objects for available languages.
00029         """
00030         languages = _languagelist.copy()
00031         if combined:
00032             languages.update(_combinedlanguagelist.copy())
00033         return languages
00034 
00035     def getLanguageListing(self, combined=False):
00036         """Return a sequence of language code and language name tuples.
00037         """
00038         languages = _languagelist.copy()
00039         if combined:
00040             languages.update(_combinedlanguagelist.copy())
00041         return [(code, languages[code][u'name']) for code in languages]
00042 
00043 
00044 class ContentLanguageAvailability(LanguageAvailability):
00045     """A list of available content languages.
00046 
00047     Let's make sure that this implementation actually fulfills the API.
00048 
00049       >>> from zope.interface.verify import verifyClass
00050       >>> verifyClass(IContentLanguageAvailability, ContentLanguageAvailability)
00051       True
00052     """
00053     implements(IContentLanguageAvailability)
00054 
00055 contentlanguages = ContentLanguageAvailability()
00056 
00057 class MetadataLanguageAvailability(LanguageAvailability):
00058     """A list of available metadata languages.
00059 
00060     Let's make sure that this implementation actually fulfills the API.
00061 
00062       >>> from zope.interface.verify import verifyClass
00063       >>> verifyClass(IMetadataLanguageAvailability, MetadataLanguageAvailability)
00064       True
00065     """
00066     implements(IMetadataLanguageAvailability)
00067 
00068 metadatalanguages = MetadataLanguageAvailability()
00069 
00070 # This is a dictionary of dictonaries:
00071 #
00072 # 'langcode-variation' : {u'native' : 'Native name', u'name' : 'English name', u'flag' : u'/++resource++country-flags/*.gif'}
00073 
00074 _languagelist = {
00075 u'aa' : {u'native' : 'магIарул мацI', u'name' : 'Afar',                         u'flag' : u'/++resource++country-flags/dj.gif'},
00076 u'ab' : {u'native' : 'бызшәа', u'name' : 'Abkhazian',                           u'flag' : u'/++resource++country-flags/ge.gif'},
00077 u'af' : {u'native' : 'Afrikaans', u'name' : 'Afrikaans'},
00078 u'am' : {u'native' : 'አማርኛ', u'name' : 'Amharic'},
00079 u'ar' : {u'native' : 'العربية', u'name' : 'Arabic',                             u'flag' : '/++resource++language-flags/ar.gif'},
00080 u'as' : {u'native' : 'অসমিয়া', u'name' : 'Assamese'},
00081 u'ay' : {u'native' : 'Aymara', u'name' : 'Aymara'},
00082 u'az' : {u'native' : 'Azəri Türkçəsi', u'name' : 'Azerbaijani',                 u'flag' : u'/++resource++country-flags/az.gif'},
00083 u'ba' : {u'native' : 'Bashkir', u'name' : 'Bashkir'},
00084 u'be' : {u'native' : 'Беларускі', u'name' : 'Belarussian',                      u'flag' : u'/++resource++country-flags/by.gif'},
00085 u'bg' : {u'native' : 'Български', u'name' : 'Bulgarian',                        u'flag' : u'/++resource++country-flags/bg.gif'},
00086 u'bh' : {u'native' : 'Bihari', u'name' : 'Bihari'},
00087 u'bi' : {u'native' : 'Bislama', u'name' : 'Bislama'},
00088 u'bn' : {u'native' : 'বাংলা', u'name' : 'Bengali'},
00089 u'bo' : {u'native' : 'བོད་སྐད་', u'name' : 'Tibetan'},
00090 u'bs' : {u'native' : 'Bosanski', u'name' : 'Bosnian',                           u'flag' : u'/++resource++country-flags/ba.gif'},
00091 u'br' : {u'native' : 'Brezhoneg', u'name' : 'Breton'},
00092 u'ca' : {u'native' : 'Català', u'name' : 'Catalan'},
00093 u'co' : {u'native' : 'Corsu', u'name' : 'Corsican'},
00094 u'cs' : {u'native' : 'Čeština', u'name' : 'Czech',                              u'flag' : u'/++resource++country-flags/cz.gif'},
00095 u'cy' : {u'native' : 'Cymraeg', u'name' : 'Welsh',                              u'flag' : '/++resource++language-flags/cy.gif'},
00096 u'da' : {u'native' : 'Dansk', u'name' : 'Danish',                               u'flag' : u'/++resource++country-flags/dk.gif'},
00097 u'de' : {u'native' : 'Deutsch', u'name' : 'German',                             u'flag' : u'/++resource++country-flags/de.gif'},
00098 u'dz' : {u'native' : 'Bhutani', u'name' : 'Indian Bhutani'},
00099 u'el' : {u'native' : 'Ελληνικά', u'name' : 'Greek',                             u'flag' : u'/++resource++country-flags/gr.gif'},
00100 u'en' : {u'native' : 'English', u'name' : 'English',                            u'flag' : u'/++resource++country-flags/gb.gif'},
00101 u'eo' : {u'native' : 'Esperanto', u'name' : 'Esperanto',                        u'flag' : '/++resource++language-flags/eo.gif'},
00102 u'es' : {u'native' : 'Español', u'name' : 'Spanish',                            u'flag' : u'/++resource++country-flags/es.gif'},
00103 u'et' : {u'native' : 'Eesti', u'name' : 'Estonian',                             u'flag' : u'/++resource++country-flags/ee.gif'},
00104 u'eu' : {u'native' : 'Euskara', u'name' : 'Basque',                             u'flag' : '/++resource++language-flags/eu.gif'},
00105 u'fa' : {u'native' : 'فارسی', u'name' : 'Persian'},
00106 u'fi' : {u'native' : 'Suomi', u'name' : 'Finnish',                              u'flag' : u'/++resource++country-flags/fi.gif'},
00107 u'fj' : {u'native' : 'Fiji', u'name' : 'Fiji',                                  u'flag' : u'/++resource++country-flags/fj.gif'},
00108 u'fo' : {u'native' : 'Føroyska', u'name' : 'Faroese',                           u'flag' : u'/++resource++country-flags/fo.gif'},
00109 u'fr' : {u'native' : 'Français', u'name' : 'French',                            u'flag' : u'/++resource++country-flags/fr.gif'},
00110 u'fy' : {u'native' : 'Frysk', u'name' : 'Frisian'},
00111 u'ga' : {u'native' : 'Gaeilge', u'name' : 'Irish Gaelic'},
00112 u'gd' : {u'native' : 'Gàidhlig', u'name' : 'Scottish Gaelic'},
00113 u'gl' : {u'native' : 'Galego', u'name' : 'Galician'},
00114 u'gn' : {u'native' : 'Guarani', u'name' : 'Guarani'},
00115 u'gu' : {u'native' : 'ગુજરાતી', u'name' : 'Gujarati'},
00116 u'gv' : {u'native' : 'Gaelg', u'name' : 'Manx Gaelic'},
00117 u'ha' : {u'native' : 'هَوُس', u'name' : 'Hausa'},
00118 u'he' : {u'native' : 'עברית', u'name' : 'Hebrew',                               u'flag' : u'/++resource++country-flags/il.gif'},
00119 u'hi' : {u'native' : 'हिंदी', u'name' : 'Hindi',                                u'flag' : u'/++resource++country-flags/in.gif'},
00120 u'hr' : {u'native' : 'Hrvatski', u'name' : 'Croatian',                          u'flag' : u'/++resource++country-flags/hr.gif'},
00121 u'hu' : {u'native' : 'Magyar', u'name' : 'Hungarian',                           u'flag' : u'/++resource++country-flags/hu.gif'},
00122 u'hy' : {u'native' : 'Հայերէն', u'name' : 'Armenian',                           u'flag' : u'/++resource++country-flags/am.gif'},
00123 u'ia' : {u'native' : 'Interlingua', u'name' : 'Interlingua'},
00124 u'id' : {u'native' : 'Bahasa Indonesia', u'name' : 'Indonesian',                u'flag' : u'/++resource++country-flags/id.gif'},
00125 u'ie' : {u'native' : 'Interlingue', u'name' : 'Interlingue'},
00126 u'ik' : {u'native' : 'Inupiak', u'name' : 'Inupiak'},
00127 u'is' : {u'native' : 'Íslenska', u'name' : 'Icelandic',                         u'flag' : u'/++resource++country-flags/is.gif'},
00128 u'it' : {u'native' : 'Italiano', u'name' : 'Italian',                           u'flag' : u'/++resource++country-flags/it.gif'},
00129 u'iu' : {u'native' : 'ᐃᓄᒃᑎᑐᑦ', u'name' : 'Inuktitut'},
00130 u'ja' : {u'native' : '日本語', u'name' : 'Japanese',                               u'flag' : u'/++resource++country-flags/jp.gif'},
00131 u'jw' : {u'native' : 'Javanese', u'name' : 'Javanese'},
00132 u'ka' : {u'native' : 'ქართული', u'name' : 'Georgian',                           u'flag' : u'/++resource++country-flags/ge.gif'},
00133 u'kk' : {u'native' : 'ﻗﺎﺯﺍﻗﺸﺎ', u'name' : 'Kazakh',                             u'flag' : u'/++resource++country-flags/kz.gif'},
00134 u'kl' : {u'native' : 'Greenlandic', u'name' : 'Greenlandic',                    u'flag' : u'/++resource++country-flags/gl.gif'},
00135 u'km' : {u'native' : 'ខ្មែរ', u'name' : 'Cambodian/Khmer',                      u'flag' : u'/++resource++country-flags/kh.gif'},
00136 u'kn' : {u'native' : 'ಕನ್ನಡ', u'name' : 'Kannada',                              u'flag' : u'/++resource++country-flags/in.gif'},
00137 u'ko' : {u'native' : '한국어', u'name' : 'Korean',                                 u'flag' : u'/++resource++country-flags/kr.gif'},
00138 u'ks' : {u'native' : 'काऽशुर', u'name' : 'Kashmiri',                            u'flag' : u'/++resource++country-flags/in.gif'},
00139 u'ku' : {u'native' : 'Kurdí', u'name' : 'Kurdish'},
00140 u'kw' : {u'native' : 'Kernewek', u'name' : 'Cornish'},
00141 u'ky' : {u'native' : 'Кыргыз', u'name' : 'Kirghiz'},
00142 u'la' : {u'native' : 'Latin', u'name' : 'Latin',                                u'flag' : u'/++resource++country-flags/va.gif'},
00143 u'lb' : {u'native' : 'Lëtzebuergesch', u'name' : 'Luxemburgish',                u'flag' : u'/++resource++country-flags/lu.gif'},
00144 u'li' : {u'native' : 'Limburgs', u'name' : 'Limburgish'},
00145 u'ln' : {u'native' : 'Lingala', u'name' : 'Lingala'},
00146 u'lo' : {u'native' : 'ພາສາລາວ', u'name' : 'Laotian',                            u'flag' : u'/++resource++country-flags/la.gif'},
00147 u'lt' : {u'native' : 'Lietuviskai', u'name' : 'Lithuanian',                     u'flag' : u'/++resource++country-flags/lt.gif'},
00148 u'lv' : {u'native' : 'Latviešu', u'name' : 'Latvian'},
00149 u'me' : {u'native' : 'Crnogorski jezik', u'name' : 'Montenegrin'},
00150 u'mg' : {u'native' : 'Malagasy', u'name' : 'Madagascarian',                     u'flag' : u'/++resource++country-flags/mg.gif'},
00151 u'mi' : {u'native' : 'Maori', u'name' : 'Maori'},
00152 u'mk' : {u'native' : 'Македонски', u'name' : 'Macedonian',                      u'flag' : u'/++resource++country-flags/mk.gif'},
00153 u'ml' : {u'native' : 'മലയാളം', u'name' : 'Malayalam'},
00154 u'mn' : {u'native' : 'Монгол', u'name' : 'Mongolian',                           u'flag' : u'/++resource++country-flags/mn.gif'},
00155 u'mo' : {u'native' : 'Moldavian', u'name' : 'Moldavian',                        u'flag' : u'/++resource++country-flags/md.gif'},
00156 u'mr' : {u'native' : 'मराठी', u'name' : 'Marathi'},
00157 u'ms' : {u'native' : 'Bahasa Melayu', u'name' : 'Malay'},
00158 u'mt' : {u'native' : 'Malti', u'name' : 'Maltese',                              u'flag' : u'/++resource++country-flags/mt.gif'},
00159 u'my' : {u'native' : 'Burmese', u'name' : 'Burmese'},
00160 u'na' : {u'native' : 'Nauru', u'name' : 'Nauruan',                              u'flag' : u'/++resource++country-flags/nr.gif'},
00161 u'ne' : {u'native' : 'नेपाली', u'name' : 'Nepali'},
00162 u'nl' : {u'native' : 'Nederlands', u'name' : 'Dutch',                           u'flag' : u'/++resource++country-flags/nl.gif'},
00163 u'no' : {u'native' : 'Norsk', u'name' : 'Norwegian',                            u'flag' : u'/++resource++country-flags/no.gif'},
00164 u'nn' : {u'native' : 'Nynorsk', u'name' : 'Nynorsk',                            u'flag' : u'/++resource++country-flags/no.gif'},
00165 u'oc' : {u'native' : 'Occitan', u'name' : 'Occitan'},
00166 u'om' : {u'native' : 'Oromo', u'name' : 'Oromo'},
00167 u'or' : {u'native' : 'ଓଡ଼ିଆ', u'name' : 'Oriya'},
00168 u'pa' : {u'native' : 'ਪੰਜਾਬੀ', u'name' : 'Punjabi'},
00169 u'pl' : {u'native' : 'Polski', u'name' : 'Polish',                              u'flag' : u'/++resource++country-flags/pl.gif'},
00170 u'ps' : {u'native' : 'پښتو', u'name' : 'Pashto'},
00171 u'pt' : {u'native' : 'Português', u'name' : 'Portuguese',                       u'flag' : u'/++resource++country-flags/pt.gif'},
00172 u'qu' : {u'native' : 'Quechua', u'name' : 'Quechua'},
00173 u'rm' : {u'native' : 'Rhaeto-Romance', u'name' : 'Rhaeto-Romance'},
00174 u'rn' : {u'native' : 'Kirundi', u'name' : 'Kirundi'},
00175 u'ro' : {u'native' : 'Română', u'name' : 'Romanian',                            u'flag' : u'/++resource++country-flags/ro.gif'},
00176 u'ru' : {u'native' : 'Русский', u'name' : 'Russian',                            u'flag' : u'/++resource++country-flags/ru.gif'},
00177 u'rw' : {u'native' : 'Kiyarwanda', u'name' : 'Kiyarwanda'},
00178 u'sa' : {u'native' : 'संस्कृत', u'name' : 'Sanskrit'},
00179 u'sd' : {u'native' : 'Sindhi', u'name' : 'Sindhi',                              u'flag' : u'/++resource++country-flags/pk.gif'},
00180 u'se' : {u'native' : 'Northern Sámi', u'name' : 'Northern Sámi'},
00181 u'sg' : {u'native' : 'Sangho', u'name' : 'Sangho',                              u'flag' : u'/++resource++country-flags/cf.gif'},
00182 u'sh' : {u'native' : 'Serbo-Croatian', u'name' : 'Serbo-Croatian'},
00183 u'si' : {u'native' : 'Singhalese', u'name' : 'Singhalese'},
00184 u'sk' : {u'native' : 'Slovenčina', u'name' : 'Slovak',                          u'flag' : u'/++resource++country-flags/sk.gif'},
00185 u'sl' : {u'native' : 'Slovenščina', u'name' : 'Slovenian',                      u'flag' : u'/++resource++country-flags/si.gif'},
00186 u'sm' : {u'native' : 'Samoan', u'name' : 'Samoan'},
00187 u'sn' : {u'native' : 'Shona', u'name' : 'Shona'},
00188 u'so' : {u'native' : 'Somali', u'name' : 'Somali',                              u'flag' : u'/++resource++country-flags/so.gif'},
00189 u'sq' : {u'native' : 'Shqip', u'name' : 'Albanian',                             u'flag' : u'/++resource++country-flags/al.gif'},
00190 u'sr' : {u'native' : 'српски', u'name' : 'Serbian',                             u'flag' : u'/++resource++country-flags/cs.gif'},
00191 u'ss' : {u'native' : 'Siswati', u'name' : 'Siswati'},
00192 u'st' : {u'native' : 'Sesotho', u'name' : 'Sesotho'},
00193 u'su' : {u'native' : 'Sudanese', u'name' : 'Sudanese',                          u'flag' : u'/++resource++country-flags/sd.gif'},
00194 u'sv' : {u'native' : 'Svenska', u'name' : 'Swedish',                            u'flag' : u'/++resource++country-flags/se.gif'},
00195 u'sw' : {u'native' : 'Swahili', u'name' : 'Swahili'},
00196 u'ta' : {u'native' : 'தமிழ', u'name' : 'Tamil'},
00197 u'te' : {u'native' : 'తెలుగు', u'name' : 'Telugu'},
00198 u'tg' : {u'native' : 'Тоҷики', u'name' : 'Tadjik',                              u'flag' : u'/++resource++country-flags/tj.gif'},
00199 u'th' : {u'native' : 'ไทย', u'name' : 'Thai',                                   u'flag' : u'/++resource++country-flags/th.gif'},
00200 u'ti' : {u'native' : 'ትግርኛ', u'name' : 'Tigrinya'},
00201 u'tk' : {u'native' : 'түркmенче', u'name' : 'Turkmen',                          u'flag' : u'/++resource++country-flags/tm.gif'},
00202 u'tl' : {u'native' : 'Tagalog', u'name' : 'Tagalog'},
00203 u'tn' : {u'native' : 'Setswana', u'name' : 'Setswana',                          u'flag' : u'/++resource++country-flags/bw.gif'},
00204 u'to' : {u'native' : 'Tonga', u'name' : 'Tonga'},
00205 u'tr' : {u'native' : 'Türkçe', u'name' : 'Turkish',                             u'flag' : u'/++resource++country-flags/tr.gif'},
00206 u'ts' : {u'native' : 'Tsonga', u'name' : 'Tsonga'},
00207 u'tt' : {u'native' : 'татарча', u'name' : 'Tatar'},
00208 u'tw' : {u'native' : 'Twi', u'name' : 'Twi'},
00209 u'ug' : {u'native' : 'Uigur', u'name' : 'Uigur'},
00210 u'uk' : {u'native' : 'Українська', u'name' : 'Ukrainian',                       u'flag' : u'/++resource++country-flags/ua.gif'},
00211 u'ur' : {u'native' : 'اردو', u'name' : 'Urdu'},
00212 u'uz' : {u'native' : 'Ўзбекча', u'name' : 'Uzbek',                              u'flag' : u'/++resource++country-flags/uz.gif'},
00213 u'vi' : {u'native' : 'Tiếng Việt', u'name' : 'Vietnamese',                      u'flag' : u'/++resource++country-flags/vn.gif'},
00214 u'vo' : {u'native' : 'Volapük', u'name' : 'Volapük'},
00215 u'wa' : {u'native' : 'Walon', u'name' : 'Walloon'},
00216 u'wo' : {u'native' : 'Wolof', u'name' : 'Wolof'},
00217 u'xh' : {u'native' : 'isiXhosa', u'name' : 'Xhosa'},
00218 u'yi' : {u'native' : 'ײִדיש', u'name' : 'Yiddish',                              u'flag' : u'/++resource++country-flags/il.gif'},
00219 u'yo' : {u'native' : 'Yorùbá', u'name' : 'Yorouba'},
00220 u'za' : {u'native' : 'Zhuang', u'name' : 'Zhuang'},
00221 u'zh' : {u'native' : '中文', u'name' : 'Chinese',                                 u'flag' : u'/++resource++country-flags/cn.gif'},
00222 u'zu' : {u'native' : 'isiZulu', u'name' : 'Zulu',                               u'flag' : u'/++resource++country-flags/za.gif'}
00223 }
00224 
00225 # convert the utf-8 encoded values to unicode
00226 for code in _languagelist:
00227     value = _languagelist[code]
00228     if u'name' in value:
00229         value[u'name'] = unicode(value[u'name'], 'utf-8')
00230     if u'native' in value:
00231         value[u'native'] = unicode(value[u'native'], 'utf-8')
00232 
00233 _combinedlanguagelist = {
00234 u'ar-ae' : {u'name' : 'Arabic (United Arab Emirates)',                          u'flag' : u'/++resource++country-flags/ae.gif'},
00235 u'ar-bh' : {u'name' : 'Arabic (Bahrain)',                                       u'flag' : u'/++resource++country-flags/bh.gif'},
00236 u'ar-dz' : {u'name' : 'Arabic (Algeria)',                                       u'flag' : u'/++resource++country-flags/dz.gif'},
00237 u'ar-eg' : {u'name' : 'Arabic (Egypt)',                                         u'flag' : u'/++resource++country-flags/eg.gif'},
00238 u'ar-il' : {u'name' : 'Arabic (Israel)',                                        u'flag' : u'/++resource++country-flags/il.gif'},
00239 u'ar-iq' : {u'name' : 'Arabic (Iraq)',                                          u'flag' : u'/++resource++country-flags/iq.gif'},
00240 u'ar-jo' : {u'name' : 'Arabic (Jordan)',                                        u'flag' : u'/++resource++country-flags/jo.gif'},
00241 u'ar-kw' : {u'name' : 'Arabic (Kuwait)',                                        u'flag' : u'/++resource++country-flags/kw.gif'},
00242 u'ar-lb' : {u'name' : 'Arabic (Lebanon)',                                       u'flag' : u'/++resource++country-flags/lb.gif'},
00243 u'ar-ly' : {u'name' : 'Arabic (Libya)',                                         u'flag' : u'/++resource++country-flags/ly.gif'},
00244 u'ar-ma' : {u'name' : 'Arabic (Morocco)',                                       u'flag' : u'/++resource++country-flags/ma.gif'},
00245 u'ar-mr' : {u'name' : 'Arabic (Mauritania)',                                    u'flag' : u'/++resource++country-flags/mr.gif'},
00246 u'ar-om' : {u'name' : 'Arabic (Oman)',                                          u'flag' : u'/++resource++country-flags/om.gif'},
00247 u'ar-ps' : {u'name' : 'Arabic (Palestinian West Bank and Gaza)',                u'flag' : u'/++resource++country-flags/ps.gif'},
00248 u'ar-qa' : {u'name' : 'Arabic (Qatar)',                                         u'flag' : u'/++resource++country-flags/qa.gif'},
00249 u'ar-sa' : {u'name' : 'Arabic (Saudi Arabia)',                                  u'flag' : u'/++resource++country-flags/sa.gif'},
00250 u'ar-sd' : {u'name' : 'Arabic (Sudan)',                                         u'flag' : u'/++resource++country-flags/ly.gif'},
00251 u'ar-so' : {u'name' : 'Arabic (Somalia)',                                       u'flag' : u'/++resource++country-flags/so.gif'},
00252 u'ar-sy' : {u'name' : 'Arabic (Syria)',                                         u'flag' : u'/++resource++country-flags/sy.gif'},
00253 u'ar-td' : {u'name' : 'Arabic (Chad)',                                          u'flag' : u'/++resource++country-flags/td.gif'},
00254 u'ar-tn' : {u'name' : 'Arabic (Tunisia)',                                       u'flag' : u'/++resource++country-flags/ly.gif'},
00255 u'ar-ye' : {u'name' : 'Arabic (Yemen)',                                         u'flag' : u'/++resource++country-flags/ye.gif'},
00256 u'bn-bd' : {u'name' : 'Bengali (Bangladesh)',                                   u'flag' : u'/++resource++country-flags/bd.gif'},
00257 u'bn-in' : {u'name' : 'Bengali (India)',                                        u'flag' : u'/++resource++country-flags/in.gif'},
00258 u'bn-sg' : {u'name' : 'Bengali (Singapore)',                                    u'flag' : u'/++resource++country-flags/sg.gif'},
00259 u'ch-gu' : {u'name' : 'Chamorro (Guam)',                                        u'flag' : u'/++resource++country-flags/gu.gif'},
00260 u'ch-mp' : {u'name' : 'Chamorro (Northern Mariana Islands)',                    u'flag' : u'/++resource++country-flags/mp.gif'},
00261 u'da-dk' : {u'name' : 'Danish (Denmark)',                                       u'flag' : u'/++resource++country-flags/dk.gif'},
00262 u'da-gl' : {u'name' : 'Danish (Greenland)',                                     u'flag' : u'/++resource++country-flags/gl.gif'},
00263 u'de-at' : {u'name' : 'German (Austria)', u'native' : 'Deutsch (Österreich)',   u'flag' : u'/++resource++country-flags/at.gif'},
00264 u'de-be' : {u'name' : 'German (Belgium)',                                       u'flag' : u'/++resource++country-flags/de.gif'},
00265 u'de-ch' : {u'name' : 'German (Switzerland)',                                   u'flag' : u'/++resource++country-flags/ch.gif'},
00266 u'de-de' : {u'name' : 'German (Germany)',                                       u'flag' : u'/++resource++country-flags/de.gif'},
00267 u'de-dk' : {u'name' : 'German (Denmark)',                                       u'flag' : u'/++resource++country-flags/de.gif'},
00268 u'de-li' : {u'name' : 'German (Liechtenstein)',                                 u'flag' : u'/++resource++country-flags/li.gif'},
00269 u'de-lu' : {u'name' : 'German (Luxembourg)',                                    u'flag' : u'/++resource++country-flags/de.gif'},
00270 u'el-cy' : {u'name' : 'Greek (Cyprus)',                                         u'flag' : u'/++resource++country-flags/cy.gif'},
00271 u'el-gr' : {u'name' : 'Greek (Greece)',                                         u'flag' : u'/++resource++country-flags/gr.gif'},
00272 u'en-ag' : {u'name' : 'English (Antigua and Barbuda)',                          u'flag' : u'/++resource++country-flags/ag.gif'},
00273 u'en-ai' : {u'name' : 'English (Anguilla)',                                     u'flag' : u'/++resource++country-flags/ai.gif'},
00274 u'en-as' : {u'name' : 'English (American Samoa)',                               u'flag' : u'/++resource++country-flags/as.gif'},
00275 u'en-au' : {u'name' : 'English (Australia)',                                    u'flag' : u'/++resource++country-flags/au.gif'},
00276 u'en-bb' : {u'name' : 'English (Barbados)',                                     u'flag' : u'/++resource++country-flags/bb.gif'},
00277 u'en-bm' : {u'name' : 'English (Bermuda)',                                      u'flag' : u'/++resource++country-flags/bm.gif'},
00278 u'en-bn' : {u'name' : 'English (Brunei)',                                       u'flag' : u'/++resource++country-flags/bn.gif'},
00279 u'en-bs' : {u'name' : 'English (Bahamas)',                                      u'flag' : u'/++resource++country-flags/bs.gif'},
00280 u'en-bw' : {u'name' : 'English (Botswana)',                                     u'flag' : u'/++resource++country-flags/bw.gif'},
00281 u'en-bz' : {u'name' : 'English (Belize)',                                       u'flag' : u'/++resource++country-flags/bz.gif'},
00282 u'en-ca' : {u'name' : 'English (Canada)',                                       u'flag' : u'/++resource++country-flags/ca.gif'},
00283 u'en-ck' : {u'name' : 'English (Cook Islands)',                                 u'flag' : u'/++resource++country-flags/ck.gif'},
00284 u'en-cm' : {u'name' : 'English (Cameroon)',                                     u'flag' : u'/++resource++country-flags/cm.gif'},
00285 u'en-dm' : {u'name' : 'English (Dominica)',                                     u'flag' : u'/++resource++country-flags/dm.gif'},
00286 u'en-er' : {u'name' : 'English (Eritrea)',                                      u'flag' : u'/++resource++country-flags/er.gif'},
00287 u'en-et' : {u'name' : 'English (Ethiopia)',                                     u'flag' : u'/++resource++country-flags/et.gif'},
00288 u'en-fj' : {u'name' : 'English (Fiji)',                                         u'flag' : u'/++resource++country-flags/fj.gif'},
00289 u'en-fk' : {u'name' : 'English (Falkland Islands)',                             u'flag' : u'/++resource++country-flags/fk.gif'},
00290 u'en-fm' : {u'name' : 'English (Micronesia)',                                   u'flag' : u'/++resource++country-flags/fm.gif'},
00291 u'en-gb' : {u'name' : 'English (United Kingdom)',                               u'flag' : u'/++resource++country-flags/gb.gif'},
00292 u'en-gd' : {u'name' : 'English (Grenada)',                                      u'flag' : u'/++resource++country-flags/gd.gif'},
00293 u'en-gh' : {u'name' : 'English (Ghana)',                                        u'flag' : u'/++resource++country-flags/gh.gif'},
00294 u'en-gi' : {u'name' : 'English (Gibraltar)',                                    u'flag' : u'/++resource++country-flags/gi.gif'},
00295 u'en-gm' : {u'name' : 'English (Gambia)',                                       u'flag' : u'/++resource++country-flags/gm.gif'},
00296 u'en-gu' : {u'name' : 'English (Guam)',                                         u'flag' : u'/++resource++country-flags/gu.gif'},
00297 u'en-gy' : {u'name' : 'English (Guyana)',                                       u'flag' : u'/++resource++country-flags/gy.gif'},
00298 u'en-ie' : {u'name' : 'English (Ireland)',                                      u'flag' : u'/++resource++country-flags/ie.gif'},
00299 u'en-il' : {u'name' : 'English (Israel)',                                       u'flag' : u'/++resource++country-flags/gb.gif'},
00300 u'en-io' : {u'name' : 'English (British Indian Ocean Territory)',               u'flag' : u'/++resource++country-flags/io.gif'},
00301 u'en-jm' : {u'name' : 'English (Jamaica)',                                      u'flag' : u'/++resource++country-flags/jm.gif'},
00302 u'en-ke' : {u'name' : 'English (Kenya)',                                        u'flag' : u'/++resource++country-flags/ke.gif'},
00303 u'en-ki' : {u'name' : 'English (Kiribati)',                                     u'flag' : u'/++resource++country-flags/ki.gif'},
00304 u'en-kn' : {u'name' : 'English (St. Kitts-Nevis)',                              u'flag' : u'/++resource++country-flags/kn.gif'},
00305 u'en-ky' : {u'name' : 'English (Cayman Islands)',                               u'flag' : u'/++resource++country-flags/ky.gif'},
00306 u'en-lc' : {u'name' : 'English (St. Lucia)',                                    u'flag' : u'/++resource++country-flags/lc.gif'},
00307 u'en-lr' : {u'name' : 'English (Liberia)',                                      u'flag' : u'/++resource++country-flags/lr.gif'},
00308 u'en-ls' : {u'name' : 'English (Lesotho)',                                      u'flag' : u'/++resource++country-flags/ls.gif'},
00309 u'en-mp' : {u'name' : 'English (Northern Mariana Islands)',                     u'flag' : u'/++resource++country-flags/mp.gif'},
00310 u'en-ms' : {u'name' : 'English (Montserrat)',                                   u'flag' : u'/++resource++country-flags/ms.gif'},
00311 u'en-mt' : {u'name' : 'English (Malta)',                                        u'flag' : u'/++resource++country-flags/mt.gif'},
00312 u'en-mu' : {u'name' : 'English (Mauritius)',                                    u'flag' : u'/++resource++country-flags/mu.gif'},
00313 u'en-mw' : {u'name' : 'English (Malawi)',                                       u'flag' : u'/++resource++country-flags/mw.gif'},
00314 u'en-na' : {u'name' : 'English (Namibia)',                                      u'flag' : u'/++resource++country-flags/na.gif'},
00315 u'en-nf' : {u'name' : 'English (Norfolk Island)',                               u'flag' : u'/++resource++country-flags/nf.gif'},
00316 u'en-ng' : {u'name' : 'English (Nigeria)',                                      u'flag' : u'/++resource++country-flags/ng.gif'},
00317 u'en-nr' : {u'name' : 'English (Nauru)',                                        u'flag' : u'/++resource++country-flags/nr.gif'},
00318 u'en-nu' : {u'name' : 'English (Niue)',                                         u'flag' : u'/++resource++country-flags/nu.gif'},
00319 u'en-nz' : {u'name' : 'English (New Zealand)',                                  u'flag' : u'/++resource++country-flags/nz.gif'},
00320 u'en-pg' : {u'name' : 'English (Papua New Guinea)',                             u'flag' : u'/++resource++country-flags/pg.gif'},
00321 u'en-ph' : {u'name' : 'English (Philippines)',                                  u'flag' : u'/++resource++country-flags/ph.gif'},
00322 u'en-pk' : {u'name' : 'English (Pakistan)',                                     u'flag' : u'/++resource++country-flags/pk.gif'},
00323 u'en-pn' : {u'name' : 'English (Pitcairn)',                                     u'flag' : u'/++resource++country-flags/pn.gif'},
00324 u'en-pr' : {u'name' : 'English (Puerto Rico)',                                  u'flag' : u'/++resource++country-flags/pr.gif'},
00325 u'en-pw' : {u'name' : 'English (Palau)',                                        u'flag' : u'/++resource++country-flags/pw.gif'},
00326 u'en-rw' : {u'name' : 'English (Rwanda)',                                       u'flag' : u'/++resource++country-flags/rw.gif'},
00327 u'en-sb' : {u'name' : 'English (Solomon Islands)',                              u'flag' : u'/++resource++country-flags/sb.gif'},
00328 u'en-sc' : {u'name' : 'English (Seychelles)',                                   u'flag' : u'/++resource++country-flags/sc.gif'},
00329 u'en-sg' : {u'name' : 'English (Singapore)',                                    u'flag' : u'/++resource++country-flags/sg.gif'},
00330 u'en-sh' : {u'name' : 'English (St. Helena)',                                   u'flag' : u'/++resource++country-flags/sh.gif'},
00331 u'en-sl' : {u'name' : 'English (Sierra Leone)',                                 u'flag' : u'/++resource++country-flags/sl.gif'},
00332 u'en-so' : {u'name' : 'English (Somalia)',                                      u'flag' : u'/++resource++country-flags/so.gif'},
00333 u'en-sz' : {u'name' : 'English (Swaziland)',                                    u'flag' : u'/++resource++country-flags/sz.gif'},
00334 u'en-tc' : {u'name' : 'English (Turks and Caicos Islands)',                     u'flag' : u'/++resource++country-flags/tc.gif'},
00335 u'en-tk' : {u'name' : 'English (Tokelau)',                                      u'flag' : u'/++resource++country-flags/tk.gif'},
00336 u'en-to' : {u'name' : 'English (Tonga)',                                        u'flag' : u'/++resource++country-flags/to.gif'},
00337 u'en-tt' : {u'name' : 'English (Trinidad and Tobago)',                          u'flag' : u'/++resource++country-flags/tt.gif'},
00338 u'en-ug' : {u'name' : 'English (Uganda)',                                       u'flag' : u'/++resource++country-flags/ug.gif'},
00339 u'en-us' : {u'name' : 'English (USA)',                                          u'flag' : u'/++resource++country-flags/us.gif'},
00340 u'en-vc' : {u'name' : 'English (St. Vincent and the Grenadi)',                  u'flag' : u'/++resource++country-flags/vc.gif'},
00341 u'en-vg' : {u'name' : 'English (British Virgin Islands)',                       u'flag' : u'/++resource++country-flags/vg.gif'},
00342 u'en-vi' : {u'name' : 'English (U.S. Virgin Islands)',                          u'flag' : u'/++resource++country-flags/vi.gif'},
00343 u'en-vu' : {u'name' : 'English (Vanuatu)',                                      u'flag' : u'/++resource++country-flags/vu.gif'},
00344 u'en-ws' : {u'name' : 'English (Western Samoa)',                                u'flag' : u'/++resource++country-flags/ws.gif'},
00345 u'en-za' : {u'name' : 'English (South Africa)',                                 u'flag' : u'/++resource++country-flags/za.gif'},
00346 u'en-zm' : {u'name' : 'English (Zambia)',                                       u'flag' : u'/++resource++country-flags/zm.gif'},
00347 u'en-zw' : {u'name' : 'English (Zimbabwe)',                                     u'flag' : u'/++resource++country-flags/zw.gif'},
00348 u'es-ar' : {u'name' : 'Spanish (Argentina)',                                    u'flag' : u'/++resource++country-flags/ar.gif'},
00349 u'es-bo' : {u'name' : 'Spanish (Bolivia)',                                      u'flag' : u'/++resource++country-flags/bo.gif'},
00350 u'es-cl' : {u'name' : 'Spanish (Chile)',                                        u'flag' : u'/++resource++country-flags/cl.gif'},
00351 u'es-co' : {u'name' : 'Spanish (Colombia)',                                     u'flag' : u'/++resource++country-flags/co.gif'},
00352 u'es-cr' : {u'name' : 'Spanish (Costa Rica)',                                   u'flag' : u'/++resource++country-flags/cr.gif'},
00353 u'es-cu' : {u'name' : 'Spanish (Cuba)',                                         u'flag' : u'/++resource++country-flags/cu.gif'},
00354 u'es-do' : {u'name' : 'Spanish (Dominican Republic)',                           u'flag' : u'/++resource++country-flags/do.gif'},
00355 u'es-ec' : {u'name' : 'Spanish (Ecuador)',                                      u'flag' : u'/++resource++country-flags/ec.gif'},
00356 u'es-es' : {u'name' : 'Spanish (Spain)',                                        u'flag' : u'/++resource++country-flags/es.gif'},
00357 u'es-gq' : {u'name' : 'Spanish (Equatorial Guinea)',                            u'flag' : u'/++resource++country-flags/gq.gif'},
00358 u'es-gt' : {u'name' : 'Spanish (Guatemala)',                                    u'flag' : u'/++resource++country-flags/gt.gif'},
00359 u'es-hn' : {u'name' : 'Spanish (Honduras)',                                     u'flag' : u'/++resource++country-flags/hn.gif'},
00360 u'es-mx' : {u'name' : 'Spanish (Mexico)',                                       u'flag' : u'/++resource++country-flags/mx.gif'},
00361 u'es-ni' : {u'name' : 'Spanish (Nicaragua)',                                    u'flag' : u'/++resource++country-flags/ni.gif'},
00362 u'es-pa' : {u'name' : 'Spanish (Panama)',                                       u'flag' : u'/++resource++country-flags/pa.gif'},
00363 u'es-pe' : {u'name' : 'Spanish (Peru)',                                         u'flag' : u'/++resource++country-flags/pe.gif'},
00364 u'es-pr' : {u'name' : 'Spanish (Puerto Rico)',                                  u'flag' : u'/++resource++country-flags/pr.gif'},
00365 u'es-py' : {u'name' : 'Spanish (Paraguay)',                                     u'flag' : u'/++resource++country-flags/py.gif'},
00366 u'es-sv' : {u'name' : 'Spanish (El Salvador)',                                  u'flag' : u'/++resource++country-flags/sv.gif'},
00367 u'es-us' : {u'name' : 'Spanish (USA)',                                          u'flag' : u'/++resource++country-flags/us.gif'},
00368 u'es-uy' : {u'name' : 'Spanish (Uruguay)',                                      u'flag' : u'/++resource++country-flags/uy.gif'},
00369 u'es-ve' : {u'name' : 'Spanish (Venezuela)',                                    u'flag' : u'/++resource++country-flags/ve.gif'},
00370 u'fr-ad' : {u'name' : 'French (Andorra)',                                       u'flag' : u'/++resource++country-flags/ad.gif'},
00371 u'fr-be' : {u'name' : 'French (Belgium)',                                       u'flag' : u'/++resource++country-flags/be.gif'},
00372 u'fr-bf' : {u'name' : 'French (Burkina Faso)',                                  u'flag' : u'/++resource++country-flags/bf.gif'},
00373 u'fr-bi' : {u'name' : 'French (Burundi)',                                       u'flag' : u'/++resource++country-flags/bi.gif'},
00374 u'fr-bj' : {u'name' : 'French (Benin)',                                         u'flag' : u'/++resource++country-flags/bj.gif'},
00375 u'fr-ca' : {u'name' : 'French (Canada)',                                        u'flag' : u'/++resource++country-flags/ca.gif'},
00376 u'fr-cd' : {u'name' : 'French (Democratic Republic of Congo)',                  u'flag' : u'/++resource++country-flags/cd.gif'},
00377 u'fr-cf' : {u'name' : 'French (Central African Republic)',                      u'flag' : u'/++resource++country-flags/cf.gif'},
00378 u'fr-cg' : {u'name' : 'French (Congo)',                                         u'flag' : u'/++resource++country-flags/cg.gif'},
00379 u'fr-ch' : {u'name' : 'French (Switzerland)',                                   u'flag' : u'/++resource++country-flags/ch.gif'},
00380 u'fr-ci' : {u'name' : 'French (Cote d\'Ivoire)',                                u'flag' : u'/++resource++country-flags/ci.gif'},
00381 u'fr-cm' : {u'name' : 'French (Cameroon)',                                      u'flag' : u'/++resource++country-flags/cm.gif'},
00382 u'fr-dj' : {u'name' : 'French (Djibouti)',                                      u'flag' : u'/++resource++country-flags/dj.gif'},
00383 u'fr-fr' : {u'name' : 'French (France)',                                        u'flag' : u'/++resource++country-flags/fr.gif'},
00384 u'fr-ga' : {u'name' : 'French (Gabon)',                                         u'flag' : u'/++resource++country-flags/ga.gif'},
00385 u'fr-gb' : {u'name' : 'French (United Kingdom)',                                u'flag' : u'/++resource++country-flags/gb.gif'},
00386 u'fr-gf' : {u'name' : 'French (French Guiana)',                                 u'flag' : u'/++resource++country-flags/gf.gif'},
00387 u'fr-gn' : {u'name' : 'French (Guinea)',                                        u'flag' : u'/++resource++country-flags/gn.gif'},
00388 u'fr-gp' : {u'name' : 'French (Guadeloupe)',                                    u'flag' : u'/++resource++country-flags/gp.gif'},
00389 u'fr-ht' : {u'name' : 'French (Haiti)',                                         u'flag' : u'/++resource++country-flags/ht.gif'},
00390 u'fr-it' : {u'name' : 'French (Italy)',                                         u'flag' : u'/++resource++country-flags/it.gif'},
00391 u'fr-km' : {u'name' : 'French (Comoros Islands)',                               u'flag' : u'/++resource++country-flags/km.gif'},
00392 u'fr-lb' : {u'name' : 'French (Lebanon)',                                       u'flag' : u'/++resource++country-flags/lb.gif'},
00393 u'fr-lu' : {u'name' : 'French (Luxembourg)',                                    u'flag' : u'/++resource++country-flags/lu.gif'},
00394 u'fr-mc' : {u'name' : 'French (Monaco)',                                        u'flag' : u'/++resource++country-flags/mc.gif'},
00395 u'fr-mg' : {u'name' : 'French (Madagascar)',                                    u'flag' : u'/++resource++country-flags/mg.gif'},
00396 u'fr-ml' : {u'name' : 'French (Mali)',                                          u'flag' : u'/++resource++country-flags/ml.gif'},
00397 u'fr-mq' : {u'name' : 'French (Martinique)',                                    u'flag' : u'/++resource++country-flags/mq.gif'},
00398 u'fr-nc' : {u'name' : 'French (New Caledonia)',                                 u'flag' : u'/++resource++country-flags/nc.gif'},
00399 u'fr-pf' : {u'name' : 'French (French Polynesia)',                              u'flag' : u'/++resource++country-flags/pf.gif'},
00400 u'fr-pm' : {u'name' : 'French (St. Pierre and Miquelon)',                       u'flag' : u'/++resource++country-flags/pm.gif'},
00401 u'fr-re' : {u'name' : 'French (Reunion)',                                       u'flag' : u'/++resource++country-flags/re.gif'},
00402 u'fr-rw' : {u'name' : 'French (Rwanda)',                                        u'flag' : u'/++resource++country-flags/rw.gif'},
00403 u'fr-sc' : {u'name' : 'French (Seychelles)',                                    u'flag' : u'/++resource++country-flags/sc.gif'},
00404 u'fr-td' : {u'name' : 'French (Chad)',                                          u'flag' : u'/++resource++country-flags/td.gif'},
00405 u'fr-tg' : {u'name' : 'French (Togo)',                                          u'flag' : u'/++resource++country-flags/tg.gif'},
00406 u'fr-vu' : {u'name' : 'French (Vanuatu)',                                       u'flag' : u'/++resource++country-flags/vu.gif'},
00407 u'fr-wf' : {u'name' : 'French (Wallis and Futuna)',                             u'flag' : u'/++resource++country-flags/wf.gif'},
00408 u'fr-yt' : {u'name' : 'French (Mayotte)',                                       u'flag' : u'/++resource++country-flags/yt.gif'},
00409 u'hr-ba' : {u'name' : 'Croatian (Bosnia-Herzegovina)',                          u'flag' : u'/++resource++country-flags/ba.gif'},
00410 u'hr-hr' : {u'name' : 'Croatian (Croatia)',                                     u'flag' : u'/++resource++country-flags/hr.gif'},
00411 u'hu-hu' : {u'name' : 'Hungarian (Hungary)',                                    u'flag' : u'/++resource++country-flags/hu.gif'},
00412 u'hu-si' : {u'name' : 'Hungarian (Slovenia)',                                   u'flag' : u'/++resource++country-flags/hu.gif'},
00413 u'it-ch' : {u'name' : 'Italian (Switzerland)',                                  u'flag' : u'/++resource++country-flags/it.gif'},
00414 u'it-hr' : {u'name' : 'Italian (Croatia)',                                      u'flag' : u'/++resource++country-flags/it.gif'},
00415 u'it-it' : {u'name' : 'Italian (Italy)',                                        u'flag' : u'/++resource++country-flags/it.gif'},
00416 u'it-si' : {u'name' : 'Italian (Slovenia)',                                     u'flag' : u'/++resource++country-flags/it.gif'},
00417 u'it-sm' : {u'name' : 'Italian (San Marino)',                                   u'flag' : u'/++resource++country-flags/sm.gif'},
00418 u'ko-kp' : {u'name' : 'Korean (Korea, North)',                                  u'flag' : u'/++resource++country-flags/kp.gif'},
00419 u'ko-kr' : {u'name' : 'Korean (Korea, South)',                                  u'flag' : u'/++resource++country-flags/kr.gif'},
00420 u'ln-cd' : {u'name' : 'Lingala (Democratic Republic of Congo)',                 u'flag' : u'/++resource++country-flags/cd.gif'},
00421 u'ln-cg' : {u'name' : 'Lingala (Congo)',                                        u'flag' : u'/++resource++country-flags/cg.gif'},
00422 u'ms-bn' : {u'name' : 'Malay (Brunei)',                                         u'flag' : u'/++resource++country-flags/bn.gif'},
00423 u'ms-my' : {u'name' : 'Malay (Malaysia)',                                       u'flag' : u'/++resource++country-flags/my.gif'},
00424 u'ms-sg' : {u'name' : 'Malay (Singapore)',                                      u'flag' : u'/++resource++country-flags/sg.gif'},
00425 u'nl-an' : {u'name' : 'Dutch (Netherlands Antilles)',                           u'flag' : u'/++resource++country-flags/an.gif'},
00426 u'nl-aw' : {u'name' : 'Dutch (Aruba)',                                          u'flag' : u'/++resource++country-flags/aw.gif'},
00427 u'nl-be' : {u'name' : 'Dutch (Belgium)',                                        u'flag' : u'/++resource++country-flags/be.gif'},
00428 u'nl-nl' : {u'name' : 'Dutch (Netherlands)',                                    u'flag' : u'/++resource++country-flags/nl.gif'},
00429 u'nl-sr' : {u'name' : 'Dutch (Suriname)',                                       u'flag' : u'/++resource++country-flags/sr.gif'},
00430 u'pt-ao' : {u'name' : 'Portuguese (Angola)',                                    u'flag' : u'/++resource++country-flags/ao.gif'},
00431 u'pt-br' : {u'name' : 'Portuguese (Brazil)', u'native' : 'Português (Brasil)',  u'flag' : u'/++resource++country-flags/br.gif'},
00432 u'pt-cv' : {u'name' : 'Portuguese (Ilhas Cabo Verde)',                           u'flag' : u'/++resource++country-flags/cv.gif'},
00433 u'pt-gw' : {u'name' : 'Portuguese (Guiné-Bissau)',                               u'flag' : u'/++resource++country-flags/gw.gif'},
00434 u'pt-mz' : {u'name' : 'Portuguese (Moçambique)',                                 u'flag' : u'/++resource++country-flags/mz.gif'},
00435 u'pt-pt' : {u'name' : 'Portuguese (Portugal)',                                   u'flag' : u'/++resource++country-flags/pt.gif'},
00436 u'pt-st' : {u'name' : 'Portuguese (São Tomé e Príncipe)',                        u'flag' : u'/++resource++country-flags/st.gif'},
00437 u'sd-in' : {u'name' : 'Sindhi (India)',                                         u'flag' : u'/++resource++country-flags/in.gif'},
00438 u'sd-pk' : {u'name' : 'Sindhi (Pakistan)',                                      u'flag' : u'/++resource++country-flags/pk.gif'},
00439 u'sr-ba' : {u'name' : 'Serbian (Bosnia-Herzegovina)',                           u'flag' : u'/++resource++country-flags/ba.gif'},
00440 u'ss-sz' : {u'name' : 'Swati (Swaziland)',                                      u'flag' : u'/++resource++country-flags/sz.gif'},
00441 u'ss-za' : {u'name' : 'Swati (South Africa)',                                   u'flag' : u'/++resource++country-flags/za.gif'},
00442 u'sv-fi' : {u'name' : 'Swedish (Finland)',                                      u'flag' : u'/++resource++country-flags/se.gif'},
00443 u'sv-se' : {u'name' : 'Swedish (Sweden)',                                       u'flag' : u'/++resource++country-flags/se.gif'},
00444 u'sw-ke' : {u'name' : 'Swahili (Kenya)',                                        u'flag' : u'/++resource++country-flags/ke.gif'},
00445 u'sw-tz' : {u'name' : 'Swahili (Tanzania)',                                     u'flag' : u'/++resource++country-flags/tz.gif'},
00446 u'ta-in' : {u'name' : 'Tamil (India)',                                          u'flag' : u'/++resource++country-flags/in.gif'},
00447 u'ta-sg' : {u'name' : 'Tamil (Singapore)',                                      u'flag' : u'/++resource++country-flags/sg.gif'},
00448 u'tn-bw' : {u'name' : 'Tswana (Botswana)',                                      u'flag' : u'/++resource++country-flags/bw.gif'},
00449 u'tn-za' : {u'name' : 'Tswana (South Africa)',                                  u'flag' : u'/++resource++country-flags/za.gif'},
00450 u'tr-bg' : {u'name' : 'Turkish (Bulgaria)',                                     u'flag' : u'/++resource++country-flags/tr.gif'},
00451 u'tr-cy' : {u'name' : 'Turkish (Cyprus)',                                       u'flag' : u'/++resource++country-flags/tr.gif'},
00452 u'tr-tr' : {u'name' : 'Turkish (Turkey)',                                       u'flag' : u'/++resource++country-flags/tr.gif'},
00453 u'ur-in' : {u'name' : 'Urdu (India)',                                           u'flag' : u'/++resource++country-flags/in.gif'},
00454 u'ur-pk' : {u'name' : 'Urdu (Pakistan)',                                        u'flag' : u'/++resource++country-flags/pk.gif'},
00455 u'zh-cn' : {u'name' : 'Chinese (China)', u'native' : '简体中文(中国)',                u'flag' : u'/++resource++country-flags/cn.gif'},
00456 u'zh-hk' : {u'name' : 'Chinese (Hongkong)', u'native' : '繁體中文(香港)',             u'flag' : u'/++resource++country-flags/hk.gif'},
00457 u'zh-sg' : {u'name' : 'Chinese (Singapore)', u'native' : '简体中文(新加坡)',           u'flag' : u'/++resource++country-flags/sg.gif'},
00458 u'zh-tw' : {u'name' : 'Chinese (Taiwan)', u'native' : '繁體中文(臺灣)',               u'flag' : u'/++resource++country-flags/tw.gif'}
00459 }
00460 
00461 # convert the utf-8 encoded values to unicode
00462 for code in _combinedlanguagelist:
00463     value = _combinedlanguagelist[code]
00464     if u'name' in value:
00465         value[u'name'] = unicode(value[u'name'], 'utf-8')
00466     if u'native' in value:
00467         value[u'native'] = unicode(value[u'native'], 'utf-8')