# Locale::Script - ISO codes for script identification (ISO 15924)
# $Id: Script.pm,v 2.2 2002/07/10 16:33:28 neilb Exp $
#-----------------------------------------------------------------------
# Public Global Variables
#-----------------------------------------------------------------------
use vars
qw($VERSION @ISA @EXPORT @EXPORT_OK);
$VERSION = sprintf("%d.%02d", q$Revision: 2.2 $ =~ /(\d+)\.(\d+)/);
@EXPORT = qw(code2script script2code
all_script_codes all_script_names
LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_3 LOCALE_CODE_NUMERIC);
#-----------------------------------------------------------------------
# Private Global Variables
#-----------------------------------------------------------------------
#=======================================================================
# code2script ( CODE [, CODESET ] )
#=======================================================================
my $codeset = @_ > 0 ?
shift : LOCALE_CODE_DEFAULT
;
return undef unless defined $code;
#-------------------------------------------------------------------
# Make sure the code is in the right form before we use it
# to look up the corresponding script.
# We have to sprintf because the codes are given as 3-digits,
# with leading 0's. Eg 070 for Egyptian demotic.
#-------------------------------------------------------------------
if ($codeset == LOCALE_CODE_NUMERIC
)
return undef if ($code =~ /\D/);
$code = sprintf("%.3d", $code);
if (exists $CODES->[$codeset]->{$code})
return $CODES->[$codeset]->{$code};
#---------------------------------------------------------------
#---------------------------------------------------------------
#=======================================================================
# script2code ( SCRIPT [, CODESET ] )
#=======================================================================
my $codeset = @_ > 0 ?
shift : LOCALE_CODE_DEFAULT
;
return undef unless defined $script;
if (exists $COUNTRIES->[$codeset]->{$script})
return $COUNTRIES->[$codeset]->{$script};
#---------------------------------------------------------------
#---------------------------------------------------------------
#=======================================================================
# script_code2code ( CODE, IN-CODESET, OUT-CODESET )
#=======================================================================
(@_ == 3) or croak
"script_code2code() takes 3 arguments!";
return undef if $inset == $outset;
$script = code2script
($code, $inset);
return undef if not defined $script;
$outcode = script2code
($script, $outset);
#=======================================================================
#=======================================================================
my $codeset = @_ > 0 ?
shift : LOCALE_CODE_DEFAULT
;
return keys %{ $CODES->[$codeset] };
#=======================================================================
#=======================================================================
my $codeset = @_ > 0 ?
shift : LOCALE_CODE_DEFAULT
;
return values %{ $CODES->[$codeset] };
#=======================================================================
# initialisation code - stuff the DATA into the ALPHA2 hash
#=======================================================================
my ($alpha2, $alpha3, $numeric);
($alpha2, $alpha3, $numeric, $script) = split(/:/, $_, 4);
$CODES->[LOCALE_CODE_ALPHA_2
]->{$alpha2} = $script;
$COUNTRIES->[LOCALE_CODE_ALPHA_2
]->{"\L$script"} = $alpha2;
$CODES->[LOCALE_CODE_ALPHA_3
]->{$alpha3} = $script;
$COUNTRIES->[LOCALE_CODE_ALPHA_3
]->{"\L$script"} = $alpha3;
$CODES->[LOCALE_CODE_NUMERIC
]->{$numeric} = $script;
$COUNTRIES->[LOCALE_CODE_NUMERIC
]->{"\L$script"} = $numeric;
bh
:bhm
:300:Brahmi
(Ashoka
)
bu
:bug
:367:Buginese
(Makassar
)
ch
:chu
:221:Old Church Slavonic
cp
:cpr
:403:Cypriote syllabary
ds
:dsr
:250:Deserel
(Mormon
)
dv
:dvn
:315:Devanagari
(Nagari
)
ed
:egd
:070:Egyptian demotic
eg
:egy
:050:Egyptian hieroglyphs
eh
:egh
:060:Egyptian hieratic
eo
:eos
:210:Etruscan
and Oscan
ha
:han
:500:Han ideographs
hu
:hun
:176:Old Hungarian runic
hv
:hvn
:175:Kok Turki runic
ja
:jap
:930:(alias
for Han
+ Hiragana
+ Katakana
)
jl
:jlg
:445:Cherokee syllabary
ka
:kam
:241:Georgian
(Mxedruli
)
kh
:khn
:931:(alias
for Hangul
+ Han
)
kr
:krn
:357:Karenni
(Kayah Li
)
kx
:kax
:240:Georgian
(Xucuri
)
lf
:laf
:215:Latin
(Fraktur variant
)
lg
:lag
:216:Latin
(Gaelic variant
)
mh
:may
:090:Mayan hieroglyphs
pl
:pld
:282:Pollard Phonetic
rn
:rnr
:211:Runic
(Germanic
)
sj
:syj
:137:Syriac
(Jacobite variant
)
sl
:slb
:440:Unified Canadian Aboriginal Syllabics
sn
:syn
:136:Syriac
(Nestorian variant
)
sw
:sww
:281:Shavian
(Shaw
)
sy
:syr
:135:Syriac
(Estrangelo
)
vs
:vsp
:280:Visible Speech
xa
:xas
:000:Cuneiform
, Sumero
-Akkadian
xf
:xfa
:105:Cuneiform
, Old Persian
xk
:xkn
:412:(alias
for Hiragana
+ Katakana
)
xu
:xug
:106:Cuneiform
, Ugaritic
zx
:zxx
:997:Unwritten language
zy
:zyy
:998:Undetermined script
zz
:zzz
:999:Uncoded script