Files
honeyDueAPI/internal/i18n/translations/nl.json
Trey t 780e699463 Add Google OAuth authentication support
- Add Google OAuth token verification and user lookup/creation
- Add GoogleAuthRequest and GoogleAuthResponse DTOs
- Add GoogleLogin handler in auth_handler.go
- Add google_auth.go service for token verification
- Add FindByGoogleID repository method for user lookup
- Add GoogleID field to User model
- Add Google OAuth configuration (client ID, enabled flag)
- Add i18n translations for Google auth error messages
- Add Google verification email template support

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 00:51:44 -06:00

191 lines
9.9 KiB
JSON

{
"error.invalid_request_body": "Ongeldige aanvraaginhoud",
"error.invalid_credentials": "Ongeldige inloggegevens",
"error.account_inactive": "Account is inactief",
"error.username_taken": "Gebruikersnaam is al in gebruik",
"error.email_taken": "E-mailadres is al geregistreerd",
"error.email_already_taken": "E-mailadres is al in gebruik",
"error.registration_failed": "Registratie mislukt",
"error.not_authenticated": "Niet geauthenticeerd",
"error.failed_to_get_user": "Gebruiker ophalen mislukt",
"error.failed_to_update_profile": "Profiel bijwerken mislukt",
"error.invalid_verification_code": "Ongeldige verificatiecode",
"error.verification_code_expired": "Verificatiecode is verlopen",
"error.email_already_verified": "E-mailadres is al geverifieerd",
"error.verification_failed": "Verificatie mislukt",
"error.failed_to_resend_verification": "Verificatie opnieuw verzenden mislukt",
"error.rate_limit_exceeded": "Te veel wachtwoord reset aanvragen. Probeer het later opnieuw.",
"error.too_many_attempts": "Te veel pogingen. Vraag een nieuwe code aan.",
"error.invalid_reset_token": "Ongeldig of verlopen reset token",
"error.password_reset_failed": "Wachtwoord resetten mislukt",
"error.apple_signin_not_configured": "Apple Sign In is niet geconfigureerd",
"error.apple_signin_failed": "Apple Sign In mislukt",
"error.invalid_apple_token": "Ongeldig Apple identiteitstoken",
"error.google_signin_not_configured": "Google Sign In is niet geconfigureerd",
"error.google_signin_failed": "Google Sign In mislukt",
"error.invalid_google_token": "Ongeldig Google identiteitstoken",
"error.invalid_task_id": "Ongeldig taak-ID",
"error.invalid_residence_id": "Ongeldig woning-ID",
"error.invalid_contractor_id": "Ongeldig aannemer-ID",
"error.invalid_document_id": "Ongeldig document-ID",
"error.invalid_completion_id": "Ongeldig voltooiing-ID",
"error.invalid_user_id": "Ongeldig gebruikers-ID",
"error.invalid_notification_id": "Ongeldig notificatie-ID",
"error.invalid_device_id": "Ongeldig apparaat-ID",
"error.task_not_found": "Taak niet gevonden",
"error.residence_not_found": "Woning niet gevonden",
"error.contractor_not_found": "Aannemer niet gevonden",
"error.document_not_found": "Document niet gevonden",
"error.completion_not_found": "Taakvoltooiing niet gevonden",
"error.user_not_found": "Gebruiker niet gevonden",
"error.share_code_invalid": "Ongeldige deelcode",
"error.share_code_expired": "Deelcode is verlopen",
"error.task_access_denied": "U heeft geen toegang tot deze taak",
"error.residence_access_denied": "U heeft geen toegang tot deze woning",
"error.contractor_access_denied": "U heeft geen toegang tot deze aannemer",
"error.document_access_denied": "U heeft geen toegang tot dit document",
"error.not_residence_owner": "Alleen de woningeigenaar kan deze actie uitvoeren",
"error.cannot_remove_owner": "Kan de woningeigenaar niet verwijderen",
"error.user_already_member": "Gebruiker is al lid van deze woning",
"error.properties_limit_reached": "U heeft het maximale aantal woningen voor uw abonnement bereikt",
"error.task_already_cancelled": "Taak is al geannuleerd",
"error.task_already_archived": "Taak is al gearchiveerd",
"error.failed_to_parse_form": "Multipart formulier parsen mislukt",
"error.task_id_required": "task_id is verplicht",
"error.invalid_task_id_value": "Ongeldig task_id",
"error.failed_to_upload_image": "Afbeelding uploaden mislukt",
"error.residence_id_required": "residence_id is verplicht",
"error.invalid_residence_id_value": "Ongeldig residence_id",
"error.title_required": "titel is verplicht",
"error.failed_to_upload_file": "Bestand uploaden mislukt",
"message.logged_out": "Succesvol uitgelogd",
"message.email_verified": "E-mailadres succesvol geverifieerd",
"message.verification_email_sent": "Verificatie e-mail verzonden",
"message.password_reset_email_sent": "Als er een account met dat e-mailadres bestaat, is er een wachtwoord resetcode verzonden.",
"message.reset_code_verified": "Code succesvol geverifieerd",
"message.password_reset_success": "Wachtwoord succesvol gereset. Log in met uw nieuwe wachtwoord.",
"message.task_deleted": "Taak succesvol verwijderd",
"message.task_in_progress": "Taak gemarkeerd als in uitvoering",
"message.task_cancelled": "Taak geannuleerd",
"message.task_uncancelled": "Taak annulering ongedaan gemaakt",
"message.task_archived": "Taak gearchiveerd",
"message.task_unarchived": "Taak gearchiveerd ongedaan gemaakt",
"message.completion_deleted": "Voltooiing succesvol verwijderd",
"message.residence_deleted": "Woning succesvol verwijderd",
"message.user_removed": "Gebruiker verwijderd van woning",
"message.tasks_report_generated": "Takenrapport succesvol gegenereerd",
"message.tasks_report_sent": "Takenrapport gegenereerd en verzonden naar {{.Email}}",
"message.tasks_report_email_failed": "Takenrapport gegenereerd maar e-mail kon niet worden verzonden",
"message.contractor_deleted": "Aannemer succesvol verwijderd",
"message.document_deleted": "Document succesvol verwijderd",
"message.document_activated": "Document geactiveerd",
"message.document_deactivated": "Document gedeactiveerd",
"message.notification_marked_read": "Notificatie gemarkeerd als gelezen",
"message.all_notifications_marked_read": "Alle notificaties gemarkeerd als gelezen",
"message.device_removed": "Apparaat verwijderd",
"message.subscription_upgraded": "Abonnement succesvol geüpgraded",
"message.subscription_cancelled": "Abonnement geannuleerd. U behoudt Pro voordelen tot het einde van uw factureringsperiode.",
"message.subscription_restored": "Abonnement succesvol hersteld",
"message.file_deleted": "Bestand succesvol verwijderd",
"message.static_data_refreshed": "Statische gegevens vernieuwd",
"error.notification_not_found": "Notificatie niet gevonden",
"error.invalid_platform": "Ongeldig platform",
"error.upgrade_trigger_not_found": "Upgrade trigger niet gevonden",
"error.receipt_data_required": "receipt_data is verplicht voor iOS",
"error.purchase_token_required": "purchase_token is verplicht voor Android",
"error.no_file_provided": "Geen bestand aangeleverd",
"error.failed_to_fetch_residence_types": "Woningtypes ophalen mislukt",
"error.failed_to_fetch_task_categories": "Taakcategorieën ophalen mislukt",
"error.failed_to_fetch_task_priorities": "Taakprioriteiten ophalen mislukt",
"error.failed_to_fetch_task_frequencies": "Taakfrequenties ophalen mislukt",
"error.failed_to_fetch_task_statuses": "Taakstatussen ophalen mislukt",
"error.failed_to_fetch_contractor_specialties": "Aannemer specialiteiten ophalen mislukt",
"push.task_due_soon.title": "Taak Vervalt Binnenkort",
"push.task_due_soon.body": "{{.TaskTitle}} vervalt {{.DueDate}}",
"push.task_overdue.title": "Verlopen Taak",
"push.task_overdue.body": "{{.TaskTitle}} is verlopen",
"push.task_completed.title": "Taak Voltooid",
"push.task_completed.body": "{{.UserName}} heeft {{.TaskTitle}} voltooid",
"push.task_assigned.title": "Nieuwe Taak Toegewezen",
"push.task_assigned.body": "U bent toegewezen aan {{.TaskTitle}}",
"push.residence_shared.title": "Woning Gedeeld",
"push.residence_shared.body": "{{.UserName}} heeft {{.ResidenceName}} met u gedeeld",
"email.welcome.subject": "Welkom bij Casera!",
"email.verification.subject": "Verifieer Uw E-mailadres",
"email.password_reset.subject": "Wachtwoord Resetcode",
"email.tasks_report.subject": "Takenrapport voor {{.ResidenceName}}",
"lookup.residence_type.house": "Huis",
"lookup.residence_type.apartment": "Appartement",
"lookup.residence_type.condo": "Appartement met eigen grond",
"lookup.residence_type.townhouse": "Rijtjeshuis",
"lookup.residence_type.mobile_home": "Stacaravan",
"lookup.residence_type.other": "Anders",
"lookup.task_category.plumbing": "Loodgieterij",
"lookup.task_category.electrical": "Elektriciteit",
"lookup.task_category.hvac": "Verwarming en Ventilatie",
"lookup.task_category.appliances": "Apparaten",
"lookup.task_category.exterior": "Buitenkant",
"lookup.task_category.interior": "Binnenkant",
"lookup.task_category.landscaping": "Tuinonderhoud",
"lookup.task_category.safety": "Veiligheid",
"lookup.task_category.cleaning": "Schoonmaak",
"lookup.task_category.pest_control": "Ongediertebestrijding",
"lookup.task_category.seasonal": "Seizoensgebonden",
"lookup.task_category.other": "Anders",
"lookup.task_priority.low": "Laag",
"lookup.task_priority.medium": "Gemiddeld",
"lookup.task_priority.high": "Hoog",
"lookup.task_priority.urgent": "Urgent",
"lookup.task_status.pending": "In afwachting",
"lookup.task_status.in_progress": "In uitvoering",
"lookup.task_status.completed": "Voltooid",
"lookup.task_status.cancelled": "Geannuleerd",
"lookup.task_status.archived": "Gearchiveerd",
"lookup.task_frequency.once": "Eenmalig",
"lookup.task_frequency.daily": "Dagelijks",
"lookup.task_frequency.weekly": "Wekelijks",
"lookup.task_frequency.biweekly": "Om de 2 Weken",
"lookup.task_frequency.monthly": "Maandelijks",
"lookup.task_frequency.quarterly": "Per Kwartaal",
"lookup.task_frequency.semiannually": "Om de 6 Maanden",
"lookup.task_frequency.annually": "Jaarlijks",
"lookup.contractor_specialty.plumber": "Loodgieter",
"lookup.contractor_specialty.electrician": "Elektricien",
"lookup.contractor_specialty.hvac_technician": "HVAC Monteur",
"lookup.contractor_specialty.handyman": "Klusjesman",
"lookup.contractor_specialty.landscaper": "Hovenier",
"lookup.contractor_specialty.roofer": "Dakdekker",
"lookup.contractor_specialty.painter": "Schilder",
"lookup.contractor_specialty.carpenter": "Timmerman",
"lookup.contractor_specialty.pest_control": "Ongediertebestrijding",
"lookup.contractor_specialty.cleaning": "Schoonmaak",
"lookup.contractor_specialty.pool_service": "Zwembadonderhoud",
"lookup.contractor_specialty.general_contractor": "Algemeen Aannemer",
"lookup.contractor_specialty.other": "Anders"
}