Ctrl K
ComunidadGuías…

shared/utils/rtl.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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);
}