armenian-transliteration
v3.0.0
Published
Multi-standard Armenian transliteration (BGN/PCGN, ISO 9985, Hübschmann-Meillet, ALA-LC, Russian geographic profiles, Russian proper names, IPA)
Maintainers
Readme
Armenian Transliteration
Multi-standard Armenian transliteration library with IPA phonemic transcription. Supports 10 canonical transliteration profiles with full type safety and 1200+ tests.
Installation
npm install armenian-transliterationUsage
import { transliterate, createTransliterator } from "armenian-transliteration";
import { profiles } from "armenian-transliteration/profiles";
// Default: BGN/PCGN romanization
transliterate("Երևան"); // "Yerevan"
transliterate("Հայաստան"); // "Hayastan"
// ISO 9985 (reversible, with diacritics)
transliterate("Երևան", { standard: "iso-9985" }); // "Erewan"
// Hübschmann-Meillet (academic)
transliterate("Երևան", { standard: "hubschmann-meillet" });
// ALA-LC (Library of Congress, 2022)
transliterate("Երևան", { standard: "ala-lc" }); // "Erevan" (no Ye prefix)
transliterate("պատսպարան", { standard: "ala-lc" }); // "patʹsparan" (soft sign)
// Russian geographic names (Kuzmina-Tumanyan 1974)
transliterate("Երևան", { standard: "ru-geo-kt-1974" }); // "Ереван"
transliterate("Հաղպատ", { standard: "ru-geo-kt-1974" }); // "Ахпат"
// Russian geographic names (Republic of Armenia 2011)
transliterate("Գեղարքունիք", { standard: "ru-geo-ra-2011" }); // "Гехаркуник"
// Russian proper names (Vartapetyan)
transliterate("Հակոբ", { standard: "ru-proper-vartapetyan-1961" }); // "Акоб"
// Russian Cyrillic transcription for common Eastern Armenian vocabulary
transliterate("համար", { standard: "ru-phonetic-eastern" }); // "хамар"
// IPA phonemic transcription (Eastern Armenian)
transliterate("Երևան", { standard: "ipa-eastern" }); // "Jeɾevɑn"
transliterate("Տիգրան", { standard: "ipa-eastern" }); // "Tiɡɾɑn"
// IPA phonemic transcription (Standard Western Armenian) — W1 voicing collapse
transliterate("Երևան", { standard: "ipa-western" }); // "Jeɾevɑn"
transliterate("Տիգրան", { standard: "ipa-western" }); // "Dikʰɾɑn"
// Factory for repeated use
const toRussian = createTransliterator({ standard: "ru-geo-kt-1974" });
toRussian("Հայաստան"); // "Аястан"
toRussian("Երևան"); // "Ереван"
profiles["ru-geo-kt-1974"].targetLanguage; // "ru"
profiles["ru-proper-vartapetyan-1961"].domain; // "proper-names"Supported Standards
| Standard | ID | Target | Reversible | Description |
| ------------------ | -------------------- | -------- | ---------- | ----------------------------------------- |
| BGN/PCGN | bgn-pcgn | Latin | No | US/UK geographic names (default) |
| ISO 9985 | iso-9985 | Latin | Yes | International standard with diacritics |
| Hübschmann-Meillet | hubschmann-meillet | Latin | Yes | Classical academic system |
| ALA-LC | ala-lc | Latin | No | Library of Congress |
| Russian Geographic KT 1974 | ru-geo-kt-1974 | Cyrillic | No | Geographic names (Kuzmina-Tumanyan 1974) |
| Russian Geographic RA 2011 | ru-geo-ra-2011 | Cyrillic | No | Geographic names (Republic of Armenia 2011) |
| Russian Proper Names Vartapetyan 1961 | ru-proper-vartapetyan-1961 | Cyrillic | No | Proper names: given names, surnames, geographic names |
| Russian Phonetic Eastern | ru-phonetic-eastern | Cyrillic | No | Common-vocabulary Cyrillic transcription |
| IPA Western | ipa-western | IPA | No | Broad phonemic (Standard Western Armenian) |
| IPA Eastern | ipa-eastern | IPA | No | Broad phonemic (Standard Eastern Armenian) |
Source Notes
- BGN/PCGN is checked against the UK/PCGN 2022 validation PDF and Thomas T. Pedersen's EKI cross-table.
- ALA-LC follows the 2022 Library of Congress Armenian Romanization Table. Key rules encoded: word-initial
ե → yonly when followed by a vowel (Classical, note 2); word-initialյ → ḥ(note 4); soft-signʹ(U+02B9) for the bigramsԳհ Դզ Կհ Սհ Տս(note 3);եւ → ewClassical (note 5) vsև → evmodern ligature (note 6). The word-startեվ → eʹvsoft-sign exception (note 6) has two lexical exceptions (ևեթ,ևս) and is not implemented;եվalways maps toev. West Armenian bracketed alternates (note 1) are not emitted. - ISO 9985 uses U+02BF (modifier letter left half ring) for aspirates, per ISO 9985:1996.
- Hübschmann-Meillet follows Pedersen's EKI cross-table (column H-M);
ու → uas a digraph; aspirates use U+02BF;ը → ə(U+0259 schwa). ru-geo-kt-1974follows Kuzmina-Tumanyan's 1974 instruction for Armenian SSR geographic names.ru-geo-ra-2011follows the Republic of Armenia Government decision N 220-N for RA geographic names.ru-proper-vartapetyan-1961follows Vartapetyan's 1961 reference for Armenian given names, surnames, and geographic names; Kazumyan 1990, Toshyan 1962, and the Armenian-Russian practical transcription article are useful secondary cross-checks, but not treated as original standard sources.ru-phonetic-easternis a package profile for learner-facing common vocabulary, not an official name-transfer standard.- IPA (
ipa-eastern,ipa-western) profiles target Tier 1 broad phonemic — strict orthography → phoneme mapping. Every rule is attested in Dum-Tragut (2009) and JIPA 2024 (Seyfarth, Dolatian, Guekguezian, Kelly & Toparlak), cross-checked against Dolatian 2022 and Vaux 1998. Standard Western retains aspiration on թ ք փ ց չ (unlike Wiktionary's algorithm, which strips it — incorrectly per JIPA 2024: 447–448). Lexicalized and allophonic detail (stress placement, schwa epenthesis, regressive ղ/վ devoicing, word-final devoicing, post-nasal aspiration, suffix palatalization, Western progressive devoicing, յու → /ʏ/ glide fronting) is deferred to future narrow-phonetic profiles. Seedocs/LINGUISTIC_RATIONALE.mdfor the rule-by-rule citation table andtools/ipa-conformance/for the Wiktionary conformance harness with annotated divergences (run viapnpm run ipa-conformance).
Profiles
Profile metadata is available from the main package and from the lighter
armenian-transliteration/profiles subpath:
import {
getProfile,
getProfilesByTargetLanguage,
profiles,
} from "armenian-transliteration/profiles";
getProfile("ru-proper-vartapetyan-1961").authority;
getProfilesByTargetLanguage("ru").map((profile) => profile.id);Use language-first IDs for language-specific transfer systems. ru-geo-kt-1974
is preferred over cyr-geo-kt-1974 because Russian, Ukrainian, and Belarusian
profiles would all use Cyrillic but would not share identical transfer rules.
API
transliterate(text, options?)
Transliterate Armenian text.
text: string— input text (Armenian characters are transliterated, everything else passes through)options.standard— transliteration standard (default:"bgn-pcgn")options.direction— only"from-armenian"(default) is supported in 3.x; reverse transliteration is out of scope
createTransliterator(options)
Create a reusable transliterator function with fixed options. More efficient for repeated use.
listStandards()
Returns an array of all supported canonical standard IDs.
Features
- 10 canonical transliteration profiles — BGN/PCGN, ISO 9985, Hübschmann-Meillet, ALA-LC, Russian geographic KT 1974, Russian geographic RA 2011, Russian proper names Vartapetyan 1961, Russian phonetic Eastern, IPA (Western & Eastern Armenian)
- Declarative standard definitions — each standard is a data object, not imperative code
- Proper tokenizer — no temporary Unicode symbol hacks
- Case preservation — uppercase, lowercase, and title case handled correctly
- Full Unicode support — Armenian ligatures (U+FB13-FB17), punctuation, mixed scripts
- Type-safe — strict TypeScript and no
anyin the public implementation - 1200+ tests — unit, per-standard, integration, edge cases, and formal model verification
- Tree-shakeable — ESM, CJS, and browser IIFE builds
