Привет! Кто-нибудь тут работает с синтаксисом ICU и при этом использует машинный перевод. Это реально вообще?
Я не знаю, существует ли движок, который бы их понимал, особенно без каких-либо требований по упрощению... Не думаю, потому что ICU не настолько распространён, чтобы на него выделять деньги и силы, как мне кажется.
Но если использовать какой-то из непонятливых, то можно перед отправкой на машинный перевод разворачивать строку в отдельные фразы с соответствующими веткам числами, а потом сворачивать обратно.
То есть превращать одну строку "You have {x, plural, =0 {no apples} one={# apple} other={# apples}}" для русского, например, сразу в 5 фраз (сохранять исключения типа =N и добавлять форм по грамматике, помечать айдишники суффиксами N, one, few, ...) и подставлять вместо переменной прям число из нужного диапазона в каких-нибудь понятных движку тегах, к примеру, "You have <icu1>2</icu1> apples" для few. А потом собирать эти переводы в ICU-конструкцию из целых фраз, меняя число в тегах на переменную.
Кажется, это костыль, но в противном случае что-то подобное должно быть внутри движка... Потому что иначе совсем сложно: ведь при работе с ICU часто приходится перекраивать структуру оригинальной фразы (добавлять новые ветки для согласующихся слов или добавлять слова в ветки), и для машины, кажется, проще загонять целые фразы... Да и для человека, если честно, так проще, кроме самых простых случаев с яблоками без прилагательных :)
Чтобы написать такой костыль, вроде бы, все есть... Инфа по грамматике есть, формулы есть, синтаксис описан. Навскидку вижу проблему в случаях, когда в английском, к примеру, "one {one apple}". Тут хз, как автоматически это конвертировать в one {# apple}... Такое, конечно, лучше загонять изначально в =1, а не в one, и можно это даже требовать, но это уже более жёсткие требования к исходном формату получаются.