Вопрос по переводам сообшений внутри яваскрипта

Здравствуйте,

С тем как работает эта функция Yii::t() в Пхп разобрались:),

Нужен собственно совет знатоков.

Как организовать перевод сообшений из яваскрипта.


if (!numeric(PageNum)) {var PageNum = 0; var err=1; alert('The number of pages Must be a Numberic data!');}

Вот кусок яваскрипта сообщения, как сделать грамотно его перевод?

вариантов несколько:

  1. посместить тело скрипта во View (не нравится, потому как засрет весь код)

  2. сделать 2 выносных файла-скрипта переведенных (тоже решение сомнительное)

  3. каким то образом сделать чтобы скрипт залазил в файл перевода фреймворка.

есть идеи?

Тоже интересует этот вопрос.

Может быть подключать дополнительный локализованный js следующего вида (в зависимости от языка приложения)?




var wrongNumberOfPages = 'Количество страниц должно быть целым числом!';



Для французского языка - свой файлик, только переменная wrongNumberOfPages там будет содержать текст на французском. Соответственно, в alert’е использовать эту переменную.

Можно в принципе создавать такой js код и внутри php, а потом вызвать метод Yii::app()->clientScript->registerScript(), что позволит хранить переводы для js, как и обычные.

В общем, это только мысли, но одними средствами Yii тут обойтись, к сожалению, не получится :)

Зло - засорярь глобальный контекст такой "мегаважной информацией", как перевод, проще сделать на js подобие Yii namespace, т.е. выполнять такие же операции:


(function($){

  $.yii = {t: function(category,message,params){...}}

})(jQuery);

все переменные, которые касаются js именовать категорией js, и естественно все переведенные сообщения либо отдельным файлом с закэшированным содержимым, либо включением сообщений с переводом в текст самой страницы (что-то вроде Yii::app()->jsTranslator->getCategory($name))… если такой метод устраивает - вечером покажу решение js, коротое применялось… (думаю как написать компонент в Yii вы сами догадаетесь)

Проблему решил путем передачи переменных функции яваскрипта, переменные первожу посредством фреймворка и пихаю в качестве параметров вызываемой функции. Работает железно и убрало кучу текста из Яваскрипта в обычные файлы->переводы.

Всем спасибо:)