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.
## 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

3
l10n/af.js vendored
View File

@ -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",

3
l10n/af.json vendored
View File

@ -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",

1
l10n/an.js vendored
View File

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

1
l10n/an.json vendored
View File

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

3
l10n/ar.js vendored
View File

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

3
l10n/ar.json vendored
View File

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

3
l10n/ast.js vendored
View File

@ -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",

3
l10n/ast.json vendored
View File

@ -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",

3
l10n/az.js vendored
View File

@ -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",

3
l10n/az.json vendored
View File

@ -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",

3
l10n/bg.js vendored
View File

@ -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}",

3
l10n/bg.json vendored
View File

@ -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}",

3
l10n/bn_BD.js vendored
View File

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

3
l10n/bn_BD.json vendored
View File

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

2
l10n/br.js vendored
View File

@ -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",

2
l10n/br.json vendored
View File

@ -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",

3
l10n/bs.js vendored
View File

@ -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",

3
l10n/bs.json vendored
View File

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

3
l10n/ca.js vendored
View File

@ -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",

3
l10n/ca.json vendored
View File

@ -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",

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",
"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",

1
l10n/cs.json vendored
View File

@ -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",

1
l10n/cy_GB.js vendored
View File

@ -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",

1
l10n/cy_GB.json vendored
View File

@ -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",

1
l10n/da.js vendored
View File

@ -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",

1
l10n/da.json vendored
View File

@ -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",

3
l10n/de.js vendored
View File

@ -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",

3
l10n/de.json vendored
View File

@ -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",

1
l10n/de_DE.js vendored
View File

@ -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",

1
l10n/de_DE.json vendored
View File

@ -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",

15
l10n/el.js vendored
View File

@ -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);");

15
l10n/el.json vendored
View File

@ -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);"
}

201
l10n/en_GB.js vendored
View File

@ -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);");

201
l10n/en_GB.json vendored
View File

@ -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);"
}

1
l10n/eo.js vendored
View File

@ -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",

1
l10n/eo.json vendored
View File

@ -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",

1
l10n/es.js vendored
View File

@ -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",

1
l10n/es.json vendored
View File

@ -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",

1
l10n/es_419.js vendored
View File

@ -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",

1
l10n/es_419.json vendored
View File

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

1
l10n/es_AR.js vendored
View File

@ -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",

1
l10n/es_AR.json vendored
View File

@ -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",

1
l10n/es_CL.js vendored
View File

@ -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",

1
l10n/es_CL.json vendored
View File

@ -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",

1
l10n/es_CO.js vendored
View File

@ -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",

1
l10n/es_CO.json vendored
View File

@ -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",

2
l10n/hu.js vendored
View File

@ -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",

2
l10n/hu.json vendored
View File

@ -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",

2
l10n/sv.js vendored
View File

@ -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",

2
l10n/sv.json vendored
View File

@ -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",

View File

@ -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);
}
}

View File

@ -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}");

View File

@ -218,8 +218,12 @@ class VideoController extends ApiBase
}
}
// Data not found
if (!$blob) {
return new JSONResponse(['message' => 'Live file not found'], Http::STATUS_NOT_FOUND);
}
// Make and send response
if ($blob) {
$response = new DataDisplayResponse($blob, Http::STATUS_OK, []);
$response->setHeaders([
'Content-Type' => $mime,
@ -230,9 +234,6 @@ class VideoController extends ApiBase
return $response;
}
return new JSONResponse(['message' => 'Live file not found'], Http::STATUS_NOT_FOUND);
}
private function getUpstream($client, $path, $profile)
{
$path = rawurlencode($path);

View File

@ -199,11 +199,15 @@ class TimelineWrite
*/
public function deleteFile(File &$file)
{
$deleteFrom = function ($table) use (&$file) {
$query = $this->connection->getQueryBuilder();
$query->delete('memories')
$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}");
}
}

View File

@ -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-*

View File

@ -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 {

View File

@ -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

View File

@ -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) {

View File

@ -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);
}

View File

@ -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%;
}

View File

@ -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;
}
}

View File

@ -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);
}

View File

@ -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