Тот, который подсчитывает число между двумя датами
function (start, end) {
return (end.getMonth() - start.getMonth()) / 3 + (end.getFullYear() - start.getFullYear()) * 3;
},
, это тот, который сообщает dc.js, сколько баров планировать и, следовательно, насколько они должны быть широкими.
Я не проверял ваш код, поэтому могут быть другие проблемы, но в этом году четыре квартала, поэтому последнее число должно быть 4.
Надлежащий путь состоит в том, чтобы посмотреть на заголовок Принимать-языка HTTP, отправленный на сервер. Это содержит заказанный, взвешенный список языков, которые пользователь настроил их браузер для предпочтения.
К сожалению, этот заголовок не доступен для чтения в JavaScript; все, что Вы получаете, navigator.language
, который говорит Вам, какая локализованная версия веб-браузера была установлена. Это - не обязательно то же самое как предпочтительный язык (языки) пользователя. На IE Вы вместо этого добираетесь systemLanguage
(ОС установила язык), browserLanguage
(то же как language
) и userLanguage
(пользователь настроил регион ОС), которые все столь же бесполезны.
Если бы я должен был выбрать между теми свойствами, то я осуществил бы сниффинг для userLanguage
во-первых, отступание к language
и только после этого (если они не соответствовали никакому доступному языку), смотрящий на browserLanguage
и наконец systemLanguage
.
Если можно поместить сценарий серверной стороны где-то в другом месте на сеть, которая просто читает заголовок Принимать-языка и слюну, это отступает как файл JavaScript со значением заголовка в строке, например:
var acceptLanguage= 'en-gb,en;q=0.7,de;q=0.3';
затем Вы могли включать <сценарий src> указывающий на тот внешний сервис в HTML и использовать JavaScript для парсинга заголовка языка. Я не знаю ни о каком существующем коде библиотеки, чтобы сделать это, тем не менее, так как принимать-синтаксический-анализ-естественных-языков почти всегда делается на стороне сервера.
Независимо от того, что Вы заканчиваете тем, что делали, Вам, конечно, нужно пользовательское переопределение, потому что оно будет всегда не угадывать для некоторых людей. Часто является самым легким поместить установку языка в URL (например, http ://www.example.com/en/site по сравнению с http ://www.example.com/de/site) и позволить пользователю нажать на ссылки между двумя. Иногда Вы действительно хотите единственный URL для обеих языковых версий, в этом случае необходимо сохранить установку в cookie, но это может перепутать агенты пользователя без поддержки cookie и поисковых систем.
Эта статья предлагает следующие свойства объекта навигатора браузера:
Прокрутите их в функцию JavaScript, и необходимо смочь предположить правильный язык при большинстве обстоятельств. Обязательно ухудшитесь корректно, поэтому имейте отделение, содержащее Ваши ссылки выбора языка, так, чтобы, если нет никакого JavaScript, или метод не работает, пользователь может все еще решить. Если это действительно работает, просто скрывает отделение.
Единственная проблема с выполнением этого на стороне клиента состоит в том, что или Вы подаете все языки клиенту, или необходимо ожидать, пока сценарий не выполнил и не обнаружил язык прежде, чем запросить правильную версию. Возможно, подавая самую популярную языковую версию, поскольку значение по умолчанию раздражало бы наименьшее количество людей.
Править: Я был бы предложение cookie второго Ivan, но удостоверьтесь, что пользователь может всегда изменить язык позже; не все предпочитают язык их значения по умолчанию браузера.