Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(web): translations #9854

Merged
merged 35 commits into from
Jun 4, 2024
Merged
Changes from 1 commit
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
e15b14d
First test
May 27, 2024
c316229
Added translation using Weblate (French)
May 27, 2024
ba5a5af
Translated using Weblate (German)
May 27, 2024
d949345
Translated using Weblate (French)
May 27, 2024
976bded
Further testing
May 27, 2024
22aa9b3
Further testing
May 27, 2024
f5b48d7
Translated using Weblate (German)
May 27, 2024
caa0224
Further work
May 28, 2024
7f23bca
Update string file.
May 28, 2024
6177525
More strings
May 30, 2024
43632a4
Automatically changed strings
Jun 2, 2024
0124c7a
Add automatically translated german file for testing purposes
Jun 2, 2024
a9396aa
Fix merge-face-selector component
Jun 2, 2024
b0efecc
Make server stats strings uppercase
Manic-87 Jun 2, 2024
fac210b
Fix uppercase string
Manic-87 Jun 2, 2024
8f331e4
Fix some strings in jobs-panel
Manic-87 Jun 2, 2024
b64f410
Fix lower and uppercase strings. Add a few additional string. Fix a f…
Manic-87 Jun 2, 2024
2106278
Update german test translations
Manic-87 Jun 2, 2024
8c926f4
Fix typo in locales file
Manic-87 Jun 3, 2024
16158c2
Change string keys
Manic-87 Jun 3, 2024
89cb41d
Extract more strings
Manic-87 Jun 3, 2024
878021e
Extract and replace some more strings
Manic-87 Jun 3, 2024
da44d17
Update testtranslationfile
Manic-87 Jun 3, 2024
72f56a3
Change translation keys
Manic-87 Jun 3, 2024
feaf47d
Fix rebase errors
Manic-87 Jun 3, 2024
bd449ff
Fix one more rebase error
Manic-87 Jun 3, 2024
1f62ea9
Remove german translation file
Manic-87 Jun 3, 2024
2c0953e
Co-authored-by: Daniel Dietzler <[email protected].…
jrasm91 Jun 3, 2024
8909feb
chore: clean up translations
jrasm91 Jun 3, 2024
ea15271
chore: add new line
jrasm91 Jun 3, 2024
3e0d3ad
chore: Merge remote-tracking branch 'origin/main' into pr/Manic-87/9854
danieldietzler Jun 3, 2024
47e9757
fix formatting
danieldietzler Jun 3, 2024
f9788d3
chore: fixes
danieldietzler Jun 3, 2024
a6296c2
fix: loading and tests
jrasm91 Jun 4, 2024
9e861f7
merge: main
jrasm91 Jun 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Extract and replace some more strings
Manic-87 committed Jun 3, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit 878021e6f589a611c26b82530642137266d6368d
Original file line number Diff line number Diff line change
@@ -108,7 +108,7 @@
options={[
{ value: AudioCodec.Aac, text: 'AAC' },
{ value: AudioCodec.Mp3, text: 'MP3' },
{ value: AudioCodec.Libopus, text: 'Opus' },
{ value: AudioCodec.Libopus, text: $t("placeholder_97") },
]}
isEdited={!isEqual(sortBy(config.ffmpeg.acceptedAudioCodecs), sortBy(savedConfig.ffmpeg.acceptedAudioCodecs))}
/>
@@ -189,15 +189,15 @@
{ value: TranscodePolicy.All, text: 'All videos' },
{
value: TranscodePolicy.Optimal,
text: 'Videos higher than target resolution or not in an accepted format',
text: $t("placeholder_106"),
},
{
value: TranscodePolicy.Bitrate,
text: 'Videos higher than max bitrate or not in an accepted format',
text: $t("placeholder_105"),
},
{
value: TranscodePolicy.Required,
text: 'Only videos not in an accepted format',
text: $t("placeholder_96"),
},
{
value: TranscodePolicy.Disabled,
@@ -255,18 +255,18 @@
bind:value={config.ffmpeg.accel}
name="accel"
options={[
{ value: TranscodeHWAccel.Nvenc, text: 'NVENC (requires NVIDIA GPU)' },
{ value: TranscodeHWAccel.Nvenc, text: $t("placeholder_95") },
{
value: TranscodeHWAccel.Qsv,
text: 'Quick Sync (requires 7th gen Intel CPU or later)',
text: $t("placeholder_103"),
},
{
value: TranscodeHWAccel.Vaapi,
text: 'VAAPI',
},
{
value: TranscodeHWAccel.Rkmpp,
text: 'RKMPP (only on Rockchip SOCs)',
text: $t("placeholder_104"),
},
{
value: TranscodeHWAccel.Disabled,
10 changes: 5 additions & 5 deletions web/src/lib/components/map-page/map-settings-modal.svelte
Original file line number Diff line number Diff line change
@@ -74,23 +74,23 @@
},
{
value: Duration.fromObject({ hours: 24 }).toISO() || '',
text: 'Past 24 hours',
text: $t("placeholder_98"),
},
{
value: Duration.fromObject({ days: 7 }).toISO() || '',
text: 'Past 7 days',
text: $t("placeholder_101"),
},
{
value: Duration.fromObject({ days: 30 }).toISO() || '',
text: 'Past 30 days',
text: $t("placeholder_100"),
},
{
value: Duration.fromObject({ years: 1 }).toISO() || '',
text: 'Past year',
text: $t("placeholder_102"),
},
{
value: Duration.fromObject({ years: 3 }).toISO() || '',
text: 'Past 3 years',
text: $t("placeholder_99"),
},
]}
/>
97 changes: 96 additions & 1 deletion web/src/lib/i18n/locales/de.json
Original file line number Diff line number Diff line change
@@ -643,5 +643,100 @@
"week": "Woche",
"waiting": "Warten",
"year": "Jahr",
"yes": "Ja"
"yes": "Ja",
"placeholder_0": "Eine Nachricht, die auf der Anmeldeseite angezeigt wird.",
"placeholder_1": "Gilt nur für VAAPI und QSV. ",
"placeholder_2": "Versucht, das Erscheinungsbild von HDR-Videos bei der Konvertierung in SDR beizubehalten. ",
"placeholder_3": "Legen Sie die Speicherbezeichnung des Benutzers automatisch auf den Wert dieses Anspruchs fest.",
"placeholder_4": "Legen Sie das Speicherkontingent des Benutzers automatisch auf den Wert dieses Anspruchs fest.",
"placeholder_5": "Mit Cascading Style Sheets kann das Design von Immich individuell angepasst werden.",
"placeholder_6": "Die Farben werden so angepasst, dass sie für eine Anzeige dieser Helligkeit normal aussehen. ",
"placeholder_7": "Kompressionsgeschwindigkeit. ",
"placeholder_8": "Domäne für öffentliche freigegebene Links, einschließlich http(s)://",
"placeholder_9": "Bei höheren Auflösungen können mehr Details erhalten bleiben, die Codierung dauert jedoch länger, die Dateigröße ist größer und die Reaktionsfähigkeit der App kann beeinträchtigt sein.",
"placeholder_10": "Höhere Werte verbessern die Komprimierungseffizienz, verlangsamen jedoch die Kodierung. ",
"placeholder_11": "Höhere Werte führen zu einer schnelleren Kodierung, lassen dem Server jedoch weniger Spielraum für die Verarbeitung anderer Aufgaben, während er aktiv ist. ",
"placeholder_12": "Host des E-Mail-Servers (z. B. smtp.immich.app)",
"placeholder_13": "ICQ ist besser als CQP, aber einige Hardwarebeschleunigungsgeräte unterstützen diesen Modus nicht. ",
"placeholder_14": "Bildqualität von 1-100. ",
"placeholder_15": "Maximaler Abstand zwischen zwei Gesichtern, um als dieselbe Person betrachtet zu werden, im Bereich von 0-2. ",
"placeholder_16": "Maximaler Abstand zwischen zwei Bildern, um sie als Duplikate zu betrachten, im Bereich von 0,001–0,1. ",
"placeholder_17": "Mindestkonfidenzwert für die Erkennung eines Gesichts von 0-1. ",
"placeholder_18": "Die Modelle werden in absteigender Reihenfolge der Größe aufgelistet. ",
"placeholder_19": "Anzahl der Tage nach der Entfernung, um das Konto und die Vermögenswerte eines Benutzers dauerhaft zu löschen. ",
"placeholder_20": "Anzahl der Tage, die die Assets im Papierkorb verbleiben, bevor sie endgültig entfernt werden",
"placeholder_21": "Anzahl der Sekunden, die jedes Bild angezeigt wird",
"placeholder_22": "Opus ist die qualitativ hochwertigste Option, weist jedoch eine geringere Kompatibilität mit alten Geräten oder Software auf.",
"placeholder_23": "Passwort, das bei der Authentifizierung beim E-Mail-Server verwendet werden soll",
"placeholder_24": "Richtlinie, wann ein Video transkodiert werden soll. ",
"placeholder_25": "Port des E-Mail-Servers (z. B. 25, 465 oder 587)",
"placeholder_26": "Kontingent in GiB, das verwendet werden soll, wenn kein Anspruch angegeben wird (Geben Sie 0 für unbegrenztes Kontingent ein).",
"placeholder_27": "Wählen Sie aus, welche Audio-Codecs nicht transkodiert werden müssen. ",
"placeholder_28": "Wählen Sie aus, welche Videocodecs nicht transkodiert werden müssen. ",
"placeholder_29": "E-Mail-Adresse des Absenders, zum Beispiel: „Immich Photo Server <[email protected]>\"",
"placeholder_30": "Legt den maximalen Frame-Abstand zwischen Keyframes fest. ",
"placeholder_31": "Durch das Festlegen einer maximalen Bitrate können Dateigrößen bei geringeren Qualitätseinbußen vorhersehbarer gemacht werden. ",
"placeholder_32": "Die API, die mit Ihrem Gerät interagiert, um die Transkodierung zu beschleunigen. ",
"placeholder_33": "Die Mindestanzahl erkannter Gesichter, damit eine Person erstellt werden kann. ",
"placeholder_34": "Die Anzahl der Frames, auf die beim Komprimieren eines bestimmten Frames verwiesen wird. ",
"placeholder_35": "URL des Machine-Learning-Servers",
"placeholder_36": "URL zu einem style.json-Kartendesign",
"placeholder_37": "Wird beim Betrachten eines einzelnen Fotos und für maschinelles Lernen verwendet. ",
"placeholder_38": "Wird beim Anzeigen von Fotogruppen verwendet (Hauptzeitleiste, Albumansicht usw.). ",
"placeholder_39": "Benutzername, der bei der Authentifizierung beim E-Mail-Server verwendet werden soll",
"placeholder_40": "VP9 bietet eine hohe Effizienz und Webkompatibilität, benötigt jedoch mehr Zeit für die Transkodierung. ",
"placeholder_41": "Videoqualitätsstufe. ",
"placeholder_42": "WebP erzeugt kleinere Dateien als JPEG, ist jedoch langsamer zu kodieren.",
"placeholder_43": "Wenn aktiviert, welche Protokollebene verwendet werden soll.",
"placeholder_44": "Ermitteln oder synchronisieren Sie Sidecar-Metadaten aus dem Dateisystem",
"placeholder_45": "Aktivieren/deaktivieren Sie die Benachrichtigung über neue Versionen",
"placeholder_46": "Extrahieren Sie Metadateninformationen aus jedem Asset, z. B. GPS und Auflösung",
"placeholder_47": "Generieren Sie große, kleine und unscharfe Miniaturansichten für jedes Asset sowie Miniaturansichten für jede Person",
"placeholder_48": "Verwalten Sie die Anpassung der Immich-Weboberfläche",
"placeholder_49": "Verwalten Sie Funktionen und Einstellungen für maschinelles Lernen",
"placeholder_50": "Verwalten Sie kartenbezogene Funktionen und Einstellungen",
"placeholder_51": "Verwalten Sie Benachrichtigungseinstellungen, einschließlich E-Mail",
"placeholder_52": "Verwalten Sie Passwort, OAuth und andere Authentifizierungseinstellungen",
"placeholder_53": "Verwalten Sie die Ordnerstruktur und den Dateinamen des Upload-Assets",
"placeholder_54": "Verwalten Sie die Qualität und Auflösung der generierten Bilder",
"placeholder_55": "Verwalten Sie die Auflösungs- und Kodierungsinformationen der Videodateien",
"placeholder_56": "Migrieren Sie Miniaturansichten für Assets und Gesichter in die neueste Ordnerstruktur",
"placeholder_57": "Führen Sie maschinelles Lernen für Assets aus, um ähnliche Bilder zu erkennen. ",
"placeholder_58": "Führen Sie maschinelles Lernen für Assets aus, um die intelligente Suche zu unterstützen",
"placeholder_59": "Transkodieren Sie Videos für eine bessere Kompatibilität mit Browsern und Geräten",
"placeholder_60": "Gilt nur für NVENC und RKMPP. ",
"placeholder_61": "Gilt nur für NVENC. ",
"placeholder_62": "Registrieren Sie neue Benutzer automatisch, nachdem Sie sich mit OAuth angemeldet haben",
"placeholder_63": "Stellen Sie das Design basierend auf den Systemeinstellungen Ihres Browsers automatisch auf hell oder dunkel ein",
"placeholder_64": "Automatisch auf geänderte Dateien achten",
"placeholder_65": "Gesichter in Bildern erkennen, erkennen und gruppieren",
"placeholder_66": "Zeigen Sie in der Seitenleiste einen Link zu „Personen“ an",
"placeholder_67": "Zeigen Sie in der Seitenleiste einen Link zum Teilen an",
"placeholder_68": "Aktivieren Sie regelmäßige Anfragen an GitHub, um nach neuen Versionen zu suchen",
"placeholder_69": "Aktivieren Sie diese Option, um ein Video im Detail-Viewer automatisch in einer Schleife abzuspielen.",
"placeholder_70": "Aktivieren Sie diese Option, wenn „app.immich:/“ ein ungültiger Umleitungs-URI ist.",
"placeholder_71": "Aktiviert die Hash-Überprüfung. Deaktivieren Sie diese Funktion nicht, es sei denn, Sie sind sich der Auswirkungen sicher",
"placeholder_72": "Experimental; ",
"placeholder_73": "Formatieren Sie Datumsangaben und Zahlen basierend auf der Sprache und der Region",
"placeholder_74": "Formatieren Sie Datumsangaben und Zahlen basierend auf Ihrem Browser-Gebietsschema",
"placeholder_75": "Bei Deaktivierung werden alle ML-Funktionen unabhängig von den folgenden Einstellungen deaktiviert.",
"placeholder_76": "Wenn die Funktion deaktiviert ist, werden genau identische Assets weiterhin dedupliziert.",
"placeholder_77": "Wenn diese Option deaktiviert ist, werden Bilder nicht für die Gesichtserkennung kodiert und werden nicht im Abschnitt „Personen“ auf der Seite „Erkunden“ angezeigt.",
"placeholder_78": "Wenn diese Option deaktiviert ist, werden Bilder nicht für die intelligente Suche kodiert.",
"placeholder_79": "TLS-Zertifikatvalidierungsfehler ignorieren (nicht empfohlen)",
"placeholder_80": "Melden Sie sich mit E-Mail und Passwort an",
"placeholder_81": "Verwalten Sie, was Sie in Ihren Erinnerungen sehen",
"placeholder_82": "Optionen, die die meisten Benutzer nicht ändern müssen",
"placeholder_83": "Spielen Sie die Miniaturansicht des Videos ab, wenn sich die Maus über dem Element befindet. ",
"placeholder_84": "Zeigen Sie beim Anzeigen eines Assets lieber das Originalfoto als Miniaturansichten an, wenn das Original-Asset webkompatibel ist. ",
"placeholder_85": "Suchen Sie mithilfe von CLIP-Einbettungen semantisch nach Bildern",
"placeholder_86": "Einstellungen zum Versenden von E-Mail-Benachrichtigungen",
"placeholder_87": "Beim dauerhaften Löschen von Assets eine Warnung anzeigen",
"placeholder_88": "Zeigen Sie Fotos und Videos dieses Benutzers in Ihrer Timeline an",
"placeholder_89": "Starten Sie den OAuth-Anmeldevorgang automatisch, wenn Sie zur Anmeldeseite navigieren",
"placeholder_90": "Transcodieren Sie in zwei Durchgängen, um besser codierte Videos zu erstellen. ",
"placeholder_91": "Verwenden Sie CLIP-Einbettungen, um wahrscheinliche Duplikate zu finden",
"placeholder_92": "Verwenden Sie Display P3 für Miniaturansichten. ",
"placeholder_93": "Verwenden Sie eingebettete Vorschauen in RAW-Fotos als Eingabe für die Bildverarbeitung, sofern verfügbar. ",
"placeholder_94": "Beobachten Sie externe Bibliotheken auf Dateiänderungen"
}
23 changes: 22 additions & 1 deletion web/src/lib/i18n/locales/en-EN.json
Original file line number Diff line number Diff line change
@@ -738,5 +738,26 @@
"placeholder_91": "Use CLIP embeddings to find likely duplicates",
"placeholder_92": "Use Display P3 for thumbnails. This better preserves the vibrance of images with wide colorspaces, but images may appear differently on old devices with an old browser version. sRGB images are kept as sRGB to avoid color shifts.",
"placeholder_93": "Use embedded previews in RAW photos as the input to image processing when available. This can produce more accurate colors for some images, but the quality of the preview is camera-dependent and the image may have more compression artifacts.",
"placeholder_94": "Watch external libraries for file changes"
"placeholder_94": "Watch external libraries for file changes",
"placeholder_95": "NVENC (requires NVIDIA GPU)",
"placeholder_96": "Only videos not in an accepted format",
"placeholder_97": "Opus",
"placeholder_98": "Past 24 hours",
"placeholder_99": "Past 3 years",
"placeholder_100": "Past 30 days",
"placeholder_101": "Past 7 days",
"placeholder_102": "Past year",
"placeholder_103": "Quick Sync (requires 7th gen Intel CPU or later)",
"placeholder_104": "RKMPP (only on Rockchip SOCs)",
"placeholder_105": "Videos higher than max bitrate or not in an accepted format",
"placeholder_106": "Videos higher than target resolution or not in an accepted format",
"placeholder_107": "Add favorites to quickly find your best pictures and videos",
"placeholder_108": "Archive photos and videos to hide them from your Photos view",
"placeholder_109": "CLICK TO UPLOAD YOUR FIRST PHOTO",
"placeholder_110": "Create an album to organize your photos and videos",
"placeholder_111": "Create an album to share photos and videos with people in your network",
"placeholder_112": "Create an external library to view your photos and videos",
"placeholder_113": "Force Re-scan All Library Files",
"placeholder_114": "Trashed photos and videos will show up here.",
"placeholder_115": "Untracked and missing files will show up here"
}
2 changes: 1 addition & 1 deletion web/src/routes/(user)/albums/+page.svelte
Original file line number Diff line number Diff line change
@@ -44,7 +44,7 @@
>
<EmptyPlaceholder
slot="empty"
text="Create an album to organize your photos and videos"
text="{ $t("placeholder_110") }"
onClick={() => createAlbumAndRedirect()}
/>
</Albums>
Original file line number Diff line number Diff line change
@@ -46,6 +46,6 @@

