Cross Reference: List.pm
xref
: /
osnet-11
/
usr
/
src
/
cmd
/
perl
/
5.8.4
/
distrib
/
lib
/
I18N
/
LangTags
/
List.pm
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
1
N/A
1
N/A
require
5
;
1
N/A
package
I18N
::
LangTags
::
List
;
1
N/A
# Time-stamp: "2003-10-10 17:39:45 ADT"
1
N/A
use
strict
;
1
N/A
use
vars
qw
(%
Name
%
Is_Disrec
$
Debug
$
VERSION
);
1
N/A
$
VERSION
=
'0.29'
;
1
N/A
# POD at the end.
1
N/A
1
N/A
#----------------------------------------------------------------------
1
N/A
{
1
N/A
# read the table out of our own POD!
1
N/A
my
$
seeking
=
1
;
1
N/A
my
$
count
=
0
;
1
N/A
my
($
disrec
,$
tag
,$
name
);
1
N/A
my
$
last_name
=
''
;
1
N/A
while
(<
I18N
::
LangTags
::
List
::
DATA
>) {
1
N/A
if
($
seeking
) {
1
N/A
$
seeking
=
0
if
m/=
for
woohah
/;
1
N/A
}
elsif
( ($
disrec
, $
tag
, $
name
) =
1
N/A
m/(\[?)\{([-
0
-
9
a-
zA
-Z]+)\}(?:\s*:)?\s*([^\[\]]+)/
1
N/A
) {
1
N/A
$
name
=~ s/\s*[;\.]*\s*$//g;
1
N/A
next
unless
$
name
;
1
N/A
++$
count
;
1
N/A
print
"<$tag> <$name>\n"
if
$
Debug
;
1
N/A
$
last_name
= $
Name
{$
tag
} = $
name
;
1
N/A
$
Is_Disrec
{$
tag
} =
1
if
$
disrec
;
1
N/A
}
elsif
(m/[
Ff
]
ormerly
\
"([-a-z0-9]+)\"/) {
1
N/A
$
Name
{$
1
} =
"$last_name (old tag)"
if
$
last_name
;
1
N/A
$
Is_Disrec
{$
1
} =
1
;
1
N/A
}
1
N/A
}
1
N/A
die
"No tags read??"
unless
$
count
;
1
N/A
}
1
N/A
#----------------------------------------------------------------------
1
N/A
1
N/A
sub
name
{
1
N/A
my
$
tag
=
lc
($_[
0
] ||
return
);
1
N/A
$
tag
=~ s/^\s+//s;
1
N/A
$
tag
=~ s/\s+$//s;
1
N/A
1
N/A
my
$
alt
;
1
N/A
if
($
tag
=~ m/^x-(.+)/) {
1
N/A
$
alt
=
"i-$1"
;
1
N/A
}
elsif
($
tag
=~ m/^i-(.+)/) {
1
N/A
$
alt
=
"x-$1"
;
1
N/A
}
else
{
1
N/A
$
alt
=
''
;
1
N/A
}
1
N/A
1
N/A
my
$
subform
=
''
;
1
N/A
my
$
name
=
''
;
1
N/A
print
"Input: {$tag}\n"
if
$
Debug
;
1
N/A
while
(
length
$
tag
) {
1
N/A
last
if
$
name
= $
Name
{$
tag
};
1
N/A
last
if
$
name
= $
Name
{$
alt
};
1
N/A
if
($
tag
=~ s/(-[a-
z0
-
9
]+)$//s) {
1
N/A
print
"Shaving off: $1 leaving $tag\n"
if
$
Debug
;
1
N/A
$
subform
=
"$1$subform"
;
1
N/A
# and loop around again
1
N/A
1
N/A
$
alt
=~ s/(-[a-
z0
-
9
]+)$//s && $
Debug
&&
print
" alt -> $alt\n"
;
1
N/A
}
else
{
1
N/A
# we're trying to pull a subform off a primary tag. TILT!
1
N/A
print
"Aborting on: {$name}{$subform}\n"
if
$
Debug
;
1
N/A
last
;
1
N/A
}
1
N/A
}
1
N/A
print
"Output: {$name}{$subform}\n"
if
$
Debug
;
1
N/A
1
N/A
return
unless
$
name
;
# Failure
1
N/A
return
$
name
unless
$
subform
;
# Exact match
1
N/A
$
subform
=~ s/^-//s;
1
N/A
$
subform
=~ s/-$//s;
1
N/A
return
"$name (Subform \"$subform\")"
;
1
N/A
}
1
N/A
1
N/A
#--------------------------------------------------------------------------
1
N/A
1
N/A
sub
is_decent
{
1
N/A
my
$
tag
=
lc
($_[
0
] ||
return
0
);
1
N/A
#require I18N::LangTags;
1
N/A
1
N/A
return
0
unless
1
N/A
$
tag
=~
1
N/A
/^(?:
# First subtag
1
N/A
[
xi
] | [a-z]{
2
,
3
}
1
N/A
)
1
N/A
(?:
# Subtags thereafter
1
N/A
-
# separator
1
N/A
[a-
z0
-
9
]{
1
,
8
}
# subtag
1
N/A
)*
1
N/A
$/
xs
;
1
N/A
1
N/A
my
@
supers
= ();
1
N/A
foreach
my
$
bit
(
split
(
'-'
, $
tag
)) {
1
N/A
push
@
supers
,
1
N/A
scalar
(@
supers
) ? ($
supers
[-
1
] .
'-'
. $
bit
) : $
bit
;
1
N/A
}
1
N/A
return
0
unless
@
supers
;
1
N/A
shift
@
supers
if
$
supers
[
0
] =~ m<^(i|x|
sgn
)$>s;
1
N/A
return
0
unless
@
supers
;
1
N/A
1
N/A
foreach
my
$f ($
tag
, @
supers
) {
1
N/A
return
0
if
$
Is_Disrec
{$f};
1
N/A
return
2
if
$
Name
{$f};
1
N/A
# so that decent subforms of indecent tags are decent
1
N/A
}
1
N/A
return
2
if
$
Name
{$
tag
};
# not only is it decent, it's known!
1
N/A
return
1
;
1
N/A
}
1
N/A
1
N/A
#--------------------------------------------------------------------------
1
N/A
1
;
1
N/A
1
N/A
__DATA__
1
N/A
1
N/A
=head1 NAME
1
N/A
1
N/A
I18N::LangTags::List -- tags and names for human languages
1
N/A
1
N/A
=head1 SYNOPSIS
1
N/A
1
N/A
use I18N::LangTags::List;
1
N/A
print "Parlez-vous... ", join(', ',
1
N/A
I18N::LangTags::List::name('elx') || 'unknown_language',
1
N/A
I18N::LangTags::List::name('ar-Kw') || 'unknown_language',
1
N/A
I18N::LangTags::List::name('en') || 'unknown_language',
1
N/A
I18N::LangTags::List::name('en-CA') || 'unknown_language',
1
N/A
), "?\n";
1
N/A
1
N/A
prints:
1
N/A
1
N/A
Parlez-vous... Elamite, Kuwait Arabic, English, Canadian English?
1
N/A
1
N/A
=head1 DESCRIPTION
1
N/A
1
N/A
This module provides a function
1
N/A
C<I18N::LangTags::List::name( I<langtag> ) > that takes
1
N/A
a language tag (see L<I18N::LangTags|I18N::LangTags>)
1
N/A
and returns the best attempt at an English name for it, or
1
N/A
undef if it can't make sense of the tag.
1
N/A
1
N/A
The function I18N::LangTags::List::name(...) is not exported.
1
N/A
1
N/A
This module also provides a function
1
N/A
C<I18N::LangTags::List::is_decent( I<langtag> )> that returns true iff
1
N/A
the language tag is syntactically valid and is for general use (like
1
N/A
"fr" or "fr-ca", below). That is, it returns false for tags that are
1
N/A
syntactically invalid and for tags, like "aus", that are listed in
1
N/A
brackets below. This function is not exported.
1
N/A
1
N/A
The map of tags-to-names that it uses is accessable as
1
N/A
%I18N::LangTags::List::Name, and it's the same as the list
1
N/A
that follows in this documentation, which should be useful
1
N/A
to you even if you don't use this module.
1
N/A
1
N/A
=head1 ABOUT LANGUAGE TAGS
1
N/A
1
N/A
Internet language tags, as defined in RFC 3066, are a formalism
1
N/A
for denoting human languages. The two-letter ISO 639-1 language
1
N/A
codes are well known (as "en" for English), as are their forms
1
N/A
when qualified by a country code ("en-US"). Less well-known are the
1
N/A
arbitrary-length non-ISO codes (like "i-mingo"), and the
1
N/A
recently (in 2001) introduced three-letter ISO-639-2 codes.
1
N/A
1
N/A
Remember these important facts:
1
N/A
1
N/A
=over
1
N/A
1
N/A
=item *
1
N/A
1
N/A
Language tags are not locale IDs. A locale ID is written with a "_"
1
N/A
instead of a "-", (almost?) always matches C<m/^\w\w_\w\w\b/>, and
1
N/A
I<means> something different than a language tag. A language tag
1
N/A
denotes a language. A locale ID denotes a language I<as used in>
1
N/A
a particular place, in combination with non-linguistic
1
N/A
location-specific information such as what currency is used
1
N/A
there. Locales I<also> often denote character set information,
1
N/A
as in "en_US.ISO8859-1".
1
N/A
1
N/A
=item *
1
N/A
1
N/A
Language tags are not for computer languages.
1
N/A
1
N/A
=item *
1
N/A
1
N/A
"Dialect" is not a useful term, since there is no objective
1
N/A
criterion for establishing when two language-forms are
1
N/A
dialects of eachother, or are separate languages.
1
N/A
1
N/A
=item *
1
N/A
1
N/A
Language tags are not case-sensitive. en-US, en-us, En-Us, etc.,
1
N/A
are all the same tag, and denote the same language.
1
N/A
1
N/A
=item *
1
N/A
1
N/A
Not every language tag really refers to a single language. Some
1
N/A
language tags refer to conditions: i-default (system-message text
1
N/A
in English plus maybe other languages), und (undetermined
1
N/A
language). Others (notably lots of the three-letter codes) are
1
N/A
bibliographic tags that classify whole groups of languages, as
1
N/A
with cus "Cushitic (Other)" (i.e., a
1
N/A
language that has been classed as Cushtic, but which has no more
1
N/A
specific code) or the even less linguistically coherent
1
N/A
sai for "South American Indian (Other)". Though useful in
1
N/A
bibliography, B<SUCH TAGS ARE NOT
1
N/A
FOR GENERAL USE>. For further guidance, email me.
1
N/A
1
N/A
=item *
1
N/A
1
N/A
Language tags are not country codes. In fact, they are often
1
N/A
distinct codes, as with language tag ja for Japanese, and
1
N/A
ISO 3166 country code C<.jp> for Japan.
1
N/A
1
N/A
=back
1
N/A
1
N/A
=head1 LIST OF LANGUAGES
1
N/A
1
N/A
The first part of each item is the language tag, between
1
N/A
{...}. It
1
N/A
is followed by an English name for the language or language-group.
1
N/A
Language tags that I judge to be not for general use, are bracketed.
1
N/A
1
N/A
This list is in alphabetical order by English name of the language.
1
N/A
1
N/A
=for reminder
1
N/A
The name in the =item line MUST NOT have E<...>'s in it!!
1
N/A
1
N/A
=for woohah START
1
N/A
1
N/A
=over
1
N/A
1
N/A
=item {ab} : Abkhazian
1
N/A
1
N/A
eq Abkhaz
1
N/A
1
N/A
=item {ace} : Achinese
1
N/A
1
N/A
=item {ach} : Acoli
1
N/A
1
N/A
=item {ada} : Adangme
1
N/A
1
N/A
=item {ady} : Adyghe
1
N/A
1
N/A
eq Adygei
1
N/A
1
N/A
=item {aa} : Afar
1
N/A
1
N/A
=item {afh} : Afrihili
1
N/A
1
N/A
(Artificial)
1
N/A
1
N/A
=item {af} : Afrikaans
1
N/A
1
N/A
=item [{afa} : Afro-Asiatic (Other)]
1
N/A
1
N/A
=item {ak} : Akan
1
N/A
1
N/A
(Formerly "aka".)
1
N/A
1
N/A
=item {akk} : Akkadian
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item {sq} : Albanian
1
N/A
1
N/A
=item {ale} : Aleut
1
N/A
1
N/A
=item [{alg} : Algonquian languages]
1
N/A
1
N/A
NOT Algonquin!
1
N/A
1
N/A
=item [{tut} : Altaic (Other)]
1
N/A
1
N/A
=item {am} : Amharic
1
N/A
1
N/A
NOT Aramaic!
1
N/A
1
N/A
=item {i-ami} : Ami
1
N/A
1
N/A
eq Amis. eq 'Amis. eq Pangca.
1
N/A
1
N/A
=item [{apa} : Apache languages]
1
N/A
1
N/A
=item {ar} : Arabic
1
N/A
1
N/A
Many forms are mutually un-intelligible in spoken media.
1
N/A
Notable forms:
1
N/A
{ar-ae} UAE Arabic;
1
N/A
{ar-bh} Bahrain Arabic;
1
N/A
{ar-dz} Algerian Arabic;
1
N/A
{ar-eg} Egyptian Arabic;
1
N/A
{ar-iq} Iraqi Arabic;
1
N/A
{ar-jo} Jordanian Arabic;
1
N/A
{ar-kw} Kuwait Arabic;
1
N/A
{ar-lb} Lebanese Arabic;
1
N/A
{ar-ly} Libyan Arabic;
1
N/A
{ar-ma} Moroccan Arabic;
1
N/A
{ar-om} Omani Arabic;
1
N/A
{ar-qa} Qatari Arabic;
1
N/A
{ar-sa} Sauda Arabic;
1
N/A
{ar-sy} Syrian Arabic;
1
N/A
{ar-tn} Tunisian Arabic;
1
N/A
{ar-ye} Yemen Arabic.
1
N/A
1
N/A
=item {arc} : Aramaic
1
N/A
1
N/A
NOT Amharic! NOT Samaritan Aramaic!
1
N/A
1
N/A
=item {arp} : Arapaho
1
N/A
1
N/A
=item {arn} : Araucanian
1
N/A
1
N/A
=item {arw} : Arawak
1
N/A
1
N/A
=item {hy} : Armenian
1
N/A
1
N/A
=item {an} : Aragonese
1
N/A
1
N/A
=item [{art} : Artificial (Other)]
1
N/A
1
N/A
=item {ast} : Asturian
1
N/A
1
N/A
eq Bable.
1
N/A
1
N/A
=item {as} : Assamese
1
N/A
1
N/A
=item [{ath} : Athapascan languages]
1
N/A
1
N/A
eq Athabaskan. eq Athapaskan. eq Athabascan.
1
N/A
1
N/A
=item [{aus} : Australian languages]
1
N/A
1
N/A
=item [{map} : Austronesian (Other)]
1
N/A
1
N/A
=item {av} : Avaric
1
N/A
1
N/A
(Formerly "ava".)
1
N/A
1
N/A
=item {ae} : Avestan
1
N/A
1
N/A
eq Zend
1
N/A
1
N/A
=item {awa} : Awadhi
1
N/A
1
N/A
=item {ay} : Aymara
1
N/A
1
N/A
=item {az} : Azerbaijani
1
N/A
1
N/A
eq Azeri
1
N/A
1
N/A
Notable forms:
1
N/A
{az-Arab} Azerbaijani in Arabic script;
1
N/A
{az-Cyrl} Azerbaijani in Cyrillic script;
1
N/A
{az-Latn} Azerbaijani in Latin script.
1
N/A
1
N/A
=item {ban} : Balinese
1
N/A
1
N/A
=item [{bat} : Baltic (Other)]
1
N/A
1
N/A
=item {bal} : Baluchi
1
N/A
1
N/A
=item {bm} : Bambara
1
N/A
1
N/A
(Formerly "bam".)
1
N/A
1
N/A
=item [{bai} : Bamileke languages]
1
N/A
1
N/A
=item {bad} : Banda
1
N/A
1
N/A
=item [{bnt} : Bantu (Other)]
1
N/A
1
N/A
=item {bas} : Basa
1
N/A
1
N/A
=item {ba} : Bashkir
1
N/A
1
N/A
=item {eu} : Basque
1
N/A
1
N/A
=item {btk} : Batak (Indonesia)
1
N/A
1
N/A
=item {bej} : Beja
1
N/A
1
N/A
=item {be} : Belarusian
1
N/A
1
N/A
eq Belarussian. eq Byelarussian.
1
N/A
eq Belorussian. eq Byelorussian.
1
N/A
eq White Russian. eq White Ruthenian.
1
N/A
NOT Ruthenian!
1
N/A
1
N/A
=item {bem} : Bemba
1
N/A
1
N/A
=item {bn} : Bengali
1
N/A
1
N/A
eq Bangla.
1
N/A
1
N/A
=item [{ber} : Berber (Other)]
1
N/A
1
N/A
=item {bho} : Bhojpuri
1
N/A
1
N/A
=item {bh} : Bihari
1
N/A
1
N/A
=item {bik} : Bikol
1
N/A
1
N/A
=item {bin} : Bini
1
N/A
1
N/A
=item {bi} : Bislama
1
N/A
1
N/A
eq Bichelamar.
1
N/A
1
N/A
=item {bs} : Bosnian
1
N/A
1
N/A
=item {bra} : Braj
1
N/A
1
N/A
=item {br} : Breton
1
N/A
1
N/A
=item {bug} : Buginese
1
N/A
1
N/A
=item {bg} : Bulgarian
1
N/A
1
N/A
=item {i-bnn} : Bunun
1
N/A
1
N/A
=item {bua} : Buriat
1
N/A
1
N/A
=item {my} : Burmese
1
N/A
1
N/A
=item {cad} : Caddo
1
N/A
1
N/A
=item {car} : Carib
1
N/A
1
N/A
=item {ca} : Catalan
1
N/A
1
N/A
eq CatalE<aacute>n. eq Catalonian.
1
N/A
1
N/A
=item [{cau} : Caucasian (Other)]
1
N/A
1
N/A
=item {ceb} : Cebuano
1
N/A
1
N/A
=item [{cel} : Celtic (Other)]
1
N/A
1
N/A
Notable forms:
1
N/A
{cel-gaulish} Gaulish (Historical)
1
N/A
1
N/A
=item [{cai} : Central American Indian (Other)]
1
N/A
1
N/A
=item {chg} : Chagatai
1
N/A
1
N/A
(Historical?)
1
N/A
1
N/A
=item [{cmc} : Chamic languages]
1
N/A
1
N/A
=item {ch} : Chamorro
1
N/A
1
N/A
=item {ce} : Chechen
1
N/A
1
N/A
=item {chr} : Cherokee
1
N/A
1
N/A
eq Tsalagi
1
N/A
1
N/A
=item {chy} : Cheyenne
1
N/A
1
N/A
=item {chb} : Chibcha
1
N/A
1
N/A
(Historical) NOT Chibchan (which is a language family).
1
N/A
1
N/A
=item {ny} : Chichewa
1
N/A
1
N/A
eq Nyanja. eq Chinyanja.
1
N/A
1
N/A
=item {zh} : Chinese
1
N/A
1
N/A
Many forms are mutually un-intelligible in spoken media.
1
N/A
Notable forms:
1
N/A
{zh-Hans} Chinese, in simplified script;
1
N/A
{zh-Hant} Chinese, in traditional script;
1
N/A
{zh-tw} Taiwan Chinese;
1
N/A
{zh-cn} PRC Chinese;
1
N/A
{zh-sg} Singapore Chinese;
1
N/A
{zh-mo} Macau Chinese;
1
N/A
{zh-hk} Hong Kong Chinese;
1
N/A
{zh-guoyu} Mandarin [
Putonghua
/
Guoyu
];
1
N/A
{zh-hakka} Hakka [formerly "i-hakka"];
1
N/A
{zh-min} Hokkien;
1
N/A
{zh-min-nan} Southern Hokkien;
1
N/A
{zh-wuu} Shanghaiese;
1
N/A
{zh-xiang} Hunanese;
1
N/A
{zh-gan} Gan;
1
N/A
{zh-yue} Cantonese.
1
N/A
1
N/A
=for etc
1
N/A
{i-hakka} Hakka (old tag)
1
N/A
1
N/A
=item {chn} : Chinook Jargon
1
N/A
1
N/A
eq Chinook Wawa.
1
N/A
1
N/A
=item {chp} : Chipewyan
1
N/A
1
N/A
=item {cho} : Choctaw
1
N/A
1
N/A
=item {cu} : Church Slavic
1
N/A
1
N/A
eq Old Church Slavonic.
1
N/A
1
N/A
=item {chk} : Chuukese
1
N/A
1
N/A
eq Trukese. eq Chuuk. eq Truk. eq Ruk.
1
N/A
1
N/A
=item {cv} : Chuvash
1
N/A
1
N/A
=item {cop} : Coptic
1
N/A
1
N/A
=item {kw} : Cornish
1
N/A
1
N/A
=item {co} : Corsican
1
N/A
1
N/A
eq Corse.
1
N/A
1
N/A
=item {cr} : Cree
1
N/A
1
N/A
NOT Creek! (Formerly "cre".)
1
N/A
1
N/A
=item {mus} : Creek
1
N/A
1
N/A
NOT Cree!
1
N/A
1
N/A
=item [{cpe} : English-based Creoles and pidgins (Other)]
1
N/A
1
N/A
=item [{cpf} : French-based Creoles and pidgins (Other)]
1
N/A
1
N/A
=item [{cpp} : Portuguese-based Creoles and pidgins (Other)]
1
N/A
1
N/A
=item [{crp} : Creoles and pidgins (Other)]
1
N/A
1
N/A
=item {hr} : Croatian
1
N/A
1
N/A
eq Croat.
1
N/A
1
N/A
=item [{cus} : Cushitic (Other)]
1
N/A
1
N/A
=item {cs} : Czech
1
N/A
1
N/A
=item {dak} : Dakota
1
N/A
1
N/A
eq Nakota. eq Latoka.
1
N/A
1
N/A
=item {da} : Danish
1
N/A
1
N/A
=item {dar} : Dargwa
1
N/A
1
N/A
=item {day} : Dayak
1
N/A
1
N/A
=item {i-default} : Default (Fallthru) Language
1
N/A
1
N/A
Defined in RFC 2277, this is for tagging text
1
N/A
(which must include English text, and
might
/
should
include text
1
N/A
in other appropriate languages) that is emitted in a context
1
N/A
where language-negotiation wasn't possible -- in SMTP mail failure
1
N/A
messages, for example.
1
N/A
1
N/A
=item {del} : Delaware
1
N/A
1
N/A
=item {din} : Dinka
1
N/A
1
N/A
=item {dv} : Divehi
1
N/A
1
N/A
eq Maldivian. (Formerly "div".)
1
N/A
1
N/A
=item {doi} : Dogri
1
N/A
1
N/A
NOT Dogrib!
1
N/A
1
N/A
=item {dgr} : Dogrib
1
N/A
1
N/A
NOT Dogri!
1
N/A
1
N/A
=item [{dra} : Dravidian (Other)]
1
N/A
1
N/A
=item {dua} : Duala
1
N/A
1
N/A
=item {nl} : Dutch
1
N/A
1
N/A
eq Netherlander. Notable forms:
1
N/A
{nl-nl} Netherlands Dutch;
1
N/A
{nl-be} Belgian Dutch.
1
N/A
1
N/A
=item {dum} : Middle Dutch (ca.1050-1350)
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item {dyu} : Dyula
1
N/A
1
N/A
=item {dz} : Dzongkha
1
N/A
1
N/A
=item {efi} : Efik
1
N/A
1
N/A
=item {egy} : Ancient Egyptian
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item {eka} : Ekajuk
1
N/A
1
N/A
=item {elx} : Elamite
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item {en} : English
1
N/A
1
N/A
Notable forms:
1
N/A
{en-au} Australian English;
1
N/A
{en-bz} Belize English;
1
N/A
{en-ca} Canadian English;
1
N/A
{en-gb} UK English;
1
N/A
{en-ie} Irish English;
1
N/A
{en-jm} Jamaican English;
1
N/A
{en-nz} New Zealand English;
1
N/A
{en-ph} Philippine English;
1
N/A
{en-tt} Trinidad English;
1
N/A
{en-us} US English;
1
N/A
{en-za} South African English;
1
N/A
{en-zw} Zimbabwe English.
1
N/A
1
N/A
=item {enm} : Old English (1100-1500)
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item {ang} : Old English (ca.450-1100)
1
N/A
1
N/A
eq Anglo-Saxon. (Historical)
1
N/A
1
N/A
=item {i-enochian} : Enochian (Artificial)
1
N/A
1
N/A
=item {myv} : Erzya
1
N/A
1
N/A
=item {eo} : Esperanto
1
N/A
1
N/A
(Artificial)
1
N/A
1
N/A
=item {et} : Estonian
1
N/A
1
N/A
=item {ee} : Ewe
1
N/A
1
N/A
(Formerly "ewe".)
1
N/A
1
N/A
=item {ewo} : Ewondo
1
N/A
1
N/A
=item {fan} : Fang
1
N/A
1
N/A
=item {fat} : Fanti
1
N/A
1
N/A
=item {fo} : Faroese
1
N/A
1
N/A
=item {fj} : Fijian
1
N/A
1
N/A
=item {fi} : Finnish
1
N/A
1
N/A
=item [{fiu} : Finno-Ugrian (Other)]
1
N/A
1
N/A
eq Finno-Ugric. NOT Ugaritic!
1
N/A
1
N/A
=item {fon} : Fon
1
N/A
1
N/A
=item {fr} : French
1
N/A
1
N/A
Notable forms:
1
N/A
{fr-fr} France French;
1
N/A
{fr-be} Belgian French;
1
N/A
{fr-ca} Canadian French;
1
N/A
{fr-ch} Swiss French;
1
N/A
{fr-lu} Luxembourg French;
1
N/A
{fr-mc} Monaco French.
1
N/A
1
N/A
=item {frm} : Middle French (ca.1400-1600)
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item {fro} : Old French (842-ca.1400)
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item {fy} : Frisian
1
N/A
1
N/A
=item {fur} : Friulian
1
N/A
1
N/A
=item {ff} : Fulah
1
N/A
1
N/A
(Formerly "ful".)
1
N/A
1
N/A
=item {gaa} : Ga
1
N/A
1
N/A
=item {gd} : Scots Gaelic
1
N/A
1
N/A
NOT Scots!
1
N/A
1
N/A
=item {gl} : Gallegan
1
N/A
1
N/A
eq Galician
1
N/A
1
N/A
=item {lg} : Ganda
1
N/A
1
N/A
(Formerly "lug".)
1
N/A
1
N/A
=item {gay} : Gayo
1
N/A
1
N/A
=item {gba} : Gbaya
1
N/A
1
N/A
=item {gez} : Geez
1
N/A
1
N/A
eq Ge'ez
1
N/A
1
N/A
=item {ka} : Georgian
1
N/A
1
N/A
=item {de} : German
1
N/A
1
N/A
Notable forms:
1
N/A
{de-at} Austrian German;
1
N/A
{de-be} Belgian German;
1
N/A
{de-ch} Swiss German;
1
N/A
{de-de} Germany German;
1
N/A
{de-li} Liechtenstein German;
1
N/A
{de-lu} Luxembourg German.
1
N/A
1
N/A
=item {gmh} : Middle High German (ca.1050-1500)
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item {goh} : Old High German (ca.750-1050)
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item [{gem} : Germanic (Other)]
1
N/A
1
N/A
=item {gil} : Gilbertese
1
N/A
1
N/A
=item {gon} : Gondi
1
N/A
1
N/A
=item {gor} : Gorontalo
1
N/A
1
N/A
=item {got} : Gothic
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item {grb} : Grebo
1
N/A
1
N/A
=item {grc} : Ancient Greek
1
N/A
1
N/A
(Historical) (Until 15th century or so.)
1
N/A
1
N/A
=item {el} : Modern Greek
1
N/A
1
N/A
(Since 15th century or so.)
1
N/A
1
N/A
=item {gn} : Guarani
1
N/A
1
N/A
GuaranE<iacute>
1
N/A
1
N/A
=item {gu} : Gujarati
1
N/A
1
N/A
=item {gwi} : Gwich'in
1
N/A
1
N/A
eq Gwichin
1
N/A
1
N/A
=item {hai} : Haida
1
N/A
1
N/A
=item {ht} : Haitian
1
N/A
1
N/A
eq Haitian Creole
1
N/A
1
N/A
=item {ha} : Hausa
1
N/A
1
N/A
=item {haw} : Hawaiian
1
N/A
1
N/A
Hawai'ian
1
N/A
1
N/A
=item {he} : Hebrew
1
N/A
1
N/A
(Formerly "iw".)
1
N/A
1
N/A
=for etc
1
N/A
{iw} Hebrew (old tag)
1
N/A
1
N/A
=item {hz} : Herero
1
N/A
1
N/A
=item {hil} : Hiligaynon
1
N/A
1
N/A
=item {him} : Himachali
1
N/A
1
N/A
=item {hi} : Hindi
1
N/A
1
N/A
=item {ho} : Hiri Motu
1
N/A
1
N/A
=item {hit} : Hittite
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item {hmn} : Hmong
1
N/A
1
N/A
=item {hu} : Hungarian
1
N/A
1
N/A
=item {hup} : Hupa
1
N/A
1
N/A
=item {iba} : Iban
1
N/A
1
N/A
=item {is} : Icelandic
1
N/A
1
N/A
=item {io} : Ido
1
N/A
1
N/A
(Artificial)
1
N/A
1
N/A
=item {ig} : Igbo
1
N/A
1
N/A
(Formerly "ibo".)
1
N/A
1
N/A
=item {ijo} : Ijo
1
N/A
1
N/A
=item {ilo} : Iloko
1
N/A
1
N/A
=item [{inc} : Indic (Other)]
1
N/A
1
N/A
=item [{ine} : Indo-European (Other)]
1
N/A
1
N/A
=item {id} : Indonesian
1
N/A
1
N/A
(Formerly "in".)
1
N/A
1
N/A
=for etc
1
N/A
{in} Indonesian (old tag)
1
N/A
1
N/A
=item {inh} : Ingush
1
N/A
1
N/A
=item {ia} : Interlingua (International Auxiliary Language Association)
1
N/A
1
N/A
(Artificial) NOT Interlingue!
1
N/A
1
N/A
=item {ie} : Interlingue
1
N/A
1
N/A
(Artificial) NOT Interlingua!
1
N/A
1
N/A
=item {iu} : Inuktitut
1
N/A
1
N/A
A subform of "Eskimo".
1
N/A
1
N/A
=item {ik} : Inupiaq
1
N/A
1
N/A
A subform of "Eskimo".
1
N/A
1
N/A
=item [{ira} : Iranian (Other)]
1
N/A
1
N/A
=item {ga} : Irish
1
N/A
1
N/A
=item {mga} : Middle Irish (900-1200)
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item {sga} : Old Irish (to 900)
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item [{iro} : Iroquoian languages]
1
N/A
1
N/A
=item {it} : Italian
1
N/A
1
N/A
Notable forms:
1
N/A
{it-it} Italy Italian;
1
N/A
{it-ch} Swiss Italian.
1
N/A
1
N/A
=item {ja} : Japanese
1
N/A
1
N/A
(NOT "jp"!)
1
N/A
1
N/A
=item {jv} : Javanese
1
N/A
1
N/A
(Formerly "jw" because of a typo.)
1
N/A
1
N/A
=item {jrb} : Judeo-Arabic
1
N/A
1
N/A
=item {jpr} : Judeo-Persian
1
N/A
1
N/A
=item {kbd} : Kabardian
1
N/A
1
N/A
=item {kab} : Kabyle
1
N/A
1
N/A
=item {kac} : Kachin
1
N/A
1
N/A
=item {kl} : Kalaallisut
1
N/A
1
N/A
eq Greenlandic "Eskimo"
1
N/A
1
N/A
=item {xal} : Kalmyk
1
N/A
1
N/A
=item {kam} : Kamba
1
N/A
1
N/A
=item {kn} : Kannada
1
N/A
1
N/A
eq Kanarese. NOT Canadian!
1
N/A
1
N/A
=item {kr} : Kanuri
1
N/A
1
N/A
(Formerly "kau".)
1
N/A
1
N/A
=item {krc} : Karachay-Balkar
1
N/A
1
N/A
=item {kaa} : Kara-Kalpak
1
N/A
1
N/A
=item {kar} : Karen
1
N/A
1
N/A
=item {ks} : Kashmiri
1
N/A
1
N/A
=item {csb} : Kashubian
1
N/A
1
N/A
eq Kashub
1
N/A
1
N/A
=item {kaw} : Kawi
1
N/A
1
N/A
=item {kk} : Kazakh
1
N/A
1
N/A
=item {kha} : Khasi
1
N/A
1
N/A
=item {km} : Khmer
1
N/A
1
N/A
eq Cambodian. eq Kampuchean.
1
N/A
1
N/A
=item [{khi} : Khoisan (Other)]
1
N/A
1
N/A
=item {kho} : Khotanese
1
N/A
1
N/A
=item {ki} : Kikuyu
1
N/A
1
N/A
eq Gikuyu.
1
N/A
1
N/A
=item {kmb} : Kimbundu
1
N/A
1
N/A
=item {rw} : Kinyarwanda
1
N/A
1
N/A
=item {ky} : Kirghiz
1
N/A
1
N/A
=item {i-klingon} : Klingon
1
N/A
1
N/A
=item {kv} : Komi
1
N/A
1
N/A
=item {kg} : Kongo
1
N/A
1
N/A
(Formerly "kon".)
1
N/A
1
N/A
=item {kok} : Konkani
1
N/A
1
N/A
=item {ko} : Korean
1
N/A
1
N/A
=item {kos} : Kosraean
1
N/A
1
N/A
=item {kpe} : Kpelle
1
N/A
1
N/A
=item {kro} : Kru
1
N/A
1
N/A
=item {kj} : Kuanyama
1
N/A
1
N/A
=item {kum} : Kumyk
1
N/A
1
N/A
=item {ku} : Kurdish
1
N/A
1
N/A
=item {kru} : Kurukh
1
N/A
1
N/A
=item {kut} : Kutenai
1
N/A
1
N/A
=item {lad} : Ladino
1
N/A
1
N/A
eq Judeo-Spanish. NOT Ladin (a minority language in Italy).
1
N/A
1
N/A
=item {lah} : Lahnda
1
N/A
1
N/A
NOT Lamba!
1
N/A
1
N/A
=item {lam} : Lamba
1
N/A
1
N/A
NOT Lahnda!
1
N/A
1
N/A
=item {lo} : Lao
1
N/A
1
N/A
eq Laotian.
1
N/A
1
N/A
=item {la} : Latin
1
N/A
1
N/A
(Historical) NOT Ladin! NOT Ladino!
1
N/A
1
N/A
=item {lv} : Latvian
1
N/A
1
N/A
eq Lettish.
1
N/A
1
N/A
=item {lb} : Letzeburgesch
1
N/A
1
N/A
eq Luxemburgian, eq Luxemburger. (Formerly "i-lux".)
1
N/A
1
N/A
=for etc
1
N/A
{i-lux} Letzeburgesch (old tag)
1
N/A
1
N/A
=item {lez} : Lezghian
1
N/A
1
N/A
=item {li} : Limburgish
1
N/A
1
N/A
eq Limburger, eq Limburgan. NOT Letzeburgesch!
1
N/A
1
N/A
=item {ln} : Lingala
1
N/A
1
N/A
=item {lt} : Lithuanian
1
N/A
1
N/A
=item {nds} : Low German
1
N/A
1
N/A
eq Low Saxon. eq Low German. eq Low Saxon.
1
N/A
1
N/A
=item {art-lojban} : Lojban (Artificial)
1
N/A
1
N/A
=item {loz} : Lozi
1
N/A
1
N/A
=item {lu} : Luba-Katanga
1
N/A
1
N/A
(Formerly "lub".)
1
N/A
1
N/A
=item {lua} : Luba-Lulua
1
N/A
1
N/A
=item {lui} : Luiseno
1
N/A
1
N/A
eq LuiseE<ntilde>o.
1
N/A
1
N/A
=item {lun} : Lunda
1
N/A
1
N/A
=item {luo} : Luo (Kenya and Tanzania)
1
N/A
1
N/A
=item {lus} : Lushai
1
N/A
1
N/A
=item {mk} : Macedonian
1
N/A
1
N/A
eq the modern Slavic language spoken in what was Yugoslavia.
1
N/A
NOT the form of Greek spoken in Greek Macedonia!
1
N/A
1
N/A
=item {mad} : Madurese
1
N/A
1
N/A
=item {mag} : Magahi
1
N/A
1
N/A
=item {mai} : Maithili
1
N/A
1
N/A
=item {mak} : Makasar
1
N/A
1
N/A
=item {mg} : Malagasy
1
N/A
1
N/A
=item {ms} : Malay
1
N/A
1
N/A
NOT Malayalam!
1
N/A
1
N/A
=item {ml} : Malayalam
1
N/A
1
N/A
NOT Malay!
1
N/A
1
N/A
=item {mt} : Maltese
1
N/A
1
N/A
=item {mnc} : Manchu
1
N/A
1
N/A
=item {mdr} : Mandar
1
N/A
1
N/A
NOT Mandarin!
1
N/A
1
N/A
=item {man} : Mandingo
1
N/A
1
N/A
=item {mni} : Manipuri
1
N/A
1
N/A
eq Meithei.
1
N/A
1
N/A
=item [{mno} : Manobo languages]
1
N/A
1
N/A
=item {gv} : Manx
1
N/A
1
N/A
=item {mi} : Maori
1
N/A
1
N/A
NOT Mari!
1
N/A
1
N/A
=item {mr} : Marathi
1
N/A
1
N/A
=item {chm} : Mari
1
N/A
1
N/A
NOT Maori!
1
N/A
1
N/A
=item {mh} : Marshall
1
N/A
1
N/A
eq Marshallese.
1
N/A
1
N/A
=item {mwr} : Marwari
1
N/A
1
N/A
=item {mas} : Masai
1
N/A
1
N/A
=item [{myn} : Mayan languages]
1
N/A
1
N/A
=item {men} : Mende
1
N/A
1
N/A
=item {mic} : Micmac
1
N/A
1
N/A
=item {min} : Minangkabau
1
N/A
1
N/A
=item {i-mingo} : Mingo
1
N/A
1
N/A
eq the Irquoian language West Virginia Seneca. NOT New York Seneca!
1
N/A
1
N/A
=item [{mis} : Miscellaneous languages]
1
N/A
1
N/A
Don't use this.
1
N/A
1
N/A
=item {moh} : Mohawk
1
N/A
1
N/A
=item {mdf} : Moksha
1
N/A
1
N/A
=item {mo} : Moldavian
1
N/A
1
N/A
eq Moldovan.
1
N/A
1
N/A
=item [{mkh} : Mon-Khmer (Other)]
1
N/A
1
N/A
=item {lol} : Mongo
1
N/A
1
N/A
=item {mn} : Mongolian
1
N/A
1
N/A
eq Mongol.
1
N/A
1
N/A
=item {mos} : Mossi
1
N/A
1
N/A
=item [{mul} : Multiple languages]
1
N/A
1
N/A
Not for normal use.
1
N/A
1
N/A
=item [{mun} : Munda languages]
1
N/A
1
N/A
=item {nah} : Nahuatl
1
N/A
1
N/A
=item {nap} : Neapolitan
1
N/A
1
N/A
=item {na} : Nauru
1
N/A
1
N/A
=item {nv} : Navajo
1
N/A
1
N/A
eq Navaho. (Formerly "i-navajo".)
1
N/A
1
N/A
=for etc
1
N/A
{i-navajo} Navajo (old tag)
1
N/A
1
N/A
=item {nd} : North Ndebele
1
N/A
1
N/A
=item {nr} : South Ndebele
1
N/A
1
N/A
=item {ng} : Ndonga
1
N/A
1
N/A
=item {ne} : Nepali
1
N/A
1
N/A
eq Nepalese. Notable forms:
1
N/A
{ne-np} Nepal Nepali;
1
N/A
{ne-in} India Nepali.
1
N/A
1
N/A
=item {new} : Newari
1
N/A
1
N/A
=item {nia} : Nias
1
N/A
1
N/A
=item [{nic} : Niger-Kordofanian (Other)]
1
N/A
1
N/A
=item [{ssa} : Nilo-Saharan (Other)]
1
N/A
1
N/A
=item {niu} : Niuean
1
N/A
1
N/A
=item {nog} : Nogai
1
N/A
1
N/A
=item {non} : Old Norse
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item [{nai} : North American Indian]
1
N/A
1
N/A
Do not use this.
1
N/A
1
N/A
=item {no} : Norwegian
1
N/A
1
N/A
Note the two following forms:
1
N/A
1
N/A
=item {nb} : Norwegian Bokmal
1
N/A
1
N/A
eq BokmE<aring>l, (A form of Norwegian.) (Formerly "no-bok".)
1
N/A
1
N/A
=for etc
1
N/A
{no-bok} Norwegian Bokmal (old tag)
1
N/A
1
N/A
=item {nn} : Norwegian Nynorsk
1
N/A
1
N/A
(A form of Norwegian.) (Formerly "no-nyn".)
1
N/A
1
N/A
=for etc
1
N/A
{no-nyn} Norwegian Nynorsk (old tag)
1
N/A
1
N/A
=item [{nub} : Nubian languages]
1
N/A
1
N/A
=item {nym} : Nyamwezi
1
N/A
1
N/A
=item {nyn} : Nyankole
1
N/A
1
N/A
=item {nyo} : Nyoro
1
N/A
1
N/A
=item {nzi} : Nzima
1
N/A
1
N/A
=item {oc} : Occitan (post 1500)
1
N/A
1
N/A
eq ProvenE<ccedil>al, eq Provencal
1
N/A
1
N/A
=item {oj} : Ojibwa
1
N/A
1
N/A
eq Ojibwe. (Formerly "oji".)
1
N/A
1
N/A
=item {or} : Oriya
1
N/A
1
N/A
=item {om} : Oromo
1
N/A
1
N/A
=item {osa} : Osage
1
N/A
1
N/A
=item {os} : Ossetian; Ossetic
1
N/A
1
N/A
=item [{oto} : Otomian languages]
1
N/A
1
N/A
Group of languages collectively called "OtomE<iacute>".
1
N/A
1
N/A
=item {pal} : Pahlavi
1
N/A
1
N/A
eq Pahlevi
1
N/A
1
N/A
=item {i-pwn} : Paiwan
1
N/A
1
N/A
eq Pariwan
1
N/A
1
N/A
=item {pau} : Palauan
1
N/A
1
N/A
=item {pi} : Pali
1
N/A
1
N/A
(Historical?)
1
N/A
1
N/A
=item {pam} : Pampanga
1
N/A
1
N/A
=item {pag} : Pangasinan
1
N/A
1
N/A
=item {pa} : Panjabi
1
N/A
1
N/A
eq Punjabi
1
N/A
1
N/A
=item {pap} : Papiamento
1
N/A
1
N/A
eq Papiamentu.
1
N/A
1
N/A
=item [{paa} : Papuan (Other)]
1
N/A
1
N/A
=item {fa} : Persian
1
N/A
1
N/A
eq Farsi. eq Iranian.
1
N/A
1
N/A
=item {peo} : Old Persian (ca.600-400 B.C.)
1
N/A
1
N/A
=item [{phi} : Philippine (Other)]
1
N/A
1
N/A
=item {phn} : Phoenician
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item {pon} : Pohnpeian
1
N/A
1
N/A
NOT Pompeiian!
1
N/A
1
N/A
=item {pl} : Polish
1
N/A
1
N/A
=item {pt} : Portuguese
1
N/A
1
N/A
eq Portugese. Notable forms:
1
N/A
{pt-pt} Portugal Portuguese;
1
N/A
{pt-br} Brazilian Portuguese.
1
N/A
1
N/A
=item [{pra} : Prakrit languages]
1
N/A
1
N/A
=item {pro} : Old Provencal (to 1500)
1
N/A
1
N/A
eq Old ProvenE<ccedil>al. (Historical.)
1
N/A
1
N/A
=item {ps} : Pushto
1
N/A
1
N/A
eq Pashto. eq Pushtu.
1
N/A
1
N/A
=item {qu} : Quechua
1
N/A
1
N/A
eq Quecha.
1
N/A
1
N/A
=item {rm} : Raeto-Romance
1
N/A
1
N/A
eq Romansh.
1
N/A
1
N/A
=item {raj} : Rajasthani
1
N/A
1
N/A
=item {rap} : Rapanui
1
N/A
1
N/A
=item {rar} : Rarotongan
1
N/A
1
N/A
=item [{qaa - qtz} : Reserved for local use.]
1
N/A
1
N/A
=item [{roa} : Romance (Other)]
1
N/A
1
N/A
NOT Romanian! NOT Romany! NOT Romansh!
1
N/A
1
N/A
=item {ro} : Romanian
1
N/A
1
N/A
eq Rumanian. NOT Romany!
1
N/A
1
N/A
=item {rom} : Romany
1
N/A
1
N/A
eq Rom. NOT Romanian!
1
N/A
1
N/A
=item {rn} : Rundi
1
N/A
1
N/A
=item {ru} : Russian
1
N/A
1
N/A
NOT White Russian! NOT Rusyn!
1
N/A
1
N/A
=item [{sal} : Salishan languages]
1
N/A
1
N/A
Large language group.
1
N/A
1
N/A
=item {sam} : Samaritan Aramaic
1
N/A
1
N/A
NOT Aramaic!
1
N/A
1
N/A
=item {se} : Northern Sami
1
N/A
1
N/A
eq Lappish. eq Lapp. eq (Northern) Saami.
1
N/A
1
N/A
=item {sma} : Southern Sami
1
N/A
1
N/A
=item {smn} : Inari Sami
1
N/A
1
N/A
=item {smj} : Lule Sami
1
N/A
1
N/A
=item {sms} : Skolt Sami
1
N/A
1
N/A
=item [{smi} : Sami languages (Other)]
1
N/A
1
N/A
=item {sm} : Samoan
1
N/A
1
N/A
=item {sad} : Sandawe
1
N/A
1
N/A
=item {sg} : Sango
1
N/A
1
N/A
=item {sa} : Sanskrit
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item {sat} : Santali
1
N/A
1
N/A
=item {sc} : Sardinian
1
N/A
1
N/A
eq Sard.
1
N/A
1
N/A
=item {sas} : Sasak
1
N/A
1
N/A
=item {sco} : Scots
1
N/A
1
N/A
NOT Scots Gaelic!
1
N/A
1
N/A
=item {sel} : Selkup
1
N/A
1
N/A
=item [{sem} : Semitic (Other)]
1
N/A
1
N/A
=item {sr} : Serbian
1
N/A
1
N/A
eq Serb. NOT Sorbian.
1
N/A
1
N/A
Notable forms:
1
N/A
{sr-Cyrl} : Serbian in Cyrillic script;
1
N/A
{sr-Latn} : Serbian in Latin script.
1
N/A
1
N/A
=item {srr} : Serer
1
N/A
1
N/A
=item {shn} : Shan
1
N/A
1
N/A
=item {sn} : Shona
1
N/A
1
N/A
=item {sid} : Sidamo
1
N/A
1
N/A
=item {sgn-...} : Sign Languages
1
N/A
1
N/A
Always use with a subtag. Notable forms:
1
N/A
{sgn-gb} British Sign Language (BSL);
1
N/A
{sgn-ie} Irish Sign Language (ESL);
1
N/A
{sgn-ni} Nicaraguan Sign Language (ISN);
1
N/A
{sgn-us} American Sign Language (ASL).
1
N/A
1
N/A
(And so on with other country codes as the subtag.)
1
N/A
1
N/A
=item {bla} : Siksika
1
N/A
1
N/A
eq Blackfoot. eq Pikanii.
1
N/A
1
N/A
=item {sd} : Sindhi
1
N/A
1
N/A
=item {si} : Sinhalese
1
N/A
1
N/A
eq Sinhala.
1
N/A
1
N/A
=item [{sit} : Sino-Tibetan (Other)]
1
N/A
1
N/A
=item [{sio} : Siouan languages]
1
N/A
1
N/A
=item {den} : Slave (Athapascan)
1
N/A
1
N/A
("Slavey" is a subform.)
1
N/A
1
N/A
=item [{sla} : Slavic (Other)]
1
N/A
1
N/A
=item {sk} : Slovak
1
N/A
1
N/A
eq Slovakian.
1
N/A
1
N/A
=item {sl} : Slovenian
1
N/A
1
N/A
eq Slovene.
1
N/A
1
N/A
=item {sog} : Sogdian
1
N/A
1
N/A
=item {so} : Somali
1
N/A
1
N/A
=item {son} : Songhai
1
N/A
1
N/A
=item {snk} : Soninke
1
N/A
1
N/A
=item {wen} : Sorbian languages
1
N/A
1
N/A
eq Wendish. eq Sorb. eq Lusatian. eq Wend. NOT Venda! NOT Serbian!
1
N/A
1
N/A
=item {nso} : Northern Sotho
1
N/A
1
N/A
=item {st} : Southern Sotho
1
N/A
1
N/A
eq Sutu. eq Sesotho.
1
N/A
1
N/A
=item [{sai} : South American Indian (Other)]
1
N/A
1
N/A
=item {es} : Spanish
1
N/A
1
N/A
Notable forms:
1
N/A
{es-ar} Argentine Spanish;
1
N/A
{es-bo} Bolivian Spanish;
1
N/A
{es-cl} Chilean Spanish;
1
N/A
{es-co} Colombian Spanish;
1
N/A
{es-do} Dominican Spanish;
1
N/A
{es-ec} Ecuadorian Spanish;
1
N/A
{es-es} Spain Spanish;
1
N/A
{es-gt} Guatemalan Spanish;
1
N/A
{es-hn} Honduran Spanish;
1
N/A
{es-mx} Mexican Spanish;
1
N/A
{es-pa} Panamanian Spanish;
1
N/A
{es-pe} Peruvian Spanish;
1
N/A
{es-pr} Puerto Rican Spanish;
1
N/A
{es-py} Paraguay Spanish;
1
N/A
{es-sv} Salvadoran Spanish;
1
N/A
{es-us} US Spanish;
1
N/A
{es-uy} Uruguayan Spanish;
1
N/A
{es-ve} Venezuelan Spanish.
1
N/A
1
N/A
=item {suk} : Sukuma
1
N/A
1
N/A
=item {sux} : Sumerian
1
N/A
1
N/A
(Historical)
1
N/A
1
N/A
=item {su} : Sundanese
1
N/A
1
N/A
=item {sus} : Susu
1
N/A
1
N/A
=item {sw} : Swahili
1
N/A
1
N/A
eq Kiswahili
1
N/A
1
N/A
=item {ss} : Swati
1
N/A
1
N/A
=item {sv} : Swedish
1
N/A
1
N/A
Notable forms:
1
N/A
{sv-se} Sweden Swedish;
1
N/A
{sv-fi} Finland Swedish.
1
N/A
1
N/A
=item {syr} : Syriac
1
N/A
1
N/A
=item {tl} : Tagalog
1
N/A
1
N/A
=item {ty} : Tahitian
1
N/A
1
N/A
=item [{tai} : Tai (Other)]
1
N/A
1
N/A
NOT Thai!
1
N/A
1
N/A
=item {tg} : Tajik
1
N/A
1
N/A
=item {tmh} : Tamashek
1
N/A
1
N/A
=item {ta} : Tamil
1
N/A
1
N/A
=item {i-tao} : Tao
1
N/A
1
N/A
eq Yami.
1
N/A
1
N/A
=item {tt} : Tatar
1
N/A
1
N/A
=item {i-tay} : Tayal
1
N/A
1
N/A
eq Atayal. eq Atayan.
1
N/A
1
N/A
=item {te} : Telugu
1
N/A
1
N/A
=item {ter} : Tereno
1
N/A
1
N/A
=item {tet} : Tetum
1
N/A
1
N/A
=item {th} : Thai
1
N/A
1
N/A
NOT Tai!
1
N/A
1
N/A
=item {bo} : Tibetan
1
N/A
1
N/A
=item {tig} : Tigre
1
N/A
1
N/A
=item {ti} : Tigrinya
1
N/A
1
N/A
=item {tem} : Timne
1
N/A
1
N/A
eq Themne. eq Timene.
1
N/A
1
N/A
=item {tiv} : Tiv
1
N/A
1
N/A
=item {tli} : Tlingit
1
N/A
1
N/A
=item {tpi} : Tok Pisin
1
N/A
1
N/A
=item {tkl} : Tokelau
1
N/A
1
N/A
=item {tog} : Tonga (Nyasa)
1
N/A
1
N/A
NOT Tsonga!
1
N/A
1
N/A
=item {to} : Tonga (Tonga Islands)
1
N/A
1
N/A
(Pronounced "Tong-a", not "Tong-ga")
1
N/A
1
N/A
NOT Tsonga!
1
N/A
1
N/A
=item {tsi} : Tsimshian
1
N/A
1
N/A
eq Sm'algyax
1
N/A
1
N/A
=item {ts} : Tsonga
1
N/A
1
N/A
NOT Tonga!
1
N/A
1
N/A
=item {i-tsu} : Tsou
1
N/A
1
N/A
=item {tn} : Tswana
1
N/A
1
N/A
Same as Setswana.
1
N/A
1
N/A
=item {tum} : Tumbuka
1
N/A
1
N/A
=item [{tup} : Tupi languages]
1
N/A
1
N/A
=item {tr} : Turkish
1
N/A
1
N/A
(Typically in Roman script)
1
N/A
1
N/A
=item {ota} : Ottoman Turkish (1500-1928)
1
N/A
1
N/A
(Typically in Arabic script) (Historical)
1
N/A
1
N/A
=item {crh} : Crimean Turkish
1
N/A
1
N/A
eq Crimean Tatar
1
N/A
1
N/A
=item {tk} : Turkmen
1
N/A
1
N/A
eq Turkmeni.
1
N/A
1
N/A
=item {tvl} : Tuvalu
1
N/A
1
N/A
=item {tyv} : Tuvinian
1
N/A
1
N/A
eq Tuvan. eq Tuvin.
1
N/A
1
N/A
=item {tw} : Twi
1
N/A
1
N/A
=item {udm} : Udmurt
1
N/A
1
N/A
=item {uga} : Ugaritic
1
N/A
1
N/A
NOT Ugric!
1
N/A
1
N/A
=item {ug} : Uighur
1
N/A
1
N/A
=item {uk} : Ukrainian
1
N/A
1
N/A
=item {umb} : Umbundu
1
N/A
1
N/A
=item {und} : Undetermined
1
N/A
1
N/A
Not a tag for normal use.
1
N/A
1
N/A
=item {ur} : Urdu
1
N/A
1
N/A
=item {uz} : Uzbek
1
N/A
1
N/A
eq E<Ouml>zbek
1
N/A
1
N/A
Notable forms:
1
N/A
{uz-Cyrl} Uzbek in Cyrillic script;
1
N/A
{uz-Latn} Uzbek in Latin script.
1
N/A
1
N/A
=item {vai} : Vai
1
N/A
1
N/A
=item {ve} : Venda
1
N/A
1
N/A
NOT Wendish! NOT Wend! NOT Avestan! (Formerly "ven".)
1
N/A
1
N/A
=item {vi} : Vietnamese
1
N/A
1
N/A
eq Viet.
1
N/A
1
N/A
=item {vo} : Volapuk
1
N/A
1
N/A
eq VolapE<uuml>k. (Artificial)
1
N/A
1
N/A
=item {vot} : Votic
1
N/A
1
N/A
eq Votian. eq Vod.
1
N/A
1
N/A
=item [{wak} : Wakashan languages]
1
N/A
1
N/A
=item {wa} : Walloon
1
N/A
1
N/A
=item {wal} : Walamo
1
N/A
1
N/A
eq Wolaytta.
1
N/A
1
N/A
=item {war} : Waray
1
N/A
1
N/A
Presumably the Philippine language Waray-Waray (SamareE<ntilde>o),
1
N/A
not the smaller Philippine language Waray Sorsogon, nor the extinct
1
N/A
Australian language Waray.
1
N/A
1
N/A
=item {was} : Washo
1
N/A
1
N/A
eq Washoe
1
N/A
1
N/A
=item {cy} : Welsh
1
N/A
1
N/A
=item {wo} : Wolof
1
N/A
1
N/A
=item {x-...} : Unregistered (Semi-Private Use)
1
N/A
1
N/A
"x-" is a prefix for language tags that are not registered with ISO
1
N/A
or IANA. Example, x-double-dutch
1
N/A
1
N/A
=item {xh} : Xhosa
1
N/A
1
N/A
=item {sah} : Yakut
1
N/A
1
N/A
=item {yao} : Yao
1
N/A
1
N/A
(The Yao in Malawi?)
1
N/A
1
N/A
=item {yap} : Yapese
1
N/A
1
N/A
eq Yap
1
N/A
1
N/A
=item {ii} : Sichuan Yi
1
N/A
1
N/A
=item {yi} : Yiddish
1
N/A
1
N/A
Formerly "ji". Usually in Hebrew script.
1
N/A
1
N/A
Notable forms:
1
N/A
{yi-latn} Yiddish in Latin script
1
N/A
1
N/A
=item {yo} : Yoruba
1
N/A
1
N/A
=item [{ypk} : Yupik languages]
1
N/A
1
N/A
Several "Eskimo" languages.
1
N/A
1
N/A
=item {znd} : Zande
1
N/A
1
N/A
=item [{zap} : Zapotec]
1
N/A
1
N/A
(A group of languages.)
1
N/A
1
N/A
=item {zen} : Zenaga
1
N/A
1
N/A
NOT Zend.
1
N/A
1
N/A
=item {za} : Zhuang
1
N/A
1
N/A
=item {zu} : Zulu
1
N/A
1
N/A
=item {zun} : Zuni
1
N/A
1
N/A
eq ZuE<ntilde>i
1
N/A
1
N/A
=back
1
N/A
1
N/A
=for woohah END
1
N/A
1
N/A
=head1 SEE ALSO
1
N/A
1
N/A
L<I18N::LangTags|I18N::LangTags> and its "See Also" section.
1
N/A
1
N/A
=head1 COPYRIGHT AND DISCLAIMER
1
N/A
1
N/A
Copyright (c) 2001,2002,2003 Sean M. Burke. All rights reserved.
1
N/A
1
N/A
You can redistribute
and
/
or
1
N/A
modify this document under the same terms as Perl itself.
1
N/A
1
N/A
This document is provided in the hope that it will be
1
N/A
useful, but without any warranty;
1
N/A
without even the implied warranty of accuracy, authoritativeness,
1
N/A
completeness, merchantability, or fitness for a particular purpose.
1
N/A
1
N/A
Email any corrections or questions to me.
1
N/A
1
N/A
=head1 AUTHOR
1
N/A
1
N/A
Sean M. Burke, sburkeE<64>cpan.org
1
N/A
1
N/A
=cut
1
N/A
1
N/A
1
N/A
# To generate a list of just the two and three-letter codes:
1
N/A
1
N/A
#!/
usr
/
local
/
bin
/
perl
-w
1
N/A
1
N/A
require
5
;
# Time-stamp: "2001-03-13 21:53:39 MST"
1
N/A
# Sean M. Burke, sburke@cpan.org
1
N/A
# This program is for generating the
language_codes.txt
file
1
N/A
use
strict
;
1
N/A
use
LWP
::
Simple
;
1
N/A
use
HTML
::
TreeBuilder
3.10
;
1
N/A
my
$
root
=
HTML
::
TreeBuilder
->
new
();
1
N/A
my
$
url
=
'
http://lcweb.loc.gov/standards/iso639-2/bibcodes.html
'
;
1
N/A
$
root
->
parse
(
get
($
url
) ||
die
"Can't get $url"
);
1
N/A
$
root
->
eof
();
1
N/A
1
N/A
my
@
codes
;
1
N/A
1
N/A
foreach
my
$
tr
($
root
->
find_by_tag_name
(
'tr'
)) {
1
N/A
my
@f =
map
$_->
as_text
(), $
tr
->
content_list
();
1
N/A
#print map("<$_> ", @f), "\n";
1
N/A
next
unless
@f ==
5
;
1
N/A
pop
@f;
# nix the French name
1
N/A
next
if
$f[-
1
]
eq
'Language Name (English)'
;
# it's a header line
1
N/A
my
$
xx
=
splice
(@f,
2
,
1
);
# pull out the two-letter code
1
N/A
$f[-
1
] =~ s/^\s+//;
1
N/A
$f[-
1
] =~ s/\s+$//;
1
N/A
if
($
xx
=~ m/[a-
zA
-Z]/) {
# there's a two-letter code for it
1
N/A
push
@
codes
, [
lc
($f[-
1
]),
"$xx\t$f[-1]\n"
];
1
N/A
}
else
{
# print the three-letter codes.
1
N/A
if
($f[
0
]
eq
$f[
1
]) {
1
N/A
push
@
codes
, [
lc
($f[-
1
]),
"$f[1]\t$f[2]\n"
];
1
N/A
}
else
{
# shouldn't happen
1
N/A
push
@
codes
, [
lc
($f[-
1
]),
"@f !!!!!!!!!!\n"
];
1
N/A
}
1
N/A
}
1
N/A
}
1
N/A
1
N/A
print
map
$_->[
1
],
sort
{; $a->[
0
]
cmp
$b->[
0
] } @
codes
;
1
N/A
print
"[ based on $url\n at "
,
scalar
(
localtime
),
"]\n"
,
1
N/A
"[Note: doesn't include IANA-registered codes.]\n"
;
1
N/A
exit
;
1
N/A
__END__
1
N/A