shared/utils/rtl.ts
Rama main · réplica de lectura del repositorio original.
const ltrChars =
"A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02B8\u0300-\u0590\u0800-\u1FFF\u2C00-\uFB1C\uFDFE-\uFE6F\uFEFD-\uFFFF";
const rtlChars = "\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC";
const rtlDirCheck = new RegExp("^[^" + ltrChars + "]*[" + rtlChars + "]");
const rtlLanguageCodes = new Set(["ar", "fa", "he", "ps", "ur", "yi"]);
/**
* Returns true if the text is likely written in an RTL language.
*
* @param text The text to check
* @returns True if the text is RTL
*/
export function isRTL(text: string) {
return rtlDirCheck.test(text);
}
/**
* Returns true if the given locale is an RTL language. Accepts both CLDR
* (`he_IL`) and BCP47 (`he-IL`, `he`) formats.
*
* @param locale The locale to check
* @returns True if the locale is RTL
*/
export function isRTLLanguage(locale: string | null | undefined) {
if (!locale) {
return false;
}
const code = locale.toLowerCase().split(/[-_]/)[0];
return rtlLanguageCodes.has(code);
}