npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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)

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-transliteration

Usage

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 ե → y only when followed by a vowel (Classical, note 2); word-initial յ → ḥ (note 4); soft-sign ʹ (U+02B9) for the bigrams Գհ Դզ Կհ Սհ Տս (note 3); եւ → ew Classical (note 5) vs և → ev modern ligature (note 6). The word-start եվ → eʹv soft-sign exception (note 6) has two lexical exceptions (ևեթ, ևս) and is not implemented; եվ always maps to ev. 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); ու → u as a digraph; aspirates use U+02BF; ը → ə (U+0259 schwa).
  • ru-geo-kt-1974 follows Kuzmina-Tumanyan's 1974 instruction for Armenian SSR geographic names.
  • ru-geo-ra-2011 follows the Republic of Armenia Government decision N 220-N for RA geographic names.
  • ru-proper-vartapetyan-1961 follows 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-eastern is 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. See docs/LINGUISTIC_RATIONALE.md for the rule-by-rule citation table and tools/ipa-conformance/ for the Wiktionary conformance harness with annotated divergences (run via pnpm 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 any in the public implementation
  • 1200+ tests — unit, per-standard, integration, edge cases, and formal model verification
  • Tree-shakeable — ESM, CJS, and browser IIFE builds