1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-07-20 13:29:37 +02:00

More settings localization

This commit is contained in:
Sean Morley 2024-11-03 15:45:29 -05:00
parent 4bbbc10097
commit c0aaec1436
13 changed files with 464 additions and 284 deletions

View file

@ -15,8 +15,8 @@ const config: Config = {
// GitHub pages deployment config. // GitHub pages deployment config.
// If you aren't using GitHub pages, you don't need these. // If you aren't using GitHub pages, you don't need these.
organizationName: "facebook", // Usually your GitHub org/user name. organizationName: "seanmorley", // Usually your GitHub org/user name.
projectName: "docusaurus", // Usually your repo name. projectName: "adventurelog", // Usually your repo name.
onBrokenLinks: "throw", onBrokenLinks: "throw",
onBrokenMarkdownLinks: "warn", onBrokenMarkdownLinks: "warn",
@ -40,7 +40,7 @@ const config: Config = {
// Please change this to your repo. // Please change this to your repo.
// Remove this to remove the "edit this page" links. // Remove this to remove the "edit this page" links.
editUrl: editUrl:
"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/", "https://github.com/seanmorley15/AdventureLog/tree/main/documentation",
}, },
// blog: { // blog: {
// showReadingTime: true, // showReadingTime: true,

View file

@ -149,7 +149,22 @@
"url": "URL", "url": "URL",
"warning": "Warnung", "warning": "Warnung",
"wiki_desc": "Ruft einen Auszug aus einem Wikipedia-Artikel ab, der zum Namen des Abenteuers passt.", "wiki_desc": "Ruft einen Auszug aus einem Wikipedia-Artikel ab, der zum Namen des Abenteuers passt.",
"wikipedia": "Wikipedia" "wikipedia": "Wikipedia",
"adventure_not_found": "Es sind keine Abenteuer zum Anzeigen vorhanden. \nFügen Sie einige über die Plus-Schaltfläche unten rechts hinzu oder versuchen Sie, die Filter zu ändern!",
"all": "Alle",
"error_updating_regions": "Fehler beim Aktualisieren der Regionen",
"mark_region_as_visited": "Region {region}, {country} als besucht markieren?",
"mark_visited": "Mark besucht",
"my_adventures": "Meine Abenteuer",
"no_adventures_found": "Keine Abenteuer gefunden",
"no_collections_found": "Es wurden keine Sammlungen gefunden, zu denen dieses Abenteuer hinzugefügt werden kann.",
"no_linkable_adventures": "Es wurden keine Abenteuer gefunden, die mit dieser Sammlung verknüpft werden können.",
"not_visited": "Nicht besucht",
"regions_updated": "Regionen aktualisiert",
"update_visited_regions": "Besuchte Regionen aktualisieren",
"update_visited_regions_disclaimer": "Dies kann je nach Anzahl der Abenteuer, die Sie besucht haben, eine Weile dauern.",
"visited_region_check": "Überprüfung der besuchten Region",
"visited_region_check_desc": "Wenn Sie diese Option auswählen, überprüft der Server alle von Ihnen besuchten Abenteuer und markiert die Regionen, in denen sie sich befinden, als im Rahmen von Weltreisen besucht."
}, },
"home": { "home": {
"desc_1": "Entdecken, planen und erkunden Sie mit Leichtigkeit", "desc_1": "Entdecken, planen und erkunden Sie mit Leichtigkeit",
@ -206,7 +221,8 @@
"signup": "Melden Sie sich an", "signup": "Melden Sie sich an",
"username": "Benutzername", "username": "Benutzername",
"profile_picture": "Profilbild", "profile_picture": "Profilbild",
"public_profile": "Öffentliches Profil" "public_profile": "Öffentliches Profil",
"public_tooltip": "Mit einem öffentlichen Profil können Benutzer Sammlungen mit Ihnen teilen und Ihr Profil auf der Benutzerseite anzeigen."
}, },
"users": { "users": {
"no_users_found": "Keine Benutzer mit öffentlichen Profilen gefunden." "no_users_found": "Keine Benutzer mit öffentlichen Profilen gefunden."
@ -233,6 +249,17 @@
"settings_page": "Einstellungsseite", "settings_page": "Einstellungsseite",
"update": "Aktualisieren", "update": "Aktualisieren",
"update_error": "Fehler beim Aktualisieren der Einstellungen", "update_error": "Fehler beim Aktualisieren der Einstellungen",
"update_success": "Einstellungen erfolgreich aktualisiert!" "update_success": "Einstellungen erfolgreich aktualisiert!",
"change_password": "Kennwort ändern",
"confirm_new_password": "Bestätigen Sie das neue Passwort",
"invalid_token": "Token ist ungültig oder abgelaufen",
"login_redir": "Anschließend werden Sie zur Anmeldeseite weitergeleitet.",
"missing_email": "Bitte geben Sie eine E-Mail-Adresse ein",
"password_does_not_match": "Passwörter stimmen nicht überein",
"password_is_required": "Passwort ist erforderlich",
"possible_reset": "Wenn die von Ihnen angegebene E-Mail-Adresse mit einem Konto verknüpft ist, erhalten Sie eine E-Mail mit Anweisungen zum Zurücksetzen Ihres Passworts!",
"reset_password": "Passwort zurücksetzen",
"submit": "Einreichen",
"token_required": "Zum Zurücksetzen des Passworts sind Token und UID erforderlich."
} }
} }

