ChartJS:将x轴月翻译成其他语言

时间:2018-05-24 22:06:57

标签: angularjs localization chart.js momentjs

我很难找到如何翻译时间轴。我正在使用MMM YYYY来显示xAxes中的时间显示格式。

它始终显示May 2018之类的日期。有谁知道如何本地化?

例如,如果语言是法语,则月份应显示为Mai而不是May。我到处搜索,只发现有人说使用time.parser可以做到这一点,但我不知道该怎么做。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我在Ruby on Rails应用程序中遇到同样的问题。

我们不使用angularjs,但是我认为Chart.js的使用方法非常相似。

我将发布管理它在Ruby on Rails中的工作方式并优化语言环境。但是您应该能够轻松自定义解决方案以与Angular.js一起使用

  1. 在mouse.js库之外的JavaScript捆绑软件中包含moment.js语言环境
//= require moment
//= require moment/pl.js
  1. 添加自定义displayFormats以使其更容易在回调函数中解析日期。并添加回调函数以再次解析和格式化日期。
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);
                              }
                            }
                        }],

由于某种原因,Chart.js内部的moment.js会忽略语言环境。但是,当在回调函数中再次调用moment.js时,效果很好。

除了月份以外,我为所有其他单位添加了后卫回报。除了几个月以外,我不想重新格式化日期。