В отделении интенсивной терапии, возможно ли использовать пользовательские правила множественного числа вместо правил CLDR

#php #internationalization #icu #plural #cldr

#php #интернационализация #icu #множественное #cldr

Вопрос:

Итак, я хочу использовать другое правило множественного числа, отличное от того, что есть в CLDR. Я использую ICU через международное расширение PHP и говорю, что у меня есть что-то вроде этого:

 $msg = new MessageFormatter('ar',
                '{0,plural,  zero {zero-ar}' .
                'one {one-ar}' .
                'two {two-ar}' .
                'few {{0,number} few-ar}' .
                'many {{0,number} many-ar}' .
                'other{{0,number} other-ar} }.');
  

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

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

1. могу я спросить, чем конкретно вы недовольны? (Просто для понимания) unicode.org/repos/cldr-tmp/trunk/diff/supplemental /…

2. V. кратко: В арабском языке каждое существительное имеет формы единственного, двойного и множественного числа, например дерево: shajara = дерево-1 shajaratan = дерево-2 ashjar = деревья. Для случая X100 1, 2, например (102 дерева) традиционный стиль заключается в использовании единственных или двойственных форм, а не в подсчете subject: so (100 и tree-1, 100 и tree-2) вместо (102 tree-x-form). Теперь 2-й стиль приемлем и используется, чтобы избежать особых случаев и проблем с удобством использования с 1-м стилем. Однако это второстепенная и правильная форма tree-x спорна — CLDR ошибся в этом случае — здесь есть обсуждение ( wiki.arabeyes.org/Plural_Forms ) (ссылка вниз?).

3. В каждом комментарии мне не хватает места, чтобы поблагодарить вас 🙂 — действительно спасибо за ваши полезные ответы.

4. рад помочь. но, unicode.org/repos/cldr-tmp/trunk/diff/supplemental / … выглядит так же, как «6 форм», приведенных на странице arabeyes. Часть обсуждения arabeyes, похоже, согласна только с CLDR. В любом случае, пожалуйста, отправьте сообщение об ошибке в CLDR: cldr.unicode.org

5. Извините, ссылки не работали, когда я публиковал. Соответствующая ссылка здесь: wiki.arabeyes.org /… . К сожалению, страница доступна только на арабском языке — вверху есть ссылка на английскую версию — но в английской версии проблема не обсуждается. В основном они оставляют вопрос открытым для дальнейших представлений. Я продолжу этот вопрос позже — большое спасибо.

Ответ №1:

Я думаю, вам нужно было бы создать объект PluralRules с помощью PluralRules.createRules() , а затем создать свой собственный PluralFormat , используя эти правила и шаблон.

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

1. Я не вижу, чтобы это было доступно в PHP API, поэтому мне придется использовать обходные пути в моем коде.

2. Вы могли бы оформить заказ ICU из тега subversion, а затем отредактировать icu/source/data/misc/plurals.txt — возможно, вы могли бы вернуться сюда с тем, что вы на самом деле изменили?