Merge branch 'master' into stable24
commit
bbde9f1837
|
@ -2,7 +2,7 @@
|
|||
|
||||
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))
|
||||
- You need to run `occ memories:index --clear` to reindex live photos
|
||||
|
|
|
@ -17,6 +17,9 @@ OC.L10N.register(
|
|||
"Favorite" : "Gunsteling",
|
||||
"View in folder" : "Vertoon in gids",
|
||||
"Share" : "Deel",
|
||||
"Close" : "Sluit",
|
||||
"Previous" : "Vorige",
|
||||
"Next" : "Volgende",
|
||||
"Public link" : "Openbare skakel",
|
||||
"Back" : "Terug",
|
||||
"Save" : "Bewaar",
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
"Favorite" : "Gunsteling",
|
||||
"View in folder" : "Vertoon in gids",
|
||||
"Share" : "Deel",
|
||||
"Close" : "Sluit",
|
||||
"Previous" : "Vorige",
|
||||
"Next" : "Volgende",
|
||||
"Public link" : "Openbare skakel",
|
||||
"Back" : "Terug",
|
||||
"Save" : "Bewaar",
|
||||
|
|
|
@ -9,6 +9,7 @@ OC.L10N.register(
|
|||
"Download" : "Escargar",
|
||||
"Favorite" : "Favorito",
|
||||
"Share" : "Compartir",
|
||||
"Close" : "Zarrar",
|
||||
"Back" : "Ta zaga",
|
||||
"Name" : "Nombre",
|
||||
"Continue" : "Continar",
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
"Download" : "Escargar",
|
||||
"Favorite" : "Favorito",
|
||||
"Share" : "Compartir",
|
||||
"Close" : "Zarrar",
|
||||
"Back" : "Ta zaga",
|
||||
"Name" : "Nombre",
|
||||
"Continue" : "Continar",
|
||||
|
|
|
@ -17,6 +17,9 @@ OC.L10N.register(
|
|||
"Favorite" : "المفضلة",
|
||||
"View in folder" : "اعرض في المجلد",
|
||||
"Share" : "مشاركة",
|
||||
"Close" : "إغلاق",
|
||||
"Previous" : "السابق",
|
||||
"Next" : "التالي",
|
||||
"Copy public link" : "نسخ الرابط العام",
|
||||
"Back" : "العودة",
|
||||
"Save" : "Save",
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
"Favorite" : "المفضلة",
|
||||
"View in folder" : "اعرض في المجلد",
|
||||
"Share" : "مشاركة",
|
||||
"Close" : "إغلاق",
|
||||
"Previous" : "السابق",
|
||||
"Next" : "التالي",
|
||||
"Copy public link" : "نسخ الرابط العام",
|
||||
"Back" : "العودة",
|
||||
"Save" : "Save",
|
||||
|
|
|
@ -16,6 +16,9 @@ OC.L10N.register(
|
|||
"Favorite" : "Marcar como favoritu",
|
||||
"View in folder" : "Ver na carpeta",
|
||||
"Share" : "Share",
|
||||
"Close" : "Zarrar",
|
||||
"Previous" : "Anterior",
|
||||
"Next" : "Siguiente",
|
||||
"Back" : "Atrás",
|
||||
"Save" : "Guardar",
|
||||
"Month" : "Mes",
|
||||
|
|
|
@ -14,6 +14,9 @@
|
|||
"Favorite" : "Marcar como favoritu",
|
||||
"View in folder" : "Ver na carpeta",
|
||||
"Share" : "Share",
|
||||
"Close" : "Zarrar",
|
||||
"Previous" : "Anterior",
|
||||
"Next" : "Siguiente",
|
||||
"Back" : "Atrás",
|
||||
"Save" : "Guardar",
|
||||
"Month" : "Mes",
|
||||
|
|
|
@ -12,6 +12,9 @@ OC.L10N.register(
|
|||
"Download" : "Yüklə",
|
||||
"Favorite" : "İstəkli",
|
||||
"Share" : "Paylaş",
|
||||
"Close" : "Bağla",
|
||||
"Previous" : "Əvvələ",
|
||||
"Next" : "Növbəti",
|
||||
"Save" : "Saxla",
|
||||
"Month" : "Ay",
|
||||
"Day" : "Gün",
|
||||
|
|
|
@ -10,6 +10,9 @@
|
|||
"Download" : "Yüklə",
|
||||
"Favorite" : "İstəkli",
|
||||
"Share" : "Paylaş",
|
||||
"Close" : "Bağla",
|
||||
"Previous" : "Əvvələ",
|
||||
"Next" : "Növbəti",
|
||||
"Save" : "Saxla",
|
||||
"Month" : "Ay",
|
||||
"Day" : "Gün",
|
||||
|
|
|
@ -56,6 +56,9 @@ OC.L10N.register(
|
|||
"Failed to load some photos" : "Неуспешно зареждане на някои снимки",
|
||||
"Share" : "Споделяне",
|
||||
"Sidebar" : "Странична лента",
|
||||
"Close" : "Затваряне",
|
||||
"Previous" : "Предишно",
|
||||
"Next" : "Следващо",
|
||||
"Video sharing not supported yet" : "Видео споделянето все още не се поддържа",
|
||||
"Cannot share this type of data" : "Този тип данни не може да се споделят",
|
||||
"Processing … {n}/{m}" : "Обработва се ... {n}/{m}",
|
||||
|
|
|
@ -54,6 +54,9 @@
|
|||
"Failed to load some photos" : "Неуспешно зареждане на някои снимки",
|
||||
"Share" : "Споделяне",
|
||||
"Sidebar" : "Странична лента",
|
||||
"Close" : "Затваряне",
|
||||
"Previous" : "Предишно",
|
||||
"Next" : "Следващо",
|
||||
"Video sharing not supported yet" : "Видео споделянето все още не се поддържа",
|
||||
"Cannot share this type of data" : "Този тип данни не може да се споделят",
|
||||
"Processing … {n}/{m}" : "Обработва се ... {n}/{m}",
|
||||
|
|
|
@ -11,6 +11,9 @@ OC.L10N.register(
|
|||
"Download" : "ডাউনলোড",
|
||||
"Favorite" : "প্রিয়জন",
|
||||
"Share" : "ভাগাভাগি কর",
|
||||
"Close" : "বন্ধ",
|
||||
"Previous" : "পূর্ববর্তী",
|
||||
"Next" : "পরবর্তী",
|
||||
"Back" : "পেছনে যাও",
|
||||
"Save" : "সংরক্ষণ",
|
||||
"Month" : "মাস",
|
||||
|
|
|
@ -9,6 +9,9 @@
|
|||
"Download" : "ডাউনলোড",
|
||||
"Favorite" : "প্রিয়জন",
|
||||
"Share" : "ভাগাভাগি কর",
|
||||
"Close" : "বন্ধ",
|
||||
"Previous" : "পূর্ববর্তী",
|
||||
"Next" : "পরবর্তী",
|
||||
"Back" : "পেছনে যাও",
|
||||
"Save" : "সংরক্ষণ",
|
||||
"Month" : "মাস",
|
||||
|
|
|
@ -14,6 +14,8 @@ OC.L10N.register(
|
|||
"Favorite" : "Pennrollañ",
|
||||
"View in folder" : "Diskwel en teuliad",
|
||||
"Share" : "Rannan",
|
||||
"Close" : "Seriñ",
|
||||
"Next" : "Da heul",
|
||||
"Copy public link" : "Eilañ al liamm foran",
|
||||
"Public link" : "Liamm publik",
|
||||
"Back" : "Distro",
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
"Favorite" : "Pennrollañ",
|
||||
"View in folder" : "Diskwel en teuliad",
|
||||
"Share" : "Rannan",
|
||||
"Close" : "Seriñ",
|
||||
"Next" : "Da heul",
|
||||
"Copy public link" : "Eilañ al liamm foran",
|
||||
"Public link" : "Liamm publik",
|
||||
"Back" : "Distro",
|
||||
|
|
|
@ -9,6 +9,9 @@ OC.L10N.register(
|
|||
"Download" : "Preuzmi",
|
||||
"Favorite" : "Favorit",
|
||||
"Share" : "Podjeli",
|
||||
"Close" : "Zatvori",
|
||||
"Previous" : "Prethodno",
|
||||
"Next" : "Sljedeće",
|
||||
"Save" : "Spremi",
|
||||
"Month" : "Mjesec",
|
||||
"Day" : "Dan",
|
||||
|
|
|
@ -7,6 +7,9 @@
|
|||
"Download" : "Preuzmi",
|
||||
"Favorite" : "Favorit",
|
||||
"Share" : "Podjeli",
|
||||
"Close" : "Zatvori",
|
||||
"Previous" : "Prethodno",
|
||||
"Next" : "Sljedeće",
|
||||
"Save" : "Spremi",
|
||||
"Month" : "Mjesec",
|
||||
"Day" : "Dan",
|
||||
|
|
|
@ -24,6 +24,9 @@ OC.L10N.register(
|
|||
"Unarchive" : "Desbloquejar",
|
||||
"View in folder" : "Visualitza-ho a la carpeta",
|
||||
"Share" : "Compartir",
|
||||
"Close" : "Tanca",
|
||||
"Previous" : "Anterior",
|
||||
"Next" : "Següent",
|
||||
"Copy public link" : "Copia l'enllaç públic",
|
||||
"Public link" : "Enllaç públic",
|
||||
"Back" : "Torna",
|
||||
|
|
|
@ -22,6 +22,9 @@
|
|||
"Unarchive" : "Desbloquejar",
|
||||
"View in folder" : "Visualitza-ho a la carpeta",
|
||||
"Share" : "Compartir",
|
||||
"Close" : "Tanca",
|
||||
"Previous" : "Anterior",
|
||||
"Next" : "Següent",
|
||||
"Copy public link" : "Copia l'enllaç públic",
|
||||
"Public link" : "Enllaç públic",
|
||||
"Back" : "Torna",
|
||||
|
|
|
@ -60,6 +60,7 @@ OC.L10N.register(
|
|||
"Failed to load some photos" : "Některé fotky se nepodařilo načíst",
|
||||
"Share" : "Sdílet",
|
||||
"Sidebar" : "Postranní panel",
|
||||
"Close" : "Zavřít",
|
||||
"Previous" : "Předchozí",
|
||||
"Next" : "Další",
|
||||
"Video sharing not supported yet" : "Sdílení videí zatím není podporováno",
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
"Failed to load some photos" : "Některé fotky se nepodařilo načíst",
|
||||
"Share" : "Sdílet",
|
||||
"Sidebar" : "Postranní panel",
|
||||
"Close" : "Zavřít",
|
||||
"Previous" : "Předchozí",
|
||||
"Next" : "Další",
|
||||
"Video sharing not supported yet" : "Sdílení videí zatím není podporováno",
|
||||
|
|
|
@ -13,6 +13,7 @@ OC.L10N.register(
|
|||
"Download" : "Llwytho i lawr",
|
||||
"Favorite" : "Ffefryn",
|
||||
"Share" : "Rhannu",
|
||||
"Close" : "Cau",
|
||||
"Previous" : "Blaenorol",
|
||||
"Next" : "Nesaf",
|
||||
"Copy public link" : "Copïo dolen gyhoeddus",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"Download" : "Llwytho i lawr",
|
||||
"Favorite" : "Ffefryn",
|
||||
"Share" : "Rhannu",
|
||||
"Close" : "Cau",
|
||||
"Previous" : "Blaenorol",
|
||||
"Next" : "Nesaf",
|
||||
"Copy public link" : "Copïo dolen gyhoeddus",
|
||||
|
|
|
@ -29,6 +29,7 @@ OC.L10N.register(
|
|||
"Show hidden folders" : "Vis skjulte mapper",
|
||||
"Failed to load some photos" : "Kunne ikke indlæse nogle billeder",
|
||||
"Share" : "Del",
|
||||
"Close" : "Luk",
|
||||
"Previous" : "Tidligere",
|
||||
"Next" : "Næste",
|
||||
"Copy public link" : "Kopier offentligt link",
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"Show hidden folders" : "Vis skjulte mapper",
|
||||
"Failed to load some photos" : "Kunne ikke indlæse nogle billeder",
|
||||
"Share" : "Del",
|
||||
"Close" : "Luk",
|
||||
"Previous" : "Tidligere",
|
||||
"Next" : "Næste",
|
||||
"Copy public link" : "Kopier offentligt link",
|
||||
|
|
|
@ -60,7 +60,8 @@ OC.L10N.register(
|
|||
"Failed to load some photos" : "Laden einiger Fotos fehlgeschlagen",
|
||||
"Share" : "Teilen",
|
||||
"Sidebar" : "Seitenleiste",
|
||||
"Previous" : "Benötigt keine Übersetzung. Hier wird nur die formelle Übersetzung verwendet (de_DE).",
|
||||
"Close" : "Schließen",
|
||||
"Previous" : "Vorherige",
|
||||
"Next" : "Nächste",
|
||||
"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",
|
||||
|
|
|
@ -58,7 +58,8 @@
|
|||
"Failed to load some photos" : "Laden einiger Fotos fehlgeschlagen",
|
||||
"Share" : "Teilen",
|
||||
"Sidebar" : "Seitenleiste",
|
||||
"Previous" : "Benötigt keine Übersetzung. Hier wird nur die formelle Übersetzung verwendet (de_DE).",
|
||||
"Close" : "Schließen",
|
||||
"Previous" : "Vorherige",
|
||||
"Next" : "Nächste",
|
||||
"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",
|
||||
|
|
|
@ -60,6 +60,7 @@ OC.L10N.register(
|
|||
"Failed to load some photos" : "Laden einiger Fotos fehlgeschlagen",
|
||||
"Share" : "Teilen",
|
||||
"Sidebar" : "Seitenleiste",
|
||||
"Close" : "Schließen",
|
||||
"Previous" : "Zurück",
|
||||
"Next" : "Nächste",
|
||||
"Video sharing not supported yet" : "Teilen von Videos wird bislang nicht unterstützt",
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
"Failed to load some photos" : "Laden einiger Fotos fehlgeschlagen",
|
||||
"Share" : "Teilen",
|
||||
"Sidebar" : "Seitenleiste",
|
||||
"Close" : "Schließen",
|
||||
"Previous" : "Zurück",
|
||||
"Next" : "Nächste",
|
||||
"Video sharing not supported yet" : "Teilen von Videos wird bislang nicht unterstützt",
|
||||
|
|
|
@ -21,13 +21,21 @@ OC.L10N.register(
|
|||
"Favorite" : "Αγαπημένο",
|
||||
"Unarchive" : "Αναίρεση αρχειοθέτησης",
|
||||
"View in folder" : "Προβολή στον φάκελο",
|
||||
"Add to album" : "Προσθήκη στο άλμπουμ",
|
||||
"Share" : "Διαμοιρασμός",
|
||||
"Close" : "Κλείσιμο",
|
||||
"Previous" : "Προηγούμενο",
|
||||
"Next" : "Επόμενο",
|
||||
"Copy public link" : "Αντιγραφή δημόσιου συνδέσμου",
|
||||
"Public link" : "Δημόσιος σύνδεσμος",
|
||||
"New album" : "Νέο άλμπουμ",
|
||||
"Create new album" : "Δημιουργία νέου άλμπουμ. ",
|
||||
"Name of the album" : "Όνομα του άλμπουμ",
|
||||
"Location of the album" : "Τοποθεσία του άλμπουμ",
|
||||
"Back" : "Πίσω",
|
||||
"Save" : "Αποθήκευση",
|
||||
"Create album" : "Δημιουργία άλμπουμ",
|
||||
"Create a new album." : "Δημιουργήστε ένα νέο άλμπουμ.",
|
||||
"Year" : "Έτος",
|
||||
"Month" : "Μήνας",
|
||||
"Day" : "Ημέρα",
|
||||
|
@ -35,9 +43,11 @@ OC.L10N.register(
|
|||
"Hour" : "Ώρα",
|
||||
"Minute" : "Λεπτά",
|
||||
"Name" : "Όνομα",
|
||||
"Rename person" : "Μετονομασία ατόμου",
|
||||
"Update" : "Ενημέρωση",
|
||||
"Refresh" : "Ανανέωση",
|
||||
"Remove" : "Αφαίρεση",
|
||||
"Delete album" : "Διαγραφή άλμπουμ",
|
||||
"Share folder" : "Διαμοιρασμός φακέλου",
|
||||
"Reset" : "Επαναφορά",
|
||||
"Continue" : "Συνεχίστε",
|
||||
|
@ -54,6 +64,9 @@ OC.L10N.register(
|
|||
"Extension" : "Επέκταση",
|
||||
"Name is required." : "Απαιτείται όνομα.",
|
||||
"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);");
|
||||
|
|
|
@ -19,13 +19,21 @@
|
|||
"Favorite" : "Αγαπημένο",
|
||||
"Unarchive" : "Αναίρεση αρχειοθέτησης",
|
||||
"View in folder" : "Προβολή στον φάκελο",
|
||||
"Add to album" : "Προσθήκη στο άλμπουμ",
|
||||
"Share" : "Διαμοιρασμός",
|
||||
"Close" : "Κλείσιμο",
|
||||
"Previous" : "Προηγούμενο",
|
||||
"Next" : "Επόμενο",
|
||||
"Copy public link" : "Αντιγραφή δημόσιου συνδέσμου",
|
||||
"Public link" : "Δημόσιος σύνδεσμος",
|
||||
"New album" : "Νέο άλμπουμ",
|
||||
"Create new album" : "Δημιουργία νέου άλμπουμ. ",
|
||||
"Name of the album" : "Όνομα του άλμπουμ",
|
||||
"Location of the album" : "Τοποθεσία του άλμπουμ",
|
||||
"Back" : "Πίσω",
|
||||
"Save" : "Αποθήκευση",
|
||||
"Create album" : "Δημιουργία άλμπουμ",
|
||||
"Create a new album." : "Δημιουργήστε ένα νέο άλμπουμ.",
|
||||
"Year" : "Έτος",
|
||||
"Month" : "Μήνας",
|
||||
"Day" : "Ημέρα",
|
||||
|
@ -33,9 +41,11 @@
|
|||
"Hour" : "Ώρα",
|
||||
"Minute" : "Λεπτά",
|
||||
"Name" : "Όνομα",
|
||||
"Rename person" : "Μετονομασία ατόμου",
|
||||
"Update" : "Ενημέρωση",
|
||||
"Refresh" : "Ανανέωση",
|
||||
"Remove" : "Αφαίρεση",
|
||||
"Delete album" : "Διαγραφή άλμπουμ",
|
||||
"Share folder" : "Διαμοιρασμός φακέλου",
|
||||
"Reset" : "Επαναφορά",
|
||||
"Continue" : "Συνεχίστε",
|
||||
|
@ -52,6 +62,9 @@
|
|||
"Extension" : "Επέκταση",
|
||||
"Name is required." : "Απαιτείται όνομα.",
|
||||
"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);"
|
||||
}
|
|
@ -1,45 +1,244 @@
|
|||
OC.L10N.register(
|
||||
"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",
|
||||
"Timeline" : "Timeline",
|
||||
"Folders" : "Folders",
|
||||
"Favorites" : "Favourites",
|
||||
"Videos" : "Videos",
|
||||
"Albums" : "Albums",
|
||||
"People" : "People",
|
||||
"Archive" : "Archive",
|
||||
"On this day" : "On this day",
|
||||
"Tags" : "Tags",
|
||||
"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",
|
||||
"Drop changes" : "Drop changes",
|
||||
"Edit" : "Edit",
|
||||
"Loading …" : "Loading …",
|
||||
"Cancel" : "Cancel",
|
||||
"Delete" : "Delete",
|
||||
"Remove from album" : "Remove from album",
|
||||
"Download" : "Download",
|
||||
"Favorite" : "Favourite",
|
||||
"Unarchive" : "Unarchive",
|
||||
"Edit Date/Time" : "Edit Date/Time",
|
||||
"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",
|
||||
"Sidebar" : "Sidebar",
|
||||
"Close" : "Close",
|
||||
"Previous" : "Previous",
|
||||
"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",
|
||||
"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",
|
||||
"Add collaborators" : "Add collaborators",
|
||||
"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",
|
||||
"Day" : "Day",
|
||||
"Time" : "Time",
|
||||
"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",
|
||||
"Rename person" : "Rename person",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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 spacing" : "Text spacing",
|
||||
"Text alignment" : "Text alignment",
|
||||
"Font family" : "Font family",
|
||||
"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);");
|
||||
|
|
|
@ -1,43 +1,242 @@
|
|||
{ "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",
|
||||
"Timeline" : "Timeline",
|
||||
"Folders" : "Folders",
|
||||
"Favorites" : "Favourites",
|
||||
"Videos" : "Videos",
|
||||
"Albums" : "Albums",
|
||||
"People" : "People",
|
||||
"Archive" : "Archive",
|
||||
"On this day" : "On this day",
|
||||
"Tags" : "Tags",
|
||||
"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",
|
||||
"Drop changes" : "Drop changes",
|
||||
"Edit" : "Edit",
|
||||
"Loading …" : "Loading …",
|
||||
"Cancel" : "Cancel",
|
||||
"Delete" : "Delete",
|
||||
"Remove from album" : "Remove from album",
|
||||
"Download" : "Download",
|
||||
"Favorite" : "Favourite",
|
||||
"Unarchive" : "Unarchive",
|
||||
"Edit Date/Time" : "Edit Date/Time",
|
||||
"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",
|
||||
"Sidebar" : "Sidebar",
|
||||
"Close" : "Close",
|
||||
"Previous" : "Previous",
|
||||
"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",
|
||||
"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",
|
||||
"Add collaborators" : "Add collaborators",
|
||||
"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",
|
||||
"Day" : "Day",
|
||||
"Time" : "Time",
|
||||
"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",
|
||||
"Rename person" : "Rename person",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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 spacing" : "Text spacing",
|
||||
"Text alignment" : "Text alignment",
|
||||
"Font family" : "Font family",
|
||||
"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);"
|
||||
}
|
|
@ -18,6 +18,7 @@ OC.L10N.register(
|
|||
"Favorite" : "Pliŝatati",
|
||||
"View in folder" : "Vidi en dosierujo",
|
||||
"Share" : "Kunhavigi",
|
||||
"Close" : "Malfermi",
|
||||
"Previous" : "Antaŭa",
|
||||
"Next" : "Sekva",
|
||||
"Public link" : "Publika ligilo",
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
"Favorite" : "Pliŝatati",
|
||||
"View in folder" : "Vidi en dosierujo",
|
||||
"Share" : "Kunhavigi",
|
||||
"Close" : "Malfermi",
|
||||
"Previous" : "Antaŭa",
|
||||
"Next" : "Sekva",
|
||||
"Public link" : "Publika ligilo",
|
||||
|
|
|
@ -60,6 +60,7 @@ OC.L10N.register(
|
|||
"Failed to load some photos" : "Fallo al cargar algunas fotos",
|
||||
"Share" : "Compartir",
|
||||
"Sidebar" : "Barra lateral",
|
||||
"Close" : "Cerrar",
|
||||
"Previous" : "Anterior",
|
||||
"Next" : "Siguiente",
|
||||
"Video sharing not supported yet" : "Compartir videos no es soportado todavía",
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
"Failed to load some photos" : "Fallo al cargar algunas fotos",
|
||||
"Share" : "Compartir",
|
||||
"Sidebar" : "Barra lateral",
|
||||
"Close" : "Cerrar",
|
||||
"Previous" : "Anterior",
|
||||
"Next" : "Siguiente",
|
||||
"Video sharing not supported yet" : "Compartir videos no es soportado todavía",
|
||||
|
|
|
@ -17,6 +17,7 @@ OC.L10N.register(
|
|||
"Unarchive" : "Desarchivar",
|
||||
"View in folder" : "Ver en la carpeta",
|
||||
"Share" : "Compartir",
|
||||
"Close" : "Cerrar",
|
||||
"Previous" : "Anterior",
|
||||
"Next" : "Siguiente",
|
||||
"Back" : "Atrás",
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
"Unarchive" : "Desarchivar",
|
||||
"View in folder" : "Ver en la carpeta",
|
||||
"Share" : "Compartir",
|
||||
"Close" : "Cerrar",
|
||||
"Previous" : "Anterior",
|
||||
"Next" : "Siguiente",
|
||||
"Back" : "Atrás",
|
||||
|
|
|
@ -18,6 +18,7 @@ OC.L10N.register(
|
|||
"Unarchive" : "Desarchivar",
|
||||
"View in folder" : "Ver en la carpeta",
|
||||
"Share" : "Compartir",
|
||||
"Close" : "Cerrar",
|
||||
"Previous" : "Anterior",
|
||||
"Next" : "Siguiente",
|
||||
"Copy public link" : "Copiar link publico",
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
"Unarchive" : "Desarchivar",
|
||||
"View in folder" : "Ver en la carpeta",
|
||||
"Share" : "Compartir",
|
||||
"Close" : "Cerrar",
|
||||
"Previous" : "Anterior",
|
||||
"Next" : "Siguiente",
|
||||
"Copy public link" : "Copiar link publico",
|
||||
|
|
|
@ -18,6 +18,7 @@ OC.L10N.register(
|
|||
"Unarchive" : "Desarchivar",
|
||||
"View in folder" : "Ver en la carpeta",
|
||||
"Share" : "Compartir",
|
||||
"Close" : "Cerrar",
|
||||
"Previous" : "Previo",
|
||||
"Next" : "Siguiente",
|
||||
"Public link" : "Liga pública",
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
"Unarchive" : "Desarchivar",
|
||||
"View in folder" : "Ver en la carpeta",
|
||||
"Share" : "Compartir",
|
||||
"Close" : "Cerrar",
|
||||
"Previous" : "Previo",
|
||||
"Next" : "Siguiente",
|
||||
"Public link" : "Liga pública",
|
||||
|
|
|
@ -17,6 +17,7 @@ OC.L10N.register(
|
|||
"Unarchive" : "Desarchivar",
|
||||
"View in folder" : "Ver en la carpeta",
|
||||
"Share" : "Compartir",
|
||||
"Close" : "Cerrar",
|
||||
"Previous" : "Previo",
|
||||
"Next" : "Siguiente",
|
||||
"Public link" : "Liga pública",
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
"Unarchive" : "Desarchivar",
|
||||
"View in folder" : "Ver en la carpeta",
|
||||
"Share" : "Compartir",
|
||||
"Close" : "Cerrar",
|
||||
"Previous" : "Previo",
|
||||
"Next" : "Siguiente",
|
||||
"Public link" : "Liga pública",
|
||||
|
|
|
@ -172,7 +172,7 @@ OC.L10N.register(
|
|||
"Extension" : "Kiterjesztés",
|
||||
"Name is required." : "A név kötelező.",
|
||||
"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",
|
||||
"Actual size (100%)" : "Tényleges méret (100%)",
|
||||
"Fit size" : "Illeszkedő méret",
|
||||
|
|
|
@ -170,7 +170,7 @@
|
|||
"Extension" : "Kiterjesztés",
|
||||
"Name is required." : "A név kötelező.",
|
||||
"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",
|
||||
"Actual size (100%)" : "Tényleges méret (100%)",
|
||||
"Fit size" : "Illeszkedő méret",
|
||||
|
|
|
@ -39,6 +39,8 @@ OC.L10N.register(
|
|||
"Copy public link" : "Kopiera publik länk",
|
||||
"Share via public link" : "Dela via offentlig 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",
|
||||
"Create new album" : "Skapa nytt album",
|
||||
"Back" : "Tillbaka",
|
||||
|
|
|
@ -37,6 +37,8 @@
|
|||
"Copy public link" : "Kopiera publik länk",
|
||||
"Share via public link" : "Dela via offentlig 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",
|
||||
"Create new album" : "Skapa nytt album",
|
||||
"Back" : "Tillbaka",
|
||||
|
|
|
@ -251,16 +251,14 @@ class Index extends Command
|
|||
$uid = $user->getUID();
|
||||
$userFolder = $this->rootFolder->getUserFolder($uid);
|
||||
$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->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 {
|
||||
$folderPath = $folder->getPath();
|
||||
|
||||
// Respect the '.nomedia' file. If present don't traverse the folder
|
||||
if ($folder->nodeExists('.nomedia')) {
|
||||
++$this->nNoMedia;
|
||||
|
@ -272,9 +270,12 @@ class Index extends Command
|
|||
|
||||
foreach ($nodes as $i => &$node) {
|
||||
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) {
|
||||
$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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -90,18 +90,17 @@ class VideoSetup extends Command
|
|||
$output->writeln('Checking for go-vod binary');
|
||||
$goVodPath = $this->config->getSystemValue('memories.transcoder', false);
|
||||
|
||||
if (false === $goVodPath) {
|
||||
if (!\is_string($goVodPath) || !file_exists($goVodPath)) {
|
||||
// Detect architecture
|
||||
$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>');
|
||||
$this->suggestGoVod($output);
|
||||
|
||||
return $this->suggestDisable($output);
|
||||
}
|
||||
|
||||
$goVodPath = realpath(__DIR__."/../../exiftool-bin/go-vod-{$arch}");
|
||||
}
|
||||
|
||||
$output->writeln("Trying go-vod from {$goVodPath}");
|
||||
|
|
|
@ -218,19 +218,20 @@ class VideoController extends ApiBase
|
|||
}
|
||||
}
|
||||
|
||||
// Make and send response
|
||||
if ($blob) {
|
||||
$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;
|
||||
// Data not found
|
||||
if (!$blob) {
|
||||
return new JSONResponse(['message' => 'Live file not found'], Http::STATUS_NOT_FOUND);
|
||||
}
|
||||
|
||||
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)
|
||||
|
|
|
@ -199,11 +199,15 @@ class TimelineWrite
|
|||
*/
|
||||
public function deleteFile(File &$file)
|
||||
{
|
||||
$query = $this->connection->getQueryBuilder();
|
||||
$query->delete('memories')
|
||||
->where($query->expr()->eq('fileid', $query->createNamedParameter($file->getId(), IQueryBuilder::PARAM_INT)))
|
||||
;
|
||||
$query->executeStatement();
|
||||
$deleteFrom = function ($table) use (&$file) {
|
||||
$query = $this->connection->getQueryBuilder();
|
||||
$query->delete($table)
|
||||
->where($query->expr()->eq('fileid', $query->createNamedParameter($file->getId(), IQueryBuilder::PARAM_INT)))
|
||||
;
|
||||
$query->executeStatement();
|
||||
};
|
||||
$deleteFrom('memories');
|
||||
$deleteFrom('memories_livephoto');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -213,7 +217,9 @@ class TimelineWrite
|
|||
*/
|
||||
public function clear()
|
||||
{
|
||||
$sql = $this->connection->getDatabasePlatform()->getTruncateTableSQL('`*PREFIX*memories`', false);
|
||||
$this->connection->executeStatement($sql);
|
||||
$p = $this->connection->getDatabasePlatform();
|
||||
$t1 = $p->getTruncateTableSQL('`*PREFIX*memories`', false);
|
||||
$t2 = $p->getTruncateTableSQL('`*PREFIX*memories_livephoto`', false);
|
||||
$this->connection->executeStatement("{$t1}; {$t2}");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
exifver="12.49"
|
||||
|
||||
rm -rf exiftool-bin
|
||||
mkdir -p 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-glibc"
|
||||
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
|
||||
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-aarch64"
|
||||
chmod 755 go-vod-*
|
||||
|
|
|
@ -255,7 +255,7 @@ export default class App extends Mixins(GlobalMixin, UserConfig) {
|
|||
|
||||
linkClick() {
|
||||
const nav: any = this.$refs.nav;
|
||||
if (window.innerWidth <= 1024) nav?.toggleNavigation(false);
|
||||
if (globalThis.windowInnerWidth <= 1024) nav?.toggleNavigation(false);
|
||||
}
|
||||
|
||||
doRouteChecks() {
|
||||
|
@ -369,7 +369,6 @@ aside.app-sidebar {
|
|||
.memories-livephoto {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
contain: strict;
|
||||
|
||||
img,
|
||||
video {
|
||||
|
|
|
@ -95,7 +95,7 @@ export default class ScrollerManager extends Mixins(GlobalMixin) {
|
|||
|
||||
/** Get the visible ticks */
|
||||
get visibleTicks() {
|
||||
let key = 999900;
|
||||
let key = 9999999900;
|
||||
return this.ticks
|
||||
.filter((tick) => tick.s)
|
||||
.map((tick) => {
|
||||
|
@ -320,7 +320,7 @@ export default class ScrollerManager extends Mixins(GlobalMixin) {
|
|||
const fontSizePx = parseFloat(
|
||||
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;
|
||||
for (const [idx, tick] of this.ticks.entries()) {
|
||||
// Conservative
|
||||
|
|
|
@ -298,7 +298,7 @@ export default class SelectionManager extends Mixins(GlobalMixin, UserConfig) {
|
|||
this.rows[rowIdx].virtualSticky = true;
|
||||
|
||||
this.resetTouchParams();
|
||||
document.body.classList.add("vue-touching");
|
||||
globalThis.touchingPhoto = true;
|
||||
|
||||
this.touchAnchor = photo;
|
||||
this.prevOver = photo;
|
||||
|
@ -320,7 +320,7 @@ export default class SelectionManager extends Mixins(GlobalMixin, UserConfig) {
|
|||
this.resetTouchParams();
|
||||
|
||||
window.setTimeout(() => {
|
||||
if (!this.touchAnchor) document.body.classList.remove("vue-touching");
|
||||
if (!this.touchAnchor) globalThis.touchingPhoto = false;
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
|
@ -364,12 +364,13 @@ export default class SelectionManager extends Mixins(GlobalMixin, UserConfig) {
|
|||
|
||||
// Scroll if at top or bottom
|
||||
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) {
|
||||
this.touchScrollDelta = (-1 * (110 - touch.clientY)) / 3;
|
||||
} else {
|
||||
this.touchScrollDelta = (touch.clientY - window.innerHeight + 60) / 3;
|
||||
this.touchScrollDelta =
|
||||
(touch.clientY - globalThis.windowInnerHeight + 60) / 3;
|
||||
}
|
||||
|
||||
if (this.touchAnchor && !this.touchScrollInterval) {
|
||||
|
|
|
@ -313,11 +313,11 @@ export default class Timeline extends Mixins(GlobalMixin, UserConfig) {
|
|||
}
|
||||
|
||||
isMobile() {
|
||||
return window.innerWidth <= 768;
|
||||
return globalThis.windowInnerWidth <= 768;
|
||||
}
|
||||
|
||||
isMobileLayout() {
|
||||
return window.innerWidth <= 600;
|
||||
return globalThis.windowInnerWidth <= 600;
|
||||
}
|
||||
|
||||
get isMonthView() {
|
||||
|
@ -378,6 +378,11 @@ export default class Timeline extends Mixins(GlobalMixin, UserConfig) {
|
|||
|
||||
/** Do resize after some time */
|
||||
handleResizeWithDelay() {
|
||||
// Update global vars
|
||||
globalThis.windowInnerWidth = window.innerWidth;
|
||||
globalThis.windowInnerHeight = window.innerHeight;
|
||||
|
||||
// Reflow after timer
|
||||
if (this.resizeTimer) {
|
||||
clearTimeout(this.resizeTimer);
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
ref="inner"
|
||||
v-show="!editorOpen"
|
||||
@pointermove.passive="setUiVisible"
|
||||
@pointerdown.passive="setUiVisible"
|
||||
>
|
||||
<div class="top-bar" v-if="photoswipe" :class="{ showControls }">
|
||||
<NcActions
|
||||
|
@ -212,7 +213,7 @@ export default class Viewer extends Mixins(GlobalMixin) {
|
|||
if (this.canShare) base++;
|
||||
if (this.canEdit) base++;
|
||||
|
||||
if (window.innerWidth < 768) {
|
||||
if (globalThis.windowInnerWidth < 768) {
|
||||
return Math.min(base, 3);
|
||||
} else {
|
||||
return Math.min(base, 5);
|
||||
|
@ -304,6 +305,12 @@ export default class Viewer extends Mixins(GlobalMixin) {
|
|||
bgOpacity: 1,
|
||||
appendToEl: this.$refs.inner as HTMLElement,
|
||||
preload: [2, 2],
|
||||
|
||||
easing: "cubic-bezier(.22,.51,.48,1.01)",
|
||||
showHideAnimationType: "zoom",
|
||||
showAnimationDuration: 250,
|
||||
hideAnimationDuration: 250,
|
||||
|
||||
closeTitle: this.t("memories", "Close"),
|
||||
arrowPrevTitle: this.t("memories", "Previous"),
|
||||
arrowNextTitle: this.t("memories", "Next"),
|
||||
|
@ -311,8 +318,8 @@ export default class Viewer extends Mixins(GlobalMixin) {
|
|||
const sidebarWidth = this.sidebarOpen ? this.sidebarWidth : 0;
|
||||
this.outerWidth = `calc(100vw - ${sidebarWidth}px)`;
|
||||
return {
|
||||
x: window.innerWidth - sidebarWidth,
|
||||
y: window.innerHeight,
|
||||
x: globalThis.windowInnerWidth - sidebarWidth,
|
||||
y: globalThis.windowInnerHeight,
|
||||
};
|
||||
},
|
||||
...args,
|
||||
|
@ -550,7 +557,7 @@ export default class Viewer extends Mixins(GlobalMixin) {
|
|||
const thumb = this.thumbElem(e.slide.data?.photo);
|
||||
if (thumb && this.fullyOpened) {
|
||||
const rect = thumb.getBoundingClientRect();
|
||||
if (rect.bottom < 50 || rect.top > window.innerHeight - 50) {
|
||||
if (rect.bottom < 50 || rect.top > globalThis.windowInnerHeight - 50) {
|
||||
thumb.scrollIntoView({
|
||||
block: "center",
|
||||
});
|
||||
|
@ -914,7 +921,9 @@ export default class Viewer extends Mixins(GlobalMixin) {
|
|||
|
||||
.fullyOpened :deep .pswp__container {
|
||||
@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 {
|
||||
contain: strict;
|
||||
|
||||
.pswp__zoom-wrap {
|
||||
width: 100%;
|
||||
}
|
||||
|
|
|
@ -232,7 +232,7 @@ export default class Photo extends Mixins(GlobalMixin) {
|
|||
|
||||
contextmenu(e: Event) {
|
||||
// user is trying to select the photo
|
||||
if (document.body.classList.contains("vue-touching")) {
|
||||
if (globalThis.touchingPhoto) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
}
|
||||
|
@ -298,7 +298,7 @@ $icon-size: $icon-half-size * 2;
|
|||
cursor: pointer;
|
||||
|
||||
display: none;
|
||||
body:not(.vue-touching) .p-outer:hover > & {
|
||||
.p-outer:hover > & {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
|
@ -411,7 +411,7 @@ div.img-outer {
|
|||
|
||||
display: none;
|
||||
transition: border-radius 0.1s ease-in;
|
||||
body:not(.vue-touching) .p-outer:not(.selected):hover > & {
|
||||
.p-outer:not(.selected):hover > & {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -147,7 +147,7 @@ export default class OnThisDay extends Mixins(GlobalMixin) {
|
|||
// Choose preview photo
|
||||
for (const year of this.years) {
|
||||
// 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);
|
||||
year.preview = utils.randomChoice(landscape);
|
||||
}
|
||||
|
|
|
@ -39,9 +39,18 @@ declare global {
|
|||
|
||||
var editDate: (photo: IPhoto) => void;
|
||||
var currentViewerPhoto: IPhoto;
|
||||
|
||||
var touchingPhoto: boolean;
|
||||
var windowInnerWidth: number; // cache
|
||||
var windowInnerHeight: number; // cache
|
||||
}
|
||||
|
||||
globalThis.vuerouter = router;
|
||||
|
||||
globalThis.touchingPhoto = false;
|
||||
globalThis.windowInnerWidth = window.innerWidth;
|
||||
globalThis.windowInnerHeight = window.innerHeight;
|
||||
|
||||
Vue.use(VueVirtualScroller);
|
||||
|
||||
// https://github.com/nextcloud/photos/blob/156f280c0476c483cb9ce81769ccb0c1c6500a4e/src/main.js
|
||||
|
|
Loading…
Reference in New Issue