Как с помощью подключаемого модуля Grails Resources загрузить файл Javascript в зависимости от языкового стандарта пользователя?

Я использую плагин Grails Resources с проверкой jQuery. Проверка jQuery имеет тексты, специфичные для локали, объявленные как файлы JS:

/localization
    messages_ar.js
    messages_bg.js
    messages_ca.js

И так далее. В моем файле ApplicationResources.groovy у меня объявлен следующий блок:

form {
    resource url: '/js/jquery/jquery.validate.js'
    resource url: '/js/jquery/jquery.validate.additional-methods.js'
    resource url: '/js/jquery/localization/messages_es.js'
}

Но это жестко запрограммированное значение. Можно ли как-нибудь настроить подключаемый модуль Resources для загрузки правильного JS-файла в зависимости от языкового стандарта пользователя?


person Daniel T.    schedule 24.08.2012    source источник


Ответы (1)


Вот как я делал это в прошлом:

  • Определите некоторые иностранные пакеты и завершите их заголовком accept-language (например, messages_en.js или messages_es.js)
  • На ваш взгляд, когда вы выкладываете ресурсы, добавьте что-то вроде:

    ‹r:external uri="js/messages_${RequestContextUtils.getLocale(request).getLanguage()}.js"/›

это должно правильно вытащить ресурс на основе локального.

Надеюсь, это поможет!

person Johnny Wey    schedule 24.08.2012
comment
Привет, Джонни, спасибо за ответ. Проблема, с которой я столкнулся, заключается в том, что файл messages_xx.js зависит от первой загрузки проверки jQuery, и у меня нет его на каждой странице (только те, которые имеют формы). Есть ли способ настроить <r:external> для включения JS-файла только в том случае, если включен определенный модуль? - person Daniel T.; 25.08.2012
comment
Я так не думаю. Тем не менее, вы можете 1. Сопоставить подключаемый модуль проверки с вашей мини-версией JQuery (помните, что ее следует загрузить только один раз, а затем кэшировать в браузере), 2. Сопоставить файл messages* с подключаемым модулем проверки (опять же, загруженный один раз, хотя менее эффективен, чем предыдущая IMO) или 3. Вручную включить плагин на страницы, содержащие файлы сообщений *. Надеюсь это поможет! - person Johnny Wey; 01.09.2012