Грамматический род в разных языках

В системах интернационализации грамматический род является одним из ключевых факторов, влияющих на построение корректных сообщений. В разных языках он реализуется по-разному: от двух классов (мужской и женский) до сложных систем с тремя и более родами, включая средний и общие/смешанные формы. В библиотеке FormatJS работа с родом встроена в механизм ICU MessageFormat и тесно связана с правилами выбора вариантов текста.

Грамматический род как категория в локализации

Грамматический род — это морфологическая категория, определяющая согласование слов в предложении. В контексте локализации он влияет не только на прилагательные и глаголы, но и на структуру фраз.

В языках мира наблюдаются разные системы:

  • Двухродовая система: мужской / женский (русский, французский, испанский)
  • Трёхродовая система: мужской / женский / средний (немецкий, русский)
  • Отсутствие грамматического рода: английский (в большинстве случаев)
  • Расширенные системы: языки с классовыми системами (например, банту-языки)

Для систем форматирования важно не лингвистическое описание, а поведение правил выбора текста.

Поддержка рода в FormatJS через ICU MessageFormat

FormatJS использует стандарт ICU MessageFormat, где выбор варианта строки осуществляется через конструкцию select.

Базовый механизм:

{gender, select,
  male {текст для мужского рода}
  female {текст для женского рода}
  other {нейтральный вариант}
}

Принцип работы select

Конструкция select выполняет сопоставление значения переменной с набором предопределённых ключей. Для грамматического рода обычно используются:

  • male
  • female
  • other

Ключ other является обязательным резервным вариантом, обеспечивающим устойчивость сообщения при отсутствии совпадения.

Интеграция рода с форматами сообщений

В реальных сценариях грамматический род редко используется изолированно. Чаще он комбинируется с другими механизмами ICU:

  • plural — множественные формы
  • selectordinal — порядковые числительные
  • вложенные select конструкции

Пример комбинированного выражения:

{gender, select,
  male {{count, plural,
    one {Он добавил # элемент}
    other {Он добавил # элементов}
  }}
  female {{count, plural,
    one {Она добавила # элемент}
    other {Она добавила # элементов}
  }}
  other {{count, plural,
    one {Пользователь добавил # элемент}
    other {Пользователь добавил # элементов}
  }}
}

Такая структура отражает реальную сложность языковых согласований.

Грамматический род в русском языке и его последствия для i18n

Русский язык требует строгого согласования по роду, числу и падежу. Это приводит к необходимости учитывать:

  • форму глагола
  • форму прилагательного
  • структуру предложения

Например:

  • «Пользователь создал проект»
  • «Пользовательница создала проект»

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

FormatJS решает это через параметризацию сообщений.

Английский язык и упрощённая модель рода

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

  • чаще используется только other
  • male и female могут применяться только для местоимений

Пример:

{gender, select,
  male {He uploaded a file}
  female {She uploaded a file}
  other {They uploaded a file}
}

Здесь other часто соответствует гендерно-нейтральной форме.

Гендерно-нейтральные формы и их роль

Современные стандарты интернационализации всё чаще требуют поддержки нейтральных форм. В FormatJS это реализуется через ключ other, который выступает универсальным вариантом.

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

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

Пример:

{gender, select,
  other {File uploaded successfully}
}

Связь грамматического рода с CLDR-данными

FormatJS использует данные CLDR (Common Locale Data Repository), которые определяют:

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

Хотя CLDR напрямую не задаёт грамматический род как категорию, он предоставляет основу для корректного сочетания select и plural в разных языках.

Вложенные структуры и сложные сценарии

В реальных интерфейсах часто встречаются вложенные конструкции, где род комбинируется с:

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

Пример сложной структуры:

{gender, select,
  male {{status, select,
    success {Он успешно завершил операцию}
    error {Он столкнулся с ошибкой}
  }}
  female {{status, select,
    success {Она успешно завершила операцию}
    error {Она столкнулась с ошибкой}
  }}
  other {{status, select,
    success {Операция успешно завершена}
    error {При выполнении операции произошла ошибка}
  }}
}

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

Практическое значение рода в интерфейсах

Грамматический род влияет на:

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

Игнорирование рода приводит к:

  • грамматическим ошибкам
  • снижению естественности языка
  • ухудшению восприятия интерфейса

Ограничения подхода select в FormatJS

Несмотря на гибкость, механизм имеет ограничения:

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

По мере усложнения интерфейса увеличивается количество вложенных конструкций, что требует строгой структуризации сообщений.

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

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

  • gender
  • count
  • status

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

Это означает, что грамматический род становится частью модели данных, а не только языковой особенностью.