home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 December (Special) / PCWorld_2005-12_Special_cd.bin / Bezpecnost / lsti / lsti.exe / framework-2.5.exe / Language.pm < prev    next >
Text File  |  2005-01-27  |  5KB  |  316 lines

  1. #
  2. # Locale::Language - ISO two letter codes for language identification (ISO 639)
  3. #
  4. # $Id: Language.pm,v 2.7 2004/06/10 21:19:34 neilb Exp $
  5. #
  6.  
  7. package Locale::Language;
  8. use strict;
  9. require 5.002;
  10.  
  11. require Exporter;
  12.  
  13. #-----------------------------------------------------------------------
  14. #    Public Global Variables
  15. #-----------------------------------------------------------------------
  16. use vars qw($VERSION @ISA @EXPORT);
  17. $VERSION      = sprintf("%d.%02d", q$Revision: 2.7 $ =~ /(\d+)\.(\d+)/);
  18. @ISA          = qw(Exporter);
  19. @EXPORT       = qw(&code2language &language2code
  20.                    &all_language_codes &all_language_names );
  21.  
  22. #-----------------------------------------------------------------------
  23. #    Private Global Variables
  24. #-----------------------------------------------------------------------
  25. my %CODES     = ();
  26. my %LANGUAGES = ();
  27.  
  28.  
  29. #=======================================================================
  30. #
  31. # code2language ( CODE )
  32. #
  33. #=======================================================================
  34. sub code2language
  35. {
  36.     my $code = shift;
  37.  
  38.  
  39.     return undef unless defined $code;
  40.     $code = lc($code);
  41.     if (exists $CODES{$code})
  42.     {
  43.         return $CODES{$code};
  44.     }
  45.     else
  46.     {
  47.         #---------------------------------------------------------------
  48.         # no such language code!
  49.         #---------------------------------------------------------------
  50.         return undef;
  51.     }
  52. }
  53.  
  54.  
  55. #=======================================================================
  56. #
  57. # language2code ( LANGUAGE )
  58. #
  59. #=======================================================================
  60. sub language2code
  61. {
  62.     my $lang = shift;
  63.  
  64.  
  65.     return undef unless defined $lang;
  66.     $lang = lc($lang);
  67.     if (exists $LANGUAGES{$lang})
  68.     {
  69.         return $LANGUAGES{$lang};
  70.     }
  71.     else
  72.     {
  73.         #---------------------------------------------------------------
  74.         # no such language!
  75.         #---------------------------------------------------------------
  76.         return undef;
  77.     }
  78. }
  79.  
  80.  
  81. #=======================================================================
  82. #
  83. # all_language_codes()
  84. #
  85. #=======================================================================
  86. sub all_language_codes
  87. {
  88.     return keys %CODES;
  89. }
  90.  
  91.  
  92. #=======================================================================
  93. #
  94. # all_language_names()
  95. #
  96. #=======================================================================
  97. sub all_language_names
  98. {
  99.     return values %CODES;
  100. }
  101.  
  102.  
  103. #=======================================================================
  104. # initialisation code - stuff the DATA into the CODES hash
  105. #=======================================================================
  106. {
  107.     my    $code;
  108.     my    $language;
  109.     local $_;
  110.  
  111.  
  112.     while (<DATA>)
  113.     {
  114.         next unless /\S/;
  115.         chop;
  116.         ($code, $language) = split(/:/, $_, 2);
  117.         $CODES{$code} = $language;
  118.         $LANGUAGES{"\L$language"} = $code;
  119.     }
  120.  
  121.     close(DATA);
  122. }
  123.  
  124. 1;
  125.  
  126. __DATA__
  127. aa:Afar
  128. ab:Abkhazian
  129. ae:Avestan
  130. af:Afrikaans
  131. am:Amharic
  132. ar:Arabic
  133. as:Assamese
  134. ay:Aymara
  135. az:Azerbaijani
  136.  
  137. ba:Bashkir
  138. be:Belarusian
  139. bg:Bulgarian
  140. bh:Bihari
  141. bi:Bislama
  142. bn:Bengali
  143. bo:Tibetan
  144. br:Breton
  145. bs:Bosnian
  146.  
  147. ca:Catalan
  148. ce:Chechen
  149. ch:Chamorro
  150. co:Corsican
  151. cs:Czech
  152. cu:Church Slavic
  153. cv:Chuvash
  154. cy:Welsh
  155.  
  156. da:Danish
  157. de:German
  158. dz:Dzongkha
  159.  
  160. el:Greek
  161. en:English
  162. eo:Esperanto
  163. es:Spanish
  164. et:Estonian
  165. eu:Basque
  166.  
  167. fa:Persian
  168. fi:Finnish
  169. fj:Fijian
  170. fo:Faeroese
  171. fr:French
  172. fy:Frisian
  173.  
  174. ga:Irish
  175. gd:Gaelic (Scots)
  176. gl:Gallegan
  177. gn:Guarani
  178. gu:Gujarati
  179. gv:Manx
  180.  
  181. ha:Hausa
  182. he:Hebrew
  183. hi:Hindi
  184. ho:Hiri Motu
  185. hr:Croatian
  186. hu:Hungarian
  187. hy:Armenian
  188. hz:Herero
  189.  
  190. ia:Interlingua
  191. id:Indonesian
  192. ie:Interlingue
  193. ik:Inupiaq
  194. is:Icelandic
  195. it:Italian
  196. iu:Inuktitut
  197.  
  198. ja:Japanese
  199. jw:Javanese
  200.  
  201. ka:Georgian
  202. ki:Kikuyu
  203. kj:Kuanyama
  204. kk:Kazakh
  205. kl:Kalaallisut
  206. km:Khmer
  207. kn:Kannada
  208. ko:Korean
  209. ks:Kashmiri
  210. ku:Kurdish
  211. kv:Komi
  212. kw:Cornish
  213. ky:Kirghiz
  214.  
  215. la:Latin
  216. lb:Letzeburgesch
  217. ln:Lingala
  218. lo:Lao
  219. lt:Lithuanian
  220. lv:Latvian
  221.  
  222. mg:Malagasy
  223. mh:Marshall
  224. mi:Maori
  225. mk:Macedonian
  226. ml:Malayalam
  227. mn:Mongolian
  228. mo:Moldavian
  229. mr:Marathi
  230. ms:Malay
  231. mt:Maltese
  232. my:Burmese
  233.  
  234. na:Nauru
  235. nb:Norwegian Bokmal
  236. nd:Ndebele, North
  237. ne:Nepali
  238. ng:Ndonga
  239. nl:Dutch
  240. nn:Norwegian Nynorsk
  241. no:Norwegian
  242. nr:Ndebele, South
  243. nv:Navajo
  244. ny:Chichewa; Nyanja
  245.  
  246. oc:Occitan (post 1500)
  247. om:Oromo
  248. or:Oriya
  249. os:Ossetian; Ossetic
  250.  
  251. pa:Panjabi
  252. pi:Pali
  253. pl:Polish
  254. ps:Pushto
  255. pt:Portuguese
  256.  
  257. qu:Quechua
  258.  
  259. rm:Rhaeto-Romance
  260. rn:Rundi
  261. ro:Romanian
  262. ru:Russian
  263. rw:Kinyarwanda
  264.  
  265. sa:Sanskrit
  266. sc:Sardinian
  267. sd:Sindhi
  268. se:Sami
  269. sg:Sango
  270. si:Sinhalese
  271. sk:Slovak
  272. sl:Slovenian
  273. sm:Samoan
  274. sn:Shona
  275. so:Somali
  276. sq:Albanian
  277. sr:Serbian
  278. ss:Swati
  279. st:Sotho
  280. su:Sundanese
  281. sv:Swedish
  282. sw:Swahili
  283.  
  284. ta:Tamil
  285. te:Telugu
  286. tg:Tajik
  287. th:Thai
  288. ti:Tigrinya
  289. tk:Turkmen
  290. tl:Tagalog
  291. tn:Tswana
  292. to:Tonga
  293. tr:Turkish
  294. ts:Tsonga
  295. tt:Tatar
  296. tw:Twi
  297.  
  298. ug:Uighur
  299. uk:Ukrainian
  300. ur:Urdu
  301. uz:Uzbek
  302.  
  303. vi:Vietnamese
  304. vo:Volapuk
  305.  
  306. wo:Wolof
  307.  
  308. xh:Xhosa
  309.  
  310. yi:Yiddish
  311. yo:Yoruba
  312.  
  313. za:Zhuang
  314. zh:Chinese
  315. zu:Zulu
  316.