#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 — возможно, вы могли бы вернуться сюда с тем, что вы на самом деле изменили?