Как отформатировать интервал даты в текст (интернационализированный) - PullRequest
3 голосов
/ 06 марта 2011

Допустим, у меня есть DateInterval, например "P10DT1H53S", и я хочу отформатировать его в удобочитаемую строку, например:

10 days, 1 hour and 53 seconds

Теперь это довольно просто, если вы планируете толькосделай это для английского.Но я ищу чистый и интернационализированный способ сделать это, используя gettext.

К сожалению, gettext обрабатывает только одно множественное число за раз, а не несколько (годы, дни, часы и т. Д.), Поэтому я не могу использоватьngettext для достижения того, что я хочу.И множественное число сильно различается в зависимости от языка, поэтому это не так просто, как итерация и добавление "s", где это необходимоКроме того, я должен построить его целиком, потому что я не уверен, что каждый язык будет разделять дни, часы,… используя запятые (с одним «и» вместо последней запятой).

Ответы [ 2 ]

1 голос
/ 06 марта 2011

Лучшим хранилищем для актуальных данных интернационализации является проект CLDR , размещенный на консорциуме Unicode . Специфичные для локали правила плюрализации являются частью набора данных.

Данные хранилища доступны в виде набора файлов XML. Есть несколько инструментов для манипулирования данными, включая код для генерации POSIX-совместимых файлов локали.

Я не уверен, сколько работы вам понадобится, чтобы использовать данные в PHP (не моя специальность), но это, вероятно, того стоило бы в долгосрочной перспективе.

0 голосов
/ 06 марта 2011

Вы можете использовать несколько вызовов для получения текста вместо того, чтобы делать это только в одном. Это должно обойти ограничение множественного числа.

...