Ключевые слова PoEdit - множественное число
Я включил в приложение систему локализации, подобную gettext, но моя функция перевода выглядит следующим образом:
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-й аргумент ($ множественная_строка) является массивом, то функция будет рассматривать значения из массива в качестве аргументов vsprintf
- если 3-й аргумент является строкой и указан $number, функция будет рассматривать $vprintf_arguments в качестве аргументов для vsprintf (если они предоставлены), а $ mult_string - как форму множественного числа $string
В любом случае PoEdit не должен мешать аргументам без кавычек, верно? Я имею в виду, что он будет только анализировать $ множественную строку как строку, если он выглядит 'abc abc'
2 ответа
gettext имеет дело только с одной строкой за раз. После чего вы можете получить ngettext. (посмотрите на синтаксис)
Там вы поместите один текст для единственного числа, другой для множественного числа, а также число.
Самое умное в том, что многие языки имеют совершенно другую структуру множественного числа, чем английский. Русский, например, использует три разные формы. Один - для того, где счет заканчивается выраженным "единицей": 1, 21, 31, 41 и т. Д. Вторая форма - для счетчиков, которые заканчиваются выраженным 2, 3 или 4. Третья форма - для остальных.,
И с помощью ngettext это можно сделать. Да, в poedit нужно правильно определить множественную структуру целевого языка, но тогда это просто работает.
Как ответил Тор-Бьорн Фьелнер, на самом деле это должно сработать.
Если вы скажете poedit, что язык на самом деле имеет формы множественного числа ( перевод множественных форм с помощью Poedit) и учли ваши ключевые слова, poedit предлагает их для перевода.
пример
Формы множественного числа: 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, я думаю, что ваш вопрос будет полезен, если вы добавите несколько конкретных примеров кода и каков будет результат для них.