<UserPageLayout hideNavbar={$isMultiSelectState} title={data.meta.title} scrollbar={false}>
<AssetGrid {assetStore} {assetInteractionStore} removeAction={AssetAction.UNARCHIVE}>
<EmptyPlaceholder text="Archive photos and videos to hide them from your Photos view" slot="empty" />
<EmptyPlaceholder text="{ $t("placeholder_108") }" slot="empty" />
</AssetGrid>
</UserPageLayout>
Original file line number Diff line number Diff line change
@@ -51,6 +51,6 @@

<UserPageLayout hideNavbar={$isMultiSelectState} title={data.meta.title} scrollbar={false}>
<AssetGrid {assetStore} {assetInteractionStore} removeAction={AssetAction.UNFAVORITE}>
<EmptyPlaceholder text="Add favorites to quickly find your best pictures and videos" slot="empty" />
<EmptyPlaceholder text="{ $t("placeholder_107") }" slot="empty" />
</AssetGrid>
</UserPageLayout>
2 changes: 1 addition & 1 deletion web/src/routes/(user)/photos/[[assetId=id]]/+page.svelte
Original file line number Diff line number Diff line change
@@ -93,6 +93,6 @@
{#if $preferences.memories.enabled}
<MemoryLane />
{/if}
<EmptyPlaceholder text="CLICK TO UPLOAD YOUR FIRST PHOTO" onClick={() => openFileUploadDialog()} slot="empty" />
<EmptyPlaceholder text="{ $t("placeholder_109") }" onClick={() => openFileUploadDialog()} slot="empty" />
</AssetGrid>
</UserPageLayout>
2 changes: 1 addition & 1 deletion web/src/routes/(user)/sharing/+page.svelte
Original file line number Diff line number Diff line change
@@ -92,7 +92,7 @@
<!-- Empty List -->
<EmptyPlaceholder
slot="empty"
text="Create an album to share photos and videos with people in your network"
text="{ $t("placeholder_111") }"
src={empty2Url}
/>
</Albums>
Original file line number Diff line number Diff line change
@@ -116,7 +116,7 @@
<p class="font-medium text-gray-500/60 dark:text-gray-300/60 p-4">
Trashed items will be permanently deleted after {$serverConfig.trashDays} days.
</p>
<EmptyPlaceholder text="Trashed photos and videos will show up here." src={empty3Url} slot="empty" />
<EmptyPlaceholder text="{ $t("placeholder_114") }" src={empty3Url} slot="empty" />
</AssetGrid>
</UserPageLayout>
{/if}
4 changes: 2 additions & 2 deletions web/src/routes/admin/library-management/+page.svelte
Original file line number Diff line number Diff line change
@@ -413,7 +413,7 @@
/>
<MenuOption
on:click={() => onForceScanAllLibraryFilesClicked()}
text="Force Re-scan All Library Files"
text="{ $t("placeholder_113") }"
subtitle={$t('refreshes_every_file')}
/>
<hr />
@@ -464,7 +464,7 @@
<!-- Empty message -->
{:else}
<EmptyPlaceholder
text="Create an external library to view your photos and videos"
text="{ $t("placeholder_112") }"
onClick={() => (toCreateLibrary = true)}
/>
{/if}
2 changes: 1 addition & 1 deletion web/src/routes/admin/repair/+page.svelte
Original file line number Diff line number Diff line change
@@ -204,7 +204,7 @@
<section class="w-full pb-28 sm:w-5/6 md:w-[850px]">
{#if matches.length + extras.length + orphans.length === 0}
<div class="w-full">
<EmptyPlaceholder fullWidth text="Untracked and missing files will show up here" src={empty4Url} />
<EmptyPlaceholder fullWidth text="{ $t("placeholder_115") }" src={empty4Url} />
</div>
{:else}
<div class="gap-2">