locales.py 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. "flood_control": "Слишком много сообщений. Пожалуйста, подождите 10 секунд."
  13. },
  14. "me": {
  15. "missing": "Ovo polje je obavezno",
  16. "string_too_short": "Previše kratko, min {min_length} karaktera",
  17. "value_error.email": "Neispravan email",
  18. "value_error.any_str.min_length": "Minimalna dužina {limit_value} kar.",
  19. "type_error.integer": "Mora biti cijeli broj",
  20. "email_already_registered": "Email je već registrovan",
  21. "incorrect_credentials": "Neispravan email ili lozinka",
  22. "user_not_found": "Korisnik nije pronađen",
  23. "invalid_token": "Neispravan token",
  24. "flood_control": "Previše poruka. Molimo sačekajte 10 sekundi."
  25. },
  26. "ua": {
  27. "missing": "Це поле обов'язкове",
  28. "string_too_short": "Занадто коротко, мінімум {min_length} символів",
  29. "value_error.email": "Некоректний email",
  30. "value_error.any_str.min_length": "Мінімальна довжина {limit_value} симв.",
  31. "type_error.integer": "Має бути цілим числом",
  32. "email_already_registered": "Email вже зареєстрований",
  33. "incorrect_credentials": "Невірний email або пароль",
  34. "user_not_found": "Користувача не знайдено",
  35. "invalid_token": "Недійсний токен",
  36. "flood_control": "Занадто багато повідомлень. Будь ласка, зачекайте 10 секунд."
  37. },
  38. "en": {
  39. "missing": "Field is required",
  40. "string_too_short": "Too short, min {min_length} characters",
  41. "value_error.email": "Invalid email format",
  42. "email_already_registered": "Email already registered",
  43. "incorrect_credentials": "Incorrect email or password",
  44. "user_not_found": "User not found",
  45. "invalid_token": "Invalid or expired token",
  46. "flood_control": "Too many messages. Please wait 10 seconds."
  47. }
  48. }
  49. def translate_error(error_type: str, lang: str, **kwargs) -> str:
  50. lang = lang.lower() if lang else "en"
  51. if lang not in ERROR_TRANSLATIONS:
  52. lang = "en"
  53. translations = ERROR_TRANSLATIONS[lang]
  54. template = translations.get(error_type, translations.get(error_type.split('.')[-1], None))
  55. if not template:
  56. # Fallback to English if not found in current lang
  57. template = ERROR_TRANSLATIONS["en"].get(error_type, "Validation error")
  58. try:
  59. return template.format(**kwargs)
  60. except:
  61. return template