i18n implemented

This commit is contained in:
2026-10-03 23:45:04 +02:00
parent 2ccea34bb9
commit d95ed40053
55 changed files with 2952 additions and 301 deletions
+11 -10
View File
@@ -13,6 +13,7 @@ import {
} from '@/components/ui/popover'
const { user } = useAuth()
const { t } = useI18n()
const open = ref(false)
const file = ref<File | null>(null)
const url = ref('')
@@ -43,7 +44,7 @@ async function onSubmit() {
}
catch (err) {
const e = err as { data?: { statusMessage?: string, message?: string } }
errorMessage.value = e.data?.statusMessage ?? e.data?.message ?? 'Upload fehlgeschlagen'
errorMessage.value = e.data?.statusMessage ?? e.data?.message ?? t('upload.failed')
}
finally {
loading.value = false
@@ -56,39 +57,39 @@ async function onSubmit() {
<PopoverTrigger as-child>
<Button variant="ghost">
<Icon name="ph:cloud-arrow-up-fill" class="size-4" />
Hochladen
{{ $t('upload.upload') }}
</Button>
</PopoverTrigger>
<PopoverContent align="start" class="w-160">
<template v-if="user">
<PopoverHeader>
<PopoverTitle>Hochladen</PopoverTitle>
<PopoverDescription>Datei oder URL — Bilder, Videos, Audio (MP3/FLAC), YouTube- und Twitch-Links.</PopoverDescription>
<PopoverTitle>{{ $t('upload.upload') }}</PopoverTitle>
<PopoverDescription>{{ $t('upload.desc') }}</PopoverDescription>
</PopoverHeader>
<form class="space-y-4" @submit.prevent="onSubmit">
<div class="space-y-1.5">
<Label>Datei</Label>
<Label>{{ $t('upload.file') }}</Label>
<FileDropzone v-model="file" :disabled="!!url.trim()" />
</div>
<div class="space-y-1.5">
<Label for="upload-url">oder URL</Label>
<Label for="upload-url">{{ $t('upload.orUrl') }}</Label>
<Input id="upload-url" v-model="url" type="url" placeholder="https://…" :disabled="!!file" />
<p class="text-xs text-muted-foreground">
Direkte Bild-/Video-URLs werden gespeichert, YouTube- und Twitch-Links eingebettet.
{{ $t('upload.urlHint') }}
</p>
</div>
<p v-if="errorMessage" class="text-sm text-destructive">
{{ errorMessage }}
</p>
<Button type="submit" class="w-full" :disabled="loading || (!file && !url.trim())">
{{ loading ? 'Lädt hoch…' : 'Hochladen' }}
{{ loading ? $t('upload.uploading') : $t('upload.upload') }}
</Button>
</form>
</template>
<p v-else class="text-sm text-muted-foreground">
<NuxtLink to="/login" class="text-primary underline" @click="open = false">
Melde dich an
</NuxtLink>, um Dateien hochzuladen.
{{ $t('common.loginLink') }}
</NuxtLink>{{ $t('upload.loginToUpload') }}
</p>
</PopoverContent>
</Popover>