From b5f740cc9e46ad94d4096fe9ad86c6972236dc9a Mon Sep 17 00:00:00 2001 From: Rushi Jagani Date: Wed, 29 Jul 2026 11:06:21 -0500 Subject: [PATCH] fix: add packaged translation parity check --- backend/chainlit/translations/ar-SA.json | 1 + backend/chainlit/translations/da-DK.json | 1 + backend/chainlit/translations/de-DE.json | 6 ++++++ backend/chainlit/translations/it.json | 6 ++++++ backend/chainlit/translations/ja.json | 1 + backend/chainlit/translations/ko.json | 6 ++++++ backend/tests/test_translations.py | 22 ++++++++++++++++++++++ 7 files changed, 43 insertions(+) diff --git a/backend/chainlit/translations/ar-SA.json b/backend/chainlit/translations/ar-SA.json index b98b427d23..b5de794c3d 100644 --- a/backend/chainlit/translations/ar-SA.json +++ b/backend/chainlit/translations/ar-SA.json @@ -68,6 +68,7 @@ "favorites": { "use": "استخدام رسالة مفضلة", "headline": "الرسائل المفضلة", + "remove": "إزالة من المفضلة", "empty": { "title": "لا توجد رسائل محفوظة بعد", "description": "ابدأ بإرسال رسالة وقم بتمييزها بنجمة أو ميّز رسالة من محادثاتك السابقة" diff --git a/backend/chainlit/translations/da-DK.json b/backend/chainlit/translations/da-DK.json index aba214e617..8c9e8607b0 100644 --- a/backend/chainlit/translations/da-DK.json +++ b/backend/chainlit/translations/da-DK.json @@ -68,6 +68,7 @@ "favorites": { "use": "Brug en favorit besked", "headline": "Favorit beskeder", + "remove": "Fjern favorit", "empty": { "title": "Ingen gemte prompts endnu", "description": "Start med at sende en prompt og markere den med en stjerne, eller vælg en prompt fra tidligere samtaler" diff --git a/backend/chainlit/translations/de-DE.json b/backend/chainlit/translations/de-DE.json index db5934b6f1..1469a3f569 100644 --- a/backend/chainlit/translations/de-DE.json +++ b/backend/chainlit/translations/de-DE.json @@ -249,6 +249,12 @@ "components": { "MultiSelectInput": { "placeholder": "Wähle aus..." + }, + "DatePickerInput": { + "placeholder": { + "single": "Datum auswählen", + "range": "Datumsbereich auswählen" + } } } } diff --git a/backend/chainlit/translations/it.json b/backend/chainlit/translations/it.json index 69021fe630..367e1bb0c9 100644 --- a/backend/chainlit/translations/it.json +++ b/backend/chainlit/translations/it.json @@ -249,6 +249,12 @@ "components": { "MultiSelectInput": { "placeholder": "Seleziona..." + }, + "DatePickerInput": { + "placeholder": { + "single": "Scegli una data", + "range": "Scegli un intervallo di date" + } } } } diff --git a/backend/chainlit/translations/ja.json b/backend/chainlit/translations/ja.json index b1ea49659b..aa6e6a8322 100644 --- a/backend/chainlit/translations/ja.json +++ b/backend/chainlit/translations/ja.json @@ -86,6 +86,7 @@ }, "fileUpload": { "dragDrop": "ここにファイルをドラッグ&ドロップ", + "browse": "ファイルを参照", "sizeLimit": "制限:", "errors": { "failed": "アップロードに失敗しました", diff --git a/backend/chainlit/translations/ko.json b/backend/chainlit/translations/ko.json index f05622faf1..3a0cca3bf2 100644 --- a/backend/chainlit/translations/ko.json +++ b/backend/chainlit/translations/ko.json @@ -249,6 +249,12 @@ "components": { "MultiSelectInput": { "placeholder": "선택..." + }, + "DatePickerInput": { + "placeholder": { + "single": "날짜 선택", + "range": "날짜 범위 선택" + } } } } diff --git a/backend/tests/test_translations.py b/backend/tests/test_translations.py index 6e517c4748..255fa87625 100644 --- a/backend/tests/test_translations.py +++ b/backend/tests/test_translations.py @@ -1,10 +1,14 @@ +import json from io import StringIO +from pathlib import Path from unittest.mock import patch import pytest from chainlit.translations import compare_json_structures, lint_translation_json +TRANSLATIONS_DIR = Path(__file__).resolve().parents[1] / "chainlit" / "translations" + class TestCompareJsonStructures: """Test suite for compare_json_structures function.""" @@ -311,6 +315,24 @@ def test_lint_output_format(self): assert len(lines) >= 2 # At least linting message + errors +class TestPackagedTranslations: + """Test suite for packaged locale files.""" + + def test_packaged_locale_files_match_en_us_structure(self): + truth_path = TRANSLATIONS_DIR / "en-US.json" + truth = json.loads(truth_path.read_text(encoding="utf-8")) + + errors = [] + for locale_path in sorted(TRANSLATIONS_DIR.glob("*.json")): + locale = json.loads(locale_path.read_text(encoding="utf-8")) + errors.extend( + f"{locale_path.name}: {error}" + for error in compare_json_structures(truth, locale) + ) + + assert errors == [] + + class TestTranslationsEdgeCases: """Test suite for edge cases in translations module."""