README

Lang::Transliterate

A comprehensive Raku library for transliterating text between different writing systems. Support for 130+ transliteration systems across 20+ languages.

Installation

zef install Lang::Transliterate

Features

Lang::Transliterate provides context-aware transliteration with several advanced features:

  • Context-Aware Transliteration: The library intelligently handles character combinations and contextual rules.

  • Bidirectional Conversion: Most transliteration schemes support both forward transliteration (native script to Latin or other script) and reverse transliteration, allowing round-trip conversions.

  • Case Preservation: The library automatically preserves the case of the original text when necessary, intelligently handling multi-character mappings.

  • Ancient and Historical Scripts: Support for ancient writing systems including Egyptian hieroglyphics, Imperial Aramaic, Paleo-Hebrew, and Church Slavonic, with multiple scholarly transliteration standards.

  • Klingon and Tolkien Runic: Just getting started now.

  • Extensible Architecture: All transliterators implement a common interface, making it easy to add new scripts or customize existing ones. The modular design allows for language-specific rules and exceptions.

Available Transliteration Systems

General Systems

ModuleDescription
Lang::Transliterate::BasicASCIIBasic ASCII fallback for a wide range of writing systems
Lang::Transliterate::ISO9_1995ISO 9:1995 standard for all Cyrillic scripts

Greek

Ancient Greek (Grc)

ModuleDescription
Lang::Transliterate::Grc::ScientificScientific (linguistic) transliteration

Modern Greek (El)

ModuleDescription
Lang::Transliterate::El::DIN31634German DIN 31634 standard
Lang::Transliterate::El::ISO843ISO 843 international standard

Indo-Iranian Languages

Persian/Farsi (Fa)

ModuleDescription
Lang::Transliterate::Fa::ALALCALA-LC romanization
Lang::Transliterate::Fa::BGNPCGNUS/UK geographic names standard
Lang::Transliterate::Fa::DMGDeutsche Morgenländische Gesellschaft
Lang::Transliterate::Fa::EIEncyclopaedia of Islam system
Lang::Transliterate::Fa::EI1960Encyclopaedia of Islam 1960 edition
Lang::Transliterate::Fa::UNUnited Nations romanization
Lang::Transliterate::Fa::UN1967UN romanization 1967 revision

Sanskrit (Sa)

ModuleDescription
Lang::Transliterate::Sa::IASTInternational Alphabet of Sanskrit Transliteration

Other Languages

Egyptian Hieroglyphic (Egy)

ModuleDescription
Lang::Transliterate::Egy::Allen2000James Allen (2000) Middle Egyptian
Lang::Transliterate::Egy::Buurman1988Buurman (1988) system
Lang::Transliterate::Egy::ErmanGrapow1926Erman & Grapow dictionary (1926)
Lang::Transliterate::Egy::Gardiner1927Sir Alan Gardiner (1927) system
Lang::Transliterate::Egy::Hannig1995Rainer Hannig (1995) system
Lang::Transliterate::Egy::LeidenUnified2023Leiden Unified Transliteration (2023)
Lang::Transliterate::Egy::Lepsius1874Karl Richard Lepsius (1874) system

English (En)

ModuleDescription
Lang::Transliterate::En::TolkienRunicJ.R.R. Tolkien's runic writing system for English

Klingon (Tlh)

ModuleDescription
Lang::Transliterate::Tlh::PIqaDKlingon pIqaD script transliteration

Yiddish (Yi)

ModuleDescription
Lang::Transliterate::Yi::YIVOYIVO Institute standard romanization

Semitic Languages

Arabic (Ar)

