From: Tim Wood Date: Wed, 25 Jul 2012 16:45:16 +0000 (-0700) Subject: Language updates #293 X-Git-Tag: 1.7.0~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=65db92e168bf63eae372070d933666928088b2e7;p=thirdparty%2Fmoment.git Language updates #293 --- diff --git a/lang/en-ca.js b/lang/en-ca.js index 4600b27e4..efa6d0345 100644 --- a/lang/en-ca.js +++ b/lang/en-ca.js @@ -1,6 +1,6 @@ // moment.js language configuration -// language : great britain english (en-gb) -// author : Chris Gedrim : https://github.com/chrisgedrim +// language : canadian english (en-ca) +// author : Jonathan Abourbih : https://github.com/jonbca (function () { var lang = { months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), diff --git a/lang/fr-ca.js b/lang/fr-ca.js index 9de57eeed..062fd0f87 100644 --- a/lang/fr-ca.js +++ b/lang/fr-ca.js @@ -1,6 +1,6 @@ // moment.js language configuration -// language : french (fr) -// author : John Fischer : https://github.com/jfroffice +// language : canadian french (fr-ca) +// author : Jonathan Abourbih : https://github.com/jonbca (function () { var lang = { months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), diff --git a/lang/ja.js b/lang/ja.js new file mode 100644 index 000000000..0a8302768 --- /dev/null +++ b/lang/ja.js @@ -0,0 +1,61 @@ +// moment.js language configuration +// language : japanese (ja) +// author : LI Long : https://github.com/baryon +(function () { + var lang = { + months : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), + monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), + weekdays : "日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"), + weekdaysShort : "日_月_火_水_木_金_土".split("_"), + weekdaysMin : "日_月_火_水_木_金_土".split("_"), + longDateFormat : { + LT : "Ah時m分", + L : "YYYY/MM/DD", + LL : "YYYY年M月D日", + LLL : "YYYY年M月D日LT", + LLLL : "YYYY年M月D日LT dddd" + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return "午前"; + } else { + return "午後"; + } + }, + calendar : { + sameDay : '[今日] LT', + nextDay : '[明日] LT', + nextWeek : '[来週]dddd LT', + lastDay : '[昨日] LT', + lastWeek : '[前週]dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s後", + past : "%s前", + s : "数秒", + m : "1分", + mm : "%d分", + h : "1時間", + hh : "%d時間", + d : "1日", + dd : "%d日", + M : "1ヶ月", + MM : "%dヶ月", + y : "1年", + yy : "%d年" + }, + ordinal : function (number) { + return ''; + } + }; + + // Node + if (typeof module !== 'undefined' && module.exports) { + module.exports = lang; + } + // Browser + if (typeof window !== 'undefined' && this.moment && this.moment.lang) { + this.moment.lang('ja', lang); + } +}()); diff --git a/lang/jp.js b/lang/jp.js index e30f59988..53a85e547 100644 --- a/lang/jp.js +++ b/lang/jp.js @@ -1,6 +1,9 @@ // moment.js language configuration // language : japanese (jp) // author : LI Long : https://github.com/baryon + +// This language config was incorrectly named 'jp' instead of 'ja'. +// In version 2.0.0, this will be deprecated and you should use 'ja' instead. (function () { var lang = { months : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), @@ -46,7 +49,7 @@ yy : "%d年" }, ordinal : function (number) { - return ''; + return ''; } }; diff --git a/lang/ko.js b/lang/ko.js new file mode 100644 index 000000000..74fcefe6c --- /dev/null +++ b/lang/ko.js @@ -0,0 +1,58 @@ +// moment.js language configuration +// language : korean (ko) +// author : Kyungwook, Park : https://github.com/kyungw00k +(function () { + var lang = { + months : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), + monthsShort : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), + weekdays : "일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"), + weekdaysShort : "일_월_화_수_목_금_토".split("_"), + weekdaysMin : "일_월_화_수_목_금_토".split("_"), + longDateFormat : { + LT : "A h시 mm분", + L : "YYYY.MM.DD", + LL : "YYYY년 MMMM D일", + LLL : "YYYY년 MMMM D일 LT", + LLLL : "YYYY년 MMMM D일 dddd LT" + }, + meridiem : function (hour, minute, isUpper) { + return hour < 12 ? '오전' : '오후'; + }, + calendar : { + sameDay : '오늘 LT', + nextDay : '내일 LT', + nextWeek : 'dddd LT', + lastDay : '어제 LT', + lastWeek : '지난주 dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s 후", + past : "%s 전", + s : "몇초", + ss : "%d초", + m : "일분", + mm : "%d분", + h : "한시간", + hh : "%d시간", + d : "하루", + dd : "%d일", + M : "한달", + MM : "%d달", + y : "일년", + yy : "%d년" + }, + ordinal : function (number) { + return '일'; + } + }; + + // Node + if (typeof module !== 'undefined' && module.exports) { + module.exports = lang; + } + // Browser + if (typeof window !== 'undefined' && this.moment && this.moment.lang) { + this.moment.lang('ko', lang); + } +}()); diff --git a/lang/kr.js b/lang/kr.js index 48343d6a4..5b932e2c7 100644 --- a/lang/kr.js +++ b/lang/kr.js @@ -1,6 +1,9 @@ // moment.js language configuration // language : korean (kr) // author : Kyungwook, Park : https://github.com/kyungw00k + +// This language config was incorrectly named 'kr' instead of 'ko'. +// In version 2.0.0, this will be deprecated and you should use 'ko' instead. (function () { var lang = { months : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), @@ -15,7 +18,7 @@ LLL : "YYYY년 MMMM D일 LT", LLLL : "YYYY년 MMMM D일 dddd LT" }, - meridiem : function(hour, minute, isUpper) { + meridiem : function (hour, minute, isUpper) { return hour < 12 ? '오전' : '오후'; }, calendar : { diff --git a/lang/pt-br.js b/lang/pt-br.js index 60338c750..c83d4acc2 100644 --- a/lang/pt-br.js +++ b/lang/pt-br.js @@ -1,10 +1,14 @@ +// moment.js language configuration +// language : brazilian portuguese (pt-br) +// author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira (function () { var lang = { months : "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"), monthsShort : "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"), weekdays : "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"), weekdaysShort : "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"), - longDateFormat : { + weekdaysMin : "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"), + longDateFormat : { LT : "HH:mm", L : "DD/MM/YYYY", LL : "D \\de MMMM \\de YYYY", @@ -44,7 +48,7 @@ }; // Node - if (typeof module !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { module.exports = lang; } // Browser diff --git a/test/lang/ja.js b/test/lang/ja.js new file mode 100644 index 000000000..0705ae751 --- /dev/null +++ b/test/lang/ja.js @@ -0,0 +1,208 @@ +var moment = require("../../moment"); + + + /************************************************** + Japanese + *************************************************/ + +exports["lang:jp"] = { + "parse" : function(test) { + test.expect(96); + moment.lang('ja'); + var tests = '1月 1月_2月 2月_3月 3月_4月 4月_5月 5月_6月 6月_7月 7月_8月 8月_9月 9月_10月 10月_11月 11月_12月 12月'.split("_"); + var i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function(test) { + test.expect(18); + moment.lang('ja'); + var a = [ + ['dddd, MMMM Do YYYY, a h:mm:ss', '日曜日, 2月 14 2010, 午後 3:25:50'], + ['ddd, Ah', '日, 午後3'], + ['M Mo MM MMMM MMM', '2 2 02 2月 2月'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 日曜日 日 日'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', '午後 午後'], + ['t\\he DDDo \\d\\ay of t\\he ye\\ar', 'the 45 day of the year'], + ['L', '2010/02/14'], + ['LL', '2010年2月14日'], + ['LLL', '2010年2月14日午後3時25分'], + ['LLLL', '2010年2月14日午後3時25分 日曜日'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format month" : function(test) { + test.expect(12); + moment.lang('ja'); + var expected = '1月 1月_2月 2月_3月 3月_4月 4月_5月 5月_6月 6月_7月 7月_8月 8月_9月 9月_10月 10月_11月 11月_12月 12月'.split("_"); + var i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function(test) { + test.expect(7); + moment.lang('ja'); + var expected = '日曜日 日 日_月曜日 月 月_火曜日 火 火_水曜日 水 水_木曜日 木 木_金曜日 金 金_土曜日 土 土'.split("_"); + var i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function(test) { + test.expect(30); + moment.lang('ja'); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "数秒", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "1分", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "1分", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2分", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44分", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "1時間", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "1時間", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2時間", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5時間", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21時間", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "1日", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "1日", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2日", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "1日", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5日", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25日", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "1ヶ月", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "1ヶ月", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "1ヶ月", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2ヶ月", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2ヶ月", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3ヶ月", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "1ヶ月", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5ヶ月", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11ヶ月", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "1年", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "1年", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2年", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "1年", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5年", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function(test) { + test.expect(2); + moment.lang('ja'); + test.equal(moment(30000).from(0), "数秒後", "prefix"); + test.equal(moment(0).from(30000), "数秒前", "suffix"); + test.done(); + }, + + "now from now" : function(test) { + test.expect(1); + moment.lang('ja'); + test.equal(moment().fromNow(), "数秒前", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function(test) { + test.expect(2); + moment.lang('ja'); + test.equal(moment().add({s:30}).fromNow(), "数秒後", "in a few seconds"); + test.equal(moment().add({d:5}).fromNow(), "5日後", "in 5 days"); + test.done(); + }, + + "calendar day" : function(test) { + test.expect(6); + moment.lang('ja'); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "今日 午前2時0分", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "今日 午前2時25分", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "今日 午前3時0分", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "明日 午前2時0分", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "今日 午前1時0分", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "昨日 午前2時0分", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function(test) { + test.expect(15); + moment.lang('ja'); + + var i; + var m; + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('[来週]dddd LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[来週]dddd LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[来週]dddd LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function(test) { + test.expect(15); + moment.lang('ja'); + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[前週]dddd LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[前週]dddd LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[前週]dddd LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function(test) { + test.expect(4); + moment.lang('ja'); + var weeksAgo = moment().subtract({ w: 1 }); + var weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + } +}; diff --git a/test/lang/ko.js b/test/lang/ko.js new file mode 100644 index 000000000..8e55ca4dd --- /dev/null +++ b/test/lang/ko.js @@ -0,0 +1,247 @@ +var moment = require("../../moment"); + + + /************************************************** + Korean + *************************************************/ + +exports["lang:kr"] = { + "parse" : function(test) { + test.expect(96); + moment.lang('ko'); + var tests = '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split("_"); + var i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + "format" : function(test) { + test.expect(18); + moment.lang('ko'); + var a = [ + ['YYYY년 MMMM Do dddd a h:mm:ss', '2010년 2월 14일 일요일 오후 3:25:50'], + ['ddd A h', '일 오후 3'], + ['M Mo MM MMMM MMM', '2 2일 02 2월 2월'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14일 14'], + ['d do dddd ddd dd', '0 0일 일요일 일 일'], + ['DDD DDDo DDDD', '45 45일 045'], + ['w wo ww', '8 8일 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', '오후 오후'], + ['일년 중 DDDo째 되는 날', '일년 중 45일째 되는 날'], + ['L', '2010.02.14'], + ['LL', '2010년 2월 14일'], + ['LLL', '2010년 2월 14일 오후 3시 25분'], + ['LLLL', '2010년 2월 14일 일요일 오후 3시 25분'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function(test) { + test.expect(31); + moment.lang('ko'); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1일', '1일'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2일', '2일'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3일', '3일'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4일', '4일'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5일', '5일'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6일', '6일'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7일', '7일'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8일', '8일'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9일', '9일'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10일', '10일'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11일', '11일'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12일', '12일'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13일', '13일'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14일', '14일'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15일', '15일'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16일', '16일'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17일', '17일'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18일', '18일'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19일', '19일'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20일', '20일'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21일', '21일'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22일', '22일'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23일', '23일'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24일', '24일'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25일', '25일'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26일', '26일'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27일', '27일'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28일', '28일'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29일', '29일'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30일', '30일'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31일', '31일'); + test.done(); + }, + + "format month" : function(test) { + test.expect(12); + moment.lang('ko'); + var expected = '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split("_"); + var i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function(test) { + test.expect(7); + moment.lang('ko'); + var expected = '일요일 일 일_월요일 월 월_화요일 화 화_수요일 수 수_목요일 목 목_금요일 금 금_토요일 토 토'.split("_"); + var i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function(test) { + test.expect(30); + moment.lang('ko'); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "몇초", "44초 = 몇초"); + test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "일분", "45초 = 일분"); + test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "일분", "89초 = 일분"); + test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2분", "90초 = 2분"); + test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44분", "44분 = 44분"); + test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "한시간", "45분 = 한시간"); + test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "한시간", "89분 = 한시간"); + test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2시간", "90분 = 2시간"); + test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5시간", "5시간 = 5시간"); + test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21시간", "21시간 = 21시간"); + test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "하루", "22시간 = 하루"); + test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "하루", "35시간 = 하루"); + test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2일", "36시간 = 2일"); + test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "하루", "하루 = 하루"); + test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5일", "5일 = 5일"); + test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25일", "25일 = 25일"); + test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "한달", "26일 = 한달"); + test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "한달", "30일 = 한달"); + test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "한달", "45일 = 한달"); + test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2달", "46일 = 2달"); + test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2달", "75일 = 2달"); + test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3달", "76일 = 3달"); + test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "한달", "1달 = 한달"); + test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5달", "5달 = 5달"); + test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11달", "344일 = 11달"); + test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "일년", "345일 = 일년"); + test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "일년", "547일 = 일년"); + test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2년", "548일 = 2년"); + test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "일년", "일년 = 일년"); + test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5년", "5년 = 5년"); + test.done(); + }, + + "suffix" : function(test) { + test.expect(2); + moment.lang('ko'); + test.equal(moment(30000).from(0), "몇초 후", "prefix"); + test.equal(moment(0).from(30000), "몇초 전", "suffix"); + test.done(); + }, + + "now from now" : function(test) { + test.expect(1); + moment.lang('ko'); + test.equal(moment().fromNow(), "몇초 전", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function(test) { + test.expect(2); + moment.lang('ko'); + test.equal(moment().add({s:30}).fromNow(), "몇초 후", "in a few seconds"); + test.equal(moment().add({d:5}).fromNow(), "5일 후", "in 5 days"); + test.done(); + }, + + "calendar day" : function(test) { + test.expect(6); + moment.lang('ko'); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "오늘 오전 2시 00분", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "오늘 오전 2시 25분", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "오늘 오전 3시 00분", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "내일 오전 2시 00분", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "오늘 오전 1시 00분", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "어제 오전 2시 00분", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function(test) { + test.expect(15); + moment.lang('ko'); + + var i; + var m; + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function(test) { + test.expect(15); + moment.lang('ko'); + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('지난주 dddd LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('지난주 dddd LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('지난주 dddd LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function(test) { + test.expect(4); + moment.lang('ko'); + var weeksAgo = moment().subtract({ w: 1 }); + var weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + } +}; diff --git a/test/lang/pt-br.js b/test/lang/pt-br.js index 07113d3af..2a5fc15ef 100644 --- a/test/lang/pt-br.js +++ b/test/lang/pt-br.js @@ -105,7 +105,7 @@ exports["lang:pt-br"] = { var expected = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split("_"); var i; for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 0]).format('MMMM MMM'), expected[i], expected[i]); + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); } test.done(); },