kurdish-text
v0.1.0
Published
Dependency-free Unicode utilities for Kurdish text
Maintainers
Readme
kurdish-text
Dependency-free Unicode utilities for Kurdish text in browsers, Node.js, and TypeScript. The library supports Arabic-script Kurdish (including Central Kurdish/Sorani input) and Latin-script Kurdish without pretending that the two scripts can be transliterated losslessly.
کوردی:
kurdish-textکۆمەڵە ئامرازێکی بچووک و بێ dependency ـە بۆ پاککردنەوە و ئاساییکردنی دەقی کوردی، گۆڕینی ژمارەکان، ناسینەوەی جۆری نووسین، ئاراستەی دەق، دروستکردنی slug و ڕیزکردنی وشەکان.
Install
npm install kurdish-textUsage
import {
convertDigits,
detectDirection,
detectScript,
normalize,
slugify,
} from "kurdish-text";
normalize("كوردی يەك");
// => "کوردی یەک"
convertDigits("ساڵی 2026", "eastern-arabic");
// => "ساڵی ۲۰۲۶"
detectScript("کوردی Kurdî");
// => "mixed"
detectDirection("کوردی");
// => "rtl"
slugify("زمانی کوردی — بۆ هەمووان!");
// => "زمانی-کوردی-بۆ-هەمووان"API
normalize(text, options?)
Applies Unicode NFKC/NFC normalization, replaces common Arabic keyboard forms
(ك, ي, ى, ے) with Kurdish forms, removes tatweel and bidirectional
formatting controls, and normalizes whitespace. Diacritic removal is opt-in.
Normalization is intentionally conservative: it does not change ambiguous
letters such as ه/ە or claim to correct spelling.
toLatinDigits(text) and convertDigits(text, target)
Converts mixed Latin, Arabic-Indic, and Eastern Arabic digits. Targets are
latin, arabic-indic, and eastern-arabic.
detectScript(text)
Returns arabic, latin, mixed, or neutral using Unicode Script
properties. This detects writing systems, not language; Arabic or Persian text
will also be classified as Arabic script.
detectDirection(text)
Returns rtl, ltr, or neutral based on the first Arabic- or Latin-script
character. This is useful for HTML dir values.
slugify(text, options?)
Creates a Unicode-preserving slug. It does not transliterate or discard Kurdish
letters. Options include separator and lowercase.
compare(a, b, options?)
Normalizes both values and compares them with Intl.Collator. Central Kurdish
(ckb) is the default locale; use { locale: "ku" } for Northern Kurdish.
Actual ordering depends on the ICU data available in the JavaScript runtime.
Design principles
- Zero runtime dependencies
- Small, tree-shakeable functions
- No network calls or collection of user text
- Explicit limits instead of unreliable language guesses
- Works with both ESM and CommonJS
Contributing
Native speakers, linguists, and developers are especially welcome. Please read CONTRIBUTING.md. Linguistic behavior changes need examples, tests, and a reliable source or explanation.
Security
See SECURITY.md for private vulnerability reporting guidance.
License
MIT © Aland
