Merge branch 'master' into stable24

old_stable24
Varun Patil 2022-11-23 10:44:38 -08:00
commit bbde9f1837
64 changed files with 597 additions and 57 deletions

View File

@ -2,7 +2,7 @@
This file is manually updated. Please file an issue if something is missing. This file is manually updated. Please file an issue if something is missing.
## v4.8.0, v3.8.0 ## v4.8.0, v3.8.0 (2022-11-22)
- **Feature**: Support for Live Photos ([#124](https://github.com/pulsejet/memories/issues/124)) - **Feature**: Support for Live Photos ([#124](https://github.com/pulsejet/memories/issues/124))
- You need to run `occ memories:index --clear` to reindex live photos - You need to run `occ memories:index --clear` to reindex live photos

3
l10n/af.js vendored
View File

@ -17,6 +17,9 @@ OC.L10N.register(
"Favorite" : "Gunsteling", "Favorite" : "Gunsteling",
"View in folder" : "Vertoon in gids", "View in folder" : "Vertoon in gids",
"Share" : "Deel", "Share" : "Deel",
"Close" : "Sluit",
"Previous" : "Vorige",
"Next" : "Volgende",
"Public link" : "Openbare skakel", "Public link" : "Openbare skakel",
"Back" : "Terug", "Back" : "Terug",
"Save" : "Bewaar", "Save" : "Bewaar",

3
l10n/af.json vendored
View File

@ -15,6 +15,9 @@
"Favorite" : "Gunsteling", "Favorite" : "Gunsteling",
"View in folder" : "Vertoon in gids", "View in folder" : "Vertoon in gids",
"Share" : "Deel", "Share" : "Deel",
"Close" : "Sluit",
"Previous" : "Vorige",
"Next" : "Volgende",
"Public link" : "Openbare skakel", "Public link" : "Openbare skakel",
"Back" : "Terug", "Back" : "Terug",
"Save" : "Bewaar", "Save" : "Bewaar",

1
l10n/an.js vendored
View File

@ -9,6 +9,7 @@ OC.L10N.register(
"Download" : "Escargar", "Download" : "Escargar",
"Favorite" : "Favorito", "Favorite" : "Favorito",
"Share" : "Compartir", "Share" : "Compartir",
"Close" : "Zarrar",
"Back" : "Ta zaga", "Back" : "Ta zaga",
"Name" : "Nombre", "Name" : "Nombre",
"Continue" : "Continar", "Continue" : "Continar",

1
l10n/an.json vendored
View File

@ -7,6 +7,7 @@
"Download" : "Escargar", "Download" : "Escargar",
"Favorite" : "Favorito", "Favorite" : "Favorito",
"Share" : "Compartir", "Share" : "Compartir",
"Close" : "Zarrar",
"Back" : "Ta zaga", "Back" : "Ta zaga",
"Name" : "Nombre", "Name" : "Nombre",
"Continue" : "Continar", "Continue" : "Continar",

3
l10n/ar.js vendored
View File

@ -17,6 +17,9 @@ OC.L10N.register(
"Favorite" : "المفضلة", "Favorite" : "المفضلة",
"View in folder" : "اعرض في المجلد", "View in folder" : "اعرض في المجلد",
"Share" : "مشاركة", "Share" : "مشاركة",
"Close" : "إغلاق",
"Previous" : "السابق",
"Next" : "التالي",
"Copy public link" : "نسخ الرابط العام", "Copy public link" : "نسخ الرابط العام",
"Back" : "العودة", "Back" : "العودة",
"Save" : "Save", "Save" : "Save",

3
l10n/ar.json vendored
View File

@ -15,6 +15,9 @@
"Favorite" : "المفضلة", "Favorite" : "المفضلة",
"View in folder" : "اعرض في المجلد", "View in folder" : "اعرض في المجلد",
"Share" : "مشاركة", "Share" : "مشاركة",
"Close" : "إغلاق",
"Previous" : "السابق",
"Next" : "التالي",
"Copy public link" : "نسخ الرابط العام", "Copy public link" : "نسخ الرابط العام",
"Back" : "العودة", "Back" : "العودة",
"Save" : "Save", "Save" : "Save",

3
l10n/ast.js vendored
View File

@ -16,6 +16,9 @@ OC.L10N.register(
"Favorite" : "Marcar como favoritu", "Favorite" : "Marcar como favoritu",
"View in folder" : "Ver na carpeta", "View in folder" : "Ver na carpeta",
"Share" : "Share", "Share" : "Share",
"Close" : "Zarrar",
"Previous" : "Anterior",
"Next" : "Siguiente",
"Back" : "Atrás", "Back" : "Atrás",
"Save" : "Guardar", "Save" : "Guardar",
"Month" : "Mes", "Month" : "Mes",

3
l10n/ast.json vendored
View File

@ -14,6 +14,9 @@
"Favorite" : "Marcar como favoritu", "Favorite" : "Marcar como favoritu",
"View in folder" : "Ver na carpeta", "View in folder" : "Ver na carpeta",
"Share" : "Share", "Share" : "Share",
"Close" : "Zarrar",
"Previous" : "Anterior",
"Next" : "Siguiente",
"Back" : "Atrás", "Back" : "Atrás",
"Save" : "Guardar", "Save" : "Guardar",
"Month" : "Mes", "Month" : "Mes",

3
l10n/az.js vendored
View File

@ -12,6 +12,9 @@ OC.L10N.register(
"Download" : "Yüklə", "Download" : "Yüklə",
"Favorite" : "İstəkli", "Favorite" : "İstəkli",
"Share" : "Paylaş", "Share" : "Paylaş",
"Close" : "Bağla",
"Previous" : "Əvvələ",
"Next" : "Növbəti",
"Save" : "Saxla", "Save" : "Saxla",
"Month" : "Ay", "Month" : "Ay",
"Day" : "Gün", "Day" : "Gün",

3
l10n/az.json vendored
View File

@ -10,6 +10,9 @@
"Download" : "Yüklə", "Download" : "Yüklə",
"Favorite" : "İstəkli", "Favorite" : "İstəkli",
"Share" : "Paylaş", "Share" : "Paylaş",
"Close" : "Bağla",
"Previous" : "Əvvələ",
"Next" : "Növbəti",
"Save" : "Saxla", "Save" : "Saxla",
"Month" : "Ay", "Month" : "Ay",
"Day" : "Gün", "Day" : "Gün",

3
l10n/bg.js vendored
View File

@ -56,6 +56,9 @@ OC.L10N.register(
"Failed to load some photos" : "Неуспешно зареждане на някои снимки", "Failed to load some photos" : "Неуспешно зареждане на някои снимки",
"Share" : "Споделяне", "Share" : "Споделяне",
"Sidebar" : "Странична лента", "Sidebar" : "Странична лента",
"Close" : "Затваряне",
"Previous" : "Предишно",
"Next" : "Следващо",
"Video sharing not supported yet" : "Видео споделянето все още не се поддържа", "Video sharing not supported yet" : "Видео споделянето все още не се поддържа",
"Cannot share this type of data" : "Този тип данни не може да се споделят", "Cannot share this type of data" : "Този тип данни не може да се споделят",
"Processing … {n}/{m}" : "Обработва се ... {n}/{m}", "Processing … {n}/{m}" : "Обработва се ... {n}/{m}",

3
l10n/bg.json vendored
View File

@ -54,6 +54,9 @@
"Failed to load some photos" : "Неуспешно зареждане на някои снимки", "Failed to load some photos" : "Неуспешно зареждане на някои снимки",
"Share" : "Споделяне", "Share" : "Споделяне",
"Sidebar" : "Странична лента", "Sidebar" : "Странична лента",
"Close" : "Затваряне",
"Previous" : "Предишно",
"Next" : "Следващо",
"Video sharing not supported yet" : "Видео споделянето все още не се поддържа", "Video sharing not supported yet" : "Видео споделянето все още не се поддържа",
"Cannot share this type of data" : "Този тип данни не може да се споделят", "Cannot share this type of data" : "Този тип данни не може да се споделят",
"Processing … {n}/{m}" : "Обработва се ... {n}/{m}", "Processing … {n}/{m}" : "Обработва се ... {n}/{m}",

3
l10n/bn_BD.js vendored
View File

@ -11,6 +11,9 @@ OC.L10N.register(
"Download" : "ডাউনলোড", "Download" : "ডাউনলোড",
"Favorite" : "প্রিয়জন", "Favorite" : "প্রিয়জন",
"Share" : "ভাগাভাগি কর", "Share" : "ভাগাভাগি কর",
"Close" : "বন্ধ",
"Previous" : "পূর্ববর্তী",
"Next" : "পরবর্তী",
"Back" : "পেছনে যাও", "Back" : "পেছনে যাও",
"Save" : "সংরক্ষণ", "Save" : "সংরক্ষণ",
"Month" : "মাস", "Month" : "মাস",

3
l10n/bn_BD.json vendored
View File

@ -9,6 +9,9 @@
"Download" : "ডাউনলোড", "Download" : "ডাউনলোড",
"Favorite" : "প্রিয়জন", "Favorite" : "প্রিয়জন",
"Share" : "ভাগাভাগি কর", "Share" : "ভাগাভাগি কর",
"Close" : "বন্ধ",
"Previous" : "পূর্ববর্তী",
"Next" : "পরবর্তী",
"Back" : "পেছনে যাও", "Back" : "পেছনে যাও",
"Save" : "সংরক্ষণ", "Save" : "সংরক্ষণ",
"Month" : "মাস", "Month" : "মাস",

2
l10n/br.js vendored
View File

@ -14,6 +14,8 @@ OC.L10N.register(
"Favorite" : "Pennrollañ", "Favorite" : "Pennrollañ",
"View in folder" : "Diskwel en teuliad", "View in folder" : "Diskwel en teuliad",
"Share" : "Rannan", "Share" : "Rannan",
"Close" : "Seriñ",
"Next" : "Da heul",
"Copy public link" : "Eilañ al liamm foran", "Copy public link" : "Eilañ al liamm foran",
"Public link" : "Liamm publik", "Public link" : "Liamm publik",
"Back" : "Distro", "Back" : "Distro",

2
l10n/br.json vendored
View File

@ -12,6 +12,8 @@
"Favorite" : "Pennrollañ", "Favorite" : "Pennrollañ",
"View in folder" : "Diskwel en teuliad", "View in folder" : "Diskwel en teuliad",
"Share" : "Rannan", "Share" : "Rannan",
"Close" : "Seriñ",
"Next" : "Da heul",
"Copy public link" : "Eilañ al liamm foran", "Copy public link" : "Eilañ al liamm foran",
"Public link" : "Liamm publik", "Public link" : "Liamm publik",
"Back" : "Distro", "Back" : "Distro",

3
l10n/bs.js vendored
View File

@ -9,6 +9,9 @@ OC.L10N.register(
"Download" : "Preuzmi", "Download" : "Preuzmi",
"Favorite" : "Favorit", "Favorite" : "Favorit",
"Share" : "Podjeli", "Share" : "Podjeli",
"Close" : "Zatvori",
"Previous" : "Prethodno",
"Next" : "Sljedeće",
"Save" : "Spremi", "Save" : "Spremi",
"Month" : "Mjesec", "Month" : "Mjesec",
"Day" : "Dan", "Day" : "Dan",

3
l10n/bs.json vendored
View File

@ -7,6 +7,9 @@
"Download" : "Preuzmi", "Download" : "Preuzmi",
"Favorite" : "Favorit", "Favorite" : "Favorit",
"Share" : "Podjeli", "Share" : "Podjeli",
"Close" : "Zatvori",
"Previous" : "Prethodno",
"Next" : "Sljedeće",
"Save" : "Spremi", "Save" : "Spremi",
"Month" : "Mjesec", "Month" : "Mjesec",
"Day" : "Dan", "Day" : "Dan",

3
l10n/ca.js vendored
View File

@ -24,6 +24,9 @@ OC.L10N.register(
"Unarchive" : "Desbloquejar", "Unarchive" : "Desbloquejar",
"View in folder" : "Visualitza-ho a la carpeta", "View in folder" : "Visualitza-ho a la carpeta",
"Share" : "Compartir", "Share" : "Compartir",
"Close" : "Tanca",
"Previous" : "Anterior",
"Next" : "Següent",
"Copy public link" : "Copia l'enllaç públic", "Copy public link" : "Copia l'enllaç públic",
"Public link" : "Enllaç públic", "Public link" : "Enllaç públic",
"Back" : "Torna", "Back" : "Torna",

3
l10n/ca.json vendored
View File

@ -22,6 +22,9 @@
"Unarchive" : "Desbloquejar", "Unarchive" : "Desbloquejar",
"View in folder" : "Visualitza-ho a la carpeta", "View in folder" : "Visualitza-ho a la carpeta",
"Share" : "Compartir", "Share" : "Compartir",
"Close" : "Tanca",
"Previous" : "Anterior",
"Next" : "Següent",
"Copy public link" : "Copia l'enllaç públic", "Copy public link" : "Copia l'enllaç públic",
"Public link" : "Enllaç públic", "Public link" : "Enllaç públic",
"Back" : "Torna", "Back" : "Torna",

1
l10n/cs.js vendored
View File

@ -60,6 +60,7 @@ OC.L10N.register(
"Failed to load some photos" : "Některé fotky se nepodařilo načíst", "Failed to load some photos" : "Některé fotky se nepodařilo načíst",
"Share" : "Sdílet", "Share" : "Sdílet",
"Sidebar" : "Postranní panel", "Sidebar" : "Postranní panel",
"Close" : "Zavřít",
"Previous" : "Předchozí", "Previous" : "Předchozí",
"Next" : "Další", "Next" : "Další",
"Video sharing not supported yet" : "Sdílení videí zatím není podporováno", "Video sharing not supported yet" : "Sdílení videí zatím není podporováno",

1
l10n/cs.json vendored
View File

@ -58,6 +58,7 @@
"Failed to load some photos" : "Některé fotky se nepodařilo načíst", "Failed to load some photos" : "Některé fotky se nepodařilo načíst",
"Share" : "Sdílet", "Share" : "Sdílet",
"Sidebar" : "Postranní panel", "Sidebar" : "Postranní panel",
"Close" : "Zavřít",
"Previous" : "Předchozí", "Previous" : "Předchozí",
"Next" : "Další", "Next" : "Další",
"Video sharing not supported yet" : "Sdílení videí zatím není podporováno", "Video sharing not supported yet" : "Sdílení videí zatím není podporováno",

1
l10n/cy_GB.js vendored
View File

@ -13,6 +13,7 @@ OC.L10N.register(
"Download" : "Llwytho i lawr", "Download" : "Llwytho i lawr",
"Favorite" : "Ffefryn", "Favorite" : "Ffefryn",
"Share" : "Rhannu", "Share" : "Rhannu",
"Close" : "Cau",
"Previous" : "Blaenorol", "Previous" : "Blaenorol",
"Next" : "Nesaf", "Next" : "Nesaf",
"Copy public link" : "Copïo dolen gyhoeddus", "Copy public link" : "Copïo dolen gyhoeddus",

1
l10n/cy_GB.json vendored
View File

@ -11,6 +11,7 @@
"Download" : "Llwytho i lawr", "Download" : "Llwytho i lawr",
"Favorite" : "Ffefryn", "Favorite" : "Ffefryn",
"Share" : "Rhannu", "Share" : "Rhannu",
"Close" : "Cau",
"Previous" : "Blaenorol", "Previous" : "Blaenorol",
"Next" : "Nesaf", "Next" : "Nesaf",
"Copy public link" : "Copïo dolen gyhoeddus", "Copy public link" : "Copïo dolen gyhoeddus",

1
l10n/da.js vendored
View File

@ -29,6 +29,7 @@ OC.L10N.register(
"Show hidden folders" : "Vis skjulte mapper", "Show hidden folders" : "Vis skjulte mapper",
"Failed to load some photos" : "Kunne ikke indlæse nogle billeder", "Failed to load some photos" : "Kunne ikke indlæse nogle billeder",
"Share" : "Del", "Share" : "Del",
"Close" : "Luk",
"Previous" : "Tidligere", "Previous" : "Tidligere",
"Next" : "Næste", "Next" : "Næste",
"Copy public link" : "Kopier offentligt link", "Copy public link" : "Kopier offentligt link",

1
l10n/da.json vendored
View File

@ -27,6 +27,7 @@
"Show hidden folders" : "Vis skjulte mapper", "Show hidden folders" : "Vis skjulte mapper",
"Failed to load some photos" : "Kunne ikke indlæse nogle billeder", "Failed to load some photos" : "Kunne ikke indlæse nogle billeder",
"Share" : "Del", "Share" : "Del",
"Close" : "Luk",
"Previous" : "Tidligere", "Previous" : "Tidligere",
"Next" : "Næste", "Next" : "Næste",
"Copy public link" : "Kopier offentligt link", "Copy public link" : "Kopier offentligt link",

3
l10n/de.js vendored
View File

@ -60,7 +60,8 @@ OC.L10N.register(
"Failed to load some photos" : "Laden einiger Fotos fehlgeschlagen", "Failed to load some photos" : "Laden einiger Fotos fehlgeschlagen",
"Share" : "Teilen", "Share" : "Teilen",
"Sidebar" : "Seitenleiste", "Sidebar" : "Seitenleiste",
"Previous" : "Benötigt keine Übersetzung. Hier wird nur die formelle Übersetzung verwendet (de_DE).", "Close" : "Schließen",
"Previous" : "Vorherige",
"Next" : "Nächste", "Next" : "Nächste",
"Video sharing not supported yet" : "Teilen von Videos wird bislang nicht unterstützt", "Video sharing not supported yet" : "Teilen von Videos wird bislang nicht unterstützt",
"Cannot share this type of data" : "Diese Art von Daten kann nicht geteilt werden", "Cannot share this type of data" : "Diese Art von Daten kann nicht geteilt werden",

3
l10n/de.json vendored
View File

@ -58,7 +58,8 @@
"Failed to load some photos" : "Laden einiger Fotos fehlgeschlagen", "Failed to load some photos" : "Laden einiger Fotos fehlgeschlagen",
"Share" : "Teilen", "Share" : "Teilen",
"Sidebar" : "Seitenleiste", "Sidebar" : "Seitenleiste",
"Previous" : "Benötigt keine Übersetzung. Hier wird nur die formelle Übersetzung verwendet (de_DE).", "Close" : "Schließen",
"Previous" : "Vorherige",
"Next" : "Nächste", "Next" : "Nächste",
"Video sharing not supported yet" : "Teilen von Videos wird bislang nicht unterstützt", "Video sharing not supported yet" : "Teilen von Videos wird bislang nicht unterstützt",
"Cannot share this type of data" : "Diese Art von Daten kann nicht geteilt werden", "Cannot share this type of data" : "Diese Art von Daten kann nicht geteilt werden",

1
l10n/de_DE.js vendored
View File

@ -60,6 +60,7 @@ OC.L10N.register(
"Failed to load some photos" : "Laden einiger Fotos fehlgeschlagen", "Failed to load some photos" : "Laden einiger Fotos fehlgeschlagen",
"Share" : "Teilen", "Share" : "Teilen",
"Sidebar" : "Seitenleiste", "Sidebar" : "Seitenleiste",
"Close" : "Schließen",
"Previous" : "Zurück", "Previous" : "Zurück",
"Next" : "Nächste", "Next" : "Nächste",
"Video sharing not supported yet" : "Teilen von Videos wird bislang nicht unterstützt", "Video sharing not supported yet" : "Teilen von Videos wird bislang nicht unterstützt",

1
l10n/de_DE.json vendored
View File

@ -58,6 +58,7 @@
"Failed to load some photos" : "Laden einiger Fotos fehlgeschlagen", "Failed to load some photos" : "Laden einiger Fotos fehlgeschlagen",
"Share" : "Teilen", "Share" : "Teilen",
"Sidebar" : "Seitenleiste", "Sidebar" : "Seitenleiste",
"Close" : "Schließen",
"Previous" : "Zurück", "Previous" : "Zurück",
"Next" : "Nächste", "Next" : "Nächste",
"Video sharing not supported yet" : "Teilen von Videos wird bislang nicht unterstützt", "Video sharing not supported yet" : "Teilen von Videos wird bislang nicht unterstützt",

15
l10n/el.js vendored
View File

@ -21,13 +21,21 @@ OC.L10N.register(
"Favorite" : "Αγαπημένο", "Favorite" : "Αγαπημένο",
"Unarchive" : "Αναίρεση αρχειοθέτησης", "Unarchive" : "Αναίρεση αρχειοθέτησης",
"View in folder" : "Προβολή στον φάκελο", "View in folder" : "Προβολή στον φάκελο",
"Add to album" : "Προσθήκη στο άλμπουμ",
"Share" : "Διαμοιρασμός", "Share" : "Διαμοιρασμός",
"Close" : "Κλείσιμο",
"Previous" : "Προηγούμενο", "Previous" : "Προηγούμενο",
"Next" : "Επόμενο", "Next" : "Επόμενο",
"Copy public link" : "Αντιγραφή δημόσιου συνδέσμου", "Copy public link" : "Αντιγραφή δημόσιου συνδέσμου",
"Public link" : "Δημόσιος σύνδεσμος", "Public link" : "Δημόσιος σύνδεσμος",
"New album" : "Νέο άλμπουμ",
"Create new album" : "Δημιουργία νέου άλμπουμ. ",
"Name of the album" : "Όνομα του άλμπουμ",
"Location of the album" : "Τοποθεσία του άλμπουμ",
"Back" : "Πίσω", "Back" : "Πίσω",
"Save" : "Αποθήκευση", "Save" : "Αποθήκευση",
"Create album" : "Δημιουργία άλμπουμ",
"Create a new album." : "Δημιουργήστε ένα νέο άλμπουμ.",
"Year" : "Έτος", "Year" : "Έτος",
"Month" : "Μήνας", "Month" : "Μήνας",
"Day" : "Ημέρα", "Day" : "Ημέρα",
@ -35,9 +43,11 @@ OC.L10N.register(
"Hour" : "Ώρα", "Hour" : "Ώρα",
"Minute" : "Λεπτά", "Minute" : "Λεπτά",
"Name" : "Όνομα", "Name" : "Όνομα",
"Rename person" : "Μετονομασία ατόμου",
"Update" : "Ενημέρωση", "Update" : "Ενημέρωση",
"Refresh" : "Ανανέωση", "Refresh" : "Ανανέωση",
"Remove" : "Αφαίρεση", "Remove" : "Αφαίρεση",
"Delete album" : "Διαγραφή άλμπουμ",
"Share folder" : "Διαμοιρασμός φακέλου", "Share folder" : "Διαμοιρασμός φακέλου",
"Reset" : "Επαναφορά", "Reset" : "Επαναφορά",
"Continue" : "Συνεχίστε", "Continue" : "Συνεχίστε",
@ -54,6 +64,9 @@ OC.L10N.register(
"Extension" : "Επέκταση", "Extension" : "Επέκταση",
"Name is required." : "Απαιτείται όνομα.", "Name is required." : "Απαιτείται όνομα.",
"Quality" : "Ποιότητα", "Quality" : "Ποιότητα",
"Auto" : "Αυτόματα" "Auto" : "Αυτόματα",
"Failed to create {albumName}." : "Απέτυχε η δημιουργία {albumName}",
"Failed to rename {currentAlbumName} to {newAlbumName}." : "Απέτυχε η μετονομασία του {currentAlbumName} σε {newAlbumName}.",
"Failed to delete {fileName}." : "Απέτυχε η διαγραφή {fileName}."
}, },
"nplurals=2; plural=(n != 1);"); "nplurals=2; plural=(n != 1);");

15
l10n/el.json vendored
View File

@ -19,13 +19,21 @@
"Favorite" : "Αγαπημένο", "Favorite" : "Αγαπημένο",
"Unarchive" : "Αναίρεση αρχειοθέτησης", "Unarchive" : "Αναίρεση αρχειοθέτησης",
"View in folder" : "Προβολή στον φάκελο", "View in folder" : "Προβολή στον φάκελο",
"Add to album" : "Προσθήκη στο άλμπουμ",
"Share" : "Διαμοιρασμός", "Share" : "Διαμοιρασμός",
"Close" : "Κλείσιμο",
"Previous" : "Προηγούμενο", "Previous" : "Προηγούμενο",
"Next" : "Επόμενο", "Next" : "Επόμενο",
"Copy public link" : "Αντιγραφή δημόσιου συνδέσμου", "Copy public link" : "Αντιγραφή δημόσιου συνδέσμου",
"Public link" : "Δημόσιος σύνδεσμος", "Public link" : "Δημόσιος σύνδεσμος",
"New album" : "Νέο άλμπουμ",
"Create new album" : "Δημιουργία νέου άλμπουμ. ",
"Name of the album" : "Όνομα του άλμπουμ",
"Location of the album" : "Τοποθεσία του άλμπουμ",
"Back" : "Πίσω", "Back" : "Πίσω",
"Save" : "Αποθήκευση", "Save" : "Αποθήκευση",
"Create album" : "Δημιουργία άλμπουμ",
"Create a new album." : "Δημιουργήστε ένα νέο άλμπουμ.",
"Year" : "Έτος", "Year" : "Έτος",
"Month" : "Μήνας", "Month" : "Μήνας",
"Day" : "Ημέρα", "Day" : "Ημέρα",
@ -33,9 +41,11 @@
"Hour" : "Ώρα", "Hour" : "Ώρα",
"Minute" : "Λεπτά", "Minute" : "Λεπτά",
"Name" : "Όνομα", "Name" : "Όνομα",
"Rename person" : "Μετονομασία ατόμου",
"Update" : "Ενημέρωση", "Update" : "Ενημέρωση",
"Refresh" : "Ανανέωση", "Refresh" : "Ανανέωση",
"Remove" : "Αφαίρεση", "Remove" : "Αφαίρεση",
"Delete album" : "Διαγραφή άλμπουμ",
"Share folder" : "Διαμοιρασμός φακέλου", "Share folder" : "Διαμοιρασμός φακέλου",
"Reset" : "Επαναφορά", "Reset" : "Επαναφορά",
"Continue" : "Συνεχίστε", "Continue" : "Συνεχίστε",
@ -52,6 +62,9 @@
"Extension" : "Επέκταση", "Extension" : "Επέκταση",
"Name is required." : "Απαιτείται όνομα.", "Name is required." : "Απαιτείται όνομα.",
"Quality" : "Ποιότητα", "Quality" : "Ποιότητα",
"Auto" : "Αυτόματα" "Auto" : "Αυτόματα",
"Failed to create {albumName}." : "Απέτυχε η δημιουργία {albumName}",
"Failed to rename {currentAlbumName} to {newAlbumName}." : "Απέτυχε η μετονομασία του {currentAlbumName} σε {newAlbumName}.",
"Failed to delete {fileName}." : "Απέτυχε η διαγραφή {fileName}."
},"pluralForm" :"nplurals=2; plural=(n != 1);" },"pluralForm" :"nplurals=2; plural=(n != 1);"
} }

201
l10n/en_GB.js vendored
View File

@ -1,45 +1,244 @@
OC.L10N.register( OC.L10N.register(
"memories", "memories",
{ {
"Memories" : "Memories",
"Yet another photo management app" : "Yet another photo management app",
"# Memories\n\nMemories is a *batteries-included* photo management solution for Nextcloud with advanced features including:\n\n- **📸 Timeline**: Sort photos and videos by date taken, parsed from Exif data.\n- **⏪ Rewind**: Jump to any time in the past instantly and relive your memories.\n- **🤖 AI Tagging**: Group photos by people and objects using AI, powered by [recognize](https://github.com/nextcloud/recognize).\n- **🖼️ Albums**: Create albums to group photos and videos together. Then share these albums with others.\n- **🫱🏻‍🫲🏻 External Sharing**: Share photos and videos with people outside of your Nextcloud instance.\n- **📱 Mobile Support**: Works on devices of any shape and size through the web app.\n- **✏️ Edit Metadata**: Edit dates on photos quickly and easily.\n- **📦 Archive**: Store photos you don't want to see in your timeline in a separate folder.\n- **📹 Video Transcoding**: Memories transcodes videos and uses HLS for maximal performance.\n- **⚡️ Performance**: In general, Memories is extremely fast.\n\n## 🌐 Online Demo\n\n- To get an idea of what memories looks and feels like, check out the [public demo](https://memories-demo.radialapps.com/apps/memories/).\n- The demo is read-only and may be slow (free tier VM from [Oracle Cloud](https://www.oracle.com/cloud/free/)).\n- Photo credits go to [Unsplash](https://unsplash.com/) (for individual credits, refer to each folder).\n\n## 🚀 Installation\n\n1. Install the app from the Nextcloud app store.\n1. Perform the recommended [configuration steps](https://github.com/pulsejet/memories/wiki/Extra-Configuration).\n1. Run `php ./occ memories:index` to generate metadata indices for existing photos.\n1. Open the 📷 Memories app in Nextcloud and set the directory containing your photos." : "# Memories\n\nMemories is a *batteries-included* photo management solution for Nextcloud with advanced features including:\n\n- **📸 Timeline**: Sort photos and videos by date taken, parsed from Exif data.\n- **⏪ Rewind**: Jump to any time in the past instantly and relive your memories.\n- **🤖 AI Tagging**: Group photos by people and objects using AI, powered by [recognize](https://github.com/nextcloud/recognize).\n- **🖼️ Albums**: Create albums to group photos and videos together. Then share these albums with others.\n- **🫱🏻‍🫲🏻 External Sharing**: Share photos and videos with people outside of your Nextcloud instance.\n- **📱 Mobile Support**: Works on devices of any shape and size through the web app.\n- **✏️ Edit Metadata**: Edit dates on photos quickly and easily.\n- **📦 Archive**: Store photos you don't want to see in your timeline in a separate folder.\n- **📹 Video Transcoding**: Memories transcodes videos and uses HLS for maximal performance.\n- **⚡️ Performance**: In general, Memories is extremely fast.\n\n## 🌐 Online Demo\n\n- To get an idea of what memories looks and feels like, check out the [public demo](https://memories-demo.radialapps.com/apps/memories/).\n- The demo is read-only and may be slow (free tier VM from [Oracle Cloud](https://www.oracle.com/cloud/free/)).\n- Photo credits go to [Unsplash](https://unsplash.com/) (for individual credits, refer to each folder).\n\n## 🚀 Installation\n\n1. Install the app from the Nextcloud app store.\n1. Perform the recommended [configuration steps](https://github.com/pulsejet/memories/wiki/Extra-Configuration).\n1. Run `php ./occ memories:index` to generate metadata indices for existing photos.\n1. Open the 📷 Memories app in Nextcloud and set the directory containing your photos.",
"Settings" : "Settings", "Settings" : "Settings",
"Timeline" : "Timeline",
"Folders" : "Folders", "Folders" : "Folders",
"Favorites" : "Favourites", "Favorites" : "Favourites",
"Videos" : "Videos", "Videos" : "Videos",
"Albums" : "Albums",
"People" : "People",
"Archive" : "Archive", "Archive" : "Archive",
"On this day" : "On this day",
"Tags" : "Tags", "Tags" : "Tags",
"Maps" : "Maps", "Maps" : "Maps",
"EXIF" : "EXIF",
"A better photos experience awaits you" : "A better photos experience awaits you",
"Choose the root folder of your timeline to begin" : "Choose the root folder of your timeline to begin",
"If you just installed Memories, run:" : "If you just installed Memories, run:",
"Continue to Memories" : "Continue to Memories",
"Choose again" : "Choose again",
"Click here to start" : "Click here to start",
"You can always change this later in settings" : "You can always change this later in settings",
"Choose the root of your timeline" : "Choose the root of your timeline",
"The selected folder does not seem to be valid. Try again." : "The selected folder does not seem to be valid. Try again.",
"Found {total} photos in {path}" : "Found {total} photos in {path}",
"Failed to get Exif data. Metadata may be lost!" : "Failed to get Exif data. Metadata may be lost!",
"No Exif data found! Continue?" : "No Exif data found! Continue?",
"Image saved successfully" : "Image saved successfully",
"Error saving image" : "Error saving image",
"Unsaved changes" : "Unsaved changes", "Unsaved changes" : "Unsaved changes",
"Drop changes" : "Drop changes",
"Edit" : "Edit", "Edit" : "Edit",
"Loading …" : "Loading …", "Loading …" : "Loading …",
"Cancel" : "Cancel", "Cancel" : "Cancel",
"Delete" : "Delete", "Delete" : "Delete",
"Remove from album" : "Remove from album",
"Download" : "Download", "Download" : "Download",
"Favorite" : "Favourite", "Favorite" : "Favourite",
"Unarchive" : "Unarchive", "Unarchive" : "Unarchive",
"Edit Date/Time" : "Edit Date/Time",
"View in folder" : "View in folder", "View in folder" : "View in folder",
"Add to album" : "Add to album",
"Move to another person" : "Move to another person",
"Remove from person" : "Remove from person",
"You are about to download a large number of files. Are you sure?" : "You are about to download a large number of files. Are you sure?",
"You are about to delete a large number of files. Are you sure?" : "You are about to delete a large number of files. Are you sure?",
"You are about to touch a large number of files. Are you sure?" : "You are about to touch a large number of files. Are you sure?",
"Could not remove photos from album" : "Could not remove photos from album",
"_{n} selected_::_{n} selected_" : ["{n} selected","{n} selected"],
"Timeline Path" : "Timeline Path",
"Folders Path" : "Folders Path",
"Show hidden folders" : "Show hidden folders",
"Square grid mode" : "Square grid mode",
"Choose Timeline Paths" : "Choose Timeline Paths",
"Choose the root for the folders view" : "Choose the root for the folders view",
"Your Timeline" : "Your Timeline",
"Failed to load some photos" : "Failed to load some photos",
"Share" : "Share", "Share" : "Share",
"Sidebar" : "Sidebar",
"Close" : "Close",
"Previous" : "Previous", "Previous" : "Previous",
"Next" : "Next", "Next" : "Next",
"Video sharing not supported yet" : "Video sharing not supported yet",
"Cannot share this type of data" : "Cannot share this type of data",
"Processing … {n}/{m}" : "Processing … {n}/{m}",
"{n} photos added to album" : "{n} photos added to album",
"Search for collaborators" : "Search for collaborators",
"Search people or groups" : "Search people or groups",
"Add {collaboratorLabel} to the collaborators list" : "Add {collaboratorLabel} to the collaborators list",
"No collaborators available" : "No collaborators available",
"Remove {collaboratorLabel} from the collaborators list" : "Remove {collaboratorLabel} from the collaborators list",
"Copy the public link" : "Copy the public link",
"Delete the public link" : "Delete the public link",
"Add people or groups who can edit your album" : "Add people or groups who can edit your album",
"Public link copied!" : "Public link copied!",
"Copy public link" : "Copy public link",
"Share via public link" : "Share via public link",
"Failed to fetch collaborators list." : "Failed to fetch collaborators list.",
"Public link" : "Public link", "Public link" : "Public link",
"Failed to fetch album." : "Failed to fetch album.",
"Failed to update album." : "Failed to update album.",
"New album" : "New album",
"Create new album" : "Create new album",
"Edit album details" : "Edit album details",
"Could not load the selected album" : "Could not load the selected album",
"Remove Album" : "Remove Album",
"Failed to delete {name}." : "Failed to delete {name}.",
"Name of the album" : "Name of the album",
"Location of the album" : "Location of the album",
"Go back to the previous view." : "Go back to the previous view.",
"Go to the add collaborators view." : "Go to the add collaborators view.",
"Back to the new album form." : "Back to the new album form.",
"Back" : "Back", "Back" : "Back",
"Add collaborators" : "Add collaborators",
"Save" : "Save", "Save" : "Save",
"Create album" : "Create album",
"Add selection to album {albumName}" : "Add selection to album {albumName}",
"Create a new album." : "Create a new album.",
"_Share with %n user_::_Share with %n users_" : ["Share with %n user","Share with %n users"],
"_%n item_::_%n items_" : ["%n item","%n items"],
"Save collaborators for this album." : "Save collaborators for this album.",
"Share Album" : "Share Album",
"Year" : "Year",
"Month" : "Month", "Month" : "Month",
"Day" : "Day", "Day" : "Day",
"Time" : "Time", "Time" : "Time",
"Hour" : "Hour", "Hour" : "Hour",
"Minute" : "Minute",
"Update Exif" : "Update Exif",
"Newest" : "Newest",
"Oldest" : "Oldest",
"This feature modifies files in your storage to update Exif data." : "This feature modifies files in your storage to update Exif data.",
"Exercise caution and make sure you have backups." : "Exercise caution and make sure you have backups.",
"Loading data … {n}/{m}" : "Loading data … {n}/{m}",
"Remove person" : "Remove person",
"Are you sure you want to remove {name}?" : "Are you sure you want to remove {name}?",
"Name" : "Surname", "Name" : "Surname",
"Rename person" : "Rename person",
"Update" : "Update", "Update" : "Update",
"Failed to rename {oldName} to {name}." : "Failed to rename {oldName} to {name}.",
"Merge {name} with person" : "Merge {name} with person",
"Are you sure you want to merge {name} with {newName}?" : "Are you sure you want to merge {name} with {newName}?",
"Too many failures, aborting" : "Too many failures, aborting",
"Error while moving {basename}" : "Error while moving {basename}",
"Failed to move {name}." : "Failed to move {name}.",
"Move selected photos to person" : "Move selected photos to person",
"Are you sure you want to move the selected photos from {name} to {newName}?" : "Are you sure you want to move the selected photos from {name} to {newName}?",
"Share Folder" : "Share Folder",
"You cannot share the root folder" : "You cannot share the root folder",
"Use the sidebar to share this folder." : "Use the sidebar to share this folder.",
"If you create a public link share, click on refresh and a corresponding link to Memories will be shown below." : "If you create a public link share, click on refresh and a corresponding link to Memories will be shown below.",
"Refresh" : "Refresh", "Refresh" : "Refresh",
"Remove" : "Remove", "Remove" : "Remove",
"Add Path" : "Add Path",
"Add a root to your timeline" : "Add a root to your timeline",
"Share album" : "Share album",
"Delete album" : "Delete album",
"Merge with different person" : "Merge with different person",
"Mark person in preview" : "Mark person in preview",
"Share folder" : "Share folder",
"Move left" : "Move left",
"Move right" : "Move right",
"Save as" : "Save as",
"Reset" : "Reset", "Reset" : "Reset",
"All changes will be lost." : "All changes will be lost.",
"Are you sure you want to continue?" : "Are you sure you want to continue?",
"Continue" : "Continue", "Continue" : "Continue",
"Undo" : "Undo", "Undo" : "Undo",
"Redo" : "Redo",
"Show original image" : "Show original image",
"Zoom in" : "Zoom in",
"Zoom out" : "Zoom out",
"Toggle zoom menu" : "Toggle zoom menu",
"Adjust" : "Adjust",
"Fine-tune" : "Fine-tune",
"Filters" : "Filters",
"Watermark" : "Watermark",
"Draw" : "Draw",
"Resize" : "Resize",
"Invalid image." : "Invalid image.",
"Error while uploading the image." : "Error while uploading the image.",
"are not images" : "are not images",
"is not an image" : "is not an image",
"to be uploaded" : "to be uploaded",
"Crop" : "Crop",
"Original" : "Original", "Original" : "Original",
"Custom" : "Custom", "Custom" : "Custom",
"Square" : "Square",
"Landscape" : "Landscape",
"Portrait" : "Portrait",
"Ellipse" : "Ellipse",
"Classic TV" : "Classic TV",
"CinemaScope" : "CinemaScope",
"Arrow" : "Arrow",
"Blur" : "Blur",
"Brightness" : "Brightness",
"Contrast" : "Contrast",
"Un-flip X" : "Un-flip X",
"Flip X" : "Flip X",
"Un-flip Y" : "Un-flip Y",
"Flip Y" : "Flip Y",
"HSV" : "HSV",
"Hue" : "Hue",
"Saturation" : "Saturation",
"Value" : "Value", "Value" : "Value",
"Image" : "Image", "Image" : "Image",
"Importing …" : "Importing …",
"+ Add image" : "+ Add image",
"Line" : "Line",
"Pen" : "Pen",
"Polygon" : "Polygon",
"Sides" : "Sides",
"Rectangle" : "Rectangle",
"Corner Radius" : "Corner Radius",
"Width in pixels" : "Width in pixels",
"Height in pixels" : "Height in pixels",
"Toggle ratio lock" : "Toggle ratio lock",
"Reset to original image size" : "Reset to original image size",
"Rotate" : "Rotate",
"Text" : "Text", "Text" : "Text",
"Text spacing" : "Text spacing",
"Text alignment" : "Text alignment",
"Font family" : "Font family",
"Size" : "Size", "Size" : "Size",
"Position" : "Position" "Letter spacing" : "Letter spacing",
"Line height" : "Line height",
"Warmth" : "Warmth",
"+ Add watermark" : "+ Add watermark",
"Choose watermark type" : "Choose watermark type",
"Upload watermark" : "Upload watermark",
"Add as text" : "Add as text",
"Padding" : "Padding",
"Shadow" : "Shadow",
"Horizontal" : "Horizontal",
"Vertical" : "Vertical",
"Opacity" : "Opacity",
"Position" : "Position",
"Stroke" : "Stroke",
"Save image as" : "Save image as",
"Extension" : "Extension",
"Name is required." : "Name is required.",
"Quality" : "Quality",
"Saved image size (width x height)" : "Saved image size (width x height)",
"Note that the selected crop area is lower than the applied resize which might cause quality decrease" : "Note that the selected crop area is lower than the applied resize which might cause quality decrease",
"Actual size (100%)" : "Actual size (100%)",
"Fit size" : "Fit size",
"Transcoding failed." : "Transcoding failed.",
"Auto" : "Auto",
"Shared Folder" : "Shared Folder",
"Failed to create {albumName}." : "Failed to create {albumName}.",
"Failed to rename {currentAlbumName} to {newAlbumName}." : "Failed to rename {currentAlbumName} to {newAlbumName}.",
"General Failure" : "General Failure",
"Error: {msg}" : "Error: {msg}",
"Failed to delete files." : "Failed to delete files.",
"Failed to delete {fileName}." : "Failed to delete {fileName}.",
"Failed to download some files." : "Failed to download some files.",
"Failed to favorite files." : "Failed to favorite files.",
"Failed to favorite some files." : "Failed to favorite some files.",
"Failed to favorite {fileName}." : "Failed to favorite {fileName}."
}, },
"nplurals=2; plural=(n != 1);"); "nplurals=2; plural=(n != 1);");

201
l10n/en_GB.json vendored
View File

@ -1,43 +1,242 @@
{ "translations": { { "translations": {
"Memories" : "Memories",
"Yet another photo management app" : "Yet another photo management app",
"# Memories\n\nMemories is a *batteries-included* photo management solution for Nextcloud with advanced features including:\n\n- **📸 Timeline**: Sort photos and videos by date taken, parsed from Exif data.\n- **⏪ Rewind**: Jump to any time in the past instantly and relive your memories.\n- **🤖 AI Tagging**: Group photos by people and objects using AI, powered by [recognize](https://github.com/nextcloud/recognize).\n- **🖼️ Albums**: Create albums to group photos and videos together. Then share these albums with others.\n- **🫱🏻‍🫲🏻 External Sharing**: Share photos and videos with people outside of your Nextcloud instance.\n- **📱 Mobile Support**: Works on devices of any shape and size through the web app.\n- **✏️ Edit Metadata**: Edit dates on photos quickly and easily.\n- **📦 Archive**: Store photos you don't want to see in your timeline in a separate folder.\n- **📹 Video Transcoding**: Memories transcodes videos and uses HLS for maximal performance.\n- **⚡️ Performance**: In general, Memories is extremely fast.\n\n## 🌐 Online Demo\n\n- To get an idea of what memories looks and feels like, check out the [public demo](https://memories-demo.radialapps.com/apps/memories/).\n- The demo is read-only and may be slow (free tier VM from [Oracle Cloud](https://www.oracle.com/cloud/free/)).\n- Photo credits go to [Unsplash](https://unsplash.com/) (for individual credits, refer to each folder).\n\n## 🚀 Installation\n\n1. Install the app from the Nextcloud app store.\n1. Perform the recommended [configuration steps](https://github.com/pulsejet/memories/wiki/Extra-Configuration).\n1. Run `php ./occ memories:index` to generate metadata indices for existing photos.\n1. Open the 📷 Memories app in Nextcloud and set the directory containing your photos." : "# Memories\n\nMemories is a *batteries-included* photo management solution for Nextcloud with advanced features including:\n\n- **📸 Timeline**: Sort photos and videos by date taken, parsed from Exif data.\n- **⏪ Rewind**: Jump to any time in the past instantly and relive your memories.\n- **🤖 AI Tagging**: Group photos by people and objects using AI, powered by [recognize](https://github.com/nextcloud/recognize).\n- **🖼️ Albums**: Create albums to group photos and videos together. Then share these albums with others.\n- **🫱🏻‍🫲🏻 External Sharing**: Share photos and videos with people outside of your Nextcloud instance.\n- **📱 Mobile Support**: Works on devices of any shape and size through the web app.\n- **✏️ Edit Metadata**: Edit dates on photos quickly and easily.\n- **📦 Archive**: Store photos you don't want to see in your timeline in a separate folder.\n- **📹 Video Transcoding**: Memories transcodes videos and uses HLS for maximal performance.\n- **⚡️ Performance**: In general, Memories is extremely fast.\n\n## 🌐 Online Demo\n\n- To get an idea of what memories looks and feels like, check out the [public demo](https://memories-demo.radialapps.com/apps/memories/).\n- The demo is read-only and may be slow (free tier VM from [Oracle Cloud](https://www.oracle.com/cloud/free/)).\n- Photo credits go to [Unsplash](https://unsplash.com/) (for individual credits, refer to each folder).\n\n## 🚀 Installation\n\n1. Install the app from the Nextcloud app store.\n1. Perform the recommended [configuration steps](https://github.com/pulsejet/memories/wiki/Extra-Configuration).\n1. Run `php ./occ memories:index` to generate metadata indices for existing photos.\n1. Open the 📷 Memories app in Nextcloud and set the directory containing your photos.",
"Settings" : "Settings", "Settings" : "Settings",
"Timeline" : "Timeline",
"Folders" : "Folders", "Folders" : "Folders",
"Favorites" : "Favourites", "Favorites" : "Favourites",
"Videos" : "Videos", "Videos" : "Videos",
"Albums" : "Albums",
"People" : "People",
"Archive" : "Archive", "Archive" : "Archive",
"On this day" : "On this day",
"Tags" : "Tags", "Tags" : "Tags",
"Maps" : "Maps", "Maps" : "Maps",
"EXIF" : "EXIF",
"A better photos experience awaits you" : "A better photos experience awaits you",
"Choose the root folder of your timeline to begin" : "Choose the root folder of your timeline to begin",
"If you just installed Memories, run:" : "If you just installed Memories, run:",
"Continue to Memories" : "Continue to Memories",
"Choose again" : "Choose again",
"Click here to start" : "Click here to start",
"You can always change this later in settings" : "You can always change this later in settings",
"Choose the root of your timeline" : "Choose the root of your timeline",
"The selected folder does not seem to be valid. Try again." : "The selected folder does not seem to be valid. Try again.",
"Found {total} photos in {path}" : "Found {total} photos in {path}",
"Failed to get Exif data. Metadata may be lost!" : "Failed to get Exif data. Metadata may be lost!",
"No Exif data found! Continue?" : "No Exif data found! Continue?",
"Image saved successfully" : "Image saved successfully",
"Error saving image" : "Error saving image",
"Unsaved changes" : "Unsaved changes", "Unsaved changes" : "Unsaved changes",
"Drop changes" : "Drop changes",
"Edit" : "Edit", "Edit" : "Edit",
"Loading …" : "Loading …", "Loading …" : "Loading …",
"Cancel" : "Cancel", "Cancel" : "Cancel",
"Delete" : "Delete", "Delete" : "Delete",
"Remove from album" : "Remove from album",
"Download" : "Download", "Download" : "Download",
"Favorite" : "Favourite", "Favorite" : "Favourite",
"Unarchive" : "Unarchive", "Unarchive" : "Unarchive",
"Edit Date/Time" : "Edit Date/Time",
"View in folder" : "View in folder", "View in folder" : "View in folder",
"Add to album" : "Add to album",
"Move to another person" : "Move to another person",
"Remove from person" : "Remove from person",
"You are about to download a large number of files. Are you sure?" : "You are about to download a large number of files. Are you sure?",
"You are about to delete a large number of files. Are you sure?" : "You are about to delete a large number of files. Are you sure?",
"You are about to touch a large number of files. Are you sure?" : "You are about to touch a large number of files. Are you sure?",
"Could not remove photos from album" : "Could not remove photos from album",
"_{n} selected_::_{n} selected_" : ["{n} selected","{n} selected"],
"Timeline Path" : "Timeline Path",
"Folders Path" : "Folders Path",
"Show hidden folders" : "Show hidden folders",
"Square grid mode" : "Square grid mode",
"Choose Timeline Paths" : "Choose Timeline Paths",
"Choose the root for the folders view" : "Choose the root for the folders view",
"Your Timeline" : "Your Timeline",
"Failed to load some photos" : "Failed to load some photos",
"Share" : "Share", "Share" : "Share",
"Sidebar" : "Sidebar",
"Close" : "Close",
"Previous" : "Previous", "Previous" : "Previous",
"Next" : "Next", "Next" : "Next",
"Video sharing not supported yet" : "Video sharing not supported yet",
"Cannot share this type of data" : "Cannot share this type of data",
"Processing … {n}/{m}" : "Processing … {n}/{m}",
"{n} photos added to album" : "{n} photos added to album",
"Search for collaborators" : "Search for collaborators",
"Search people or groups" : "Search people or groups",
"Add {collaboratorLabel} to the collaborators list" : "Add {collaboratorLabel} to the collaborators list",
"No collaborators available" : "No collaborators available",
"Remove {collaboratorLabel} from the collaborators list" : "Remove {collaboratorLabel} from the collaborators list",
"Copy the public link" : "Copy the public link",
"Delete the public link" : "Delete the public link",
"Add people or groups who can edit your album" : "Add people or groups who can edit your album",
"Public link copied!" : "Public link copied!",
"Copy public link" : "Copy public link",
"Share via public link" : "Share via public link",
"Failed to fetch collaborators list." : "Failed to fetch collaborators list.",
"Public link" : "Public link", "Public link" : "Public link",
"Failed to fetch album." : "Failed to fetch album.",
"Failed to update album." : "Failed to update album.",
"New album" : "New album",
"Create new album" : "Create new album",
"Edit album details" : "Edit album details",
"Could not load the selected album" : "Could not load the selected album",
"Remove Album" : "Remove Album",
"Failed to delete {name}." : "Failed to delete {name}.",
"Name of the album" : "Name of the album",
"Location of the album" : "Location of the album",
"Go back to the previous view." : "Go back to the previous view.",
"Go to the add collaborators view." : "Go to the add collaborators view.",
"Back to the new album form." : "Back to the new album form.",
"Back" : "Back", "Back" : "Back",
"Add collaborators" : "Add collaborators",
"Save" : "Save", "Save" : "Save",
"Create album" : "Create album",
"Add selection to album {albumName}" : "Add selection to album {albumName}",
"Create a new album." : "Create a new album.",
"_Share with %n user_::_Share with %n users_" : ["Share with %n user","Share with %n users"],
"_%n item_::_%n items_" : ["%n item","%n items"],
"Save collaborators for this album." : "Save collaborators for this album.",
"Share Album" : "Share Album",
"Year" : "Year",
"Month" : "Month", "Month" : "Month",
"Day" : "Day", "Day" : "Day",
"Time" : "Time", "Time" : "Time",
"Hour" : "Hour", "Hour" : "Hour",
"Minute" : "Minute",
"Update Exif" : "Update Exif",
"Newest" : "Newest",
"Oldest" : "Oldest",
"This feature modifies files in your storage to update Exif data." : "This feature modifies files in your storage to update Exif data.",
"Exercise caution and make sure you have backups." : "Exercise caution and make sure you have backups.",
"Loading data … {n}/{m}" : "Loading data … {n}/{m}",
"Remove person" : "Remove person",
"Are you sure you want to remove {name}?" : "Are you sure you want to remove {name}?",
"Name" : "Surname", "Name" : "Surname",
"Rename person" : "Rename person",
"Update" : "Update", "Update" : "Update",
"Failed to rename {oldName} to {name}." : "Failed to rename {oldName} to {name}.",
"Merge {name} with person" : "Merge {name} with person",
"Are you sure you want to merge {name} with {newName}?" : "Are you sure you want to merge {name} with {newName}?",
"Too many failures, aborting" : "Too many failures, aborting",
"Error while moving {basename}" : "Error while moving {basename}",
"Failed to move {name}." : "Failed to move {name}.",
"Move selected photos to person" : "Move selected photos to person",
"Are you sure you want to move the selected photos from {name} to {newName}?" : "Are you sure you want to move the selected photos from {name} to {newName}?",
"Share Folder" : "Share Folder",
"You cannot share the root folder" : "You cannot share the root folder",
"Use the sidebar to share this folder." : "Use the sidebar to share this folder.",
"If you create a public link share, click on refresh and a corresponding link to Memories will be shown below." : "If you create a public link share, click on refresh and a corresponding link to Memories will be shown below.",
"Refresh" : "Refresh", "Refresh" : "Refresh",
"Remove" : "Remove", "Remove" : "Remove",
"Add Path" : "Add Path",
"Add a root to your timeline" : "Add a root to your timeline",
"Share album" : "Share album",
"Delete album" : "Delete album",
"Merge with different person" : "Merge with different person",
"Mark person in preview" : "Mark person in preview",
"Share folder" : "Share folder",
"Move left" : "Move left",
"Move right" : "Move right",
"Save as" : "Save as",
"Reset" : "Reset", "Reset" : "Reset",
"All changes will be lost." : "All changes will be lost.",
"Are you sure you want to continue?" : "Are you sure you want to continue?",
"Continue" : "Continue", "Continue" : "Continue",
"Undo" : "Undo", "Undo" : "Undo",
"Redo" : "Redo",
"Show original image" : "Show original image",
"Zoom in" : "Zoom in",
"Zoom out" : "Zoom out",
"Toggle zoom menu" : "Toggle zoom menu",
"Adjust" : "Adjust",
"Fine-tune" : "Fine-tune",
"Filters" : "Filters",
"Watermark" : "Watermark",
"Draw" : "Draw",
"Resize" : "Resize",
"Invalid image." : "Invalid image.",
"Error while uploading the image." : "Error while uploading the image.",
"are not images" : "are not images",
"is not an image" : "is not an image",
"to be uploaded" : "to be uploaded",
"Crop" : "Crop",
"Original" : "Original", "Original" : "Original",
"Custom" : "Custom", "Custom" : "Custom",
"Square" : "Square",
"Landscape" : "Landscape",
"Portrait" : "Portrait",
"Ellipse" : "Ellipse",
"Classic TV" : "Classic TV",
"CinemaScope" : "CinemaScope",
"Arrow" : "Arrow",
"Blur" : "Blur",
"Brightness" : "Brightness",
"Contrast" : "Contrast",
"Un-flip X" : "Un-flip X",
"Flip X" : "Flip X",
"Un-flip Y" : "Un-flip Y",
"Flip Y" : "Flip Y",
"HSV" : "HSV",
"Hue" : "Hue",
"Saturation" : "Saturation",
"Value" : "Value", "Value" : "Value",
"Image" : "Image", "Image" : "Image",
"Importing …" : "Importing …",
"+ Add image" : "+ Add image",
"Line" : "Line",
"Pen" : "Pen",
"Polygon" : "Polygon",
"Sides" : "Sides",
"Rectangle" : "Rectangle",
"Corner Radius" : "Corner Radius",
"Width in pixels" : "Width in pixels",
"Height in pixels" : "Height in pixels",
"Toggle ratio lock" : "Toggle ratio lock",
"Reset to original image size" : "Reset to original image size",
"Rotate" : "Rotate",
"Text" : "Text", "Text" : "Text",
"Text spacing" : "Text spacing",
"Text alignment" : "Text alignment",
"Font family" : "Font family",
"Size" : "Size", "Size" : "Size",
"Position" : "Position" "Letter spacing" : "Letter spacing",
"Line height" : "Line height",
"Warmth" : "Warmth",
"+ Add watermark" : "+ Add watermark",
"Choose watermark type" : "Choose watermark type",
"Upload watermark" : "Upload watermark",
"Add as text" : "Add as text",
"Padding" : "Padding",
"Shadow" : "Shadow",
"Horizontal" : "Horizontal",
"Vertical" : "Vertical",
"Opacity" : "Opacity",
"Position" : "Position",
"Stroke" : "Stroke",
"Save image as" : "Save image as",
"Extension" : "Extension",
"Name is required." : "Name is required.",
"Quality" : "Quality",
"Saved image size (width x height)" : "Saved image size (width x height)",
"Note that the selected crop area is lower than the applied resize which might cause quality decrease" : "Note that the selected crop area is lower than the applied resize which might cause quality decrease",
"Actual size (100%)" : "Actual size (100%)",
"Fit size" : "Fit size",
"Transcoding failed." : "Transcoding failed.",
"Auto" : "Auto",
"Shared Folder" : "Shared Folder",
"Failed to create {albumName}." : "Failed to create {albumName}.",
"Failed to rename {currentAlbumName} to {newAlbumName}." : "Failed to rename {currentAlbumName} to {newAlbumName}.",
"General Failure" : "General Failure",
"Error: {msg}" : "Error: {msg}",
"Failed to delete files." : "Failed to delete files.",
"Failed to delete {fileName}." : "Failed to delete {fileName}.",
"Failed to download some files." : "Failed to download some files.",
"Failed to favorite files." : "Failed to favorite files.",
"Failed to favorite some files." : "Failed to favorite some files.",
"Failed to favorite {fileName}." : "Failed to favorite {fileName}."
},"pluralForm" :"nplurals=2; plural=(n != 1);" },"pluralForm" :"nplurals=2; plural=(n != 1);"
} }

1
l10n/eo.js vendored
View File

@ -18,6 +18,7 @@ OC.L10N.register(
"Favorite" : "Pliŝatati", "Favorite" : "Pliŝatati",
"View in folder" : "Vidi en dosierujo", "View in folder" : "Vidi en dosierujo",
"Share" : "Kunhavigi", "Share" : "Kunhavigi",
"Close" : "Malfermi",
"Previous" : "Antaŭa", "Previous" : "Antaŭa",
"Next" : "Sekva", "Next" : "Sekva",
"Public link" : "Publika ligilo", "Public link" : "Publika ligilo",

1
l10n/eo.json vendored
View File

@ -16,6 +16,7 @@
"Favorite" : "Pliŝatati", "Favorite" : "Pliŝatati",
"View in folder" : "Vidi en dosierujo", "View in folder" : "Vidi en dosierujo",
"Share" : "Kunhavigi", "Share" : "Kunhavigi",
"Close" : "Malfermi",
"Previous" : "Antaŭa", "Previous" : "Antaŭa",
"Next" : "Sekva", "Next" : "Sekva",
"Public link" : "Publika ligilo", "Public link" : "Publika ligilo",

1
l10n/es.js vendored
View File

@ -60,6 +60,7 @@ OC.L10N.register(
"Failed to load some photos" : "Fallo al cargar algunas fotos", "Failed to load some photos" : "Fallo al cargar algunas fotos",
"Share" : "Compartir", "Share" : "Compartir",
"Sidebar" : "Barra lateral", "Sidebar" : "Barra lateral",
"Close" : "Cerrar",
"Previous" : "Anterior", "Previous" : "Anterior",
"Next" : "Siguiente", "Next" : "Siguiente",
"Video sharing not supported yet" : "Compartir videos no es soportado todavía", "Video sharing not supported yet" : "Compartir videos no es soportado todavía",

1
l10n/es.json vendored
View File

@ -58,6 +58,7 @@
"Failed to load some photos" : "Fallo al cargar algunas fotos", "Failed to load some photos" : "Fallo al cargar algunas fotos",
"Share" : "Compartir", "Share" : "Compartir",
"Sidebar" : "Barra lateral", "Sidebar" : "Barra lateral",
"Close" : "Cerrar",
"Previous" : "Anterior", "Previous" : "Anterior",
"Next" : "Siguiente", "Next" : "Siguiente",
"Video sharing not supported yet" : "Compartir videos no es soportado todavía", "Video sharing not supported yet" : "Compartir videos no es soportado todavía",

1
l10n/es_419.js vendored
View File

@ -17,6 +17,7 @@ OC.L10N.register(
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"View in folder" : "Ver en la carpeta", "View in folder" : "Ver en la carpeta",
"Share" : "Compartir", "Share" : "Compartir",
"Close" : "Cerrar",
"Previous" : "Anterior", "Previous" : "Anterior",
"Next" : "Siguiente", "Next" : "Siguiente",
"Back" : "Atrás", "Back" : "Atrás",

1
l10n/es_419.json vendored
View File

@ -15,6 +15,7 @@
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"View in folder" : "Ver en la carpeta", "View in folder" : "Ver en la carpeta",
"Share" : "Compartir", "Share" : "Compartir",
"Close" : "Cerrar",
"Previous" : "Anterior", "Previous" : "Anterior",
"Next" : "Siguiente", "Next" : "Siguiente",
"Back" : "Atrás", "Back" : "Atrás",

1
l10n/es_AR.js vendored
View File

@ -18,6 +18,7 @@ OC.L10N.register(
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"View in folder" : "Ver en la carpeta", "View in folder" : "Ver en la carpeta",
"Share" : "Compartir", "Share" : "Compartir",
"Close" : "Cerrar",
"Previous" : "Anterior", "Previous" : "Anterior",
"Next" : "Siguiente", "Next" : "Siguiente",
"Copy public link" : "Copiar link publico", "Copy public link" : "Copiar link publico",

1
l10n/es_AR.json vendored
View File

@ -16,6 +16,7 @@
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"View in folder" : "Ver en la carpeta", "View in folder" : "Ver en la carpeta",
"Share" : "Compartir", "Share" : "Compartir",
"Close" : "Cerrar",
"Previous" : "Anterior", "Previous" : "Anterior",
"Next" : "Siguiente", "Next" : "Siguiente",
"Copy public link" : "Copiar link publico", "Copy public link" : "Copiar link publico",

1
l10n/es_CL.js vendored
View File

@ -18,6 +18,7 @@ OC.L10N.register(
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"View in folder" : "Ver en la carpeta", "View in folder" : "Ver en la carpeta",
"Share" : "Compartir", "Share" : "Compartir",
"Close" : "Cerrar",
"Previous" : "Previo", "Previous" : "Previo",
"Next" : "Siguiente", "Next" : "Siguiente",
"Public link" : "Liga pública", "Public link" : "Liga pública",

1
l10n/es_CL.json vendored
View File

@ -16,6 +16,7 @@
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"View in folder" : "Ver en la carpeta", "View in folder" : "Ver en la carpeta",
"Share" : "Compartir", "Share" : "Compartir",
"Close" : "Cerrar",
"Previous" : "Previo", "Previous" : "Previo",
"Next" : "Siguiente", "Next" : "Siguiente",
"Public link" : "Liga pública", "Public link" : "Liga pública",

1
l10n/es_CO.js vendored
View File

@ -17,6 +17,7 @@ OC.L10N.register(
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"View in folder" : "Ver en la carpeta", "View in folder" : "Ver en la carpeta",
"Share" : "Compartir", "Share" : "Compartir",
"Close" : "Cerrar",
"Previous" : "Previo", "Previous" : "Previo",
"Next" : "Siguiente", "Next" : "Siguiente",
"Public link" : "Liga pública", "Public link" : "Liga pública",

1
l10n/es_CO.json vendored
View File

@ -15,6 +15,7 @@
"Unarchive" : "Desarchivar", "Unarchive" : "Desarchivar",
"View in folder" : "Ver en la carpeta", "View in folder" : "Ver en la carpeta",
"Share" : "Compartir", "Share" : "Compartir",
"Close" : "Cerrar",
"Previous" : "Previo", "Previous" : "Previo",
"Next" : "Siguiente", "Next" : "Siguiente",
"Public link" : "Liga pública", "Public link" : "Liga pública",

2
l10n/hu.js vendored
View File

@ -172,7 +172,7 @@ OC.L10N.register(
"Extension" : "Kiterjesztés", "Extension" : "Kiterjesztés",
"Name is required." : "A név kötelező.", "Name is required." : "A név kötelező.",
"Quality" : "Minőség", "Quality" : "Minőség",
"Saved image size (width x height)" : "Mentett kép mérete (szélesség×magasság)", "Saved image size (width x height)" : "Mentett kép mérete (szélesség × magasság)",
"Note that the selected crop area is lower than the applied resize which might cause quality decrease" : "Vegye figyelembe, hogy a kijelölt levágási terület kisebb mint az alkalmazott átméretezés, amely minőségcsökkenést okozhat", "Note that the selected crop area is lower than the applied resize which might cause quality decrease" : "Vegye figyelembe, hogy a kijelölt levágási terület kisebb mint az alkalmazott átméretezés, amely minőségcsökkenést okozhat",
"Actual size (100%)" : "Tényleges méret (100%)", "Actual size (100%)" : "Tényleges méret (100%)",
"Fit size" : "Illeszkedő méret", "Fit size" : "Illeszkedő méret",

2
l10n/hu.json vendored
View File

@ -170,7 +170,7 @@
"Extension" : "Kiterjesztés", "Extension" : "Kiterjesztés",
"Name is required." : "A név kötelező.", "Name is required." : "A név kötelező.",
"Quality" : "Minőség", "Quality" : "Minőség",
"Saved image size (width x height)" : "Mentett kép mérete (szélesség×magasság)", "Saved image size (width x height)" : "Mentett kép mérete (szélesség × magasság)",
"Note that the selected crop area is lower than the applied resize which might cause quality decrease" : "Vegye figyelembe, hogy a kijelölt levágási terület kisebb mint az alkalmazott átméretezés, amely minőségcsökkenést okozhat", "Note that the selected crop area is lower than the applied resize which might cause quality decrease" : "Vegye figyelembe, hogy a kijelölt levágási terület kisebb mint az alkalmazott átméretezés, amely minőségcsökkenést okozhat",
"Actual size (100%)" : "Tényleges méret (100%)", "Actual size (100%)" : "Tényleges méret (100%)",
"Fit size" : "Illeszkedő méret", "Fit size" : "Illeszkedő méret",

2
l10n/sv.js vendored
View File

@ -39,6 +39,8 @@ OC.L10N.register(
"Copy public link" : "Kopiera publik länk", "Copy public link" : "Kopiera publik länk",
"Share via public link" : "Dela via offentlig länk", "Share via public link" : "Dela via offentlig länk",
"Public link" : "Publik länk", "Public link" : "Publik länk",
"Failed to fetch album." : "Misslyckades att hämta album.",
"Failed to update album." : "Misslyckades att uppdatera album.",
"New album" : "Nytt album", "New album" : "Nytt album",
"Create new album" : "Skapa nytt album", "Create new album" : "Skapa nytt album",
"Back" : "Tillbaka", "Back" : "Tillbaka",

2
l10n/sv.json vendored
View File

@ -37,6 +37,8 @@
"Copy public link" : "Kopiera publik länk", "Copy public link" : "Kopiera publik länk",
"Share via public link" : "Dela via offentlig länk", "Share via public link" : "Dela via offentlig länk",
"Public link" : "Publik länk", "Public link" : "Publik länk",
"Failed to fetch album." : "Misslyckades att hämta album.",
"Failed to update album." : "Misslyckades att uppdatera album.",
"New album" : "Nytt album", "New album" : "Nytt album",
"Create new album" : "Skapa nytt album", "Create new album" : "Skapa nytt album",
"Back" : "Tillbaka", "Back" : "Tillbaka",

View File

@ -251,16 +251,14 @@ class Index extends Command
$uid = $user->getUID(); $uid = $user->getUID();
$userFolder = $this->rootFolder->getUserFolder($uid); $userFolder = $this->rootFolder->getUserFolder($uid);
$this->outputSection = $this->output->section(); $this->outputSection = $this->output->section();
$this->parseFolder($userFolder, $refresh, $this->nUser, $this->userManager->countSeenUsers()); $this->parseFolder($userFolder, $refresh, (float) $this->nUser, (float) $this->userManager->countSeenUsers());
$this->outputSection->overwrite('Scanned '.$userFolder->getPath()); $this->outputSection->overwrite('Scanned '.$userFolder->getPath());
++$this->nUser; ++$this->nUser;
} }
private function parseFolder(Folder &$folder, bool &$refresh, int $progress_i, int $progress_n): void private function parseFolder(Folder &$folder, bool $refresh, float $progress_i, float $progress_n): void
{ {
try { try {
$folderPath = $folder->getPath();
// Respect the '.nomedia' file. If present don't traverse the folder // Respect the '.nomedia' file. If present don't traverse the folder
if ($folder->nodeExists('.nomedia')) { if ($folder->nodeExists('.nomedia')) {
++$this->nNoMedia; ++$this->nNoMedia;
@ -272,9 +270,12 @@ class Index extends Command
foreach ($nodes as $i => &$node) { foreach ($nodes as $i => &$node) {
if ($node instanceof Folder) { if ($node instanceof Folder) {
$this->parseFolder($node, $refresh, $progress_i * \count($nodes) + $i, $progress_n * \count($nodes)); $new_progress_i = (float) ($progress_i * \count($nodes) + $i);
$new_progress_n = (float) ($progress_n * \count($nodes));
$this->parseFolder($node, $refresh, $new_progress_i, $new_progress_n);
} elseif ($node instanceof File) { } elseif ($node instanceof File) {
$this->outputSection->overwrite(sprintf('%.2f%%', $progress_i / $progress_n * 100).' scanning '.$node->getPath()); $progress = (float) (($progress_i / $progress_n) * 100);
$this->outputSection->overwrite(sprintf('%.2f%%', $progress).' scanning '.$node->getPath());
$this->parseFile($node, $refresh); $this->parseFile($node, $refresh);
} }
} }

View File

@ -90,18 +90,17 @@ class VideoSetup extends Command
$output->writeln('Checking for go-vod binary'); $output->writeln('Checking for go-vod binary');
$goVodPath = $this->config->getSystemValue('memories.transcoder', false); $goVodPath = $this->config->getSystemValue('memories.transcoder', false);
if (false === $goVodPath) { if (!\is_string($goVodPath) || !file_exists($goVodPath)) {
// Detect architecture // Detect architecture
$arch = \OCA\Memories\Util::getArch(); $arch = \OCA\Memories\Util::getArch();
$goVodPath = realpath(__DIR__."/../../exiftool-bin/go-vod-{$arch}");
if (!$arch) { if (!$goVodPath) {
$output->writeln('<error>Compatible go-vod binary not found</error>'); $output->writeln('<error>Compatible go-vod binary not found</error>');
$this->suggestGoVod($output); $this->suggestGoVod($output);
return $this->suggestDisable($output); return $this->suggestDisable($output);
} }
$goVodPath = realpath(__DIR__."/../../exiftool-bin/go-vod-{$arch}");
} }
$output->writeln("Trying go-vod from {$goVodPath}"); $output->writeln("Trying go-vod from {$goVodPath}");

View File

@ -218,19 +218,20 @@ class VideoController extends ApiBase
} }
} }
// Make and send response // Data not found
if ($blob) { if (!$blob) {
$response = new DataDisplayResponse($blob, Http::STATUS_OK, []); return new JSONResponse(['message' => 'Live file not found'], Http::STATUS_NOT_FOUND);
$response->setHeaders([
'Content-Type' => $mime,
'Content-Disposition' => "attachment; filename=\"{$name}\"",
]);
$response->cacheFor(3600 * 24, false, false);
return $response;
} }
return new JSONResponse(['message' => 'Live file not found'], Http::STATUS_NOT_FOUND); // Make and send response
$response = new DataDisplayResponse($blob, Http::STATUS_OK, []);
$response->setHeaders([
'Content-Type' => $mime,
'Content-Disposition' => "attachment; filename=\"{$name}\"",
]);
$response->cacheFor(3600 * 24, false, false);
return $response;
} }
private function getUpstream($client, $path, $profile) private function getUpstream($client, $path, $profile)

View File

@ -199,11 +199,15 @@ class TimelineWrite
*/ */
public function deleteFile(File &$file) public function deleteFile(File &$file)
{ {
$query = $this->connection->getQueryBuilder(); $deleteFrom = function ($table) use (&$file) {
$query->delete('memories') $query = $this->connection->getQueryBuilder();
->where($query->expr()->eq('fileid', $query->createNamedParameter($file->getId(), IQueryBuilder::PARAM_INT))) $query->delete($table)
; ->where($query->expr()->eq('fileid', $query->createNamedParameter($file->getId(), IQueryBuilder::PARAM_INT)))
$query->executeStatement(); ;
$query->executeStatement();
};
$deleteFrom('memories');
$deleteFrom('memories_livephoto');
} }
/** /**
@ -213,7 +217,9 @@ class TimelineWrite
*/ */
public function clear() public function clear()
{ {
$sql = $this->connection->getDatabasePlatform()->getTruncateTableSQL('`*PREFIX*memories`', false); $p = $this->connection->getDatabasePlatform();
$this->connection->executeStatement($sql); $t1 = $p->getTruncateTableSQL('`*PREFIX*memories`', false);
$t2 = $p->getTruncateTableSQL('`*PREFIX*memories_livephoto`', false);
$this->connection->executeStatement("{$t1}; {$t2}");
} }
} }

View File

@ -1,10 +1,13 @@
#!/bin/sh #!/bin/sh
set -e
exifver="12.49" exifver="12.49"
rm -rf exiftool-bin rm -rf exiftool-bin
mkdir -p exiftool-bin mkdir -p exiftool-bin
cd exiftool-bin cd exiftool-bin
echo "Getting exiftool $exifver"
wget -q "https://github.com/pulsejet/exiftool-bin/releases/download/$exifver/exiftool-amd64-musl" wget -q "https://github.com/pulsejet/exiftool-bin/releases/download/$exifver/exiftool-amd64-musl"
wget -q "https://github.com/pulsejet/exiftool-bin/releases/download/$exifver/exiftool-amd64-glibc" wget -q "https://github.com/pulsejet/exiftool-bin/releases/download/$exifver/exiftool-amd64-glibc"
wget -q "https://github.com/pulsejet/exiftool-bin/releases/download/$exifver/exiftool-aarch64-musl" wget -q "https://github.com/pulsejet/exiftool-bin/releases/download/$exifver/exiftool-aarch64-musl"
@ -17,7 +20,8 @@ mv "exiftool-$exifver" exiftool
rm -rf *.zip exiftool/t exiftool/html rm -rf *.zip exiftool/t exiftool/html
chmod 755 exiftool/exiftool chmod 755 exiftool/exiftool
govod="0.0.17" govod="0.0.18"
echo "Getting go-vod $govod"
wget -q "https://github.com/pulsejet/go-vod/releases/download/$govod/go-vod-amd64" wget -q "https://github.com/pulsejet/go-vod/releases/download/$govod/go-vod-amd64"
wget -q "https://github.com/pulsejet/go-vod/releases/download/$govod/go-vod-aarch64" wget -q "https://github.com/pulsejet/go-vod/releases/download/$govod/go-vod-aarch64"
chmod 755 go-vod-* chmod 755 go-vod-*

View File

@ -255,7 +255,7 @@ export default class App extends Mixins(GlobalMixin, UserConfig) {
linkClick() { linkClick() {
const nav: any = this.$refs.nav; const nav: any = this.$refs.nav;
if (window.innerWidth <= 1024) nav?.toggleNavigation(false); if (globalThis.windowInnerWidth <= 1024) nav?.toggleNavigation(false);
} }
doRouteChecks() { doRouteChecks() {
@ -369,7 +369,6 @@ aside.app-sidebar {
.memories-livephoto { .memories-livephoto {
position: relative; position: relative;
overflow: hidden; overflow: hidden;
contain: strict;
img, img,
video { video {

View File

@ -95,7 +95,7 @@ export default class ScrollerManager extends Mixins(GlobalMixin) {
/** Get the visible ticks */ /** Get the visible ticks */
get visibleTicks() { get visibleTicks() {
let key = 999900; let key = 9999999900;
return this.ticks return this.ticks
.filter((tick) => tick.s) .filter((tick) => tick.s)
.map((tick) => { .map((tick) => {
@ -320,7 +320,7 @@ export default class ScrollerManager extends Mixins(GlobalMixin) {
const fontSizePx = parseFloat( const fontSizePx = parseFloat(
getComputedStyle(this.$refs.cursorSt as any).fontSize getComputedStyle(this.$refs.cursorSt as any).fontSize
); );
const minGap = fontSizePx + (window.innerWidth <= 768 ? 5 : 2); const minGap = fontSizePx + (globalThis.windowInnerWidth <= 768 ? 5 : 2);
let prevShow = -9999; let prevShow = -9999;
for (const [idx, tick] of this.ticks.entries()) { for (const [idx, tick] of this.ticks.entries()) {
// Conservative // Conservative

View File

@ -298,7 +298,7 @@ export default class SelectionManager extends Mixins(GlobalMixin, UserConfig) {
this.rows[rowIdx].virtualSticky = true; this.rows[rowIdx].virtualSticky = true;
this.resetTouchParams(); this.resetTouchParams();
document.body.classList.add("vue-touching"); globalThis.touchingPhoto = true;
this.touchAnchor = photo; this.touchAnchor = photo;
this.prevOver = photo; this.prevOver = photo;
@ -320,7 +320,7 @@ export default class SelectionManager extends Mixins(GlobalMixin, UserConfig) {
this.resetTouchParams(); this.resetTouchParams();
window.setTimeout(() => { window.setTimeout(() => {
if (!this.touchAnchor) document.body.classList.remove("vue-touching"); if (!this.touchAnchor) globalThis.touchingPhoto = false;
}, 1000); }, 1000);
} }
@ -364,12 +364,13 @@ export default class SelectionManager extends Mixins(GlobalMixin, UserConfig) {
// Scroll if at top or bottom // Scroll if at top or bottom
const scrollUp = touch.clientY > 50 && touch.clientY < 110; // 50 topbar const scrollUp = touch.clientY > 50 && touch.clientY < 110; // 50 topbar
const scrollDown = touch.clientY > window.innerHeight - 60; const scrollDown = touch.clientY > globalThis.windowInnerHeight - 60;
if (scrollUp || scrollDown) { if (scrollUp || scrollDown) {
if (scrollUp) { if (scrollUp) {
this.touchScrollDelta = (-1 * (110 - touch.clientY)) / 3; this.touchScrollDelta = (-1 * (110 - touch.clientY)) / 3;
} else { } else {
this.touchScrollDelta = (touch.clientY - window.innerHeight + 60) / 3; this.touchScrollDelta =
(touch.clientY - globalThis.windowInnerHeight + 60) / 3;
} }
if (this.touchAnchor && !this.touchScrollInterval) { if (this.touchAnchor && !this.touchScrollInterval) {

View File

@ -313,11 +313,11 @@ export default class Timeline extends Mixins(GlobalMixin, UserConfig) {
} }
isMobile() { isMobile() {
return window.innerWidth <= 768; return globalThis.windowInnerWidth <= 768;
} }
isMobileLayout() { isMobileLayout() {
return window.innerWidth <= 600; return globalThis.windowInnerWidth <= 600;
} }
get isMonthView() { get isMonthView() {
@ -378,6 +378,11 @@ export default class Timeline extends Mixins(GlobalMixin, UserConfig) {
/** Do resize after some time */ /** Do resize after some time */
handleResizeWithDelay() { handleResizeWithDelay() {
// Update global vars
globalThis.windowInnerWidth = window.innerWidth;
globalThis.windowInnerHeight = window.innerHeight;
// Reflow after timer
if (this.resizeTimer) { if (this.resizeTimer) {
clearTimeout(this.resizeTimer); clearTimeout(this.resizeTimer);
} }

View File

@ -18,6 +18,7 @@
ref="inner" ref="inner"
v-show="!editorOpen" v-show="!editorOpen"
@pointermove.passive="setUiVisible" @pointermove.passive="setUiVisible"
@pointerdown.passive="setUiVisible"
> >
<div class="top-bar" v-if="photoswipe" :class="{ showControls }"> <div class="top-bar" v-if="photoswipe" :class="{ showControls }">
<NcActions <NcActions
@ -212,7 +213,7 @@ export default class Viewer extends Mixins(GlobalMixin) {
if (this.canShare) base++; if (this.canShare) base++;
if (this.canEdit) base++; if (this.canEdit) base++;
if (window.innerWidth < 768) { if (globalThis.windowInnerWidth < 768) {
return Math.min(base, 3); return Math.min(base, 3);
} else { } else {
return Math.min(base, 5); return Math.min(base, 5);
@ -304,6 +305,12 @@ export default class Viewer extends Mixins(GlobalMixin) {
bgOpacity: 1, bgOpacity: 1,
appendToEl: this.$refs.inner as HTMLElement, appendToEl: this.$refs.inner as HTMLElement,
preload: [2, 2], preload: [2, 2],
easing: "cubic-bezier(.22,.51,.48,1.01)",
showHideAnimationType: "zoom",
showAnimationDuration: 250,
hideAnimationDuration: 250,
closeTitle: this.t("memories", "Close"), closeTitle: this.t("memories", "Close"),
arrowPrevTitle: this.t("memories", "Previous"), arrowPrevTitle: this.t("memories", "Previous"),
arrowNextTitle: this.t("memories", "Next"), arrowNextTitle: this.t("memories", "Next"),
@ -311,8 +318,8 @@ export default class Viewer extends Mixins(GlobalMixin) {
const sidebarWidth = this.sidebarOpen ? this.sidebarWidth : 0; const sidebarWidth = this.sidebarOpen ? this.sidebarWidth : 0;
this.outerWidth = `calc(100vw - ${sidebarWidth}px)`; this.outerWidth = `calc(100vw - ${sidebarWidth}px)`;
return { return {
x: window.innerWidth - sidebarWidth, x: globalThis.windowInnerWidth - sidebarWidth,
y: window.innerHeight, y: globalThis.windowInnerHeight,
}; };
}, },
...args, ...args,
@ -550,7 +557,7 @@ export default class Viewer extends Mixins(GlobalMixin) {
const thumb = this.thumbElem(e.slide.data?.photo); const thumb = this.thumbElem(e.slide.data?.photo);
if (thumb && this.fullyOpened) { if (thumb && this.fullyOpened) {
const rect = thumb.getBoundingClientRect(); const rect = thumb.getBoundingClientRect();
if (rect.bottom < 50 || rect.top > window.innerHeight - 50) { if (rect.bottom < 50 || rect.top > globalThis.windowInnerHeight - 50) {
thumb.scrollIntoView({ thumb.scrollIntoView({
block: "center", block: "center",
}); });
@ -914,7 +921,9 @@ export default class Viewer extends Mixins(GlobalMixin) {
.fullyOpened :deep .pswp__container { .fullyOpened :deep .pswp__container {
@media (min-width: 1024px) { @media (min-width: 1024px) {
transition: transform var(--pswp-transition-duration) ease !important; // Animate transitions
// Disabled because this makes you sick if moving fast
// transition: transform var(--pswp-transition-duration) ease !important;
} }
} }
@ -939,6 +948,8 @@ export default class Viewer extends Mixins(GlobalMixin) {
} }
:deep .pswp { :deep .pswp {
contain: strict;
.pswp__zoom-wrap { .pswp__zoom-wrap {
width: 100%; width: 100%;
} }

View File

@ -232,7 +232,7 @@ export default class Photo extends Mixins(GlobalMixin) {
contextmenu(e: Event) { contextmenu(e: Event) {
// user is trying to select the photo // user is trying to select the photo
if (document.body.classList.contains("vue-touching")) { if (globalThis.touchingPhoto) {
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();
} }
@ -298,7 +298,7 @@ $icon-size: $icon-half-size * 2;
cursor: pointer; cursor: pointer;
display: none; display: none;
body:not(.vue-touching) .p-outer:hover > & { .p-outer:hover > & {
display: flex; display: flex;
} }
@ -411,7 +411,7 @@ div.img-outer {
display: none; display: none;
transition: border-radius 0.1s ease-in; transition: border-radius 0.1s ease-in;
body:not(.vue-touching) .p-outer:not(.selected):hover > & { .p-outer:not(.selected):hover > & {
display: block; display: block;
} }
} }

View File

@ -147,7 +147,7 @@ export default class OnThisDay extends Mixins(GlobalMixin) {
// Choose preview photo // Choose preview photo
for (const year of this.years) { for (const year of this.years) {
// Try to prioritize landscape photos on desktop // Try to prioritize landscape photos on desktop
if (window.innerWidth <= 600) { if (globalThis.windowInnerWidth <= 600) {
const landscape = year.photos.filter((p) => p.w > p.h); const landscape = year.photos.filter((p) => p.w > p.h);
year.preview = utils.randomChoice(landscape); year.preview = utils.randomChoice(landscape);
} }

View File

@ -39,9 +39,18 @@ declare global {
var editDate: (photo: IPhoto) => void; var editDate: (photo: IPhoto) => void;
var currentViewerPhoto: IPhoto; var currentViewerPhoto: IPhoto;
var touchingPhoto: boolean;
var windowInnerWidth: number; // cache
var windowInnerHeight: number; // cache
} }
globalThis.vuerouter = router; globalThis.vuerouter = router;
globalThis.touchingPhoto = false;
globalThis.windowInnerWidth = window.innerWidth;
globalThis.windowInnerHeight = window.innerHeight;
Vue.use(VueVirtualScroller); Vue.use(VueVirtualScroller);
// https://github.com/nextcloud/photos/blob/156f280c0476c483cb9ce81769ccb0c1c6500a4e/src/main.js // https://github.com/nextcloud/photos/blob/156f280c0476c483cb9ce81769ccb0c1c6500a4e/src/main.js