Может ли PHP определить «родительный падеж» для данной строки для данной локали? - PullRequest
1 голос
/ 15 февраля 2020

Я пытаюсь отобразить что-то вроде:

$1 health is very low right now.

Где $ 1 относится к обработанному имени пользователя / слову / строке. Например:

MagicalMage's health is very low right now.

Или:

Susy_Suss' health is very low right now.

Или (другой случай):

IBM's dominance is not as big as it once was.

Проблема в том, что не только она должна обрабатывать простое правило Engli sh о выполнении "s" в конце, за исключением строк, оканчивающихся на "s", как показано выше, но также особых причуд любого другого языка !

Например, в Swedi sh это будет:

MagicalMages hälsa är väldigt låg just nu.

Или:

Susy_Suss hälsa är väldigt låg just nu.

Или (что совпадает с версией Engli sh):

Susy_Suss' hälsa är väldigt låg just nu.

Или (обратите внимание на двоеточие вместо апострофа):

IBM:s dominans är inte så stor som den en gång var.

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

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

То есть, если я ввожу строку "IBM", а локаль - "en_US", он возвращает:

IBM's

Если я вместо этого задаю ей локаль "sv_SE", он возвращает:

IBM:s

Ясно как день, нет?

1 Ответ

0 голосов
/ 15 февраля 2020

Чтобы добраться до точки: Нет.

PHP не может этого сделать. Кроме того, есть некоторые пакеты composer, которые обрабатывают различные виды грамматики (которые в основном предназначены для определенных c языков) и такие вещи, как плюрализация в symfony - чтение в формате сообщений ICU если вы хотите узнать больше об этом.

Однако, похоже, нет пакетов для выполнения того, что вы просите, особенно для нескольких (или всех) языков. Языки (на которых мы говорим, а не языки программирования) часто удивительно сложнее, чем вы думаете, если вы говорите на них бегло.

Поскольку такого пакета нет, я бы лучше всего воспользовался случаем и создал библиотеку самостоятельно и предложи ее другим (например, как composer пакет) и заработай карму сообщества!

...