ModuleDescription
Lang::Transliterate::Ar::ALALCALA-LC romanization standard
Lang::Transliterate::Ar::ArabTeXArabTeX ASCII transliteration
Lang::Transliterate::Ar::BGNPCGNUS/UK geographic names standard
Lang::Transliterate::Ar::BSBritish Standard 4280:1968
Lang::Transliterate::Ar::DIN31635German DIN 31635 standard
Lang::Transliterate::Ar::EALLEncyclopedia of Arabic Language and Linguistics
Lang::Transliterate::Ar::EIEncyclopaedia of Islam transliteration
Lang::Transliterate::Ar::ISO233ISO 233 international standard
Lang::Transliterate::Ar::UNGEGNUN Group of Experts on Geographical Names
Lang::Transliterate::Ar::WehrHans Wehr dictionary system

Aramaic (Arc)

ModuleDescription
Lang::Transliterate::Arc::ArabicImperial Aramaic Arabic script
Lang::Transliterate::Arc::BrahmiImperial Aramaic Brahmi script
Lang::Transliterate::Arc::CyrillicImperial Aramaic Cyrillic script
Lang::Transliterate::Arc::GeezImperial Aramaic Ethiopic script
Lang::Transliterate::Arc::GreekImperial Aramaic Greek script
Lang::Transliterate::Arc::HebrewImperial Aramaic Hebrew script
Lang::Transliterate::Arc::KharosthiImperial Aramaic Kharosthi script
Lang::Transliterate::Arc::LatinImperial Aramaic Latin script
Lang::Transliterate::Arc::MaalouliImperial Aramaic Neo-Aramaic script
Lang::Transliterate::Arc::NabataeanImperial Aramaic Nabataean script
Lang::Transliterate::Arc::ParthianImperial Aramaic Parthian script
Lang::Transliterate::Arc::PhoenicianImperial Aramaic Phoenician script
Lang::Transliterate::Arc::ProtoSinaiticImperial Aramaic Proto-Sinaitic
Lang::Transliterate::Arc::SouthArabianImperial Aramaic South Arabian
Lang::Transliterate::Arc::SyriacImperial Aramaic Syriac script
Lang::Transliterate::Arc::TurkicImperial Aramaic Old Turkic runes

Hebrew (He)

ModuleDescription
Lang::Transliterate::He::CommonIsraeliCommon Israeli romanization
Lang::Transliterate::He::HebrewAcademy1953Academy of Hebrew Language 1953 rules
Lang::Transliterate::He::HebrewAcademy2006Academy of Hebrew Language 2006 rules
Lang::Transliterate::He::ISO259ISO 259 international standard
Lang::Transliterate::He::PaleoHebrewPaleo-Hebrew script
Lang::Transliterate::He::SBLAcademicSociety of Biblical Literature academic transliteration
Lang::Transliterate::He::SBLGeneralPurposeSociety of Biblical Literature general purpose transliteration
Lang::Transliterate::He::SamaritanSamaritan Hebrew

Slavic Languages

Belarusian (Be)

ModuleDescription
Lang::Transliterate::Be::ALALCALA-LC romanization
Lang::Transliterate::Be::BGNPCGNUS/UK geographic names standard
Lang::Transliterate::Be::BritishStandardBritish Standard romanization
Lang::Transliterate::Be::ISO9ISO 9 transliteration
Lang::Transliterate::Be::National2000Belarusian national standard 2000
Lang::Transliterate::Be::National2007Belarusian national standard 2007
Lang::Transliterate::Be::National2023Belarusian national standard 2023
Lang::Transliterate::Be::SciScientific linguistic transliteration

Bulgarian (Bg)

ModuleDescription
Lang::Transliterate::Bg::ALALCALA-LC romanization
Lang::Transliterate::Bg::BGNPCGNUS/UK geographic names standard
Lang::Transliterate::Bg::BritishStandardBritish Standard romanization
Lang::Transliterate::Bg::DanchevAndrei Danchev’s system
Lang::Transliterate::Bg::ISO9ISO 9 transliteration
Lang::Transliterate::Bg::Official2006Bulgarian official system 2006
Lang::Transliterate::Bg::SciScientific linguistic transliteration

Church Slavonic (Cu)

