Skip to content

Commit 8c7d7af

Browse files
Lucas MathisJanEbbing
authored andcommitted
feat: Add new language codes
1 parent 49a45e8 commit 8c7d7af

File tree

3 files changed

+110
-2
lines changed

3 files changed

+110
-2
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

77
## [Unreleased]
8+
### Added
9+
- Added new language constants from January 2026 API release of 81 new languages.
810

911
## [1.28.0] - 2026-02-05
1012
### Changed

deepl/api_data.py

Lines changed: 93 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,42 +250,133 @@ def __str__(self):
250250
@staticmethod
251251
def remove_regional_variant(language: Union[str, "Language"]) -> str:
252252
"""Removes the regional variant from a language, e.g. EN-US gives EN"""
253-
return str(language).upper()[0:2]
254-
253+
dash_index = str(language).find("-")
254+
if dash_index != -1:
255+
return str(language).upper()[0:dash_index]
256+
else:
257+
return str(language).upper()
258+
259+
ACEHNESE = "ace"
260+
AFRIKAANS = "af"
261+
ARAGONESE = "an"
255262
ARABIC = "ar"
263+
ASSAMESE = "as"
264+
AYMARA = "ay"
265+
AZERBAIJANI = "az"
266+
BASHKIR = "ba"
267+
BELARUSIAN = "be"
256268
BULGARIAN = "bg"
269+
BHOJPURI = "bho"
270+
BENGALI = "bn"
271+
BRETON = "br"
272+
BOSNIAN = "bs"
273+
CATALAN = "ca"
274+
CEBUANO = "ceb"
275+
KURDISH_SORANI = "ckb"
257276
CZECH = "cs"
277+
WELSH = "cy"
258278
DANISH = "da"
259279
GERMAN = "de"
260280
GREEK = "el"
261281
ENGLISH = "en" # Only usable as a source language
262282
ENGLISH_BRITISH = "en-GB" # Only usable as a target language
263283
ENGLISH_AMERICAN = "en-US" # Only usable as a target language
284+
ESPERANTO = "eo"
264285
SPANISH = "es"
286+
SPANISH_LATIN_AMERICAN = "es-419" # Only usable as a target language
265287
ESTONIAN = "et"
288+
BASQUE = "eu"
289+
PERSIAN = "fa"
266290
FINNISH = "fi"
267291
FRENCH = "fr"
292+
IRISH = "ga"
293+
GALICIAN = "gl"
294+
GUARANI = "gn"
295+
KONKANI = "gom"
296+
GUJARATI = "gu"
297+
HAUSA = "ha"
298+
HEBREW = "he"
299+
HINDI = "hi"
300+
CROATIAN = "hr"
301+
HAITIAN_CREOLE = "ht"
268302
HUNGARIAN = "hu"
303+
ARMENIAN = "hy"
269304
INDONESIAN = "id"
305+
IGBO = "ig"
306+
ICELANDIC = "is"
270307
ITALIAN = "it"
271308
JAPANESE = "ja"
309+
JAVANESE = "jv"
310+
GEORGIAN = "ka"
311+
KAZAKH = "kk"
312+
KURDISH_KURMANJI = "kmr"
272313
KOREAN = "ko"
314+
KYRGYZ = "ky"
315+
LATIN = "la"
316+
LUXEMBOURGISH = "lb"
317+
LOMBARD = "lmo"
318+
LINGALA = "ln"
273319
LITHUANIAN = "lt"
274320
LATVIAN = "lv"
321+
MAITHILI = "mai"
322+
MALAGASY = "mg"
323+
MAORI = "mi"
324+
MACEDONIAN = "mk"
325+
MALAYALAM = "ml"
326+
MONGOLIAN = "mn"
327+
MARATHI = "mr"
328+
MALAY = "ms"
329+
MALTESE = "mt"
330+
BURMESE = "my"
275331
NORWEGIAN = "nb"
332+
NEPALI = "ne"
276333
DUTCH = "nl"
334+
OCCITAN = "oc"
335+
OROMO = "om"
336+
PUNJABI = "pa"
337+
PANGASINAN = "pag"
338+
KAPAMPANGAN = "pam"
277339
POLISH = "pl"
340+
DARI = "prs"
341+
PASHTO = "ps"
278342
PORTUGUESE = "pt" # Only usable as a source language
279343
PORTUGUESE_BRAZILIAN = "pt-BR" # Only usable as a target language
280344
PORTUGUESE_EUROPEAN = "pt-PT" # Only usable as a target language
345+
QUECHUA = "qu"
281346
ROMANIAN = "ro"
282347
RUSSIAN = "ru"
348+
SANSKRIT = "sa"
349+
SICILIAN = "scn"
283350
SLOVAK = "sk"
284351
SLOVENIAN = "sl"
352+
ALBANIAN = "sq"
353+
SERBIAN = "sr"
354+
SESOTHO = "st"
355+
SUNDANESE = "su"
285356
SWEDISH = "sv"
357+
SWAHILI = "sw"
358+
TAMIL = "ta"
359+
TELUGU = "te"
360+
TAJIK = "tg"
361+
THAI = "th"
362+
TURKMEN = "tk"
363+
TAGALOG = "tl"
364+
TSWANA = "tn"
286365
TURKISH = "tr"
366+
TSONGA = "ts"
367+
TATAR = "tt"
287368
UKRAINIAN = "uk"
369+
URDU = "ur"
370+
UZBEK = "uz"
371+
VIETNAMESE = "vi"
372+
WOLOF = "wo"
373+
XHOSA = "xh"
374+
YIDDISH = "yi"
375+
CANTONESE = "yue"
288376
CHINESE = "zh"
377+
CHINESE_SIMPLIFIED = "zh-Hans" # Only usable as a target language
378+
CHINESE_TRADITIONAL = "zh-Hant" # Only usable as a target language
379+
ZULU = "zu"
289380

290381

291382
class GlossaryLanguagePair:

tests/test_general.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,21 @@ def test_version():
2020
assert "1.28.0" == deepl.__version__
2121

2222

23+
def test_remove_regional_variant():
24+
for lang, expected in [
25+
("EN-US", "EN"),
26+
("en-GB", "EN"),
27+
("de-AT", "DE"),
28+
(deepl.Language.ENGLISH_AMERICAN, "EN"),
29+
(deepl.Language.ENGLISH_BRITISH, "EN"),
30+
(deepl.Language.GERMAN, "DE"),
31+
(deepl.Language.ACEHNESE, "ACE"),
32+
(deepl.Language.KURDISH_KURMANJI, "KMR"),
33+
(deepl.Language.SPANISH_LATIN_AMERICAN, "ES"),
34+
]:
35+
assert deepl.Language.remove_regional_variant(lang) == expected
36+
37+
2338
@pytest.mark.parametrize(
2439
"lang",
2540
[k for k in example_text.keys()],

0 commit comments

Comments
 (0)