feat(i18n): update language support to 77 languages

- Remove Russian (ru) per requirement
- Keep Esperanto (eo) per user feedback
- Add 29 new languages: am, az, bn, gu, ha, hi, hy, id, ig, jv, ka,
  kk, km, ml, mn, mr, ms, ne, si, sw, ta, te, th, tl, ur, uz, yo,
  zh-TW, zu
- Create 29 new translation JSON files seeded from en.json
- Remove frontend/translations/ru.json
- Update SUPPORTED_LANGUAGES list and docstring (49 → 77)
- Update tests: count 49→77, code set updated
- Update docs/InternationalizationGuide.md: count and table

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-03-13 18:36:07 +00:00
parent 1563073bd4
commit 59d851272d
32 changed files with 26161 additions and 62 deletions
+31 -3
View File
@@ -326,7 +326,7 @@ class TestSupportedLanguages:
@pytest.mark.unit
def test_ten_languages_supported(self) -> None:
assert len(SUPPORTED_LANGUAGES) == 49
assert len(SUPPORTED_LANGUAGES) == 77
@pytest.mark.unit
def test_supported_codes_set(self) -> None:
@@ -368,17 +368,45 @@ class TestSupportedLanguages:
"sr",
"tr",
"uk",
"ru",
"he",
"ar",
"fa",
"af",
"zh",
"zh-TW",
"ja",
"ko",
"vi",
"pa",
"kn",
"hi",
"bn",
"gu",
"ml",
"mr",
"ta",
"te",
"ur",
"si",
"ne",
"th",
"km",
"id",
"ms",
"jv",
"tl",
"mn",
"kk",
"uz",
"az",
"hy",
"ka",
"sw",
"am",
"ha",
"yo",
"ig",
"zu",
"eo",
}
assert SUPPORTED_LANGUAGE_CODES == expected
@@ -403,7 +431,7 @@ class TestI18nAPI:
assert response.status_code == 200
data = response.json()
assert "languages" in data
assert len(data["languages"]) == 49
assert len(data["languages"]) == 77
assert data["default"] == "en"
# Verify each language has required fields
for lang in data["languages"]: