использование jquery.i18n.properties.js с Grails - PullRequest
0 голосов
/ 06 апреля 2019

Я использую jquery.i18n.properties.js с приложением Grails 2.5.6, но я думаю, что он не работает должным образом из-за ошибки, упомянутой чуть позже. Ниже мой код в виде Grails.

ГСП:

<head>
 <asset:javascript src="jquery.i18n.properties-min-1.0.9.js"/>
</head>
<body>
<script>
    $(document).ready(function () {
    $.i18n.properties({
        name: 'messages',
        path: 'i18n/', //E:/IntelljWS/MyProject/grails-app/
        mode: 'both',
        language: 'en', 
        callback: function () {

            $("#error").text($.i18n.prop('msg.test'));
        }
    });
});

Ниже приведено одно из сообщений, определенных в файле messages.properties и используемых в примере кода:

 msg.test=Test message

То, что показано в #error, является [msg.test]

Что-нибудь, по чему я скучаю?

1 Ответ

0 голосов
/ 09 апреля 2019

То, что я представлю ниже, о плагине i18n-asset-pipeline grails, который выполняет ту же работу, что и jquery.i18n.properties.js, как таковой. Возможно, вы найдете несколько реализаций jquery.i18n.properties.js на Grails Portal Plugin . Я не совсем уверен, что вы будете счастливы с моим предложением. Тем не менее, я бы сказал, что использование этого плагина поможет нам минимизировать усилия по поддержке и вызову тега lib g:message в как представлений Grails, так и внешних файлов JavaScript .

Если вы чувствуете себя уверенно, играя с i18n-asset-pipeline, пожалуйста, присмотритесь к его документации . Ниже приведены краткие шаги ребенка, которые я делал с grails 2.5.6.

Шаг 1: Объявите плагин в BuildConfig.groovy

plugins {
   ...
   runtime 'org.grails.plugins:i18n-asset-pipeline:1.0.6'
   ...
}

Шаг 2. Определите свойства своих сообщений в соответствующих файлах

В сообщениях Resource Bundle в каталоге grails-app/i18n вы добавляете файлы с интересующими вас языками, такие как messages_fr.properties, messages_vi.properties и т. Д. Чтобы продемонстрировать, как это работает, я welcome.message просто отображаю приветственное сообщение на индексная страница в этих файлах messages_{fr,es,vi}.properties.

Шаг 3: Определите i18n файлов в assets/javascripts/i18n каталоге

Сначала запустив приложение, вы увидите этот каталог. Создание одного и того же набора файлов, т.е. messages.i18n, messages_{es,fr,vi}.i18n. Внутри этих файлов мы просто помещаем свойства, которые были добавлены в messages_{es,fr,vi}.properties файлы, или свойства, которые вы хотите отображать только на определенных языках.

Шаг 4: Установите язык по умолчанию (необязательно)

Оставление следующего фрагмента в grails-app/conf/spring/resources.groovy файле

beans = {
   localeResolver(org.springframework.web.servlet.i18n.SessionLocaleResolver) {
      defaultLocale = new Locale("fr", "FR")
      java.util.Locale.setDefault(defaultLocale)
   }
}

Шаг 5: Как использовать плагин i18n

В представлениях мы можем загрузить настройки по умолчанию для языка i18n и отобразить свойства сообщений в соответствии с этими строками.

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <title>Demo | BioModels</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="layout" content="main"/>
    <script>

    </script>
    <g:set var="locale" value="${session.'org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE'}"/>
    <asset:i18n locale="${locale}"/>
</head>

<body>
<h2><g:message code="welcome.message"/> </h2>
</body>
</html>

Шаг 6: Тестирование

Откройте вкладку в вашем веб-браузере, получив вашу страницу, например, http://localhost:8900/i18ndemo/demo/, она отобразит содержимое свойства welcome.message на языке по умолчанию, который был установлен в resources.groovy. Если вы хотите сразу переключиться на другие языки, введите ?lang=es после предыдущего URL. Это выглядит как http://localhost:8900/i18ndemo/demo/?lang=es

Пройдя через эти шаги, я полагаю, что вы получите свою потребность.

Пример проекта также был помещен в найденный битбакет здесь .

Надеюсь, этот ответ поможет вам решить вашу проблему.

...