Ключевые слова 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 нужно правильно определить множественную структуру целевого языка, но тогда это просто работает.

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

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

Если вы скажете 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 множественные формы

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

Другие вопросы по тегам