ModuleDescription
Lang::Transliterate::Cu::ALALCALA-LC romanization
Lang::Transliterate::Cu::SciScientific linguistic transliteration

Macedonian (Mk)

ModuleDescription
Lang::Transliterate::Mk::ALALCALA-LC romanization
Lang::Transliterate::Mk::BGNPCGNUS/UK geographic names standard
Lang::Transliterate::Mk::ISO9ISO 9 transliteration
Lang::Transliterate::Mk::ISO9_1968ISO 9:1968 standard
Lang::Transliterate::Mk::SciScientific linguistic transliteration

Russian (Ru)

ModuleDescription
Lang::Transliterate::Ru::ALALCAmerican Library Association/Library of Congress romanization
Lang::Transliterate::Ru::ALALCSimplifiedSimplified ALA-LC without diacritics
Lang::Transliterate::Ru::BGNPCGNUS Board on Geographic Names/Permanent Committee romanization
Lang::Transliterate::Ru::BritishStandardBritish Standard 2979:1958 romanization
Lang::Transliterate::Ru::GOST779_2000AGOST 7.79-2000 System A (with diacritics)
Lang::Transliterate::Ru::GOST779_2000BGOST 7.79-2000 System B (without diacritics)
Lang::Transliterate::Ru::GOSTR52290_2004Russian road sign standard
Lang::Transliterate::Ru::GOSTR52535_2006Machine-readable travel documents standard
Lang::Transliterate::Ru::HarvardKyotoASCII-only academic transliteration
Lang::Transliterate::Ru::ICAOInternational Civil Aviation Organization standard
Lang::Transliterate::Ru::ISOR9_1968_T1ISO/R 9:1968 Table 1
Lang::Transliterate::Ru::ISOR9_1968_T1_ALTISO/R 9:1968 Table 1 alternative mappings
Lang::Transliterate::Ru::ISOR9_1968_T2ISO/R 9:1968 Table 2
Lang::Transliterate::Ru::MID2113MID 2113 passport standard (2020)
Lang::Transliterate::Ru::MVD310_1997MVD 310 passport standard (1997-2010)
Lang::Transliterate::Ru::MVD782_2000MVD 782 driver's license standard (2000)
Lang::Transliterate::Ru::MVD995_2015MVD 995 passport standard (2015)
Lang::Transliterate::Ru::MosMetroMoscow Metro signage
Lang::Transliterate::Ru::SciScientific linguistic transliteration
Lang::Transliterate::Ru::TelegramsSoviet telegraph standard
Lang::Transliterate::Ru::UNUnited Nations system
Lang::Transliterate::Ru::YandexMapsYandex Maps
Lang::Transliterate::Ru::YandexMoneyYandex Money/payment systems

Rusyn (Rue)

ModuleDescription
Lang::Transliterate::Rue::SciScientific linguistic transliteration

Serbian (Sr)

ModuleDescription
Lang::Transliterate::Sr::SciScientific linguistic transliteration

Ukrainian (Uk)

ModuleDescription
Lang::Transliterate::Uk::ALALCALA-LC romanization standard
Lang::Transliterate::Uk::ALALCModifiedModified ALA-LC with Ukrainian specifics
Lang::Transliterate::Uk::ALALCSimpleSimplified ALA-LC without diacritics
Lang::Transliterate::Uk::BGNPCGNUS/UK geographic names standard
Lang::Transliterate::Uk::BritishStandardBritish Standard romanization
Lang::Transliterate::Uk::Derzhstandart1995Ukrainian national standard 1995
Lang::Transliterate::Uk::GOST1971Soviet GOST 16876-71
Lang::Transliterate::Uk::GOST1986Soviet GOST standard 1986
Lang::Transliterate::Uk::ISO1954Early ISO standard 1954
Lang::Transliterate::Uk::ISO1968BasicISO basic system 1968
Lang::Transliterate::Uk::ISO1968UkrainianISO Ukrainian-specific system 1968
Lang::Transliterate::Uk::ISO1995ISO 9:1995 standard
Lang::Transliterate::Uk::National1996Ukrainian national standard 1996
Lang::Transliterate::Uk::National2010Ukrainian national standard 2010
Lang::Transliterate::Uk::Passport2004Ukrainian passport standard 2004
Lang::Transliterate::Uk::Passport2007Ukrainian passport standard 2007-2010
Lang::Transliterate::Uk::SciScientific linguistic transliteration

