locales.py 4.7 KB

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