1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-07-23 14:59:36 +02:00

Refactor localization strings and add missing translations

This commit is contained in:
Sean Morley 2024-10-29 10:29:03 -04:00
parent fcd2d27221
commit 05076a6732
15 changed files with 1245 additions and 441 deletions

View file

@ -1,5 +1,6 @@
<script lang="ts">
import { onMount } from 'svelte';
import { t } from 'svelte-i18n';
export let activities: string[] | undefined | null;
@ -53,7 +54,7 @@
<input
type="text"
class="input input-bordered w-full"
placeholder="Add an activity"
placeholder={$t('adventures.add_an_activity')}
bind:value={inputVal}
on:keydown={(e) => {
if (e.key === 'Enter') {
@ -62,7 +63,9 @@
}
}}
/>
<button type="button" class="btn btn-neutral" on:click={addActivity}>Add</button>
<button type="button" class="btn btn-neutral" on:click={addActivity}
>{$t('adventures.add')}</button
>
</div>
{#if inputVal && filteredItems.length > 0}
<ul class="absolute z-10 w-full bg-base-100 shadow-lg max-h-60 overflow-auto">
@ -95,7 +98,7 @@
class="btn btn-sm btn-error"
on:click={() => removeActivity(activity)}
>
Remove
{$t('adventures.remove')}
</button>
</li>
{/each}

View file

@ -166,7 +166,7 @@
let res = await fetch(`/api/generate/img/?name=${imageSearch}`);
let data = await res.json();
if (!res.ok) {
wikiImageError = 'Failed to fetch image';
wikiImageError = $t('adventures.image_fetch_failed');
return;
}
if (data.source) {
@ -200,7 +200,7 @@
e.preventDefault();
}
if (!query) {
alert('Please enter a location');
alert($t('adventures.no_location'));
return;
}
let res = await fetch(`https://nominatim.openstreetmap.org/search?q=${query}&format=jsonv2`, {
@ -229,12 +229,8 @@
addToast('error', $t('adventures.start_before_end_error'));
return;
}
if (new_start_date === '' || new_end_date === '') {
addToast('error', 'Please enter a start and end date');
return;
}
if (new_end_date && !new_start_date) {
addToast('error', 'Please enter a start date');
addToast('error', $t('adventures.no_start_date'));
return;
}
adventure.visits = [
@ -307,7 +303,7 @@
adventure.description = data.extract;
wikiError = '';
} else {
wikiError = 'No description found';
wikiError = $t('adventures.no_description_found');
}
}
@ -331,12 +327,12 @@
if (result.data.id && result.data.image) {
adventure.images = [...adventure.images, result.data];
images = [...images, result.data];
addToast('success', 'Image uploaded');
addToast('success', $t('adventures.image_upload_success'));
fileInput.value = '';
console.log(adventure);
} else {
addToast('error', result.data.error || 'Failed to upload image');
addToast('error', result.data.error || $t('adventures.image_upload_error'));
}
}
};
@ -358,10 +354,10 @@
adventure = data as Adventure;
isDetails = false;
warningMessage = '';
addToast('success', 'Adventure created');
addToast('success', $t('adventures.adventure_created'));
} else {
warningMessage = Object.values(data)[0] as string;
addToast('error', 'Failed to create adventure');
addToast('error', $t('adventures.adventure_create_error'));
}
} else {
let res = await fetch(`/api/adventures/${adventure.id}`, {
@ -376,10 +372,10 @@
adventure = data as Adventure;
isDetails = false;
warningMessage = '';
addToast('success', 'Adventure updated');
addToast('success', $t('adventures.adventure_updated'));
} else {
warningMessage = Object.values(data)[0] as string;
addToast('error', 'Failed to update adventure');
addToast('error', $t('adventures.adventure_update_error'));
}
}
}
@ -391,7 +387,7 @@
<!-- svelte-ignore a11y-no-noninteractive-element-interactions -->
<div class="modal-box w-11/12 max-w-3xl" role="dialog" on:keydown={handleKeydown} tabindex="0">
<h3 class="font-bold text-2xl">
{adventureToEdit ? 'Edit Adventure' : 'New Adventure'}
{adventureToEdit ? $t('adventures.edit_adventure') : $t('adventures.new_adventure')}
</h3>
{#if adventure.id === '' || isDetails}
<div class="modal-action items-center">
@ -400,10 +396,12 @@
<!-- <div class="grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-3"> -->
<div class="collapse collapse-plus bg-base-200 mb-4">
<input type="checkbox" checked />
<div class="collapse-title text-xl font-medium">Basic Information</div>
<div class="collapse-title text-xl font-medium">
{$t('adventures.basic_information')}
</div>
<div class="collapse-content">
<div>
<label for="name">Name</label><br />
<label for="name">{$t('adventures.name')}</label><br />
<input
type="text"
id="name"
@ -414,16 +412,16 @@
/>
</div>
<div>
<label for="link">Category</label><br />
<label for="link">{$t('adventures.category')}</label><br />
<select class="select select-bordered w-full max-w-xs" bind:value={adventure.type}>
<option disabled selected>Select Adventure Type</option>
<option disabled selected>{$t('adventures.select_adventure_category')}</option>
{#each ADVENTURE_TYPES as type}
<option value={type.type}>{type.label}</option>
{/each}
</select>
</div>
<div>
<label for="rating">Rating</label><br />
<label for="rating">{$t('adventures.rating')}</label><br />
<input
type="number"
min="0"
@ -482,14 +480,14 @@
class="btn btn-sm btn-error ml-2"
on:click={() => (adventure.rating = NaN)}
>
Remove
{$t('adventures.remove')}
</button>
{/if}
</div>
</div>
<div>
<div>
<label for="link">Link</label><br />
<label for="link">{$t('adventures.link')}</label><br />
<input
type="text"
id="link"
@ -500,7 +498,7 @@
</div>
</div>
<div>
<label for="description">Description</label><br />
<label for="description">{$t('adventures.description')}</label><br />
<textarea
id="description"
name="description"
@ -508,12 +506,9 @@
class="textarea textarea-bordered w-full h-32"
></textarea>
<div class="mt-2">
<div
class="tooltip tooltip-right"
data-tip="Pulls excerpt from Wikipedia article matching the name of the adventure."
>
<div class="tooltip tooltip-right" data-tip={$t('adventures.wiki_desc')}>
<button type="button" class="btn btn-neutral" on:click={generateDesc}
>Generate Description</button
>{$t('adventures.generate_desc')}</button
>
</div>
<p class="text-red-500">{wikiError}</p>
@ -523,7 +518,7 @@
<div>
<div class="form-control flex items-start mt-1">
<label class="label cursor-pointer flex items-start space-x-2">
<span class="label-text">Public Adventure</span>
<span class="label-text">{$t('adventures.public_adventure')}</span>
<input
type="checkbox"
class="toggle toggle-primary"
@ -540,11 +535,13 @@
<div class="collapse collapse-plus bg-base-200 mb-4">
<input type="checkbox" />
<div class="collapse-title text-xl font-medium">Location Information</div>
<div class="collapse-title text-xl font-medium">
{$t('adventures.location_information')}
</div>
<div class="collapse-content">
<!-- <div class="grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3"> -->
<div>
<label for="latitude">Location</label><br />
<label for="latitude">{$t('adventures.location')}</label><br />
<input
type="text"
id="location"
@ -557,21 +554,21 @@
<form on:submit={geocode} class="mt-2">
<input
type="text"
placeholder="Seach for a location"
placeholder={$t('adventures.search_for_location')}
class="input input-bordered w-full max-w-xs mb-2"
id="search"
name="search"
bind:value={query}
/>
<button class="btn btn-neutral -mt-1" type="submit">Search</button>
<button class="btn btn-neutral -mt-1" type="submit">{$t('navbar.search')}</button>
<button class="btn btn-neutral -mt-1" type="button" on:click={clearMap}
>Clear Map</button
>{$t('adventures.clear_map')}</button
>
</form>
</div>
{#if places.length > 0}
<div class="mt-4 max-w-full">
<h3 class="font-bold text-lg mb-4">Search Results</h3>
<h3 class="font-bold text-lg mb-4">{$t('adventures.search_results')}</h3>
<div class="flex flex-wrap">
{#each places as place}
@ -595,7 +592,7 @@
</div>
</div>
{:else if noPlaces}
<p class="text-error text-lg">No results found</p>
<p class="text-error text-lg">{$t('adventures.no_results')}</p>
{/if}
<!-- </div> -->
<div>
@ -620,7 +617,7 @@ it would also work to just use on:click on the MapLibre component itself. -->
<div class="collapse collapse-plus bg-base-200 mb-4 overflow-visible">
<input type="checkbox" />
<div class="collapse-title text-xl font-medium">
Activity Types ({adventure.activity_types?.length || 0})
{$t('adventures.activity_types')} ({adventure.activity_types?.length || 0})
</div>
<div class="collapse-content">
<input
@ -638,12 +635,12 @@ it would also work to just use on:click on the MapLibre component itself. -->
<div class="collapse collapse-plus bg-base-200 mb-4">
<input type="checkbox" />
<div class="collapse-title text-xl font-medium">
Visits ({adventure.visits.length})
{$t('adventures.visits')} ({adventure.visits.length})
</div>
<div class="collapse-content">
<label class="label cursor-pointer flex items-start space-x-2">
{#if adventure.collection && collection && collection.start_date && collection.end_date}
<span class="label-text">Constrain to collection dates</span>
<span class="label-text">{$t('adventures.date_constrain')}</span>
<input
type="checkbox"
class="toggle toggle-primary"
@ -670,7 +667,7 @@ it would also work to just use on:click on the MapLibre component itself. -->
<input
type="date"
class="input input-bordered w-full"
placeholder="End Date"
placeholder={$t('adventures.end_date')}
bind:value={new_end_date}
on:keydown={(e) => {
if (e.key === 'Enter') {
@ -683,7 +680,7 @@ it would also work to just use on:click on the MapLibre component itself. -->
<input
type="date"
class="input input-bordered w-full"
placeholder="Start Date"
placeholder={$t('adventures.start_date')}
min={collection?.start_date}
max={collection?.end_date}
bind:value={new_start_date}
@ -697,7 +694,7 @@ it would also work to just use on:click on the MapLibre component itself. -->
<input
type="date"
class="input input-bordered w-full"
placeholder="End Date"
placeholder={$t('adventures.end_date')}
bind:value={new_end_date}
min={collection?.start_date}
max={collection?.end_date}
@ -714,7 +711,7 @@ it would also work to just use on:click on the MapLibre component itself. -->
<!-- textarea for notes -->
<textarea
class="textarea textarea-bordered w-full"
placeholder="Add notes"
placeholder={$t('adventures.add_notes')}
bind:value={new_notes}
on:keydown={(e) => {
if (e.key === 'Enter') {
@ -726,11 +723,13 @@ it would also work to just use on:click on the MapLibre component itself. -->
</div>
<div class="flex gap-2">
<button type="button" class="btn btn-neutral" on:click={addNewVisit}>Add</button>
<button type="button" class="btn btn-neutral" on:click={addNewVisit}
>{$t('adventures.add')}</button
>
</div>
{#if adventure.visits.length > 0}
<h2 class=" font-bold text-xl mt-2">My Visits</h2>
<h2 class=" font-bold text-xl mt-2">{$t('adventures.my_visits')}</h2>
{#each adventure.visits as visit}
<div class="flex flex-col gap-2">
<div class="flex gap-2">
@ -755,7 +754,7 @@ it would also work to just use on:click on the MapLibre component itself. -->
adventure.visits = adventure.visits.filter((v) => v !== visit);
}}
>
Remove
{$t('adventures.remove')}
</button>
</div>
</div>
@ -783,20 +782,20 @@ it would also work to just use on:click on the MapLibre component itself. -->
d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
/>
</svg>
<span>Warning: {warningMessage}</span>
<span>{$t('adventures.warning')}: {warningMessage}</span>
</div>
{/if}
<button type="submit" class="btn btn-primary">Save & Next</button>
<button type="button" class="btn" on:click={close}>Close</button>
<button type="submit" class="btn btn-primary">{$t('adventures.save_next')}</button>
<button type="button" class="btn" on:click={close}>{$t('about.close')}</button>
</div>
</div>
</form>
</div>
{:else}
<p>Upload images here</p>
<p>{$t('adventures.upload_images_here')}</p>
<!-- <p>{adventureToEdit.id}</p> -->
<div class="mb-2">
<label for="image">Image </label><br />
<label for="image">{$t('adventures.image')} </label><br />
<div class="flex">
<form
method="POST"
@ -813,11 +812,13 @@ it would also work to just use on:click on the MapLibre component itself. -->
id="image"
/>
<input type="hidden" name="adventure" value={adventure.id} id="adventure" />
<button class="btn btn-neutral mt-2 mb-2" type="submit">Upload Image</button>
<button class="btn btn-neutral mt-2 mb-2" type="submit"
>{$t('adventures.upload_image')}</button
>
</form>
</div>
<div class="mt-2">
<label for="url">URL</label><br />
<label for="url">{$t('adventures.url')}</label><br />
<input
type="text"
id="url"
@ -826,11 +827,11 @@ it would also work to just use on:click on the MapLibre component itself. -->
class="input input-bordered w-full"
/>
<button class="btn btn-neutral mt-2" type="button" on:click={fetchImage}
>Fetch Image</button
>{$t('adventures.fetch_image')}</button
>
</div>
<div class="mt-2">
<label for="name">Wikipedia</label><br />
<label for="name">{$t('adventures.wikipedia')}</label><br />
<input
type="text"
id="name"
@ -839,14 +840,14 @@ it would also work to just use on:click on the MapLibre component itself. -->
class="input input-bordered w-full"
/>
<button class="btn btn-neutral mt-2" type="button" on:click={fetchWikiImage}
>Fetch Image</button
>{$t('adventures.fetch_image')}</button
>
</div>
<div class="divider"></div>
{#if images.length > 0}
<h1 class="font-semibold text-xl">My Images</h1>
<h1 class="font-semibold text-xl">{$t('adventures.my_images')}</h1>
{:else}
<h1 class="font-semibold text-xl">No Images</h1>
<h1 class="font-semibold text-xl">{$t('adventures.no_images')}</h1>
{/if}
<div class="flex flex-wrap gap-2 mt-2">
{#each images as image}
@ -864,12 +865,14 @@ it would also work to just use on:click on the MapLibre component itself. -->
</div>
</div>
<div class="mt-4">
<button type="button" class="btn btn-primary" on:click={saveAndClose}>Close</button>
<button type="button" class="btn btn-primary" on:click={saveAndClose}
>{$t('about.close')}</button
>
</div>
{/if}
{#if adventure.is_public && adventure.id}
<div class="bg-neutral p-4 mt-2 rounded-md shadow-sm">
<p class=" font-semibold">Share this Adventure!</p>
<p class=" font-semibold">{$t('adventures.share_adventure')}</p>
<div class="flex items-center justify-between">
<p class="text-card-foreground font-mono">
{window.location.origin}/adventures/{adventure.id}
@ -881,7 +884,7 @@ it would also work to just use on:click on the MapLibre component itself. -->
}}
class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 h-10 px-4 py-2"
>
Copy Link
{$t('adventures.copy_link')}
</button>
</div>
</div>

View file

@ -98,12 +98,12 @@
{#if !data.user}
<li>
<button class="btn btn-primary" on:click={() => goto('/login')}
>{$t('navbar.login')}</button
>{$t('auth.login')}</button
>
</li>
<li>
<button class="btn btn-primary" on:click={() => goto('/signup')}
>{$t('navbar.signup')}</button
>{$t('auth.signup')}</button
>
</li>
{/if}
@ -165,13 +165,12 @@
{#if !data.user}
<li>
<button class="btn btn-primary" on:click={() => goto('/login')}
>{$t('navbar.login')}</button
<button class="btn btn-primary" on:click={() => goto('/login')}>{$t('auth.login')}</button
>
</li>
<li>
<button class="btn btn-primary" on:click={() => goto('/signup')}
>{$t('navbar.signup')}</button
>{$t('auth.signup')}</button
>
</li>
{/if}

View file

@ -45,7 +45,111 @@
"edit_adventure": "Abenteuer bearbeiten",
"no_image_found": "Kein Bild gefunden",
"open_details": "Details öffnen",
"remove_from_collection": "Aus der Sammlung entfernen"
"remove_from_collection": "Aus der Sammlung entfernen",
"adventure": "Abenteuer",
"adventure_delete_success": "Abenteuer erfolgreich gelöscht!",
"adventure_details": "Abenteuerdetails",
"adventure_type": "Abenteuertyp",
"archive": "Archiv",
"archived": "Archiviert",
"archived_collection_message": "Sammlung erfolgreich archiviert!",
"archived_collections": "Archivierte Sammlungen",
"ascending": "Aufsteigend",
"cancel": "Stornieren",
"category_filter": "Kategoriefilter",
"clear": "Klar",
"close_filters": "Filter schließen",
"collection": "Sammlung",
"collection_adventures": "Schließen Sie Sammlungsabenteuer ein",
"count_txt": "Ergebnisse, die Ihrer Suche entsprechen",
"date": "Datum",
"dates": "Termine",
"delete_adventure": "Abenteuer löschen",
"delete_collection": "Sammlung löschen",
"delete_collection_success": "Sammlung erfolgreich gelöscht!",
"delete_collection_warning": "Sind Sie sicher, dass Sie diese Sammlung löschen möchten? \nDadurch werden auch alle verknüpften Abenteuer gelöscht. \nDiese Aktion kann nicht rückgängig gemacht werden.",
"descending": "Absteigend",
"duration": "Dauer",
"edit_collection": "Sammlung bearbeiten",
"filter": "Filter",
"homepage": "Homepage",
"image_removed_error": "Fehler beim Entfernen des Bildes",
"image_removed_success": "Bild erfolgreich entfernt!",
"image_upload_error": "Fehler beim Hochladen des Bildes",
"image_upload_success": "Bild erfolgreich hochgeladen!",
"latitude": "Breite",
"longitude": "Länge",
"my_collections": "Meine Sammlungen",
"name": "Name",
"no_image_url": "Unter dieser URL wurde kein Bild gefunden.",
"not_found": "Abenteuer nicht gefunden",
"not_found_desc": "Das von Ihnen gesuchte Abenteuer konnte nicht gefunden werden. \nBitte probieren Sie ein anderes Abenteuer aus oder schauen Sie später noch einmal vorbei.",
"open_filters": "Öffnen Sie Filter",
"order_by": "Bestellen nach",
"order_direction": "Bestellrichtung",
"planned": "Geplant",
"private": "Privat",
"public": "Öffentlich",
"rating": "Bewertung",
"share": "Aktie",
"sort": "Sortieren",
"sources": "Quellen",
"start_before_end_error": "Das Startdatum muss vor dem Enddatum liegen",
"unarchive": "Dearchivieren",
"unarchived_collection_message": "Sammlung erfolgreich dearchiviert!",
"updated": "Aktualisiert",
"visit": "Besuchen",
"visited": "Besucht",
"visits": "Besuche",
"wiki_image_error": "Fehler beim Abrufen des Bildes aus Wikipedia",
"actions": "Aktionen",
"activity": "Aktivität",
"activity_types": "Aktivitätstypen",
"add": "Hinzufügen",
"add_an_activity": "Fügen Sie eine Aktivität hinzu",
"add_notes": "Notizen hinzufügen",
"adventure_create_error": "Das Abenteuer konnte nicht erstellt werden",
"adventure_created": "Abenteuer geschaffen",
"adventure_update_error": "Das Abenteuer konnte nicht aktualisiert werden",
"adventure_updated": "Abenteuer aktualisiert",
"basic_information": "Grundlegende Informationen",
"category": "Kategorie",
"clear_map": "Klare Karte",
"copy_link": "Link kopieren",
"create_new": "Neu erstellen...",
"date_constrain": "Auf Abholtermine beschränken",
"description": "Beschreibung",
"end_date": "Enddatum",
"fetch_image": "Bild abrufen",
"generate_desc": "Beschreibung generieren",
"image": "Bild",
"image_fetch_failed": "Bild konnte nicht abgerufen werden",
"link": "Link",
"location": "Standort",
"location_information": "Standortinformationen",
"my_images": "Meine Bilder",
"my_visits": "Meine Besuche",
"new_adventure": "Neues Abenteuer",
"no_description_found": "Keine Beschreibung gefunden",
"no_images": "Keine Bilder",
"no_location": "Bitte geben Sie einen Ort ein",
"no_results": "Keine Ergebnisse gefunden",
"no_start_date": "Bitte geben Sie ein Startdatum ein",
"public_adventure": "Öffentliches Abenteuer",
"remove": "Entfernen",
"save_next": "Speichern",
"search_for_location": "Suchen Sie nach einem Ort",
"search_results": "Suchergebnisse",
"see_adventures": "Siehe Abenteuer",
"select_adventure_category": "Wählen Sie die Abenteuerkategorie",
"share_adventure": "Teilen Sie dieses Abenteuer!",
"start_date": "Startdatum",
"upload_image": "Bild hochladen",
"upload_images_here": "Laden Sie hier Bilder hoch",
"url": "URL",
"warning": "Warnung",
"wiki_desc": "Ruft einen Auszug aus einem Wikipedia-Artikel ab, der zum Namen des Abenteuers passt.",
"wikipedia": "Wikipedia"
},
"home": {
"desc_1": "Entdecken, planen und erkunden Sie mit Leichtigkeit",
@ -58,7 +162,8 @@
"go_to": "Gehen Sie zu AdventureLog",
"hero_1": "Entdecken Sie die aufregendsten Abenteuer der Welt",
"hero_2": "Entdecken und planen Sie Ihr nächstes Abenteuer mit AdventureLog. \nEntdecken Sie atemberaubende Reiseziele, erstellen Sie individuelle Reiserouten und bleiben Sie unterwegs in Verbindung.",
"key_features": "Hauptmerkmale"
"key_features": "Hauptmerkmale",
"feature_2_desc": "Erstellen Sie ganz einfach individuelle Reiserouten und erhalten Sie eine tagesaktuelle Aufschlüsselung Ihrer Reise."
},
"navbar": {
"about": "Über AdventureLog",
@ -67,7 +172,6 @@
"discord": "Zwietracht",
"documentation": "Dokumentation",
"greeting": "Hallo",
"login": "Login",
"logout": "Abmelden",
"map": "Karte",
"my_activities": "Meine Aktivitäten",
@ -76,7 +180,6 @@
"search": "Suchen",
"settings": "Einstellungen",
"shared_with_me": "Mit mir geteilt",
"signup": "Melden Sie sich an",
"theme_selection": "Themenauswahl",
"themes": {
"aestetic-dark": "Ästhetisches Dunkel",
@ -89,5 +192,47 @@
},
"users": "Benutzer",
"worldtravel": "Weltreisen"
},
"auth": {
"confirm_password": "Passwort bestätigen",
"email": "E-Mail",
"first_name": "Vorname",
"forgot_password": "Passwort vergessen?",
"last_name": "Nachname",
"login": "Login",
"login_error": "Anmeldung mit den angegebenen Anmeldeinformationen nicht möglich.",
"password": "Passwort",
"registration_disabled": "Die Registrierung ist derzeit deaktiviert.",
"signup": "Melden Sie sich an",
"username": "Benutzername",
"profile_picture": "Profilbild",
"public_profile": "Öffentliches Profil"
},
"users": {
"no_users_found": "Keine Benutzer mit öffentlichen Profilen gefunden."
},
"worldtravel": {
"all": "Alle",
"all_subregions": "Alle Unterregionen",
"clear_search": "Suche löschen",
"completely_visited": "Vollständig besucht",
"country_list": "Länderliste",
"no_countries_found": "Keine Länder gefunden",
"not_visited": "Nicht besucht",
"num_countries": "Länder gefunden",
"partially_visited": "Teilweise besucht"
},
"settings": {
"account_settings": "Benutzerkontoeinstellungen",
"current_email": "Aktuelle E-Mail",
"email_change": "E-Mail ändern",
"new_email": "Neue E-Mail",
"new_password": "Neues Passwort",
"no_email_set": "Keine E-Mail-Adresse festgelegt",
"password_change": "Kennwort ändern",
"settings_page": "Einstellungsseite",
"update": "Aktualisieren",
"update_error": "Fehler beim Aktualisieren der Einstellungen",
"update_success": "Einstellungen erfolgreich aktualisiert!"
}
}

View file

@ -5,8 +5,6 @@
"worldtravel": "World Travel",
"map": "Map",
"users": "Users",
"login": "Login",
"signup": "Signup",
"search": "Search",
"profile": "Profile",
"greeting": "Hi",
@ -87,11 +85,45 @@
"updated": "Updated",
"name": "Name",
"date": "Date",
"activity_types": "Activity Types",
"date_constrain": "Constrain to collection dates",
"rating": "Rating",
"my_images": "My Images",
"add_an_activity": "Add an activity",
"no_images": "No Images",
"upload_images_here": "Upload images here",
"share_adventure": "Share this Adventure!",
"copy_link": "Copy Link",
"image": "Image",
"upload_image": "Upload Image",
"url": "URL",
"fetch_image": "Fetch Image",
"wikipedia": "Wikipedia",
"add_notes": "Add notes",
"warning": "Warning",
"add": "Add",
"save_next": "Save & Next",
"end_date": "End Date",
"my_visits": "My Visits",
"start_date": "Start Date",
"remove": "Remove",
"location": "Location",
"search_for_location": "Search for a location",
"clear_map": "Clear map",
"search_results": "Searh results",
"no_results": "No results found",
"wiki_desc": "Pulls excerpt from Wikipedia article matching the name of the adventure.",
"generate_desc": "Generate Description",
"public_adventure": "Public Adventure",
"location_information": "Location Information",
"link": "Link",
"description": "Description",
"sources": "Sources",
"collection_adventures": "Include Collection Adventures",
"filter": "Filter",
"category_filter": "Category Filter",
"category": "Category",
"select_adventure_category": "Select Adventure Category",
"clear": "Clear",
"my_collections": "My Collections",
"open_filters": "Open Filters",
@ -123,6 +155,19 @@
"dates": "Dates",
"wiki_image_error": "Error fetching image from Wikipedia",
"start_before_end_error": "Start date must be before end date",
"activity": "Activity",
"actions": "Actions",
"see_adventures": "See Adventures",
"image_fetch_failed": "Failed to fetch image",
"no_location": "Please enter a location",
"no_start_date": "Please enter a start date",
"no_description_found": "No description found",
"adventure_created": "Adventure created",
"adventure_create_error": "Failed to create adventure",
"adventure_updated": "Adventure updated",
"adventure_update_error": "Failed to update adventure",
"new_adventure": "New Adventure",
"basic_information": "Basic Information",
"activities": {
"general": "General 🌍",
"outdoor": "Outdoor 🏞️",
@ -165,6 +210,31 @@
"forgot_password": "Forgot Password?",
"signup": "Signup",
"login_error": "Unable to login with the provided credentials.",
"login": "Login"
"login": "Login",
"email": "Email",
"first_name": "First Name",
"last_name": "Last Name",
"confirm_password": "Confirm Password",
"registration_disabled": "Registration is currently disabled.",
"profile_picture": "Profile Picture",
"public_profile": "Public Profile",
"public_tooltip": "With a public profile, users can share collections with you and view your profile on the users page."
},
"users": {
"no_users_found": "No users found with public profiles."
},
"settings": {
"update_error": "Error updating settings",
"update_success": "Settings updated successfully!",
"settings_page": "Settings Page",
"account_settings": "User Account Settings",
"update": "Update",
"password_change": "Change Password",
"new_password": "New Password",
"confirm_new_password": "Confirm New Password",
"email_change": "Change Email",
"current_email": "Current Email",
"no_email_set": "No email set",
"new_email": "New Email"
}
}

View file

@ -5,8 +5,6 @@
"worldtravel": "Viajar por el Mundo",
"map": "Mapa",
"users": "Usuarios",
"login": "Iniciar Sesión",
"signup": "Registrarse",
"search": "Buscar",
"profile": "Perfil",
"greeting": "Hola",
@ -146,7 +144,54 @@
"image_upload_success": "¡Imagen cargada exitosamente!",
"no_image_url": "No se encontró ninguna imagen en esa URL.",
"start_before_end_error": "La fecha de inicio debe ser anterior a la fecha de finalización.",
"wiki_image_error": "Error al obtener la imagen de Wikipedia"
"wiki_image_error": "Error al obtener la imagen de Wikipedia",
"actions": "Comportamiento",
"activity": "Actividad",
"see_adventures": "Ver Aventuras",
"activity_types": "Tipos de actividad",
"add": "Agregar",
"add_notes": "Agregar notas",
"adventure_create_error": "No se pudo crear la aventura",
"adventure_created": "Aventura creada",
"adventure_update_error": "No se pudo actualizar la aventura",
"adventure_updated": "Aventura actualizada",
"basic_information": "Información básica",
"category": "Categoría",
"clear_map": "Borrar mapa",
"copy_link": "Copiar enlace",
"date_constrain": "Restringir a las fechas de recolección",
"description": "Descripción",
"end_date": "Fecha de finalización",
"fetch_image": "Obtener imagen",
"generate_desc": "Generar descripción",
"image": "Imagen",
"image_fetch_failed": "No se pudo recuperar la imagen",
"link": "Enlace",
"location": "Ubicación",
"location_information": "Información de ubicación",
"my_images": "Mis imágenes",
"my_visits": "Mis visitas",
"new_adventure": "Nueva aventura",
"no_description_found": "No se encontró ninguna descripción",
"no_images": "Sin imágenes",
"no_location": "Por favor ingresa una ubicación",
"no_results": "No se encontraron resultados",
"no_start_date": "Por favor ingrese una fecha de inicio",
"public_adventure": "Aventura pública",
"remove": "Eliminar",
"save_next": "Ahorrar",
"search_for_location": "Buscar una ubicación",
"search_results": "Resultados de búsqueda",
"select_adventure_category": "Seleccionar categoría de aventura",
"share_adventure": "¡Comparte esta aventura!",
"start_date": "Fecha de inicio",
"upload_image": "Subir imagen",
"upload_images_here": "Sube imágenes aquí",
"url": "URL",
"warning": "Advertencia",
"wiki_desc": "Extrae un extracto de un artículo de Wikipedia que coincide con el nombre de la aventura.",
"wikipedia": "Wikipedia",
"add_an_activity": "Agregar una actividad"
},
"worldtravel": {
"all": "Todo",
@ -165,6 +210,31 @@
"login_error": "No se puede iniciar sesión con las credenciales proporcionadas.",
"password": "Contraseña",
"signup": "Inscribirse",
"username": "Nombre de usuario"
"username": "Nombre de usuario",
"confirm_password": "confirmar Contraseña",
"email": "Correo electrónico",
"first_name": "Nombre de pila",
"last_name": "Apellido",
"registration_disabled": "El registro está actualmente deshabilitado.",
"profile_picture": "Foto de perfil",
"public_profile": "Perfil público",
"public_tooltip": "Con un perfil público, los usuarios pueden compartir colecciones con usted y ver su perfil en la página de usuarios."
},
"users": {
"no_users_found": "No se encontraron usuarios con perfiles públicos."
},
"settings": {
"account_settings": "Configuración de cuenta de usuario",
"confirm_new_password": "Confirmar nueva contraseña",
"current_email": "Correo electrónico actual",
"email_change": "Cambiar correo electrónico",
"new_email": "Nuevo correo electrónico",
"new_password": "Nueva contraseña",
"no_email_set": "No hay correo electrónico configurado",
"password_change": "Cambiar la contraseña",
"settings_page": "Página de configuración",
"update": "Actualizar",
"update_error": "Error al actualizar la configuración",
"update_success": "¡La configuración se actualizó correctamente!"
}
}

View file

@ -45,7 +45,111 @@
"edit_adventure": "Modifier l'aventure",
"no_image_found": "Aucune image trouvée",
"open_details": "Ouvrir les détails",
"remove_from_collection": "Supprimer de la collection"
"remove_from_collection": "Supprimer de la collection",
"adventure": "Aventure",
"adventure_delete_success": "Aventure supprimée avec succès !",
"adventure_details": "Détails de l'aventure",
"adventure_type": "Type d'aventure",
"archive": "Archive",
"archived": "Archivé",
"archived_collection_message": "Collection archivée avec succès !",
"archived_collections": "Collections archivées",
"ascending": "Ascendant",
"cancel": "Annuler",
"category_filter": "Filtre de catégorie",
"clear": "Clair",
"close_filters": "Fermer les filtres",
"collection": "Collection",
"collection_adventures": "Inclure les aventures de collection",
"count_txt": "résultats correspondant à votre recherche",
"create_new": "Créer un nouveau...",
"date": "Date",
"dates": "Dates",
"delete_adventure": "Supprimer l'aventure",
"delete_collection": "Supprimer la collection",
"delete_collection_success": "Collection supprimée avec succès !",
"delete_collection_warning": "Etes-vous sûr de vouloir supprimer cette collection ? \nCela supprimera également toutes les aventures liées. \nCette action ne peut pas être annulée.",
"descending": "Descendant",
"duration": "Durée",
"edit_collection": "Modifier la collection",
"filter": "Filtre",
"homepage": "Page d'accueil",
"image_removed_error": "Erreur lors de la suppression de l'image",
"image_removed_success": "Image supprimée avec succès !",
"image_upload_error": "Erreur lors du téléchargement de l'image",
"image_upload_success": "Image téléchargée avec succès !",
"latitude": "Latitude",
"longitude": "Longitude",
"my_collections": "Mes collections",
"name": "Nom",
"no_image_url": "Aucune image trouvée à cette URL.",
"not_found": "Aventure introuvable",
"not_found_desc": "L'aventure que vous cherchiez est introuvable. \nVeuillez essayer une autre aventure ou revenez plus tard.",
"open_filters": "Ouvrir les filtres",
"order_by": "Commander par",
"order_direction": "Direction de la commande",
"planned": "Prévu",
"private": "Privé",
"public": "Publique",
"rating": "Notation",
"share": "Partager",
"sort": "Trier",
"sources": "Sources",
"start_before_end_error": "La date de début doit être antérieure à la date de fin",
"unarchive": "Désarchiver",
"unarchived_collection_message": "Collection désarchivée avec succès !",
"updated": "Mis à jour",
"visit": "Visite",
"visited": "Visité",
"visits": "Visites",
"wiki_image_error": "Erreur lors de la récupération de l'image depuis Wikipédia",
"actions": "Actes",
"activity": "Activité",
"activity_types": "Types d'activités",
"add": "Ajouter",
"add_an_activity": "Ajouter une activité",
"add_notes": "Ajouter des notes",
"adventure_create_error": "Échec de la création de l'aventure",
"adventure_created": "Aventure créée",
"adventure_update_error": "Échec de la mise à jour de l'aventure",
"adventure_updated": "Aventure mise à jour",
"basic_information": "Informations de base",
"category": "Catégorie",
"clear_map": "Effacer la carte",
"copy_link": "Copier le lien",
"date_constrain": "Contraindre aux dates de collecte",
"description": "Description",
"end_date": "Date de fin",
"fetch_image": "Récupérer une image",
"generate_desc": "Générer une description",
"image": "Image",
"image_fetch_failed": "Échec de la récupération de l'image",
"link": "Lien",
"location": "Emplacement",
"location_information": "Informations de localisation",
"my_images": "Mes images",
"my_visits": "Mes visites",
"new_adventure": "Nouvelle aventure",
"no_description_found": "Aucune description trouvée",
"no_images": "Aucune image",
"no_location": "Veuillez entrer un emplacement",
"no_results": "Aucun résultat trouvé",
"no_start_date": "Veuillez entrer une date de début",
"public_adventure": "Aventure publique",
"remove": "Retirer",
"save_next": "Sauvegarder",
"search_for_location": "Rechercher un emplacement",
"search_results": "Résultats de la recherche",
"see_adventures": "Voir les aventures",
"select_adventure_category": "Sélectionnez la catégorie d'aventure",
"share_adventure": "Partagez cette aventure !",
"start_date": "Date de début",
"upload_image": "Télécharger une image",
"upload_images_here": "Téléchargez des images ici",
"url": "URL",
"warning": "Avertissement",
"wiki_desc": "Extrait un extrait de l'article Wikipédia correspondant au nom de l'aventure.",
"wikipedia": "Wikipédia"
},
"home": {
"desc_1": "Découvrez, planifiez et explorez en toute simplicité",
@ -68,7 +172,6 @@
"discord": "Discorde",
"documentation": "Documentation",
"greeting": "Salut",
"login": "Se connecter",
"logout": "Déconnexion",
"map": "Carte",
"my_activities": "Mes activités",
@ -77,14 +180,61 @@
"search": "Recherche",
"settings": "Paramètres",
"shared_with_me": "Partagé avec moi",
"signup": "S'inscrire",
"theme_selection": "Sélection de thèmes",
"themes": {
"forest": "Forêt",
"light": "Lumière",
"night": "Nuit"
"night": "Nuit",
"aestetic-dark": "Esthétique sombre",
"aestetic-light": "Lumière esthétique",
"aqua": "Aqua",
"dark": "Sombre"
},
"users": "Utilisateurs",
"worldtravel": "Voyage dans le monde"
},
"auth": {
"confirm_password": "Confirmez le mot de passe",
"email": "E-mail",
"first_name": "Prénom",
"forgot_password": "Mot de passe oublié ?",
"last_name": "Nom de famille",
"login": "Se connecter",
"login_error": "Impossible de se connecter avec les identifiants fournis.",
"password": "Mot de passe",
"registration_disabled": "L'inscription est actuellement désactivée.",
"signup": "S'inscrire",
"username": "Nom d'utilisateur",
"profile_picture": "Photo de profil",
"public_profile": "Profil public",
"public_tooltip": "Avec un profil public, les utilisateurs peuvent partager des collections avec vous et afficher votre profil sur la page des utilisateurs."
},
"users": {
"no_users_found": "Aucun utilisateur trouvé avec des profils publics."
},
"worldtravel": {
"all": "Tous",
"all_subregions": "Toutes les sous-régions",
"clear_search": "Effacer la recherche",
"completely_visited": "Entièrement visité",
"country_list": "Liste des pays",
"no_countries_found": "Aucun pays trouvé",
"not_visited": "Non visité",
"num_countries": "pays trouvés",
"partially_visited": "Partiellement visité"
},
"settings": {
"account_settings": "Paramètres du compte utilisateur",
"confirm_new_password": "Confirmer le nouveau mot de passe",
"current_email": "Courriel actuel",
"email_change": "Changer l'e-mail",
"new_email": "Nouvel e-mail",
"new_password": "Nouveau mot de passe",
"no_email_set": "Aucune adresse e-mail définie",
"password_change": "Changer le mot de passe",
"settings_page": "Page Paramètres",
"update": "Mise à jour",
"update_error": "Erreur lors de la mise à jour des paramètres",
"update_success": "Paramètres mis à jour avec succès !"
}
}

View file

@ -87,7 +87,69 @@
"unarchived_collection_message": "Raccolta annullata con successo!",
"updated": "Aggiornato",
"visit": "Visita",
"visits": "Visite"
"visits": "Visite",
"adventure_delete_success": "Avventura eliminata con successo!",
"collection_adventures": "Includi avventure di raccolta",
"collection_link_success": "Avventura collegata alla raccolta con successo!",
"dates": "Date",
"delete_adventure": "Elimina avventura",
"duration": "Durata",
"image_removed_error": "Errore durante la rimozione dell'immagine",
"image_removed_success": "Immagine rimossa con successo!",
"image_upload_error": "Errore durante il caricamento dell'immagine",
"image_upload_success": "Immagine caricata con successo!",
"no_image_url": "Nessuna immagine trovata a quell'URL.",
"planned": "Pianificato",
"start_before_end_error": "La data di inizio deve essere antecedente alla data di fine",
"visited": "Visitato",
"actions": "Azioni",
"activity": "Attività",
"activity_types": "Tipi di attività",
"add": "Aggiungere",
"add_an_activity": "Aggiungi un'attività",
"add_notes": "Aggiungi note",
"adventure_create_error": "Impossibile creare l'avventura",
"adventure_created": "Avventura creata",
"adventure_update_error": "Impossibile aggiornare l'avventura",
"adventure_updated": "Avventura aggiornata",
"basic_information": "Informazioni di base",
"category": "Categoria",
"clear_map": "Mappa chiara",
"copy_link": "Copia collegamento",
"date_constrain": "Vincolare alle date di raccolta",
"description": "Descrizione",
"end_date": "Data di fine",
"fetch_image": "Recupera immagine",
"generate_desc": "Genera descrizione",
"image": "Immagine",
"image_fetch_failed": "Impossibile recuperare l'immagine",
"link": "Collegamento",
"location": "Posizione",
"location_information": "Informazioni sulla posizione",
"my_images": "Le mie immagini",
"my_visits": "Le mie visite",
"new_adventure": "Nuova avventura",
"no_description_found": "Nessuna descrizione trovata",
"no_images": "Nessuna immagine",
"no_location": "Inserisci una località",
"no_results": "Nessun risultato trovato",
"no_start_date": "Inserisci una data di inizio",
"public_adventure": "Avventura pubblica",
"remove": "Rimuovere",
"save_next": "Salva",
"search_for_location": "Cerca una posizione",
"search_results": "Risultati della ricerca",
"see_adventures": "Vedi Avventure",
"select_adventure_category": "Seleziona la categoria Avventura",
"share_adventure": "Condividi questa avventura!",
"start_date": "Data di inizio",
"upload_image": "Carica immagine",
"upload_images_here": "Carica le immagini qui",
"url": "URL",
"warning": "Avvertimento",
"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",
"wikipedia": "Wikipedia"
},
"home": {
"desc_1": "Scopri, pianifica ed esplora con facilità",
@ -110,7 +172,6 @@
"discord": "Discordia",
"documentation": "Documentazione",
"greeting": "CIAO",
"login": "Login",
"logout": "Esci",
"map": "Mappa",
"my_activities": "Le mie attività",
@ -119,7 +180,6 @@
"search": "Ricerca",
"settings": "Impostazioni",
"shared_with_me": "Condiviso con me",
"signup": "Iscrizione",
"theme_selection": "Selezione del tema",
"themes": {
"aestetic-dark": "Oscuro estetico",
@ -132,5 +192,49 @@
},
"users": "Utenti",
"worldtravel": "Viaggio nel mondo"
},
"auth": {
"confirm_password": "Conferma password",
"email": "E-mail",
"first_name": "Nome di battesimo",
"forgot_password": "Ha dimenticato la password?",
"last_name": "Cognome",
"login": "Login",
"login_error": "Impossibile accedere con le credenziali fornite.",
"password": "Password",
"registration_disabled": "La registrazione è attualmente disabilitata.",
"signup": "Iscrizione",
"username": "Nome utente",
"profile_picture": "Immagine del profilo",
"public_profile": "Profilo pubblico",
"public_tooltip": "Con un profilo pubblico, gli utenti possono condividere raccolte con te e visualizzare il tuo profilo nella pagina degli utenti."
},
"users": {
"no_users_found": "Nessun utente trovato con profili pubblici."
},
"worldtravel": {
"all": "Tutto",
"all_subregions": "Tutte le sottoregioni",
"clear_search": "Cancella ricerca",
"completely_visited": "Completamente visitato",
"country_list": "Elenco dei paesi",
"no_countries_found": "Nessun paese trovato",
"not_visited": "Non visitato",
"num_countries": "paesi trovati",
"partially_visited": "Parzialmente visitato"
},
"settings": {
"account_settings": "Impostazioni dell'account utente",
"confirm_new_password": "Conferma nuova password",
"current_email": "E-mail corrente",
"email_change": "Cambia e-mail",
"new_email": "Nuova e-mail",
"new_password": "Nuova parola d'ordine",
"no_email_set": "Nessuna e-mail impostata",
"password_change": "Cambiare la password",
"settings_page": "Pagina Impostazioni",
"update": "Aggiornamento",
"update_error": "Errore durante l'aggiornamento delle impostazioni",
"update_success": "Impostazioni aggiornate con successo!"
}
}

View file

@ -1,136 +1,240 @@
{
"about": {
"about": "Over",
"close": "Dichtbij",
"license": "Gelicentieerd onder de GPL-3.0-licentie.",
"message": "Gemaakt met ❤️ in de Verenigde Staten.",
"nominatim_1": "Locatie zoeken en geocodering wordt verzorgd door",
"nominatim_2": "Hun gegevens zijn in licentie gegeven onder de ODbL-licentie.",
"oss_attributions": "Open source-attributies",
"other_attributions": "Aanvullende toeschrijvingen zijn te vinden in het README-bestand.",
"source_code": "Broncode"
},
"adventures": {
"activities": {
"activity": "Activiteit 🏄",
"art_museums": "Kunst",
"attraction": "Attractie 🎢",
"culture": "Cultuur 🎭",
"dining": "Dineren 🍽️",
"event": "Evenement 🎉",
"festivals": "Festivals 🎪",
"fitness": "Fitness🏋",
"general": "Algemeen 🌍",
"hiking": "Wandelen 🥾",
"historical_sites": "Historische locaties 🏛️",
"lodging": "Accommodatie 🛌",
"music_concerts": "Muziek",
"nightlife": "Nachtleven 🌃",
"other": "Ander",
"outdoor": "Buiten 🏞️",
"shopping": "Winkelen 🛍️",
"spiritual_journeys": "Spirituele reizen 🧘‍♀️",
"transportation": "Vervoer 🚗",
"volunteer_work": "Vrijwilligerswerk 🤝",
"water_sports": "Watersport 🚤",
"wildlife": "Dieren in het wild 🦒"
},
"add_to_collection": "Toevoegen aan collectie",
"adventure": "Avontuur",
"adventure_delete_confirm": "Weet je zeker dat je dit avontuur wilt verwijderen? \nDeze actie kan niet ongedaan worden gemaakt.",
"adventure_details": "Avontuurdetails",
"adventure_type": "Avontuurtype",
"archive": "Archief",
"archived": "Gearchiveerd",
"archived_collection_message": "Collectie succesvol gearchiveerd!",
"archived_collections": "Gearchiveerde collecties",
"ascending": "Oplopend",
"cancel": "Annuleren",
"category_filter": "Categoriefilter",
"clear": "Duidelijk",
"close_filters": "Sluit Filters",
"collection": "Verzameling",
"collection_adventures": "Inclusief collectie-avonturen",
"collection_link_error": "Fout bij het koppelen van avontuur aan collectie",
"collection_link_success": "Avontuur succesvol gekoppeld aan collectie!",
"collection_remove_error": "Fout bij verwijderen van avontuur uit verzameling",
"collection_remove_success": "Avontuur is succesvol uit de collectie verwijderd!",
"count_txt": "resultaten die overeenkomen met uw zoekopdracht",
"create_new": "Maak nieuwe...",
"date": "Datum",
"delete": "Verwijderen",
"delete_collection": "Verzameling verwijderen",
"delete_collection_success": "Collectie succesvol verwijderd!",
"delete_collection_warning": "Weet u zeker dat u deze verzameling wilt verwijderen? \nHiermee worden ook alle gekoppelde avonturen verwijderd. \nDeze actie kan niet ongedaan worden gemaakt.",
"descending": "Aflopend",
"edit_adventure": "Avontuur bewerken",
"edit_collection": "Verzameling bewerken",
"filter": "Filter",
"homepage": "Startpagina",
"latitude": "Breedte",
"longitude": "Lengte",
"my_collections": "Mijn collecties",
"name": "Naam",
"no_image_found": "Geen afbeelding gevonden",
"not_found": "Avontuur niet gevonden",
"not_found_desc": "Het avontuur waar je naar op zoek was, kon niet gevonden worden. \nProbeer een ander avontuur of kom later nog eens terug.",
"open_details": "Details openen",
"open_filters": "Filters openen",
"order_by": "Bestel per",
"order_direction": "Bestelrichting",
"private": "Privé",
"public": "Openbaar",
"rating": "Beoordeling",
"remove_from_collection": "Verwijderen uit collectie",
"share": "Deel",
"sort": "Soort",
"sources": "Bronnen",
"unarchive": "Uit het archief halen",
"unarchived_collection_message": "Collectie is succesvol gedearchiveerd!",
"updated": "Bijgewerkt",
"visit": "Bezoek",
"visits": "Bezoeken"
},
"home": {
"desc_1": "Ontdek, plan en verken met gemak",
"desc_2": "AdventureLog is ontworpen om uw reis te vereenvoudigen en u de tools en middelen te bieden om uw volgende onvergetelijke avontuur te plannen, in te pakken en te navigeren.",
"feature_1": "Reislogboek",
"feature_1_desc": "Houd uw avonturen bij met een persoonlijk reislogboek en deel uw ervaringen met vrienden en familie.",
"feature_2": "Reisplanning",
"feature_2_desc": "Maak eenvoudig aangepaste reisroutes en krijg een overzicht van uw reis van dag tot dag.",
"feature_3": "Reiskaart",
"feature_3_desc": "Bekijk uw reizen over de hele wereld met een interactieve kaart en ontdek nieuwe bestemmingen.",
"go_to": "Ga naar AdventureLog",
"hero_2": "Ontdek en plan je volgende avontuur met AdventureLog. \nOntdek adembenemende bestemmingen, maak aangepaste reisroutes en blijf onderweg verbonden."
},
"navbar": {
"about": "Over AdventureLog",
"adventures": "Avonturen",
"collections": "Collecties",
"discord": "Meningsverschil",
"documentation": "Documentatie",
"greeting": "Hoi",
"login": "Login",
"logout": "Uitloggen",
"map": "Kaart",
"my_activities": "Mijn activiteiten",
"my_adventures": "Mijn avonturen",
"profile": "Profiel",
"search": "Zoekopdracht",
"settings": "Instellingen",
"shared_with_me": "Gedeeld met mij",
"signup": "Aanmelden",
"theme_selection": "Thema Selectie",
"themes": {
"aestetic-dark": "Esthetisch donker",
"aestetic-light": "Esthetisch licht",
"aqua": "Aqua",
"dark": "Donker",
"forest": "Woud",
"light": "Licht",
"night": "Nacht"
},
"users": "Gebruikers",
"worldtravel": "Wereldreizen"
}
"about": {
"about": "Over",
"close": "Dichtbij",
"license": "Gelicentieerd onder de GPL-3.0-licentie.",
"message": "Gemaakt met ❤️ in de Verenigde Staten.",
"nominatim_1": "Locatie zoeken en geocodering wordt verzorgd door",
"nominatim_2": "Hun gegevens zijn in licentie gegeven onder de ODbL-licentie.",
"oss_attributions": "Open source-attributies",
"other_attributions": "Aanvullende toeschrijvingen zijn te vinden in het README-bestand.",
"source_code": "Broncode"
},
"adventures": {
"activities": {
"activity": "Activiteit 🏄",
"art_museums": "Kunst",
"attraction": "Attractie 🎢",
"culture": "Cultuur 🎭",
"dining": "Dineren 🍽️",
"event": "Evenement 🎉",
"festivals": "Festivals 🎪",
"fitness": "Fitness🏋",
"general": "Algemeen 🌍",
"hiking": "Wandelen 🥾",
"historical_sites": "Historische locaties 🏛️",
"lodging": "Accommodatie 🛌",
"music_concerts": "Muziek",
"nightlife": "Nachtleven 🌃",
"other": "Ander",
"outdoor": "Buiten 🏞️",
"shopping": "Winkelen 🛍️",
"spiritual_journeys": "Spirituele reizen 🧘‍♀️",
"transportation": "Vervoer 🚗",
"volunteer_work": "Vrijwilligerswerk 🤝",
"water_sports": "Watersport 🚤",
"wildlife": "Dieren in het wild 🦒"
},
"add_to_collection": "Toevoegen aan collectie",
"adventure": "Avontuur",
"adventure_delete_confirm": "Weet je zeker dat je dit avontuur wilt verwijderen? \nDeze actie kan niet ongedaan worden gemaakt.",
"adventure_details": "Avontuurdetails",
"adventure_type": "Avontuurtype",
"archive": "Archief",
"archived": "Gearchiveerd",
"archived_collection_message": "Collectie succesvol gearchiveerd!",
"archived_collections": "Gearchiveerde collecties",
"ascending": "Oplopend",
"cancel": "Annuleren",
"category_filter": "Categoriefilter",
"clear": "Duidelijk",
"close_filters": "Sluit Filters",
"collection": "Verzameling",
"collection_adventures": "Inclusief collectie-avonturen",
"collection_link_error": "Fout bij het koppelen van avontuur aan collectie",
"collection_link_success": "Avontuur succesvol gekoppeld aan collectie!",
"collection_remove_error": "Fout bij verwijderen van avontuur uit verzameling",
"collection_remove_success": "Avontuur is succesvol uit de collectie verwijderd!",
"count_txt": "resultaten die overeenkomen met uw zoekopdracht",
"create_new": "Maak nieuwe...",
"date": "Datum",
"delete": "Verwijderen",
"delete_collection": "Verzameling verwijderen",
"delete_collection_success": "Collectie succesvol verwijderd!",
"delete_collection_warning": "Weet u zeker dat u deze verzameling wilt verwijderen? \nHiermee worden ook alle gekoppelde avonturen verwijderd. \nDeze actie kan niet ongedaan worden gemaakt.",
"descending": "Aflopend",
"edit_adventure": "Avontuur bewerken",
"edit_collection": "Verzameling bewerken",
"filter": "Filter",
"homepage": "Startpagina",
"latitude": "Breedte",
"longitude": "Lengte",
"my_collections": "Mijn collecties",
"name": "Naam",
"no_image_found": "Geen afbeelding gevonden",
"not_found": "Avontuur niet gevonden",
"not_found_desc": "Het avontuur waar je naar op zoek was, kon niet gevonden worden. \nProbeer een ander avontuur of kom later nog eens terug.",
"open_details": "Details openen",
"open_filters": "Filters openen",
"order_by": "Bestel per",
"order_direction": "Bestelrichting",
"private": "Privé",
"public": "Openbaar",
"rating": "Beoordeling",
"remove_from_collection": "Verwijderen uit collectie",
"share": "Deel",
"sort": "Soort",
"sources": "Bronnen",
"unarchive": "Uit het archief halen",
"unarchived_collection_message": "Collectie is succesvol gedearchiveerd!",
"updated": "Bijgewerkt",
"visit": "Bezoek",
"visits": "Bezoeken",
"adventure_delete_success": "Avontuur succesvol verwijderd!",
"dates": "Datums",
"delete_adventure": "Avontuur verwijderen",
"duration": "Duur",
"image_removed_error": "Fout bij verwijderen van afbeelding",
"image_removed_success": "Afbeelding succesvol verwijderd!",
"image_upload_error": "Fout bij het uploaden van afbeelding",
"image_upload_success": "Afbeelding succesvol geüpload!",
"no_image_url": "Er is geen afbeelding gevonden op die URL.",
"planned": "Gepland",
"start_before_end_error": "De startdatum moet vóór de einddatum liggen",
"visited": "Bezocht",
"wiki_image_error": "Fout bij het ophalen van afbeelding van Wikipedia",
"actions": "Acties",
"activity": "Activiteit",
"activity_types": "Activiteitstypen",
"add": "Toevoegen",
"add_an_activity": "Voeg een activiteit toe",
"add_notes": "Voeg notities toe",
"adventure_create_error": "Kan geen avontuur creëren",
"adventure_created": "Avontuur gecreëerd",
"adventure_update_error": "Kan avontuur niet updaten",
"adventure_updated": "Avontuur bijgewerkt",
"basic_information": "Basisinformatie",
"category": "Categorie",
"clear_map": "Duidelijke kaart",
"copy_link": "Kopieer link",
"date_constrain": "Beperk u tot ophaaldata",
"description": "Beschrijving",
"end_date": "Einddatum",
"fetch_image": "Afbeelding ophalen",
"generate_desc": "Beschrijving genereren",
"image": "Afbeelding",
"image_fetch_failed": "Kan afbeelding niet ophalen",
"link": "Link",
"location": "Locatie",
"location_information": "Locatie-informatie",
"my_images": "Mijn afbeeldingen",
"my_visits": "Mijn bezoeken",
"new_adventure": "Nieuw avontuur",
"no_description_found": "Geen beschrijving gevonden",
"no_images": "Geen afbeeldingen",
"no_location": "Voer een locatie in",
"no_results": "Geen resultaten gevonden",
"no_start_date": "Voer een startdatum in",
"public_adventure": "Openbaar avontuur",
"remove": "Verwijderen",
"save_next": "Redden",
"search_for_location": "Zoek een locatie",
"search_results": "Zoekresultaten",
"see_adventures": "Zie Avonturen",
"select_adventure_category": "Selecteer Avontuurcategorie",
"share_adventure": "Deel dit avontuur!",
"start_date": "Startdatum",
"upload_image": "Afbeelding uploaden",
"upload_images_here": "Upload hier afbeeldingen",
"url": "URL",
"warning": "Waarschuwing",
"wiki_desc": "Haalt een fragment uit een Wikipedia-artikel dat overeenkomt met de naam van het avontuur.",
"wikipedia": "Wikipedia"
},
"home": {
"desc_1": "Ontdek, plan en verken met gemak",
"desc_2": "AdventureLog is ontworpen om uw reis te vereenvoudigen en u de tools en middelen te bieden om uw volgende onvergetelijke avontuur te plannen, in te pakken en te navigeren.",
"feature_1": "Reislogboek",
"feature_1_desc": "Houd uw avonturen bij met een persoonlijk reislogboek en deel uw ervaringen met vrienden en familie.",
"feature_2": "Reisplanning",
"feature_2_desc": "Maak eenvoudig aangepaste reisroutes en krijg een overzicht van uw reis van dag tot dag.",
"feature_3": "Reiskaart",
"feature_3_desc": "Bekijk uw reizen over de hele wereld met een interactieve kaart en ontdek nieuwe bestemmingen.",
"go_to": "Ga naar AdventureLog",
"hero_2": "Ontdek en plan je volgende avontuur met AdventureLog. \nOntdek adembenemende bestemmingen, maak aangepaste reisroutes en blijf onderweg verbonden.",
"hero_1": "Ontdek 's werelds meest opwindende avonturen",
"key_features": "Belangrijkste kenmerken"
},
"navbar": {
"about": "Over AdventureLog",
"adventures": "Avonturen",
"collections": "Collecties",
"discord": "Meningsverschil",
"documentation": "Documentatie",
"greeting": "Hoi",
"logout": "Uitloggen",
"map": "Kaart",
"my_activities": "Mijn activiteiten",
"my_adventures": "Mijn avonturen",
"profile": "Profiel",
"search": "Zoekopdracht",
"settings": "Instellingen",
"shared_with_me": "Gedeeld met mij",
"theme_selection": "Thema Selectie",
"themes": {
"aestetic-dark": "Esthetisch donker",
"aestetic-light": "Esthetisch licht",
"aqua": "Aqua",
"dark": "Donker",
"forest": "Woud",
"light": "Licht",
"night": "Nacht"
},
"users": "Gebruikers",
"worldtravel": "Wereldreizen"
},
"auth": {
"confirm_password": "Bevestig wachtwoord",
"email": "E-mail",
"first_name": "Voornaam",
"forgot_password": "Wachtwoord vergeten?",
"last_name": "Achternaam",
"login": "Login",
"login_error": "Kan niet inloggen met de opgegeven inloggegevens.",
"password": "Wachtwoord",
"registration_disabled": "Registratie is momenteel uitgeschakeld.",
"signup": "Aanmelden",
"username": "Gebruikersnaam",
"profile_picture": "Profielfoto",
"public_profile": "Openbaar profiel",
"public_tooltip": "Met een openbaar profiel kunnen gebruikers collecties met u delen en uw profiel bekijken op de gebruikerspagina."
},
"users": {
"no_users_found": "Er zijn geen gebruikers gevonden met openbare profielen."
},
"worldtravel": {
"all": "Alle",
"all_subregions": "Alle subregio's",
"clear_search": "Zoekopdracht wissen",
"completely_visited": "Volledig bezocht",
"country_list": "Landenlijst",
"no_countries_found": "Geen landen gevonden",
"not_visited": "Niet bezocht",
"num_countries": "landen gevonden",
"partially_visited": "Gedeeltelijk bezocht"
},
"settings": {
"account_settings": "Gebruikersaccountinstellingen",
"confirm_new_password": "Bevestig nieuw wachtwoord",
"current_email": "Huidige e-mail",
"email_change": "Wijzig e-mailadres",
"new_email": "Nieuwe e-mail",
"new_password": "Nieuw wachtwoord",
"no_email_set": "Geen e-mailadres ingesteld",
"password_change": "Wachtwoord wijzigen",
"settings_page": "Instellingenpagina",
"update": "Update",
"update_error": "Fout bij updaten van instellingen",
"update_success": "Instellingen succesvol bijgewerkt!"
}
}

View file

@ -1,154 +1,237 @@
{
"about": {
"about": "Om",
"close": "Nära",
"license": "Licensierad under GPL-3.0-licensen.",
"message": "Tillverkad med ❤️ i USA.",
"nominatim_1": "Platssökning och geokodning tillhandahålls av",
"nominatim_2": "Deras data är licensierad under ODbL-licensen.",
"oss_attributions": "Tillskrivningar med öppen källkod",
"other_attributions": "Ytterligare attributioner finns i README-filen.",
"source_code": "Källkod"
},
"adventures": {
"activities": {
"activity": "Aktivitet 🏄",
"art_museums": "Konst",
"attraction": "Attraktion 🎢",
"culture": "Kultur 🎭",
"dining": "Mat 🍽️",
"event": "Event 🎉",
"festivals": "Festivaler 🎪",
"fitness": "Fitness 🏋️",
"general": "Allmänt 🌍",
"hiking": "Vandring 🥾",
"historical_sites": "Historiska platser 🏛️",
"lodging": "Logi 🛌",
"music_concerts": "Musik",
"nightlife": "Nattliv 🌃",
"other": "Andra",
"outdoor": "Utomhus 🏞️",
"shopping": "Shopping 🛍️",
"spiritual_journeys": "Andliga resor 🧘‍♀️",
"transportation": "Transport 🚗",
"volunteer_work": "Volontärarbete 🤝",
"water_sports": "Vattensporter 🚤",
"wildlife": "Vilda djur 🦒"
},
"add_to_collection": "Lägg till i samlingen",
"adventure": "Äventyr",
"adventure_delete_confirm": "Är du säker på att du vill ta bort det här äventyret? \nDenna åtgärd kan inte ångras.",
"adventure_delete_success": "Äventyret har raderats!",
"adventure_details": "Äventyrsdetaljer",
"adventure_type": "Äventyrstyp",
"archive": "Arkiv",
"archived": "Arkiverad",
"archived_collection_message": "Samlingen har arkiverats!",
"archived_collections": "Arkiverade samlingar",
"ascending": "Stigande",
"cancel": "Avboka",
"category_filter": "Kategorifilter",
"clear": "Rensa",
"close_filters": "Stäng filter",
"collection": "Samling",
"collection_adventures": "Inkludera samlingsäventyr",
"collection_link_error": "Det gick inte att länka äventyr till samling",
"collection_link_success": "Äventyr kopplat till samling framgångsrikt!",
"collection_remove_error": "Det gick inte att ta bort äventyr från samlingen",
"collection_remove_success": "Äventyret har tagits bort från samlingen!",
"count_txt": "resultat som matchar din sökning",
"create_new": "Skapa nytt...",
"date": "Datum",
"dates": "Datum",
"delete": "Radera",
"delete_adventure": "Ta bort äventyr",
"delete_collection": "Ta bort samling",
"delete_collection_success": "Samlingen har raderats!",
"delete_collection_warning": "Är du säker på att du vill ta bort den här samlingen? \nDetta tar också bort alla länkade äventyr. \nDenna åtgärd kan inte ångras.",
"descending": "Fallande",
"duration": "Varaktighet",
"edit_adventure": "Redigera äventyr",
"edit_collection": "Redigera samling",
"filter": "Filtrera",
"homepage": "Hemsida",
"latitude": "Latitud",
"longitude": "Longitud",
"my_collections": "Mina samlingar",
"name": "Namn",
"no_image_found": "Ingen bild hittades",
"not_found": "Äventyret hittades inte",
"not_found_desc": "Äventyret du letade efter kunde inte hittas. \nProva ett annat äventyr eller kom tillbaka senare.",
"open_details": "Öppna Detaljer",
"open_filters": "Öppna filter",
"order_by": "Beställ efter",
"order_direction": "Beställ riktning",
"planned": "Planerad",
"private": "Privat",
"public": "Offentlig",
"rating": "Gradering",
"remove_from_collection": "Ta bort från samlingen",
"share": "Dela",
"sort": "Sortera",
"sources": "Källor",
"unarchive": "Avarkivera",
"unarchived_collection_message": "Samlingen har tagits bort från arkivet!",
"visit": "Besök",
"visited": "Besökte",
"visits": "Besök"
},
"home": {
"desc_1": "Upptäck, planera och utforska med lätthet",
"desc_2": "AdventureLog är designad för att förenkla din resa och förse dig med verktyg och resurser för att planera, packa och navigera i ditt nästa oförglömliga äventyr.",
"feature_1": "Reselogg",
"feature_1_desc": "Håll koll på dina äventyr med en personlig reselogg och dela dina upplevelser med vänner och familj.",
"feature_2": "Reseplanering",
"feature_2_desc": "Skapa enkelt anpassade resplaner och få en uppdelning av din resa dag för dag.",
"feature_3": "Resekarta",
"feature_3_desc": "Se dina resor över hela världen med en interaktiv karta och utforska nya destinationer.",
"go_to": "Gå till AdventureLog",
"hero_1": "Upptäck världens mest spännande äventyr",
"hero_2": "Upptäck och planera ditt nästa äventyr med AdventureLog. \nUtforska hisnande destinationer, skapa anpassade resplaner och håll kontakten när du är på språng.",
"key_features": "Nyckelfunktioner"
},
"navbar": {
"about": "Om AdventureLog",
"adventures": "Äventyr",
"collections": "Samlingar",
"discord": "Disharmoni",
"documentation": "Dokumentation",
"greeting": "Hej",
"login": "Inloggning",
"logout": "Utloggning",
"map": "Karta",
"my_activities": "Mina aktiviteter",
"my_adventures": "Mina äventyr",
"profile": "Profil",
"search": "Söka",
"settings": "Inställningar",
"shared_with_me": "Delade med mig",
"signup": "Registrera dig",
"theme_selection": "Temaval",
"themes": {
"aestetic-dark": "Estetisk mörk",
"aestetic-light": "Estetiskt ljus",
"aqua": "Aqua",
"dark": "Mörk",
"forest": "Skog",
"light": "Ljus",
"night": "Natt"
},
"users": "Användare",
"worldtravel": "Världsresor"
},
"worldtravel": {
"all": "Alla",
"all_subregions": "Alla underregioner",
"clear_search": "Rensa sökning",
"completely_visited": "Helt besökt",
"country_list": "Lista över länder",
"no_countries_found": "Inga länder hittades",
"not_visited": "Ej besökt",
"num_countries": "hittade länder",
"partially_visited": "Delvis besökt"
}
"about": {
"about": "Om",
"close": "Nära",
"license": "Licensierad under GPL-3.0-licensen.",
"message": "Tillverkad med ❤️ i USA.",
"nominatim_1": "Platssökning och geokodning tillhandahålls av",
"nominatim_2": "Deras data är licensierad under ODbL-licensen.",
"oss_attributions": "Tillskrivningar med öppen källkod",
"other_attributions": "Ytterligare attributioner finns i README-filen.",
"source_code": "Källkod"
},
"adventures": {
"activities": {
"activity": "Aktivitet 🏄",
"art_museums": "Konst",
"attraction": "Attraktion 🎢",
"culture": "Kultur 🎭",
"dining": "Mat 🍽️",
"event": "Event 🎉",
"festivals": "Festivaler 🎪",
"fitness": "Fitness 🏋️",
"general": "Allmänt 🌍",
"hiking": "Vandring 🥾",
"historical_sites": "Historiska platser 🏛️",
"lodging": "Logi 🛌",
"music_concerts": "Musik",
"nightlife": "Nattliv 🌃",
"other": "Andra",
"outdoor": "Utomhus 🏞️",
"shopping": "Shopping 🛍️",
"spiritual_journeys": "Andliga resor 🧘‍♀️",
"transportation": "Transport 🚗",
"volunteer_work": "Volontärarbete 🤝",
"water_sports": "Vattensporter 🚤",
"wildlife": "Vilda djur 🦒"
},
"add_to_collection": "Lägg till i samlingen",
"adventure": "Äventyr",
"adventure_delete_confirm": "Är du säker på att du vill ta bort det här äventyret? \nDenna åtgärd kan inte ångras.",
"adventure_delete_success": "Äventyret har raderats!",
"adventure_details": "Äventyrsdetaljer",
"adventure_type": "Äventyrstyp",
"archive": "Arkiv",
"archived": "Arkiverad",
"archived_collection_message": "Samlingen har arkiverats!",
"archived_collections": "Arkiverade samlingar",
"ascending": "Stigande",
"cancel": "Avboka",
"category_filter": "Kategorifilter",
"clear": "Rensa",
"close_filters": "Stäng filter",
"collection": "Samling",
"collection_adventures": "Inkludera samlingsäventyr",
"collection_link_error": "Det gick inte att länka äventyr till samling",
"collection_link_success": "Äventyr kopplat till samling framgångsrikt!",
"collection_remove_error": "Det gick inte att ta bort äventyr från samlingen",
"collection_remove_success": "Äventyret har tagits bort från samlingen!",
"count_txt": "resultat som matchar din sökning",
"create_new": "Skapa nytt...",
"date": "Datum",
"dates": "Datum",
"delete": "Radera",
"delete_adventure": "Ta bort äventyr",
"delete_collection": "Ta bort samling",
"delete_collection_success": "Samlingen har raderats!",
"delete_collection_warning": "Är du säker på att du vill ta bort den här samlingen? \nDetta tar också bort alla länkade äventyr. \nDenna åtgärd kan inte ångras.",
"descending": "Fallande",
"duration": "Varaktighet",
"edit_adventure": "Redigera äventyr",
"edit_collection": "Redigera samling",
"filter": "Filtrera",
"homepage": "Hemsida",
"latitude": "Latitud",
"longitude": "Longitud",
"my_collections": "Mina samlingar",
"name": "Namn",
"no_image_found": "Ingen bild hittades",
"not_found": "Äventyret hittades inte",
"not_found_desc": "Äventyret du letade efter kunde inte hittas. \nProva ett annat äventyr eller kom tillbaka senare.",
"open_details": "Öppna Detaljer",
"open_filters": "Öppna filter",
"order_by": "Beställ efter",
"order_direction": "Beställ riktning",
"planned": "Planerad",
"private": "Privat",
"public": "Offentlig",
"rating": "Gradering",
"remove_from_collection": "Ta bort från samlingen",
"share": "Dela",
"sort": "Sortera",
"sources": "Källor",
"unarchive": "Avarkivera",
"unarchived_collection_message": "Samlingen har tagits bort från arkivet!",
"visit": "Besök",
"visited": "Besökte",
"visits": "Besök",
"image_removed_error": "Det gick inte att ta bort bilden",
"image_removed_success": "Bilden har tagits bort!",
"image_upload_error": "Det gick inte att ladda upp bilden",
"image_upload_success": "Bilden har laddats upp!",
"no_image_url": "Ingen bild hittades på den webbadressen.",
"start_before_end_error": "Startdatumet måste vara före slutdatumet",
"updated": "Uppdaterad",
"wiki_image_error": "Det gick inte att hämta bilden från Wikipedia",
"actions": "Åtgärder",
"activity": "Aktivitet",
"activity_types": "Aktivitetstyper",
"add": "Tillägga",
"add_an_activity": "Lägg till en aktivitet",
"add_notes": "Lägg till anteckningar",
"adventure_create_error": "Det gick inte att skapa äventyr",
"adventure_created": "Äventyr skapat",
"adventure_update_error": "Det gick inte att uppdatera äventyret",
"adventure_updated": "Äventyr uppdaterat",
"basic_information": "Grundläggande information",
"category": "Kategori",
"clear_map": "Rensa karta",
"copy_link": "Kopiera länk",
"date_constrain": "Begränsa till insamlingsdatum",
"description": "Beskrivning",
"end_date": "Slutdatum",
"fetch_image": "Hämta bild",
"generate_desc": "Skapa beskrivning",
"image": "Bild",
"image_fetch_failed": "Det gick inte att hämta bilden",
"link": "Länk",
"location": "Plats",
"location_information": "Platsinformation",
"my_images": "Mina bilder",
"my_visits": "Mina besök",
"new_adventure": "Nytt äventyr",
"no_description_found": "Ingen beskrivning hittades",
"no_images": "Inga bilder",
"no_location": "Vänligen ange en plats",
"no_results": "Inga resultat hittades",
"no_start_date": "Ange ett startdatum",
"public_adventure": "Offentligt äventyr",
"remove": "Ta bort",
"save_next": "Spara",
"search_for_location": "Sök efter en plats",
"search_results": "Sökresultat",
"see_adventures": "Se äventyr",
"select_adventure_category": "Välj äventyrskategori",
"share_adventure": "Dela detta äventyr!",
"start_date": "Startdatum",
"upload_image": "Ladda upp bild",
"upload_images_here": "Ladda upp bilder här",
"url": "URL",
"warning": "Varning",
"wiki_desc": "Hämtar utdrag från Wikipedia-artikeln som matchar äventyrets namn."
},
"home": {
"desc_1": "Upptäck, planera och utforska med lätthet",
"desc_2": "AdventureLog är designad för att förenkla din resa och förse dig med verktyg och resurser för att planera, packa och navigera i ditt nästa oförglömliga äventyr.",
"feature_1": "Reselogg",
"feature_1_desc": "Håll koll på dina äventyr med en personlig reselogg och dela dina upplevelser med vänner och familj.",
"feature_2": "Reseplanering",
"feature_2_desc": "Skapa enkelt anpassade resplaner och få en uppdelning av din resa dag för dag.",
"feature_3": "Resekarta",
"feature_3_desc": "Se dina resor över hela världen med en interaktiv karta och utforska nya destinationer.",
"go_to": "Gå till AdventureLog",
"hero_1": "Upptäck världens mest spännande äventyr",
"hero_2": "Upptäck och planera ditt nästa äventyr med AdventureLog. \nUtforska hisnande destinationer, skapa anpassade resplaner och håll kontakten när du är på språng.",
"key_features": "Nyckelfunktioner"
},
"navbar": {
"about": "Om AdventureLog",
"adventures": "Äventyr",
"collections": "Samlingar",
"discord": "Disharmoni",
"documentation": "Dokumentation",
"greeting": "Hej",
"logout": "Utloggning",
"map": "Karta",
"my_activities": "Mina aktiviteter",
"my_adventures": "Mina äventyr",
"profile": "Profil",
"search": "Söka",
"settings": "Inställningar",
"shared_with_me": "Delade med mig",
"theme_selection": "Temaval",
"themes": {
"aestetic-dark": "Estetisk mörk",
"aestetic-light": "Estetiskt ljus",
"aqua": "Aqua",
"dark": "Mörk",
"forest": "Skog",
"light": "Ljus",
"night": "Natt"
},
"users": "Användare",
"worldtravel": "Världsresor"
},
"worldtravel": {
"all": "Alla",
"all_subregions": "Alla underregioner",
"clear_search": "Rensa sökning",
"completely_visited": "Helt besökt",
"country_list": "Lista över länder",
"no_countries_found": "Inga länder hittades",
"not_visited": "Ej besökt",
"num_countries": "hittade länder",
"partially_visited": "Delvis besökt"
},
"auth": {
"confirm_password": "Bekräfta lösenord",
"email": "E-post",
"first_name": "Förnamn",
"forgot_password": "Glömt lösenordet?",
"last_name": "Efternamn",
"login": "Inloggning",
"login_error": "Det går inte att logga in med de angivna uppgifterna.",
"password": "Lösenord",
"registration_disabled": "Registreringen är för närvarande inaktiverad.",
"signup": "Registrera dig",
"username": "Användarnamn",
"public_tooltip": "Med en offentlig profil kan användare dela samlingar med dig och se din profil på användarsidan."
},
"users": {
"no_users_found": "Inga användare hittades med offentliga profiler."
},
"settings": {
"account_settings": "Användarkontoinställningar",
"confirm_new_password": "Bekräfta nytt lösenord",
"current_email": "Aktuell e-post",
"email_change": "Ändra e-post",
"new_email": "Ny e-post",
"new_password": "Nytt lösenord",
"no_email_set": "Ingen e-post inställd",
"password_change": "Ändra lösenord",
"settings_page": "Inställningssida",
"update": "Uppdatera",
"update_error": "Fel vid uppdatering av inställningar",
"update_success": "Inställningarna har uppdaterats!"
}
}

View file

@ -102,7 +102,54 @@
"planned": "计划",
"start_before_end_error": "开始日期必须早于结束日期",
"visited": "访问过",
"wiki_image_error": "从维基百科获取图像时出错"
"wiki_image_error": "从维基百科获取图像时出错",
"actions": "行动",
"activity": "活动",
"activity_types": "活动类型",
"add": "添加",
"add_an_activity": "添加活动",
"add_notes": "添加注释",
"adventure_create_error": "未能创造冒险",
"adventure_created": "冒险已创造",
"adventure_update_error": "冒险更新失败",
"adventure_updated": "冒险已更新",
"basic_information": "基本信息",
"category": "类别",
"clear_map": "清晰的地图",
"copy_link": "复制链接",
"date_constrain": "限制收集日期",
"description": "描述",
"end_date": "结束日期",
"fetch_image": "获取图像",
"generate_desc": "生成描述",
"image": "图像",
"image_fetch_failed": "获取图像失败",
"link": "关联",
"location": "地点",
"location_information": "位置信息",
"my_images": "我的图片",
"my_visits": "我的访问",
"new_adventure": "新冒险",
"no_description_found": "没有找到描述",
"no_images": "没有图片",
"no_location": "请输入地点",
"no_results": "没有找到结果",
"no_start_date": "请输入开始日期",
"public_adventure": "公共冒险",
"remove": "消除",
"save_next": "节省",
"search_for_location": "搜索地点",
"search_results": "搜索结果",
"see_adventures": "查看冒险",
"select_adventure_category": "选择冒险类别",
"share_adventure": "分享这个冒险!",
"start_date": "开始日期",
"upload_image": "上传图片",
"upload_images_here": "在这里上传图片",
"url": "网址",
"warning": "警告",
"wiki_desc": "从维基百科文章中提取与冒险名称匹配的摘录。",
"wikipedia": "维基百科"
},
"home": {
"desc_1": "轻松发现、规划和探索",
@ -125,7 +172,6 @@
"discord": "不和谐",
"documentation": "文档",
"greeting": "你好",
"login": "登录",
"logout": "退出",
"map": "地图",
"my_activities": "我的活动",
@ -134,7 +180,6 @@
"search": "搜索",
"settings": "设置",
"shared_with_me": "与我分享",
"signup": "报名",
"theme_selection": "主题选择",
"themes": {
"aestetic-dark": "审美黑暗",
@ -154,7 +199,15 @@
"login_error": "无法使用提供的凭据登录。",
"password": "密码",
"signup": "报名",
"username": "用户名"
"username": "用户名",
"confirm_password": "确认密码",
"email": "电子邮件",
"first_name": "名",
"last_name": "姓",
"registration_disabled": "目前已禁用注册。",
"profile_picture": "个人资料图片",
"public_profile": "公开资料",
"public_tooltip": "通过公开个人资料,用户可以与您共享收藏并在用户页面上查看您的个人资料。"
},
"worldtravel": {
"all": "全部",
@ -166,5 +219,22 @@
"not_visited": "未访问过",
"num_countries": "找到的国家",
"partially_visited": "部分访问"
},
"users": {
"no_users_found": "未找到具有公开个人资料的用户。"
},
"settings": {
"account_settings": "用户帐户设置",
"confirm_new_password": "确认新密码",
"current_email": "当前电子邮件",
"email_change": "更改电子邮件",
"new_email": "新电子邮件",
"new_password": "新密码",
"no_email_set": "没有设置电子邮件",
"password_change": "更改密码",
"settings_page": "设置页面",
"update": "更新",
"update_error": "更新设置时出错",
"update_success": "设置更新成功!"
}
}

View file

@ -1,6 +1,7 @@
<script lang="ts">
import { goto } from '$app/navigation';
import type { PageData } from './$types';
import { t } from 'svelte-i18n';
export let data: PageData;
@ -11,8 +12,8 @@
<table class="table table-compact">
<thead>
<tr>
<th>Activity</th>
<th>Actions</th>
<th>{$t('adventures.activity')}</th>
<th>{$t('adventures.actions')}</th>
</tr>
</thead>
<tbody>
@ -23,7 +24,7 @@
<button
class="btn btn-sm btn-primary"
on:click={() => goto(`/search?query=${activity}&property=activity_types`)}
>See Adventures</button
>{$t('adventures.see_adventures')}</button
>
</td>
</tr>

View file

@ -1,12 +1,11 @@
<script lang="ts">
import { enhance } from '$app/forms';
import { goto, invalidateAll } from '$app/navigation';
import { page } from '$app/stores';
import { addToast } from '$lib/toasts';
import type { Adventure, Collection, User } from '$lib/types.js';
import type { User } from '$lib/types.js';
import { onMount } from 'svelte';
import { browser } from '$app/environment';
import { exportData } from '$lib';
import { t } from 'svelte-i18n';
export let data;
let user: User;
@ -20,7 +19,7 @@
const pageParam = queryParams.get('page');
if (pageParam === 'success') {
addToast('success', 'Settings updated successfully!');
addToast('success', $t('settings.update_success'));
console.log('Settings updated successfully!');
}
}
@ -31,39 +30,39 @@
window.location.href = '/settings?page=success';
}
if (browser && $page.form?.error) {
addToast('error', 'Error updating settings');
addToast('error', $t('settings.update_error'));
}
}
async function exportAdventures() {
const url = await exportData();
// async function exportAdventures() {
// const url = await exportData();
const a = document.createElement('a');
a.href = url;
a.download = 'adventure-log-export.json';
a.click();
URL.revokeObjectURL(url);
}
// const a = document.createElement('a');
// a.href = url;
// a.download = 'adventure-log-export.json';
// a.click();
// URL.revokeObjectURL(url);
// }
async function checkVisitedRegions() {
let res = await fetch('/api/countries/region_check_all_adventures/', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
});
let data = await res.json();
if (res.ok) {
addToast('success', `${data.regions_visited} regions updated`);
} else {
addToast('error', 'Error updating visited regions');
}
}
// async function checkVisitedRegions() {
// let res = await fetch('/api/countries/region_check_all_adventures/', {
// method: 'POST',
// headers: {
// 'Content-Type': 'application/json'
// }
// });
// let data = await res.json();
// if (res.ok) {
// addToast('success', `${data.regions_visited} regions updated`);
// } else {
// addToast('error', 'Error updating visited regions');
// }
// }
</script>
<h1 class="text-center font-extrabold text-4xl mb-6">Settings Page</h1>
<h1 class="text-center font-extrabold text-4xl mb-6">{$t('settings.settings_page')}</h1>
<h1 class="text-center font-extrabold text-xl">User Account Settings</h1>
<h1 class="text-center font-extrabold text-xl">{$t('settings.account_settings')}</h1>
<div class="flex justify-center">
<form
method="post"
@ -72,14 +71,14 @@
class="w-full max-w-xs"
enctype="multipart/form-data"
>
<label for="username">Username</label>
<label for="username">{$t('auth.username')}</label>
<input
bind:value={user.username}
name="username"
id="username"
class="block mb-2 input input-bordered w-full max-w-xs"
/><br />
<label for="first_name">First Name</label>
<label for="first_name">{$t('auth.first_name')}</label>
<input
type="text"
bind:value={user.first_name}
@ -88,7 +87,7 @@
class="block mb-2 input input-bordered w-full max-w-xs"
/><br />
<label for="last_name">Last Name</label>
<label for="last_name">{$t('auth.last_name')}</label>
<input
type="text"
bind:value={user.last_name}
@ -104,7 +103,7 @@
id="email"
class="block mb-2 input input-bordered w-full max-w-xs"
/><br /> -->
<label for="profilePicture">Profile Picture</label>
<label for="profilePicture">{$t('auth.profile_picture')}</label>
<input
type="file"
name="profile_pic"
@ -112,12 +111,9 @@
class="file-input file-input-bordered w-full max-w-xs mb-2"
/><br />
<div class="form-control">
<div
class="tooltip tooltip-info"
data-tip="With a public profile, users can share collections with you and view your profile on the users page."
>
<div class="tooltip tooltip-info" data-tip={$t('auth.public_tooltip')}>
<label class="label cursor-pointer">
<span class="label-text">Public Profile</span>
<span class="label-text">{$t('auth.public_profile')}</span>
<input
id="public_profile"
@ -129,7 +125,7 @@
</label>
</div>
</div>
<button class="py-2 mt-2 px-4 btn btn-primary">Update</button>
<button class="py-2 mt-2 px-4 btn btn-primary">{$t('settings.update')}</button>
</form>
</div>
@ -139,13 +135,13 @@
</div>
{/if}
<h1 class="text-center font-extrabold text-xl mt-4 mb-2">Password Change</h1>
<h1 class="text-center font-extrabold text-xl mt-4 mb-2">{$t('settings.password_change')}</h1>
<div class="flex justify-center">
<form action="?/changePassword" method="post" class="w-full max-w-xs">
<input
type="password"
name="password1"
placeholder="New Password"
placeholder={$t('settings.new_password')}
id="password1"
class="block mb-2 input input-bordered w-full max-w-xs"
/>
@ -154,22 +150,22 @@
type="password"
name="password2"
id="password2"
placeholder="Confirm New Password"
placeholder={$t('settings.confirm_new_password')}
class="block mb-2 input input-bordered w-full max-w-xs"
/>
<button class="py-2 px-4 btn btn-primary mt-2">Change Password</button>
<button class="py-2 px-4 btn btn-primary mt-2">{$t('settings.password_change')}</button>
<br />
</form>
</div>
<h1 class="text-center font-extrabold text-xl mt-4 mb-2">Email Change</h1>
<h1 class="text-center font-extrabold text-xl mt-4 mb-2">{$t('settings.email_change')}</h1>
<div class="flex justify-center">
<form action="?/changeEmail" method="post" class="w-full max-w-xs">
<label for="current_email">Current Email</label>
<label for="current_email">{$t('settings.current_email')}</label>
<input
type="email"
name="current_email"
placeholder={user.email || 'No Email Set'}
placeholder={user.email || $t('settings.no_email_set')}
id="current_email"
readonly
class="block mb-2 input input-bordered w-full max-w-xs"
@ -178,11 +174,11 @@
<input
type="email"
name="new_email"
placeholder="New Email"
placeholder={$t('settings.new_email')}
id="new_email"
class="block mb-2 input input-bordered w-full max-w-xs"
/>
<button class="py-2 px-4 btn btn-primary mt-2">Change Email</button>
<button class="py-2 px-4 btn btn-primary mt-2">{$t('settings.email_change')}</button>
</form>
</div>

