Lingua::Multinational::Translit::ICAO - Multinational characters transliteration into ICAO Doc 9303


Lingua-Multinational-Translit-ICAO documentation Contained in the Lingua-Multinational-Translit-ICAO distribution.

Index


Code Index:

NAME

Top

Lingua::Multinational::Translit::ICAO -- Multinational characters transliteration into ICAO Doc 9303

SYNOPSIS

Top

 use Lingua::Multinational::Translit::ICAO qw/ ml2icao /;

 print ml2icao('word', 'iso-8859-1'); 

DESCRIPTION

Top

Lingua::Multinational::Translit::ICAO can be used for transliteration of multinational characters in conformance with ICAO Doc 9303 Recommendations.

METHODS

Top

ml2icao ( $string, [ $encoding ])

This method converts $string from multinational character set to ICAO transliteration.

Optional $encoding parameter allows to specify $string's encoding (default is 'utf-8')

AUTHORS

Top

Serguei Trouchelle <stro@railways.dp.ua>

COPYRIGHT

Top

SEE ALSO

Top

Lingua::Cyrillic::Translit::ICAO -- Cyrillic characters transliteration into ICAO Doc 9303


Lingua-Multinational-Translit-ICAO documentation Contained in the Lingua-Multinational-Translit-ICAO distribution.
# Lingua/Multinational/Translit/ICAO.pm
#
# $Id: ICAO.pm 6 2009-09-16 15:37:46Z stro $
#
# Copyright (c) 2007-2009 Serguei Trouchelle. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.

# History:
#  1.05  2009/09/16 Changed 5.8.0 to 5.008
#  1.04  2007/07/07 use Encode in preference of Text::Iconv (thanks to Nikita Dedik)
#                                   Rate Text::Iconv      Encode
#                    Text::Iconv 13243/s          --        -41%
#                    Encode      22386/s         69%          --
#  1.02  2007/07/05 use 5.8.0 added
#  1.01  2007/07/04 Initial revision

package Lingua::Multinational::Translit::ICAO;

require Exporter;
use Config;

use strict;
use warnings;
use 5.008;
use utf8;

use Encode;

our @EXPORT      = qw/ /;
our @EXPORT_OK   = qw/ ml2icao /;
our %EXPORT_TAGS = qw / /;
our @ISA = qw/Exporter/;

our $VERSION = '1.05';

my $table = q!1 1
Á A
À A
 A
Ä AE
à A
Ä‚ A
Ã… AA
Ä€ A
Ä„ A
á a
à a
â a
ä ae
ã a
ă a
Ã¥ aa
ā a
Ä… a
Ć C
ć c
Ĉ C
ĉ c
Č C
č c
ÄŠ C
Ä‹ c
Ç C
ç c
Đ D
Ä‘ d
ÄŽ D
ď d
É E
È E
Ê E
Ë E
é e
è e
ê e
ë e
Äš E
Ä› e
Ä– E
Ä— e
Ä’ E
Ä“ e
Ę E
Ä™ e
Ä” E
Ä• e
Ĝ G
ĝ g
Äž G
ÄŸ g
Ä  G
Ä¡ g
Ä¢ G
Ä£ g
Ħ H
ħ h
Ĥ H
Ä¥ h
ı i
Í I
Ì I
ÃŽ I
Ï I
İ I
Ĩ I
Ä© i
Ī I
Ä« i
Ĭ I
Ä­ i
Ä® I
į i
Ä´ J
ĵ j
Ķ K
Ä· k
Ł L
Ĺ L
Ľ L
Ä» L
Ä¿ L
Å‚ l
ĺ l
ľ l
ļ l
Å€ l
Ń N
Ň N
Å… N
ÅŠ N
Å„ n
ň n
ņ n
Å‹ n
ñ n
Ñ N
Ø OE
Ó O
Ã’ O
Ô O
Ö OE
Õ O
ó o
ò o
ô o
õ o
ö oe
Ő O
Å‘ o
Ō O
ō o
ÅŽ O
ŏ o
Å” R
Å• r
Å– R
Å— r
Ř R
Å™ r
Åš S
Ŝ S
Åž S
Å  S
Å› s
ŝ s
ÅŸ s
Å¡ s
Ŧ T
Ť T
Å¢ T
ŧ t
Å¥ t
Å£ t
Ú U
Ù U
Û U
Ü UE
ú u
ù u
û u
ü ue
Ũ U
Ŭ U
Ű U
Å® U
Ū U
Ų U
Å© u
Å­ u
ű u
ů u
Å« u
Å´ W
ŵ w
Ŷ Y
Å· y
Ź Z
ź z
Ž Z
ž z
Å» Z
ż z
Ý Y
ý y
Ÿ Y
Þ TH
Æ AE
æ ae
þ th
IJ IJ
ij ij
Å’ OE
Å“ oe
ß SS
2 2!;

our %ml2icao = split /\s+/, $table;

sub ml2icao {
  my $val = shift;
  my $lang = shift;
  my $enc = shift;
  if ($enc) {
    $val = Encode::decode($enc, $val);
  } # else think of utf-8
  utf8::decode($val);
  my $res = '';
  foreach (0 .. length $val) {
    $_ = substr($val, $_, 1);
    $_ = $ml2icao{$_} if defined $ml2icao{$_};
    $res .= $_;
  }
  return $res;
}

1;