locales.py 4.1 KB

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