]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Language updates #293
authorTim Wood <washwithcare@gmail.com>
Wed, 25 Jul 2012 16:45:16 +0000 (09:45 -0700)
committerTim Wood <washwithcare@gmail.com>
Wed, 25 Jul 2012 16:45:16 +0000 (09:45 -0700)
lang/en-ca.js
lang/fr-ca.js
lang/ja.js [new file with mode: 0644]
lang/jp.js
lang/ko.js [new file with mode: 0644]
lang/kr.js
lang/pt-br.js
test/lang/ja.js [new file with mode: 0644]
test/lang/ko.js [new file with mode: 0644]
test/lang/pt-br.js

index 4600b27e4a802722c02406416d58bcbe42b5a9db..efa6d034546eabd37537c9246fde3ade68bd22e4 100644 (file)
@@ -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("_"),
index 9de57eeedf0d4eddaf205878e6ec7c859c97098c..062fd0f87c10379294d6b99cf0b7002a97d99747 100644 (file)
@@ -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 (file)
index 0000000..0a83027
--- /dev/null
@@ -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);
+    }
+}());
index e30f599887ad8bf35d5923dfcaf7a9a534fcd4fc..53a85e547c62759670fb020230f4a958bff49206 100644 (file)
@@ -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 (file)
index 0000000..74fcefe
--- /dev/null
@@ -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);
+    }
+}());
index 48343d6a4f5d2bcb20d2bd51ee28d8e42aeae587..5b932e2c7c9cf5d0602248058da03e3d0c32f217 100644 (file)
@@ -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 : {
index 60338c7500e0384d9c3900bbfb9ada451dd971d4..c83d4acc268a56de070e5e932f686c30718536d7 100644 (file)
@@ -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 (file)
index 0000000..0705ae7
--- /dev/null
@@ -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 (file)
index 0000000..8e55ca4
--- /dev/null
@@ -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();
+    }
+};
index 07113d3afa120b4216daadabaa0abd2607fed4b8..2a5fc15efc75ffd7dfd898f379ff0abc03d74b34 100644 (file)
@@ -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();
     },