=head1 NAME Locale::Language - ISO two letter codes for language identification (ISO 639) =head1 SYNOPSIS use Locale::Language; $lang = code2language('en'); # $lang gets 'English' $code = language2code('French'); # $code gets 'fr' @codes = all_language_codes(); @names = all_language_names(); =head1 DESCRIPTION The C module provides access to the ISO two-letter codes for identifying languages, as defined in ISO 639. You can either access the codes via the L (described below), or via the two functions which return lists of all language codes or all language names. =head1 CONVERSION ROUTINES There are two conversion routines: C and C. =over 4 =item code2language() This function takes a two letter language code and returns a string which contains the name of the language identified. If the code is not a valid language code, as defined by ISO 639, then C will be returned. $lang = code2language($code); =item language2code() This function takes a language name and returns the corresponding two letter language code, if such exists. If the argument could not be identified as a language name, then C will be returned. $code = language2code('French'); The case of the language name is not important. See the section L below. =back =head1 QUERY ROUTINES There are two function which can be used to obtain a list of all language codes, or all language names: =over 4 =item C Returns a list of all two-letter language codes. The codes are guaranteed to be all lower-case, and not in any particular order. =item C Returns a list of all language names for which there is a corresponding two-letter language code. The names are capitalised, and not returned in any particular order. =back =head1 EXAMPLES The following example illustrates use of the C function. The user is prompted for a language code, and then told the corresponding language name: $| = 1; # turn off buffering print "Enter language code: "; chop($code = ); $lang = code2language($code); if (defined $lang) { print "$code = $lang\n"; } else { print "'$code' is not a valid language code!\n"; } =head1 KNOWN BUGS AND LIMITATIONS =over 4 =item * In the current implementation, all data is read in when the module is loaded, and then held in memory. A lazy implementation would be more memory friendly. =item * Currently just supports the two letter language codes - there are also three-letter codes, and numbers. Would these be of any use to anyone? =back =head1 SEE ALSO =over 4 =item Locale::Country ISO codes for identification of country (ISO 3166). Supports 2-letter, 3-letter, and numeric country codes. =item Locale::Script ISO codes for identification of written scripts (ISO 15924). =item Locale::Currency ISO three letter codes for identification of currencies and funds (ISO 4217). =item ISO 639:1988 (E/F) Code for the representation of names of languages. =item http://lcweb.loc.gov/standards/iso639-2/langhome.html Home page for ISO 639-2. =back =head1 AUTHOR Neil Bowers Eneil@bowers.comE =head1 COPYRIGHT Copyright (C) 2002, Neil Bowers. Copyright (c) 1997-2001 Canon Research Centre Europe (CRE). This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut