From 7d797e073b56b11ca784e9db6687073e5ec7f813 Mon Sep 17 00:00:00 2001 From: Arie Bovenberg Date: Sun, 9 Sep 2018 19:09:07 +0200 Subject: [PATCH 1/2] add NL locale --- pendulum/locales/nl/__init__.py | 0 pendulum/locales/nl/custom.py | 26 ++++ pendulum/locales/nl/locale.py | 215 ++++++++++++++++++++++++++++++++ tests/localization/test_nl.py | 83 ++++++++++++ 4 files changed, 324 insertions(+) create mode 100644 pendulum/locales/nl/__init__.py create mode 100644 pendulum/locales/nl/custom.py create mode 100644 pendulum/locales/nl/locale.py create mode 100644 tests/localization/test_nl.py diff --git a/pendulum/locales/nl/__init__.py b/pendulum/locales/nl/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pendulum/locales/nl/custom.py b/pendulum/locales/nl/custom.py new file mode 100644 index 00000000..e50c74db --- /dev/null +++ b/pendulum/locales/nl/custom.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +""" +nl custom locale file. +""" + +translations = { + "units": {"few_second": "enkele seconden"}, + # Relative time + "ago": "{} geleden", + "from_now": "over {}", + "after": "{0} later", + "before": "{0} eerder", + # Ordinals + "ordinal": {"other": "e"}, + # Date formats + "date_formats": { + 'L': 'DD-MM-YYYY', + 'LL': 'D MMMM YYYY', + 'LLL': 'D MMMM YYYY HH:mm', + 'LLLL': 'dddd D MMMM YYYY HH:mm', + 'LT': 'HH:mm', + 'LTS': 'HH:mm:ss', + }, +} diff --git a/pendulum/locales/nl/locale.py b/pendulum/locales/nl/locale.py new file mode 100644 index 00000000..9a8d6e59 --- /dev/null +++ b/pendulum/locales/nl/locale.py @@ -0,0 +1,215 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals +""" +nl locale file. + +It has been generated automatically and must not be modified directly. +""" + +from .custom import translations as custom_translations + + +locale = { + 'plural': lambda n: 'one' if ((n == n and ((n == 1))) and (0 == 0 and ((0 == 0)))) else 'other', + 'ordinal': lambda n: 'other', + 'translations': { + 'days': { + 'abbreviated': { + 0: 'zo', + 1: 'ma', + 2: 'di', + 3: 'wo', + 4: 'do', + 5: 'vr', + 6: 'za', + }, + 'narrow': { + 0: 'Z', + 1: 'M', + 2: 'D', + 3: 'W', + 4: 'D', + 5: 'V', + 6: 'Z', + }, + 'short': { + 0: 'zo', + 1: 'ma', + 2: 'di', + 3: 'wo', + 4: 'do', + 5: 'vr', + 6: 'za', + }, + 'wide': { + 0: 'zondag', + 1: 'maandag', + 2: 'dinsdag', + 3: 'woensdag', + 4: 'donderdag', + 5: 'vrijdag', + 6: 'zaterdag', + }, + }, + 'months': { + 'abbreviated': { + 1: 'jan.', + 2: 'feb.', + 3: 'mrt.', + 4: 'apr.', + 5: 'mei', + 6: 'jun.', + 7: 'jul.', + 8: 'aug.', + 9: 'sep.', + 10: 'okt.', + 11: 'nov.', + 12: 'dec.', + }, + 'narrow': { + 1: 'J', + 2: 'F', + 3: 'M', + 4: 'A', + 5: 'M', + 6: 'J', + 7: 'J', + 8: 'A', + 9: 'S', + 10: 'O', + 11: 'N', + 12: 'D', + }, + 'wide': { + 1: 'januari', + 2: 'februari', + 3: 'maart', + 4: 'april', + 5: 'mei', + 6: 'juni', + 7: 'juli', + 8: 'augustus', + 9: 'september', + 10: 'oktober', + 11: 'november', + 12: 'december', + }, + }, + 'units': { + 'year': { + 'one': '{0} jaar', + 'other': '{0} jaar', + }, + 'month': { + 'one': '{0} maand', + 'other': '{0} maanden', + }, + 'week': { + 'one': '{0} week', + 'other': '{0} weken', + }, + 'day': { + 'one': '{0} dag', + 'other': '{0} dagen', + }, + 'hour': { + 'one': '{0} uur', + 'other': '{0} uur', + }, + 'minute': { + 'one': '{0} minuut', + 'other': '{0} minuten', + }, + 'second': { + 'one': '{0} seconde', + 'other': '{0} seconden', + }, + 'microsecond': { + 'one': '{0} microseconde', + 'other': '{0} microseconden', + }, + }, + 'relative': { + 'year': { + 'future': { + 'other': 'over {0} jaar', + 'one': 'over {0} jaar', + }, + 'past': { + 'other': '{0} jaar geleden', + 'one': '{0} jaar geleden', + }, + }, + 'month': { + 'future': { + 'other': 'over {0} maanden', + 'one': 'over {0} maand', + }, + 'past': { + 'other': '{0} maanden geleden', + 'one': '{0} maand geleden', + }, + }, + 'week': { + 'future': { + 'other': 'over {0} weken', + 'one': 'over {0} week', + }, + 'past': { + 'other': '{0} weken geleden', + 'one': '{0} week geleden', + }, + }, + 'day': { + 'future': { + 'other': 'over {0} dagen', + 'one': 'over {0} dag', + }, + 'past': { + 'other': '{0} dagen geleden', + 'one': '{0} dag geleden', + }, + }, + 'hour': { + 'future': { + 'other': 'over {0} uur', + 'one': 'over {0} uur', + }, + 'past': { + 'other': '{0} uur geleden', + 'one': '{0} uur geleden', + }, + }, + 'minute': { + 'future': { + 'other': 'over {0} minuten', + 'one': 'over {0} minuut', + }, + 'past': { + 'other': '{0} minuten geleden', + 'one': '{0} minuut geleden', + }, + }, + 'second': { + 'future': { + 'other': 'over {0} seconden', + 'one': 'over {0} seconde', + }, + 'past': { + 'other': '{0} seconden geleden', + 'one': '{0} seconde geleden', + }, + }, + }, + 'day_periods': { + 'midnight': 'middernacht', + 'am': 'a.m.', + 'pm': 'p.m.', + 'morning1': '‘s ochtends', + 'afternoon1': '‘s middags', + 'evening1': '‘s avonds', + 'night1': '‘s nachts', + }, + }, + 'custom': custom_translations +} diff --git a/tests/localization/test_nl.py b/tests/localization/test_nl.py new file mode 100644 index 00000000..62801a63 --- /dev/null +++ b/tests/localization/test_nl.py @@ -0,0 +1,83 @@ + +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +import pendulum + +locale = "nl" + + +def test_diff_for_humans(): + with pendulum.test(pendulum.datetime(2016, 8, 29)): + diff_for_humans() + + +def diff_for_humans(): + d = pendulum.now().subtract(seconds=1) + assert d.diff_for_humans(locale=locale) == "enkele seconden geleden" + + d = pendulum.now().subtract(seconds=2) + assert d.diff_for_humans(locale=locale) == "enkele seconden geleden" + + d = pendulum.now().subtract(seconds=22) + assert d.diff_for_humans(locale=locale) == "22 seconden geleden" + + d = pendulum.now().subtract(minutes=1) + assert d.diff_for_humans(locale=locale) == "1 minuut geleden" + + d = pendulum.now().subtract(minutes=2) + assert d.diff_for_humans(locale=locale) == "2 minuten geleden" + + d = pendulum.now().subtract(hours=1) + assert d.diff_for_humans(locale=locale) == "1 uur geleden" + + d = pendulum.now().subtract(hours=2) + assert d.diff_for_humans(locale=locale) == "2 uur geleden" + + d = pendulum.now().subtract(days=1) + assert d.diff_for_humans(locale=locale) == "1 dag geleden" + + d = pendulum.now().subtract(days=2) + assert d.diff_for_humans(locale=locale) == "2 dagen geleden" + + d = pendulum.now().subtract(weeks=1) + assert d.diff_for_humans(locale=locale) == "1 week geleden" + + d = pendulum.now().subtract(weeks=2) + assert d.diff_for_humans(locale=locale) == "2 weken geleden" + + d = pendulum.now().subtract(months=1) + assert d.diff_for_humans(locale=locale) == "1 maand geleden" + + d = pendulum.now().subtract(months=2) + assert d.diff_for_humans(locale=locale) == "2 maanden geleden" + + d = pendulum.now().subtract(years=1) + assert d.diff_for_humans(locale=locale) == "1 jaar geleden" + + d = pendulum.now().subtract(years=2) + assert d.diff_for_humans(locale=locale) == "2 jaar geleden" + + d = pendulum.now().add(seconds=1) + assert d.diff_for_humans(locale=locale) == "over enkele seconden" + + d = pendulum.now().add(weeks=1) + assert d.diff_for_humans(locale=locale) == "over 1 week" + + d = pendulum.now().add(seconds=1) + d2 = pendulum.now() + assert d.diff_for_humans(d2, locale=locale) == "enkele seconden later" + assert d2.diff_for_humans(d, locale=locale) == "enkele seconden eerder" + + assert d.diff_for_humans(d2, True, locale=locale) == "enkele seconden" + assert d2.diff_for_humans(d.add(seconds=1), True, locale=locale) == "enkele seconden" + + +def test_format(): + d = pendulum.datetime(2016, 8, 28, 7, 3, 6, 123456) + assert d.format("dddd", locale=locale) == "zondag" + assert d.format("ddd", locale=locale) == "zo" + assert d.format("MMMM", locale=locale) == "augustus" + assert d.format("MMM", locale=locale) == "aug." + assert d.format("A", locale=locale) == "a.m." + assert d.format("Do", locale=locale) == "28e" From 626962b9935dd10ba4c188c5dd17f183312b21a1 Mon Sep 17 00:00:00 2001 From: Arie Bovenberg Date: Sun, 9 Sep 2018 19:16:28 +0200 Subject: [PATCH 2/2] apply "black" code style --- pendulum/locales/nl/custom.py | 12 +- pendulum/locales/nl/locale.py | 295 +++++++++++++--------------------- tests/localization/test_nl.py | 4 +- 3 files changed, 117 insertions(+), 194 deletions(-) diff --git a/pendulum/locales/nl/custom.py b/pendulum/locales/nl/custom.py index e50c74db..e1123728 100644 --- a/pendulum/locales/nl/custom.py +++ b/pendulum/locales/nl/custom.py @@ -16,11 +16,11 @@ "ordinal": {"other": "e"}, # Date formats "date_formats": { - 'L': 'DD-MM-YYYY', - 'LL': 'D MMMM YYYY', - 'LLL': 'D MMMM YYYY HH:mm', - 'LLLL': 'dddd D MMMM YYYY HH:mm', - 'LT': 'HH:mm', - 'LTS': 'HH:mm:ss', + "L": "DD-MM-YYYY", + "LL": "D MMMM YYYY", + "LLL": "D MMMM YYYY HH:mm", + "LLLL": "dddd D MMMM YYYY HH:mm", + "LT": "HH:mm", + "LTS": "HH:mm:ss", }, } diff --git a/pendulum/locales/nl/locale.py b/pendulum/locales/nl/locale.py index 9a8d6e59..d0a6324a 100644 --- a/pendulum/locales/nl/locale.py +++ b/pendulum/locales/nl/locale.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals + """ nl locale file. @@ -10,206 +11,126 @@ locale = { - 'plural': lambda n: 'one' if ((n == n and ((n == 1))) and (0 == 0 and ((0 == 0)))) else 'other', - 'ordinal': lambda n: 'other', - 'translations': { - 'days': { - 'abbreviated': { - 0: 'zo', - 1: 'ma', - 2: 'di', - 3: 'wo', - 4: 'do', - 5: 'vr', - 6: 'za', - }, - 'narrow': { - 0: 'Z', - 1: 'M', - 2: 'D', - 3: 'W', - 4: 'D', - 5: 'V', - 6: 'Z', - }, - 'short': { - 0: 'zo', - 1: 'ma', - 2: 'di', - 3: 'wo', - 4: 'do', - 5: 'vr', - 6: 'za', - }, - 'wide': { - 0: 'zondag', - 1: 'maandag', - 2: 'dinsdag', - 3: 'woensdag', - 4: 'donderdag', - 5: 'vrijdag', - 6: 'zaterdag', + "plural": lambda n: "one" + if ((n == n and ((n == 1))) and (0 == 0 and ((0 == 0)))) + else "other", + "ordinal": lambda n: "other", + "translations": { + "days": { + "abbreviated": { + 0: "zo", + 1: "ma", + 2: "di", + 3: "wo", + 4: "do", + 5: "vr", + 6: "za", + }, + "narrow": {0: "Z", 1: "M", 2: "D", 3: "W", 4: "D", 5: "V", 6: "Z"}, + "short": {0: "zo", 1: "ma", 2: "di", 3: "wo", 4: "do", 5: "vr", 6: "za"}, + "wide": { + 0: "zondag", + 1: "maandag", + 2: "dinsdag", + 3: "woensdag", + 4: "donderdag", + 5: "vrijdag", + 6: "zaterdag", }, }, - 'months': { - 'abbreviated': { - 1: 'jan.', - 2: 'feb.', - 3: 'mrt.', - 4: 'apr.', - 5: 'mei', - 6: 'jun.', - 7: 'jul.', - 8: 'aug.', - 9: 'sep.', - 10: 'okt.', - 11: 'nov.', - 12: 'dec.', - }, - 'narrow': { - 1: 'J', - 2: 'F', - 3: 'M', - 4: 'A', - 5: 'M', - 6: 'J', - 7: 'J', - 8: 'A', - 9: 'S', - 10: 'O', - 11: 'N', - 12: 'D', - }, - 'wide': { - 1: 'januari', - 2: 'februari', - 3: 'maart', - 4: 'april', - 5: 'mei', - 6: 'juni', - 7: 'juli', - 8: 'augustus', - 9: 'september', - 10: 'oktober', - 11: 'november', - 12: 'december', + "months": { + "abbreviated": { + 1: "jan.", + 2: "feb.", + 3: "mrt.", + 4: "apr.", + 5: "mei", + 6: "jun.", + 7: "jul.", + 8: "aug.", + 9: "sep.", + 10: "okt.", + 11: "nov.", + 12: "dec.", + }, + "narrow": { + 1: "J", + 2: "F", + 3: "M", + 4: "A", + 5: "M", + 6: "J", + 7: "J", + 8: "A", + 9: "S", + 10: "O", + 11: "N", + 12: "D", + }, + "wide": { + 1: "januari", + 2: "februari", + 3: "maart", + 4: "april", + 5: "mei", + 6: "juni", + 7: "juli", + 8: "augustus", + 9: "september", + 10: "oktober", + 11: "november", + 12: "december", }, }, - 'units': { - 'year': { - 'one': '{0} jaar', - 'other': '{0} jaar', - }, - 'month': { - 'one': '{0} maand', - 'other': '{0} maanden', - }, - 'week': { - 'one': '{0} week', - 'other': '{0} weken', - }, - 'day': { - 'one': '{0} dag', - 'other': '{0} dagen', - }, - 'hour': { - 'one': '{0} uur', - 'other': '{0} uur', - }, - 'minute': { - 'one': '{0} minuut', - 'other': '{0} minuten', - }, - 'second': { - 'one': '{0} seconde', - 'other': '{0} seconden', - }, - 'microsecond': { - 'one': '{0} microseconde', - 'other': '{0} microseconden', - }, + "units": { + "year": {"one": "{0} jaar", "other": "{0} jaar"}, + "month": {"one": "{0} maand", "other": "{0} maanden"}, + "week": {"one": "{0} week", "other": "{0} weken"}, + "day": {"one": "{0} dag", "other": "{0} dagen"}, + "hour": {"one": "{0} uur", "other": "{0} uur"}, + "minute": {"one": "{0} minuut", "other": "{0} minuten"}, + "second": {"one": "{0} seconde", "other": "{0} seconden"}, + "microsecond": {"one": "{0} microseconde", "other": "{0} microseconden"}, }, - 'relative': { - 'year': { - 'future': { - 'other': 'over {0} jaar', - 'one': 'over {0} jaar', - }, - 'past': { - 'other': '{0} jaar geleden', - 'one': '{0} jaar geleden', - }, + "relative": { + "year": { + "future": {"other": "over {0} jaar", "one": "over {0} jaar"}, + "past": {"other": "{0} jaar geleden", "one": "{0} jaar geleden"}, }, - 'month': { - 'future': { - 'other': 'over {0} maanden', - 'one': 'over {0} maand', - }, - 'past': { - 'other': '{0} maanden geleden', - 'one': '{0} maand geleden', - }, + "month": { + "future": {"other": "over {0} maanden", "one": "over {0} maand"}, + "past": {"other": "{0} maanden geleden", "one": "{0} maand geleden"}, }, - 'week': { - 'future': { - 'other': 'over {0} weken', - 'one': 'over {0} week', - }, - 'past': { - 'other': '{0} weken geleden', - 'one': '{0} week geleden', - }, + "week": { + "future": {"other": "over {0} weken", "one": "over {0} week"}, + "past": {"other": "{0} weken geleden", "one": "{0} week geleden"}, }, - 'day': { - 'future': { - 'other': 'over {0} dagen', - 'one': 'over {0} dag', - }, - 'past': { - 'other': '{0} dagen geleden', - 'one': '{0} dag geleden', - }, + "day": { + "future": {"other": "over {0} dagen", "one": "over {0} dag"}, + "past": {"other": "{0} dagen geleden", "one": "{0} dag geleden"}, }, - 'hour': { - 'future': { - 'other': 'over {0} uur', - 'one': 'over {0} uur', - }, - 'past': { - 'other': '{0} uur geleden', - 'one': '{0} uur geleden', - }, + "hour": { + "future": {"other": "over {0} uur", "one": "over {0} uur"}, + "past": {"other": "{0} uur geleden", "one": "{0} uur geleden"}, }, - 'minute': { - 'future': { - 'other': 'over {0} minuten', - 'one': 'over {0} minuut', - }, - 'past': { - 'other': '{0} minuten geleden', - 'one': '{0} minuut geleden', - }, + "minute": { + "future": {"other": "over {0} minuten", "one": "over {0} minuut"}, + "past": {"other": "{0} minuten geleden", "one": "{0} minuut geleden"}, }, - 'second': { - 'future': { - 'other': 'over {0} seconden', - 'one': 'over {0} seconde', - }, - 'past': { - 'other': '{0} seconden geleden', - 'one': '{0} seconde geleden', - }, + "second": { + "future": {"other": "over {0} seconden", "one": "over {0} seconde"}, + "past": {"other": "{0} seconden geleden", "one": "{0} seconde geleden"}, }, }, - 'day_periods': { - 'midnight': 'middernacht', - 'am': 'a.m.', - 'pm': 'p.m.', - 'morning1': '‘s ochtends', - 'afternoon1': '‘s middags', - 'evening1': '‘s avonds', - 'night1': '‘s nachts', + "day_periods": { + "midnight": "middernacht", + "am": "a.m.", + "pm": "p.m.", + "morning1": "‘s ochtends", + "afternoon1": "‘s middags", + "evening1": "‘s avonds", + "night1": "‘s nachts", }, }, - 'custom': custom_translations + "custom": custom_translations, } diff --git a/tests/localization/test_nl.py b/tests/localization/test_nl.py index 62801a63..5e92b2a1 100644 --- a/tests/localization/test_nl.py +++ b/tests/localization/test_nl.py @@ -70,7 +70,9 @@ def diff_for_humans(): assert d2.diff_for_humans(d, locale=locale) == "enkele seconden eerder" assert d.diff_for_humans(d2, True, locale=locale) == "enkele seconden" - assert d2.diff_for_humans(d.add(seconds=1), True, locale=locale) == "enkele seconden" + assert ( + d2.diff_for_humans(d.add(seconds=1), True, locale=locale) == "enkele seconden" + ) def test_format():