плюрализация / depluralisation - PullRequest
4 голосов
/ 14 ноября 2009

Имеет ли php какую-либо функцию для работы с плюрализирующими или деплюрализующими словами?

Очевидно, что довольно легко снять или заменить 's' в конце слов вроде 'apple', но другие слова не так просты.

Если у php нет собственного способа решения этой проблемы, как другие языки решают проблему? Есть ли функция, которая может обрабатывать плюрализм / деплурализацию или английский язык слишком грамматически несовместим?

Ответы [ 3 ]

1 голос
/ 14 ноября 2009

Обычно я использую PHP только из фреймворков, которые реализуют свой собственный способ решения этой проблемы, но я думаю, что ответ на ваш вопрос может быть gettext .

Gettext - библиотека интернационализации и локализации GNU (i18n). Он был разработан как инструмент для i18n и l10n (интернационализация и локализация), но - именно из-за этого у него множество функций для работы с множественными формами, учитывая, что другие языки могут иметь гораздо более сложные способы формирования множественного числа, чем английский.

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

РЕДАКТИРОВАТЬ: Я думаю, ngettext() может быть функция, которую вы ищете.

1 голос
/ 14 ноября 2009

Проверьте Бумага Дэмиена Конвея на этом . Это прекрасно иллюстрирует, что это за непростая тема только на английском языке.

Как другие языки справляются с этим (как вы и просили)? В Perl есть модуль для этого (написанный Дэмиеном), который кодирует вышеуказанную статью. См. Lingua-EN-Inflect . Я не знаю ни одного модуля на других языках, который бы делал это.

0 голосов
/ 14 ноября 2009

Я думаю, вы должны проверить этот образец:

http://kuwamoto.org/2007/12/14/how-to-pluralize-in-php-and-please-help-me-check-the-code/

Могут быть некоторые ошибки, и я не проверял их, но этого должно быть достаточно, чтобы вы начали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...