summaryrefslogtreecommitdiffstats
path: root/src/pendulum/locales
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2023-12-17 14:32:20 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2023-12-17 14:32:20 +0000
commitdb51f7f103bbbd6c91c8f47d75b3482ef8939691 (patch)
treeab59b1147bd0cd39f31a48073cff236ede4ec1df /src/pendulum/locales
parentAdding upstream version 3.0.0~a1. (diff)
downloadpendulum-upstream.tar.xz
pendulum-upstream.zip
Adding upstream version 3.0.0.upstream/3.0.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/pendulum/locales')
-rw-r--r--src/pendulum/locales/__init__.py0
-rw-r--r--src/pendulum/locales/cs/__init__.py0
-rw-r--r--src/pendulum/locales/cs/custom.py25
-rw-r--r--src/pendulum/locales/cs/locale.py274
-rw-r--r--src/pendulum/locales/da/__init__.py0
-rw-r--r--src/pendulum/locales/da/custom.py20
-rw-r--r--src/pendulum/locales/da/locale.py155
-rw-r--r--src/pendulum/locales/de/__init__.py0
-rw-r--r--src/pendulum/locales/de/custom.py38
-rw-r--r--src/pendulum/locales/de/locale.py152
-rw-r--r--src/pendulum/locales/en/__init__.py0
-rw-r--r--src/pendulum/locales/en/custom.py25
-rw-r--r--src/pendulum/locales/en/locale.py158
-rw-r--r--src/pendulum/locales/en_gb/__init__.py0
-rw-r--r--src/pendulum/locales/en_gb/custom.py25
-rw-r--r--src/pendulum/locales/en_gb/locale.py240
-rw-r--r--src/pendulum/locales/en_us/__init__.py0
-rw-r--r--src/pendulum/locales/en_us/custom.py25
-rw-r--r--src/pendulum/locales/en_us/locale.py240
-rw-r--r--src/pendulum/locales/es/__init__.py0
-rw-r--r--src/pendulum/locales/es/custom.py25
-rw-r--r--src/pendulum/locales/es/locale.py149
-rw-r--r--src/pendulum/locales/fa/__init__.py0
-rw-r--r--src/pendulum/locales/fa/custom.py20
-rw-r--r--src/pendulum/locales/fa/locale.py143
-rw-r--r--src/pendulum/locales/fo/__init__.py0
-rw-r--r--src/pendulum/locales/fo/custom.py22
-rw-r--r--src/pendulum/locales/fo/locale.py140
-rw-r--r--src/pendulum/locales/fr/__init__.py0
-rw-r--r--src/pendulum/locales/fr/custom.py25
-rw-r--r--src/pendulum/locales/fr/locale.py141
-rw-r--r--src/pendulum/locales/he/__init__.py0
-rw-r--r--src/pendulum/locales/he/custom.py25
-rw-r--r--src/pendulum/locales/he/locale.py277
-rw-r--r--src/pendulum/locales/id/__init__.py0
-rw-r--r--src/pendulum/locales/id/custom.py21
-rw-r--r--src/pendulum/locales/id/locale.py149
-rw-r--r--src/pendulum/locales/it/__init__.py0
-rw-r--r--src/pendulum/locales/it/custom.py25
-rw-r--r--src/pendulum/locales/it/locale.py153
-rw-r--r--src/pendulum/locales/ja/__init__.py0
-rw-r--r--src/pendulum/locales/ja/custom.py23
-rw-r--r--src/pendulum/locales/ja/locale.py202
-rw-r--r--src/pendulum/locales/ko/__init__.py0
-rw-r--r--src/pendulum/locales/ko/custom.py20
-rw-r--r--src/pendulum/locales/ko/locale.py113
-rw-r--r--src/pendulum/locales/locale.py100
-rw-r--r--src/pendulum/locales/lt/__init__.py0
-rw-r--r--src/pendulum/locales/lt/custom.py120
-rw-r--r--src/pendulum/locales/lt/locale.py263
-rw-r--r--src/pendulum/locales/nb/__init__.py0
-rw-r--r--src/pendulum/locales/nb/custom.py22
-rw-r--r--src/pendulum/locales/nb/locale.py158
-rw-r--r--src/pendulum/locales/nl/__init__.py0
-rw-r--r--src/pendulum/locales/nl/custom.py25
-rw-r--r--src/pendulum/locales/nl/locale.py142
-rw-r--r--src/pendulum/locales/nn/__init__.py0
-rw-r--r--src/pendulum/locales/nn/custom.py22
-rw-r--r--src/pendulum/locales/nn/locale.py149
-rw-r--r--src/pendulum/locales/pl/__init__.py0
-rw-r--r--src/pendulum/locales/pl/custom.py23
-rw-r--r--src/pendulum/locales/pl/locale.py287
-rw-r--r--src/pendulum/locales/pt_br/__init__.py0
-rw-r--r--src/pendulum/locales/pt_br/custom.py20
-rw-r--r--src/pendulum/locales/pt_br/locale.py151
-rw-r--r--src/pendulum/locales/ru/__init__.py0
-rw-r--r--src/pendulum/locales/ru/custom.py22
-rw-r--r--src/pendulum/locales/ru/locale.py278
-rw-r--r--src/pendulum/locales/sk/__init__.py0
-rw-r--r--src/pendulum/locales/sk/custom.py22
-rw-r--r--src/pendulum/locales/sk/locale.py274
-rw-r--r--src/pendulum/locales/sv/__init__.py0
-rw-r--r--src/pendulum/locales/sv/custom.py22
-rw-r--r--src/pendulum/locales/sv/locale.py230
-rw-r--r--src/pendulum/locales/tr/__init__.py0
-rw-r--r--src/pendulum/locales/tr/custom.py24
-rw-r--r--src/pendulum/locales/tr/locale.py225
-rw-r--r--src/pendulum/locales/zh/__init__.py0
-rw-r--r--src/pendulum/locales/zh/custom.py20
-rw-r--r--src/pendulum/locales/zh/locale.py121
80 files changed, 5770 insertions, 0 deletions
diff --git a/src/pendulum/locales/__init__.py b/src/pendulum/locales/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/__init__.py
diff --git a/src/pendulum/locales/cs/__init__.py b/src/pendulum/locales/cs/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/cs/__init__.py
diff --git a/src/pendulum/locales/cs/custom.py b/src/pendulum/locales/cs/custom.py
new file mode 100644
index 0000000..c909f32
--- /dev/null
+++ b/src/pendulum/locales/cs/custom.py
@@ -0,0 +1,25 @@
+"""
+cs custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ "units": {"few_second": "pár vteřin"},
+ # Relative time
+ "ago": "{} zpět",
+ "from_now": "za {}",
+ "after": "{0} po",
+ "before": "{0} zpět",
+ # Ordinals
+ "ordinal": {"one": ".", "two": ".", "few": ".", "other": "."},
+ # Date formats
+ "date_formats": {
+ "LTS": "h:mm:ss",
+ "LT": "h:mm",
+ "L": "DD. M. YYYY",
+ "LL": "D. MMMM, YYYY",
+ "LLL": "D. MMMM, YYYY h:mm",
+ "LLLL": "dddd, D. MMMM, YYYY h:mm",
+ },
+}
diff --git a/src/pendulum/locales/cs/locale.py b/src/pendulum/locales/cs/locale.py
new file mode 100644
index 0000000..b44d0f7
--- /dev/null
+++ b/src/pendulum/locales/cs/locale.py
@@ -0,0 +1,274 @@
+from __future__ import annotations
+
+from pendulum.locales.cs.custom import translations as custom_translations
+
+
+"""
+cs locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "few"
+ if ((n == n and (n >= 2 and n <= 4)) and (0 == 0 and (0 == 0)))
+ else "many"
+ if (not (0 == 0 and (0 == 0)))
+ else "one"
+ if ((n == n and (n == 1)) and (0 == 0 and (0 == 0)))
+ else "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "po",
+ 1: "út",
+ 2: "st",
+ 3: "čt",
+ 4: "pá",
+ 5: "so",
+ 6: "ne",
+ },
+ "narrow": {
+ 0: "P",
+ 1: "Ú",
+ 2: "S",
+ 3: "Č",
+ 4: "P",
+ 5: "S",
+ 6: "N",
+ },
+ "short": {
+ 0: "po",
+ 1: "út",
+ 2: "st",
+ 3: "čt",
+ 4: "pá",
+ 5: "so",
+ 6: "ne",
+ },
+ "wide": {
+ 0: "pondělí",
+ 1: "úterý",
+ 2: "středa",
+ 3: "čtvrtek",
+ 4: "pátek",
+ 5: "sobota",
+ 6: "neděle",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "led",
+ 2: "úno",
+ 3: "bře",
+ 4: "dub",
+ 5: "kvě",
+ 6: "čvn",
+ 7: "čvc",
+ 8: "srp",
+ 9: "zář",
+ 10: "říj",
+ 11: "lis",
+ 12: "pro",
+ },
+ "narrow": {
+ 1: "1",
+ 2: "2",
+ 3: "3",
+ 4: "4",
+ 5: "5",
+ 6: "6",
+ 7: "7",
+ 8: "8",
+ 9: "9",
+ 10: "10",
+ 11: "11",
+ 12: "12",
+ },
+ "wide": {
+ 1: "ledna",
+ 2: "února",
+ 3: "března",
+ 4: "dubna",
+ 5: "května",
+ 6: "června",
+ 7: "července",
+ 8: "srpna",
+ 9: "září",
+ 10: "října",
+ 11: "listopadu",
+ 12: "prosince",
+ },
+ },
+ "units": {
+ "year": {
+ "one": "{0} rok",
+ "few": "{0} roky",
+ "many": "{0} roku",
+ "other": "{0} let",
+ },
+ "month": {
+ "one": "{0} měsíc",
+ "few": "{0} měsíce",
+ "many": "{0} měsíce",
+ "other": "{0} měsíců",
+ },
+ "week": {
+ "one": "{0} týden",
+ "few": "{0} týdny",
+ "many": "{0} týdne",
+ "other": "{0} týdnů",
+ },
+ "day": {
+ "one": "{0} den",
+ "few": "{0} dny",
+ "many": "{0} dne",
+ "other": "{0} dní",
+ },
+ "hour": {
+ "one": "{0} hodina",
+ "few": "{0} hodiny",
+ "many": "{0} hodiny",
+ "other": "{0} hodin",
+ },
+ "minute": {
+ "one": "{0} minuta",
+ "few": "{0} minuty",
+ "many": "{0} minuty",
+ "other": "{0} minut",
+ },
+ "second": {
+ "one": "{0} sekunda",
+ "few": "{0} sekundy",
+ "many": "{0} sekundy",
+ "other": "{0} sekund",
+ },
+ "microsecond": {
+ "one": "{0} mikrosekunda",
+ "few": "{0} mikrosekundy",
+ "many": "{0} mikrosekundy",
+ "other": "{0} mikrosekund",
+ },
+ },
+ "relative": {
+ "year": {
+ "future": {
+ "other": "za {0} let",
+ "one": "za {0} rok",
+ "few": "za {0} roky",
+ "many": "za {0} roku",
+ },
+ "past": {
+ "other": "před {0} lety",
+ "one": "před {0} rokem",
+ "few": "před {0} lety",
+ "many": "před {0} roku",
+ },
+ },
+ "month": {
+ "future": {
+ "other": "za {0} měsíců",
+ "one": "za {0} měsíc",
+ "few": "za {0} měsíce",
+ "many": "za {0} měsíce",
+ },
+ "past": {
+ "other": "před {0} měsíci",
+ "one": "před {0} měsícem",
+ "few": "před {0} měsíci",
+ "many": "před {0} měsíce",
+ },
+ },
+ "week": {
+ "future": {
+ "other": "za {0} týdnů",
+ "one": "za {0} týden",
+ "few": "za {0} týdny",
+ "many": "za {0} týdne",
+ },
+ "past": {
+ "other": "před {0} týdny",
+ "one": "před {0} týdnem",
+ "few": "před {0} týdny",
+ "many": "před {0} týdne",
+ },
+ },
+ "day": {
+ "future": {
+ "other": "za {0} dní",
+ "one": "za {0} den",
+ "few": "za {0} dny",
+ "many": "za {0} dne",
+ },
+ "past": {
+ "other": "před {0} dny",
+ "one": "před {0} dnem",
+ "few": "před {0} dny",
+ "many": "před {0} dne",
+ },
+ },
+ "hour": {
+ "future": {
+ "other": "za {0} hodin",
+ "one": "za {0} hodinu",
+ "few": "za {0} hodiny",
+ "many": "za {0} hodiny",
+ },
+ "past": {
+ "other": "před {0} hodinami",
+ "one": "před {0} hodinou",
+ "few": "před {0} hodinami",
+ "many": "před {0} hodiny",
+ },
+ },
+ "minute": {
+ "future": {
+ "other": "za {0} minut",
+ "one": "za {0} minutu",
+ "few": "za {0} minuty",
+ "many": "za {0} minuty",
+ },
+ "past": {
+ "other": "před {0} minutami",
+ "one": "před {0} minutou",
+ "few": "před {0} minutami",
+ "many": "před {0} minuty",
+ },
+ },
+ "second": {
+ "future": {
+ "other": "za {0} sekund",
+ "one": "za {0} sekundu",
+ "few": "za {0} sekundy",
+ "many": "za {0} sekundy",
+ },
+ "past": {
+ "other": "před {0} sekundami",
+ "one": "před {0} sekundou",
+ "few": "před {0} sekundami",
+ "many": "před {0} sekundy",
+ },
+ },
+ },
+ "day_periods": {
+ "midnight": "půlnoc",
+ "am": "dop.",
+ "noon": "poledne",
+ "pm": "odp.",
+ "morning1": "ráno",
+ "morning2": "dopoledne",
+ "afternoon1": "odpoledne",
+ "evening1": "večer",
+ "night1": "v noci",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/da/__init__.py b/src/pendulum/locales/da/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/da/__init__.py
diff --git a/src/pendulum/locales/da/custom.py b/src/pendulum/locales/da/custom.py
new file mode 100644
index 0000000..57e68f4
--- /dev/null
+++ b/src/pendulum/locales/da/custom.py
@@ -0,0 +1,20 @@
+"""
+da custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ # Relative time
+ "after": "{0} efter",
+ "before": "{0} før",
+ # Date formats
+ "date_formats": {
+ "LTS": "HH:mm:ss",
+ "LT": "HH:mm",
+ "LLLL": "dddd [d.] D. MMMM YYYY HH:mm",
+ "LLL": "D. MMMM YYYY HH:mm",
+ "LL": "D. MMMM YYYY",
+ "L": "DD/MM/YYYY",
+ },
+}
diff --git a/src/pendulum/locales/da/locale.py b/src/pendulum/locales/da/locale.py
new file mode 100644
index 0000000..2385de5
--- /dev/null
+++ b/src/pendulum/locales/da/locale.py
@@ -0,0 +1,155 @@
+from __future__ import annotations
+
+from pendulum.locales.da.custom import translations as custom_translations
+
+
+"""
+da locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "one"
+ if (
+ (n == n and (n == 1))
+ or ((not (0 == 0 and (0 == 0))) and (n == n and ((n == 0) or (n == 1))))
+ )
+ else "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "man.",
+ 1: "tir.",
+ 2: "ons.",
+ 3: "tor.",
+ 4: "fre.",
+ 5: "lør.",
+ 6: "søn.",
+ },
+ "narrow": {0: "M", 1: "T", 2: "O", 3: "T", 4: "F", 5: "L", 6: "S"},
+ "short": {0: "ma", 1: "ti", 2: "on", 3: "to", 4: "fr", 5: "lø", 6: "sø"},
+ "wide": {
+ 0: "mandag",
+ 1: "tirsdag",
+ 2: "onsdag",
+ 3: "torsdag",
+ 4: "fredag",
+ 5: "lørdag",
+ 6: "søndag",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "jan.",
+ 2: "feb.",
+ 3: "mar.",
+ 4: "apr.",
+ 5: "maj",
+ 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: "januar",
+ 2: "februar",
+ 3: "marts",
+ 4: "april",
+ 5: "maj",
+ 6: "juni",
+ 7: "juli",
+ 8: "august",
+ 9: "september",
+ 10: "oktober",
+ 11: "november",
+ 12: "december",
+ },
+ },
+ "units": {
+ "year": {"one": "{0} år", "other": "{0} år"},
+ "month": {"one": "{0} måned", "other": "{0} måneder"},
+ "week": {"one": "{0} uge", "other": "{0} uger"},
+ "day": {"one": "{0} dag", "other": "{0} dage"},
+ "hour": {"one": "{0} time", "other": "{0} timer"},
+ "minute": {"one": "{0} minut", "other": "{0} minutter"},
+ "second": {"one": "{0} sekund", "other": "{0} sekunder"},
+ "microsecond": {"one": "{0} mikrosekund", "other": "{0} mikrosekunder"},
+ },
+ "relative": {
+ "year": {
+ "future": {"other": "om {0} år", "one": "om {0} år"},
+ "past": {"other": "for {0} år siden", "one": "for {0} år siden"},
+ },
+ "month": {
+ "future": {"other": "om {0} måneder", "one": "om {0} måned"},
+ "past": {
+ "other": "for {0} måneder siden",
+ "one": "for {0} måned siden",
+ },
+ },
+ "week": {
+ "future": {"other": "om {0} uger", "one": "om {0} uge"},
+ "past": {"other": "for {0} uger siden", "one": "for {0} uge siden"},
+ },
+ "day": {
+ "future": {"other": "om {0} dage", "one": "om {0} dag"},
+ "past": {"other": "for {0} dage siden", "one": "for {0} dag siden"},
+ },
+ "hour": {
+ "future": {"other": "om {0} timer", "one": "om {0} time"},
+ "past": {"other": "for {0} timer siden", "one": "for {0} time siden"},
+ },
+ "minute": {
+ "future": {"other": "om {0} minutter", "one": "om {0} minut"},
+ "past": {
+ "other": "for {0} minutter siden",
+ "one": "for {0} minut siden",
+ },
+ },
+ "second": {
+ "future": {"other": "om {0} sekunder", "one": "om {0} sekund"},
+ "past": {
+ "other": "for {0} sekunder siden",
+ "one": "for {0} sekund siden",
+ },
+ },
+ },
+ "day_periods": {
+ "midnight": "midnat",
+ "am": "AM",
+ "pm": "PM",
+ "morning1": "om morgenen",
+ "morning2": "om formiddagen",
+ "afternoon1": "om eftermiddagen",
+ "evening1": "om aftenen",
+ "night1": "om natten",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/de/__init__.py b/src/pendulum/locales/de/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/de/__init__.py
diff --git a/src/pendulum/locales/de/custom.py b/src/pendulum/locales/de/custom.py
new file mode 100644
index 0000000..8ef06cc
--- /dev/null
+++ b/src/pendulum/locales/de/custom.py
@@ -0,0 +1,38 @@
+"""
+de custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ # Relative time
+ "after": "{0} später",
+ "before": "{0} zuvor",
+ "units_relative": {
+ "year": {
+ "future": {"one": "{0} Jahr", "other": "{0} Jahren"},
+ "past": {"one": "{0} Jahr", "other": "{0} Jahren"},
+ },
+ "month": {
+ "future": {"one": "{0} Monat", "other": "{0} Monaten"},
+ "past": {"one": "{0} Monat", "other": "{0} Monaten"},
+ },
+ "week": {
+ "future": {"one": "{0} Woche", "other": "{0} Wochen"},
+ "past": {"one": "{0} Woche", "other": "{0} Wochen"},
+ },
+ "day": {
+ "future": {"one": "{0} Tag", "other": "{0} Tagen"},
+ "past": {"one": "{0} Tag", "other": "{0} Tagen"},
+ },
+ },
+ # Date formats
+ "date_formats": {
+ "LTS": "HH:mm:ss",
+ "LT": "HH:mm",
+ "LLLL": "dddd, D. MMMM YYYY HH:mm",
+ "LLL": "D. MMMM YYYY HH:mm",
+ "LL": "D. MMMM YYYY",
+ "L": "DD.MM.YYYY",
+ },
+}
diff --git a/src/pendulum/locales/de/locale.py b/src/pendulum/locales/de/locale.py
new file mode 100644
index 0000000..7781c3f
--- /dev/null
+++ b/src/pendulum/locales/de/locale.py
@@ -0,0 +1,152 @@
+from __future__ import annotations
+
+from pendulum.locales.de.custom import translations as custom_translations
+
+
+"""
+de locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+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: "Mo.",
+ 1: "Di.",
+ 2: "Mi.",
+ 3: "Do.",
+ 4: "Fr.",
+ 5: "Sa.",
+ 6: "So.",
+ },
+ "narrow": {0: "M", 1: "D", 2: "M", 3: "D", 4: "F", 5: "S", 6: "S"},
+ "short": {
+ 0: "Mo.",
+ 1: "Di.",
+ 2: "Mi.",
+ 3: "Do.",
+ 4: "Fr.",
+ 5: "Sa.",
+ 6: "So.",
+ },
+ "wide": {
+ 0: "Montag",
+ 1: "Dienstag",
+ 2: "Mittwoch",
+ 3: "Donnerstag",
+ 4: "Freitag",
+ 5: "Samstag",
+ 6: "Sonntag",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "Jan.",
+ 2: "Feb.",
+ 3: "März",
+ 4: "Apr.",
+ 5: "Mai",
+ 6: "Juni",
+ 7: "Juli",
+ 8: "Aug.",
+ 9: "Sep.",
+ 10: "Okt.",
+ 11: "Nov.",
+ 12: "Dez.",
+ },
+ "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: "Januar",
+ 2: "Februar",
+ 3: "März",
+ 4: "April",
+ 5: "Mai",
+ 6: "Juni",
+ 7: "Juli",
+ 8: "August",
+ 9: "September",
+ 10: "Oktober",
+ 11: "November",
+ 12: "Dezember",
+ },
+ },
+ "units": {
+ "year": {"one": "{0} Jahr", "other": "{0} Jahre"},
+ "month": {"one": "{0} Monat", "other": "{0} Monate"},
+ "week": {"one": "{0} Woche", "other": "{0} Wochen"},
+ "day": {"one": "{0} Tag", "other": "{0} Tage"},
+ "hour": {"one": "{0} Stunde", "other": "{0} Stunden"},
+ "minute": {"one": "{0} Minute", "other": "{0} Minuten"},
+ "second": {"one": "{0} Sekunde", "other": "{0} Sekunden"},
+ "microsecond": {"one": "{0} Mikrosekunde", "other": "{0} Mikrosekunden"},
+ },
+ "relative": {
+ "year": {
+ "future": {"other": "in {0} Jahren", "one": "in {0} Jahr"},
+ "past": {"other": "vor {0} Jahren", "one": "vor {0} Jahr"},
+ },
+ "month": {
+ "future": {"other": "in {0} Monaten", "one": "in {0} Monat"},
+ "past": {"other": "vor {0} Monaten", "one": "vor {0} Monat"},
+ },
+ "week": {
+ "future": {"other": "in {0} Wochen", "one": "in {0} Woche"},
+ "past": {"other": "vor {0} Wochen", "one": "vor {0} Woche"},
+ },
+ "day": {
+ "future": {"other": "in {0} Tagen", "one": "in {0} Tag"},
+ "past": {"other": "vor {0} Tagen", "one": "vor {0} Tag"},
+ },
+ "hour": {
+ "future": {"other": "in {0} Stunden", "one": "in {0} Stunde"},
+ "past": {"other": "vor {0} Stunden", "one": "vor {0} Stunde"},
+ },
+ "minute": {
+ "future": {"other": "in {0} Minuten", "one": "in {0} Minute"},
+ "past": {"other": "vor {0} Minuten", "one": "vor {0} Minute"},
+ },
+ "second": {
+ "future": {"other": "in {0} Sekunden", "one": "in {0} Sekunde"},
+ "past": {"other": "vor {0} Sekunden", "one": "vor {0} Sekunde"},
+ },
+ },
+ "day_periods": {
+ "midnight": "Mitternacht",
+ "am": "vorm.",
+ "pm": "nachm.",
+ "morning1": "morgens",
+ "morning2": "vormittags",
+ "afternoon1": "mittags",
+ "afternoon2": "nachmittags",
+ "evening1": "abends",
+ "night1": "nachts",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/en/__init__.py b/src/pendulum/locales/en/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/en/__init__.py
diff --git a/src/pendulum/locales/en/custom.py b/src/pendulum/locales/en/custom.py
new file mode 100644
index 0000000..65cf467
--- /dev/null
+++ b/src/pendulum/locales/en/custom.py
@@ -0,0 +1,25 @@
+"""
+en custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ "units": {"few_second": "a few seconds"},
+ # Relative time
+ "ago": "{} ago",
+ "from_now": "in {}",
+ "after": "{0} after",
+ "before": "{0} before",
+ # Ordinals
+ "ordinal": {"one": "st", "two": "nd", "few": "rd", "other": "th"},
+ # Date formats
+ "date_formats": {
+ "LTS": "h:mm:ss A",
+ "LT": "h:mm A",
+ "L": "MM/DD/YYYY",
+ "LL": "MMMM D, YYYY",
+ "LLL": "MMMM D, YYYY h:mm A",
+ "LLLL": "dddd, MMMM D, YYYY h:mm A",
+ },
+}
diff --git a/src/pendulum/locales/en/locale.py b/src/pendulum/locales/en/locale.py
new file mode 100644
index 0000000..4f05c2f
--- /dev/null
+++ b/src/pendulum/locales/en/locale.py
@@ -0,0 +1,158 @@
+from __future__ import annotations
+
+from pendulum.locales.en.custom import translations as custom_translations
+
+
+"""
+en locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "one"
+ if ((n == n and (n == 1)) and (0 == 0 and (0 == 0)))
+ else "other",
+ "ordinal": lambda n: "few"
+ if (
+ ((n % 10) == (n % 10) and ((n % 10) == 3))
+ and (not ((n % 100) == (n % 100) and ((n % 100) == 13)))
+ )
+ else "one"
+ if (
+ ((n % 10) == (n % 10) and ((n % 10) == 1))
+ and (not ((n % 100) == (n % 100) and ((n % 100) == 11)))
+ )
+ else "two"
+ if (
+ ((n % 10) == (n % 10) and ((n % 10) == 2))
+ and (not ((n % 100) == (n % 100) and ((n % 100) == 12)))
+ )
+ else "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "Mon",
+ 1: "Tue",
+ 2: "Wed",
+ 3: "Thu",
+ 4: "Fri",
+ 5: "Sat",
+ 6: "Sun",
+ },
+ "narrow": {0: "M", 1: "T", 2: "W", 3: "T", 4: "F", 5: "S", 6: "S"},
+ "short": {0: "Mo", 1: "Tu", 2: "We", 3: "Th", 4: "Fr", 5: "Sa", 6: "Su"},
+ "wide": {
+ 0: "Monday",
+ 1: "Tuesday",
+ 2: "Wednesday",
+ 3: "Thursday",
+ 4: "Friday",
+ 5: "Saturday",
+ 6: "Sunday",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "Jan",
+ 2: "Feb",
+ 3: "Mar",
+ 4: "Apr",
+ 5: "May",
+ 6: "Jun",
+ 7: "Jul",
+ 8: "Aug",
+ 9: "Sep",
+ 10: "Oct",
+ 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: "January",
+ 2: "February",
+ 3: "March",
+ 4: "April",
+ 5: "May",
+ 6: "June",
+ 7: "July",
+ 8: "August",
+ 9: "September",
+ 10: "October",
+ 11: "November",
+ 12: "December",
+ },
+ },
+ "units": {
+ "year": {"one": "{0} year", "other": "{0} years"},
+ "month": {"one": "{0} month", "other": "{0} months"},
+ "week": {"one": "{0} week", "other": "{0} weeks"},
+ "day": {"one": "{0} day", "other": "{0} days"},
+ "hour": {"one": "{0} hour", "other": "{0} hours"},
+ "minute": {"one": "{0} minute", "other": "{0} minutes"},
+ "second": {"one": "{0} second", "other": "{0} seconds"},
+ "microsecond": {"one": "{0} microsecond", "other": "{0} microseconds"},
+ },
+ "relative": {
+ "year": {
+ "future": {"other": "in {0} years", "one": "in {0} year"},
+ "past": {"other": "{0} years ago", "one": "{0} year ago"},
+ },
+ "month": {
+ "future": {"other": "in {0} months", "one": "in {0} month"},
+ "past": {"other": "{0} months ago", "one": "{0} month ago"},
+ },
+ "week": {
+ "future": {"other": "in {0} weeks", "one": "in {0} week"},
+ "past": {"other": "{0} weeks ago", "one": "{0} week ago"},
+ },
+ "day": {
+ "future": {"other": "in {0} days", "one": "in {0} day"},
+ "past": {"other": "{0} days ago", "one": "{0} day ago"},
+ },
+ "hour": {
+ "future": {"other": "in {0} hours", "one": "in {0} hour"},
+ "past": {"other": "{0} hours ago", "one": "{0} hour ago"},
+ },
+ "minute": {
+ "future": {"other": "in {0} minutes", "one": "in {0} minute"},
+ "past": {"other": "{0} minutes ago", "one": "{0} minute ago"},
+ },
+ "second": {
+ "future": {"other": "in {0} seconds", "one": "in {0} second"},
+ "past": {"other": "{0} seconds ago", "one": "{0} second ago"},
+ },
+ },
+ "day_periods": {
+ "midnight": "midnight",
+ "am": "AM",
+ "noon": "noon",
+ "pm": "PM",
+ "morning1": "in the morning",
+ "afternoon1": "in the afternoon",
+ "evening1": "in the evening",
+ "night1": "at night",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 6,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/en_gb/__init__.py b/src/pendulum/locales/en_gb/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/en_gb/__init__.py
diff --git a/src/pendulum/locales/en_gb/custom.py b/src/pendulum/locales/en_gb/custom.py
new file mode 100644
index 0000000..2c77a69
--- /dev/null
+++ b/src/pendulum/locales/en_gb/custom.py
@@ -0,0 +1,25 @@
+"""
+en-gb custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ "units": {"few_second": "a few seconds"},
+ # Relative time
+ "ago": "{} ago",
+ "from_now": "in {}",
+ "after": "{0} after",
+ "before": "{0} before",
+ # Ordinals
+ "ordinal": {"one": "st", "two": "nd", "few": "rd", "other": "th"},
+ # Date formats
+ "date_formats": {
+ "LTS": "HH:mm:ss",
+ "LT": "HH:mm",
+ "L": "DD/MM/YYYY",
+ "LL": "D MMMM YYYY",
+ "LLL": "D MMMM YYYY HH:mm",
+ "LLLL": "dddd, D MMMM YYYY HH:mm",
+ },
+}
diff --git a/src/pendulum/locales/en_gb/locale.py b/src/pendulum/locales/en_gb/locale.py
new file mode 100644
index 0000000..c25f7d5
--- /dev/null
+++ b/src/pendulum/locales/en_gb/locale.py
@@ -0,0 +1,240 @@
+from __future__ import annotations
+
+from pendulum.locales.en_gb.custom import translations as custom_translations
+
+
+"""
+en-gb locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "one"
+ if ((n == n and (n == 1)) and (0 == 0 and (0 == 0)))
+ else "other",
+ "ordinal": lambda n: "few"
+ if (
+ ((n % 10) == (n % 10) and ((n % 10) == 3))
+ and (not ((n % 100) == (n % 100) and ((n % 100) == 13)))
+ )
+ else "one"
+ if (
+ ((n % 10) == (n % 10) and ((n % 10) == 1))
+ and (not ((n % 100) == (n % 100) and ((n % 100) == 11)))
+ )
+ else "two"
+ if (
+ ((n % 10) == (n % 10) and ((n % 10) == 2))
+ and (not ((n % 100) == (n % 100) and ((n % 100) == 12)))
+ )
+ else "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "Mon",
+ 1: "Tue",
+ 2: "Wed",
+ 3: "Thu",
+ 4: "Fri",
+ 5: "Sat",
+ 6: "Sun",
+ },
+ "narrow": {
+ 0: "M",
+ 1: "T",
+ 2: "W",
+ 3: "T",
+ 4: "F",
+ 5: "S",
+ 6: "S",
+ },
+ "short": {
+ 0: "Mo",
+ 1: "Tu",
+ 2: "We",
+ 3: "Th",
+ 4: "Fr",
+ 5: "Sa",
+ 6: "Su",
+ },
+ "wide": {
+ 0: "Monday",
+ 1: "Tuesday",
+ 2: "Wednesday",
+ 3: "Thursday",
+ 4: "Friday",
+ 5: "Saturday",
+ 6: "Sunday",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "Jan",
+ 2: "Feb",
+ 3: "Mar",
+ 4: "Apr",
+ 5: "May",
+ 6: "Jun",
+ 7: "Jul",
+ 8: "Aug",
+ 9: "Sept",
+ 10: "Oct",
+ 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: "January",
+ 2: "February",
+ 3: "March",
+ 4: "April",
+ 5: "May",
+ 6: "June",
+ 7: "July",
+ 8: "August",
+ 9: "September",
+ 10: "October",
+ 11: "November",
+ 12: "December",
+ },
+ },
+ "units": {
+ "year": {
+ "one": "{0} year",
+ "other": "{0} years",
+ },
+ "month": {
+ "one": "{0} month",
+ "other": "{0} months",
+ },
+ "week": {
+ "one": "{0} week",
+ "other": "{0} weeks",
+ },
+ "day": {
+ "one": "{0} day",
+ "other": "{0} days",
+ },
+ "hour": {
+ "one": "{0} hour",
+ "other": "{0} hours",
+ },
+ "minute": {
+ "one": "{0} minute",
+ "other": "{0} minutes",
+ },
+ "second": {
+ "one": "{0} second",
+ "other": "{0} seconds",
+ },
+ "microsecond": {
+ "one": "{0} microsecond",
+ "other": "{0} microseconds",
+ },
+ },
+ "relative": {
+ "year": {
+ "future": {
+ "other": "in {0} years",
+ "one": "in {0} year",
+ },
+ "past": {
+ "other": "{0} years ago",
+ "one": "{0} year ago",
+ },
+ },
+ "month": {
+ "future": {
+ "other": "in {0} months",
+ "one": "in {0} month",
+ },
+ "past": {
+ "other": "{0} months ago",
+ "one": "{0} month ago",
+ },
+ },
+ "week": {
+ "future": {
+ "other": "in {0} weeks",
+ "one": "in {0} week",
+ },
+ "past": {
+ "other": "{0} weeks ago",
+ "one": "{0} week ago",
+ },
+ },
+ "day": {
+ "future": {
+ "other": "in {0} days",
+ "one": "in {0} day",
+ },
+ "past": {
+ "other": "{0} days ago",
+ "one": "{0} day ago",
+ },
+ },
+ "hour": {
+ "future": {
+ "other": "in {0} hours",
+ "one": "in {0} hour",
+ },
+ "past": {
+ "other": "{0} hours ago",
+ "one": "{0} hour ago",
+ },
+ },
+ "minute": {
+ "future": {
+ "other": "in {0} minutes",
+ "one": "in {0} minute",
+ },
+ "past": {
+ "other": "{0} minutes ago",
+ "one": "{0} minute ago",
+ },
+ },
+ "second": {
+ "future": {
+ "other": "in {0} seconds",
+ "one": "in {0} second",
+ },
+ "past": {
+ "other": "{0} seconds ago",
+ "one": "{0} second ago",
+ },
+ },
+ },
+ "day_periods": {
+ "midnight": "midnight",
+ "am": "am",
+ "noon": "noon",
+ "pm": "pm",
+ "morning1": "in the morning",
+ "afternoon1": "in the afternoon",
+ "evening1": "in the evening",
+ "night1": "at night",
+ },
+ "week_data": {
+ "min_days": 4,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/en_us/__init__.py b/src/pendulum/locales/en_us/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/en_us/__init__.py
diff --git a/src/pendulum/locales/en_us/custom.py b/src/pendulum/locales/en_us/custom.py
new file mode 100644
index 0000000..72d2005
--- /dev/null
+++ b/src/pendulum/locales/en_us/custom.py
@@ -0,0 +1,25 @@
+"""
+en-us custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ "units": {"few_second": "a few seconds"},
+ # Relative time
+ "ago": "{} ago",
+ "from_now": "in {}",
+ "after": "{0} after",
+ "before": "{0} before",
+ # Ordinals
+ "ordinal": {"one": "st", "two": "nd", "few": "rd", "other": "th"},
+ # Date formats
+ "date_formats": {
+ "LTS": "h:mm:ss A",
+ "LT": "h:mm A",
+ "L": "MM/DD/YYYY",
+ "LL": "MMMM D, YYYY",
+ "LLL": "MMMM D, YYYY h:mm A",
+ "LLLL": "dddd, MMMM D, YYYY h:mm A",
+ },
+}
diff --git a/src/pendulum/locales/en_us/locale.py b/src/pendulum/locales/en_us/locale.py
new file mode 100644
index 0000000..7f40f3f
--- /dev/null
+++ b/src/pendulum/locales/en_us/locale.py
@@ -0,0 +1,240 @@
+from __future__ import annotations
+
+from pendulum.locales.en_us.custom import translations as custom_translations
+
+
+"""
+en-us locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "one"
+ if ((n == n and (n == 1)) and (0 == 0 and (0 == 0)))
+ else "other",
+ "ordinal": lambda n: "few"
+ if (
+ ((n % 10) == (n % 10) and ((n % 10) == 3))
+ and (not ((n % 100) == (n % 100) and ((n % 100) == 13)))
+ )
+ else "one"
+ if (
+ ((n % 10) == (n % 10) and ((n % 10) == 1))
+ and (not ((n % 100) == (n % 100) and ((n % 100) == 11)))
+ )
+ else "two"
+ if (
+ ((n % 10) == (n % 10) and ((n % 10) == 2))
+ and (not ((n % 100) == (n % 100) and ((n % 100) == 12)))
+ )
+ else "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "Mon",
+ 1: "Tue",
+ 2: "Wed",
+ 3: "Thu",
+ 4: "Fri",
+ 5: "Sat",
+ 6: "Sun",
+ },
+ "narrow": {
+ 0: "M",
+ 1: "T",
+ 2: "W",
+ 3: "T",
+ 4: "F",
+ 5: "S",
+ 6: "S",
+ },
+ "short": {
+ 0: "Mo",
+ 1: "Tu",
+ 2: "We",
+ 3: "Th",
+ 4: "Fr",
+ 5: "Sa",
+ 6: "Su",
+ },
+ "wide": {
+ 0: "Monday",
+ 1: "Tuesday",
+ 2: "Wednesday",
+ 3: "Thursday",
+ 4: "Friday",
+ 5: "Saturday",
+ 6: "Sunday",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "Jan",
+ 2: "Feb",
+ 3: "Mar",
+ 4: "Apr",
+ 5: "May",
+ 6: "Jun",
+ 7: "Jul",
+ 8: "Aug",
+ 9: "Sep",
+ 10: "Oct",
+ 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: "January",
+ 2: "February",
+ 3: "March",
+ 4: "April",
+ 5: "May",
+ 6: "June",
+ 7: "July",
+ 8: "August",
+ 9: "September",
+ 10: "October",
+ 11: "November",
+ 12: "December",
+ },
+ },
+ "units": {
+ "year": {
+ "one": "{0} year",
+ "other": "{0} years",
+ },
+ "month": {
+ "one": "{0} month",
+ "other": "{0} months",
+ },
+ "week": {
+ "one": "{0} week",
+ "other": "{0} weeks",
+ },
+ "day": {
+ "one": "{0} day",
+ "other": "{0} days",
+ },
+ "hour": {
+ "one": "{0} hour",
+ "other": "{0} hours",
+ },
+ "minute": {
+ "one": "{0} minute",
+ "other": "{0} minutes",
+ },
+ "second": {
+ "one": "{0} second",
+ "other": "{0} seconds",
+ },
+ "microsecond": {
+ "one": "{0} microsecond",
+ "other": "{0} microseconds",
+ },
+ },
+ "relative": {
+ "year": {
+ "future": {
+ "other": "in {0} years",
+ "one": "in {0} year",
+ },
+ "past": {
+ "other": "{0} years ago",
+ "one": "{0} year ago",
+ },
+ },
+ "month": {
+ "future": {
+ "other": "in {0} months",
+ "one": "in {0} month",
+ },
+ "past": {
+ "other": "{0} months ago",
+ "one": "{0} month ago",
+ },
+ },
+ "week": {
+ "future": {
+ "other": "in {0} weeks",
+ "one": "in {0} week",
+ },
+ "past": {
+ "other": "{0} weeks ago",
+ "one": "{0} week ago",
+ },
+ },
+ "day": {
+ "future": {
+ "other": "in {0} days",
+ "one": "in {0} day",
+ },
+ "past": {
+ "other": "{0} days ago",
+ "one": "{0} day ago",
+ },
+ },
+ "hour": {
+ "future": {
+ "other": "in {0} hours",
+ "one": "in {0} hour",
+ },
+ "past": {
+ "other": "{0} hours ago",
+ "one": "{0} hour ago",
+ },
+ },
+ "minute": {
+ "future": {
+ "other": "in {0} minutes",
+ "one": "in {0} minute",
+ },
+ "past": {
+ "other": "{0} minutes ago",
+ "one": "{0} minute ago",
+ },
+ },
+ "second": {
+ "future": {
+ "other": "in {0} seconds",
+ "one": "in {0} second",
+ },
+ "past": {
+ "other": "{0} seconds ago",
+ "one": "{0} second ago",
+ },
+ },
+ },
+ "day_periods": {
+ "midnight": "midnight",
+ "am": "AM",
+ "noon": "noon",
+ "pm": "PM",
+ "morning1": "in the morning",
+ "afternoon1": "in the afternoon",
+ "evening1": "in the evening",
+ "night1": "at night",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 6,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/es/__init__.py b/src/pendulum/locales/es/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/es/__init__.py
diff --git a/src/pendulum/locales/es/custom.py b/src/pendulum/locales/es/custom.py
new file mode 100644
index 0000000..4acb411
--- /dev/null
+++ b/src/pendulum/locales/es/custom.py
@@ -0,0 +1,25 @@
+"""
+es custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ "units": {"few_second": "unos segundos"},
+ # Relative time
+ "ago": "hace {0}",
+ "from_now": "dentro de {0}",
+ "after": "{0} después",
+ "before": "{0} antes",
+ # Ordinals
+ "ordinal": {"other": "º"},
+ # Date formats
+ "date_formats": {
+ "LTS": "H:mm:ss",
+ "LT": "H:mm",
+ "LLLL": "dddd, D [de] MMMM [de] YYYY H:mm",
+ "LLL": "D [de] MMMM [de] YYYY H:mm",
+ "LL": "D [de] MMMM [de] YYYY",
+ "L": "DD/MM/YYYY",
+ },
+}
diff --git a/src/pendulum/locales/es/locale.py b/src/pendulum/locales/es/locale.py
new file mode 100644
index 0000000..4ab2784
--- /dev/null
+++ b/src/pendulum/locales/es/locale.py
@@ -0,0 +1,149 @@
+from __future__ import annotations
+
+from pendulum.locales.es.custom import translations as custom_translations
+
+
+"""
+es locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "one" if (n == n and (n == 1)) else "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "lun.",
+ 1: "mar.",
+ 2: "mié.",
+ 3: "jue.",
+ 4: "vie.",
+ 5: "sáb.",
+ 6: "dom.",
+ },
+ "narrow": {0: "L", 1: "M", 2: "X", 3: "J", 4: "V", 5: "S", 6: "D"},
+ "short": {0: "LU", 1: "MA", 2: "MI", 3: "JU", 4: "VI", 5: "SA", 6: "DO"},
+ "wide": {
+ 0: "lunes",
+ 1: "martes",
+ 2: "miércoles",
+ 3: "jueves",
+ 4: "viernes",
+ 5: "sábado",
+ 6: "domingo",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "ene.",
+ 2: "feb.",
+ 3: "mar.",
+ 4: "abr.",
+ 5: "may.",
+ 6: "jun.",
+ 7: "jul.",
+ 8: "ago.",
+ 9: "sept.",
+ 10: "oct.",
+ 11: "nov.",
+ 12: "dic.",
+ },
+ "narrow": {
+ 1: "E",
+ 2: "F",
+ 3: "M",
+ 4: "A",
+ 5: "M",
+ 6: "J",
+ 7: "J",
+ 8: "A",
+ 9: "S",
+ 10: "O",
+ 11: "N",
+ 12: "D",
+ },
+ "wide": {
+ 1: "enero",
+ 2: "febrero",
+ 3: "marzo",
+ 4: "abril",
+ 5: "mayo",
+ 6: "junio",
+ 7: "julio",
+ 8: "agosto",
+ 9: "septiembre",
+ 10: "octubre",
+ 11: "noviembre",
+ 12: "diciembre",
+ },
+ },
+ "units": {
+ "year": {"one": "{0} año", "other": "{0} años"},
+ "month": {"one": "{0} mes", "other": "{0} meses"},
+ "week": {"one": "{0} semana", "other": "{0} semanas"},
+ "day": {"one": "{0} día", "other": "{0} días"},
+ "hour": {"one": "{0} hora", "other": "{0} horas"},
+ "minute": {"one": "{0} minuto", "other": "{0} minutos"},
+ "second": {"one": "{0} segundo", "other": "{0} segundos"},
+ "microsecond": {"one": "{0} microsegundo", "other": "{0} microsegundos"},
+ },
+ "relative": {
+ "year": {
+ "future": {"other": "dentro de {0} años", "one": "dentro de {0} año"},
+ "past": {"other": "hace {0} años", "one": "hace {0} año"},
+ },
+ "month": {
+ "future": {"other": "dentro de {0} meses", "one": "dentro de {0} mes"},
+ "past": {"other": "hace {0} meses", "one": "hace {0} mes"},
+ },
+ "week": {
+ "future": {
+ "other": "dentro de {0} semanas",
+ "one": "dentro de {0} semana",
+ },
+ "past": {"other": "hace {0} semanas", "one": "hace {0} semana"},
+ },
+ "day": {
+ "future": {"other": "dentro de {0} días", "one": "dentro de {0} día"},
+ "past": {"other": "hace {0} días", "one": "hace {0} día"},
+ },
+ "hour": {
+ "future": {"other": "dentro de {0} horas", "one": "dentro de {0} hora"},
+ "past": {"other": "hace {0} horas", "one": "hace {0} hora"},
+ },
+ "minute": {
+ "future": {
+ "other": "dentro de {0} minutos",
+ "one": "dentro de {0} minuto",
+ },
+ "past": {"other": "hace {0} minutos", "one": "hace {0} minuto"},
+ },
+ "second": {
+ "future": {
+ "other": "dentro de {0} segundos",
+ "one": "dentro de {0} segundo",
+ },
+ "past": {"other": "hace {0} segundos", "one": "hace {0} segundo"},
+ },
+ },
+ "day_periods": {
+ "am": "a. m.",
+ "noon": "del mediodía",
+ "pm": "p. m.",
+ "morning1": "de la madrugada",
+ "morning2": "de la mañana",
+ "evening1": "de la tarde",
+ "night1": "de la noche",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/fa/__init__.py b/src/pendulum/locales/fa/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/fa/__init__.py
diff --git a/src/pendulum/locales/fa/custom.py b/src/pendulum/locales/fa/custom.py
new file mode 100644
index 0000000..e4b4a60
--- /dev/null
+++ b/src/pendulum/locales/fa/custom.py
@@ -0,0 +1,20 @@
+"""
+fa custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ # Relative time
+ "after": "{0} پس از",
+ "before": "{0} پیش از",
+ # Date formats
+ "date_formats": {
+ "LTS": "HH:mm:ss",
+ "LT": "HH:mm",
+ "LLLL": "dddd, D MMMM YYYY HH:mm",
+ "LLL": "D MMMM YYYY HH:mm",
+ "LL": "D MMMM YYYY",
+ "L": "DD/MM/YYYY",
+ },
+}
diff --git a/src/pendulum/locales/fa/locale.py b/src/pendulum/locales/fa/locale.py
new file mode 100644
index 0000000..1c3f6c5
--- /dev/null
+++ b/src/pendulum/locales/fa/locale.py
@@ -0,0 +1,143 @@
+from __future__ import annotations
+
+from pendulum.locales.fa.custom import translations as custom_translations
+
+
+"""
+fa locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "one"
+ if ((n == n and (n == 0)) or (n == n and (n == 1)))
+ else "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "دوشنبه",
+ 1: "سه\u200cشنبه",
+ 2: "چهارشنبه",
+ 3: "پنجشنبه",
+ 4: "جمعه",
+ 5: "شنبه",
+ 6: "یکشنبه",
+ },
+ "narrow": {0: "د", 1: "س", 2: "چ", 3: "پ", 4: "ج", 5: "ش", 6: "ی"},
+ "short": {0: "۲ش", 1: "۳ش", 2: "۴ش", 3: "۵ش", 4: "ج", 5: "ش", 6: "۱ش"},
+ "wide": {
+ 0: "دوشنبه",
+ 1: "سه\u200cشنبه",
+ 2: "چهارشنبه",
+ 3: "پنجشنبه",
+ 4: "جمعه",
+ 5: "شنبه",
+ 6: "یکشنبه",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "ژانویهٔ",
+ 2: "فوریهٔ",
+ 3: "مارس",
+ 4: "آوریل",
+ 5: "مهٔ",
+ 6: "ژوئن",
+ 7: "ژوئیهٔ",
+ 8: "اوت",
+ 9: "سپتامبر",
+ 10: "اکتبر",
+ 11: "نوامبر",
+ 12: "دسامبر",
+ },
+ "narrow": {
+ 1: "ژ",
+ 2: "ف",
+ 3: "م",
+ 4: "آ",
+ 5: "م",
+ 6: "ژ",
+ 7: "ژ",
+ 8: "ا",
+ 9: "س",
+ 10: "ا",
+ 11: "ن",
+ 12: "د",
+ },
+ "wide": {
+ 1: "ژانویهٔ",
+ 2: "فوریهٔ",
+ 3: "مارس",
+ 4: "آوریل",
+ 5: "مهٔ",
+ 6: "ژوئن",
+ 7: "ژوئیهٔ",
+ 8: "اوت",
+ 9: "سپتامبر",
+ 10: "اکتبر",
+ 11: "نوامبر",
+ 12: "دسامبر",
+ },
+ },
+ "units": {
+ "year": {"one": "{0} سال", "other": "{0} سال"},
+ "month": {"one": "{0} ماه", "other": "{0} ماه"},
+ "week": {"one": "{0} هفته", "other": "{0} هفته"},
+ "day": {"one": "{0} روز", "other": "{0} روز"},
+ "hour": {"one": "{0} ساعت", "other": "{0} ساعت"},
+ "minute": {"one": "{0} دقیقه", "other": "{0} دقیقه"},
+ "second": {"one": "{0} ثانیه", "other": "{0} ثانیه"},
+ "microsecond": {"one": "{0} میکروثانیه", "other": "{0} میکروثانیه"},
+ },
+ "relative": {
+ "year": {
+ "future": {"other": "{0} سال بعد", "one": "{0} سال بعد"},
+ "past": {"other": "{0} سال پیش", "one": "{0} سال پیش"},
+ },
+ "month": {
+ "future": {"other": "{0} ماه بعد", "one": "{0} ماه بعد"},
+ "past": {"other": "{0} ماه پیش", "one": "{0} ماه پیش"},
+ },
+ "week": {
+ "future": {"other": "{0} هفته بعد", "one": "{0} هفته بعد"},
+ "past": {"other": "{0} هفته پیش", "one": "{0} هفته پیش"},
+ },
+ "day": {
+ "future": {"other": "{0} روز بعد", "one": "{0} روز بعد"},
+ "past": {"other": "{0} روز پیش", "one": "{0} روز پیش"},
+ },
+ "hour": {
+ "future": {"other": "{0} ساعت بعد", "one": "{0} ساعت بعد"},
+ "past": {"other": "{0} ساعت پیش", "one": "{0} ساعت پیش"},
+ },
+ "minute": {
+ "future": {"other": "{0} دقیقه بعد", "one": "{0} دقیقه بعد"},
+ "past": {"other": "{0} دقیقه پیش", "one": "{0} دقیقه پیش"},
+ },
+ "second": {
+ "future": {"other": "{0} ثانیه بعد", "one": "{0} ثانیه بعد"},
+ "past": {"other": "{0} ثانیه پیش", "one": "{0} ثانیه پیش"},
+ },
+ },
+ "day_periods": {
+ "midnight": "نیمه\u200cشب",
+ "am": "قبل\u200cازظهر",
+ "noon": "ظهر",
+ "pm": "بعدازظهر",
+ "morning1": "صبح",
+ "afternoon1": "عصر",
+ "evening1": "عصر",
+ "night1": "شب",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/fo/__init__.py b/src/pendulum/locales/fo/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/fo/__init__.py
diff --git a/src/pendulum/locales/fo/custom.py b/src/pendulum/locales/fo/custom.py
new file mode 100644
index 0000000..3f0fd1c
--- /dev/null
+++ b/src/pendulum/locales/fo/custom.py
@@ -0,0 +1,22 @@
+"""
+fo custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ # Relative time
+ "after": "{0} aftaná",
+ "before": "{0} áðrenn",
+ # Ordinals
+ "ordinal": {"other": "."},
+ # Date formats
+ "date_formats": {
+ "LTS": "HH:mm:ss",
+ "LT": "HH:mm",
+ "LLLL": "dddd D. MMMM, YYYY HH:mm",
+ "LLL": "D MMMM YYYY HH:mm",
+ "LL": "D MMMM YYYY",
+ "L": "DD/MM/YYYY",
+ },
+}
diff --git a/src/pendulum/locales/fo/locale.py b/src/pendulum/locales/fo/locale.py
new file mode 100644
index 0000000..28ec0c0
--- /dev/null
+++ b/src/pendulum/locales/fo/locale.py
@@ -0,0 +1,140 @@
+from __future__ import annotations
+
+from pendulum.locales.fo.custom import translations as custom_translations
+
+
+"""
+fo locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "one" if (n == n and (n == 1)) else "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "mán.",
+ 1: "týs.",
+ 2: "mik.",
+ 3: "hós.",
+ 4: "frí.",
+ 5: "ley.",
+ 6: "sun.",
+ },
+ "narrow": {0: "M", 1: "T", 2: "M", 3: "H", 4: "F", 5: "L", 6: "S"},
+ "short": {
+ 0: "má.",
+ 1: "tý.",
+ 2: "mi.",
+ 3: "hó.",
+ 4: "fr.",
+ 5: "le.",
+ 6: "su.",
+ },
+ "wide": {
+ 0: "mánadagur",
+ 1: "týsdagur",
+ 2: "mikudagur",
+ 3: "hósdagur",
+ 4: "fríggjadagur",
+ 5: "leygardagur",
+ 6: "sunnudagur",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "jan.",
+ 2: "feb.",
+ 3: "mar.",
+ 4: "apr.",
+ 5: "mai",
+ 6: "jun.",
+ 7: "jul.",
+ 8: "aug.",
+ 9: "sep.",
+ 10: "okt.",
+ 11: "nov.",
+ 12: "des.",
+ },
+ "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: "januar",
+ 2: "februar",
+ 3: "mars",
+ 4: "apríl",
+ 5: "mai",
+ 6: "juni",
+ 7: "juli",
+ 8: "august",
+ 9: "september",
+ 10: "oktober",
+ 11: "november",
+ 12: "desember",
+ },
+ },
+ "units": {
+ "year": {"one": "{0} ár", "other": "{0} ár"},
+ "month": {"one": "{0} mánaður", "other": "{0} mánaðir"},
+ "week": {"one": "{0} vika", "other": "{0} vikur"},
+ "day": {"one": "{0} dagur", "other": "{0} dagar"},
+ "hour": {"one": "{0} tími", "other": "{0} tímar"},
+ "minute": {"one": "{0} minuttur", "other": "{0} minuttir"},
+ "second": {"one": "{0} sekund", "other": "{0} sekundir"},
+ "microsecond": {"one": "{0} mikrosekund", "other": "{0} mikrosekundir"},
+ },
+ "relative": {
+ "year": {
+ "future": {"other": "um {0} ár", "one": "um {0} ár"},
+ "past": {"other": "{0} ár síðan", "one": "{0} ár síðan"},
+ },
+ "month": {
+ "future": {"other": "um {0} mánaðir", "one": "um {0} mánað"},
+ "past": {"other": "{0} mánaðir síðan", "one": "{0} mánað síðan"},
+ },
+ "week": {
+ "future": {"other": "um {0} vikur", "one": "um {0} viku"},
+ "past": {"other": "{0} vikur síðan", "one": "{0} vika síðan"},
+ },
+ "day": {
+ "future": {"other": "um {0} dagar", "one": "um {0} dag"},
+ "past": {"other": "{0} dagar síðan", "one": "{0} dagur síðan"},
+ },
+ "hour": {
+ "future": {"other": "um {0} tímar", "one": "um {0} tíma"},
+ "past": {"other": "{0} tímar síðan", "one": "{0} tími síðan"},
+ },
+ "minute": {
+ "future": {"other": "um {0} minuttir", "one": "um {0} minutt"},
+ "past": {"other": "{0} minuttir síðan", "one": "{0} minutt síðan"},
+ },
+ "second": {
+ "future": {"other": "um {0} sekund", "one": "um {0} sekund"},
+ "past": {"other": "{0} sekund síðan", "one": "{0} sekund síðan"},
+ },
+ },
+ "day_periods": {"am": "AM", "pm": "PM"},
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/fr/__init__.py b/src/pendulum/locales/fr/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/fr/__init__.py
diff --git a/src/pendulum/locales/fr/custom.py b/src/pendulum/locales/fr/custom.py
new file mode 100644
index 0000000..913656c
--- /dev/null
+++ b/src/pendulum/locales/fr/custom.py
@@ -0,0 +1,25 @@
+"""
+fr custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ "units": {"few_second": "quelques secondes"},
+ # Relative Time
+ "ago": "il y a {0}",
+ "from_now": "dans {0}",
+ "after": "{0} après",
+ "before": "{0} avant",
+ # Ordinals
+ "ordinal": {"one": "er", "other": "e"},
+ # Date formats
+ "date_formats": {
+ "LTS": "HH:mm:ss",
+ "LT": "HH:mm",
+ "LLLL": "dddd D MMMM YYYY HH:mm",
+ "LLL": "D MMMM YYYY HH:mm",
+ "LL": "D MMMM YYYY",
+ "L": "DD/MM/YYYY",
+ },
+}
diff --git a/src/pendulum/locales/fr/locale.py b/src/pendulum/locales/fr/locale.py
new file mode 100644
index 0000000..30ee8cd
--- /dev/null
+++ b/src/pendulum/locales/fr/locale.py
@@ -0,0 +1,141 @@
+from __future__ import annotations
+
+from pendulum.locales.fr.custom import translations as custom_translations
+
+
+"""
+fr locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "one" if (n == n and ((n == 0) or (n == 1))) else "other",
+ "ordinal": lambda n: "one" if (n == n and (n == 1)) else "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "lun.",
+ 1: "mar.",
+ 2: "mer.",
+ 3: "jeu.",
+ 4: "ven.",
+ 5: "sam.",
+ 6: "dim.",
+ },
+ "narrow": {0: "L", 1: "M", 2: "M", 3: "J", 4: "V", 5: "S", 6: "D"},
+ "short": {0: "lu", 1: "ma", 2: "me", 3: "je", 4: "ve", 5: "sa", 6: "di"},
+ "wide": {
+ 0: "lundi",
+ 1: "mardi",
+ 2: "mercredi",
+ 3: "jeudi",
+ 4: "vendredi",
+ 5: "samedi",
+ 6: "dimanche",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "janv.",
+ 2: "févr.",
+ 3: "mars",
+ 4: "avr.",
+ 5: "mai",
+ 6: "juin",
+ 7: "juil.",
+ 8: "août",
+ 9: "sept.",
+ 10: "oct.",
+ 11: "nov.",
+ 12: "déc.",
+ },
+ "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: "janvier",
+ 2: "février",
+ 3: "mars",
+ 4: "avril",
+ 5: "mai",
+ 6: "juin",
+ 7: "juillet",
+ 8: "août",
+ 9: "septembre",
+ 10: "octobre",
+ 11: "novembre",
+ 12: "décembre",
+ },
+ },
+ "units": {
+ "year": {"one": "{0} an", "other": "{0} ans"},
+ "month": {"one": "{0} mois", "other": "{0} mois"},
+ "week": {"one": "{0} semaine", "other": "{0} semaines"},
+ "day": {"one": "{0} jour", "other": "{0} jours"},
+ "hour": {"one": "{0} heure", "other": "{0} heures"},
+ "minute": {"one": "{0} minute", "other": "{0} minutes"},
+ "second": {"one": "{0} seconde", "other": "{0} secondes"},
+ "microsecond": {"one": "{0} microseconde", "other": "{0} microsecondes"},
+ },
+ "relative": {
+ "year": {
+ "future": {"other": "dans {0} ans", "one": "dans {0} an"},
+ "past": {"other": "il y a {0} ans", "one": "il y a {0} an"},
+ },
+ "month": {
+ "future": {"other": "dans {0} mois", "one": "dans {0} mois"},
+ "past": {"other": "il y a {0} mois", "one": "il y a {0} mois"},
+ },
+ "week": {
+ "future": {"other": "dans {0} semaines", "one": "dans {0} semaine"},
+ "past": {"other": "il y a {0} semaines", "one": "il y a {0} semaine"},
+ },
+ "day": {
+ "future": {"other": "dans {0} jours", "one": "dans {0} jour"},
+ "past": {"other": "il y a {0} jours", "one": "il y a {0} jour"},
+ },
+ "hour": {
+ "future": {"other": "dans {0} heures", "one": "dans {0} heure"},
+ "past": {"other": "il y a {0} heures", "one": "il y a {0} heure"},
+ },
+ "minute": {
+ "future": {"other": "dans {0} minutes", "one": "dans {0} minute"},
+ "past": {"other": "il y a {0} minutes", "one": "il y a {0} minute"},
+ },
+ "second": {
+ "future": {"other": "dans {0} secondes", "one": "dans {0} seconde"},
+ "past": {"other": "il y a {0} secondes", "one": "il y a {0} seconde"},
+ },
+ },
+ "day_periods": {
+ "midnight": "minuit",
+ "am": "AM",
+ "noon": "midi",
+ "pm": "PM",
+ "morning1": "du matin",
+ "afternoon1": "de l’après-midi",
+ "evening1": "du soir",
+ "night1": "de nuit",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/he/__init__.py b/src/pendulum/locales/he/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/he/__init__.py
diff --git a/src/pendulum/locales/he/custom.py b/src/pendulum/locales/he/custom.py
new file mode 100644
index 0000000..c8e1f70
--- /dev/null
+++ b/src/pendulum/locales/he/custom.py
@@ -0,0 +1,25 @@
+"""
+he custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ "units": {"few_second": "כמה שניות"},
+ # Relative time
+ "ago": "לפני {0}",
+ "from_now": "תוך {0}",
+ "after": "בעוד {0}",
+ "before": "{0} קודם",
+ # Ordinals
+ "ordinal": {"other": "º"},
+ # Date formats
+ "date_formats": {
+ "LTS": "H:mm:ss",
+ "LT": "H:mm",
+ "LLLL": "dddd, D [ב] MMMM [ב] YYYY H:mm",
+ "LLL": "D [ב] MMMM [ב] YYYY H:mm",
+ "LL": "D [ב] MMMM [ב] YYYY",
+ "L": "DD/MM/YYYY",
+ },
+}
diff --git a/src/pendulum/locales/he/locale.py b/src/pendulum/locales/he/locale.py
new file mode 100644
index 0000000..42d55aa
--- /dev/null
+++ b/src/pendulum/locales/he/locale.py
@@ -0,0 +1,277 @@
+from __future__ import annotations
+
+from pendulum.locales.he.custom import translations as custom_translations
+
+
+"""
+he locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "many"
+ if (
+ ((0 == 0 and (0 == 0)) and (not (n == n and (n >= 0 and n <= 10))))
+ and ((n % 10) == (n % 10) and ((n % 10) == 0))
+ )
+ else "one"
+ if ((n == n and (n == 1)) and (0 == 0 and (0 == 0)))
+ else "two"
+ if ((n == n and (n == 2)) and (0 == 0 and (0 == 0)))
+ else "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "יום ב׳",
+ 1: "יום ג׳",
+ 2: "יום ד׳",
+ 3: "יום ה׳",
+ 4: "יום ו׳",
+ 5: "שבת",
+ 6: "יום א׳",
+ },
+ "narrow": {
+ 0: "ב׳",
+ 1: "ג׳",
+ 2: "ד׳",
+ 3: "ה׳",
+ 4: "ו׳",
+ 5: "ש׳",
+ 6: "א׳",
+ },
+ "short": {
+ 0: "ב׳",
+ 1: "ג׳",
+ 2: "ד׳",
+ 3: "ה׳",
+ 4: "ו׳",
+ 5: "ש׳",
+ 6: "א׳",
+ },
+ "wide": {
+ 0: "יום שני",
+ 1: "יום שלישי",
+ 2: "יום רביעי",
+ 3: "יום חמישי",
+ 4: "יום שישי",
+ 5: "יום שבת",
+ 6: "יום ראשון",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "ינו׳",
+ 2: "פבר׳",
+ 3: "מרץ",
+ 4: "אפר׳",
+ 5: "מאי",
+ 6: "יוני",
+ 7: "יולי",
+ 8: "אוג׳",
+ 9: "ספט׳",
+ 10: "אוק׳",
+ 11: "נוב׳",
+ 12: "דצמ׳",
+ },
+ "narrow": {
+ 1: "1",
+ 2: "2",
+ 3: "3",
+ 4: "4",
+ 5: "5",
+ 6: "6",
+ 7: "7",
+ 8: "8",
+ 9: "9",
+ 10: "10",
+ 11: "11",
+ 12: "12",
+ },
+ "wide": {
+ 1: "ינואר",
+ 2: "פברואר",
+ 3: "מרץ",
+ 4: "אפריל",
+ 5: "מאי",
+ 6: "יוני",
+ 7: "יולי",
+ 8: "אוגוסט",
+ 9: "ספטמבר",
+ 10: "אוקטובר",
+ 11: "נובמבר",
+ 12: "דצמבר",
+ },
+ },
+ "units": {
+ "year": {
+ "one": "שנה",
+ "two": "שנתיים",
+ "many": "{0} שנים",
+ "other": "{0} שנים",
+ },
+ "month": {
+ "one": "חודש",
+ "two": "חודשיים",
+ "many": "{0} חודשים",
+ "other": "{0} חודשים",
+ },
+ "week": {
+ "one": "שבוע",
+ "two": "שבועיים",
+ "many": "{0} שבועות",
+ "other": "{0} שבועות",
+ },
+ "day": {
+ "one": "יום {0}",
+ "two": "יומיים",
+ "many": "{0} יום",
+ "other": "{0} ימים",
+ },
+ "hour": {
+ "one": "שעה",
+ "two": "שעתיים",
+ "many": "{0} שעות",
+ "other": "{0} שעות",
+ },
+ "minute": {
+ "one": "דקה",
+ "two": "שתי דקות",
+ "many": "{0} דקות",
+ "other": "{0} דקות",
+ },
+ "second": {
+ "one": "שניה",
+ "two": "שתי שניות",
+ "many": "\u200f{0} שניות",
+ "other": "{0} שניות",
+ },
+ "microsecond": {
+ "one": "{0} מיליונית שנייה",
+ "two": "{0} מיליוניות שנייה",
+ "many": "{0} מיליוניות שנייה",
+ "other": "{0} מיליוניות שנייה",
+ },
+ },
+ "relative": {
+ "year": {
+ "future": {
+ "other": "בעוד {0} שנים",
+ "one": "בעוד שנה",
+ "two": "בעוד שנתיים",
+ "many": "בעוד {0} שנה",
+ },
+ "past": {
+ "other": "לפני {0} שנים",
+ "one": "לפני שנה",
+ "two": "לפני שנתיים",
+ "many": "לפני {0} שנה",
+ },
+ },
+ "month": {
+ "future": {
+ "other": "בעוד {0} חודשים",
+ "one": "בעוד חודש",
+ "two": "בעוד חודשיים",
+ "many": "בעוד {0} חודשים",
+ },
+ "past": {
+ "other": "לפני {0} חודשים",
+ "one": "לפני חודש",
+ "two": "לפני חודשיים",
+ "many": "לפני {0} חודשים",
+ },
+ },
+ "week": {
+ "future": {
+ "other": "בעוד {0} שבועות",
+ "one": "בעוד שבוע",
+ "two": "בעוד שבועיים",
+ "many": "בעוד {0} שבועות",
+ },
+ "past": {
+ "other": "לפני {0} שבועות",
+ "one": "לפני שבוע",
+ "two": "לפני שבועיים",
+ "many": "לפני {0} שבועות",
+ },
+ },
+ "day": {
+ "future": {
+ "other": "בעוד {0} ימים",
+ "one": "בעוד יום {0}",
+ "two": "בעוד יומיים",
+ "many": "בעוד {0} ימים",
+ },
+ "past": {
+ "other": "לפני {0} ימים",
+ "one": "לפני יום {0}",
+ "two": "לפני יומיים",
+ "many": "לפני {0} ימים",
+ },
+ },
+ "hour": {
+ "future": {
+ "other": "בעוד {0} שעות",
+ "one": "בעוד שעה",
+ "two": "בעוד שעתיים",
+ "many": "בעוד {0} שעות",
+ },
+ "past": {
+ "other": "לפני {0} שעות",
+ "one": "לפני שעה",
+ "two": "לפני שעתיים",
+ "many": "לפני {0} שעות",
+ },
+ },
+ "minute": {
+ "future": {
+ "other": "בעוד {0} דקות",
+ "one": "בעוד דקה",
+ "two": "בעוד שתי דקות",
+ "many": "בעוד {0} דקות",
+ },
+ "past": {
+ "other": "לפני {0} דקות",
+ "one": "לפני דקה",
+ "two": "לפני שתי דקות",
+ "many": "לפני {0} דקות",
+ },
+ },
+ "second": {
+ "future": {
+ "other": "בעוד {0} שניות",
+ "one": "בעוד שנייה",
+ "two": "בעוד שתי שניות",
+ "many": "בעוד {0} שניות",
+ },
+ "past": {
+ "other": "לפני {0} שניות",
+ "one": "לפני שנייה",
+ "two": "לפני שתי שניות",
+ "many": "לפני {0} שניות",
+ },
+ },
+ },
+ "day_periods": {
+ "midnight": "חצות",
+ "am": "לפנה״צ",
+ "pm": "אחה״צ",
+ "morning1": "בבוקר",
+ "afternoon1": "בצהריים",
+ "afternoon2": "אחר הצהריים",
+ "evening1": "בערב",
+ "night1": "בלילה",
+ "night2": "לפנות בוקר",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/id/__init__.py b/src/pendulum/locales/id/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/id/__init__.py
diff --git a/src/pendulum/locales/id/custom.py b/src/pendulum/locales/id/custom.py
new file mode 100644
index 0000000..3d4460c
--- /dev/null
+++ b/src/pendulum/locales/id/custom.py
@@ -0,0 +1,21 @@
+"""
+id custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ "units": {"few_second": "beberapa detik"},
+ "ago": "{} yang lalu",
+ "from_now": "dalam {}",
+ "after": "{0} kemudian",
+ "before": "{0} yang lalu",
+ "date_formats": {
+ "LTS": "HH:mm:ss",
+ "LT": "HH:mm",
+ "LLLL": "dddd [d.] D. MMMM YYYY HH:mm",
+ "LLL": "D. MMMM YYYY HH:mm",
+ "LL": "D. MMMM YYYY",
+ "L": "DD/MM/YYYY",
+ },
+}
diff --git a/src/pendulum/locales/id/locale.py b/src/pendulum/locales/id/locale.py
new file mode 100644
index 0000000..2073357
--- /dev/null
+++ b/src/pendulum/locales/id/locale.py
@@ -0,0 +1,149 @@
+from __future__ import annotations
+
+from pendulum.locales.id.custom import translations as custom_translations
+
+
+"""
+id locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "Sen",
+ 1: "Sel",
+ 2: "Rab",
+ 3: "Kam",
+ 4: "Jum",
+ 5: "Sab",
+ 6: "Min",
+ },
+ "narrow": {0: "S", 1: "S", 2: "R", 3: "K", 4: "J", 5: "S", 6: "M"},
+ "short": {
+ 0: "Sen",
+ 1: "Sel",
+ 2: "Rab",
+ 3: "Kam",
+ 4: "Jum",
+ 5: "Sab",
+ 6: "Min",
+ },
+ "wide": {
+ 0: "Senin",
+ 1: "Selasa",
+ 2: "Rabu",
+ 3: "Kamis",
+ 4: "Jumat",
+ 5: "Sabtu",
+ 6: "Minggu",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "Jan",
+ 2: "Feb",
+ 3: "Mar",
+ 4: "Apr",
+ 5: "Mei",
+ 6: "Jun",
+ 7: "Jul",
+ 8: "Agt",
+ 9: "Sep",
+ 10: "Okt",
+ 11: "Nov",
+ 12: "Des",
+ },
+ "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: "Maret",
+ 4: "April",
+ 5: "Mei",
+ 6: "Juni",
+ 7: "Juli",
+ 8: "Agustus",
+ 9: "September",
+ 10: "Oktober",
+ 11: "November",
+ 12: "Desember",
+ },
+ },
+ "units": {
+ "year": {"other": "{0} tahun"},
+ "month": {"other": "{0} bulan"},
+ "week": {"other": "{0} minggu"},
+ "day": {"other": "{0} hari"},
+ "hour": {"other": "{0} jam"},
+ "minute": {"other": "{0} menit"},
+ "second": {"other": "{0} detik"},
+ "microsecond": {"other": "{0} mikrodetik"},
+ },
+ "relative": {
+ "year": {
+ "future": {"other": "dalam {0} tahun"},
+ "past": {"other": "{0} tahun yang lalu"},
+ },
+ "month": {
+ "future": {"other": "dalam {0} bulan"},
+ "past": {"other": "{0} bulan yang lalu"},
+ },
+ "week": {
+ "future": {"other": "dalam {0} minggu"},
+ "past": {"other": "{0} minggu yang lalu"},
+ },
+ "day": {
+ "future": {"other": "dalam {0} hari"},
+ "past": {"other": "{0} hari yang lalu"},
+ },
+ "hour": {
+ "future": {"other": "dalam {0} jam"},
+ "past": {"other": "{0} jam yang lalu"},
+ },
+ "minute": {
+ "future": {"other": "dalam {0} menit"},
+ "past": {"other": "{0} menit yang lalu"},
+ },
+ "second": {
+ "future": {"other": "dalam {0} detik"},
+ "past": {"other": "{0} detik yang lalu"},
+ },
+ },
+ "day_periods": {
+ "midnight": "tengah malam",
+ "am": "AM",
+ "noon": "tengah hari",
+ "pm": "PM",
+ "morning1": "pagi",
+ "afternoon1": "siang",
+ "evening1": "sore",
+ "night1": "malam",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/it/__init__.py b/src/pendulum/locales/it/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/it/__init__.py
diff --git a/src/pendulum/locales/it/custom.py b/src/pendulum/locales/it/custom.py
new file mode 100644
index 0000000..b1a77a0
--- /dev/null
+++ b/src/pendulum/locales/it/custom.py
@@ -0,0 +1,25 @@
+"""
+it custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ "units": {"few_second": "alcuni secondi"},
+ # Relative Time
+ "ago": "{0} fa",
+ "from_now": "in {0}",
+ "after": "{0} dopo",
+ "before": "{0} prima",
+ # Ordinals
+ "ordinal": {"other": "°"},
+ # Date formats
+ "date_formats": {
+ "LTS": "H:mm:ss",
+ "LT": "H:mm",
+ "L": "DD/MM/YYYY",
+ "LL": "D MMMM YYYY",
+ "LLL": "D MMMM YYYY [alle] H:mm",
+ "LLLL": "dddd, D MMMM YYYY [alle] H:mm",
+ },
+}
diff --git a/src/pendulum/locales/it/locale.py b/src/pendulum/locales/it/locale.py
new file mode 100644
index 0000000..ae5dc39
--- /dev/null
+++ b/src/pendulum/locales/it/locale.py
@@ -0,0 +1,153 @@
+from __future__ import annotations
+
+from pendulum.locales.it.custom import translations as custom_translations
+
+
+"""
+it locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "one"
+ if ((n == n and (n == 1)) and (0 == 0 and (0 == 0)))
+ else "other",
+ "ordinal": lambda n: "many"
+ if (n == n and ((n == 11) or (n == 8) or (n == 80) or (n == 800)))
+ else "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "lun",
+ 1: "mar",
+ 2: "mer",
+ 3: "gio",
+ 4: "ven",
+ 5: "sab",
+ 6: "dom",
+ },
+ "narrow": {0: "L", 1: "M", 2: "M", 3: "G", 4: "V", 5: "S", 6: "D"},
+ "short": {
+ 0: "lun",
+ 1: "mar",
+ 2: "mer",
+ 3: "gio",
+ 4: "ven",
+ 5: "sab",
+ 6: "dom",
+ },
+ "wide": {
+ 0: "lunedì",
+ 1: "martedì",
+ 2: "mercoledì",
+ 3: "giovedì",
+ 4: "venerdì",
+ 5: "sabato",
+ 6: "domenica",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "gen",
+ 2: "feb",
+ 3: "mar",
+ 4: "apr",
+ 5: "mag",
+ 6: "giu",
+ 7: "lug",
+ 8: "ago",
+ 9: "set",
+ 10: "ott",
+ 11: "nov",
+ 12: "dic",
+ },
+ "narrow": {
+ 1: "G",
+ 2: "F",
+ 3: "M",
+ 4: "A",
+ 5: "M",
+ 6: "G",
+ 7: "L",
+ 8: "A",
+ 9: "S",
+ 10: "O",
+ 11: "N",
+ 12: "D",
+ },
+ "wide": {
+ 1: "gennaio",
+ 2: "febbraio",
+ 3: "marzo",
+ 4: "aprile",
+ 5: "maggio",
+ 6: "giugno",
+ 7: "luglio",
+ 8: "agosto",
+ 9: "settembre",
+ 10: "ottobre",
+ 11: "novembre",
+ 12: "dicembre",
+ },
+ },
+ "units": {
+ "year": {"one": "{0} anno", "other": "{0} anni"},
+ "month": {"one": "{0} mese", "other": "{0} mesi"},
+ "week": {"one": "{0} settimana", "other": "{0} settimane"},
+ "day": {"one": "{0} giorno", "other": "{0} giorni"},
+ "hour": {"one": "{0} ora", "other": "{0} ore"},
+ "minute": {"one": "{0} minuto", "other": "{0} minuti"},
+ "second": {"one": "{0} secondo", "other": "{0} secondi"},
+ "microsecond": {"one": "{0} microsecondo", "other": "{0} microsecondi"},
+ },
+ "relative": {
+ "year": {
+ "future": {"other": "tra {0} anni", "one": "tra {0} anno"},
+ "past": {"other": "{0} anni fa", "one": "{0} anno fa"},
+ },
+ "month": {
+ "future": {"other": "tra {0} mesi", "one": "tra {0} mese"},
+ "past": {"other": "{0} mesi fa", "one": "{0} mese fa"},
+ },
+ "week": {
+ "future": {"other": "tra {0} settimane", "one": "tra {0} settimana"},
+ "past": {"other": "{0} settimane fa", "one": "{0} settimana fa"},
+ },
+ "day": {
+ "future": {"other": "tra {0} giorni", "one": "tra {0} giorno"},
+ "past": {"other": "{0} giorni fa", "one": "{0} giorno fa"},
+ },
+ "hour": {
+ "future": {"other": "tra {0} ore", "one": "tra {0} ora"},
+ "past": {"other": "{0} ore fa", "one": "{0} ora fa"},
+ },
+ "minute": {
+ "future": {"other": "tra {0} minuti", "one": "tra {0} minuto"},
+ "past": {"other": "{0} minuti fa", "one": "{0} minuto fa"},
+ },
+ "second": {
+ "future": {"other": "tra {0} secondi", "one": "tra {0} secondo"},
+ "past": {"other": "{0} secondi fa", "one": "{0} secondo fa"},
+ },
+ },
+ "day_periods": {
+ "midnight": "mezzanotte",
+ "am": "AM",
+ "noon": "mezzogiorno",
+ "pm": "PM",
+ "morning1": "di mattina",
+ "afternoon1": "del pomeriggio",
+ "evening1": "di sera",
+ "night1": "di notte",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/ja/__init__.py b/src/pendulum/locales/ja/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/ja/__init__.py
diff --git a/src/pendulum/locales/ja/custom.py b/src/pendulum/locales/ja/custom.py
new file mode 100644
index 0000000..4cb5b95
--- /dev/null
+++ b/src/pendulum/locales/ja/custom.py
@@ -0,0 +1,23 @@
+"""
+ja custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ "units": {"few_second": "数秒"},
+ # Relative time
+ "ago": "{} 前に",
+ "from_now": "今から {}",
+ "after": "{0} 後",
+ "before": "{0} 前",
+ # Date formats
+ "date_formats": {
+ "LTS": "h:mm:ss A",
+ "LT": "h:mm A",
+ "L": "MM/DD/YYYY",
+ "LL": "MMMM D, YYYY",
+ "LLL": "MMMM D, YYYY h:mm A",
+ "LLLL": "dddd, MMMM D, YYYY h:mm A",
+ },
+}
diff --git a/src/pendulum/locales/ja/locale.py b/src/pendulum/locales/ja/locale.py
new file mode 100644
index 0000000..a1d3bd9
--- /dev/null
+++ b/src/pendulum/locales/ja/locale.py
@@ -0,0 +1,202 @@
+from __future__ import annotations
+
+from pendulum.locales.ja.custom import translations as custom_translations
+
+
+"""
+ja locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "月",
+ 1: "火",
+ 2: "水",
+ 3: "木",
+ 4: "金",
+ 5: "土",
+ 6: "日",
+ },
+ "narrow": {
+ 0: "月",
+ 1: "火",
+ 2: "水",
+ 3: "木",
+ 4: "金",
+ 5: "土",
+ 6: "日",
+ },
+ "short": {
+ 0: "月",
+ 1: "火",
+ 2: "水",
+ 3: "木",
+ 4: "金",
+ 5: "土",
+ 6: "日",
+ },
+ "wide": {
+ 0: "月曜日",
+ 1: "火曜日",
+ 2: "水曜日",
+ 3: "木曜日",
+ 4: "金曜日",
+ 5: "土曜日",
+ 6: "日曜日",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "1月",
+ 2: "2月",
+ 3: "3月",
+ 4: "4月",
+ 5: "5月",
+ 6: "6月",
+ 7: "7月",
+ 8: "8月",
+ 9: "9月",
+ 10: "10月",
+ 11: "11月",
+ 12: "12月",
+ },
+ "narrow": {
+ 1: "1",
+ 2: "2",
+ 3: "3",
+ 4: "4",
+ 5: "5",
+ 6: "6",
+ 7: "7",
+ 8: "8",
+ 9: "9",
+ 10: "10",
+ 11: "11",
+ 12: "12",
+ },
+ "wide": {
+ 1: "1月",
+ 2: "2月",
+ 3: "3月",
+ 4: "4月",
+ 5: "5月",
+ 6: "6月",
+ 7: "7月",
+ 8: "8月",
+ 9: "9月",
+ 10: "10月",
+ 11: "11月",
+ 12: "12月",
+ },
+ },
+ "units": {
+ "year": {
+ "other": "{0} 年",
+ },
+ "month": {
+ "other": "{0} か月",
+ },
+ "week": {
+ "other": "{0} 週間",
+ },
+ "day": {
+ "other": "{0} 日",
+ },
+ "hour": {
+ "other": "{0} 時間",
+ },
+ "minute": {
+ "other": "{0} 分",
+ },
+ "second": {
+ "other": "{0} 秒",
+ },
+ "microsecond": {
+ "other": "{0} マイクロ秒",
+ },
+ },
+ "relative": {
+ "year": {
+ "future": {
+ "other": "{0} 年後",
+ },
+ "past": {
+ "other": "{0} 年前",
+ },
+ },
+ "month": {
+ "future": {
+ "other": "{0} か月後",
+ },
+ "past": {
+ "other": "{0} か月前",
+ },
+ },
+ "week": {
+ "future": {
+ "other": "{0} 週間後",
+ },
+ "past": {
+ "other": "{0} 週間前",
+ },
+ },
+ "day": {
+ "future": {
+ "other": "{0} 日後",
+ },
+ "past": {
+ "other": "{0} 日前",
+ },
+ },
+ "hour": {
+ "future": {
+ "other": "{0} 時間後",
+ },
+ "past": {
+ "other": "{0} 時間前",
+ },
+ },
+ "minute": {
+ "future": {
+ "other": "{0} 分後",
+ },
+ "past": {
+ "other": "{0} 分前",
+ },
+ },
+ "second": {
+ "future": {
+ "other": "{0} 秒後",
+ },
+ "past": {
+ "other": "{0} 秒前",
+ },
+ },
+ },
+ "day_periods": {
+ "midnight": "真夜中",
+ "am": "午前",
+ "noon": "正午",
+ "pm": "午後",
+ "morning1": "朝",
+ "afternoon1": "昼",
+ "evening1": "夕方",
+ "night1": "夜",
+ "night2": "夜中",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/ko/__init__.py b/src/pendulum/locales/ko/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/ko/__init__.py
diff --git a/src/pendulum/locales/ko/custom.py b/src/pendulum/locales/ko/custom.py
new file mode 100644
index 0000000..b7476ff
--- /dev/null
+++ b/src/pendulum/locales/ko/custom.py
@@ -0,0 +1,20 @@
+"""
+ko custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ # Relative time
+ "after": "{0} 뒤",
+ "before": "{0} 앞",
+ # Date formats
+ "date_formats": {
+ "LTS": "A h시 m분 s초",
+ "LT": "A h시 m분",
+ "LLLL": "YYYY년 MMMM D일 dddd A h시 m분",
+ "LLL": "YYYY년 MMMM D일 A h시 m분",
+ "LL": "YYYY년 MMMM D일",
+ "L": "YYYY.MM.DD",
+ },
+}
diff --git a/src/pendulum/locales/ko/locale.py b/src/pendulum/locales/ko/locale.py
new file mode 100644
index 0000000..b285dc0
--- /dev/null
+++ b/src/pendulum/locales/ko/locale.py
@@ -0,0 +1,113 @@
+from __future__ import annotations
+
+from pendulum.locales.ko.custom import translations as custom_translations
+
+
+"""
+ko locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {0: "월", 1: "화", 2: "수", 3: "목", 4: "금", 5: "토", 6: "일"},
+ "narrow": {0: "월", 1: "화", 2: "수", 3: "목", 4: "금", 5: "토", 6: "일"},
+ "short": {0: "월", 1: "화", 2: "수", 3: "목", 4: "금", 5: "토", 6: "일"},
+ "wide": {
+ 0: "월요일",
+ 1: "화요일",
+ 2: "수요일",
+ 3: "목요일",
+ 4: "금요일",
+ 5: "토요일",
+ 6: "일요일",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "1월",
+ 2: "2월",
+ 3: "3월",
+ 4: "4월",
+ 5: "5월",
+ 6: "6월",
+ 7: "7월",
+ 8: "8월",
+ 9: "9월",
+ 10: "10월",
+ 11: "11월",
+ 12: "12월",
+ },
+ "narrow": {
+ 1: "1월",
+ 2: "2월",
+ 3: "3월",
+ 4: "4월",
+ 5: "5월",
+ 6: "6월",
+ 7: "7월",
+ 8: "8월",
+ 9: "9월",
+ 10: "10월",
+ 11: "11월",
+ 12: "12월",
+ },
+ "wide": {
+ 1: "1월",
+ 2: "2월",
+ 3: "3월",
+ 4: "4월",
+ 5: "5월",
+ 6: "6월",
+ 7: "7월",
+ 8: "8월",
+ 9: "9월",
+ 10: "10월",
+ 11: "11월",
+ 12: "12월",
+ },
+ },
+ "units": {
+ "year": {"other": "{0}년"},
+ "month": {"other": "{0}개월"},
+ "week": {"other": "{0}주"},
+ "day": {"other": "{0}일"},
+ "hour": {"other": "{0}시간"},
+ "minute": {"other": "{0}분"},
+ "second": {"other": "{0}초"},
+ "microsecond": {"other": "{0}마이크로초"},
+ },
+ "relative": {
+ "year": {"future": {"other": "{0}년 후"}, "past": {"other": "{0}년 전"}},
+ "month": {"future": {"other": "{0}개월 후"}, "past": {"other": "{0}개월 전"}},
+ "week": {"future": {"other": "{0}주 후"}, "past": {"other": "{0}주 전"}},
+ "day": {"future": {"other": "{0}일 후"}, "past": {"other": "{0}일 전"}},
+ "hour": {"future": {"other": "{0}시간 후"}, "past": {"other": "{0}시간 전"}},
+ "minute": {"future": {"other": "{0}분 후"}, "past": {"other": "{0}분 전"}},
+ "second": {"future": {"other": "{0}초 후"}, "past": {"other": "{0}초 전"}},
+ },
+ "day_periods": {
+ "midnight": "자정",
+ "am": "오전",
+ "noon": "정오",
+ "pm": "오후",
+ "morning1": "새벽",
+ "morning2": "오전",
+ "afternoon1": "오후",
+ "evening1": "저녁",
+ "night1": "밤",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/locale.py b/src/pendulum/locales/locale.py
new file mode 100644
index 0000000..21eaaec
--- /dev/null
+++ b/src/pendulum/locales/locale.py
@@ -0,0 +1,100 @@
+from __future__ import annotations
+
+import re
+
+from importlib import import_module
+from pathlib import Path
+from typing import Any
+from typing import ClassVar
+from typing import Dict
+from typing import cast
+
+from pendulum.utils._compat import resources
+
+
+class Locale:
+ """
+ Represent a specific locale.
+ """
+
+ _cache: ClassVar[dict[str, Locale]] = {}
+
+ def __init__(self, locale: str, data: Any) -> None:
+ self._locale: str = locale
+ self._data: Any = data
+ self._key_cache: dict[str, str] = {}
+
+ @classmethod
+ def load(cls, locale: str | Locale) -> Locale:
+ if isinstance(locale, Locale):
+ return locale
+
+ locale = cls.normalize_locale(locale)
+ if locale in cls._cache:
+ return cls._cache[locale]
+
+ # Checking locale existence
+ actual_locale = locale
+ locale_path = cast(Path, resources.files(__package__).joinpath(actual_locale))
+ while not locale_path.exists():
+ if actual_locale == locale:
+ raise ValueError(f"Locale [{locale}] does not exist.")
+
+ actual_locale = actual_locale.split("_")[0]
+
+ m = import_module(f"pendulum.locales.{actual_locale}.locale")
+
+ cls._cache[locale] = cls(locale, m.locale)
+
+ return cls._cache[locale]
+
+ @classmethod
+ def normalize_locale(cls, locale: str) -> str:
+ m = re.match("([a-z]{2})[-_]([a-z]{2})", locale, re.I)
+ if m:
+ return f"{m.group(1).lower()}_{m.group(2).lower()}"
+ else:
+ return locale.lower()
+
+ def get(self, key: str, default: Any | None = None) -> Any:
+ if key in self._key_cache:
+ return self._key_cache[key]
+
+ parts = key.split(".")
+ try:
+ result = self._data[parts[0]]
+ for part in parts[1:]:
+ result = result[part]
+ except KeyError:
+ result = default
+
+ self._key_cache[key] = result
+
+ return self._key_cache[key]
+
+ def translation(self, key: str) -> Any:
+ return self.get(f"translations.{key}")
+
+ def plural(self, number: int) -> str:
+ return cast(str, self._data["plural"](number))
+
+ def ordinal(self, number: int) -> str:
+ return cast(str, self._data["ordinal"](number))
+
+ def ordinalize(self, number: int) -> str:
+ ordinal = self.get(f"custom.ordinal.{self.ordinal(number)}")
+
+ if not ordinal:
+ return f"{number}"
+
+ return f"{number}{ordinal}"
+
+ def match_translation(self, key: str, value: Any) -> dict[str, str] | None:
+ translations = self.translation(key)
+ if value not in translations.values():
+ return None
+
+ return cast(Dict[str, str], {v: k for k, v in translations.items()}[value])
+
+ def __repr__(self) -> str:
+ return f"{self.__class__.__name__}('{self._locale}')"
diff --git a/src/pendulum/locales/lt/__init__.py b/src/pendulum/locales/lt/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/lt/__init__.py
diff --git a/src/pendulum/locales/lt/custom.py b/src/pendulum/locales/lt/custom.py
new file mode 100644
index 0000000..d7f17d3
--- /dev/null
+++ b/src/pendulum/locales/lt/custom.py
@@ -0,0 +1,120 @@
+"""
+lt custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ # Relative time
+ "units_relative": {
+ "year": {
+ "future": {
+ "other": "{0} metų",
+ "one": "{0} metų",
+ "few": "{0} metų",
+ "many": "{0} metų",
+ },
+ "past": {
+ "other": "{0} metų",
+ "one": "{0} metus",
+ "few": "{0} metus",
+ "many": "{0} metų",
+ },
+ },
+ "month": {
+ "future": {
+ "other": "{0} mėnesių",
+ "one": "{0} mėnesio",
+ "few": "{0} mėnesių",
+ "many": "{0} mėnesio",
+ },
+ "past": {
+ "other": "{0} mėnesių",
+ "one": "{0} mėnesį",
+ "few": "{0} mėnesius",
+ "many": "{0} mėnesio",
+ },
+ },
+ "week": {
+ "future": {
+ "other": "{0} savaičių",
+ "one": "{0} savaitės",
+ "few": "{0} savaičių",
+ "many": "{0} savaitės",
+ },
+ "past": {
+ "other": "{0} savaičių",
+ "one": "{0} savaitę",
+ "few": "{0} savaites",
+ "many": "{0} savaitės",
+ },
+ },
+ "day": {
+ "future": {
+ "other": "{0} dienų",
+ "one": "{0} dienos",
+ "few": "{0} dienų",
+ "many": "{0} dienos",
+ },
+ "past": {
+ "other": "{0} dienų",
+ "one": "{0} dieną",
+ "few": "{0} dienas",
+ "many": "{0} dienos",
+ },
+ },
+ "hour": {
+ "future": {
+ "other": "{0} valandų",
+ "one": "{0} valandos",
+ "few": "{0} valandų",
+ "many": "{0} valandos",
+ },
+ "past": {
+ "other": "{0} valandų",
+ "one": "{0} valandą",
+ "few": "{0} valandas",
+ "many": "{0} valandos",
+ },
+ },
+ "minute": {
+ "future": {
+ "other": "{0} minučių",
+ "one": "{0} minutės",
+ "few": "{0} minučių",
+ "many": "{0} minutės",
+ },
+ "past": {
+ "other": "{0} minučių",
+ "one": "{0} minutę",
+ "few": "{0} minutes",
+ "many": "{0} minutės",
+ },
+ },
+ "second": {
+ "future": {
+ "other": "{0} sekundžių",
+ "one": "{0} sekundės",
+ "few": "{0} sekundžių",
+ "many": "{0} sekundės",
+ },
+ "past": {
+ "other": "{0} sekundžių",
+ "one": "{0} sekundę",
+ "few": "{0} sekundes",
+ "many": "{0} sekundės",
+ },
+ },
+ },
+ "after": "po {0}",
+ "before": "{0} nuo dabar",
+ # Date formats
+ "date_formats": {
+ "LTS": "HH:mm:ss",
+ "LT": "HH:mm",
+ "LLLL": "YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",
+ "LLL": "YYYY [m.] MMMM D [d.], HH:mm [val.]",
+ "LL": "YYYY [m.] MMMM D [d.]",
+ "L": "YYYY-MM-DD",
+ },
+}
diff --git a/src/pendulum/locales/lt/locale.py b/src/pendulum/locales/lt/locale.py
new file mode 100644
index 0000000..6e9a460
--- /dev/null
+++ b/src/pendulum/locales/lt/locale.py
@@ -0,0 +1,263 @@
+from __future__ import annotations
+
+from pendulum.locales.lt.custom import translations as custom_translations
+
+
+"""
+lt locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "few"
+ if (
+ ((n % 10) == (n % 10) and ((n % 10) >= 2 and (n % 10) <= 9))
+ and (not ((n % 100) == (n % 100) and ((n % 100) >= 11 and (n % 100) <= 19)))
+ )
+ else "many"
+ if (not (0 == 0 and (0 == 0)))
+ else "one"
+ if (
+ ((n % 10) == (n % 10) and ((n % 10) == 1))
+ and (not ((n % 100) == (n % 100) and ((n % 100) >= 11 and (n % 100) <= 19)))
+ )
+ else "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "pr",
+ 1: "an",
+ 2: "tr",
+ 3: "kt",
+ 4: "pn",
+ 5: "št",
+ 6: "sk",
+ },
+ "narrow": {0: "P", 1: "A", 2: "T", 3: "K", 4: "P", 5: "Š", 6: "S"},
+ "short": {0: "Pr", 1: "An", 2: "Tr", 3: "Kt", 4: "Pn", 5: "Št", 6: "Sk"},
+ "wide": {
+ 0: "pirmadienis",
+ 1: "antradienis",
+ 2: "trečiadienis",
+ 3: "ketvirtadienis",
+ 4: "penktadienis",
+ 5: "šeštadienis",
+ 6: "sekmadienis",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "saus.",
+ 2: "vas.",
+ 3: "kov.",
+ 4: "bal.",
+ 5: "geg.",
+ 6: "birž.",
+ 7: "liep.",
+ 8: "rugp.",
+ 9: "rugs.",
+ 10: "spal.",
+ 11: "lapkr.",
+ 12: "gruod.",
+ },
+ "narrow": {
+ 1: "S",
+ 2: "V",
+ 3: "K",
+ 4: "B",
+ 5: "G",
+ 6: "B",
+ 7: "L",
+ 8: "R",
+ 9: "R",
+ 10: "S",
+ 11: "L",
+ 12: "G",
+ },
+ "wide": {
+ 1: "sausio",
+ 2: "vasario",
+ 3: "kovo",
+ 4: "balandžio",
+ 5: "gegužės",
+ 6: "birželio",
+ 7: "liepos",
+ 8: "rugpjūčio",
+ 9: "rugsėjo",
+ 10: "spalio",
+ 11: "lapkričio",
+ 12: "gruodžio",
+ },
+ },
+ "units": {
+ "year": {
+ "one": "{0} metai",
+ "few": "{0} metai",
+ "many": "{0} metų",
+ "other": "{0} metų",
+ },
+ "month": {
+ "one": "{0} mėnuo",
+ "few": "{0} mėnesiai",
+ "many": "{0} mėnesio",
+ "other": "{0} mėnesių",
+ },
+ "week": {
+ "one": "{0} savaitė",
+ "few": "{0} savaitės",
+ "many": "{0} savaitės",
+ "other": "{0} savaičių",
+ },
+ "day": {
+ "one": "{0} diena",
+ "few": "{0} dienos",
+ "many": "{0} dienos",
+ "other": "{0} dienų",
+ },
+ "hour": {
+ "one": "{0} valanda",
+ "few": "{0} valandos",
+ "many": "{0} valandos",
+ "other": "{0} valandų",
+ },
+ "minute": {
+ "one": "{0} minutė",
+ "few": "{0} minutės",
+ "many": "{0} minutės",
+ "other": "{0} minučių",
+ },
+ "second": {
+ "one": "{0} sekundė",
+ "few": "{0} sekundės",
+ "many": "{0} sekundės",
+ "other": "{0} sekundžių",
+ },
+ "microsecond": {
+ "one": "{0} mikrosekundė",
+ "few": "{0} mikrosekundės",
+ "many": "{0} mikrosekundės",
+ "other": "{0} mikrosekundžių",
+ },
+ },
+ "relative": {
+ "year": {
+ "future": {
+ "other": "po {0} metų",
+ "one": "po {0} metų",
+ "few": "po {0} metų",
+ "many": "po {0} metų",
+ },
+ "past": {
+ "other": "prieš {0} metų",
+ "one": "prieš {0} metus",
+ "few": "prieš {0} metus",
+ "many": "prieš {0} metų",
+ },
+ },
+ "month": {
+ "future": {
+ "other": "po {0} mėnesių",
+ "one": "po {0} mėnesio",
+ "few": "po {0} mėnesių",
+ "many": "po {0} mėnesio",
+ },
+ "past": {
+ "other": "prieš {0} mėnesių",
+ "one": "prieš {0} mėnesį",
+ "few": "prieš {0} mėnesius",
+ "many": "prieš {0} mėnesio",
+ },
+ },
+ "week": {
+ "future": {
+ "other": "po {0} savaičių",
+ "one": "po {0} savaitės",
+ "few": "po {0} savaičių",
+ "many": "po {0} savaitės",
+ },
+ "past": {
+ "other": "prieš {0} savaičių",
+ "one": "prieš {0} savaitę",
+ "few": "prieš {0} savaites",
+ "many": "prieš {0} savaitės",
+ },
+ },
+ "day": {
+ "future": {
+ "other": "po {0} dienų",
+ "one": "po {0} dienos",
+ "few": "po {0} dienų",
+ "many": "po {0} dienos",
+ },
+ "past": {
+ "other": "prieš {0} dienų",
+ "one": "prieš {0} dieną",
+ "few": "prieš {0} dienas",
+ "many": "prieš {0} dienos",
+ },
+ },
+ "hour": {
+ "future": {
+ "other": "po {0} valandų",
+ "one": "po {0} valandos",
+ "few": "po {0} valandų",
+ "many": "po {0} valandos",
+ },
+ "past": {
+ "other": "prieš {0} valandų",
+ "one": "prieš {0} valandą",
+ "few": "prieš {0} valandas",
+ "many": "prieš {0} valandos",
+ },
+ },
+ "minute": {
+ "future": {
+ "other": "po {0} minučių",
+ "one": "po {0} minutės",
+ "few": "po {0} minučių",
+ "many": "po {0} minutės",
+ },
+ "past": {
+ "other": "prieš {0} minučių",
+ "one": "prieš {0} minutę",
+ "few": "prieš {0} minutes",
+ "many": "prieš {0} minutės",
+ },
+ },
+ "second": {
+ "future": {
+ "other": "po {0} sekundžių",
+ "one": "po {0} sekundės",
+ "few": "po {0} sekundžių",
+ "many": "po {0} sekundės",
+ },
+ "past": {
+ "other": "prieš {0} sekundžių",
+ "one": "prieš {0} sekundę",
+ "few": "prieš {0} sekundes",
+ "many": "prieš {0} sekundės",
+ },
+ },
+ },
+ "day_periods": {
+ "midnight": "vidurnaktis",
+ "am": "priešpiet",
+ "noon": "perpiet",
+ "pm": "popiet",
+ "morning1": "rytas",
+ "afternoon1": "popietė",
+ "evening1": "vakaras",
+ "night1": "naktis",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/nb/__init__.py b/src/pendulum/locales/nb/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/nb/__init__.py
diff --git a/src/pendulum/locales/nb/custom.py b/src/pendulum/locales/nb/custom.py
new file mode 100644
index 0000000..554e7f3
--- /dev/null
+++ b/src/pendulum/locales/nb/custom.py
@@ -0,0 +1,22 @@
+"""
+nn custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ # Relative time
+ "after": "{0} etter",
+ "before": "{0} før",
+ # Ordinals
+ "ordinal": {"one": ".", "two": ".", "few": ".", "other": "."},
+ # Date formats
+ "date_formats": {
+ "LTS": "HH:mm:ss",
+ "LT": "HH:mm",
+ "LLLL": "dddd Do MMMM YYYY HH:mm",
+ "LLL": "Do MMMM YYYY HH:mm",
+ "LL": "Do MMMM YYYY",
+ "L": "DD.MM.YYYY",
+ },
+}
diff --git a/src/pendulum/locales/nb/locale.py b/src/pendulum/locales/nb/locale.py
new file mode 100644
index 0000000..084f019
--- /dev/null
+++ b/src/pendulum/locales/nb/locale.py
@@ -0,0 +1,158 @@
+from __future__ import annotations
+
+from pendulum.locales.nb.custom import translations as custom_translations
+
+
+"""
+nb locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "one" if (n == n and (n == 1)) else "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "man.",
+ 1: "tir.",
+ 2: "ons.",
+ 3: "tor.",
+ 4: "fre.",
+ 5: "lør.",
+ 6: "søn.",
+ },
+ "narrow": {0: "M", 1: "T", 2: "O", 3: "T", 4: "F", 5: "L", 6: "S"},
+ "short": {
+ 0: "ma.",
+ 1: "ti.",
+ 2: "on.",
+ 3: "to.",
+ 4: "fr.",
+ 5: "lø.",
+ 6: "sø.",
+ },
+ "wide": {
+ 0: "mandag",
+ 1: "tirsdag",
+ 2: "onsdag",
+ 3: "torsdag",
+ 4: "fredag",
+ 5: "lørdag",
+ 6: "søndag",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "jan.",
+ 2: "feb.",
+ 3: "mar.",
+ 4: "apr.",
+ 5: "mai",
+ 6: "jun.",
+ 7: "jul.",
+ 8: "aug.",
+ 9: "sep.",
+ 10: "okt.",
+ 11: "nov.",
+ 12: "des.",
+ },
+ "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: "januar",
+ 2: "februar",
+ 3: "mars",
+ 4: "april",
+ 5: "mai",
+ 6: "juni",
+ 7: "juli",
+ 8: "august",
+ 9: "september",
+ 10: "oktober",
+ 11: "november",
+ 12: "desember",
+ },
+ },
+ "units": {
+ "year": {"one": "{0} år", "other": "{0} år"},
+ "month": {"one": "{0} måned", "other": "{0} måneder"},
+ "week": {"one": "{0} uke", "other": "{0} uker"},
+ "day": {"one": "{0} dag", "other": "{0} dager"},
+ "hour": {"one": "{0} time", "other": "{0} timer"},
+ "minute": {"one": "{0} minutt", "other": "{0} minutter"},
+ "second": {"one": "{0} sekund", "other": "{0} sekunder"},
+ "microsecond": {"one": "{0} mikrosekund", "other": "{0} mikrosekunder"},
+ },
+ "relative": {
+ "year": {
+ "future": {"other": "om {0} år", "one": "om {0} år"},
+ "past": {"other": "for {0} år siden", "one": "for {0} år siden"},
+ },
+ "month": {
+ "future": {"other": "om {0} måneder", "one": "om {0} måned"},
+ "past": {
+ "other": "for {0} måneder siden",
+ "one": "for {0} måned siden",
+ },
+ },
+ "week": {
+ "future": {"other": "om {0} uker", "one": "om {0} uke"},
+ "past": {"other": "for {0} uker siden", "one": "for {0} uke siden"},
+ },
+ "day": {
+ "future": {"other": "om {0} dager", "one": "om {0} dag"},
+ "past": {"other": "for {0} dager siden", "one": "for {0} dag siden"},
+ },
+ "hour": {
+ "future": {"other": "om {0} timer", "one": "om {0} time"},
+ "past": {"other": "for {0} timer siden", "one": "for {0} time siden"},
+ },
+ "minute": {
+ "future": {"other": "om {0} minutter", "one": "om {0} minutt"},
+ "past": {
+ "other": "for {0} minutter siden",
+ "one": "for {0} minutt siden",
+ },
+ },
+ "second": {
+ "future": {"other": "om {0} sekunder", "one": "om {0} sekund"},
+ "past": {
+ "other": "for {0} sekunder siden",
+ "one": "for {0} sekund siden",
+ },
+ },
+ },
+ "day_periods": {
+ "midnight": "midnatt",
+ "am": "a.m.",
+ "pm": "p.m.",
+ "morning1": "morgenen",
+ "morning2": "formiddagen",
+ "afternoon1": "ettermiddagen",
+ "evening1": "kvelden",
+ "night1": "natten",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/nl/__init__.py b/src/pendulum/locales/nl/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/nl/__init__.py
diff --git a/src/pendulum/locales/nl/custom.py b/src/pendulum/locales/nl/custom.py
new file mode 100644
index 0000000..ca90673
--- /dev/null
+++ b/src/pendulum/locales/nl/custom.py
@@ -0,0 +1,25 @@
+"""
+nl custom locale file.
+"""
+from __future__ import annotations
+
+
+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/src/pendulum/locales/nl/locale.py b/src/pendulum/locales/nl/locale.py
new file mode 100644
index 0000000..68b54e7
--- /dev/null
+++ b/src/pendulum/locales/nl/locale.py
@@ -0,0 +1,142 @@
+from __future__ import annotations
+
+from pendulum.locales.nl.custom import translations as custom_translations
+
+
+"""
+nl locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+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: "ma",
+ 1: "di",
+ 2: "wo",
+ 3: "do",
+ 4: "vr",
+ 5: "za",
+ 6: "zo",
+ },
+ "narrow": {0: "M", 1: "D", 2: "W", 3: "D", 4: "V", 5: "Z", 6: "Z"},
+ "short": {0: "ma", 1: "di", 2: "wo", 3: "do", 4: "vr", 5: "za", 6: "zo"},
+ "wide": {
+ 0: "maandag",
+ 1: "dinsdag",
+ 2: "woensdag",
+ 3: "donderdag",
+ 4: "vrijdag",
+ 5: "zaterdag",
+ 6: "zondag",
+ },
+ },
+ "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",
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/nn/__init__.py b/src/pendulum/locales/nn/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/nn/__init__.py
diff --git a/src/pendulum/locales/nn/custom.py b/src/pendulum/locales/nn/custom.py
new file mode 100644
index 0000000..554e7f3
--- /dev/null
+++ b/src/pendulum/locales/nn/custom.py
@@ -0,0 +1,22 @@
+"""
+nn custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ # Relative time
+ "after": "{0} etter",
+ "before": "{0} før",
+ # Ordinals
+ "ordinal": {"one": ".", "two": ".", "few": ".", "other": "."},
+ # Date formats
+ "date_formats": {
+ "LTS": "HH:mm:ss",
+ "LT": "HH:mm",
+ "LLLL": "dddd Do MMMM YYYY HH:mm",
+ "LLL": "Do MMMM YYYY HH:mm",
+ "LL": "Do MMMM YYYY",
+ "L": "DD.MM.YYYY",
+ },
+}
diff --git a/src/pendulum/locales/nn/locale.py b/src/pendulum/locales/nn/locale.py
new file mode 100644
index 0000000..737ee6d
--- /dev/null
+++ b/src/pendulum/locales/nn/locale.py
@@ -0,0 +1,149 @@
+from __future__ import annotations
+
+from pendulum.locales.nn.custom import translations as custom_translations
+
+
+"""
+nn locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "one" if (n == n and (n == 1)) else "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "mån.",
+ 1: "tys.",
+ 2: "ons.",
+ 3: "tor.",
+ 4: "fre.",
+ 5: "lau.",
+ 6: "søn.",
+ },
+ "narrow": {0: "M", 1: "T", 2: "O", 3: "T", 4: "F", 5: "L", 6: "S"},
+ "short": {
+ 0: "må.",
+ 1: "ty.",
+ 2: "on.",
+ 3: "to.",
+ 4: "fr.",
+ 5: "la.",
+ 6: "sø.",
+ },
+ "wide": {
+ 0: "måndag",
+ 1: "tysdag",
+ 2: "onsdag",
+ 3: "torsdag",
+ 4: "fredag",
+ 5: "laurdag",
+ 6: "søndag",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "jan.",
+ 2: "feb.",
+ 3: "mars",
+ 4: "apr.",
+ 5: "mai",
+ 6: "juni",
+ 7: "juli",
+ 8: "aug.",
+ 9: "sep.",
+ 10: "okt.",
+ 11: "nov.",
+ 12: "des.",
+ },
+ "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: "januar",
+ 2: "februar",
+ 3: "mars",
+ 4: "april",
+ 5: "mai",
+ 6: "juni",
+ 7: "juli",
+ 8: "august",
+ 9: "september",
+ 10: "oktober",
+ 11: "november",
+ 12: "desember",
+ },
+ },
+ "units": {
+ "year": {"one": "{0} år", "other": "{0} år"},
+ "month": {"one": "{0} månad", "other": "{0} månadar"},
+ "week": {"one": "{0} veke", "other": "{0} veker"},
+ "day": {"one": "{0} dag", "other": "{0} dagar"},
+ "hour": {"one": "{0} time", "other": "{0} timar"},
+ "minute": {"one": "{0} minutt", "other": "{0} minutt"},
+ "second": {"one": "{0} sekund", "other": "{0} sekund"},
+ "microsecond": {"one": "{0} mikrosekund", "other": "{0} mikrosekund"},
+ },
+ "relative": {
+ "year": {
+ "future": {"other": "om {0} år", "one": "om {0} år"},
+ "past": {"other": "for {0} år sidan", "one": "for {0} år sidan"},
+ },
+ "month": {
+ "future": {"other": "om {0} månadar", "one": "om {0} månad"},
+ "past": {
+ "other": "for {0} månadar sidan",
+ "one": "for {0} månad sidan",
+ },
+ },
+ "week": {
+ "future": {"other": "om {0} veker", "one": "om {0} veke"},
+ "past": {"other": "for {0} veker sidan", "one": "for {0} veke sidan"},
+ },
+ "day": {
+ "future": {"other": "om {0} dagar", "one": "om {0} dag"},
+ "past": {"other": "for {0} dagar sidan", "one": "for {0} dag sidan"},
+ },
+ "hour": {
+ "future": {"other": "om {0} timar", "one": "om {0} time"},
+ "past": {"other": "for {0} timar sidan", "one": "for {0} time sidan"},
+ },
+ "minute": {
+ "future": {"other": "om {0} minutt", "one": "om {0} minutt"},
+ "past": {
+ "other": "for {0} minutt sidan",
+ "one": "for {0} minutt sidan",
+ },
+ },
+ "second": {
+ "future": {"other": "om {0} sekund", "one": "om {0} sekund"},
+ "past": {
+ "other": "for {0} sekund sidan",
+ "one": "for {0} sekund sidan",
+ },
+ },
+ },
+ "day_periods": {"am": "formiddag", "pm": "ettermiddag"},
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/pl/__init__.py b/src/pendulum/locales/pl/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/pl/__init__.py
diff --git a/src/pendulum/locales/pl/custom.py b/src/pendulum/locales/pl/custom.py
new file mode 100644
index 0000000..0aaab90
--- /dev/null
+++ b/src/pendulum/locales/pl/custom.py
@@ -0,0 +1,23 @@
+"""
+pl custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ "units": {"few_second": "kilka sekund"},
+ # Relative time
+ "ago": "{} temu",
+ "from_now": "za {}",
+ "after": "{0} po",
+ "before": "{0} przed",
+ # Date formats
+ "date_formats": {
+ "LTS": "HH:mm:ss",
+ "LT": "HH:mm",
+ "L": "DD.MM.YYYY",
+ "LL": "D MMMM YYYY",
+ "LLL": "D MMMM YYYY HH:mm",
+ "LLLL": "dddd, D MMMM YYYY HH:mm",
+ },
+}
diff --git a/src/pendulum/locales/pl/locale.py b/src/pendulum/locales/pl/locale.py
new file mode 100644
index 0000000..c709120
--- /dev/null
+++ b/src/pendulum/locales/pl/locale.py
@@ -0,0 +1,287 @@
+from __future__ import annotations
+
+from pendulum.locales.pl.custom import translations as custom_translations
+
+
+"""
+pl locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "few"
+ if (
+ (
+ (0 == 0 and (0 == 0))
+ and ((n % 10) == (n % 10) and ((n % 10) >= 2 and (n % 10) <= 4))
+ )
+ and (not ((n % 100) == (n % 100) and ((n % 100) >= 12 and (n % 100) <= 14)))
+ )
+ else "many"
+ if (
+ (
+ (
+ ((0 == 0 and (0 == 0)) and (not (n == n and (n == 1))))
+ and ((n % 10) == (n % 10) and ((n % 10) >= 0 and (n % 10) <= 1))
+ )
+ or (
+ (0 == 0 and (0 == 0))
+ and ((n % 10) == (n % 10) and ((n % 10) >= 5 and (n % 10) <= 9))
+ )
+ )
+ or (
+ (0 == 0 and (0 == 0))
+ and ((n % 100) == (n % 100) and ((n % 100) >= 12 and (n % 100) <= 14))
+ )
+ )
+ else "one"
+ if ((n == n and (n == 1)) and (0 == 0 and (0 == 0)))
+ else "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "pon.",
+ 1: "wt.",
+ 2: "śr.",
+ 3: "czw.",
+ 4: "pt.",
+ 5: "sob.",
+ 6: "niedz.",
+ },
+ "narrow": {0: "p", 1: "w", 2: "ś", 3: "c", 4: "p", 5: "s", 6: "n"},
+ "short": {
+ 0: "pon",
+ 1: "wto",
+ 2: "śro",
+ 3: "czw",
+ 4: "pią",
+ 5: "sob",
+ 6: "nie",
+ },
+ "wide": {
+ 0: "poniedziałek",
+ 1: "wtorek",
+ 2: "środa",
+ 3: "czwartek",
+ 4: "piątek",
+ 5: "sobota",
+ 6: "niedziela",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "sty",
+ 2: "lut",
+ 3: "mar",
+ 4: "kwi",
+ 5: "maj",
+ 6: "cze",
+ 7: "lip",
+ 8: "sie",
+ 9: "wrz",
+ 10: "paź",
+ 11: "lis",
+ 12: "gru",
+ },
+ "narrow": {
+ 1: "s",
+ 2: "l",
+ 3: "m",
+ 4: "k",
+ 5: "m",
+ 6: "c",
+ 7: "l",
+ 8: "s",
+ 9: "w",
+ 10: "p",
+ 11: "l",
+ 12: "g",
+ },
+ "wide": {
+ 1: "stycznia",
+ 2: "lutego",
+ 3: "marca",
+ 4: "kwietnia",
+ 5: "maja",
+ 6: "czerwca",
+ 7: "lipca",
+ 8: "sierpnia",
+ 9: "września",
+ 10: "października",
+ 11: "listopada",
+ 12: "grudnia",
+ },
+ },
+ "units": {
+ "year": {
+ "one": "{0} rok",
+ "few": "{0} lata",
+ "many": "{0} lat",
+ "other": "{0} roku",
+ },
+ "month": {
+ "one": "{0} miesiąc",
+ "few": "{0} miesiące",
+ "many": "{0} miesięcy",
+ "other": "{0} miesiąca",
+ },
+ "week": {
+ "one": "{0} tydzień",
+ "few": "{0} tygodnie",
+ "many": "{0} tygodni",
+ "other": "{0} tygodnia",
+ },
+ "day": {
+ "one": "{0} dzień",
+ "few": "{0} dni",
+ "many": "{0} dni",
+ "other": "{0} dnia",
+ },
+ "hour": {
+ "one": "{0} godzina",
+ "few": "{0} godziny",
+ "many": "{0} godzin",
+ "other": "{0} godziny",
+ },
+ "minute": {
+ "one": "{0} minuta",
+ "few": "{0} minuty",
+ "many": "{0} minut",
+ "other": "{0} minuty",
+ },
+ "second": {
+ "one": "{0} sekunda",
+ "few": "{0} sekundy",
+ "many": "{0} sekund",
+ "other": "{0} sekundy",
+ },
+ "microsecond": {
+ "one": "{0} mikrosekunda",
+ "few": "{0} mikrosekundy",
+ "many": "{0} mikrosekund",
+ "other": "{0} mikrosekundy",
+ },
+ },
+ "relative": {
+ "year": {
+ "future": {
+ "other": "za {0} roku",
+ "one": "za {0} rok",
+ "few": "za {0} lata",
+ "many": "za {0} lat",
+ },
+ "past": {
+ "other": "{0} roku temu",
+ "one": "{0} rok temu",
+ "few": "{0} lata temu",
+ "many": "{0} lat temu",
+ },
+ },
+ "month": {
+ "future": {
+ "other": "za {0} miesiąca",
+ "one": "za {0} miesiąc",
+ "few": "za {0} miesiące",
+ "many": "za {0} miesięcy",
+ },
+ "past": {
+ "other": "{0} miesiąca temu",
+ "one": "{0} miesiąc temu",
+ "few": "{0} miesiące temu",
+ "many": "{0} miesięcy temu",
+ },
+ },
+ "week": {
+ "future": {
+ "other": "za {0} tygodnia",
+ "one": "za {0} tydzień",
+ "few": "za {0} tygodnie",
+ "many": "za {0} tygodni",
+ },
+ "past": {
+ "other": "{0} tygodnia temu",
+ "one": "{0} tydzień temu",
+ "few": "{0} tygodnie temu",
+ "many": "{0} tygodni temu",
+ },
+ },
+ "day": {
+ "future": {
+ "other": "za {0} dnia",
+ "one": "za {0} dzień",
+ "few": "za {0} dni",
+ "many": "za {0} dni",
+ },
+ "past": {
+ "other": "{0} dnia temu",
+ "one": "{0} dzień temu",
+ "few": "{0} dni temu",
+ "many": "{0} dni temu",
+ },
+ },
+ "hour": {
+ "future": {
+ "other": "za {0} godziny",
+ "one": "za {0} godzinę",
+ "few": "za {0} godziny",
+ "many": "za {0} godzin",
+ },
+ "past": {
+ "other": "{0} godziny temu",
+ "one": "{0} godzinę temu",
+ "few": "{0} godziny temu",
+ "many": "{0} godzin temu",
+ },
+ },
+ "minute": {
+ "future": {
+ "other": "za {0} minuty",
+ "one": "za {0} minutę",
+ "few": "za {0} minuty",
+ "many": "za {0} minut",
+ },
+ "past": {
+ "other": "{0} minuty temu",
+ "one": "{0} minutę temu",
+ "few": "{0} minuty temu",
+ "many": "{0} minut temu",
+ },
+ },
+ "second": {
+ "future": {
+ "other": "za {0} sekundy",
+ "one": "za {0} sekundę",
+ "few": "za {0} sekundy",
+ "many": "za {0} sekund",
+ },
+ "past": {
+ "other": "{0} sekundy temu",
+ "one": "{0} sekundę temu",
+ "few": "{0} sekundy temu",
+ "many": "{0} sekund temu",
+ },
+ },
+ },
+ "day_periods": {
+ "midnight": "o północy",
+ "am": "AM",
+ "noon": "w południe",
+ "pm": "PM",
+ "morning1": "rano",
+ "morning2": "przed południem",
+ "afternoon1": "po południu",
+ "evening1": "wieczorem",
+ "night1": "w nocy",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/pt_br/__init__.py b/src/pendulum/locales/pt_br/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/pt_br/__init__.py
diff --git a/src/pendulum/locales/pt_br/custom.py b/src/pendulum/locales/pt_br/custom.py
new file mode 100644
index 0000000..87a7702
--- /dev/null
+++ b/src/pendulum/locales/pt_br/custom.py
@@ -0,0 +1,20 @@
+"""
+pt-br custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ # Relative time
+ "after": "após {0}",
+ "before": "{0} atrás",
+ # Date formats
+ "date_formats": {
+ "LTS": "HH:mm:ss",
+ "LT": "HH:mm",
+ "LLLL": "dddd, D [de] MMMM [de] YYYY [às] HH:mm",
+ "LLL": "D [de] MMMM [de] YYYY [às] HH:mm",
+ "LL": "D [de] MMMM [de] YYYY",
+ "L": "DD/MM/YYYY",
+ },
+}
diff --git a/src/pendulum/locales/pt_br/locale.py b/src/pendulum/locales/pt_br/locale.py
new file mode 100644
index 0000000..793cba8
--- /dev/null
+++ b/src/pendulum/locales/pt_br/locale.py
@@ -0,0 +1,151 @@
+from __future__ import annotations
+
+from pendulum.locales.pt_br.custom import translations as custom_translations
+
+
+"""
+pt_br locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "one"
+ if ((n == n and (n >= 0 and n <= 2)) and (not (n == n and (n == 2))))
+ else "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "seg",
+ 1: "ter",
+ 2: "qua",
+ 3: "qui",
+ 4: "sex",
+ 5: "sáb",
+ 6: "dom",
+ },
+ "narrow": {0: "S", 1: "T", 2: "Q", 3: "Q", 4: "S", 5: "S", 6: "D"},
+ "short": {
+ 0: "seg",
+ 1: "ter",
+ 2: "qua",
+ 3: "qui",
+ 4: "sex",
+ 5: "sáb",
+ 6: "dom",
+ },
+ "wide": {
+ 0: "segunda-feira",
+ 1: "terça-feira",
+ 2: "quarta-feira",
+ 3: "quinta-feira",
+ 4: "sexta-feira",
+ 5: "sábado",
+ 6: "domingo",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "jan",
+ 2: "fev",
+ 3: "mar",
+ 4: "abr",
+ 5: "mai",
+ 6: "jun",
+ 7: "jul",
+ 8: "ago",
+ 9: "set",
+ 10: "out",
+ 11: "nov",
+ 12: "dez",
+ },
+ "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: "janeiro",
+ 2: "fevereiro",
+ 3: "março",
+ 4: "abril",
+ 5: "maio",
+ 6: "junho",
+ 7: "julho",
+ 8: "agosto",
+ 9: "setembro",
+ 10: "outubro",
+ 11: "novembro",
+ 12: "dezembro",
+ },
+ },
+ "units": {
+ "year": {"one": "{0} ano", "other": "{0} anos"},
+ "month": {"one": "{0} mês", "other": "{0} meses"},
+ "week": {"one": "{0} semana", "other": "{0} semanas"},
+ "day": {"one": "{0} dia", "other": "{0} dias"},
+ "hour": {"one": "{0} hora", "other": "{0} horas"},
+ "minute": {"one": "{0} minuto", "other": "{0} minutos"},
+ "second": {"one": "{0} segundo", "other": "{0} segundos"},
+ "microsecond": {"one": "{0} microssegundo", "other": "{0} microssegundos"},
+ },
+ "relative": {
+ "year": {
+ "future": {"other": "em {0} anos", "one": "em {0} ano"},
+ "past": {"other": "há {0} anos", "one": "há {0} ano"},
+ },
+ "month": {
+ "future": {"other": "em {0} meses", "one": "em {0} mês"},
+ "past": {"other": "há {0} meses", "one": "há {0} mês"},
+ },
+ "week": {
+ "future": {"other": "em {0} semanas", "one": "em {0} semana"},
+ "past": {"other": "há {0} semanas", "one": "há {0} semana"},
+ },
+ "day": {
+ "future": {"other": "em {0} dias", "one": "em {0} dia"},
+ "past": {"other": "há {0} dias", "one": "há {0} dia"},
+ },
+ "hour": {
+ "future": {"other": "em {0} horas", "one": "em {0} hora"},
+ "past": {"other": "há {0} horas", "one": "há {0} hora"},
+ },
+ "minute": {
+ "future": {"other": "em {0} minutos", "one": "em {0} minuto"},
+ "past": {"other": "há {0} minutos", "one": "há {0} minuto"},
+ },
+ "second": {
+ "future": {"other": "em {0} segundos", "one": "em {0} segundo"},
+ "past": {"other": "há {0} segundos", "one": "há {0} segundo"},
+ },
+ },
+ "day_periods": {
+ "midnight": "meia-noite",
+ "am": "AM",
+ "noon": "meio-dia",
+ "pm": "PM",
+ "morning1": "da manhã",
+ "afternoon1": "da tarde",
+ "evening1": "da noite",
+ "night1": "da madrugada",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 6,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/ru/__init__.py b/src/pendulum/locales/ru/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/ru/__init__.py
diff --git a/src/pendulum/locales/ru/custom.py b/src/pendulum/locales/ru/custom.py
new file mode 100644
index 0000000..e1f87ff
--- /dev/null
+++ b/src/pendulum/locales/ru/custom.py
@@ -0,0 +1,22 @@
+"""
+ru custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ # Relative time
+ "ago": "{} назад",
+ "from_now": "через {}",
+ "after": "{0} после",
+ "before": "{0} до",
+ # Date formats
+ "date_formats": {
+ "LTS": "HH:mm:ss",
+ "LT": "HH:mm",
+ "L": "DD.MM.YYYY",
+ "LL": "D MMMM YYYY г.",
+ "LLL": "D MMMM YYYY г., HH:mm",
+ "LLLL": "dddd, D MMMM YYYY г., HH:mm",
+ },
+}
diff --git a/src/pendulum/locales/ru/locale.py b/src/pendulum/locales/ru/locale.py
new file mode 100644
index 0000000..b9eab83
--- /dev/null
+++ b/src/pendulum/locales/ru/locale.py
@@ -0,0 +1,278 @@
+from __future__ import annotations
+
+from pendulum.locales.ru.custom import translations as custom_translations
+
+
+"""
+ru locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "few"
+ if (
+ (
+ (0 == 0 and (0 == 0))
+ and ((n % 10) == (n % 10) and ((n % 10) >= 2 and (n % 10) <= 4))
+ )
+ and (not ((n % 100) == (n % 100) and ((n % 100) >= 12 and (n % 100) <= 14)))
+ )
+ else "many"
+ if (
+ (
+ ((0 == 0 and (0 == 0)) and ((n % 10) == (n % 10) and ((n % 10) == 0)))
+ or (
+ (0 == 0 and (0 == 0))
+ and ((n % 10) == (n % 10) and ((n % 10) >= 5 and (n % 10) <= 9))
+ )
+ )
+ or (
+ (0 == 0 and (0 == 0))
+ and ((n % 100) == (n % 100) and ((n % 100) >= 11 and (n % 100) <= 14))
+ )
+ )
+ else "one"
+ if (
+ ((0 == 0 and (0 == 0)) and ((n % 10) == (n % 10) and ((n % 10) == 1)))
+ and (not ((n % 100) == (n % 100) and ((n % 100) == 11)))
+ )
+ else "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "пн",
+ 1: "вт",
+ 2: "ср",
+ 3: "чт",
+ 4: "пт",
+ 5: "сб",
+ 6: "вс",
+ },
+ "narrow": {0: "пн", 1: "вт", 2: "ср", 3: "чт", 4: "пт", 5: "сб", 6: "вс"},
+ "short": {0: "пн", 1: "вт", 2: "ср", 3: "чт", 4: "пт", 5: "сб", 6: "вс"},
+ "wide": {
+ 0: "понедельник",
+ 1: "вторник",
+ 2: "среда",
+ 3: "четверг",
+ 4: "пятница",
+ 5: "суббота",
+ 6: "воскресенье",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "янв.",
+ 2: "февр.",
+ 3: "мар.",
+ 4: "апр.",
+ 5: "мая",
+ 6: "июн.",
+ 7: "июл.",
+ 8: "авг.",
+ 9: "сент.",
+ 10: "окт.",
+ 11: "нояб.",
+ 12: "дек.",
+ },
+ "narrow": {
+ 1: "Я",
+ 2: "Ф",
+ 3: "М",
+ 4: "А",
+ 5: "М",
+ 6: "И",
+ 7: "И",
+ 8: "А",
+ 9: "С",
+ 10: "О",
+ 11: "Н",
+ 12: "Д",
+ },
+ "wide": {
+ 1: "января",
+ 2: "февраля",
+ 3: "марта",
+ 4: "апреля",
+ 5: "мая",
+ 6: "июня",
+ 7: "июля",
+ 8: "августа",
+ 9: "сентября",
+ 10: "октября",
+ 11: "ноября",
+ 12: "декабря",
+ },
+ },
+ "units": {
+ "year": {
+ "one": "{0} год",
+ "few": "{0} года",
+ "many": "{0} лет",
+ "other": "{0} года",
+ },
+ "month": {
+ "one": "{0} месяц",
+ "few": "{0} месяца",
+ "many": "{0} месяцев",
+ "other": "{0} месяца",
+ },
+ "week": {
+ "one": "{0} неделя",
+ "few": "{0} недели",
+ "many": "{0} недель",
+ "other": "{0} недели",
+ },
+ "day": {
+ "one": "{0} день",
+ "few": "{0} дня",
+ "many": "{0} дней",
+ "other": "{0} дня",
+ },
+ "hour": {
+ "one": "{0} час",
+ "few": "{0} часа",
+ "many": "{0} часов",
+ "other": "{0} часа",
+ },
+ "minute": {
+ "one": "{0} минута",
+ "few": "{0} минуты",
+ "many": "{0} минут",
+ "other": "{0} минуты",
+ },
+ "second": {
+ "one": "{0} секунда",
+ "few": "{0} секунды",
+ "many": "{0} секунд",
+ "other": "{0} секунды",
+ },
+ "microsecond": {
+ "one": "{0} микросекунда",
+ "few": "{0} микросекунды",
+ "many": "{0} микросекунд",
+ "other": "{0} микросекунды",
+ },
+ },
+ "relative": {
+ "year": {
+ "future": {
+ "other": "через {0} года",
+ "one": "через {0} год",
+ "few": "через {0} года",
+ "many": "через {0} лет",
+ },
+ "past": {
+ "other": "{0} года назад",
+ "one": "{0} год назад",
+ "few": "{0} года назад",
+ "many": "{0} лет назад",
+ },
+ },
+ "month": {
+ "future": {
+ "other": "через {0} месяца",
+ "one": "через {0} месяц",
+ "few": "через {0} месяца",
+ "many": "через {0} месяцев",
+ },
+ "past": {
+ "other": "{0} месяца назад",
+ "one": "{0} месяц назад",
+ "few": "{0} месяца назад",
+ "many": "{0} месяцев назад",
+ },
+ },
+ "week": {
+ "future": {
+ "other": "через {0} недели",
+ "one": "через {0} неделю",
+ "few": "через {0} недели",
+ "many": "через {0} недель",
+ },
+ "past": {
+ "other": "{0} недели назад",
+ "one": "{0} неделю назад",
+ "few": "{0} недели назад",
+ "many": "{0} недель назад",
+ },
+ },
+ "day": {
+ "future": {
+ "other": "через {0} дня",
+ "one": "через {0} день",
+ "few": "через {0} дня",
+ "many": "через {0} дней",
+ },
+ "past": {
+ "other": "{0} дня назад",
+ "one": "{0} день назад",
+ "few": "{0} дня назад",
+ "many": "{0} дней назад",
+ },
+ },
+ "hour": {
+ "future": {
+ "other": "через {0} часа",
+ "one": "через {0} час",
+ "few": "через {0} часа",
+ "many": "через {0} часов",
+ },
+ "past": {
+ "other": "{0} часа назад",
+ "one": "{0} час назад",
+ "few": "{0} часа назад",
+ "many": "{0} часов назад",
+ },
+ },
+ "minute": {
+ "future": {
+ "other": "через {0} минуты",
+ "one": "через {0} минуту",
+ "few": "через {0} минуты",
+ "many": "через {0} минут",
+ },
+ "past": {
+ "other": "{0} минуты назад",
+ "one": "{0} минуту назад",
+ "few": "{0} минуты назад",
+ "many": "{0} минут назад",
+ },
+ },
+ "second": {
+ "future": {
+ "other": "через {0} секунды",
+ "one": "через {0} секунду",
+ "few": "через {0} секунды",
+ "many": "через {0} секунд",
+ },
+ "past": {
+ "other": "{0} секунды назад",
+ "one": "{0} секунду назад",
+ "few": "{0} секунды назад",
+ "many": "{0} секунд назад",
+ },
+ },
+ },
+ "day_periods": {
+ "midnight": "полночь",
+ "am": "AM",
+ "noon": "полдень",
+ "pm": "PM",
+ "morning1": "утра",
+ "afternoon1": "дня",
+ "evening1": "вечера",
+ "night1": "ночи",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/sk/__init__.py b/src/pendulum/locales/sk/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/sk/__init__.py
diff --git a/src/pendulum/locales/sk/custom.py b/src/pendulum/locales/sk/custom.py
new file mode 100644
index 0000000..0059c11
--- /dev/null
+++ b/src/pendulum/locales/sk/custom.py
@@ -0,0 +1,22 @@
+"""
+sk custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ # Relative time
+ "ago": "pred {}",
+ "from_now": "o {}",
+ "after": "{0} po",
+ "before": "{0} pred",
+ # Date formats
+ "date_formats": {
+ "LTS": "HH:mm:ss",
+ "LT": "HH:mm",
+ "LLLL": "dddd, D. MMMM YYYY HH:mm",
+ "LLL": "D. MMMM YYYY HH:mm",
+ "LL": "D. MMMM YYYY",
+ "L": "DD.MM.YYYY",
+ },
+}
diff --git a/src/pendulum/locales/sk/locale.py b/src/pendulum/locales/sk/locale.py
new file mode 100644
index 0000000..530303f
--- /dev/null
+++ b/src/pendulum/locales/sk/locale.py
@@ -0,0 +1,274 @@
+from __future__ import annotations
+
+from pendulum.locales.sk.custom import translations as custom_translations
+
+
+"""
+sk locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "few"
+ if ((n == n and (n >= 2 and n <= 4)) and (0 == 0 and (0 == 0)))
+ else "many"
+ if (not (0 == 0 and (0 == 0)))
+ else "one"
+ if ((n == n and (n == 1)) and (0 == 0 and (0 == 0)))
+ else "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "po",
+ 1: "ut",
+ 2: "st",
+ 3: "št",
+ 4: "pi",
+ 5: "so",
+ 6: "ne",
+ },
+ "narrow": {
+ 0: "p",
+ 1: "u",
+ 2: "s",
+ 3: "š",
+ 4: "p",
+ 5: "s",
+ 6: "n",
+ },
+ "short": {
+ 0: "po",
+ 1: "ut",
+ 2: "st",
+ 3: "št",
+ 4: "pi",
+ 5: "so",
+ 6: "ne",
+ },
+ "wide": {
+ 0: "pondelok",
+ 1: "utorok",
+ 2: "streda",
+ 3: "štvrtok",
+ 4: "piatok",
+ 5: "sobota",
+ 6: "nedeľa",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "jan",
+ 2: "feb",
+ 3: "mar",
+ 4: "apr",
+ 5: "máj",
+ 6: "jún",
+ 7: "júl",
+ 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: "januára",
+ 2: "februára",
+ 3: "marca",
+ 4: "apríla",
+ 5: "mája",
+ 6: "júna",
+ 7: "júla",
+ 8: "augusta",
+ 9: "septembra",
+ 10: "októbra",
+ 11: "novembra",
+ 12: "decembra",
+ },
+ },
+ "units": {
+ "year": {
+ "one": "{0} rok",
+ "few": "{0} roky",
+ "many": "{0} roka",
+ "other": "{0} rokov",
+ },
+ "month": {
+ "one": "{0} mesiac",
+ "few": "{0} mesiace",
+ "many": "{0} mesiaca",
+ "other": "{0} mesiacov",
+ },
+ "week": {
+ "one": "{0} týždeň",
+ "few": "{0} týždne",
+ "many": "{0} týždňa",
+ "other": "{0} týždňov",
+ },
+ "day": {
+ "one": "{0} deň",
+ "few": "{0} dni",
+ "many": "{0} dňa",
+ "other": "{0} dní",
+ },
+ "hour": {
+ "one": "{0} hodina",
+ "few": "{0} hodiny",
+ "many": "{0} hodiny",
+ "other": "{0} hodín",
+ },
+ "minute": {
+ "one": "{0} minúta",
+ "few": "{0} minúty",
+ "many": "{0} minúty",
+ "other": "{0} minút",
+ },
+ "second": {
+ "one": "{0} sekunda",
+ "few": "{0} sekundy",
+ "many": "{0} sekundy",
+ "other": "{0} sekúnd",
+ },
+ "microsecond": {
+ "one": "{0} mikrosekunda",
+ "few": "{0} mikrosekundy",
+ "many": "{0} mikrosekundy",
+ "other": "{0} mikrosekúnd",
+ },
+ },
+ "relative": {
+ "year": {
+ "future": {
+ "other": "o {0} rokov",
+ "one": "o {0} rok",
+ "few": "o {0} roky",
+ "many": "o {0} roka",
+ },
+ "past": {
+ "other": "pred {0} rokmi",
+ "one": "pred {0} rokom",
+ "few": "pred {0} rokmi",
+ "many": "pred {0} roka",
+ },
+ },
+ "month": {
+ "future": {
+ "other": "o {0} mesiacov",
+ "one": "o {0} mesiac",
+ "few": "o {0} mesiace",
+ "many": "o {0} mesiaca",
+ },
+ "past": {
+ "other": "pred {0} mesiacmi",
+ "one": "pred {0} mesiacom",
+ "few": "pred {0} mesiacmi",
+ "many": "pred {0} mesiaca",
+ },
+ },
+ "week": {
+ "future": {
+ "other": "o {0} týždňov",
+ "one": "o {0} týždeň",
+ "few": "o {0} týždne",
+ "many": "o {0} týždňa",
+ },
+ "past": {
+ "other": "pred {0} týždňami",
+ "one": "pred {0} týždňom",
+ "few": "pred {0} týždňami",
+ "many": "pred {0} týždňa",
+ },
+ },
+ "day": {
+ "future": {
+ "other": "o {0} dní",
+ "one": "o {0} deň",
+ "few": "o {0} dni",
+ "many": "o {0} dňa",
+ },
+ "past": {
+ "other": "pred {0} dňami",
+ "one": "pred {0} dňom",
+ "few": "pred {0} dňami",
+ "many": "pred {0} dňa",
+ },
+ },
+ "hour": {
+ "future": {
+ "other": "o {0} hodín",
+ "one": "o {0} hodinu",
+ "few": "o {0} hodiny",
+ "many": "o {0} hodiny",
+ },
+ "past": {
+ "other": "pred {0} hodinami",
+ "one": "pred {0} hodinou",
+ "few": "pred {0} hodinami",
+ "many": "pred {0} hodinou",
+ },
+ },
+ "minute": {
+ "future": {
+ "other": "o {0} minút",
+ "one": "o {0} minútu",
+ "few": "o {0} minúty",
+ "many": "o {0} minúty",
+ },
+ "past": {
+ "other": "pred {0} minútami",
+ "one": "pred {0} minútou",
+ "few": "pred {0} minútami",
+ "many": "pred {0} minúty",
+ },
+ },
+ "second": {
+ "future": {
+ "other": "o {0} sekúnd",
+ "one": "o {0} sekundu",
+ "few": "o {0} sekundy",
+ "many": "o {0} sekundy",
+ },
+ "past": {
+ "other": "pred {0} sekundami",
+ "one": "pred {0} sekundou",
+ "few": "pred {0} sekundami",
+ "many": "pred {0} sekundy",
+ },
+ },
+ },
+ "day_periods": {
+ "midnight": "o polnoci",
+ "am": "AM",
+ "noon": "napoludnie",
+ "pm": "PM",
+ "morning1": "ráno",
+ "morning2": "dopoludnia",
+ "afternoon1": "popoludní",
+ "evening1": "večer",
+ "night1": "v noci",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/sv/__init__.py b/src/pendulum/locales/sv/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/sv/__init__.py
diff --git a/src/pendulum/locales/sv/custom.py b/src/pendulum/locales/sv/custom.py
new file mode 100644
index 0000000..83f36b1
--- /dev/null
+++ b/src/pendulum/locales/sv/custom.py
@@ -0,0 +1,22 @@
+"""
+sv custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ # Relative time
+ "ago": "{} sedan",
+ "from_now": "från nu {}",
+ "after": "{0} efter",
+ "before": "{0} innan",
+ # Date formats
+ "date_formats": {
+ "LTS": "HH:mm:ss",
+ "LT": "HH:mm",
+ "L": "YYYY-MM-DD",
+ "LL": "D MMMM YYYY",
+ "LLL": "D MMMM YYYY, HH:mm",
+ "LLLL": "dddd, D MMMM YYYY, HH:mm",
+ },
+}
diff --git a/src/pendulum/locales/sv/locale.py b/src/pendulum/locales/sv/locale.py
new file mode 100644
index 0000000..c3c4472
--- /dev/null
+++ b/src/pendulum/locales/sv/locale.py
@@ -0,0 +1,230 @@
+from __future__ import annotations
+
+from pendulum.locales.sv.custom import translations as custom_translations
+
+
+"""
+sv locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "one"
+ if ((n == n and (n == 1)) and (0 == 0 and (0 == 0)))
+ else "other",
+ "ordinal": lambda n: "one"
+ if (
+ ((n % 10) == (n % 10) and (((n % 10) == 1) or ((n % 10) == 2)))
+ and (not ((n % 100) == (n % 100) and (((n % 100) == 11) or ((n % 100) == 12))))
+ )
+ else "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "mån",
+ 1: "tis",
+ 2: "ons",
+ 3: "tors",
+ 4: "fre",
+ 5: "lör",
+ 6: "sön",
+ },
+ "narrow": {
+ 0: "M",
+ 1: "T",
+ 2: "O",
+ 3: "T",
+ 4: "F",
+ 5: "L",
+ 6: "S",
+ },
+ "short": {
+ 0: "må",
+ 1: "ti",
+ 2: "on",
+ 3: "to",
+ 4: "fr",
+ 5: "lö",
+ 6: "sö",
+ },
+ "wide": {
+ 0: "måndag",
+ 1: "tisdag",
+ 2: "onsdag",
+ 3: "torsdag",
+ 4: "fredag",
+ 5: "lördag",
+ 6: "söndag",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "jan.",
+ 2: "feb.",
+ 3: "mars",
+ 4: "apr.",
+ 5: "maj",
+ 6: "juni",
+ 7: "juli",
+ 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: "mars",
+ 4: "april",
+ 5: "maj",
+ 6: "juni",
+ 7: "juli",
+ 8: "augusti",
+ 9: "september",
+ 10: "oktober",
+ 11: "november",
+ 12: "december",
+ },
+ },
+ "units": {
+ "year": {
+ "one": "{0} år",
+ "other": "{0} år",
+ },
+ "month": {
+ "one": "{0} månad",
+ "other": "{0} månader",
+ },
+ "week": {
+ "one": "{0} vecka",
+ "other": "{0} veckor",
+ },
+ "day": {
+ "one": "{0} dygn",
+ "other": "{0} dygn",
+ },
+ "hour": {
+ "one": "{0} timme",
+ "other": "{0} timmar",
+ },
+ "minute": {
+ "one": "{0} minut",
+ "other": "{0} minuter",
+ },
+ "second": {
+ "one": "{0} sekund",
+ "other": "{0} sekunder",
+ },
+ "microsecond": {
+ "one": "{0} mikrosekund",
+ "other": "{0} mikrosekunder",
+ },
+ },
+ "relative": {
+ "year": {
+ "future": {
+ "other": "om {0} år",
+ "one": "om {0} år",
+ },
+ "past": {
+ "other": "för {0} år sedan",
+ "one": "för {0} år sedan",
+ },
+ },
+ "month": {
+ "future": {
+ "other": "om {0} månader",
+ "one": "om {0} månad",
+ },
+ "past": {
+ "other": "för {0} månader sedan",
+ "one": "för {0} månad sedan",
+ },
+ },
+ "week": {
+ "future": {
+ "other": "om {0} veckor",
+ "one": "om {0} vecka",
+ },
+ "past": {
+ "other": "för {0} veckor sedan",
+ "one": "för {0} vecka sedan",
+ },
+ },
+ "day": {
+ "future": {
+ "other": "om {0} dagar",
+ "one": "om {0} dag",
+ },
+ "past": {
+ "other": "för {0} dagar sedan",
+ "one": "för {0} dag sedan",
+ },
+ },
+ "hour": {
+ "future": {
+ "other": "om {0} timmar",
+ "one": "om {0} timme",
+ },
+ "past": {
+ "other": "för {0} timmar sedan",
+ "one": "för {0} timme sedan",
+ },
+ },
+ "minute": {
+ "future": {
+ "other": "om {0} minuter",
+ "one": "om {0} minut",
+ },
+ "past": {
+ "other": "för {0} minuter sedan",
+ "one": "för {0} minut sedan",
+ },
+ },
+ "second": {
+ "future": {
+ "other": "om {0} sekunder",
+ "one": "om {0} sekund",
+ },
+ "past": {
+ "other": "för {0} sekunder sedan",
+ "one": "för {0} sekund sedan",
+ },
+ },
+ },
+ "day_periods": {
+ "midnight": "midnatt",
+ "am": "fm",
+ "pm": "em",
+ "morning1": "på morgonen",
+ "morning2": "på förmiddagen",
+ "afternoon1": "på eftermiddagen",
+ "evening1": "på kvällen",
+ "night1": "på natten",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/tr/__init__.py b/src/pendulum/locales/tr/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/tr/__init__.py
diff --git a/src/pendulum/locales/tr/custom.py b/src/pendulum/locales/tr/custom.py
new file mode 100644
index 0000000..b7fd3c7
--- /dev/null
+++ b/src/pendulum/locales/tr/custom.py
@@ -0,0 +1,24 @@
+"""
+tr custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ # Relative time
+ "ago": "{} önce",
+ "from_now": "{} içinde",
+ "after": "{0} sonra",
+ "before": "{0} önce",
+ # Ordinals
+ "ordinal": {"one": ".", "two": ".", "few": ".", "other": "."},
+ # Date formats
+ "date_formats": {
+ "LTS": "h:mm:ss A",
+ "LT": "h:mm A",
+ "L": "MM/DD/YYYY",
+ "LL": "MMMM D, YYYY",
+ "LLL": "MMMM D, YYYY h:mm A",
+ "LLLL": "dddd, MMMM D, YYYY h:mm A",
+ },
+}
diff --git a/src/pendulum/locales/tr/locale.py b/src/pendulum/locales/tr/locale.py
new file mode 100644
index 0000000..f0233f2
--- /dev/null
+++ b/src/pendulum/locales/tr/locale.py
@@ -0,0 +1,225 @@
+from __future__ import annotations
+
+from pendulum.locales.tr.custom import translations as custom_translations
+
+
+"""
+tr locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "one" if (n == n and (n == 1)) else "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "Pzt",
+ 1: "Sal",
+ 2: "Çar",
+ 3: "Per",
+ 4: "Cum",
+ 5: "Cmt",
+ 6: "Paz",
+ },
+ "narrow": {
+ 0: "P",
+ 1: "S",
+ 2: "Ç",
+ 3: "P",
+ 4: "C",
+ 5: "C",
+ 6: "P",
+ },
+ "short": {
+ 0: "Pt",
+ 1: "Sa",
+ 2: "Ça",
+ 3: "Pe",
+ 4: "Cu",
+ 5: "Ct",
+ 6: "Pa",
+ },
+ "wide": {
+ 0: "Pazartesi",
+ 1: "Salı",
+ 2: "Çarşamba",
+ 3: "Perşembe",
+ 4: "Cuma",
+ 5: "Cumartesi",
+ 6: "Pazar",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "Oca",
+ 2: "Şub",
+ 3: "Mar",
+ 4: "Nis",
+ 5: "May",
+ 6: "Haz",
+ 7: "Tem",
+ 8: "Ağu",
+ 9: "Eyl",
+ 10: "Eki",
+ 11: "Kas",
+ 12: "Ara",
+ },
+ "narrow": {
+ 1: "O",
+ 2: "Ş",
+ 3: "M",
+ 4: "N",
+ 5: "M",
+ 6: "H",
+ 7: "T",
+ 8: "A",
+ 9: "E",
+ 10: "E",
+ 11: "K",
+ 12: "A",
+ },
+ "wide": {
+ 1: "Ocak",
+ 2: "Şubat",
+ 3: "Mart",
+ 4: "Nisan",
+ 5: "Mayıs",
+ 6: "Haziran",
+ 7: "Temmuz",
+ 8: "Ağustos",
+ 9: "Eylül",
+ 10: "Ekim",
+ 11: "Kasım",
+ 12: "Aralık",
+ },
+ },
+ "units": {
+ "year": {
+ "one": "{0} yıl",
+ "other": "{0} yıl",
+ },
+ "month": {
+ "one": "{0} ay",
+ "other": "{0} ay",
+ },
+ "week": {
+ "one": "{0} hafta",
+ "other": "{0} hafta",
+ },
+ "day": {
+ "one": "{0} gün",
+ "other": "{0} gün",
+ },
+ "hour": {
+ "one": "{0} saat",
+ "other": "{0} saat",
+ },
+ "minute": {
+ "one": "{0} dakika",
+ "other": "{0} dakika",
+ },
+ "second": {
+ "one": "{0} saniye",
+ "other": "{0} saniye",
+ },
+ "microsecond": {
+ "one": "{0} mikrosaniye",
+ "other": "{0} mikrosaniye",
+ },
+ },
+ "relative": {
+ "year": {
+ "future": {
+ "other": "{0} yıl sonra",
+ "one": "{0} yıl sonra",
+ },
+ "past": {
+ "other": "{0} yıl önce",
+ "one": "{0} yıl önce",
+ },
+ },
+ "month": {
+ "future": {
+ "other": "{0} ay sonra",
+ "one": "{0} ay sonra",
+ },
+ "past": {
+ "other": "{0} ay önce",
+ "one": "{0} ay önce",
+ },
+ },
+ "week": {
+ "future": {
+ "other": "{0} hafta sonra",
+ "one": "{0} hafta sonra",
+ },
+ "past": {
+ "other": "{0} hafta önce",
+ "one": "{0} hafta önce",
+ },
+ },
+ "day": {
+ "future": {
+ "other": "{0} gün sonra",
+ "one": "{0} gün sonra",
+ },
+ "past": {
+ "other": "{0} gün önce",
+ "one": "{0} gün önce",
+ },
+ },
+ "hour": {
+ "future": {
+ "other": "{0} saat sonra",
+ "one": "{0} saat sonra",
+ },
+ "past": {
+ "other": "{0} saat önce",
+ "one": "{0} saat önce",
+ },
+ },
+ "minute": {
+ "future": {
+ "other": "{0} dakika sonra",
+ "one": "{0} dakika sonra",
+ },
+ "past": {
+ "other": "{0} dakika önce",
+ "one": "{0} dakika önce",
+ },
+ },
+ "second": {
+ "future": {
+ "other": "{0} saniye sonra",
+ "one": "{0} saniye sonra",
+ },
+ "past": {
+ "other": "{0} saniye önce",
+ "one": "{0} saniye önce",
+ },
+ },
+ },
+ "day_periods": {
+ "midnight": "gece yarısı",
+ "am": "ÖÖ",
+ "noon": "öğle",
+ "pm": "ÖS",
+ "morning1": "sabah",
+ "morning2": "öğleden önce",
+ "afternoon1": "öğleden sonra",
+ "afternoon2": "akşamüstü",
+ "evening1": "akşam",
+ "night1": "gece",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}
diff --git a/src/pendulum/locales/zh/__init__.py b/src/pendulum/locales/zh/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pendulum/locales/zh/__init__.py
diff --git a/src/pendulum/locales/zh/custom.py b/src/pendulum/locales/zh/custom.py
new file mode 100644
index 0000000..cf47a40
--- /dev/null
+++ b/src/pendulum/locales/zh/custom.py
@@ -0,0 +1,20 @@
+"""
+zh custom locale file.
+"""
+from __future__ import annotations
+
+
+translations = {
+ # Relative time
+ "after": "{time}后",
+ "before": "{time}前",
+ # Date formats
+ "date_formats": {
+ "LTS": "Ah点m分s秒",
+ "LT": "Ah点mm分",
+ "LLLL": "YYYY年MMMD日ddddAh点mm分",
+ "LLL": "YYYY年MMMD日Ah点mm分",
+ "LL": "YYYY年MMMD日",
+ "L": "YYYY-MM-DD",
+ },
+}
diff --git a/src/pendulum/locales/zh/locale.py b/src/pendulum/locales/zh/locale.py
new file mode 100644
index 0000000..eb85ab7
--- /dev/null
+++ b/src/pendulum/locales/zh/locale.py
@@ -0,0 +1,121 @@
+from __future__ import annotations
+
+from pendulum.locales.zh.custom import translations as custom_translations
+
+
+"""
+zh locale file.
+
+It has been generated automatically and must not be modified directly.
+"""
+
+
+locale = {
+ "plural": lambda n: "other",
+ "ordinal": lambda n: "other",
+ "translations": {
+ "days": {
+ "abbreviated": {
+ 0: "周一",
+ 1: "周二",
+ 2: "周三",
+ 3: "周四",
+ 4: "周五",
+ 5: "周六",
+ 6: "周日",
+ },
+ "narrow": {0: "一", 1: "二", 2: "三", 3: "四", 4: "五", 5: "六", 6: "日"},
+ "short": {0: "周一", 1: "周二", 2: "周三", 3: "周四", 4: "周五", 5: "周六", 6: "周日"},
+ "wide": {
+ 0: "星期一",
+ 1: "星期二",
+ 2: "星期三",
+ 3: "星期四",
+ 4: "星期五",
+ 5: "星期六",
+ 6: "星期日",
+ },
+ },
+ "months": {
+ "abbreviated": {
+ 1: "1月",
+ 2: "2月",
+ 3: "3月",
+ 4: "4月",
+ 5: "5月",
+ 6: "6月",
+ 7: "7月",
+ 8: "8月",
+ 9: "9月",
+ 10: "10月",
+ 11: "11月",
+ 12: "12月",
+ },
+ "narrow": {
+ 1: "1",
+ 2: "2",
+ 3: "3",
+ 4: "4",
+ 5: "5",
+ 6: "6",
+ 7: "7",
+ 8: "8",
+ 9: "9",
+ 10: "10",
+ 11: "11",
+ 12: "12",
+ },
+ "wide": {
+ 1: "一月",
+ 2: "二月",
+ 3: "三月",
+ 4: "四月",
+ 5: "五月",
+ 6: "六月",
+ 7: "七月",
+ 8: "八月",
+ 9: "九月",
+ 10: "十月",
+ 11: "十一月",
+ 12: "十二月",
+ },
+ },
+ "units": {
+ "year": {"other": "{0}年"},
+ "month": {"other": "{0}个月"},
+ "week": {"other": "{0}周"},
+ "day": {"other": "{0}天"},
+ "hour": {"other": "{0}小时"},
+ "minute": {"other": "{0}分钟"},
+ "second": {"other": "{0}秒钟"},
+ "microsecond": {"other": "{0}微秒"},
+ },
+ "relative": {
+ "year": {"future": {"other": "{0}年后"}, "past": {"other": "{0}年前"}},
+ "month": {"future": {"other": "{0}个月后"}, "past": {"other": "{0}个月前"}},
+ "week": {"future": {"other": "{0}周后"}, "past": {"other": "{0}周前"}},
+ "day": {"future": {"other": "{0}天后"}, "past": {"other": "{0}天前"}},
+ "hour": {"future": {"other": "{0}小时后"}, "past": {"other": "{0}小时前"}},
+ "minute": {"future": {"other": "{0}分钟后"}, "past": {"other": "{0}分钟前"}},
+ "second": {"future": {"other": "{0}秒钟后"}, "past": {"other": "{0}秒钟前"}},
+ },
+ "day_periods": {
+ "midnight": "午夜",
+ "am": "上午",
+ "pm": "下午",
+ "morning1": "清晨",
+ "morning2": "上午",
+ "afternoon1": "下午",
+ "afternoon2": "下午",
+ "evening1": "晚上",
+ "night1": "凌晨",
+ },
+ "week_data": {
+ "min_days": 1,
+ "first_day": 0,
+ "weekend_start": 5,
+ "weekend_end": 6,
+ },
+ },
+ "custom": custom_translations,
+}