Rand Stats

Lang::Transliterate

zef:slavenskoj

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:

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.