diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 997cbd90..d991d8e7 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "picpeak-frontend", - "version": "3.42.2-beta.1", + "version": "3.42.7-beta.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "picpeak-frontend", - "version": "3.42.2-beta.1", + "version": "3.42.7-beta.0", "dependencies": { "@tanstack/react-query": "^5.0.0", "@tiptap/extension-character-count": "^2.26.1", diff --git a/frontend/src/features/settings/tabs/ThumbnailsTab.tsx b/frontend/src/features/settings/tabs/ThumbnailsTab.tsx index 51fba1ce..10fd257d 100644 --- a/frontend/src/features/settings/tabs/ThumbnailsTab.tsx +++ b/frontend/src/features/settings/tabs/ThumbnailsTab.tsx @@ -24,8 +24,8 @@ const defaultSettings: ThumbnailSettings = { interface FetchedSettings { settings: Record; - fitOptions: string[]; - formatOptions: string[]; + fitOptions: Array<'cover' | 'contain' | 'fill' | 'inside' | 'outside'>; + formatOptions: Array<'jpeg' | 'png' | 'webp'>; } export const ThumbnailsTab: React.FC = () => { diff --git a/frontend/src/i18n/locales/de.json b/frontend/src/i18n/locales/de.json index cb084a9b..634838d8 100644 --- a/frontend/src/i18n/locales/de.json +++ b/frontend/src/i18n/locales/de.json @@ -909,15 +909,8 @@ "deleteSelected": "Ausgewählte löschen", "bulkDelete": { "warning": "Die ausgewählten Veranstaltungen, alle ihre Fotos, Archive und Audit-Logs werden endgültig gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.", - "passwordLabel": "Zur Bestätigung Ihr Passwort erneut eingeben", - "passwordPlaceholder": "Ihr Admin-Passwort", - "passwordHelp": "Wir benötigen Ihr Passwort als Schutz vor versehentlichen Massenlöschungen.", - "incorrectPassword": "Falsches Passwort. Es wurden keine Veranstaltungen gelöscht.", "confirmLabel": "Geben Sie {{literal}} ein, um zu bestätigen", "confirmHelp": "Eine getippte Bestätigung verhindert versehentliche Löschungen und ist nicht von Browser-Autofill oder Passkey-Verknüpfungen betroffen.", - "submit": "{{count}} Veranstaltungen löschen", - "processing": "{{count}} Veranstaltungen werden gelöscht. Dies kann einige Minuten dauern — bitte schließen Sie dieses Fenster nicht.", - "successAll": "{{count}} Veranstaltungen endgültig gelöscht", "successPartial": "{{success}} Veranstaltungen gelöscht, {{failed}} fehlgeschlagen", "errorGeneric": "Veranstaltungen konnten nicht gelöscht werden", "successAll_one": "{{count}} Veranstaltung dauerhaft gelöscht", @@ -1235,7 +1228,12 @@ "saveError": "Vorschaubild-Einstellungen konnten nicht gespeichert werden", "loadError": "Vorschaubild-Einstellungen konnten nicht geladen werden", "infoTitle": "Über Vorschaubilder", - "infoText": "Vorschaubilder sind kleinere Vorschauversionen Ihrer Originalbilder. Das Erhöhen der Größe oder Qualität verbessert die Darstellung in der Galerieübersicht, benötigt aber mehr Speicherplatz und Bandbreite. Nach dem Ändern der Einstellungen verwenden Sie \"Alle Vorschaubilder neu generieren\", um bestehende Fotos zu aktualisieren." + "infoText": "Vorschaubilder sind kleinere Vorschauversionen Ihrer Originalbilder. Das Erhöhen der Größe oder Qualität verbessert die Darstellung in der Galerieübersicht, benötigt aber mehr Speicherplatz und Bandbreite. Nach dem Ändern der Einstellungen verwenden Sie \"Alle Vorschaubilder neu generieren\", um bestehende Fotos zu aktualisieren.", + "fit_cover": "Füllen (zuschneiden)", + "fit_contain": "Einpassen (innerhalb)", + "fit_fill": "Strecken", + "fit_inside": "Innen (verkleinern)", + "fit_outside": "Außen (vergrößern)" }, "categories": { "title": "Kategorien", diff --git a/frontend/src/i18n/locales/en.json b/frontend/src/i18n/locales/en.json index a02e4cc8..07b049a9 100644 --- a/frontend/src/i18n/locales/en.json +++ b/frontend/src/i18n/locales/en.json @@ -535,15 +535,8 @@ "deleteSelected": "Delete Selected", "bulkDelete": { "warning": "This will permanently delete the selected events, all their photos, archives, and audit logs. This action cannot be undone.", - "passwordLabel": "Re-enter your password to confirm", - "passwordPlaceholder": "Your admin password", - "passwordHelp": "We require your password as a safeguard against accidental bulk deletions.", - "incorrectPassword": "Incorrect password. No events were deleted.", "confirmLabel": "Type {{literal}} to confirm", "confirmHelp": "A typed confirmation prevents accidental deletions and isn't affected by browser autofill or passkey shortcuts.", - "submit": "Delete {{count}} events", - "processing": "Deleting {{count}} events. This may take a few minutes — please don't close this window.", - "successAll": "Permanently deleted {{count}} events", "successPartial": "Deleted {{success}} events, {{failed}} failed", "errorGeneric": "Failed to delete events", "successAll_one": "events.bulkDelete.successAll", @@ -941,7 +934,12 @@ "saveError": "Failed to save thumbnail settings", "loadError": "Failed to load thumbnail settings", "infoTitle": "About Thumbnails", - "infoText": "Thumbnails are smaller preview images generated from your originals. Increasing the size or quality improves how photos look in the gallery grid but uses more storage and bandwidth. After changing settings, use \"Regenerate All Thumbnails\" to update existing photos." + "infoText": "Thumbnails are smaller preview images generated from your originals. Increasing the size or quality improves how photos look in the gallery grid but uses more storage and bandwidth. After changing settings, use \"Regenerate All Thumbnails\" to update existing photos.", + "fit_cover": "Cover (crop to fill)", + "fit_contain": "Contain (fit within)", + "fit_fill": "Fill (stretch)", + "fit_inside": "Inside (shrink to fit)", + "fit_outside": "Outside (expand to cover)" }, "seo": { "title": "SEO & Robots", diff --git a/frontend/src/i18n/locales/fr.json b/frontend/src/i18n/locales/fr.json index dc4c76a2..538b57fa 100644 --- a/frontend/src/i18n/locales/fr.json +++ b/frontend/src/i18n/locales/fr.json @@ -583,7 +583,6 @@ "successAll_one": "{{count}} événement supprimé définitivement", "successAll_other": "{{count}} événements supprimés définitivement", "successPartial": "{{success}} événements supprimés, {{failed}} échoués", - "incorrectPassword": "Mot de passe incorrect. Aucun événement supprimé.", "errorGeneric": "Échec de la suppression des événements", "title_many": "Supprimer définitivement {{count}} événements ?", "title_one": "Supprimer définitivement {{count}} événement ?", @@ -592,12 +591,11 @@ "processing_one": "Suppression de {{count}} événement. Cela peut prendre quelques minutes — ne fermez pas cette fenêtre.", "processing_other": "Suppression de {{count}} événements. Cela peut prendre quelques minutes — ne fermez pas cette fenêtre.", "warning": "Cette action supprimera définitivement les événements sélectionnés, toutes leurs photos, archives et journaux d'audit. Cette action est irréversible.", - "passwordLabel": "Ressaisissez votre mot de passe pour confirmer", - "passwordPlaceholder": "Votre mot de passe administrateur", - "passwordHelp": "Votre mot de passe est requis pour éviter les suppressions accidentelles en masse.", "submit_many": "Supprimer {{count}} événements", "submit_one": "Supprimer {{count}} événement", - "submit_other": "Supprimer {{count}} événements" + "submit_other": "Supprimer {{count}} événements", + "confirmLabel": "Ecris {{literal}} pour confirmer", + "confirmHelp": "Une confirmation saisie au clavier évite les suppressions accidentelles et n'est pas affectée par la fonction de remplissage automatique du navigateur ni par les raccourcis clavier." }, "draft": "Brouillon", "expired": "Expiré", @@ -953,7 +951,12 @@ "saveError": "Échec de l'enregistrement", "loadError": "Échec du chargement", "infoTitle": "À propos des vignettes", - "infoText": "Ce sont des aperçus réduits de vos originaux." + "infoText": "Ce sont des aperçus réduits de vos originaux.", + "fit_fill": "", + "fit_cover": "", + "fit_contain": "", + "fit_inside": "", + "fit_outside": "" }, "seo": { "title": "SEO et Robots", diff --git a/frontend/src/i18n/locales/nl.json b/frontend/src/i18n/locales/nl.json index 302a0f8c..5db2e568 100644 --- a/frontend/src/i18n/locales/nl.json +++ b/frontend/src/i18n/locales/nl.json @@ -535,15 +535,8 @@ "deleteSelected": "Geselecteerde verwijderen", "bulkDelete": { "warning": "De geselecteerde evenementen, al hun foto's, archieven en auditlogboeken worden permanent verwijderd. Deze actie kan niet ongedaan worden gemaakt.", - "passwordLabel": "Voer ter bevestiging uw wachtwoord opnieuw in", - "passwordPlaceholder": "Uw beheerderswachtwoord", - "passwordHelp": "We vragen om uw wachtwoord als bescherming tegen onbedoelde bulkverwijderingen.", - "incorrectPassword": "Onjuist wachtwoord. Er zijn geen evenementen verwijderd.", "confirmLabel": "Typ {{literal}} om te bevestigen", "confirmHelp": "Een getypte bevestiging voorkomt onbedoelde verwijderingen en wordt niet beïnvloed door browser-autofill of passkey-snelkoppelingen.", - "submit": "{{count}} evenementen verwijderen", - "processing": "{{count}} evenementen worden verwijderd. Dit kan enkele minuten duren — sluit dit venster niet.", - "successAll": "{{count}} evenementen permanent verwijderd", "successPartial": "{{success}} evenementen verwijderd, {{failed}} mislukt", "errorGeneric": "Kan evenementen niet verwijderen", "successAll_one": "{{count}} evenement definitief verwijderd", @@ -941,7 +934,12 @@ "saveError": "Kan miniatuurinstellingen niet opslaan", "loadError": "Kan miniatuurinstellingen niet laden", "infoTitle": "Over miniaturen", - "infoText": "Miniaturen zijn kleinere voorbeeldafbeeldingen die worden gegenereerd van uw originelen. Het vergroten van de afmetingen of kwaliteit verbetert hoe foto's er uitzien in het galerijraster, maar gebruikt meer opslag en bandbreedte. Na het wijzigen van instellingen, gebruik \"Alle miniaturen opnieuw genereren\" om bestaande foto's bij te werken." + "infoText": "Miniaturen zijn kleinere voorbeeldafbeeldingen die worden gegenereerd van uw originelen. Het vergroten van de afmetingen of kwaliteit verbetert hoe foto's er uitzien in het galerijraster, maar gebruikt meer opslag en bandbreedte. Na het wijzigen van instellingen, gebruik \"Alle miniaturen opnieuw genereren\" om bestaande foto's bij te werken.", + "fit_cover": "Cover (bijsnijden om te vullen)", + "fit_contain": "Contain (passend binnen)", + "fit_fill": "Vullen (uitrekken)", + "fit_inside": "Binnenkant (verkleinen om te passen)", + "fit_outside": "Buitenkant (vergroten om te bedekken)" }, "seo": { "title": "SEO & Robots", diff --git a/frontend/src/i18n/locales/pt.json b/frontend/src/i18n/locales/pt.json index 44e06dcf..e50afb72 100644 --- a/frontend/src/i18n/locales/pt.json +++ b/frontend/src/i18n/locales/pt.json @@ -543,15 +543,8 @@ "deleteSelected": "Excluir selecionados", "bulkDelete": { "warning": "Os eventos selecionados, todas as suas fotos, arquivos e logs de auditoria serão excluídos permanentemente. Esta ação não pode ser desfeita.", - "passwordLabel": "Digite sua senha novamente para confirmar", - "passwordPlaceholder": "Sua senha de administrador", - "passwordHelp": "Solicitamos sua senha como proteção contra exclusões em massa acidentais.", - "incorrectPassword": "Senha incorreta. Nenhum evento foi excluído.", "confirmLabel": "Digite {{literal}} para confirmar", "confirmHelp": "Uma confirmação digitada evita exclusões acidentais e não é afetada pelo autopreenchimento do navegador ou atalhos de passkey.", - "submit": "Excluir {{count}} eventos", - "processing": "Excluindo {{count}} eventos. Isso pode levar alguns minutos — não feche esta janela.", - "successAll": "{{count}} eventos excluídos permanentemente", "successPartial": "{{success}} eventos excluídos, {{failed}} com falha", "errorGeneric": "Falha ao excluir eventos", "successAll_many": "{{count}} eventos eliminados permanentemente", @@ -958,7 +951,12 @@ "saveError": "Falha ao salvar configurações", "loadError": "Falha ao carregar configurações", "infoTitle": "Sobre Miniaturas", - "infoText": "Miniaturas são versões menores das fotos. Aumentar o tamanho melhora a aparência, mas usa mais espaço e banda." + "infoText": "Miniaturas são versões menores das fotos. Aumentar o tamanho melhora a aparência, mas usa mais espaço e banda.", + "fit_cover": "Cover (cortar para preencher)", + "fit_contain": "Contain (ajustar ao espaço)", + "fit_fill": "Fill (esticar)", + "fit_inside": "Inside (encolher para caber)", + "fit_outside": "Outside (expandir para cobrir)" }, "seo": { "title": "SEO e Robots", diff --git a/frontend/src/i18n/locales/ru.json b/frontend/src/i18n/locales/ru.json index 3a1be8d2..dfebc4ce 100644 --- a/frontend/src/i18n/locales/ru.json +++ b/frontend/src/i18n/locales/ru.json @@ -551,15 +551,8 @@ "deleteSelected": "Удалить выбранные", "bulkDelete": { "warning": "Выбранные события, все их фотографии, архивы и журналы аудита будут удалены безвозвратно. Это действие невозможно отменить.", - "passwordLabel": "Введите пароль для подтверждения", - "passwordPlaceholder": "Ваш пароль администратора", - "passwordHelp": "Мы запрашиваем пароль для защиты от случайного массового удаления.", - "incorrectPassword": "Неверный пароль. События не были удалены.", "confirmLabel": "Введите {{literal}} для подтверждения", "confirmHelp": "Подтверждение вводом текста предотвращает случайные удаления и не зависит от автозаполнения браузера или сочетаний клавиш с passkey.", - "submit": "Удалить {{count}} событий", - "processing": "Удаление {{count}} событий. Это может занять несколько минут — пожалуйста, не закрывайте это окно.", - "successAll": "Безвозвратно удалено {{count}} событий", "successPartial": "Удалено {{success}} событий, {{failed}} не удалось", "errorGeneric": "Не удалось удалить события", "successAll_few": "{{count}} события удалены навсегда", @@ -1016,7 +1009,12 @@ "saveError": "Не удалось сохранить настройки миниатюр", "loadError": "Не удалось загрузить настройки миниатюр", "infoTitle": "О миниатюрах", - "infoText": "Миниатюры — это уменьшенные версии ваших оригинальных изображений. Увеличение размера или качества улучшает отображение фотографий в сетке галереи, но требует больше места и трафика. После изменения настроек используйте «Перегенерировать все миниатюры» для обновления существующих фотографий." + "infoText": "Миниатюры — это уменьшенные версии ваших оригинальных изображений. Увеличение размера или качества улучшает отображение фотографий в сетке галереи, но требует больше места и трафика. После изменения настроек используйте «Перегенерировать все миниатюры» для обновления существующих фотографий.", + "fit_cover": "Заполнение (обрезка)", + "fit_contain": "Вписывание (внутри)", + "fit_fill": "Растягивание", + "fit_inside": "Внутри (уменьшить)", + "fit_outside": "Снаружи (увеличить)" }, "photoDimensions": { "title": "Размеры фотографий",