Локализация строк на корейском языке зависит от конечного согласного аргумента с использованием MessageFormat
Мы пытаемся перевести наше приложение на корейский язык, используя MessageFormat библиотеки ICU (точнее, MessageFormatter PHP).
Корейский язык широко использует суффиксы (어미), которые прикрепляются к концу слов. Форма большинства именных суффиксов зависит от последнего согласного (받침) последнего слога предыдущего существительного. Например, предметный маркер принимает форму 이 (-i), когда он следует за последним согласным, и 가 (-ga), когда нет окончательного согласного. Итак переводчики, которым дано:
{0} is good.
John is good.
Susie is good.
может перевести это как:
{0}이 좋다. ({0}-i joh-da.)
길동이 좋다. (gil-dong-i joh-da.)
если {0} заканчивается согласной и как:
{0}가 좋다. ({0}-ga joh-da.)
지혜가 좋다. (ji-hye-ga joh-da.)
если {0} не заканчивается согласной.
Одно соглашение состоит в том, чтобы отформатировать строки как это:
{0}이(가) 좋다. ({0}-i(-ga) joh-da.)
지혜이(가) 좋다. (ji-hye-i(-ga) joh-da.)
Конечно, это выглядит неуклюже и непрофессионально, и это именно то, что MessageFormat был разработан для устранения (по крайней мере, в случае множественного числа и гендерной зависимости, ни одна из которых, кстати, не имеет отношения к корейскому языку).
В идеале, мне нужна функциональность, аналогичная множественному числу или выбору, но специально для того, чтобы переводчики могли легко предоставлять разные переводы на основе обнаруженного конечного согласного. Примерно так было бы идеально:
{0}{0, final, none {가} other {이}} 좋다.
{0}{0, final, none {로} ㄹ {로} other {으로}} 갔다.
Я думал о реализации препроцессора, чтобы анализировать такие детерминированные, зависящие от локали форматы и вставлять их в качестве дополнительных аргументов перед передачей их в MessageFormatter, но я хотел бы избежать накладных расходов на синтаксический анализ строки дважды, если это возможно.
Как лучше всего обрабатывать подобные ситуации с MessageFormatter?