Особенности арабского

Арабский язык в Intl API представлен основной локалью ar и её региональными вариантами: ar-SA, ar-EG, ar-AE, ar-MA и другими. Различия между ними затрагивают календарные системы, стандарты чисел, формат валюты и даже правила сортировки строк.

Ключевая особенность арабской локализации — сочетание языковой специфики и культурных стандартов региона. Поэтому при работе с Intl важно учитывать не только язык, но и региональный суффикс.

new Intl.DateTimeFormat("ar-SA").format(new Date());
new Intl.NumberFormat("ar-EG").format(1234567);

Направление текста и влияние на форматирование

Арабский язык является правосторонним (RTL — right-to-left). Это влияет не только на отображение текста, но и на визуальное построение интерфейса при работе с форматированием данных.

Intl API не изменяет направление текста напрямую, однако результаты форматирования учитывают особенности RTL-скрипта:

  • числа могут визуально «встраиваться» в RTL-строку
  • знаки пунктуации могут изменять позицию
  • смешанные строки (арабский + латиница) требуют би-ди-регулировки

Пример форматирования числа в арабской локали:

new Intl.NumberFormat("ar").format(12345.67);

В зависимости от окружения результат может отображаться с арабскими цифрами и специфической группировкой разрядов.


Числовые системы: арабские и арабо-индийские цифры

В арабских локалях используются две основные системы записи чисел:

  1. European digits (0–9) — стандартные западные цифры
  2. Eastern Arabic-Indic digits — восточные арабские цифры (٠١٢٣٤٥٦٧٨٩)

Выбор системы управляется опцией numberingSystem.

new Intl.NumberFormat("ar-EG", {
  numberingSystem: "arab"
}).format(123456);

Основные варианты:

  • latn — латинские цифры (0–9)
  • arab — восточные арабские цифры
  • arabext — расширенный вариант индик-цифр

Особенность заключается в том, что даже при одинаковом числовом значении визуальное представление может радикально отличаться.


Форматирование чисел и группировка разрядов

Арабские локали используют специфические правила группировки чисел. Например, разделители тысяч и десятичных дробей могут отличаться:

  • в ar-EG используется запятая как десятичный разделитель в некоторых контекстах
  • в других вариантах применяется точка или арабский символ различения
new Intl.NumberFormat("ar-EG").format(1234567.89);

Дополнительно учитываются:

  • локальные правила округления
  • форма отображения отрицательных чисел
  • использование арабских символов группировки

Валюты и их локализация

Intl.NumberFormat в арабских локалях поддерживает адаптацию валютных символов и их позиции относительно числа.

new Intl.NumberFormat("ar-SA", {
  style: "currency",
  currency: "SAR"
}).format(1234.5);

Особенности:

  • символ валюты может отображаться слева или справа
  • используются локальные названия валют (при определённых настройках)
  • возможна замена латинских обозначений на арабские

В странах Персидского залива часто используется строгая стандартизация валютного отображения, тогда как в Северной Африке формат более гибкий.


Даты и календарные системы

Арабские локали активно используют несколько календарных систем:

  • григорианский календарь (основной в Intl)
  • исламский календарь (Hijri, islamic)
  • региональные вариации исламского календаря
new Intl.DateTimeFormat("ar-SA", {
  calendar: "islamic"
}).format(new Date());

Особенности:

  • месяцы могут отображаться на арабском языке с религиозной терминологией
  • год может отличаться от григорианского на ~579–622 года
  • пятница часто считается выходным днём в календарной логике регионов

Форматирование дат: порядок компонентов

В арабских локалях порядок компонентов даты отличается от западного стандарта:

  • день → месяц → год
  • или месяц → день → год (в зависимости от региона)
new Intl.DateTimeFormat("ar-EG", {
  year: "numeric",
  month: "long",
  day: "numeric"
}).format(new Date());

Также учитываются:

  • локальные названия месяцев
  • религиозные праздники как часть календарной системы
  • сокращённые и полные формы дат

Относительное время и языковые формы

Intl.RelativeTimeFormat в арабском языке демонстрирует одну из самых сложных систем склонений.

new Intl.RelativeTimeFormat("ar", {
  numeric: "auto"
}).format(-1, "day");

Арабский язык использует множественные формы:

  • единственное число
  • двойственное число
  • малое множественное
  • большое множественное

Это делает систему выбора форм значительно сложнее по сравнению с европейскими языками.

Пример единиц:

  • 1 день — форма единственного числа
  • 2 дня — отдельная форма двойственного числа
  • 3–10 дней — одна форма множественного числа
  • 11+ — другая форма множественного числа

Правила множественного числа

Intl.PluralRules в арабском языке особенно сложен и включает шесть категорий:

  • zero
  • one
  • two
  • few
  • many
  • other
new Intl.PluralRules("ar").select(3);

Эта система значительно отличается от английского (two-category system) и требует точной логики при построении UI.

Особенности:

  • категория two активна для числа 2
  • категория few обычно охватывает 3–10
  • категория many применяется для больших чисел в зависимости от правил региона

Сортировка строк (collation)

Арабская письменность влияет на правила сортировки через Intl.Collator.

new Intl.Collator("ar").compare("كتاب", "قلم");

Особенности:

  • игнорирование огласовок (diacritics) по умолчанию
  • различия в обработке хамзы и алифов
  • региональные вариации алфавитного порядка

Дополнительно:

  • возможна нормализация текста перед сравнением
  • учитывается форма букв в контексте слова

Названия языков, валют и регионов

Intl.DisplayNames позволяет получать локализованные названия в арабской системе письма.

new Intl.DisplayNames("ar", { type: "language" }).of("en");

Особенности:

  • названия языков записываются справа налево
  • используются традиционные арабские эквиваленты
  • возможна религиозная или историческая терминология

Особенности комбинирования латиницы и арабского текста

В реальных приложениях арабский текст часто содержит:

  • числа в латинском формате
  • английские названия брендов
  • технические идентификаторы

Intl API не выполняет полного преобразования таких смешанных строк, но обеспечивает корректное форматирование числовых и временных компонентов.

Проблемные аспекты:

  • нарушение визуального порядка из-за bidirectional алгоритма
  • «перепрыгивание» знаков препинания
  • некорректная группировка чисел при смешанном тексте

Культурные особенности форматирования данных

Арабская локализация тесно связана с культурными стандартами:

  • предпочтение формальных дат в деловой переписке
  • использование религиозного календаря в общественных событиях
  • различие форм чисел в официальных и неофициальных документах

Intl API отражает эти различия через комбинацию локали и параметров форматирования, обеспечивая вариативность представления данных без изменения исходных значений.