首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在月/日进行D3js的本地化?

如何在月/日进行D3js的本地化?
EN

Stack Overflow用户
提问于 2013-10-09 22:10:39
回答 5查看 16.9K关注 0票数 22

我正在寻找一种在D3上进行本地化的方法

我找到了它的价值

代码语言:javascript
复制
d3_time_days = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ],
d3_time_dayAbbreviations = [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], 
d3_time_months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], 
d3_time_monthAbbreviations = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];

D3内部,但由于它们是D3的本地/私有,我(显然)不能访问它们。

任何提示都会很好,谢谢:)

更新1:

似乎只有重新编译才能做到这一点--但不能被破解--所以最终只能在缩小版中硬编码编辑--这是我的耻辱……

更新2:

我将尝试研究如何像fx moment.js那样让D3接受“即时”本地化设置:

代码语言:javascript
复制
moment.lang('da', {
    months : "Januar_Februar_Marts_April_Maj_Juni_Juli_August_September_Oktober_November_December".split("_"),
    monthsShort : "Jan_Feb_Mar_Apr_Maj_Jun_Jul_Aug_Sep_Okt_Nov_Dec".split("_"),
    weekdays : "Søndag_Mandag_Tirsdag_Onsdag_Torsdag_Fredag_Lørdag".split("_"),
    weekdaysShort : "Søn_Man_Tir_Ons_Tor_Fre_Lør".split("_"),
    weekdaysMin : "Sø_Ma_Ti_On_To_Fr_Lø".split("_"),
    ordinal : '%d.',
    week : {
        dow : 1, // Monday is the first day of the week.
        doy : 4  // The week that contains Jan 4th is the first week of the year.
    }
});
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-05-14 22:34:02

我刚刚遇到了同样的问题,我找到了修复它的方法,而不需要重新编译d3。

https://github.com/mbostock/d3/wiki/Localization

文档中提到了函数d3.locale,它构建了用于格式化数字和日期的函数。因此,如果您使用自己的本地化规则来调用它,那么您就成功了一半。

代码语言:javascript
复制
var myFormatters = d3.locale({
  "decimal": ".",
  "thousands": ",",
  "grouping": [3],
  "currency": ["$", ""],
  "dateTime": "%a %b %e %X %Y",
  "date": "%m/%d/%Y",
  "time": "%H:%M:%S",
  "periods": ["AM", "PM"],
  "days": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
  "shortDays": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
  "months": ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
  "shortMonths": ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"]
});

下一步是实际告诉d3使用这个新的格式化函数。因此,要使用新的时间格式化程序,请执行以下操作:

代码语言:javascript
复制
d3.time.format = myFormatters.timeFormat;
票数 31
EN

Stack Overflow用户

发布于 2014-09-02 22:51:06

我只是想补充一下@Adrian Salazar的答案,因为我花了一段时间才弄明白。如果你正在使用‘开箱即用’的d3时间刻度做一个轴。您可以使用timeFormat.multi将其设置为区域设置

代码语言:javascript
复制
var localeFormatter = d3.locale({
    "decimal": ",",
    "thousands": ".",
    "grouping": [3],
    "currency": ["€", ""],
    "dateTime": "%a %b %e %X %Y",
    "date": "%d-%m-%Y",
    "time": "%H:%M:%S",
    "periods": ["AM", "PM"],
    "days": ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag"],
    "shortDays": ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za"],
    "months": ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
    "shortMonths": ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"]
})

var tickFormat = localeFormatter.timeFormat.multi([
    ["%H:%M", function(d) { return d.getMinutes(); }],
    ["%H:%M", function(d) { return d.getHours(); }],
    ["%a %d", function(d) { return d.getDay() && d.getDate() != 1; }],
    ["%b %d", function(d) { return d.getDate() != 1; }],
    ["%B", function(d) { return d.getMonth(); }],
    ["%Y", function() { return true; }]
]);

axis.tickFormat(tickFormat);
票数 21
EN

Stack Overflow用户

发布于 2013-12-07 09:02:16

您可以创建自定义d3时间格式化程序并使用moment.js进行本地化。例如,要创建具有本地化日期的轴:

代码语言:javascript
复制
var x = d3.time.scale();

var myTimeFormatter = function(date) {
    return moment(date).format("LL");
};

var xAxis = d3.svg.axis()
    .scale(x)
    .orient("bottom")
    .tickFormat(myTimeFormatter);

然后使用moment.lang添加对其他语言的支持并切换当前语言。有关详细信息,请参阅http://momentjs.com/docs/#/i18n

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19274464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档