#php #gettext
#php #gettext
Вопрос:
Допустим, я хочу отобразить следующий текст для пользователя:
«Машина Джона»
Я использую gettext для его вывода:
sprintf(_("%s's car"), $firstName)
Очевидная проблема заключается в том, что, если имя пользователя заканчивается на S, мы получим что-то вроде этого:
«Машина Джеймса» (должно быть «машина Джеймса»)
Как мне решить эту проблему, особенно учитывая, что другие языки могут представлять аналогичную проблему (разные генитивы в зависимости от окончания слова или аналогичные)?
Ответ №1:
Проще говоря: напишите функцию с явным if
, чтобы получить форму родительного падежа для имени, и выведите ее вместо этого. Я бы привел пример, но вы не указали, о каком языке мы говорим!
Комментарии:
1. Язык программирования: PHP. Человеческие языки: около 30 разных языков — какие из них я еще не знаю, но, вероятно, в основном европейские языки. Проблема в том, что, хотя с английским достаточно просто работать, я могу столкнуться с другими языками, которые имеют совсем другие способы обработки генитивов. Итак, мой вопрос в том, как люди обычно справляются с такого рода проблемами?
2. Оказывается, что «машина Джеймса» на самом деле является действительной альтернативой «машине Джеймса», так что это решает английский случай. Что касается остальных языков, я надеюсь, что переводчики справятся с этим.