locales.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. ERROR_TRANSLATIONS = {
  2. "ru": {
  3. "missing": "Это поле обязательно для заполнения",
  4. "string_too_short": "Слишком коротко, минимум {min_length} символов",
  5. "value_error.email": "Некорректный email",
  6. "value_error.any_str.min_length": "Минимальная длина {limit_value} симв.",
  7. "type_error.integer": "Должно быть целым числом",
  8. "email_already_registered": "Email уже зарегистрирован",
  9. "incorrect_credentials": "Неверный email или пароль",
  10. "user_not_found": "Пользователь не найден",
  11. "invalid_token": "Недействительный токен"
  12. },
  13. "me": {
  14. "missing": "Ovo polje je obavezno",
  15. "string_too_short": "Previše kratko, min {min_length} karaktera",
  16. "value_error.email": "Neispravan email",
  17. "value_error.any_str.min_length": "Minimalna dužina {limit_value} kar.",
  18. "type_error.integer": "Mora biti cijeli broj",
  19. "email_already_registered": "Email je već registrovan",
  20. "incorrect_credentials": "Neispravan email ili lozinka",
  21. "user_not_found": "Korisnik nije pronađen",
  22. "invalid_token": "Neispravan token"
  23. },
  24. "en": {
  25. "missing": "Field is required",
  26. "string_too_short": "Too short, min {min_length} characters",
  27. "value_error.email": "Invalid email format",
  28. "email_already_registered": "Email already registered",
  29. "incorrect_credentials": "Incorrect email or password",
  30. "user_not_found": "User not found",
  31. "invalid_token": "Invalid or expired token"
  32. }
  33. }
  34. def translate_error(error_type: str, lang: str, **kwargs) -> str:
  35. lang = lang.lower() if lang else "en"
  36. if lang not in ERROR_TRANSLATIONS:
  37. lang = "en"
  38. translations = ERROR_TRANSLATIONS[lang]
  39. template = translations.get(error_type, translations.get(error_type.split('.')[-1], None))
  40. if not template:
  41. # Fallback to English if not found in current lang
  42. template = ERROR_TRANSLATIONS["en"].get(error_type, "Validation error")
  43. try:
  44. return template.format(**kwargs)
  45. except:
  46. return template