Internationalize validation error message

Replaced hardcoded "Validation failed" message with translated
version from language files:
- Updated userProfileActions.ts to use t("validation-failed")
- Added translations in English and Croatian
- Reordered general-error div in AccountForm for better layout

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Knee Cola
2025-11-17 20:51:57 +01:00
parent 666443f76e
commit 9fda8cadba
4 changed files with 13 additions and 11 deletions

View File

@@ -77,7 +77,7 @@ export const updateUserProfile = withUser(async (user: AuthenticatedUser, prevSt
if (!validatedFields.success) { if (!validatedFields.success) {
return { return {
errors: validatedFields.error.flatten().fieldErrors, errors: validatedFields.error.flatten().fieldErrors,
message: "Validation failed", message: t("validation-failed"),
success: false, success: false,
}; };
} }

View File

@@ -143,14 +143,6 @@ const FormFields: FC<FormFieldsProps> = ({ profile, errors, message }) => {
</div> </div>
</div> </div>
<div id="general-error" aria-live="polite" aria-atomic="true">
{message && (
<p className="mt-2 text-sm text-red-500">
{message}
</p>
)}
</div>
{hasMissingData && ( {hasMissingData && (
<div className="alert mt-4 max-w-md flex flex-row items-start"> <div className="alert mt-4 max-w-md flex flex-row items-start">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" className="stroke-current shrink-0 w-6 h-6"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" className="stroke-current shrink-0 w-6 h-6">
@@ -160,6 +152,14 @@ const FormFields: FC<FormFieldsProps> = ({ profile, errors, message }) => {
</div> </div>
)} )}
<div id="general-error" aria-live="polite" aria-atomic="true">
{message && (
<p className="mt-2 text-sm text-red-500">
{message}
</p>
)}
</div>
<div className="pt-4"> <div className="pt-4">
<button className="btn btn-primary w-[5.5em]" disabled={pending}> <button className="btn btn-primary w-[5.5em]" disabled={pending}>
{pending ? ( {pending ? (

View File

@@ -151,7 +151,8 @@
"save-button": "Save", "save-button": "Save",
"cancel-button": "Cancel", "cancel-button": "Cancel",
"validation": { "validation": {
"iban-invalid": "Invalid IBAN format. Please enter a valid IBAN" "iban-invalid": "Invalid IBAN format. Please enter a valid IBAN",
"validation-failed": "Validation failed. Please check the form and try again."
} }
} }
} }

View File

@@ -150,7 +150,8 @@
"save-button": "Spremi", "save-button": "Spremi",
"cancel-button": "Odbaci", "cancel-button": "Odbaci",
"validation": { "validation": {
"iban-invalid": "Neispravan IBAN format. Molimo unesite ispravan IBAN." "iban-invalid": "Neispravan IBAN format. Molimo unesite ispravan IBAN.",
"validation-failed": "Validacija nije uspjela. Molimo provjerite formu i pokušajte ponovno."
} }
} }
} }