ChartJS: Перевести месяц оси X на другие языки - PullRequest
0 голосов
/ 25 мая 2018

У меня трудности с поиском, как перевести ось времени.Я использую MMM YYYY для отображения форматов времени в xAxes.

Дата всегда отображается как May 2018.Кто-нибудь знает, как локализовать здесь?

Например, если язык французский, месяц должен отображаться как май, а не май.Я искал везде, только найти кого-то сказал, что это можно сделать с помощью time.parser, но я не уверен, как это сделать.

Будем благодарны за любые предложения.

1 Ответ

0 голосов
/ 11 марта 2019

Я боролся с той же проблемой в моем приложении Ruby on Rails.

Мы не используем angularjs, но я думаю, что способ использования Chart.js очень похож.

Я опубликую способ управления им в Ruby on Rails и в польском языке.,Но вы должны иметь возможность легко настроить решение для работы с Angular.js

  1. Включить языковой стандарт moment.js в комплект JavaScript отдельно от библиотеки moment.js
//= require moment
//= require moment/pl.js
Добавление пользовательских форматов отображения, чтобы упростить анализ даты в функции обратного вызова.И добавьте функцию обратного вызова для анализа и форматирования даты снова.
options: {
                    ...
                    scales: {
                        xAxes: [{
                            type: 'time',
                            time: {
                              displayFormats: {
                               'hour': 'HH:mm',
                               'day': 'DD-MM-YYYY',
                               'week': 'DD-MM-YYYY',
                               'month': 'DD-MM-YYYY',
                              },
                              unit: '<%= @report.scale %>',
                            },
                            ticks: {
                              callback: function(value, index) {
                                let displayFormats = {
                                  'hour': 'HH:mm',
                                  'day': 'DD-MM-YYYY',
                                  'week': 'YYYY WW',
                                  'month': 'MMMM YYYY',
                                };
                                let unit = '<%= @report.scale %>';
                                let format = displayFormats[unit];
                                return moment(value, 'DD-MM-YYYY').format(format, value);
                              }
                            }
                        }],

По какой-то причине moment.js внутри Chart.js игнорирует локали.Но при повторном вызове moment.js внутри функции обратного вызова это работает хорошо.

Я добавил защитный возврат для всех модулей, кроме месяца.Я не хотел переформатировать и переформатировать даты, кроме месяцев.

...