2014-06-24 2 views
9

는 몇 달 러시아 이름을 표시하는 내 응용 프로그램에서 d3.locale()를 사용하는 것을 시도하고있다. 그들이 내 데이터베이스에 영어로되어 있기 때문에 http://jsfiddle.net/j2feJ/2/ 또한, 나는 영어로 shortMonths 변수가 필요합니다.현지화 (사용의 d3.locale 예)

var ru_RU = { 
    "decimal": ",", 
     "thousands": "\xa0", 
     "grouping": [3], 
     "currency": ["", " руб."], 
     "dateTime": "%A, %e %B %Y г. %X", 
     "date": "%d.%m.%Y", 
     "time": "%H:%M:%S", 
     "periods": ["AM", "PM"], 
     "days": ["воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота"], 
     "shortDays": ["вс", "пн", "вт", "ср", "чт", "пт", "сб"], 
     "months": ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"], 
     "shortMonths": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] 
} 

하지만 여전히 영어로 표시됩니다. 나는 그것을 잘못 사용하고 있는가? D3의 내부 동작을 변경하지 않습니다 d3.locale()를 호출

답변

20

, 그냥 생성하고 현지화 개체를 반환합니다. 이 반환 값을 캡처하여 나중에 사용할 수 있도록 변수에 저장해야합니다. 당신이 당신의 예제 코드에서 만든 객체가이 같은 것을 할 수 감안할 :

var RU = d3.locale(ru_RU); 

을 그런 다음 지역화 할 값을 필요로 할 때, 당신은 명시 적으로 요구해야합니다. 귀하의 경우 전체 월 이름을 x 축 레이블로 표시하려고합니다.

이렇게하려면, 당신은 당신의 x 축에 .tickFormat()을 추가하고, 형식은 전체 월 이름의 지역화 된 버전이되도록 지정할 수 있습니다. 당신이 대신 ko 페이지에 디폴트로 만든 로케일을 사용하는 것을 제외하고

var xAxis = d3.svg.axis() 
    .scale(x) 
    .orient("bottom") 
    .ticks(5) 
    .tickPadding(8) 
    .tickFormat(RU.timeFormat("%B")); 

locale.timeFormat()d3.time.format()에 해당합니다. 이 경우 locale은 앞서 만든 변수 RU입니다.

다음은 업데이트 JSFiddle입니다.

지역화 된 문자열이나 값을 원할 때마다 명시 적으로 호출해야합니다. localed3.locale()로 만든 현지화 개체입니다 d3.time.format()의 장소에 대신에 locale.numberFormat()locale.timeFormat()를 사용합니다. 희망이 도움이됩니다.

+0

그 파일과 같은 로컬 데이터를 포함하는 파일을 사용하고 https://app.timersolutions.com/js/d3/src/locale/를로드하는 방법은 무엇입니까? –