Родительный падеж Gettext

#php #gettext

#php #gettext

Вопрос:

Допустим, я хочу отобразить следующий текст для пользователя:

«Машина Джона»

Я использую gettext для его вывода:

 sprintf(_("%s's car"), $firstName)
  

Очевидная проблема заключается в том, что, если имя пользователя заканчивается на S, мы получим что-то вроде этого:

«Машина Джеймса» (должно быть «машина Джеймса»)

Как мне решить эту проблему, особенно учитывая, что другие языки могут представлять аналогичную проблему (разные генитивы в зависимости от окончания слова или аналогичные)?

Ответ №1:

Проще говоря: напишите функцию с явным if , чтобы получить форму родительного падежа для имени, и выведите ее вместо этого. Я бы привел пример, но вы не указали, о каком языке мы говорим!

Комментарии:

1. Язык программирования: PHP. Человеческие языки: около 30 разных языков — какие из них я еще не знаю, но, вероятно, в основном европейские языки. Проблема в том, что, хотя с английским достаточно просто работать, я могу столкнуться с другими языками, которые имеют совсем другие способы обработки генитивов. Итак, мой вопрос в том, как люди обычно справляются с такого рода проблемами?

2. Оказывается, что «машина Джеймса» на самом деле является действительной альтернативой «машине Джеймса», так что это решает английский случай. Что касается остальных языков, я надеюсь, что переводчики справятся с этим.