JSPM

serbian-transliterate

0.1.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 18
  • Score
    100M100P100Q55096F
  • License MIT

A simple and robust utility for transliterating Serbian text between Cyrillic and Latin (Gaj's Latinica) alphabets.

Package Exports

  • serbian-transliterate

Readme

serbian-transliterate

npm version npm downloads License: MIT

A simple, lightweight, and robust utility for transliterating Serbian text between the Cyrillic (ћирилица) and Latin (latinica) alphabets.

transliterate('Здраво!', 'toLatin'); // -> 'Zdravo!'
transliterate('Beograd', 'toCyrillic'); // -> 'Београд'

Features

  • Zero Dependencies: A single, dependency-free function.
  • Lightweight: Tiny footprint, perfect for web and Node.js projects.
  • Accurate: Correctly handles all standard Serbian characters, including digraphs (lj, nj, dž).
  • Robust: Preserves capitalization, numbers, punctuation, and non-Serbian characters.
  • TypeScript Support: Written in TypeScript with full type definitions included.

Installation

npm install serbian-transliterate

Usage

The package exports a single default function that takes the text and the target direction as arguments.

import transliterate from 'serbian-transliterate';

// Cyrillic to Latin
const latinText = transliterate('Здраво Свете!', 'toLatin');
console.log(latinText); // -> 'Zdravo Svete!'

const latinWithDigraphs = transliterate('Љубав, Његош, Џез', 'toLatin');
console.log(latinWithDigraphs); // -> 'Ljubav, Njegoš, Džez'

// Latin to Cyrillic
const cyrillicText = transliterate('Beograd, Srbija', 'toCyrillic');
console.log(cyrillicText); // -> 'Београд, Србија'

const cyrillicWithDigraphs = transliterate(
    'Ljubazni dabar Džordž.',
    'toCyrillic'
);
console.log(cyrillicWithDigraphs); // -> 'Љубазни дабар Џорџ.'

API

transliterate(text: string, direction: 'toLatin' | 'toCyrillic'): string

Parameters:

  • text - The text to transliterate
  • direction - Either 'toLatin' (Cyrillic → Latin) or 'toCyrillic' (Latin → Cyrillic)

Returns: The transliterated string

Known Limitations

Ambiguous Digraphs (The "injekcija" problem)

This utility uses a simple, rule-based replacement algorithm. It cannot distinguish between a true digraph (like nj in Njegoš) and two separate letters that happen to be adjacent (like n and j in injekcija).

  • injekcija will be incorrectly transliterated to ињекција instead of the correct инјекција.
  • konjugacija will be incorrectly transliterated to коњугација instead of the correct конјугација.

This is a known trade-off made to keep the library simple and fast. For the vast majority of Serbian words, this is not an issue.

Contributing

Contributions are welcome! If you find a bug or have a suggestion, please open an issue on the GitHub repository.

License

This project is licensed under the MIT License. See the LICENSE file for details.