Пример использования Handlebars Intl с jsreport - PullRequest
0 голосов
/ 22 сентября 2019

Я ищу рабочий пример того, как применить локаль для отчета внутри jsreport.Я использую руль для шаблона.Я установил handlebars-intl в докер с помощью jsreport с помощью npm install handlebars-intl

и подключил его в своем шаблоне следующим образом:

var handlebars = require('handlebars');

var HandlebarsIntl = require('handlebars-intl');
HandlebarsIntl.registerWith(handlebars);

Когда я использую его в шаблоне htmlЯ хочу установить языковой стандарт для nl-NL. Я пытался настроить его таким образом прямо в html

  {{#intl locales="nl-NL"}}
            <td class="grand total">Totaal:</td>
            <td class="total">{{formatNumber totalAmount}}</td>
            <td class="total"></td>
            <td class="total">{{formatNumber vatAmount}}</td>
            <td class="total">{{total totalAmount vatAmount}}</td>
            {{/intl}}

FormatNumber применять формат для локали en-EN, но не для nl.Я пытался использовать разные локали, кажется, что это не работает вообще.На странице учебника Handlebars Intl я нашел пример

var intlData = {
    locales: 'en-US'
}

var context = {
    price: 1000
};

var html = template(context, {
    data: {intl: intlData}
});

Но когда я пытаюсь применить его, у меня появляется ошибка

Error while executing templating engine. template is not defined

Я не силен в js (подробнее.нет) И не могу понять, как это работает, и как правильно его применять.Пожалуйста, помогите, поделитесь рабочим примером или укажите, что я делаю не так.

1 Ответ

0 голосов
/ 22 сентября 2019

Проблема была с node.js, не включающим локализацию по умолчанию.Мне пришлось настроить скрипт запуска и добавить пакет к узлу. Мой Dockefile выглядит как

FROM jsreport/jsreport:2.6.0-full
RUN npm i handlebars-intl full-icu --save
COPY jsreport.config.json /app
COPY package.json /app
COPY run.sh /app

Также мне нужно изменить скрипт run.sh для запуска узла с поддержкой локалей

node --icu-data-dir=node_modules/full-icu "/app/server.js"

После этоголокали начинают работать.Надеюсь, это поможет кому-то еще

...