i18n в формах Symfony - PullRequest
       19

i18n в формах Symfony

0 голосов
/ 10 сентября 2011

Есть ли способ использовать функцию format_number_choice внутри файла действий. На самом деле мне нужно использовать его для сообщения об ошибке формы.

'max_size' => 'File is too large (maximum is %max_size% bytes).',

В английском это просто «байты», но в других языках синтаксис изменяется после определенного значения (например, если число больше 20, это: «20 из байтов»).

Конечно, я могу использовать скобки, но если фреймворк предлагает поддержку для выполнения этой конкретной задачи, почему бы не использовать ее?!

Ответы [ 2 ]

0 голосов
/ 11 сентября 2011

Правильный способ обработки диапазонов номеров для перевода - , объясненный здесь в Руководстве по определению . Я не буду воспроизводить это здесь, поскольку сама документация ясна и кратка. Однако обратите внимание, что строка не извлекается автоматически задачей i18n-extract, поэтому вам нужно добавить ее вручную - опять же, в документации это объясняется.

Так что да , вы можете использовать функцию format_number_choice() внутри действия - вам просто нужно загрузить помощника внутри действия следующим образом:

sfContext::getInstance()->getConfiguration()->loadHelpers('I18N');
0 голосов
/ 10 сентября 2011

То, как это в настоящее время реализовано в ветке 1.4, вы можете определить только один перевод для каждого сообщения, используя XML-файлы il18n.

Что вы можете сделать, это создать собственный валидатор, который наследует текущий валидатор (sfValidatorFileв вашем примере) и выполняет проверку размера в методе doClean перед вызовом метода его родителя.

Я предлагаю вам взглянуть на источник, чтобы увидеть, как он работает: sfValidatorFile

...