View file

@ -250,6 +250,16 @@
"email_change": "Change Email", "email_change": "Change Email",
"current_email": "Current Email", "current_email": "Current Email",
"no_email_set": "No email set", "no_email_set": "No email set",
"new_email": "New Email" "new_email": "New Email",
"change_password": "Change Password",
"login_redir": "You will then be redirected to the login page.",
"token_required": "Token and UID are required for password reset.",
"reset_password": "Reset Password",
"possible_reset": "If the email address you provided is associated with an account, you will receive an email with instructions to reset your password!",
"missing_email": "Please enter an email address",
"submit": "Submit",
"password_does_not_match": "Passwords do not match",
"password_is_required": "Password is required",
"invalid_token": "Token is invalid or has expired"
} }
} }

View file

@ -199,7 +199,14 @@
"no_linkable_adventures": "No se encontraron aventuras que puedan vincularse a esta colección.", "no_linkable_adventures": "No se encontraron aventuras que puedan vincularse a esta colección.",
"mark_region_as_visited": "¿Marcar región {region}, {country} como visitada?", "mark_region_as_visited": "¿Marcar región {region}, {country} como visitada?",
"mark_visited": "Marcos visitó", "mark_visited": "Marcos visitó",
"not_visited": "No visitado" "not_visited": "No visitado",
"all": "Todo",
"error_updating_regions": "Error al actualizar regiones",
"regions_updated": "regiones actualizadas",
"update_visited_regions": "Actualizar regiones visitadas",
"update_visited_regions_disclaimer": "Esto puede llevar un tiempo dependiendo de la cantidad de aventuras que hayas visitado.",
"visited_region_check": "Verificación de región visitada",
"visited_region_check_desc": "Al seleccionar esto, el servidor verificará todas sus aventuras visitadas y marcará las regiones en las que se encuentran como visitadas en viajes mundiales."
}, },
"worldtravel": { "worldtravel": {
"all": "Todo", "all": "Todo",
@ -243,6 +250,16 @@
"settings_page": "Página de configuración", "settings_page": "Página de configuración",
"update": "Actualizar", "update": "Actualizar",
"update_error": "Error al actualizar la configuración", "update_error": "Error al actualizar la configuración",
"update_success": "¡La configuración se actualizó correctamente!" "update_success": "¡La configuración se actualizó correctamente!",
"change_password": "Cambiar la contraseña",
"login_redir": "Luego será redirigido a la página de inicio de sesión.",
"missing_email": "Por favor ingrese una dirección de correo electrónico",
"possible_reset": "Si la dirección de correo electrónico que proporcionó está asociada con una cuenta, recibirá un correo electrónico con instrucciones para restablecer su contraseña.",
"reset_password": "Restablecer contraseña",
"token_required": "Se requieren token y UID para restablecer la contraseña.",
"password_does_not_match": "Las contraseñas no coinciden",
"password_is_required": "Se requiere contraseña",
"submit": "Entregar",
"invalid_token": "El token no es válido o ha caducado"
} }
} }

