ERROR_TRANSLATIONS = { "ru": { "missing": "Это поле обязательно для заполнения", "string_too_short": "Слишком коротко, минимум {min_length} символов", "value_error.email": "Некорректный email", "value_error.any_str.min_length": "Минимальная длина {limit_value} симв.", "type_error.integer": "Должно быть целым числом", "email_already_registered": "Email уже зарегистрирован", "incorrect_credentials": "Неверный email или пароль", "user_not_found": "Пользователь не найден", "invalid_token": "Недействительный токен" }, "me": { "missing": "Ovo polje je obavezno", "string_too_short": "Previše kratko, min {min_length} karaktera", "value_error.email": "Neispravan email", "value_error.any_str.min_length": "Minimalna dužina {limit_value} kar.", "type_error.integer": "Mora biti cijeli broj", "email_already_registered": "Email je već registrovan", "incorrect_credentials": "Neispravan email ili lozinka", "user_not_found": "Korisnik nije pronađen", "invalid_token": "Neispravan token" }, "en": { "missing": "Field is required", "string_too_short": "Too short, min {min_length} characters", "value_error.email": "Invalid email format", "email_already_registered": "Email already registered", "incorrect_credentials": "Incorrect email or password", "user_not_found": "User not found", "invalid_token": "Invalid or expired token" } } def translate_error(error_type: str, lang: str, **kwargs) -> str: lang = lang.lower() if lang else "en" if lang not in ERROR_TRANSLATIONS: lang = "en" translations = ERROR_TRANSLATIONS[lang] template = translations.get(error_type, translations.get(error_type.split('.')[-1], None)) if not template: # Fallback to English if not found in current lang template = ERROR_TRANSLATIONS["en"].get(error_type, "Validation error") try: return template.format(**kwargs) except: return template