From 8bd47c4de65edfd2ca06c2ca12efd0b62c4b91e8 Mon Sep 17 00:00:00 2001 From: Robin Moser Date: Tue, 20 Apr 2021 01:16:39 +0200 Subject: [PATCH 1/3] add structure for German localization --- api/graphql/generated.go | 1 + api/graphql/models/generated.go | 4 +++- api/graphql/schema.graphql | 1 + ui/__generated__/globalTypes.ts | 1 + ui/babel.config.js | 2 +- ui/src/Pages/SettingsPage/UserPreferences.tsx | 1 + ui/src/localization.ts | 6 ++++++ 7 files changed, 14 insertions(+), 2 deletions(-) diff --git a/api/graphql/generated.go b/api/graphql/generated.go index 7c02b830..93539f96 100644 --- a/api/graphql/generated.go +++ b/api/graphql/generated.go @@ -1849,6 +1849,7 @@ enum LanguageTranslation { Danish, Spanish, Polish, + German, } type UserPreferences { diff --git a/api/graphql/models/generated.go b/api/graphql/models/generated.go index 79c81d3f..4741dd70 100644 --- a/api/graphql/models/generated.go +++ b/api/graphql/models/generated.go @@ -78,6 +78,7 @@ const ( LanguageTranslationDanish LanguageTranslation = "Danish" LanguageTranslationSpanish LanguageTranslation = "Spanish" LanguageTranslationPolish LanguageTranslation = "Polish" + LanguageTranslationGerman LanguageTranslation = "German" ) var AllLanguageTranslation = []LanguageTranslation{ @@ -88,11 +89,12 @@ var AllLanguageTranslation = []LanguageTranslation{ LanguageTranslationDanish, LanguageTranslationSpanish, LanguageTranslationPolish, + LanguageTranslationGerman, } func (e LanguageTranslation) IsValid() bool { switch e { - case LanguageTranslationEnglish, LanguageTranslationFrench, LanguageTranslationItalian, LanguageTranslationSwedish, LanguageTranslationDanish, LanguageTranslationSpanish, LanguageTranslationPolish: + case LanguageTranslationEnglish, LanguageTranslationFrench, LanguageTranslationItalian, LanguageTranslationSwedish, LanguageTranslationDanish, LanguageTranslationSpanish, LanguageTranslationPolish, LanguageTranslationGerman: return true } return false diff --git a/api/graphql/schema.graphql b/api/graphql/schema.graphql index 86686ff6..89e08244 100644 --- a/api/graphql/schema.graphql +++ b/api/graphql/schema.graphql @@ -229,6 +229,7 @@ enum LanguageTranslation { Danish, Spanish, Polish, + German, } type UserPreferences { diff --git a/ui/__generated__/globalTypes.ts b/ui/__generated__/globalTypes.ts index 3d05a575..ad705708 100644 --- a/ui/__generated__/globalTypes.ts +++ b/ui/__generated__/globalTypes.ts @@ -11,6 +11,7 @@ export enum LanguageTranslation { Danish = 'Danish', English = 'English', French = 'French', + German = 'German', Italian = 'Italian', Polish = 'Polish', Spanish = 'Spanish', diff --git a/ui/babel.config.js b/ui/babel.config.js index a1f44813..6a120520 100644 --- a/ui/babel.config.js +++ b/ui/babel.config.js @@ -13,7 +13,7 @@ module.exports = function (api) { plugins.push([ 'i18next-extract', { - locales: ['en', 'da', 'fr', 'sv', 'es', 'it', 'pl'], + locales: ['en', 'da', 'fr', 'sv', 'es', 'it', 'pl', 'de'], defaultValue: null, }, ]) diff --git a/ui/src/Pages/SettingsPage/UserPreferences.tsx b/ui/src/Pages/SettingsPage/UserPreferences.tsx index d7caccca..e573fb80 100644 --- a/ui/src/Pages/SettingsPage/UserPreferences.tsx +++ b/ui/src/Pages/SettingsPage/UserPreferences.tsx @@ -24,6 +24,7 @@ const languagePreferences = [ { key: 5, text: 'Español', flag: 'es', value: LanguageTranslation.Spanish }, { key: 6, text: 'polski', flag: 'pl', value: LanguageTranslation.Polish }, { key: 7, text: 'Italiano', flag: 'it', value: LanguageTranslation.Italian }, + { key: 8, text: 'Deutsch', flag: 'de', value: LanguageTranslation.German }, ] const CHANGE_USER_PREFERENCES = gql` diff --git a/ui/src/localization.ts b/ui/src/localization.ts index 4f6cba06..6d1b640c 100644 --- a/ui/src/localization.ts +++ b/ui/src/localization.ts @@ -100,6 +100,12 @@ export const loadTranslations = () => { i18n.changeLanguage('pl') }) return + case LanguageTranslation.German: + import('../extractedTranslations/de/translation.json').then(german => { + i18n.addResourceBundle('de', 'translation', german) + i18n.changeLanguage('de') + }) + return } exhaustiveCheck(language) From d916b14828358e956857bedc96bc9e18a7053d34 Mon Sep 17 00:00:00 2001 From: Robin Moser Date: Tue, 20 Apr 2021 01:31:51 +0200 Subject: [PATCH 2/3] add empty German language template --- ui/extractedTranslations/de/translation.json | 254 +++++++++++++++++++ 1 file changed, 254 insertions(+) create mode 100644 ui/extractedTranslations/de/translation.json diff --git a/ui/extractedTranslations/de/translation.json b/ui/extractedTranslations/de/translation.json new file mode 100644 index 00000000..f427f882 --- /dev/null +++ b/ui/extractedTranslations/de/translation.json @@ -0,0 +1,254 @@ +{ + "album_filter": { + "only_favorites": null, + "sort_by": null, + "sorting_options": { + "date_imported": null, + "date_shot": null, + "title": null, + "type": null + } + }, + "albums_page": { + "title": null + }, + "general": { + "action": { + "add": null, + "cancel": null, + "delete": null, + "more": null, + "remove": null, + "save": null + }, + "loading": { + "album": null, + "default": null, + "media": null, + "page": null, + "paginate": { + "faces": null, + "media": null + }, + "shares": null, + "timeline": null + } + }, + "header": { + "search": { + "loading": null, + "no_results": null, + "placeholder": null, + "result_type": { + "albums": null, + "photos": null + } + } + }, + "login_page": { + "field": { + "password": null, + "submit": null, + "username": null + }, + "initial_setup": { + "field": { + "photo_path": { + "label": null, + "placeholder": null + }, + "submit": null + }, + "title": null + }, + "welcome": null + }, + "meta": { + "description": null + }, + "people_page": { + "face_group": { + "label_placeholder": null, + "unlabeled": null + }, + "recognize_unlabeled_faces_button": null + }, + "photos_page": { + "title": null + }, + "places_page": { + "title": null + }, + "routes": { + "page_not_found": null + }, + "settings": { + "concurrent_workers": { + "description": null, + "title": null + }, + "logout": null, + "periodic_scanner": { + "checkbox_label": null, + "field": { + "description": null, + "label": null + }, + "interval_unit": { + "days": null, + "hour": null, + "minutes": null, + "months": null, + "seconds": null + }, + "title": null + }, + "scanner": { + "description": null, + "scan_all_users": null, + "title": null + }, + "user_preferences": { + "change_language": { + "description": null, + "label": null + }, + "language_selector": { + "placeholder": null + }, + "title": null + }, + "users": { + "add_user": { + "submit": null + }, + "confirm_delete_user": { + "action": null, + "description": null, + "title": null + }, + "password_reset": { + "description": null, + "form": { + "label": null, + "placeholder": null, + "submit": null + }, + "title": null + }, + "table": { + "column_names": { + "action": null, + "admin": null, + "photo_path": null, + "username": null + }, + "new_user": null, + "row": { + "action": { + "change_password": null, + "delete": null, + "edit": null, + "scan": null + } + } + }, + "title": null + } + }, + "share_page": { + "media": { + "title": null + }, + "protected_share": { + "description": null, + "title": null + }, + "share_not_found": null, + "share_not_found_description": null, + "wrong_password": null + }, + "sidebar": { + "album": { + "title": null + }, + "download": { + "filesize": { + "byte": null, + "byte_plural": null, + "giga_byte": null, + "kilo_byte": null, + "mega_byte": null, + "tera_byte": null + }, + "table_columns": { + "dimensions": null, + "file_size": null, + "file_type": null, + "name": null + }, + "title": null + }, + "media": { + "exif": { + "exposure_program": { + "action_program": null, + "aperture_priority": null, + "bulb": null, + "creative_program": null, + "landscape_mode": null, + "manual": null, + "normal_program": null, + "not_defined": null, + "portrait_mode": null, + "shutter_priority": null + }, + "flash": { + "auto": null, + "did_not_fire": null, + "fired": null, + "no_flash": null, + "no_flash_function": null, + "off": null, + "on": null, + "red_eye_reduction": null, + "return_detected": null, + "return_not_detected": null + }, + "name": { + "aperture": null, + "camera": null, + "date_shot": null, + "exposure": null, + "exposure_program": null, + "flash": null, + "focal_length": null, + "iso": null, + "lens": null, + "maker": null + } + } + }, + "sharing": { + "add_share": null, + "copy_link": null, + "no_shares_found": null, + "public_link": null, + "table_header": null, + "title": null + } + }, + "sidemenu": { + "albums": null, + "people": null, + "photos": null, + "places": null, + "settings": null + }, + "title": { + "loading_album": null, + "login": null, + "people": null, + "settings": null + } +} From 6e1ba78bc5d8e9e2d2558c36d9e66616516e7697 Mon Sep 17 00:00:00 2001 From: Robin Moser Date: Tue, 20 Apr 2021 02:21:37 +0200 Subject: [PATCH 3/3] add German translation --- ui/extractedTranslations/de/translation.json | 284 +++++++++---------- 1 file changed, 142 insertions(+), 142 deletions(-) diff --git a/ui/extractedTranslations/de/translation.json b/ui/extractedTranslations/de/translation.json index f427f882..4be024b9 100644 --- a/ui/extractedTranslations/de/translation.json +++ b/ui/extractedTranslations/de/translation.json @@ -1,254 +1,254 @@ { "album_filter": { - "only_favorites": null, - "sort_by": null, + "only_favorites": "Nur Favoriten anzeigen", + "sort_by": "Sortieren nach", "sorting_options": { - "date_imported": null, - "date_shot": null, - "title": null, - "type": null + "date_imported": "Importdatum", + "date_shot": "Aufnahmedatum", + "title": "Titel", + "type": "Typ" } }, "albums_page": { - "title": null + "title": "Alben" }, "general": { "action": { - "add": null, - "cancel": null, - "delete": null, - "more": null, - "remove": null, - "save": null + "add": "Hinzufügen", + "cancel": "Abbrechen", + "delete": "Löschen", + "more": "Mehr", + "remove": "Entfernen", + "save": "Speichern" }, "loading": { - "album": null, - "default": null, - "media": null, - "page": null, + "album": "Lade Album", + "default": "Lade...", + "media": "Lade Medien", + "page": "Lade Seite", "paginate": { - "faces": null, - "media": null + "faces": "Lade mehr Personen", + "media": "Lade mehr Medien" }, - "shares": null, - "timeline": null + "shares": "Lade Freigaben...", + "timeline": "Lade Timeline" } }, "header": { "search": { - "loading": null, - "no_results": null, - "placeholder": null, + "loading": "Lade Ergebnisse...", + "no_results": "Keine Ergebnisse gefunden", + "placeholder": "Suche", "result_type": { - "albums": null, - "photos": null + "albums": "Alben", + "photos": "Fotos" } } }, "login_page": { "field": { - "password": null, - "submit": null, - "username": null + "password": "Passwort", + "submit": "Einloggen", + "username": "Benutzername" }, "initial_setup": { "field": { "photo_path": { - "label": null, - "placeholder": null + "label": "Foto Pfad", + "placeholder": "/pfad/zu/fotos" }, - "submit": null + "submit": "Photoview einrichten" }, - "title": null + "title": "Einrichtung" }, - "welcome": null + "welcome": "Willkommen zu Photoview" }, "meta": { - "description": null + "description": "Einfache und nutzerfreundliche Fotogallerie für Homeserver" }, "people_page": { "face_group": { - "label_placeholder": null, - "unlabeled": null + "label_placeholder": "Zuordnung", + "unlabeled": "Nicht zugeordnet" }, - "recognize_unlabeled_faces_button": null + "recognize_unlabeled_faces_button": "Nicht zugeordnete Gesichter erkennen" }, "photos_page": { - "title": null + "title": "Fotos" }, "places_page": { - "title": null + "title": "Orte" }, "routes": { - "page_not_found": null + "page_not_found": "Seite nicht gefunden" }, "settings": { "concurrent_workers": { - "description": null, - "title": null + "description": "Die maximale erlaubte Anzahl an gleichzeitig laufenden Scanner Jobs", + "title": "Anzahl an Workern" }, - "logout": null, + "logout": "Ausloggen", "periodic_scanner": { - "checkbox_label": null, + "checkbox_label": "Kontinuierlichen Scanner aktivieren", "field": { - "description": null, - "label": null + "description": "Intervall, in dem automatische Scans aller Nutzer wiederholt werden", + "label": "Intervall - kontinuierlicher Scanner" }, "interval_unit": { - "days": null, - "hour": null, - "minutes": null, - "months": null, - "seconds": null + "days": "Tage", + "hour": "Stunden", + "minutes": "Minuten", + "months": "Monate", + "seconds": "Sekunden" }, - "title": null + "title": "Kontinuierlicher Scanner" }, "scanner": { - "description": null, - "scan_all_users": null, - "title": null + "description": "Neue und aktualisierte Medien aller Benutzer scannen", + "scan_all_users": "Alle Benutzer scannen", + "title": "Scanner" }, "user_preferences": { "change_language": { - "description": null, - "label": null + "description": "Ändert die Spracheinstellungen der Website für diesen Benutzer", + "label": "Sprache" }, "language_selector": { - "placeholder": null + "placeholder": "Sprache auswählen" }, - "title": null + "title": "Persönliche Einstelungen" }, "users": { "add_user": { - "submit": null + "submit": "Benutzer hinzufügen" }, "confirm_delete_user": { - "action": null, - "description": null, - "title": null + "action": "Lösche {{user}}", + "description": "<0>Du bist dabei, den Nutzer <1> endgültig zu löschen.

Diese Aktion kann nicht rückgängig gemacht werden. Bist du sicher?

", + "title": "Benutzer löschen" }, "password_reset": { - "description": null, + "description": "Passwort von Benutzer <1> aktualisieren", "form": { - "label": null, - "placeholder": null, - "submit": null + "label": "Neues Passwort", + "placeholder": "Passwort", + "submit": "Passwört aktualisieren" }, - "title": null + "title": "Passwort aktualisieren" }, "table": { "column_names": { - "action": null, - "admin": null, - "photo_path": null, - "username": null + "action": "Aktion", + "admin": "Administrator", + "photo_path": "Pfad der Medien", + "username": "Benutzername" }, - "new_user": null, + "new_user": "Neuer Benutzer", "row": { "action": { - "change_password": null, - "delete": null, - "edit": null, - "scan": null + "change_password": "Passwort aktualisieren", + "delete": "Löschen", + "edit": "Bearbeiten", + "scan": "Scannen" } } }, - "title": null + "title": "Benutzer" } }, "share_page": { "media": { - "title": null + "title": "Freigegebene Medien" }, "protected_share": { - "description": null, - "title": null + "description": "Diese Freigabe ist passwortgeschützt.", + "title": "Passwortgeschützte Freigabe" }, - "share_not_found": null, - "share_not_found_description": null, - "wrong_password": null + "share_not_found": "Freigabe nicht gefunden", + "share_not_found_description": "Möglicherweise ist die Freigabe abgelaufen oder wurde gelöscht.", + "wrong_password": "Falsches Passwort, bitte erneut probieren." }, "sidebar": { "album": { - "title": null + "title": "Album Optionen" }, "download": { "filesize": { - "byte": null, - "byte_plural": null, - "giga_byte": null, - "kilo_byte": null, - "mega_byte": null, - "tera_byte": null + "byte": "{{count}} Byte", + "byte_plural": "{{count}} Bytes", + "giga_byte": "{{count}} GB", + "kilo_byte": "{{count}} KB", + "mega_byte": "{{count}} MB", + "tera_byte": "{{count}} TB" }, "table_columns": { - "dimensions": null, - "file_size": null, - "file_type": null, - "name": null + "dimensions": "Dimension", + "file_size": "Dateigröße", + "file_type": "Typ", + "name": "Name" }, - "title": null + "title": "Download" }, "media": { "exif": { "exposure_program": { - "action_program": null, - "aperture_priority": null, - "bulb": null, - "creative_program": null, - "landscape_mode": null, - "manual": null, - "normal_program": null, - "not_defined": null, - "portrait_mode": null, - "shutter_priority": null + "action_program": "Action (kurze Verschlusszeit)", + "aperture_priority": "Blende Priorität", + "bulb": "Glühbirne", + "creative_program": "Creative (lange Verschlusszeit)", + "landscape_mode": "Querformat", + "manual": "Manuell", + "normal_program": "Normalprogramm", + "not_defined": "Nicht definiert", + "portrait_mode": "Hochformat", + "shutter_priority": "Verschlusszeit Priorität" }, "flash": { - "auto": null, - "did_not_fire": null, - "fired": null, - "no_flash": null, - "no_flash_function": null, - "off": null, - "on": null, - "red_eye_reduction": null, - "return_detected": null, - "return_not_detected": null + "auto": "Auto", + "did_not_fire": "Nicht gezündet", + "fired": "Gezündet", + "no_flash": "Kein Blitz", + "no_flash_function": "Keine Blitz Funktionalität", + "off": "Aus", + "on": "An", + "red_eye_reduction": "Rote-Augen-Korrektur", + "return_detected": "Reflektion erkannt", + "return_not_detected": "Reflektion nicht erkannt" }, "name": { - "aperture": null, - "camera": null, - "date_shot": null, - "exposure": null, - "exposure_program": null, - "flash": null, - "focal_length": null, - "iso": null, - "lens": null, - "maker": null + "aperture": "Blende", + "camera": "Kamera", + "date_shot": "Aufnahmedatum", + "exposure": "Belichtung", + "exposure_program": "Programm", + "flash": "Blitz", + "focal_length": "Brennweite", + "iso": "ISO", + "lens": "Objektiv", + "maker": "Hersteller" } } }, "sharing": { - "add_share": null, - "copy_link": null, - "no_shares_found": null, - "public_link": null, - "table_header": null, - "title": null + "add_share": "Freigabe hinzufügen", + "copy_link": "Link kopieren", + "no_shares_found": "Keine Freigaben gefunden", + "public_link": "Öffentlicher Link", + "table_header": "Öffentliche Freigabe", + "title": "Freigabeoptionen" } }, "sidemenu": { - "albums": null, - "people": null, - "photos": null, - "places": null, - "settings": null + "albums": "Alben", + "people": "Personen", + "photos": "Fotos", + "places": "Orte", + "settings": "Einstellungen" }, "title": { - "loading_album": null, - "login": null, - "people": null, - "settings": null + "loading_album": "Lade Album", + "login": "Login", + "people": "Personen", + "settings": "Einstellungen" } }