View file

@ -149,7 +149,22 @@
"url": "URL", "url": "URL",
"warning": "Avertissement", "warning": "Avertissement",
"wiki_desc": "Extrait un extrait de l'article Wikipédia correspondant au nom de l'aventure.", "wiki_desc": "Extrait un extrait de l'article Wikipédia correspondant au nom de l'aventure.",
"wikipedia": "Wikipédia" "wikipedia": "Wikipédia",
"adventure_not_found": "Il n'y a aucune aventure à afficher. \nAjoutez-en en utilisant le bouton plus en bas à droite ou essayez de changer les filtres !",
"all": "Tous",
"error_updating_regions": "Erreur lors de la mise à jour des régions",
"mark_region_as_visited": "Marquer la région {region}, {country} comme visitée ?",
"mark_visited": "Mark a visité",
"my_adventures": "Mes aventures",
"no_adventures_found": "Aucune aventure trouvée",
"no_collections_found": "Aucune collection trouvée pour ajouter cette aventure.",
"no_linkable_adventures": "Aucune aventure trouvée pouvant être liée à cette collection.",
"not_visited": "Non visité",
"regions_updated": "régions mises à jour",
"update_visited_regions": "Mettre à jour les régions visitées",
"update_visited_regions_disclaimer": "Cela peut prendre un certain temps en fonction du nombre d'aventures que vous avez visitées.",
"visited_region_check": "Vérification de la région visitée",
"visited_region_check_desc": "En sélectionnant cette option, le serveur vérifiera toutes vos aventures visitées et marquera les régions dans lesquelles elles se trouvent comme visitées lors des voyages dans le monde."
}, },
"home": { "home": {
"desc_1": "Découvrez, planifiez et explorez en toute simplicité", "desc_1": "Découvrez, planifiez et explorez en toute simplicité",
@ -235,6 +250,16 @@
"settings_page": "Page Paramètres", "settings_page": "Page Paramètres",
"update": "Mise à jour", "update": "Mise à jour",
"update_error": "Erreur lors de la mise à jour des paramètres", "update_error": "Erreur lors de la mise à jour des paramètres",
"update_success": "Paramètres mis à jour avec succès !" "update_success": "Paramètres mis à jour avec succès !",
"change_password": "Changer le mot de passe",
"invalid_token": "Le jeton n'est pas valide ou a expiré",
"login_redir": "Vous serez alors redirigé vers la page de connexion.",
"missing_email": "Veuillez entrer une adresse e-mail",
"password_does_not_match": "Les mots de passe ne correspondent pas",
"password_is_required": "Le mot de passe est requis",
"possible_reset": "Si l'adresse e-mail que vous avez fournie est associée à un compte, vous recevrez un e-mail avec des instructions pour réinitialiser votre mot de passe !",
"reset_password": "Réinitialiser le mot de passe",
"submit": "Soumettre",
"token_required": "Le jeton et l'UID sont requis pour la réinitialisation du mot de passe."
} }
} }

View file