View file

@ -1,5 +1,6 @@
<script lang="ts">
import { enhance } from '$app/forms';
import { t } from 'svelte-i18n';
export let data;
console.log(data);
@ -34,46 +35,46 @@
{#if !is_disabled}
<h3 class="text-center">AdventureLog</h3>
<article class="text-center text-4xl mb-4 font-extrabold">
<h1>Signup</h1>
<h1>{$t('auth.signup')}</h1>
</article>
<div class="flex justify-center">
<form method="post" use:enhance class="w-full max-w-xs">
<label for="username">Username</label>
<label for="username">{$t('auth.username')}</label>
<input
name="username"
id="username"
class="block input input-bordered w-full max-w-xs"
/><br />
<label for="email">Email</label>
<label for="email">{$t('auth.email')}</label>
<input
name="email"
id="email"
type="email"
class="block input input-bordered w-full max-w-xs"
/><br />
<label for="first_name">First Name</label>
<label for="first_name">{$t('auth.first_name')}</label>
<input
name="first_name"
id="first_name"
type="text"
class="block input input-bordered w-full max-w-xs"
/><br />
<label for="last_name">Last Name</label>
<label for="last_name">{$t('auth.last_name')}</label>
<input
name="last_name"
id="last_name"
type="text"
class="block input input-bordered w-full max-w-xs"
/><br />
<label for="password">Password</label>
<label for="password">{$t('auth.password')}</label>
<input
type="password"
name="password1"
id="password"
class="block input input-bordered w-full max-w-xs"
/><br />
<label for="password">Confirm Password</label>
<label for="password">{$t('auth.confirm_password')}</label>
<input
type="password"
name="password2"
@ -81,11 +82,15 @@
class="block input input-bordered w-full max-w-xs"
/><br />
<button class="py-2 px-4 btn btn-primary mr-2">Signup</button>
<button class="py-2 px-4 btn btn-primary mr-2">{$t('auth.signup')}</button>
<div class="flex justify-between mt-4">
<p><a href="/login" class="underline">Login</a></p>
<p><a href="/settings/forgot-password" class="underline">Forgot Password</a></p>
<p><a href="/login" class="underline">{$t('auth.login')}</a></p>
<p>
<a href="/settings/forgot-password" class="underline"
>{$t('auth.forgot_password')}</a
>
</p>
</div>
</form>
</div>
@ -96,7 +101,7 @@
{:else}
<div class="flex justify-center">
<div class="text-center mb-4">
<h1 class="text-4xl font-extrabold">Registration is Disabled</h1>
<h1 class="text-4xl font-extrabold">{$t('auth.registration_disabled')}</h1>
<p class="text-lg mt-4">{is_disabled_message}</p>
</div>
</div>

View file

@ -2,13 +2,14 @@
import UserCard from '$lib/components/UserCard.svelte';
import type { User } from '$lib/types';
import type { PageData } from './$types';
import { t } from 'svelte-i18n';
export let data: PageData;
let users: User[] = data.props.users;
console.log(users);
</script>
<h1 class="text-center font-bold text-4xl mb-4">AdventureLog Users</h1>
<h1 class="text-center font-bold text-4xl mb-4">AdventureLog {$t('navbar.users')}</h1>
<div class="flex flex-wrap gap-4 mr-4 justify-center content-center">
{#each users as user (user.uuid)}
<UserCard {user} />
@ -16,7 +17,7 @@
</div>
{#if users.length === 0}
<p class="text-center">No users found with public profiles.</p>
<p class="text-center">{$t('users.no_users_found')}</p>
{/if}
<svelte:head>