Skip to content

Loading…

New language - Hebrew #472

Merged
merged 3 commits into from

4 participants

@moshest

he.js file

@rockymeza

Hi @DevelopmentIL, thanks for contributing!

Could you please add tests for this and also open the pull request against the develop branch? Here is an example of the tests https://github.com/timrwood/moment/blob/master/test/lang/en.js. You can copy and change it for Hebrew.

Thanks!

@ichernev

@DevelopmentIL, there is another hebrew translation #435 that is slightly different than yours -- the short month/weekday names are different and some other minor differences. Can you please get together or something and decide how the final translation should look like.

Also everything in moment has tests, so please copy the English ones and translate them, it shouldn't take long.

I can help you rebasing your commits on top of the develop branch if that is a problem for you -- just commit them in your repo ;-)

@moshest

Tomer's suggestions is better.
I will update my commit and add some tests in a few days...

@moshest

How can I run the tests locally?
node tests/lang/he?

@timrwood
Moment.js member

You can run the tests by doing grunt test.

You may also need to install grunt and all the npm modules. npm install grunt -g, then npm install from within the moment folder.

@moshest

Thanks.

Updated and tested with: nodeunit, everything's OK.
You can marge my repo with yours...

@timrwood
Moment.js member

Great, thanks for contributing!

@timrwood timrwood merged commit 81dc67b into moment:master

1 check passed

Details default The Travis build passed
@timrwood timrwood referenced this pull request
Closed

Hebrew translation #435

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Oct 25, 2012
  1. @moshest

    hebrew language

    moshest committed
Commits on Oct 30, 2012
  1. @moshest

    new translate with tests

    moshest committed
  2. @moshest

    new translate with tests

    moshest committed
Showing with 305 additions and 0 deletions.
  1. +55 −0 lang/he.js
  2. +250 −0 test/lang/he.js
View
55 lang/he.js
@@ -0,0 +1,55 @@
+// moment.js language configuration
+// language : Hebrew (he)
+// author : Tomer Cohen : https://github.com/tomer
+// author : Moshe Simantov : https://github.com/DevelopmentIL
+(function () {
+ var lang = {
+ months : "ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),
+ monthsShort : "ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),
+ weekdays : "ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),
+ weekdaysShort : "א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),
+ weekdaysMin : "א_ב_ג_ד_ה_ו_ש".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD/MM/YYYY",
+ LL : "D [ב]MMMM YYYY",
+ LLL : "D [ב]MMMM YYYY LT",
+ LLLL : "dddd, D [ב]MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay : '[היום ב־]LT',
+ nextDay : '[מחר ב־]LT',
+ nextWeek : 'dddd [בשעה] LT',
+ lastDay : '[אתמול ב־]LT',
+ lastWeek : '[ביום] dddd [האחרון בשעה] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "בעוד %s",
+ past : "לפני %s",
+ s : "מספר שניות",
+ m : "דקה",
+ mm : "%d דקות",
+ h : "שעה",
+ hh : "%d שעות",
+ d : "יום",
+ dd : "%d ימים",
+ M : "חודש",
+ MM : "%d חודשים",
+ y : "שנה",
+ yy : "%d שנים"
+ },
+ ordinal : function (number) {
+ return ''; // Function is not required for the Hebrew language.
+ }
+ };
+
+ // Node
+ if (typeof module !== 'undefined' && module.exports) {
+ module.exports = lang;
+ }
+ // Browser
+ if (typeof window !== 'undefined' && this.moment && this.moment.lang) {
+ this.moment.lang('he', lang);
+ }
+}());
View
250 test/lang/he.js
@@ -0,0 +1,250 @@
+var moment = require("../../moment");
+
+
+ /**************************************************
+ Hebrew
+ *************************************************/
+
+exports["lang:he"] = {
+ "parse" : function(test) {
+ test.expect(96);
+ moment.lang('he');
+ var tests = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.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('he');
+ var a = [
+ ['dddd, MMMM Do YYYY, h:mm:ss a', 'ראשון, פברואר 14 2010, 3:25:50 pm'],
+ ['ddd, hA', 'א׳, 3PM'],
+ ['M Mo MM MMMM MMM', '2 2 02 פברואר פבר׳'],
+ ['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', 'pm PM'],
+ ['t\\he DDDo \\d\\ay of t\\he ye\\ar', 'the 45 day of the year'],
+ ['L', '14/02/2010'],
+ ['LL', '14 בפברואר 2010'],
+ ['LLL', '14 בפברואר 2010 15:25'],
+ ['LLLL', 'ראשון, 14 בפברואר 2010 15: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) {
+ // no need on hebrew
+
+// test.expect(31);
+// moment.lang('en');
+// test.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st');
+// test.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd');
+// test.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd');
+// test.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th');
+// test.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th');
+// test.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th');
+// test.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th');
+// test.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th');
+// test.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th');
+// test.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th');
+
+// test.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th');
+// test.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th');
+// test.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th');
+// test.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th');
+// test.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th');
+// test.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th');
+// test.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th');
+// test.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th');
+// test.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th');
+// test.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th');
+
+// test.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st');
+// test.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd');
+// test.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd');
+// test.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th');
+// test.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th');
+// test.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th');
+// test.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th');
+// test.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th');
+// test.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th');
+// test.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th');
+
+// test.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st');
+ test.done();
+ },
+
+ "format month" : function(test) {
+ test.expect(12);
+ moment.lang('he');
+ var expected = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.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('he');
+ 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('he');
+ 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), "דקה", "45 seconds = a minute");
+ test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "דקה", "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), "שעה", "45 minutes = an hour");
+ test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "שעה", "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), "יום", "22 hours = a day");
+ test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "יום", "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 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), "חודש", "26 days = a month");
+ test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "חודש", "30 days = a month");
+ test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "חודש", "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 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), "שנה", "345 days = a year");
+ test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "שנה", "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 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('he');
+ 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('he');
+ test.equal(moment().fromNow(), "לפני מספר שניות", "now from now should display as in the past");
+ test.done();
+ },
+
+ "fromNow" : function(test) {
+ test.expect(2);
+ moment.lang('he');
+ 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('he');
+
+ var a = moment().hours(2).minutes(0).seconds(0);
+
+ test.equal(moment(a).calendar(), "היום ב־02:00", "today at the same time");
+ test.equal(moment(a).add({ m: 25 }).calendar(), "היום ב־02:25", "Now plus 25 min");
+ test.equal(moment(a).add({ h: 1 }).calendar(), "היום ב־03:00", "Now plus 1 hour");
+ test.equal(moment(a).add({ d: 1 }).calendar(), "מחר ב־02:00", "tomorrow at the same time");
+ test.equal(moment(a).subtract({ h: 1 }).calendar(), "היום ב־01:00", "Now minus 1 hour");
+ test.equal(moment(a).subtract({ d: 1 }).calendar(), "אתמול ב־02:00", "yesterday at the same time");
+ test.done();
+ },
+
+ "calendar next week" : function(test) {
+ test.expect(15);
+ moment.lang('he');
+
+ 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('he');
+
+ 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('he');
+ 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();
+ }
+};
Something went wrong with that request. Please try again.