@ -149,7 +149,22 @@
"warning": "Avvertimento", "warning": "Avvertimento",
"wiki_desc": "Estrae un estratto dall'articolo di Wikipedia corrispondente al nome dell'avventura.", "wiki_desc": "Estrae un estratto dall'articolo di Wikipedia corrispondente al nome dell'avventura.",
"wiki_image_error": "Errore durante il recupero dell'immagine da Wikipedia", "wiki_image_error": "Errore durante il recupero dell'immagine da Wikipedia",
"wikipedia": "Wikipedia" "wikipedia": "Wikipedia",
"adventure_not_found": "Non ci sono avventure da visualizzare. \nAggiungine alcuni utilizzando il pulsante più in basso a destra o prova a cambiare i filtri!",
"all": "Tutto",
"error_updating_regions": "Errore durante l'aggiornamento delle regioni",
"mark_region_as_visited": "Contrassegnare la regione {regione}, {paese} come visitata?",
"mark_visited": "Marco ha visitato",
"my_adventures": "Le mie avventure",
"no_adventures_found": "Nessuna avventura trovata",
"no_collections_found": "Nessuna raccolta trovata a cui aggiungere questa avventura.",
"no_linkable_adventures": "Non è stata trovata alcuna avventura che possa essere collegata a questa raccolta.",
"not_visited": "Non visitato",
"regions_updated": "regioni aggiornate",
"update_visited_regions": "Aggiorna le regioni visitate",
"update_visited_regions_disclaimer": "L'operazione potrebbe richiedere del tempo a seconda del numero di avventure che hai visitato.",
"visited_region_check": "Controllo della regione visitata",
"visited_region_check_desc": "Selezionando questa opzione, il server controllerà tutte le avventure che hai visitato e contrassegnerà le regioni in cui si trovano come visitate nei viaggi per il mondo."
}, },
"home": { "home": {
"desc_1": "Scopri, pianifica ed esplora con facilità", "desc_1": "Scopri, pianifica ed esplora con facilità",
@ -235,6 +250,16 @@
"settings_page": "Pagina Impostazioni", "settings_page": "Pagina Impostazioni",
"update": "Aggiornamento", "update": "Aggiornamento",
"update_error": "Errore durante l'aggiornamento delle impostazioni", "update_error": "Errore durante l'aggiornamento delle impostazioni",
"update_success": "Impostazioni aggiornate con successo!" "update_success": "Impostazioni aggiornate con successo!",
"change_password": "Cambiare la password",
"invalid_token": "Il token non è valido o è scaduto",
"login_redir": "Verrai quindi reindirizzato alla pagina di accesso.",
"missing_email": "Inserisci un indirizzo email",
"password_does_not_match": "Le password non corrispondono",
"password_is_required": "È richiesta la password",
"possible_reset": "Se l'indirizzo email che hai fornito è associato a un account, riceverai un'email con le istruzioni per reimpostare la password!",
"reset_password": "Reimposta password",
"submit": "Invia",
"token_required": "Token e UID sono necessari per la reimpostazione della password."
} }
} }

View file

@ -149,7 +149,21 @@
"url": "URL", "url": "URL",
"warning": "Waarschuwing", "warning": "Waarschuwing",
"wiki_desc": "Haalt een fragment uit een Wikipedia-artikel dat overeenkomt met de naam van het avontuur.", "wiki_desc": "Haalt een fragment uit een Wikipedia-artikel dat overeenkomt met de naam van het avontuur.",
"wikipedia": "Wikipedia" "wikipedia": "Wikipedia",
"adventure_not_found": "Er zijn geen avonturen om weer te geven. \nVoeg er een paar toe via de plusknop rechtsonder of probeer de filters te wijzigen!",
"all": "Alle",
"error_updating_regions": "Fout bij updaten van regio's",
"mark_visited": "Mark bezocht",
"my_adventures": "Mijn avonturen",
"no_adventures_found": "Geen avonturen gevonden",
"no_collections_found": "Er zijn geen collecties gevonden waar dit avontuur aan kan worden toegevoegd.",
"no_linkable_adventures": "Er zijn geen avonturen gevonden die aan deze collectie kunnen worden gekoppeld.",
"not_visited": "Niet bezocht",
"regions_updated": "regio's bijgewerkt",
"update_visited_regions": "Update bezochte regio's",
"update_visited_regions_disclaimer": "Dit kan even duren, afhankelijk van het aantal avonturen dat je hebt bezocht.",
"visited_region_check": "Regiocheck bezocht",
"visited_region_check_desc": "Door dit te selecteren, controleert de server al uw bezochte avonturen en markeert de regio's waarin ze zich bevinden als bezocht in de wereldreizen."
}, },
"home": { "home": {
"desc_1": "Ontdek, plan en verken met gemak", "desc_1": "Ontdek, plan en verken met gemak",
@ -235,6 +249,16 @@
"settings_page": "Instellingenpagina", "settings_page": "Instellingenpagina",
"update": "Update", "update": "Update",
"update_error": "Fout bij updaten van instellingen", "update_error": "Fout bij updaten van instellingen",
"update_success": "Instellingen succesvol bijgewerkt!" "update_success": "Instellingen succesvol bijgewerkt!",
"change_password": "Wachtwoord wijzigen",
"invalid_token": "Token is ongeldig of verlopen",
"login_redir": "Vervolgens wordt u doorgestuurd naar de inlogpagina.",
"missing_email": "Voer een e-mailadres in",
"password_does_not_match": "Wachtwoorden komen niet overeen",
"password_is_required": "Wachtwoord is vereist",
"possible_reset": "Als het door u opgegeven e-mailadres aan een account is gekoppeld, ontvangt u een e-mail met instructies om uw wachtwoord opnieuw in te stellen!",
"reset_password": "Wachtwoord opnieuw instellen",
"submit": "Indienen",
"token_required": "Token en UID zijn vereist voor het opnieuw instellen van het wachtwoord."
} }
} }

