X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FLocale%2FLanguage.pm;h=e8454c39b4a5e7254d7f751602ed81181d5a8efc;hb=f666394a093bd03d30919ca4d18ce92778eb4605;hp=391cffab782341f9b35085921c3b9e7d6da7cd3c;hpb=88c28ceba84d380fbac88f13c3dfcca0d1b7f014;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/Locale/Language.pm b/lib/Locale/Language.pm index 391cffa..e8454c3 100644 --- a/lib/Locale/Language.pm +++ b/lib/Locale/Language.pm @@ -1,48 +1,20 @@ -#----------------------------------------------------------------------- - -=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(); - -=cut - -#----------------------------------------------------------------------- +# +# Locale::Language - ISO two letter codes for language identification (ISO 639) +# +# $Id: Language.pm,v 2.7 2004/06/10 21:19:34 neilb Exp $ +# package Locale::Language; use strict; require 5.002; -#----------------------------------------------------------------------- - -=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 with the two functions which return lists of all language codes or -all language names. - -=cut - -#----------------------------------------------------------------------- - require Exporter; #----------------------------------------------------------------------- # Public Global Variables #----------------------------------------------------------------------- use vars qw($VERSION @ISA @EXPORT); -$VERSION = sprintf("%d.%02d", q$Revision: 1.6 $ =~ /(\d+)\.(\d+)/); +$VERSION = sprintf("%d.%02d", q$Revision: 2.7 $ =~ /(\d+)\.(\d+)/); @ISA = qw(Exporter); @EXPORT = qw(&code2language &language2code &all_language_codes &all_language_names ); @@ -55,38 +27,9 @@ my %LANGUAGES = (); #======================================================================= - -=head1 CONVERSION ROUTINES - -There are two conversion routines: C and C. - -=over 8 - -=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 - -=cut - +# +# code2language ( CODE ) +# #======================================================================= sub code2language { @@ -108,6 +51,12 @@ sub code2language } } + +#======================================================================= +# +# language2code ( LANGUAGE ) +# +#======================================================================= sub language2code { my $lang = shift; @@ -128,127 +77,36 @@ sub language2code } } -#======================================================================= - -=head1 QUERY ROUTINES - -There are two function which can be used to obtain a list of all -language codes, or all language names: - -=over 8 - -=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 - -=cut #======================================================================= +# +# all_language_codes() +# +#======================================================================= sub all_language_codes { return keys %CODES; } + +#======================================================================= +# +# all_language_names() +# +#======================================================================= sub all_language_names { return values %CODES; } -#----------------------------------------------------------------------- - -=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::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 Eneilb@cre.canon.co.ukE - -=head1 COPYRIGHT - -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 - -#----------------------------------------------------------------------- #======================================================================= # initialisation code - stuff the DATA into the CODES hash #======================================================================= { - my $code; - my $language; + my $code; + my $language; + local $_; while () @@ -259,6 +117,8 @@ modify it under the same terms as Perl itself. $CODES{$code} = $language; $LANGUAGES{"\L$language"} = $code; } + + close(DATA); } 1; @@ -372,7 +232,7 @@ mt:Maltese my:Burmese na:Nauru -nb:Norwegian Bokmål +nb:Norwegian Bokmal nd:Ndebele, North ne:Nepali ng:Ndonga @@ -441,7 +301,7 @@ ur:Urdu uz:Uzbek vi:Vietnamese -vo:Volapük +vo:Volapuk wo:Wolof