[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/5.10.0/Locale/ -> Country.pm (source)

   1  #
   2  # Locale::Country - ISO codes for country identification (ISO 3166)
   3  #
   4  # $Id: Country.pm,v 2.7 2004/06/10 21:19:34 neilb Exp $
   5  #
   6  
   7  package Locale::Country;
   8  use strict;
   9  require 5.002;
  10  
  11  require Exporter;
  12  use Carp;
  13  use Locale::Constants;
  14  
  15  
  16  #-----------------------------------------------------------------------
  17  #    Public Global Variables
  18  #-----------------------------------------------------------------------
  19  use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
  20  $VERSION   = sprintf("%d.%02d", q$Revision: 2.7 $ =~ /(\d+)\.(\d+)/);
  21  @ISA       = qw(Exporter);
  22  @EXPORT    = qw(code2country country2code
  23                  all_country_codes all_country_names
  24          country_code2code
  25          LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_3 LOCALE_CODE_NUMERIC);
  26  
  27  #-----------------------------------------------------------------------
  28  #    Private Global Variables
  29  #-----------------------------------------------------------------------
  30  my $CODES     = [];
  31  my $COUNTRIES = [];
  32  
  33  
  34  #=======================================================================
  35  #
  36  # code2country ( CODE [, CODESET ] )
  37  #
  38  #=======================================================================
  39  sub code2country
  40  {
  41      my $code = shift;
  42      my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
  43  
  44  
  45      return undef unless defined $code;
  46  
  47      #-------------------------------------------------------------------
  48      # Make sure the code is in the right form before we use it
  49      # to look up the corresponding country.
  50      # We have to sprintf because the codes are given as 3-digits,
  51      # with leading 0's. Eg 052 for Barbados.
  52      #-------------------------------------------------------------------
  53      if ($codeset == LOCALE_CODE_NUMERIC)
  54      {
  55      return undef if ($code =~ /\D/);
  56      $code = sprintf("%.3d", $code);
  57      }
  58      else
  59      {
  60      $code = lc($code);
  61      }
  62  
  63      if (exists $CODES->[$codeset]->{$code})
  64      {
  65          return $CODES->[$codeset]->{$code};
  66      }
  67      else
  68      {
  69          #---------------------------------------------------------------
  70          # no such country code!
  71          #---------------------------------------------------------------
  72          return undef;
  73      }
  74  }
  75  
  76  
  77  #=======================================================================
  78  #
  79  # country2code ( NAME [, CODESET ] )
  80  #
  81  #=======================================================================
  82  sub country2code
  83  {
  84      my $country = shift;
  85      my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
  86  
  87  
  88      return undef unless defined $country;
  89      $country = lc($country);
  90      if (exists $COUNTRIES->[$codeset]->{$country})
  91      {
  92          return $COUNTRIES->[$codeset]->{$country};
  93      }
  94      else
  95      {
  96          #---------------------------------------------------------------
  97          # no such country!
  98          #---------------------------------------------------------------
  99          return undef;
 100      }
 101  }
 102  
 103  
 104  #=======================================================================
 105  #
 106  # country_code2code ( NAME [, CODESET ] )
 107  #
 108  #=======================================================================
 109  sub country_code2code
 110  {
 111      (@_ == 3) or croak "country_code2code() takes 3 arguments!";
 112  
 113      my $code = shift;
 114      my $inset = shift;
 115      my $outset = shift;
 116      my $outcode;
 117      my $country;
 118  
 119  
 120      return undef if $inset == $outset;
 121      $country = code2country($code, $inset);
 122      return undef if not defined $country;
 123      $outcode = country2code($country, $outset);
 124      return $outcode;
 125  }
 126  
 127  
 128  #=======================================================================
 129  #
 130  # all_country_codes ( [ CODESET ] )
 131  #
 132  #=======================================================================
 133  sub all_country_codes
 134  {
 135      my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
 136  
 137      return keys %{ $CODES->[$codeset] };
 138  }
 139  
 140  
 141  #=======================================================================
 142  #
 143  # all_country_names ( [ CODESET ] )
 144  #
 145  #=======================================================================
 146  sub all_country_names
 147  {
 148      my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
 149  
 150      return values %{ $CODES->[$codeset] };
 151  }
 152  
 153  
 154  #=======================================================================
 155  #
 156  # alias_code ( ALIAS => CODE [ , CODESET ] )
 157  #
 158  # Add an alias for an existing code. If the CODESET isn't specified,
 159  # then we use the default (currently the alpha-2 codeset).
 160  #
 161  #   Locale::Country::alias_code('uk' => 'gb');
 162  #
 163  #=======================================================================
 164  sub alias_code
 165  {
 166      my $alias = shift;
 167      my $real  = shift;
 168      my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
 169  
 170      my $country;
 171  
 172  
 173      if (not exists $CODES->[$codeset]->{$real})
 174      {
 175          carp "attempt to alias \"$alias\" to unknown country code \"$real\"\n";
 176          return undef;
 177      }
 178      $country = $CODES->[$codeset]->{$real};
 179      $CODES->[$codeset]->{$alias} = $country;
 180      $COUNTRIES->[$codeset]->{"\L$country"} = $alias;
 181  
 182      return $alias;
 183  }
 184  
 185  # old name of function for backwards compatibility
 186  *_alias_code = *alias_code;
 187  
 188  
 189  #=======================================================================
 190  #
 191  # rename_country
 192  #
 193  # change the official name for a country, eg:
 194  #    gb => 'Great Britain'
 195  # rather than the standard 'United Kingdom'. The original is retained
 196  # as an alias, but the new name will be returned if you lookup the
 197  # name from code.
 198  #
 199  #=======================================================================
 200  sub rename_country
 201  {
 202      my $code     = shift;
 203      my $new_name = shift;
 204      my $codeset = @_ > 0 ? shift : _code2codeset($code);
 205      my $country;
 206      my $c;
 207  
 208  
 209      if (not defined $codeset)
 210      {
 211          carp "rename_country(): unknown country code \"$code\"\n";
 212          return 0;
 213      }
 214  
 215      $country = $CODES->[$codeset]->{$code};
 216  
 217      foreach my $cset (LOCALE_CODE_ALPHA_2,
 218              LOCALE_CODE_ALPHA_3,
 219              LOCALE_CODE_NUMERIC)
 220      {
 221      if ($cset == $codeset)
 222      {
 223          $c = $code;
 224      }
 225      else
 226      {
 227          $c = country_code2code($code, $codeset, $cset);
 228      }
 229  
 230      $CODES->[$cset]->{$c} = $new_name;
 231      $COUNTRIES->[$cset]->{"\L$new_name"} = $c;
 232      }
 233  
 234      return 1;
 235  }
 236  
 237  
 238  #=======================================================================
 239  #
 240  # _code2codeset
 241  #
 242  # given a country code in an unknown codeset, return the codeset
 243  # it is from, or undef.
 244  #
 245  #=======================================================================
 246  sub _code2codeset
 247  {
 248      my $code = shift;
 249  
 250  
 251      foreach my $codeset (LOCALE_CODE_ALPHA_2, LOCALE_CODE_ALPHA_3,
 252              LOCALE_CODE_NUMERIC)
 253      {
 254      return $codeset if (exists $CODES->[$codeset]->{$code})
 255      }
 256  
 257      return undef;
 258  }
 259  
 260  
 261  #=======================================================================
 262  #
 263  # initialisation code - stuff the DATA into the ALPHA2 hash
 264  #
 265  #=======================================================================
 266  {
 267      my   ($alpha2, $alpha3, $numeric);
 268      my   ($country, @countries);
 269      local $_;
 270  
 271  
 272      while (<DATA>)
 273      {
 274          next unless /\S/;
 275          chop;
 276          ($alpha2, $alpha3, $numeric, @countries) = split(/:/, $_);
 277  
 278          $CODES->[LOCALE_CODE_ALPHA_2]->{$alpha2} = $countries[0];
 279      foreach $country (@countries)
 280      {
 281          $COUNTRIES->[LOCALE_CODE_ALPHA_2]->{"\L$country"} = $alpha2;
 282      }
 283  
 284      if ($alpha3)
 285      {
 286              $CODES->[LOCALE_CODE_ALPHA_3]->{$alpha3} = $countries[0];
 287          foreach $country (@countries)
 288          {
 289          $COUNTRIES->[LOCALE_CODE_ALPHA_3]->{"\L$country"} = $alpha3;
 290          }
 291      }
 292  
 293      if ($numeric)
 294      {
 295              $CODES->[LOCALE_CODE_NUMERIC]->{$numeric} = $countries[0];
 296          foreach $country (@countries)
 297          {
 298          $COUNTRIES->[LOCALE_CODE_NUMERIC]->{"\L$country"} = $numeric;
 299          }
 300      }
 301  
 302      }
 303  
 304      close(DATA);
 305  }
 306  
 307  1;
 308  
 309  __DATA__
 310  ad:and:020:Andorra
 311  ae:are:784:United Arab Emirates
 312  af:afg:004:Afghanistan
 313  ag:atg:028:Antigua and Barbuda
 314  ai:aia:660:Anguilla
 315  al:alb:008:Albania
 316  am:arm:051:Armenia
 317  an:ant:530:Netherlands Antilles
 318  ao:ago:024:Angola
 319  aq:ata:010:Antarctica
 320  ar:arg:032:Argentina
 321  as:asm:016:American Samoa
 322  at:aut:040:Austria
 323  au:aus:036:Australia
 324  aw:abw:533:Aruba
 325  ax:ala:248:Aland Islands
 326  az:aze:031:Azerbaijan
 327  ba:bih:070:Bosnia and Herzegovina
 328  bb:brb:052:Barbados
 329  bd:bgd:050:Bangladesh
 330  be:bel:056:Belgium
 331  bf:bfa:854:Burkina Faso
 332  bg:bgr:100:Bulgaria
 333  bh:bhr:048:Bahrain
 334  bi:bdi:108:Burundi
 335  bj:ben:204:Benin
 336  bm:bmu:060:Bermuda
 337  bn:brn:096:Brunei Darussalam
 338  bo:bol:068:Bolivia
 339  br:bra:076:Brazil
 340  bs:bhs:044:Bahamas
 341  bt:btn:064:Bhutan
 342  bv:bvt:074:Bouvet Island
 343  bw:bwa:072:Botswana
 344  by:blr:112:Belarus
 345  bz:blz:084:Belize
 346  ca:can:124:Canada
 347  cc:cck:166:Cocos (Keeling) Islands
 348  cd:cod:180:Congo, The Democratic Republic of the:Zaire:Congo, Democratic Republic of the
 349  cf:caf:140:Central African Republic
 350  cg:cog:178:Congo:Congo, Republic of the
 351  ch:che:756:Switzerland
 352  ci:civ:384:Cote D'Ivoire
 353  ck:cok:184:Cook Islands
 354  cl:chl:152:Chile
 355  cm:cmr:120:Cameroon
 356  cn:chn:156:China
 357  co:col:170:Colombia
 358  cr:cri:188:Costa Rica
 359  cs:scg:891:Serbia and Montenegro:Yugoslavia
 360  cu:cub:192:Cuba
 361  cv:cpv:132:Cape Verde
 362  cx:cxr:162:Christmas Island
 363  cy:cyp:196:Cyprus
 364  cz:cze:203:Czech Republic
 365  de:deu:276:Germany
 366  dj:dji:262:Djibouti
 367  dk:dnk:208:Denmark
 368  dm:dma:212:Dominica
 369  do:dom:214:Dominican Republic
 370  dz:dza:012:Algeria
 371  ec:ecu:218:Ecuador
 372  ee:est:233:Estonia
 373  eg:egy:818:Egypt
 374  eh:esh:732:Western Sahara
 375  er:eri:232:Eritrea
 376  es:esp:724:Spain
 377  et:eth:231:Ethiopia
 378  fi:fin:246:Finland
 379  fj:fji:242:Fiji
 380  fk:flk:238:Falkland Islands (Malvinas):Falkland Islands (Islas Malvinas)
 381  fm:fsm:583:Micronesia, Federated States of
 382  fo:fro:234:Faroe Islands
 383  fr:fra:250:France
 384  fx:fxx:249:France, Metropolitan
 385  ga:gab:266:Gabon
 386  gb:gbr:826:United Kingdom:Great Britain
 387  gd:grd:308:Grenada
 388  ge:geo:268:Georgia
 389  gf:guf:254:French Guiana
 390  gh:gha:288:Ghana
 391  gi:gib:292:Gibraltar
 392  gl:grl:304:Greenland
 393  gm:gmb:270:Gambia
 394  gn:gin:324:Guinea
 395  gp:glp:312:Guadeloupe
 396  gq:gnq:226:Equatorial Guinea
 397  gr:grc:300:Greece
 398  gs:sgs:239:South Georgia and the South Sandwich Islands
 399  gt:gtm:320:Guatemala
 400  gu:gum:316:Guam
 401  gw:gnb:624:Guinea-Bissau
 402  gy:guy:328:Guyana
 403  hk:hkg:344:Hong Kong
 404  hm:hmd:334:Heard Island and McDonald Islands
 405  hn:hnd:340:Honduras
 406  hr:hrv:191:Croatia
 407  ht:hti:332:Haiti
 408  hu:hun:348:Hungary
 409  id:idn:360:Indonesia
 410  ie:irl:372:Ireland
 411  il:isr:376:Israel
 412  in:ind:356:India
 413  io:iot:086:British Indian Ocean Territory
 414  iq:irq:368:Iraq
 415  ir:irn:364:Iran, Islamic Republic of:Iran
 416  is:isl:352:Iceland
 417  it:ita:380:Italy
 418  jm:jam:388:Jamaica
 419  jo:jor:400:Jordan
 420  jp:jpn:392:Japan
 421  ke:ken:404:Kenya
 422  kg:kgz:417:Kyrgyzstan
 423  kh:khm:116:Cambodia
 424  ki:kir:296:Kiribati
 425  km:com:174:Comoros
 426  kn:kna:659:Saint Kitts and Nevis
 427  kp:prk:408:Korea, Democratic People's Republic of:Korea, North:North Korea
 428  kr:kor:410:Korea, Republic of:Korea, South:South Korea
 429  kw:kwt:414:Kuwait
 430  ky:cym:136:Cayman Islands
 431  kz:kaz:398:Kazakhstan:Kazakstan
 432  la:lao:418:Lao People's Democratic Republic
 433  lb:lbn:422:Lebanon
 434  lc:lca:662:Saint Lucia
 435  li:lie:438:Liechtenstein
 436  lk:lka:144:Sri Lanka
 437  lr:lbr:430:Liberia
 438  ls:lso:426:Lesotho
 439  lt:ltu:440:Lithuania
 440  lu:lux:442:Luxembourg
 441  lv:lva:428:Latvia
 442  ly:lby:434:Libyan Arab Jamahiriya:Libya
 443  ma:mar:504:Morocco
 444  mc:mco:492:Monaco
 445  md:mda:498:Moldova, Republic of:Moldova
 446  mg:mdg:450:Madagascar
 447  mh:mhl:584:Marshall Islands
 448  mk:mkd:807:Macedonia, the Former Yugoslav Republic of:Macedonia, Former Yugoslav Republic of:Macedonia
 449  ml:mli:466:Mali
 450  mm:mmr:104:Myanmar:Burma
 451  mn:mng:496:Mongolia
 452  mo:mac:446:Macao:Macau
 453  mp:mnp:580:Northern Mariana Islands
 454  mq:mtq:474:Martinique
 455  mr:mrt:478:Mauritania
 456  ms:msr:500:Montserrat
 457  mt:mlt:470:Malta
 458  mu:mus:480:Mauritius
 459  mv:mdv:462:Maldives
 460  mw:mwi:454:Malawi
 461  mx:mex:484:Mexico
 462  my:mys:458:Malaysia
 463  mz:moz:508:Mozambique
 464  na:nam:516:Namibia
 465  nc:ncl:540:New Caledonia
 466  ne:ner:562:Niger
 467  nf:nfk:574:Norfolk Island
 468  ng:nga:566:Nigeria
 469  ni:nic:558:Nicaragua
 470  nl:nld:528:Netherlands
 471  no:nor:578:Norway
 472  np:npl:524:Nepal
 473  nr:nru:520:Nauru
 474  nu:niu:570:Niue
 475  nz:nzl:554:New Zealand
 476  om:omn:512:Oman
 477  pa:pan:591:Panama
 478  pe:per:604:Peru
 479  pf:pyf:258:French Polynesia
 480  pg:png:598:Papua New Guinea
 481  ph:phl:608:Philippines
 482  pk:pak:586:Pakistan
 483  pl:pol:616:Poland
 484  pm:spm:666:Saint Pierre and Miquelon
 485  pn:pcn:612:Pitcairn:Pitcairn Island
 486  pr:pri:630:Puerto Rico
 487  ps:pse:275:Palestinian Territory, Occupied
 488  pt:prt:620:Portugal
 489  pw:plw:585:Palau
 490  py:pry:600:Paraguay
 491  qa:qat:634:Qatar
 492  re:reu:638:Reunion
 493  ro:rou:642:Romania
 494  ru:rus:643:Russian Federation:Russia
 495  rw:rwa:646:Rwanda
 496  sa:sau:682:Saudi Arabia
 497  sb:slb:090:Solomon Islands
 498  sc:syc:690:Seychelles
 499  sd:sdn:736:Sudan
 500  se:swe:752:Sweden
 501  sg:sgp:702:Singapore
 502  sh:shn:654:Saint Helena
 503  si:svn:705:Slovenia
 504  sj:sjm:744:Svalbard and Jan Mayen:Jan Mayen:Svalbard
 505  sk:svk:703:Slovakia
 506  sl:sle:694:Sierra Leone
 507  sm:smr:674:San Marino
 508  sn:sen:686:Senegal
 509  so:som:706:Somalia
 510  sr:sur:740:Suriname
 511  st:stp:678:Sao Tome and Principe
 512  sv:slv:222:El Salvador
 513  sy:syr:760:Syrian Arab Republic:Syria
 514  sz:swz:748:Swaziland
 515  tc:tca:796:Turks and Caicos Islands
 516  td:tcd:148:Chad
 517  tf:atf:260:French Southern Territories:French Southern and Antarctic Lands
 518  tg:tgo:768:Togo
 519  th:tha:764:Thailand
 520  tj:tjk:762:Tajikistan
 521  tk:tkl:772:Tokelau
 522  tm:tkm:795:Turkmenistan
 523  tn:tun:788:Tunisia
 524  to:ton:776:Tonga
 525  tl:tls:626:Timor-Leste:East Timor
 526  tr:tur:792:Turkey
 527  tt:tto:780:Trinidad and Tobago
 528  tv:tuv:798:Tuvalu
 529  tw:twn:158:Taiwan, Province of China:Taiwan
 530  tz:tza:834:Tanzania, United Republic of:Tanzania
 531  ua:ukr:804:Ukraine
 532  ug:uga:800:Uganda
 533  um:umi:581:United States Minor Outlying Islands
 534  us:usa:840:United States:USA:United States of America
 535  uy:ury:858:Uruguay
 536  uz:uzb:860:Uzbekistan
 537  va:vat:336:Holy See (Vatican City State):Holy See (Vatican City)
 538  vc:vct:670:Saint Vincent and the Grenadines
 539  ve:ven:862:Venezuela
 540  vg:vgb:092:Virgin Islands, British:British Virgin Islands
 541  vi:vir:850:Virgin Islands, U.S.
 542  vn:vnm:704:Vietnam
 543  vu:vut:548:Vanuatu
 544  wf:wlf:876:Wallis and Futuna
 545  ws:wsm:882:Samoa
 546  ye:yem:887:Yemen
 547  yt:myt:175:Mayotte
 548  za:zaf:710:South Africa
 549  zm:zmb:894:Zambia
 550  zw:zwe:716:Zimbabwe


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1