View file

@ -148,7 +148,23 @@
"upload_images_here": "Ladda upp bilder här", "upload_images_here": "Ladda upp bilder här",
"url": "URL", "url": "URL",
"warning": "Varning", "warning": "Varning",
"wiki_desc": "Hämtar utdrag från Wikipedia-artikeln som matchar äventyrets namn." "wiki_desc": "Hämtar utdrag från Wikipedia-artikeln som matchar äventyrets namn.",
"adventure_not_found": "Det finns inga äventyr att visa upp. \nLägg till några med hjälp av plusknappen längst ner till höger eller prova att byta filter!",
"all": "Alla",
"error_updating_regions": "Fel vid uppdatering av regioner",
"mark_region_as_visited": "Markera region {region}, {country} som besökt?",
"mark_visited": "Mark besökte",
"my_adventures": "Mina äventyr",
"no_adventures_found": "Inga äventyr hittades",
"no_collections_found": "Inga samlingar hittades att lägga till detta äventyr till.",
"no_linkable_adventures": "Inga äventyr hittades som kan kopplas till denna samling.",
"not_visited": "Ej besökt",
"regions_updated": "regioner uppdaterade",
"update_visited_regions": "Uppdatera besökta regioner",
"update_visited_regions_disclaimer": "Detta kan ta ett tag beroende på antalet äventyr du har besökt.",
"visited_region_check": "Besökte Region Check",
"visited_region_check_desc": "Genom att välja detta kommer servern att kontrollera alla dina besökta äventyr och markera de regioner de befinner sig i som besökta i världsresor.",
"wikipedia": "Wikipedia"
}, },
"home": { "home": {
"desc_1": "Upptäck, planera och utforska med lätthet", "desc_1": "Upptäck, planera och utforska med lätthet",
@ -215,7 +231,9 @@
"registration_disabled": "Registreringen är för närvarande inaktiverad.", "registration_disabled": "Registreringen är för närvarande inaktiverad.",
"signup": "Registrera dig", "signup": "Registrera dig",
"username": "Användarnamn", "username": "Användarnamn",
"public_tooltip": "Med en offentlig profil kan användare dela samlingar med dig och se din profil på användarsidan." "public_tooltip": "Med en offentlig profil kan användare dela samlingar med dig och se din profil på användarsidan.",
"profile_picture": "Profilbild",
"public_profile": "Offentlig profil"
}, },
"users": { "users": {
"no_users_found": "Inga användare hittades med offentliga profiler." "no_users_found": "Inga användare hittades med offentliga profiler."
@ -232,6 +250,16 @@
"settings_page": "Inställningssida", "settings_page": "Inställningssida",
"update": "Uppdatera", "update": "Uppdatera",
"update_error": "Fel vid uppdatering av inställningar", "update_error": "Fel vid uppdatering av inställningar",
"update_success": "Inställningarna har uppdaterats!" "update_success": "Inställningarna har uppdaterats!",
"change_password": "Ändra lösenord",
"invalid_token": "Token är ogiltig eller har gått ut",
"login_redir": "Du kommer då att omdirigeras till inloggningssidan.",
"missing_email": "Vänligen ange en e-postadress",
"password_does_not_match": "Lösenord stämmer inte överens",
"password_is_required": "Lösenord krävs",
"possible_reset": "Om e-postadressen du angav är kopplad till ett konto kommer du att få ett e-postmeddelande med instruktioner för att återställa ditt lösenord!",
"reset_password": "Återställ lösenord",
"submit": "Överlämna",
"token_required": "Token och UID krävs för lösenordsåterställning."
} }
} }

