Реализовано в версии 8.3.10.2168.
Мы добавили в платформу поддержку строк, требующих согласования с числительными. Теперь вы можете формировать строки вида «время выполнения 32 секунды» и «время выполнения 65 секунд» автоматически, не анализируя числительное для того, чтобы использовать правильную форму существительного.
Для этого мы добавили в платформу новый метод СтрокаСЧислом(). Принцип его работы основан на том, что любое числительное в любом языке можно отнести к одной из шести категорий:
В разных языках одни и те же числительные могут относиться к разным категориям. Более того, не во всех языках присутствуют все шесть категорий. Например, в русском языке не используются категории ZERO и TWO. Подробную таблицу соответствия категорий числительным для всех языков вы можете посмотреть на сайте unicode.org.
Метод СтрокаСЧислом() работает следующим образом. Ему нужно передать фрагменты строк для тех категорий, которые присутствуют в выбранном вами языке. И кроме этого передать само числительное. В результате метод, в зависимости от числительного и языка, выберет один из фрагментов строки, подставит в него числительное, и вернёт вам.
Например, на русском языке вам нужно автоматически выводить надпись: «До Нового Года осталось столько-то дней». Тогда использование этого метода может выглядеть следующим образом:
В результате вы получите такую последовательность строк:
Или другой пример. На английском языке вам нужно выводить надпись: «Такое-то Января, такой-то день года». Тогда код будет выглядеть похожим образом:
А в результате вы получите следующую последовательность строк:
Обратите внимание, что в этих примерах различается не только используемый язык (русский, английский), но и вид числительного. В примере для русского языка используются количественные числительные, а в примере для английского языка - порядковые. Количественные числительные отвечают на вопрос "Сколько?" Порядковые числительные отвечают на вопрос "Который?"
Правописание количественных и порядковых числительных различается, поэтому для них вам нужно использовать разные вызовы метода СтрокаСЧислом(). Например, в русском языке существительное при количественных числительных склоняется по падежам и числам (1 день, 2 дня, 5 дней), а порядковые числительные используются в единственной форме - 1-й день. В английском языке существительное при количественных числительных изменяется только по числам (1 day, 2 days), а для порядковых числительных существуют четыре разные формы: 1st day, 2nd day, 3rd day, 4th day.
Чтобы вам было легче использовать новый метод, в синтакс-помощнике мы указали для каждого языка и для каждого вида числительного (количественного или порядкового) тот состав строк, который следует использовать.
Таким образом, вам остаётся подставить только правильные формы существительного, и с помощью символов «%1» указать, в каком месте каждого фрагмента будет находиться числительное.
Новые возможности формирования строк мы уже задействовали в интерфейсе платформы. Так, например, в расписании регламентного задания теперь указывается полное наименование единицы измерения:
А строковое представление расписания планировщика теперь не содержит орфографических ошибок.
В заключение хочется отметить, что новый метод СтрокаСЧислом() реализован для 21 языка: