1N/A#
1N/A# Locale::Language - ISO two letter codes for language identification (ISO 639)
1N/A#
1N/A# $Id: Language.pm,v 2.2 2002/07/10 16:33:27 neilb Exp $
1N/A#
1N/A
1N/Apackage Locale::Language;
1N/Ause strict;
1N/Arequire 5.002;
1N/A
1N/Arequire Exporter;
1N/A
1N/A#-----------------------------------------------------------------------
1N/A# Public Global Variables
1N/A#-----------------------------------------------------------------------
1N/Ause vars qw($VERSION @ISA @EXPORT);
1N/A$VERSION = sprintf("%d.%02d", q$Revision: 2.21 $ =~ /(\d+)\.(\d+)/);
1N/A@ISA = qw(Exporter);
1N/A@EXPORT = qw(&code2language &language2code
1N/A &all_language_codes &all_language_names );
1N/A
1N/A#-----------------------------------------------------------------------
1N/A# Private Global Variables
1N/A#-----------------------------------------------------------------------
1N/Amy %CODES = ();
1N/Amy %LANGUAGES = ();
1N/A
1N/A
1N/A#=======================================================================
1N/A#
1N/A# code2language ( CODE )
1N/A#
1N/A#=======================================================================
1N/Asub code2language
1N/A{
1N/A my $code = shift;
1N/A
1N/A
1N/A return undef unless defined $code;
1N/A $code = lc($code);
1N/A if (exists $CODES{$code})
1N/A {
1N/A return $CODES{$code};
1N/A }
1N/A else
1N/A {
1N/A #---------------------------------------------------------------
1N/A # no such language code!
1N/A #---------------------------------------------------------------
1N/A return undef;
1N/A }
1N/A}
1N/A
1N/A
1N/A#=======================================================================
1N/A#
1N/A# language2code ( LANGUAGE )
1N/A#
1N/A#=======================================================================
1N/Asub language2code
1N/A{
1N/A my $lang = shift;
1N/A
1N/A
1N/A return undef unless defined $lang;
1N/A $lang = lc($lang);
1N/A if (exists $LANGUAGES{$lang})
1N/A {
1N/A return $LANGUAGES{$lang};
1N/A }
1N/A else
1N/A {
1N/A #---------------------------------------------------------------
1N/A # no such language!
1N/A #---------------------------------------------------------------
1N/A return undef;
1N/A }
1N/A}
1N/A
1N/A
1N/A#=======================================================================
1N/A#
1N/A# all_language_codes()
1N/A#
1N/A#=======================================================================
1N/Asub all_language_codes
1N/A{
1N/A return keys %CODES;
1N/A}
1N/A
1N/A
1N/A#=======================================================================
1N/A#
1N/A# all_language_names()
1N/A#
1N/A#=======================================================================
1N/Asub all_language_names
1N/A{
1N/A return values %CODES;
1N/A}
1N/A
1N/A
1N/A#=======================================================================
1N/A# initialisation code - stuff the DATA into the CODES hash
1N/A#=======================================================================
1N/A{
1N/A my $code;
1N/A my $language;
1N/A
1N/A local $_;
1N/A
1N/A while (<DATA>)
1N/A {
1N/A next unless /\S/;
1N/A chop;
1N/A ($code, $language) = split(/:/, $_, 2);
1N/A $CODES{$code} = $language;
1N/A $LANGUAGES{"\L$language"} = $code;
1N/A }
1N/A
1N/A close(DATA);
1N/A}
1N/A
1N/A1;
1N/A
1N/A__DATA__
1N/Aaa:Afar
1N/Aab:Abkhazian
1N/Aae:Avestan
1N/Aaf:Afrikaans
1N/Aam:Amharic
1N/Aar:Arabic
1N/Aas:Assamese
1N/Aay:Aymara
1N/Aaz:Azerbaijani
1N/A
1N/Aba:Bashkir
1N/Abe:Belarusian
1N/Abg:Bulgarian
1N/Abh:Bihari
1N/Abi:Bislama
1N/Abn:Bengali
1N/Abo:Tibetan
1N/Abr:Breton
1N/Abs:Bosnian
1N/A
1N/Aca:Catalan
1N/Ace:Chechen
1N/Ach:Chamorro
1N/Aco:Corsican
1N/Acs:Czech
1N/Acu:Church Slavic
1N/Acv:Chuvash
1N/Acy:Welsh
1N/A
1N/Ada:Danish
1N/Ade:German
1N/Adz:Dzongkha
1N/A
1N/Ael:Greek
1N/Aen:English
1N/Aeo:Esperanto
1N/Aes:Spanish
1N/Aet:Estonian
1N/Aeu:Basque
1N/A
1N/Afa:Persian
1N/Afi:Finnish
1N/Afj:Fijian
1N/Afo:Faeroese
1N/Afr:French
1N/Afy:Frisian
1N/A
1N/Aga:Irish
1N/Agd:Gaelic (Scots)
1N/Agl:Gallegan
1N/Agn:Guarani
1N/Agu:Gujarati
1N/Agv:Manx
1N/A
1N/Aha:Hausa
1N/Ahe:Hebrew
1N/Ahi:Hindi
1N/Aho:Hiri Motu
1N/Ahr:Croatian
1N/Ahu:Hungarian
1N/Ahy:Armenian
1N/Ahz:Herero
1N/A
1N/Aia:Interlingua
1N/Aid:Indonesian
1N/Aie:Interlingue
1N/Aik:Inupiaq
1N/Ais:Icelandic
1N/Ait:Italian
1N/Aiu:Inuktitut
1N/A
1N/Aja:Japanese
1N/Ajw:Javanese
1N/A
1N/Aka:Georgian
1N/Aki:Kikuyu
1N/Akj:Kuanyama
1N/Akk:Kazakh
1N/Akl:Kalaallisut
1N/Akm:Khmer
1N/Akn:Kannada
1N/Ako:Korean
1N/Aks:Kashmiri
1N/Aku:Kurdish
1N/Akv:Komi
1N/Akw:Cornish
1N/Aky:Kirghiz
1N/A
1N/Ala:Latin
1N/Alb:Letzeburgesch
1N/Aln:Lingala
1N/Alo:Lao
1N/Alt:Lithuanian
1N/Alv:Latvian
1N/A
1N/Amg:Malagasy
1N/Amh:Marshall
1N/Ami:Maori
1N/Amk:Macedonian
1N/Aml:Malayalam
1N/Amn:Mongolian
1N/Amo:Moldavian
1N/Amr:Marathi
1N/Ams:Malay
1N/Amt:Maltese
1N/Amy:Burmese
1N/A
1N/Ana:Nauru
1N/Anb:Norwegian Bokmal
1N/And:Ndebele, North
1N/Ane:Nepali
1N/Ang:Ndonga
1N/Anl:Dutch
1N/Ann:Norwegian Nynorsk
1N/Ano:Norwegian
1N/Anr:Ndebele, South
1N/Anv:Navajo
1N/Any:Chichewa; Nyanja
1N/A
1N/Aoc:Occitan (post 1500)
1N/Aom:Oromo
1N/Aor:Oriya
1N/Aos:Ossetian; Ossetic
1N/A
1N/Apa:Panjabi
1N/Api:Pali
1N/Apl:Polish
1N/Aps:Pushto
1N/Apt:Portuguese
1N/A
1N/Aqu:Quechua
1N/A
1N/Arm:Rhaeto-Romance
1N/Arn:Rundi
1N/Aro:Romanian
1N/Aru:Russian
1N/Arw:Kinyarwanda
1N/A
1N/Asa:Sanskrit
1N/Asc:Sardinian
1N/Asd:Sindhi
1N/Ase:Sami
1N/Asg:Sango
1N/Asi:Sinhalese
1N/Ask:Slovak
1N/Asl:Slovenian
1N/Asm:Samoan
1N/Asn:Shona
1N/Aso:Somali
1N/Asq:Albanian
1N/Asr:Serbian
1N/Ass:Swati
1N/Ast:Sotho
1N/Asu:Sundanese
1N/Asv:Swedish
1N/Asw:Swahili
1N/A
1N/Ata:Tamil
1N/Ate:Telugu
1N/Atg:Tajik
1N/Ath:Thai
1N/Ati:Tigrinya
1N/Atk:Turkmen
1N/Atl:Tagalog
1N/Atn:Tswana
1N/Ato:Tonga
1N/Atr:Turkish
1N/Ats:Tsonga
1N/Att:Tatar
1N/Atw:Twi
1N/A
1N/Aug:Uighur
1N/Auk:Ukrainian
1N/Aur:Urdu
1N/Auz:Uzbek
1N/A
1N/Avi:Vietnamese
1N/Avo:Volapuk
1N/A
1N/Awo:Wolof
1N/A
1N/Axh:Xhosa
1N/A
1N/Ayi:Yiddish
1N/Ayo:Yoruba
1N/A
1N/Aza:Zhuang
1N/Azh:Chinese
1N/Azu:Zulu