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
JavaScript
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);
};