Я включил в мое приложение локальную систему gettext-like, но моя функция перевода выглядит так:
t($category, $string, [$plural_string, $number, $vprintf_arguments])
Мои ключевые слова PoEdit:
t:2 t:2,3
$string
, и она работает, по-видимому, $string
и $plural_string
– но это не так 🙁 Он видит только $string
, поэтому я не разбираю множественные формы … Как я могу это исправить? Я не хочу переключать свою функцию на другой формат аргументов, потому что мне нравится этот 🙁
Также эта функция действует как замена sprintf:
В любом случае PoEdit не должен вмешиваться в некомандуемые аргументы, верно? Я имею в виду, что он будет разбирать только $ plural_string как строку, если она выглядит как 'abc abc'
gettext использует только одну строку за раз. Для вас может быть ngettext. (посмотрите на синтаксис)
Там вы введете один текст для единственного числа, другой для множественного числа, но также и число.
Умная вещь в этом заключается в том, что многие языки имеют совершенно другую структуру множественного числа, чем английский. Например, русский язык использует три различные формы. Один – для того, где счет заканчивается выраженным «одним»: 1, 21, 31, 41 и т. Д. Вторая форма предназначена для подсчета, которая заканчивается выраженным 2, 3 или 4. Третья форма для остальных. ,
И с помощью ngettext это можно сделать. Да, в poedit, нужно правильно определить множественную структуру целевого языка, но тогда это просто работает.
Как сказал Тор-Бьорн Фьелнер, это должно просто сработать.
Если вы сообщите 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 / gettext, я думаю, ваш вопрос будет полезен, если вы добавите некоторые конкретные примеры кода и как результат должен быть для них.