View file

@ -149,7 +149,22 @@
"url": "网址", "url": "网址",
"warning": "警告", "warning": "警告",
"wiki_desc": "从维基百科文章中提取与冒险名称匹配的摘录。", "wiki_desc": "从维基百科文章中提取与冒险名称匹配的摘录。",
"wikipedia": "维基百科" "wikipedia": "维基百科",
"adventure_not_found": "没有任何冒险可以展示。\n使用右下角的加号按钮添加一些或尝试更改过滤器",
"all": "全部",
"error_updating_regions": "更新区域时出错",
"mark_region_as_visited": "将地区 {region}、{country} 标记为已访问?",
"mark_visited": "马克访问过",
"my_adventures": "我的冒险",
"no_adventures_found": "没有发现冒险",
"no_collections_found": "未找到可添加此冒险的集合。",
"no_linkable_adventures": "没有发现任何冒险可以链接到这个集合。",
"not_visited": "未访问过",
"regions_updated": "地区已更新",
"update_visited_regions": "更新访问过的地区",
"update_visited_regions_disclaimer": "这可能需要一段时间,具体取决于您访问过的冒险活动的数量。",
"visited_region_check": "访问地区检查",
"visited_region_check_desc": "通过选择此选项,服务器将检查您访问过的所有冒险活动,并将它们所在的区域标记为在世界旅行中访问过的区域。"
}, },
"home": { "home": {
"desc_1": "轻松发现、规划和探索", "desc_1": "轻松发现、规划和探索",
@ -235,6 +250,16 @@
"settings_page": "设置页面", "settings_page": "设置页面",
"update": "更新", "update": "更新",
"update_error": "更新设置时出错", "update_error": "更新设置时出错",
"update_success": "设置更新成功!" "update_success": "设置更新成功!",
"change_password": "更改密码",
"invalid_token": "令牌无效或已过期",
"login_redir": "然后您将被重定向到登录页面。",
"missing_email": "请输入电子邮件地址",
"password_does_not_match": "密码不匹配",
"password_is_required": "需要密码",
"possible_reset": "如果您提供的电子邮件地址与帐户关联,您将收到一封电子邮件,其中包含重置密码的说明!",
"reset_password": "重置密码",
"submit": "提交",
"token_required": "重置密码需要令牌和 UID。"
} }
} }

View file