Usage

Basic Transliteration

use Lang::Transliterate;
use Lang::Transliterate::Egy::Gardiner1927;
use Lang::Transliterate::Sa::IAST;
use Lang::Transliterate::Yi::YIVO;

# Ancient Egyptian hieroglyphics (Gardiner's system)
my $hieroglyphic = "𓊪𓏏𓇯𓃭𓅓𓏏";
my $gardiner = Lang::Transliterate::Egy::Gardiner1927.new;
say transliterate($hieroglyphic, $gardiner); # "pt-ḥ-m-t"

# Sanskrit IAST 
my $sanskrit = "भगवद्गीता";
my $iast = Lang::Transliterate::Sa::IAST.new;
say transliterate($sanskrit, $iast); # "bhagavadgītā"

# Yiddish YIVO standard
my $yiddish = "ייִדיש";
my $yivo = Lang::Transliterate::Yi::YIVO.new;
say transliterate($yiddish, $yivo); # "yidish"

Reverse Transliteration (Detransliteration)

use Lang::Transliterate;
use Lang::Transliterate::Sa::IAST;
use Lang::Transliterate::He::CommonIsraeli;

# Convert romanized text back to original script
my $romanized = "śaṅkarācārya";
my $iast = Lang::Transliterate::Sa::IAST.new;
my $devanagari = detransliterate($romanized, $iast);
say $devanagari; # "शङ्कराचार्य"

# Reconstruct Hebrew from common transliteration
my $name = "Yerushalayim";
my $israeli = Lang::Transliterate::He::CommonIsraeli.new;
my $hebrew = detransliterate($name, $israeli);
say $hebrew; # "ירושלים"

Working with Ancient Scripts

use Lang::Transliterate;
use Lang::Transliterate::Arc::Hebrew;
use Lang::Transliterate::Arc::Arabic;
use Lang::Transliterate::Arc::Syriac;
use Lang::Transliterate::Arc::Phoenician;
use Lang::Transliterate::Egy::Gardiner1927;
use Lang::Transliterate::Egy::Allen2000;

# Imperial Aramaic to multiple scripts
my $aramaic = "𐡀𐡁𐡂𐡃";

my $to-hebrew = Lang::Transliterate::Arc::Hebrew.new;
say transliterate($aramaic, $to-hebrew);     # "אבגד"

my $to-arabic = Lang::Transliterate::Arc::Arabic.new;
say transliterate($aramaic, $to-arabic);     # "ابجد"

my $to-syriac = Lang::Transliterate::Arc::Syriac.new;
say transliterate($aramaic, $to-syriac);     # "ܐܒܓܕ"

my $to-phoenician = Lang::Transliterate::Arc::Phoenician.new;
say transliterate($aramaic, $to-phoenician); # "𐤀𐤁𐤂𐤃"

# Different Egyptian transliteration standards
my $cartouche = "𓈖𓆑𓂋𓏏𓇳𓏏𓇋";
my $gardiner = Lang::Transliterate::Egy::Gardiner1927.new;
say transliterate($cartouche, $gardiner);    # "nfr.t-ỉ.t-ỉ"

my $allen = Lang::Transliterate::Egy::Allen2000.new;
say transliterate($cartouche, $allen);       # "nfrt-jty"

Special Features

use Lang::Transliterate;
use Lang::Transliterate::En::TolkienRunic;
use Lang::Transliterate::El::ISO843;

