Package translate :: Package lang :: Module poedit
[hide private]
[frames] | no frames]

Source Code for Module translate.lang.poedit

  1  #!/usr/bin/env python 
  2  # -*- coding: utf-8 -*- 
  3  #  
  4  # Copyright 2009 Zuza Software Foundation 
  5  #  
  6  # This file is part of translate. 
  7  # 
  8  # translate is free software; you can redistribute it and/or modify 
  9  # it under the terms of the GNU General Public License as published by 
 10  # the Free Software Foundation; either version 2 of the License, or 
 11  # (at your option) any later version. 
 12  #  
 13  # translate is distributed in the hope that it will be useful, 
 14  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
 15  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 16  # GNU General Public License for more details. 
 17  # 
 18  # You should have received a copy of the GNU General Public License 
 19  # along with translate; if not, write to the Free Software 
 20  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 21   
 22  """Functions to manage Poedit's language features. 
 23   
 24    ISO 639 maps are form Poedit's U{isocode.cpp 1.4.2<http://poedit.svn.sourceforge.net/viewvc/poedit/poedit/tags/release-1.4.2/src/isocodes.cpp?revision=1452&view=markup>} 
 25    to ensure that we match currently released versions of Poedit. 
 26  """ 
 27   
 28  lang_codes = { 
 29      "aa": "Afar", 
 30      "ab": "Abkhazian", 
 31      "ae": "Avestan", 
 32      "af": "Afrikaans", 
 33      "am": "Amharic", 
 34      "ar": "Arabic", 
 35      "as": "Assamese", 
 36      "ay": "Aymara", 
 37      "az": "Azerbaijani", 
 38      "ba": "Bashkir", 
 39      "be": "Belarusian", 
 40      "bg": "Bulgarian", 
 41      "bh": "Bihari", 
 42      "bi": "Bislama", 
 43      "bn": "Bengali", 
 44      "bo": "Tibetan", 
 45      "br": "Breton", 
 46      "bs": "Bosnian", 
 47      "ca": "Catalan", 
 48      "ce": "Chechen", 
 49      "ch": "Chamorro", 
 50      "co": "Corsican", 
 51      "cs": "Czech", 
 52      "cu": "Church Slavic", 
 53      "cv": "Chuvash", 
 54      "cy": "Welsh", 
 55      "da": "Danish", 
 56      "de": "German", 
 57      "dz": "Dzongkha", 
 58      "el": "Greek", 
 59      "en": "English", 
 60      "eo": "Esperanto", 
 61      "es": "Spanish", 
 62      "et": "Estonian", 
 63      "eu": "Basque", 
 64      "fa": "Persian", 
 65      "fi": "Finnish", 
 66      "fj": "Fijian", 
 67      "fo": "Faroese", 
 68      "fr": "French", 
 69      "fur": "Friulian", 
 70      "fy": "Frisian", 
 71      "ga": "Irish", 
 72      "gd": "Gaelic", 
 73      "gl": "Galician", 
 74      "gn": "Guarani", 
 75      "gu": "Gujarati", 
 76      "ha": "Hausa", 
 77      "he": "Hebrew", 
 78      "hi": "Hindi", 
 79      "ho": "Hiri Motu", 
 80      "hr": "Croatian", 
 81      "hu": "Hungarian", 
 82      "hy": "Armenian", 
 83      "hz": "Herero", 
 84      "ia": "Interlingua", 
 85      "id": "Indonesian", 
 86      "ie": "Interlingue", 
 87      "ik": "Inupiaq", 
 88      "is": "Icelandic", 
 89      "it": "Italian", 
 90      "iu": "Inuktitut", 
 91      "ja": "Japanese", 
 92      "jw": "Javanese", 
 93      "ka": "Georgian", 
 94      "ki": "Kikuyu", 
 95      "kj": "Kuanyama", 
 96      "kk": "Kazakh", 
 97      "kl": "Kalaallisut", 
 98      "km": "Khmer", 
 99      "kn": "Kannada", 
100      "ko": "Korean", 
101      "ks": "Kashmiri", 
102      "ku": "Kurdish", 
103      "kv": "Komi", 
104      "kw": "Cornish", 
105      "ky": "Kyrgyz", 
106      "la": "Latin", 
107      "lb": "Letzeburgesch", 
108      "ln": "Lingala", 
109      "lo": "Lao", 
110      "lt": "Lithuanian", 
111      "lv": "Latvian", 
112      "mg": "Malagasy", 
113      "mh": "Marshall", 
114      "mi": "Maori", 
115      "mk": "Macedonian", 
116      "ml": "Malayalam", 
117      "mn": "Mongolian", 
118      "mo": "Moldavian", 
119      "mr": "Marathi", 
120      "ms": "Malay", 
121      "mt": "Maltese", 
122      "my": "Burmese", 
123      "na": "Nauru", 
124      "ne": "Nepali", 
125      "ng": "Ndonga", 
126      "nl": "Dutch", 
127      "nn": "Norwegian Nynorsk", 
128      "nb": "Norwegian Bokmal", 
129      "nr": "Ndebele, South", 
130      "nv": "Navajo", 
131      "ny": "Chichewa; Nyanja", 
132      "oc": "Occitan", 
133      "om": "(Afan) Oromo", 
134      "or": "Oriya", 
135      "os": "Ossetian; Ossetic", 
136      "pa": "Panjabi", 
137      "pi": "Pali", 
138      "pl": "Polish", 
139      "ps": "Pashto, Pushto", 
140      "pt": "Portuguese", 
141      "qu": "Quechua", 
142      "rm": "Rhaeto-Romance", 
143      "rn": "Rundi", 
144      "ro": "Romanian", 
145      "ru": "Russian", 
146      "rw": "Kinyarwanda", 
147      "sa": "Sanskrit", 
148      "sc": "Sardinian", 
149      "sd": "Sindhi", 
150      "se": "Northern Sami", 
151      "sg": "Sangro", 
152      "sh": "Serbo-Croatian", 
153      "si": "Sinhalese", 
154      "sk": "Slovak", 
155      "sl": "Slovenian", 
156      "sm": "Samoan", 
157      "sn": "Shona", 
158      "so": "Somali", 
159      "sq": "Albanian", 
160      "sr": "Serbian", 
161      "ss": "Siswati", 
162      "st": "Sesotho", 
163      "su": "Sundanese", 
164      "sv": "Swedish", 
165      "sw": "Swahili", 
166      "ta": "Tamil", 
167      "te": "Telugu", 
168      "tg": "Tajik", 
169      "th": "Thai", 
170      "ti": "Tigrinya", 
171      "tk": "Turkmen", 
172      "tl": "Tagalog", 
173      "tn": "Setswana", 
174      "to": "Tonga", 
175      "tr": "Turkish", 
176      "ts": "Tsonga", 
177      "tt": "Tatar", 
178      "tw": "Twi", 
179      "ty": "Tahitian", 
180      "ug": "Uighur", 
181      "uk": "Ukrainian", 
182      "ur": "Urdu", 
183      "uz": "Uzbek", 
184      "vi": "Vietnamese", 
185      "vo": "Volapuk", 
186      "wa": "Walloon", 
187      "wo": "Wolof", 
188      "xh": "Xhosa", 
189      "yi": "Yiddish", 
190      "yo": "Yoruba", 
191      "za": "Zhuang", 
192      "zh": "Chinese", 
193      "zu": "Zulu", 
194  } 
195  """ISO369 codes and names as used by Poedit. 
196  Mostly these are identical to ISO 639, but there are some differences.""" 
197   
198  lang_names = dict([(value, key) for (key, value) in lang_codes.items()]) 
199  """Reversed L{lang_codes}""" 
200   
201  dialects = { 
202    "Portuguese": {"PORTUGAL": "pt", "BRAZIL": "pt_BR", "None": "pt"}, 
203    # We choose not to subtype en_US 
204    "English": {"UNITED KINGDOM": "en_GB", "SOUTH AFRICA": "en_ZA", "None": "en"}, 
205    # zh_CN = Simplified, zh_TW = Traditional 
206    "Chinese": {"CHINA": "zh_CN", "TAIWAN": "zh_TW", "None": "zh_CN"}, 
207  } 
208  """Language dialects based on ISO 3166 country names, 'None' is the default fallback""" 
209   
210 -def isocode(language, country=None):
211 """Returns a language code for the given Poedit language name. 212 213 Poedit uses language and country names in the PO header entries: 214 - X-Poedit-Language 215 - X-Poedit-Country 216 217 This function converts the supplied language name into the required ISO 639 218 code. If needed, in the case of L{dialects}, the country name is used 219 to create an xx_YY style dialect code. 220 221 @param language: Language name 222 @type language: String 223 @param country: Country name 224 @type country: String 225 @return: ISO 639 language code 226 @rtype: String 227 """ 228 dialect = dialects.get(language, None) 229 if dialect: 230 return dialect.get(country, dialect["None"]) 231 return lang_names.get(language, None)
232