UNPKG

romanize-string

Version:

A fully typed, general-purpose utility for unidirectional string transliteration (non-Latin script => Latin script).

57 lines (56 loc) 2.33 kB
import { romanizeArabic } from "./transliterators/arabic-romanization.js"; import { romanizeKorean } from "./transliterators/korean-romanization.js"; import { romanizeJapanese } from "./transliterators/japanese-romanization.js"; import { isArabicLanguageCode, isCyrillicLanguageCode, isIndicLanguageCode, isMandarinLanguageCode, } from "./utils/type-guards.js"; import { romanizeIndic } from "./transliterators/indic-romanization.js"; import { romanizeThai } from "./transliterators/thai-romanization.js"; import { romanizeCantonese } from "./transliterators/cantonese-romanization.js"; import { romanizeMandarin } from "./transliterators/mandarin-romanization.js"; import { romanizeCyrillic } from "./transliterators/cyrillic-romanization.js"; import { romanizeGreek } from "./transliterators/greek-romanization.js"; export const romanizeString = async (string, language, omitDiacritics) => { if (!string.trim()) return ""; let transliteratedString; // Kanji, Hiragana, or Katakana if (language === "ja") { transliteratedString = await romanizeJapanese(string); // Hangul } else if (language === "ko") { transliteratedString = romanizeKorean(string); // Hanzi - Mandarin } else if (isMandarinLanguageCode(language)) { transliteratedString = romanizeMandarin(string, omitDiacritics); // Hanzi - Cantonese } else if (language === "yue") { transliteratedString = romanizeCantonese(string); // Devanagari } else if (isIndicLanguageCode(language)) { transliteratedString = romanizeIndic(string, language, omitDiacritics); // Cyrillic } else if (language === "th") { transliteratedString = romanizeThai(string); } else if (isCyrillicLanguageCode(language)) { transliteratedString = romanizeCyrillic(string, language, omitDiacritics); // Arabic } else if (isArabicLanguageCode(language)) { transliteratedString = romanizeArabic(string); } else if (language === "el") { transliteratedString = romanizeGreek(string, omitDiacritics); } else { transliteratedString = string; } return transliteratedString.trim(); }; romanizeString.register = (pluginSetup) => { romanizeThai.register(pluginSetup); };