@ -10,7 +10,7 @@ export const actions: Actions = {
const email = formData.get('email') as string | null | undefined; const email = formData.get('email') as string | null | undefined;
if (!email) { if (!email) {
return fail(400, { message: 'Email is required' }); return fail(400, { message: 'missing_email' });
} }
let res = await fetch(`${endpoint}/auth/password/reset/`, { let res = await fetch(`${endpoint}/auth/password/reset/`, {

View file

@ -1,29 +1,29 @@
<script lang="ts"> <script lang="ts">
import { enhance } from '$app/forms'; import { enhance } from '$app/forms';
import { page } from '$app/stores'; import { page } from '$app/stores';
import { t } from 'svelte-i18n';
</script> </script>
<h1 class="text-center font-extrabold text-4xl mb-6">Reset Password</h1> <h1 class="text-center font-extrabold text-4xl mb-6">{$t('settings.reset_password')}</h1>
<div class="flex justify-center"> <div class="flex justify-center">
<form method="post" action="?/forgotPassword" class="w-full max-w-xs" use:enhance> <form method="post" action="?/forgotPassword" class="w-full max-w-xs" use:enhance>
<label for="email">Email</label> <label for="email">{$t('auth.email')}</label>
<input <input
name="email" name="email"
type="email" type="email"
id="email" id="email"
class="block mb-2 input input-bordered w-full max-w-xs" class="block mb-2 input input-bordered w-full max-w-xs"
/><br /> /><br />
<button class="py-2 px-4 btn btn-primary mr-2">Reset Password</button> <button class="py-2 px-4 btn btn-primary mr-2">{$t('settings.reset_password')}</button>
{#if $page.form?.message} {#if $page.form?.message}
<div class="text-center text-error mt-4"> <div class="text-center text-error mt-4">
{$page.form?.message} {$t(`settings.${$page.form?.message}`)}
</div> </div>
{/if} {/if}
{#if $page.form?.success} {#if $page.form?.success}
<div class="text-center text-success mt-4"> <div class="text-center text-success mt-4">
If the email address you provided is associated with an account, you will receive an email {$t('settings.possible_reset')}
with instructions to reset your password!
</div> </div>
{/if} {/if}
</form> </form>

View file

@ -25,11 +25,11 @@ export const actions: Actions = {
const uid = formData.get('uid') as string; const uid = formData.get('uid') as string;
if (!new_password1 || !new_password2) { if (!new_password1 || !new_password2) {
return fail(400, { message: 'Password is required' }); return fail(400, { message: 'settings.password_is_required' });
} }
if (new_password1 !== new_password2) { if (new_password1 !== new_password2) {
return fail(400, { message: 'Passwords do not match' }); return fail(400, { message: 'settings.password_does_not_match' });
} }
if (!token || !uid) { if (!token || !uid) {
@ -48,9 +48,7 @@ export const actions: Actions = {
}) })
}); });
if (!response.ok) { if (!response.ok) {
let responseJson = await response.json(); return fail(response.status, { message: 'settings.invalid_token' });
const key = Object.keys(responseJson)[0];
return fail(response.status, { message: responseJson[key] });
} else { } else {
return redirect(302, '/login'); return redirect(302, '/login');
} }

View file

@ -3,14 +3,15 @@
import { goto } from '$app/navigation'; import { goto } from '$app/navigation';
import { page } from '$app/stores'; import { page } from '$app/stores';
import type { PageData } from './$types'; import type { PageData } from './$types';
import { t } from 'svelte-i18n';
export let data: PageData; export let data: PageData;
</script> </script>
<h1 class="text-center font-bold text-4xl mb-4">Change Password</h1> <h1 class="text-center font-bold text-4xl mb-4">{$t('settings.change_password')}</h1>
{#if data.props.token && data.props.uid} {#if data.props.token && data.props.uid}
<p class="text-center">You will then be redirected to the login page.</p> <p class="text-center">{$t('settings.login_redir')}</p>
<div <div
class="modal-action items-center" class="modal-action items-center"
style="display: flex; flex-direction: column; align-items: center; width: 100%;" style="display: flex; flex-direction: column; align-items: center; width: 100%;"
@ -25,7 +26,7 @@
class="input input-bordered w-full" class="input input-bordered w-full"
id="new_password1" id="new_password1"
name="new_password1" name="new_password1"
placeholder="New Password" placeholder={$t('settings.new_password')}
/> />
</div> </div>
<div class="mb-2 w-full"> <div class="mb-2 w-full">
@ -34,13 +35,13 @@
class="input input-bordered w-full" class="input input-bordered w-full"
id="new_password2" id="new_password2"
name="new_password2" name="new_password2"
placeholder="Confirm Password" placeholder={$t('settings.confirm_new_password')}
/> />
</div> </div>
<button type="submit" class="btn btn-primary w-full">Submit</button> <button type="submit" class="btn btn-primary w-full">{$t('settings.submit')}</button>
{#if $page.form?.message} {#if $page.form?.message}
<div class="text-center text-error mt-4"> <div class="text-center text-error mt-4">
{$page.form?.message} {$t($page.form?.message)}
</div> </div>
{/if} {/if}
</form> </form>
@ -48,10 +49,10 @@
{:else} {:else}
<div class="flex justify-center"> <div class="flex justify-center">
<div class="items-center justify-center"> <div class="items-center justify-center">
<p class="text-center">Token and UID are required for password reset.</p> <p class="text-center">{$t('settings.token_required')}</p>
<button class="btn btn-neutral" on:click={() => goto('/settings/forgot-password')}> <button class="btn btn-neutral" on:click={() => goto('/settings/forgot-password')}>
Reset Password {$t('settings.reset_password')}
</button> </button>
</div> </div>
</div> </div>