Копирование примера из руководство, ngettext работает так:
ngettext("%d window", "%d windows", 1); //'1 window';
ngettext("%d window", "%d windows", 2); //'2 windows';
Но что, если я хочу использовать 2 переменные, например %d windows %d doors
? Есть ли стандартный способ реализовать это, чтобы правильная строка (4 комбинации) появлялась на основе 2 переменных?
ngettext()
не поддерживает несколько переменных. Вы должны обязательно писать предложения, которые могут быть правильно переведены блок за блоком (если возможно, несколько предложений, чтобы избежать проблем с упорядочением в зависимости от языка).
По крайней мере, одна из причин, по которой это не поддерживается, заключается в том, что количество необходимых резервных предложений (первые параметры ngettext()
) будет расти экспоненциально с числом переменных (то есть вам понадобится 4 таких предложения для 2 переменных: единственное число-единственное число, единственное-множественное число, множественное число-единственное и множественное-множественное число, затем 8 для 3 переменных и т. д.).
Вы найдете ответ на аналогичный вопрос на https://stackoverflow.com/a/1893929/4457767.
Других решений пока нет …