# English to Tolkien's runic system
my $ring-text = "One transliterator to rule them all";
say transliterate($ring-text, $tolkien); # "ᚩᚾᛖ ᛏᚱᚪᚾᛋᛚᛁᛏᛖᚱᚪᛏᚩᚱ ᛏᚩ ᚱᚢᛚᛖ ᚦᛖᛗ ᚪᛚᛚ"

# Case preservation in Greek
my $greek = "ΑΘΗΝΑ Ελλάδα";
my $iso843 = Lang::Transliterate::El::ISO843.new;
say transliterate($greek, $iso843); # "ATHĪNA Elláda"

Author

Danslav Slavenskoj

License

The Artistic License 2.0

Copyright © 2025 Danslav Slavenskoj

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/slavenskoj/raku-lang-transliterate.

Lang::Transliterate v0.1.0

Comprehensive multilingual transliteration library for Raku

Authors

  • Danslav Slavenskoj

License

Artistic-2.0

Dependencies

Test Dependencies

Provides

  • Lang::Transliterate
  • Lang::Transliterate::Ar::ALALC
  • Lang::Transliterate::Ar::ArabTeX
  • Lang::Transliterate::Ar::BGNPCGN
  • Lang::Transliterate::Ar::BS
  • Lang::Transliterate::Ar::DIN31635
  • Lang::Transliterate::Ar::EALL
  • Lang::Transliterate::Ar::EI
  • Lang::Transliterate::Ar::ISO233
  • Lang::Transliterate::Ar::UNGEGN
  • Lang::Transliterate::Ar::Wehr
  • Lang::Transliterate::Arc::Arabic
  • Lang::Transliterate::Arc::Brahmi
  • Lang::Transliterate::Arc::Cyrillic
  • Lang::Transliterate::Arc::Geez
  • Lang::Transliterate::Arc::Greek
  • Lang::Transliterate::Arc::Hebrew
  • Lang::Transliterate::Arc::Kharosthi
  • Lang::Transliterate::Arc::Latin
  • Lang::Transliterate::Arc::Maalouli
  • Lang::Transliterate::Arc::Nabataean
  • Lang::Transliterate::Arc::Parthian
  • Lang::Transliterate::Arc::Phoenician
  • Lang::Transliterate::Arc::ProtoSinaitic
  • Lang::Transliterate::Arc::SouthArabian
  • Lang::Transliterate::Arc::Syriac
  • Lang::Transliterate::Arc::Turkic
  • Lang::Transliterate::BasicASCII
  • Lang::Transliterate::Be::ALALC
  • Lang::Transliterate::Be::BGNPCGN
  • Lang::Transliterate::Be::BritishStandard
  • Lang::Transliterate::Be::ISO9
  • Lang::Transliterate::Be::National2000
  • Lang::Transliterate::Be::National2007
  • Lang::Transliterate::Be::National2023
  • Lang::Transliterate::Be::Sci
  • Lang::Transliterate::Bg::ALALC
  • Lang::Transliterate::Bg::BGNPCGN
  • Lang::Transliterate::Bg::BritishStandard
  • Lang::Transliterate::Bg::Danchev
  • Lang::Transliterate::Bg::ISO9
  • Lang::Transliterate::Bg::Official2006
  • Lang::Transliterate::Bg::Sci
  • Lang::Transliterate::Cu::ALALC
  • Lang::Transliterate::Cu::Sci
  • Lang::Transliterate::Egy::Allen2000
  • Lang::Transliterate::Egy::Buurman1988
  • Lang::Transliterate::Egy::ErmanGrapow1926
  • Lang::Transliterate::Egy::Gardiner1927
  • Lang::Transliterate::Egy::Hannig1995
  • Lang::Transliterate::Egy::LeidenUnified2023
  • Lang::Transliterate::Egy::Lepsius1874
  • Lang::Transliterate::El::DIN31634
  • Lang::Transliterate::El::ISO843
  • Lang::Transliterate::En::TolkienRunic
  • Lang::Transliterate::Fa::ALALC
  • Lang::Transliterate::Fa::BGNPCGN
  • Lang::Transliterate::Fa::DMG
  • Lang::Transliterate::Fa::EI
  • Lang::Transliterate::Fa::EI1960
  • Lang::Transliterate::Fa::UN
  • Lang::Transliterate::Fa::UN1967
  • Lang::Transliterate::Grc::Scientific
  • Lang::Transliterate::He::CommonIsraeli
  • Lang::Transliterate::He::HebrewAcademy1953
  • Lang::Transliterate::He::HebrewAcademy2006
  • Lang::Transliterate::He::ISO259
  • Lang::Transliterate::He::PaleoHebrew
  • Lang::Transliterate::He::SBLAcademic
  • Lang::Transliterate::He::SBLGeneralPurpose
  • Lang::Transliterate::He::Samaritan
  • Lang::Transliterate::ISO9_1995
  • Lang::Transliterate::Mk::ALALC
  • Lang::Transliterate::Mk::BGNPCGN
  • Lang::Transliterate::Mk::ISO9
  • Lang::Transliterate::Mk::ISO9_1968
  • Lang::Transliterate::Mk::Sci
  • Lang::Transliterate::Ru::ALALC
  • Lang::Transliterate::Ru::ALALCSimplified
  • Lang::Transliterate::Ru::BGNPCGN
  • Lang::Transliterate::Ru::BritishStandard
  • Lang::Transliterate::Ru::GOST779_2000A
  • Lang::Transliterate::Ru::GOST779_2000B
  • Lang::Transliterate::Ru::GOSTR52290_2004
  • Lang::Transliterate::Ru::GOSTR52535_2006
  • Lang::Transliterate::Ru::HarvardKyoto
  • Lang::Transliterate::Ru::ICAO
  • Lang::Transliterate::Ru::ISOR9_1968_T1
  • Lang::Transliterate::Ru::ISOR9_1968_T1_ALT
  • Lang::Transliterate::Ru::ISOR9_1968_T2
  • Lang::Transliterate::Ru::MID2113
  • Lang::Transliterate::Ru::MVD310_1997
  • Lang::Transliterate::Ru::MVD782_2000
  • Lang::Transliterate::Ru::MVD995_2015
  • Lang::Transliterate::Ru::MosMetro
  • Lang::Transliterate::Ru::Sci
  • Lang::Transliterate::Ru::Telegrams
  • Lang::Transliterate::Ru::UN
  • Lang::Transliterate::Ru::YandexMaps
  • Lang::Transliterate::Ru::YandexMoney
  • Lang::Transliterate::Rue::Sci
  • Lang::Transliterate::Sa::IAST
  • Lang::Transliterate::Sr::Sci
  • Lang::Transliterate::Tlh::PIqaD
  • Lang::Transliterate::Uk::ALALC
  • Lang::Transliterate::Uk::ALALCModified
  • Lang::Transliterate::Uk::ALALCSimple
  • Lang::Transliterate::Uk::BGNPCGN
  • Lang::Transliterate::Uk::BritishStandard
  • Lang::Transliterate::Uk::Derzhstandart1995
  • Lang::Transliterate::Uk::GOST1971
  • Lang::Transliterate::Uk::GOST1986
  • Lang::Transliterate::Uk::ISO1954
  • Lang::Transliterate::Uk::ISO1968Basic
  • Lang::Transliterate::Uk::ISO1968Ukrainian
  • Lang::Transliterate::Uk::ISO1995
  • Lang::Transliterate::Uk::National1996
  • Lang::Transliterate::Uk::National2010
  • Lang::Transliterate::Uk::Passport2004
  • Lang::Transliterate::Uk::Passport2007
  • Lang::Transliterate::Uk::Sci
  • Lang::Transliterate::Yi::YIVO

Documentation

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.