Ключевые слова PoEdit – множественное число

Я включил в мое приложение локальную систему gettext-like, но моя функция перевода выглядит так:

t($category, $string, [$plural_string, $number, $vprintf_arguments]) 

Мои ключевые слова PoEdit:

 t:2 t:2,3 
  • t: 2 сообщает PoEdit для синтаксического анализа $string , и она работает, по-видимому,
  • t: 2,3 должен сказать PoEdit для синтаксического анализа как $string и $plural_string – но это не так 🙁

Он видит только $string , поэтому я не разбираю множественные формы … Как я могу это исправить? Я не хочу переключать свою функцию на другой формат аргументов, потому что мне нравится этот 🙁

Также эта функция действует как замена sprintf:

  • если 3-й аргумент ($ plural_string) – это массив, то функция будет рассматривать значения из массива как аргументы для vsprintf
  • если 3-й аргумент является строкой и предоставляется номер $, функция будет рассматривать $ vprintf_arguments как аргументы vsprintf (если они предоставлены), а $ plural_string как множественная форма $ string

В любом случае PoEdit не должен вмешиваться в некомандуемые аргументы, верно? Я имею в виду, что он будет разбирать только $ plural_string как строку, если она выглядит как 'abc abc'

    gettext использует только одну строку за раз. Для вас может быть ngettext. (посмотрите на синтаксис)

    Там вы введете один текст для единственного числа, другой для множественного числа, но также и число.

    Умная вещь в этом заключается в том, что многие языки имеют совершенно другую структуру множественного числа, чем английский. Например, русский язык использует три различные формы. Один – для того, где счет заканчивается выраженным «одним»: 1, 21, 31, 41 и т. Д. Вторая форма предназначена для подсчета, которая заканчивается выраженным 2, 3 или 4. Третья форма для остальных. ,

    И с помощью ngettext это можно сделать. Да, в poedit, нужно правильно определить множественную структуру целевого языка, но тогда это просто работает.

    http://www.gnu.org/s/hello/manual/gettext/Plural-forms.html

    Как сказал Тор-Бьорн Фьелнер, это должно просто сработать.

    Если вы сообщите poedit, что на самом деле язык имеет множественные формы ( перевод множественных форм с помощью Poedit ) и учитывает ваши ключевые слова, poedit предлагает их для перевода.

    пример

    Множественные формы: nplurals=2; plural=n != 1; nplurals=2; plural=n != 1;

    Ключевые слова:

    • t:2
    • t:2,3

    Код PHP:

     <?php t("cat", "strA"); t("cat", "strB1", "strB2", 2, array()); t("cat", "strC1", "strC2", 3, array()); 

    Интерфейс Poedit:

    Множественные формы Poedit

    То, что я не понял в вашем вопросе, было вопросом о массивах и т. Д. Я не мог расшифровать то, что вы намереваетесь в домене poedit / gettext, я думаю, ваш вопрос будет полезен, если вы добавите некоторые конкретные примеры кода и как результат должен быть для них.