Merge branch 'master' into location

pull/376/head
Raymond Huang 2023-02-01 12:18:42 +08:00
commit 93b4b0274e
28 changed files with 640 additions and 60 deletions

View File

@ -33,7 +33,7 @@ Memories is a *batteries-included* photo management solution for Nextcloud with
1. Run `php ./occ memories:index` to generate metadata indices for existing photos.
1. Open the 📷 Memories app in Nextcloud and set the directory containing your photos.
]]></description>
<version>4.10.2</version>
<version>4.10.3</version>
<licence>agpl</licence>
<author mail="radialapps@gmail.com" >Varun Patil</author>
<namespace>Memories</namespace>

10
l10n/bg.js vendored
View File

@ -41,6 +41,7 @@ OC.L10N.register(
"Edit Date/Time" : "Редактиране на Дата/Час",
"Edit EXIF Data" : "Редактиране на EXIF данни",
"View in folder" : "Преглед в папката",
"Move to folder" : "Преместване в папка",
"Add to album" : "Добавяне към албум",
"Move to another person" : "Преминаване към друго лице",
"Remove from person" : "Премахване от лице",
@ -112,6 +113,7 @@ OC.L10N.register(
"Label" : "Име",
"Camera Make" : "Марка на камера",
"Camera Model" : "Модел на камера",
"Lens Model" : "Модел на обектива",
"Copyright" : "Авторско право",
"Remove person" : "Премахване на лице",
"Are you sure you want to remove {name}?" : "Сигурни ли сте, че искате премахване на {name}?",
@ -131,6 +133,8 @@ OC.L10N.register(
"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." : "Ако създадете публично споделяне на връзка, щракнете върху Опресняване и съответна връзка към приложението Спомени ще бъде показана по-долу.",
"Refresh" : "Опресняване",
"Choose a folder" : "Избор на папка",
"_{n} item moved to folder_::_{n} items moved to folder_" : ["{n} елементa са преместени в папката","{n} елементa са преместени в папката"],
"Remove" : "Премахване",
"Add Path" : "Добавяне на път",
"Add a root to your timeline" : "Избо на основа /начало/ към вашата времева линия ",
@ -140,6 +144,8 @@ OC.L10N.register(
"Merge with different person" : "Обединяване с различно лице",
"Mark person in preview" : "Маркиране на лице в предварителен преглед",
"Share folder" : "Споделяне на папка",
"Folder View" : "Изглед на папка",
"Timeline View" : "Изглед на времева линия",
"Move left" : "Преместване наляво",
"Move right" : "Преместване надясно",
"Failed to get Exif data. Metadata may be lost!" : "Неуспешно получаване на Exif данни. Възможно е метаданните да са загубени!",
@ -246,12 +252,16 @@ OC.L10N.register(
"Direct" : "Директно",
"Auto" : "Автоматично",
"Shared Folder" : "Споделена папка",
"Shared Album" : "Споделен албум",
"Failed to create {albumName}." : "Неуспешно създаване на {albumName}.",
"Failed to rename {currentAlbumName} to {newAlbumName}." : "Неуспешно преименуване от {currentAlbumName} на {newAlbumName}.",
"General Failure" : "Грешка от общ характер",
"Error: {msg}" : "Грешка: {msg}",
"Failed to delete files." : "Неуспешно изтриване на файлове.",
"Failed to delete {fileName}." : "Неуспешно изтриване на {fileName}.",
"Failed to move files." : "Неуспешно преместване на файлове.",
"Could not move {fileName}, target exists." : "Файлът {fileName} не може да бъде преместен, дестинацията съществува.",
"Failed to move {fileName}." : "Неуспешно преместване на {fileName}.",
"Failed to download files" : "Неуспешно изтегляне на файлове",
"Failed to favorite files." : "Неуспешно добавяне на файлове в любими.",
"Failed to favorite some files." : "Неуспешно добавяне на някой файлове в любими.",

10
l10n/bg.json vendored
View File

@ -39,6 +39,7 @@
"Edit Date/Time" : "Редактиране на Дата/Час",
"Edit EXIF Data" : "Редактиране на EXIF данни",
"View in folder" : "Преглед в папката",
"Move to folder" : "Преместване в папка",
"Add to album" : "Добавяне към албум",
"Move to another person" : "Преминаване към друго лице",
"Remove from person" : "Премахване от лице",
@ -110,6 +111,7 @@
"Label" : "Име",
"Camera Make" : "Марка на камера",
"Camera Model" : "Модел на камера",
"Lens Model" : "Модел на обектива",
"Copyright" : "Авторско право",
"Remove person" : "Премахване на лице",
"Are you sure you want to remove {name}?" : "Сигурни ли сте, че искате премахване на {name}?",
@ -129,6 +131,8 @@
"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." : "Ако създадете публично споделяне на връзка, щракнете върху Опресняване и съответна връзка към приложението Спомени ще бъде показана по-долу.",
"Refresh" : "Опресняване",
"Choose a folder" : "Избор на папка",
"_{n} item moved to folder_::_{n} items moved to folder_" : ["{n} елементa са преместени в папката","{n} елементa са преместени в папката"],
"Remove" : "Премахване",
"Add Path" : "Добавяне на път",
"Add a root to your timeline" : "Избо на основа /начало/ към вашата времева линия ",
@ -138,6 +142,8 @@
"Merge with different person" : "Обединяване с различно лице",
"Mark person in preview" : "Маркиране на лице в предварителен преглед",
"Share folder" : "Споделяне на папка",
"Folder View" : "Изглед на папка",
"Timeline View" : "Изглед на времева линия",
"Move left" : "Преместване наляво",
"Move right" : "Преместване надясно",
"Failed to get Exif data. Metadata may be lost!" : "Неуспешно получаване на Exif данни. Възможно е метаданните да са загубени!",
@ -244,12 +250,16 @@
"Direct" : "Директно",
"Auto" : "Автоматично",
"Shared Folder" : "Споделена папка",
"Shared Album" : "Споделен албум",
"Failed to create {albumName}." : "Неуспешно създаване на {albumName}.",
"Failed to rename {currentAlbumName} to {newAlbumName}." : "Неуспешно преименуване от {currentAlbumName} на {newAlbumName}.",
"General Failure" : "Грешка от общ характер",
"Error: {msg}" : "Грешка: {msg}",
"Failed to delete files." : "Неуспешно изтриване на файлове.",
"Failed to delete {fileName}." : "Неуспешно изтриване на {fileName}.",
"Failed to move files." : "Неуспешно преместване на файлове.",
"Could not move {fileName}, target exists." : "Файлът {fileName} не може да бъде преместен, дестинацията съществува.",
"Failed to move {fileName}." : "Неуспешно преместване на {fileName}.",
"Failed to download files" : "Неуспешно изтегляне на файлове",
"Failed to favorite files." : "Неуспешно добавяне на файлове в любими.",
"Failed to favorite some files." : "Неуспешно добавяне на някой файлове в любими.",

6
l10n/es.js vendored
View File

@ -113,6 +113,7 @@ OC.L10N.register(
"Label" : "Etiqueta",
"Camera Make" : "Marca de la cámara",
"Camera Model" : "Modelo de la cámara",
"Lens Model" : "Modelo del lente",
"Copyright" : "Derechos de autor",
"Remove person" : "Eliminar persona",
"Are you sure you want to remove {name}?" : "¿Está seguro de que quiere quitar {name}?",
@ -133,6 +134,7 @@ OC.L10N.register(
"If you create a public link share, click on refresh and a corresponding link to Memories will be shown below." : "Si crea un enlace público de compartición, haga click en refrescar y se mostrará abajo el enlace correspondiente a Memories.",
"Refresh" : "Actualizar",
"Choose a folder" : "Elige una carpeta",
"_{n} item moved to folder_::_{n} items moved to folder_" : ["{n} ítem movidos a la carpeta","{n} ítems movidos a la carpeta","{n} ítems movidos a la carpeta"],
"Remove" : "Quitar",
"Add Path" : "Añadir ruta",
"Add a root to your timeline" : "Añadir una raíz a su línea de tiempo",
@ -142,6 +144,8 @@ OC.L10N.register(
"Merge with different person" : "Unir con una persona diferente",
"Mark person in preview" : "Marcar persona en vista previa",
"Share folder" : "Compartir carpeta",
"Folder View" : "Vista de Carpetas",
"Timeline View" : "Vista de línea de tiempo",
"Move left" : "Mover a la izquierda",
"Move right" : "Mover a la derecha",
"Failed to get Exif data. Metadata may be lost!" : "Fallo al obtener los datos Exif. ¡Podrían haberse perdido los metadatos!",
@ -256,6 +260,8 @@ OC.L10N.register(
"Failed to delete files." : "Fallo al eliminar archivos.",
"Failed to delete {fileName}." : "Fallo al eliminar {fileName}.",
"Failed to move files." : "Error al mover archivos.",
"Could not move {fileName}, target exists." : "No fue posible mover {fileName}, el destino existe.",
"Failed to move {fileName}." : "Fallo al mover {fileName}.",
"Failed to download files" : "Fallo al descargar archivos",
"Failed to favorite files." : "Fallo al marcar archivos como favoritos.",
"Failed to favorite some files." : "Fallo al marcar algunos archivos como favoritos.",

6
l10n/es.json vendored
View File

@ -111,6 +111,7 @@
"Label" : "Etiqueta",
"Camera Make" : "Marca de la cámara",
"Camera Model" : "Modelo de la cámara",
"Lens Model" : "Modelo del lente",
"Copyright" : "Derechos de autor",
"Remove person" : "Eliminar persona",
"Are you sure you want to remove {name}?" : "¿Está seguro de que quiere quitar {name}?",
@ -131,6 +132,7 @@
"If you create a public link share, click on refresh and a corresponding link to Memories will be shown below." : "Si crea un enlace público de compartición, haga click en refrescar y se mostrará abajo el enlace correspondiente a Memories.",
"Refresh" : "Actualizar",
"Choose a folder" : "Elige una carpeta",
"_{n} item moved to folder_::_{n} items moved to folder_" : ["{n} ítem movidos a la carpeta","{n} ítems movidos a la carpeta","{n} ítems movidos a la carpeta"],
"Remove" : "Quitar",
"Add Path" : "Añadir ruta",
"Add a root to your timeline" : "Añadir una raíz a su línea de tiempo",
@ -140,6 +142,8 @@
"Merge with different person" : "Unir con una persona diferente",
"Mark person in preview" : "Marcar persona en vista previa",
"Share folder" : "Compartir carpeta",
"Folder View" : "Vista de Carpetas",
"Timeline View" : "Vista de línea de tiempo",
"Move left" : "Mover a la izquierda",
"Move right" : "Mover a la derecha",
"Failed to get Exif data. Metadata may be lost!" : "Fallo al obtener los datos Exif. ¡Podrían haberse perdido los metadatos!",
@ -254,6 +258,8 @@
"Failed to delete files." : "Fallo al eliminar archivos.",
"Failed to delete {fileName}." : "Fallo al eliminar {fileName}.",
"Failed to move files." : "Error al mover archivos.",
"Could not move {fileName}, target exists." : "No fue posible mover {fileName}, el destino existe.",
"Failed to move {fileName}." : "Fallo al mover {fileName}.",
"Failed to download files" : "Fallo al descargar archivos",
"Failed to favorite files." : "Fallo al marcar archivos como favoritos.",
"Failed to favorite some files." : "Fallo al marcar algunos archivos como favoritos.",

5
l10n/es_MX.js vendored
View File

@ -1,10 +1,12 @@
OC.L10N.register(
"memories",
{
"Memories" : "Recuerdos",
"Settings" : "Ajustes",
"Folders" : "Carpetas",
"Favorites" : "Favoritos",
"Videos" : "Videos",
"Albums" : "Álbumes",
"Archive" : "Archivar",
"Tags" : "Etiquetas",
"Maps" : "Mapas",
@ -45,6 +47,7 @@ OC.L10N.register(
"Text" : "Texto",
"Size" : "Tamaño",
"Position" : "Posición",
"Name is required." : "Nombre es requerido."
"Name is required." : "Nombre es requerido.",
"Quality" : "Calidad"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

5
l10n/es_MX.json vendored
View File

@ -1,8 +1,10 @@
{ "translations": {
"Memories" : "Recuerdos",
"Settings" : "Ajustes",
"Folders" : "Carpetas",
"Favorites" : "Favoritos",
"Videos" : "Videos",
"Albums" : "Álbumes",
"Archive" : "Archivar",
"Tags" : "Etiquetas",
"Maps" : "Mapas",
@ -43,6 +45,7 @@
"Text" : "Texto",
"Size" : "Tamaño",
"Position" : "Posición",
"Name is required." : "Nombre es requerido."
"Name is required." : "Nombre es requerido.",
"Quality" : "Calidad"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

2
l10n/hu.js vendored
View File

@ -113,6 +113,7 @@ OC.L10N.register(
"Label" : "Címke",
"Camera Make" : "Kamera gyártmánya",
"Camera Model" : "Kamera modellje",
"Lens Model" : "Lencse modellje",
"Copyright" : "Szerzői jog",
"Remove person" : "Személy eltávolítása",
"Are you sure you want to remove {name}?" : "Biztos, hogy eltávolítja a következőt: {name}?",
@ -133,6 +134,7 @@ OC.L10N.register(
"If you create a public link share, click on refresh and a corresponding link to Memories will be shown below." : "Ha nyilvános hivatkozásos megosztást hoz létre, kattintson a frissítésre, és lent megjelenik az Emlékeknek megfelelő hivatkozás.",
"Refresh" : "Frissítés",
"Choose a folder" : "Válasszon mappát",
"_{n} item moved to folder_::_{n} items moved to folder_" : ["{n} elem áthelyezve a mappába","{n} elem áthelyezve a mappába"],
"Remove" : "Eltávolítás",
"Add Path" : "Útvonal hozzáadása",
"Add a root to your timeline" : "Gyökér hozzáadása az idővonalához",

2
l10n/hu.json vendored
View File

@ -111,6 +111,7 @@
"Label" : "Címke",
"Camera Make" : "Kamera gyártmánya",
"Camera Model" : "Kamera modellje",
"Lens Model" : "Lencse modellje",
"Copyright" : "Szerzői jog",
"Remove person" : "Személy eltávolítása",
"Are you sure you want to remove {name}?" : "Biztos, hogy eltávolítja a következőt: {name}?",
@ -131,6 +132,7 @@
"If you create a public link share, click on refresh and a corresponding link to Memories will be shown below." : "Ha nyilvános hivatkozásos megosztást hoz létre, kattintson a frissítésre, és lent megjelenik az Emlékeknek megfelelő hivatkozás.",
"Refresh" : "Frissítés",
"Choose a folder" : "Válasszon mappát",
"_{n} item moved to folder_::_{n} items moved to folder_" : ["{n} elem áthelyezve a mappába","{n} elem áthelyezve a mappába"],
"Remove" : "Eltávolítás",
"Add Path" : "Útvonal hozzáadása",
"Add a root to your timeline" : "Gyökér hozzáadása az idővonalához",

123
l10n/nl.js vendored
View File

@ -1,6 +1,8 @@
OC.L10N.register(
"memories",
{
"Memories" : "Herinneringen",
"Fast, modern and advanced photo management suite" : "Snelle, moderne en geavanceerde suite voor fotobeheer",
"Settings" : "Instellingen",
"People" : "Mensen",
"Timeline" : "Tijdlijn",
@ -8,62 +10,169 @@ OC.L10N.register(
"Favorites" : "Favorieten",
"Videos" : "Videos",
"Albums" : "Albums",
"Archive" : "Archiveren",
"Archive" : "Archief",
"On this day" : "Vandaag",
"Tags" : "Tags",
"Maps" : "Kaarten",
"A better photos experience awaits you" : "Een betere foto-ervaring wacht op je",
"Choose the root folder of your timeline to begin" : "Kies de hoofdmap van je tijdlijn om te beginnen",
"If you just installed Memories, run:" : "Als je Herinneringen net hebt geïnstalleerd, voer je het volgende uit:",
"Continue to Memories" : "Doorgaan naar Herinneringen",
"Choose again" : "Opnieuw kiezen",
"Click here to start" : "Klik hier om te beginnen",
"You can always change this later in settings" : "Je kunt dit later altijd nog wijzigen in de instellingen",
"Choose the root of your timeline" : "Kies de hoofdmap van je tijdlijn",
"_Found {n} item in {path}_::_Found {n} items in {path}_" : ["{n} items gevonden in {path}","{n} items gevonden in {path}"],
"Edit" : "Bewerk",
"No title" : "Geen titel",
"No description" : "Geen beschrijving",
"Loading …" : "Laden …",
"Cancel" : "Annuleren",
"Delete" : "Verwijder",
"Remove from album" : "Verwijderen uit album",
"Download" : "Download",
"Favorite" : "Favoriet",
"Unarchive" : "Terugzetten uit archief",
"Edit Date/Time" : "Datum/tijd bewerken",
"Edit EXIF Data" : "Bewerk EXIF gegevens",
"View in folder" : "Bekijken in map",
"Move to folder" : "Verplaatsen naar map",
"Add to album" : "Toevoegen aan album",
"Your Timeline" : "Je tijdlijn",
"Processing … {n}/{m}" : "Verwerken … {n}/{m}",
"_{n} item added to album_::_{n} items added to album_" : ["{n} items toegevoegd aan album","{n} items toegevoegd aan album"],
"Search for collaborators" : "Zoeken naar bijdragers",
"Search people or groups" : "Zoek mensen of groepen",
"Add {collaboratorLabel} to the collaborators list" : "Voeg {collaboratorLabel} toe aan de bijdragerslijst",
"No collaborators available" : "Geen bijdragers beschikbaar",
"Remove {collaboratorLabel} from the collaborators list" : "Verwijder {collaboratorLabel} van de bijdragerslijst",
"Copy the public link" : "Kopieer de openbare link",
"Delete the public link" : "Verwijder de openbare link",
"Add people or groups who can edit your album" : "Voeg mensen of groepen toe die je album kunnen bewerken",
"Public link copied!" : "Openbare link gekopieerd!",
"Copy public link" : "Kopieer openbare link",
"Public link" : "Openbare Link",
"Share via public link" : "Deel via openbare link",
"Failed to fetch collaborators list." : "Ophalen van bijdragerslijst is mislukt.",
"Public link" : "Openbare link",
"Failed to fetch album." : "Ophalen van album mislukt.",
"Failed to update album." : "Bijwerken van album mislukt.",
"New album" : "Nieuw album",
"Create new album" : "Maak nieuw album",
"Edit album details" : "Bewerk albumdetails",
"Could not load the selected album" : "Kon het geselecteerde album niet laden",
"Remove Album" : "Verwijder album",
"Failed to delete {name}." : "Verwijderen van {name} mislukt.",
"Name of the album" : "Naam van het album",
"Location of the album" : "Locatie van het album",
"Go back to the previous view." : "Ga terug naar de vorige weergave.",
"Go to the add collaborators view." : "Ga naar de bijdragers toevoegen weergave.",
"Back to the new album form." : "Terug naar het formulier voor nieuw album.",
"Back" : "Terug",
"Add collaborators" : "Bijdragers toevoegen",
"Save" : "Opslaan",
"Create album" : "Maak album",
"Add selection to album {albumName}" : "Selectie toevoegen aan album {albumName}",
"Create a new album." : "Maak een nieuw album.",
"_Share with %n user_::_Share with %n users_" : ["Delen met %n gebruiker","Delen met %n gebruikers"],
"Save collaborators for this album." : "Bewaar bijdragers voor dit album.",
"Year" : "Jaar",
"Month" : "Maand",
"Day" : "Dag",
"Time" : "Tijd",
"Hour" : "Uur",
"Minute" : "Minuut",
"Update Exif" : "Exif bijwerken",
"Title" : "Titel",
"Description" : "Beschrijving",
"Date Taken" : "Datum gemaakt",
"Label" : "Label",
"Camera Make" : "Cameramerk",
"Camera Model" : "Cameramodel",
"Lens Model" : "Lensmodel",
"Copyright" : "Auteursrecht",
"Remove person" : "Verwijder persoon",
"Name" : "Naam",
"Rename person" : "Hernoem persoon",
"Update" : "Update",
"Share Folder" : "Map delen",
"You cannot share the root folder" : "Je kunt de hoofdmap niet delen",
"Use the sidebar to share this folder." : "Gebruik de zijbalk om deze map te delen.",
"If you create a public link share, click on refresh and a corresponding link to Memories will be shown below." : "Als je een openbare deellink maakt, klik op vernieuwen en een bijbehorende link naar Herinneringen wordt hieronder weergegeven.",
"Refresh" : "Verversen",
"Remove" : "Verwijderen",
"Share album" : "Album delen",
"Download album" : "Album downloaden",
"Delete album" : "Album verwijderen",
"Merge with different person" : "Samenvoegen met ander persoon",
"Share folder" : "Map delen",
"Folder View" : "Mapweergave",
"Timeline View" : "Tijdlijnweergave",
"No Exif data found! Continue?" : "Geen Exif gegevens gevonden! Doorgaan?",
"Unsaved changes" : "Niet opgeslagen veranderingen",
"Share" : "Delen",
"Sidebar" : "Zijbalk",
"Slideshow" : "Diavoorstelling",
"Close" : "Sluit",
"Previous" : "Vorige",
"Next" : "Volgende",
"Are you sure you want to delete?" : "Weet je zeker dat je wilt verwijderen?",
"Reset" : "Herstellen",
"All changes will be lost." : "Alle aanpassingen zullen verloren gaan.",
"Are you sure you want to continue?" : "Weet je zeker dat je wilt doorgaan?",
"Continue" : "Doorgaan",
"Undo" : "Ongedaan maken",
"Redo" : "Opnieuw doen",
"Zoom in" : "Zoom in",
"Draw" : "Teken",
"Show original image" : "Toon originele afbeelding",
"Zoom in" : "Inzoomen",
"Zoom out" : "Uitzoomen",
"Toggle zoom menu" : "Toon/verberg zoommenu",
"Adjust" : "Aanpassen",
"Filters" : "Filters",
"Draw" : "Tekenen",
"Original" : "Origineel",
"Custom" : "Maatwerk",
"Un-flip X" : "Ontspiegelen X",
"Custom" : "Aangepast",
"Landscape" : "Landschap",
"Portrait" : "Portret",
"Ellipse" : "Ovaal",
"Arrow" : "Pijl",
"Blur" : "Vervagen",
"Brightness" : "Helderheid",
"Contrast" : "Contrast",
"Un-flip X" : "Ontspiegel X",
"Flip X" : "Spiegel X",
"Un-flip Y" : "Spiegel Y",
"Flip Y" : "Ontspiegel Y",
"HSV" : "HSV",
"Hue" : "Tint",
"Saturation" : "Verzadiging",
"Value" : "Waarden",
"Image" : "Afbeelding",
"+ Add image" : "+ Afbeelding toevoegen",
"Line" : "Lijn",
"Polygon" : "Veelhoek",
"Rectangle" : "Rechthoek",
"Corner Radius" : "Hoekradius",
"Height in pixels" : "Hoogte in pixels",
"Toggle ratio lock" : "In-/uitschakelen ratio vergrendeling",
"Rotate" : "Draaien",
"Text" : "Tekst",
"Size" : "Omvang",
"Line height" : "Regelhoogte",
"Warmth" : "Warmte",
"Shadow" : "Schaduw",
"Opacity" : "Doorzichtigheid",
"Position" : "Positie",
"Stroke" : "Rand",
"Extension" : "Extensie",
"Name is required." : "Naam is verplicht.",
"Quality" : "Kwaliteit",
"Saved image size (width x height)" : "Grootte van opgeslagen afbeelding (breedte x hoogte)",
"Actual size (100%)" : "Ware grootte (100%)",
"Fit size" : "Passend maken",
"Direct" : "Direct",
"Auto" : "Automatisch"
"Auto" : "Automatisch",
"Failed to create {albumName}." : "Het maken van {albumName} is mislukt.",
"Failed to rename {currentAlbumName} to {newAlbumName}." : "Hernoemen van {currentAlbumName} naar {newAlbumName} mislukt.",
"Failed to delete {fileName}." : "Verwijderen van {fileName} mislukt."
},
"nplurals=2; plural=(n != 1);");

123
l10n/nl.json vendored
View File

@ -1,4 +1,6 @@
{ "translations": {
"Memories" : "Herinneringen",
"Fast, modern and advanced photo management suite" : "Snelle, moderne en geavanceerde suite voor fotobeheer",
"Settings" : "Instellingen",
"People" : "Mensen",
"Timeline" : "Tijdlijn",
@ -6,62 +8,169 @@
"Favorites" : "Favorieten",
"Videos" : "Videos",
"Albums" : "Albums",
"Archive" : "Archiveren",
"Archive" : "Archief",
"On this day" : "Vandaag",
"Tags" : "Tags",
"Maps" : "Kaarten",
"A better photos experience awaits you" : "Een betere foto-ervaring wacht op je",
"Choose the root folder of your timeline to begin" : "Kies de hoofdmap van je tijdlijn om te beginnen",
"If you just installed Memories, run:" : "Als je Herinneringen net hebt geïnstalleerd, voer je het volgende uit:",
"Continue to Memories" : "Doorgaan naar Herinneringen",
"Choose again" : "Opnieuw kiezen",
"Click here to start" : "Klik hier om te beginnen",
"You can always change this later in settings" : "Je kunt dit later altijd nog wijzigen in de instellingen",
"Choose the root of your timeline" : "Kies de hoofdmap van je tijdlijn",
"_Found {n} item in {path}_::_Found {n} items in {path}_" : ["{n} items gevonden in {path}","{n} items gevonden in {path}"],
"Edit" : "Bewerk",
"No title" : "Geen titel",
"No description" : "Geen beschrijving",
"Loading …" : "Laden …",
"Cancel" : "Annuleren",
"Delete" : "Verwijder",
"Remove from album" : "Verwijderen uit album",
"Download" : "Download",
"Favorite" : "Favoriet",
"Unarchive" : "Terugzetten uit archief",
"Edit Date/Time" : "Datum/tijd bewerken",
"Edit EXIF Data" : "Bewerk EXIF gegevens",
"View in folder" : "Bekijken in map",
"Move to folder" : "Verplaatsen naar map",
"Add to album" : "Toevoegen aan album",
"Your Timeline" : "Je tijdlijn",
"Processing … {n}/{m}" : "Verwerken … {n}/{m}",
"_{n} item added to album_::_{n} items added to album_" : ["{n} items toegevoegd aan album","{n} items toegevoegd aan album"],
"Search for collaborators" : "Zoeken naar bijdragers",
"Search people or groups" : "Zoek mensen of groepen",
"Add {collaboratorLabel} to the collaborators list" : "Voeg {collaboratorLabel} toe aan de bijdragerslijst",
"No collaborators available" : "Geen bijdragers beschikbaar",
"Remove {collaboratorLabel} from the collaborators list" : "Verwijder {collaboratorLabel} van de bijdragerslijst",
"Copy the public link" : "Kopieer de openbare link",
"Delete the public link" : "Verwijder de openbare link",
"Add people or groups who can edit your album" : "Voeg mensen of groepen toe die je album kunnen bewerken",
"Public link copied!" : "Openbare link gekopieerd!",
"Copy public link" : "Kopieer openbare link",
"Public link" : "Openbare Link",
"Share via public link" : "Deel via openbare link",
"Failed to fetch collaborators list." : "Ophalen van bijdragerslijst is mislukt.",
"Public link" : "Openbare link",
"Failed to fetch album." : "Ophalen van album mislukt.",
"Failed to update album." : "Bijwerken van album mislukt.",
"New album" : "Nieuw album",
"Create new album" : "Maak nieuw album",
"Edit album details" : "Bewerk albumdetails",
"Could not load the selected album" : "Kon het geselecteerde album niet laden",
"Remove Album" : "Verwijder album",
"Failed to delete {name}." : "Verwijderen van {name} mislukt.",
"Name of the album" : "Naam van het album",
"Location of the album" : "Locatie van het album",
"Go back to the previous view." : "Ga terug naar de vorige weergave.",
"Go to the add collaborators view." : "Ga naar de bijdragers toevoegen weergave.",
"Back to the new album form." : "Terug naar het formulier voor nieuw album.",
"Back" : "Terug",
"Add collaborators" : "Bijdragers toevoegen",
"Save" : "Opslaan",
"Create album" : "Maak album",
"Add selection to album {albumName}" : "Selectie toevoegen aan album {albumName}",
"Create a new album." : "Maak een nieuw album.",
"_Share with %n user_::_Share with %n users_" : ["Delen met %n gebruiker","Delen met %n gebruikers"],
"Save collaborators for this album." : "Bewaar bijdragers voor dit album.",
"Year" : "Jaar",
"Month" : "Maand",
"Day" : "Dag",
"Time" : "Tijd",
"Hour" : "Uur",
"Minute" : "Minuut",
"Update Exif" : "Exif bijwerken",
"Title" : "Titel",
"Description" : "Beschrijving",
"Date Taken" : "Datum gemaakt",
"Label" : "Label",
"Camera Make" : "Cameramerk",
"Camera Model" : "Cameramodel",
"Lens Model" : "Lensmodel",
"Copyright" : "Auteursrecht",
"Remove person" : "Verwijder persoon",
"Name" : "Naam",
"Rename person" : "Hernoem persoon",
"Update" : "Update",
"Share Folder" : "Map delen",
"You cannot share the root folder" : "Je kunt de hoofdmap niet delen",
"Use the sidebar to share this folder." : "Gebruik de zijbalk om deze map te delen.",
"If you create a public link share, click on refresh and a corresponding link to Memories will be shown below." : "Als je een openbare deellink maakt, klik op vernieuwen en een bijbehorende link naar Herinneringen wordt hieronder weergegeven.",
"Refresh" : "Verversen",
"Remove" : "Verwijderen",
"Share album" : "Album delen",
"Download album" : "Album downloaden",
"Delete album" : "Album verwijderen",
"Merge with different person" : "Samenvoegen met ander persoon",
"Share folder" : "Map delen",
"Folder View" : "Mapweergave",
"Timeline View" : "Tijdlijnweergave",
"No Exif data found! Continue?" : "Geen Exif gegevens gevonden! Doorgaan?",
"Unsaved changes" : "Niet opgeslagen veranderingen",
"Share" : "Delen",
"Sidebar" : "Zijbalk",
"Slideshow" : "Diavoorstelling",
"Close" : "Sluit",
"Previous" : "Vorige",
"Next" : "Volgende",
"Are you sure you want to delete?" : "Weet je zeker dat je wilt verwijderen?",
"Reset" : "Herstellen",
"All changes will be lost." : "Alle aanpassingen zullen verloren gaan.",
"Are you sure you want to continue?" : "Weet je zeker dat je wilt doorgaan?",
"Continue" : "Doorgaan",
"Undo" : "Ongedaan maken",
"Redo" : "Opnieuw doen",
"Zoom in" : "Zoom in",
"Draw" : "Teken",
"Show original image" : "Toon originele afbeelding",
"Zoom in" : "Inzoomen",
"Zoom out" : "Uitzoomen",
"Toggle zoom menu" : "Toon/verberg zoommenu",
"Adjust" : "Aanpassen",
"Filters" : "Filters",
"Draw" : "Tekenen",
"Original" : "Origineel",
"Custom" : "Maatwerk",
"Un-flip X" : "Ontspiegelen X",
"Custom" : "Aangepast",
"Landscape" : "Landschap",
"Portrait" : "Portret",
"Ellipse" : "Ovaal",
"Arrow" : "Pijl",
"Blur" : "Vervagen",
"Brightness" : "Helderheid",
"Contrast" : "Contrast",
"Un-flip X" : "Ontspiegel X",
"Flip X" : "Spiegel X",
"Un-flip Y" : "Spiegel Y",
"Flip Y" : "Ontspiegel Y",
"HSV" : "HSV",
"Hue" : "Tint",
"Saturation" : "Verzadiging",
"Value" : "Waarden",
"Image" : "Afbeelding",
"+ Add image" : "+ Afbeelding toevoegen",
"Line" : "Lijn",
"Polygon" : "Veelhoek",
"Rectangle" : "Rechthoek",
"Corner Radius" : "Hoekradius",
"Height in pixels" : "Hoogte in pixels",
"Toggle ratio lock" : "In-/uitschakelen ratio vergrendeling",
"Rotate" : "Draaien",
"Text" : "Tekst",
"Size" : "Omvang",
"Line height" : "Regelhoogte",
"Warmth" : "Warmte",
"Shadow" : "Schaduw",
"Opacity" : "Doorzichtigheid",
"Position" : "Positie",
"Stroke" : "Rand",
"Extension" : "Extensie",
"Name is required." : "Naam is verplicht.",
"Quality" : "Kwaliteit",
"Saved image size (width x height)" : "Grootte van opgeslagen afbeelding (breedte x hoogte)",
"Actual size (100%)" : "Ware grootte (100%)",
"Fit size" : "Passend maken",
"Direct" : "Direct",
"Auto" : "Automatisch"
"Auto" : "Automatisch",
"Failed to create {albumName}." : "Het maken van {albumName} is mislukt.",
"Failed to rename {currentAlbumName} to {newAlbumName}." : "Hernoemen van {currentAlbumName} naar {newAlbumName} mislukt.",
"Failed to delete {fileName}." : "Verwijderen van {fileName} mislukt."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

30
l10n/ru.js vendored
View File

@ -19,6 +19,8 @@ OC.L10N.register(
"Click here to start" : "Нажмите здесь чтобы начать",
"You can always change this later in settings" : "Эти параметры могут быть позднее изменены в разделе «Настройки»",
"Edit" : "Редактировать",
"No title" : "Без названия",
"No description" : "Нет описания",
"Loading …" : "Загрузка …",
"Cancel" : "Отменить",
"Delete" : "Удалить",
@ -27,20 +29,26 @@ OC.L10N.register(
"Favorite" : "В избранное",
"Unarchive" : "Восстановить из архива",
"Edit Date/Time" : "Изменить дату и время",
"Edit EXIF Data" : "Редактировать EXIF",
"View in folder" : "Посмотреть в каталоге",
"Move to folder" : "Переместить в папку",
"Add to album" : "Добавить в альбом",
"Move to another person" : "Объединить с другой меткой лица",
"Remove from person" : "Снять отметку лица",
"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 touch a large number of files. Are you sure?" : "Подтвердите выполнение действия для большого числа файлов.",
"_{n} selected_::_{n} selected_" : ["Выбран: {n}","Выбрано: {n}","Выбрано: {n}","Выбрано: {n}"],
"Timeline Path" : "Расположение",
"Folders Path" : "Верхний уровень для папок",
"Show hidden folders" : "Показывать скрытые файлы",
"Square grid mode" : "Квадратные миниатюры",
"Choose Timeline Paths" : "Расположение для истории",
"Your Timeline" : "Ваша история",
"You will find your friends soon. Please, be patient." : "Скоро вы найдете своих друзей. Пожалуйста, наберитесь терпения.",
"Face Recognition is disabled. Enable in settings to find your friends." : "Распознавание лиц отключено. Включите его в настройках для поиска своих друзей.",
"Failed to load some photos" : "Не удалось загрузить некоторые фотографии",
"Processing … {n}/{m}" : "Обработка... {n}/{m}",
"Search for collaborators" : "Поиск людей и групп для добавления в соавторы",
"Search people or groups" : "Введите имя пользователя или название группы…",
"Add {collaboratorLabel} to the collaborators list" : "Добавить {collaboratorLabel} в соавторы",
@ -83,9 +91,15 @@ OC.L10N.register(
"Hour" : "Час",
"Minute" : "Минута",
"Update Exif" : "Обновить EXIF",
"Newest" : "Более новые",
"Oldest" : "Более старые",
"Loading data … {n}/{m}" : "Загрузка данных... {n}/{m}",
"Title" : "Название",
"Description" : "Описание",
"Date Taken" : "Дата съемки",
"Label" : "Метка",
"Camera Model" : "Модель камеры",
"Lens Model" : "Модель линз",
"Copyright" : "Авторские права",
"Remove person" : "Удалить",
"Name" : "Имя",
@ -98,12 +112,17 @@ OC.L10N.register(
"You cannot share the root folder" : "Корневая папка не может быть опубликована",
"Use the sidebar to share this folder." : "Чтобы опубликовать эту папку, воспользуйтесь боковым меню. ",
"Refresh" : "Обновить",
"Choose a folder" : "Выберите папку",
"Remove" : "Удалить",
"Add Path" : "Добавть путь",
"Share album" : "Опубликовать альбом",
"Download album" : "Скачать альбом",
"Delete album" : "Удалить альбом",
"Merge with different person" : "Объединить с другой меткой",
"Mark person in preview" : "Отметить человека в предварительном просмотре",
"Share folder" : "Поделиться папкой",
"Folder View" : "Просмотр в виде папок",
"Timeline View" : "Просмотр в виде шкалы времени",
"Move left" : "Переместить влево",
"Move right" : "Переместить вправо",
"Failed to get Exif data. Metadata may be lost!" : "Не удалось получить данные EXIF. Метаданные могут быть утеряны.",
@ -115,9 +134,13 @@ OC.L10N.register(
"Share" : "Поделиться",
"Sidebar" : "Боковая панель",
"Download Video" : "Скачать видео",
"Slideshow" : "Слайд шоу",
"Close" : "Закрыть",
"Previous" : "Назад",
"Next" : "Далее",
"Video sharing not supported yet" : "Публикация видео пока не поддерживается",
"Cannot share this type of data" : "Невозможно опубликовать такой тип данных",
"Are you sure you want to delete?" : "Вы уверены, что хотите удалить?",
"Save as" : "Сохранить как",
"Reset" : "Сброс",
"All changes will be lost." : "Изменения не будут сохранены.",
@ -205,13 +228,20 @@ OC.L10N.register(
"Transcoding failed." : "Ошибка транскодирования.",
"Direct" : "Личное",
"Auto" : "Автоматически",
"Shared Folder" : "Опубликованная Папка",
"Shared Album" : "Опубликованный альбом",
"Failed to create {albumName}." : "Не удалось создать альбом «{albumName}».",
"Failed to rename {currentAlbumName} to {newAlbumName}." : "Не удалось переименовать альбом «{currentAlbumName}» в «{newAlbumName}».",
"General Failure" : "Общий сбой",
"Error: {msg}" : "Ошибка: {msg}",
"Failed to delete files." : "Ошибка удаления файлов.",
"Failed to delete {fileName}." : "Ошибка удаления файла «{fileName}».",
"Failed to move files." : "Не удалось переместить файлы.",
"Could not move {fileName}, target exists." : "Ошибка перемещения {fileName}, файл уже существует",
"Failed to move {fileName}." : "Не удалось переместить {fileName}",
"Failed to download files" : "Не удалось скачать файлы",
"Failed to favorite files." : "Не удалось добавить файлы в избранное.",
"Failed to favorite some files." : "Некоторые файлы не удалось добавить в избранное ",
"Failed to favorite {fileName}." : "Не удалось добавить файл «{fileName}» в избранное."
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");

30
l10n/ru.json vendored
View File

@ -17,6 +17,8 @@
"Click here to start" : "Нажмите здесь чтобы начать",
"You can always change this later in settings" : "Эти параметры могут быть позднее изменены в разделе «Настройки»",
"Edit" : "Редактировать",
"No title" : "Без названия",
"No description" : "Нет описания",
"Loading …" : "Загрузка …",
"Cancel" : "Отменить",
"Delete" : "Удалить",
@ -25,20 +27,26 @@
"Favorite" : "В избранное",
"Unarchive" : "Восстановить из архива",
"Edit Date/Time" : "Изменить дату и время",
"Edit EXIF Data" : "Редактировать EXIF",
"View in folder" : "Посмотреть в каталоге",
"Move to folder" : "Переместить в папку",
"Add to album" : "Добавить в альбом",
"Move to another person" : "Объединить с другой меткой лица",
"Remove from person" : "Снять отметку лица",
"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 touch a large number of files. Are you sure?" : "Подтвердите выполнение действия для большого числа файлов.",
"_{n} selected_::_{n} selected_" : ["Выбран: {n}","Выбрано: {n}","Выбрано: {n}","Выбрано: {n}"],
"Timeline Path" : "Расположение",
"Folders Path" : "Верхний уровень для папок",
"Show hidden folders" : "Показывать скрытые файлы",
"Square grid mode" : "Квадратные миниатюры",
"Choose Timeline Paths" : "Расположение для истории",
"Your Timeline" : "Ваша история",
"You will find your friends soon. Please, be patient." : "Скоро вы найдете своих друзей. Пожалуйста, наберитесь терпения.",
"Face Recognition is disabled. Enable in settings to find your friends." : "Распознавание лиц отключено. Включите его в настройках для поиска своих друзей.",
"Failed to load some photos" : "Не удалось загрузить некоторые фотографии",
"Processing … {n}/{m}" : "Обработка... {n}/{m}",
"Search for collaborators" : "Поиск людей и групп для добавления в соавторы",
"Search people or groups" : "Введите имя пользователя или название группы…",
"Add {collaboratorLabel} to the collaborators list" : "Добавить {collaboratorLabel} в соавторы",
@ -81,9 +89,15 @@
"Hour" : "Час",
"Minute" : "Минута",
"Update Exif" : "Обновить EXIF",
"Newest" : "Более новые",
"Oldest" : "Более старые",
"Loading data … {n}/{m}" : "Загрузка данных... {n}/{m}",
"Title" : "Название",
"Description" : "Описание",
"Date Taken" : "Дата съемки",
"Label" : "Метка",
"Camera Model" : "Модель камеры",
"Lens Model" : "Модель линз",
"Copyright" : "Авторские права",
"Remove person" : "Удалить",
"Name" : "Имя",
@ -96,12 +110,17 @@
"You cannot share the root folder" : "Корневая папка не может быть опубликована",
"Use the sidebar to share this folder." : "Чтобы опубликовать эту папку, воспользуйтесь боковым меню. ",
"Refresh" : "Обновить",
"Choose a folder" : "Выберите папку",
"Remove" : "Удалить",
"Add Path" : "Добавть путь",
"Share album" : "Опубликовать альбом",
"Download album" : "Скачать альбом",
"Delete album" : "Удалить альбом",
"Merge with different person" : "Объединить с другой меткой",
"Mark person in preview" : "Отметить человека в предварительном просмотре",
"Share folder" : "Поделиться папкой",
"Folder View" : "Просмотр в виде папок",
"Timeline View" : "Просмотр в виде шкалы времени",
"Move left" : "Переместить влево",
"Move right" : "Переместить вправо",
"Failed to get Exif data. Metadata may be lost!" : "Не удалось получить данные EXIF. Метаданные могут быть утеряны.",
@ -113,9 +132,13 @@
"Share" : "Поделиться",
"Sidebar" : "Боковая панель",
"Download Video" : "Скачать видео",
"Slideshow" : "Слайд шоу",
"Close" : "Закрыть",
"Previous" : "Назад",
"Next" : "Далее",
"Video sharing not supported yet" : "Публикация видео пока не поддерживается",
"Cannot share this type of data" : "Невозможно опубликовать такой тип данных",
"Are you sure you want to delete?" : "Вы уверены, что хотите удалить?",
"Save as" : "Сохранить как",
"Reset" : "Сброс",
"All changes will be lost." : "Изменения не будут сохранены.",
@ -203,13 +226,20 @@
"Transcoding failed." : "Ошибка транскодирования.",
"Direct" : "Личное",
"Auto" : "Автоматически",
"Shared Folder" : "Опубликованная Папка",
"Shared Album" : "Опубликованный альбом",
"Failed to create {albumName}." : "Не удалось создать альбом «{albumName}».",
"Failed to rename {currentAlbumName} to {newAlbumName}." : "Не удалось переименовать альбом «{currentAlbumName}» в «{newAlbumName}».",
"General Failure" : "Общий сбой",
"Error: {msg}" : "Ошибка: {msg}",
"Failed to delete files." : "Ошибка удаления файлов.",
"Failed to delete {fileName}." : "Ошибка удаления файла «{fileName}».",
"Failed to move files." : "Не удалось переместить файлы.",
"Could not move {fileName}, target exists." : "Ошибка перемещения {fileName}, файл уже существует",
"Failed to move {fileName}." : "Не удалось переместить {fileName}",
"Failed to download files" : "Не удалось скачать файлы",
"Failed to favorite files." : "Не удалось добавить файлы в избранное.",
"Failed to favorite some files." : "Некоторые файлы не удалось добавить в избранное ",
"Failed to favorite {fileName}." : "Не удалось добавить файл «{fileName}» в избранное."
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
}

87
l10n/sl.js vendored
View File

@ -1,9 +1,12 @@
OC.L10N.register(
"memories",
{
"Memories" : "Spomini",
"Fast, modern and advanced photo management suite" : "Hiter, sodoben in zmogljiv urejevalnik fotografij",
"Settings" : "Nastavitve",
"People (Recognize)" : "Ljudje (prepoznava)",
"People" : "Osebe",
"People (Face Recognition)" : "Ljudje (prepoznava obraza)",
"EXIF" : "EXIF",
"Timeline" : "Časovnica",
"Folders" : "Mape",
@ -14,17 +17,27 @@ OC.L10N.register(
"On this day" : "Na današnji dan",
"Tags" : "Oznake",
"Maps" : "Zemljevidi",
"Continue to Memories" : "Nadaljujte med Spomine",
"Choose again" : "Ponovni izobor",
"Click here to start" : "Kliknite za začetek",
"Edit" : "Uredi",
"No title" : "Ni naslova",
"No description" : "Ni opisa",
"Loading …" : "Poteka nalaganje …",
"Cancel" : "Prekliči",
"Delete" : "Izbriši",
"Remove from album" : "Odstrani iz albuma",
"Download" : "Prejmi",
"Favorite" : "Priljubljeno",
"Unarchive" : "Odpri iz arhiva",
"Edit Date/Time" : "Uredi datum in čas",
"Edit EXIF Data" : "Uredi podatke EXIF",
"View in folder" : "Pokaži v mapi",
"Move to folder" : "Premakni v mapo",
"Add to album" : "Dodaj album",
"Folders Path" : "Pot map",
"Show hidden folders" : "Pokaži skrite mape",
"Square grid mode" : "Način kvadratne mreže",
"Search for collaborators" : "Iskanje sodelujočih",
"Search people or groups" : "Iskanje oseb in skupin",
"Add {collaboratorLabel} to the collaborators list" : "Dodaj {collaboratorLabel} na seznam sodelujočih",
@ -61,9 +74,17 @@ OC.L10N.register(
"Time" : "Čas",
"Hour" : "Ura",
"Minute" : "Minuta",
"Update Exif" : "Posodobi EXIF",
"Newest" : "Najnovejše",
"Oldest" : "Najstarejše",
"Loading data … {n}/{m}" : "Poteka nalaganje podatkov … {n}/{m}",
"Title" : "Naziv",
"Description" : "Opis",
"Date Taken" : "Datum zajema",
"Label" : "Oznaka",
"Camera Make" : "Vrsta fotoaparata",
"Camera Model" : "Model fotoaparata",
"Lens Model" : "Model leče",
"Copyright" : "Avtorske pravice",
"Remove person" : "Odstrani osebo",
"Name" : "Ime",
@ -71,14 +92,23 @@ OC.L10N.register(
"Update" : "Posodobi",
"Refresh" : "Osveži",
"Remove" : "Odstrani",
"Add Path" : "Dodaj pot",
"Download album" : "Prejmi album",
"Delete album" : "Izbriši album",
"Merge with different person" : "Združi z obstoječo osebo",
"Share folder" : "Omogoči souporabo mape",
"Folder View" : "Pogled mape",
"Timeline View" : "Časovni pogled",
"Move left" : "Premakni levo",
"Move right" : "Premakni desno",
"Image saved successfully" : "Slika je uspešno shranjena",
"Error saving image" : "Napaka shranjevanja slike",
"Unsaved changes" : "Neshranjene spremembe",
"Drop changes" : "Opusti spremembe",
"Share" : "Souporaba",
"Sidebar" : "Bočno okno",
"Download Video" : "Prejmi posnetek",
"Slideshow" : "Projekcija",
"Close" : "Zapri",
"Previous" : "Predhodni",
"Next" : "Naslednji",
@ -95,9 +125,10 @@ OC.L10N.register(
"Zoom out" : "Oddalji",
"Toggle zoom menu" : "Meni preklopa približevanja",
"Adjust" : "Prilagodi",
"Fine-tune" : "Podrobno prilagajanje",
"Filters" : "Filtri",
"Watermark" : "Vodni žig",
"Draw" : "Risba",
"Draw" : "Nariši",
"Resize" : "Spremeni velikost",
"Invalid image." : "Neveljavna slika",
"Crop" : "Obreži",
@ -107,20 +138,68 @@ OC.L10N.register(
"Landscape" : "Pokrajina",
"Portrait" : "Portret",
"Ellipse" : "Elipsa",
"Classic TV" : "Klasični TV",
"Arrow" : "Puščica",
"Blur" : "Zameglitev",
"Brightness" : "Svetlost",
"Contrast" : "Kontrast",
"Un-flip X" : "Prekliči zrcaljenje po osi X",
"Flip X" : "Zrcali po osi X",
"Un-flip Y" : "Prekliči zrcaljenje po osi Y",
"Flip Y" : "Zrcali po osi Y",
"HSV" : "HSV",
"Saturation" : "Nasičenost",
"Value" : "Vrednost",
"Image" : "Slika",
"Line" : "Črtni diagram",
"Importing …" : "Poteka uvažanje ...",
"+ Add image" : "+ Dodaj sliko",
"Line" : "Črta",
"Pen" : "Pisalo",
"Polygon" : "Mnogokotnik",
"Sides" : "Drsnicew",
"Rectangle" : "Pravokotnik",
"Corner Radius" : "Radij robu",
"Width in pixels" : "Širina v točkah",
"Height in pixels" : "Višina v točkah",
"Toggle ratio lock" : "Preklopi zaklep razmerja",
"Reset to original image size" : "Ponastavi na izvorno velikost slike",
"Rotate" : "Zavrti",
"Text" : "Besedilo",
"Text spacing" : "Razmik besedila",
"Text alignment" : "Poravnava besedila",
"Font family" : "Družina pisave",
"Size" : "Velikost",
"Letter spacing" : "Razmik med črkami",
"Line height" : "Višina vrstice",
"Warmth" : "Toplota",
"+ Add watermark" : "+ Dodaj vodni žig",
"Choose watermark type" : "Izbor vrste vodnega žiga",
"Upload watermark" : "Pošlji vodni žig",
"Add as text" : "Dodaj kot besedilo",
"Padding" : "Blazinjenje",
"Shadow" : "Senca",
"Horizontal" : "Vodoravno",
"Vertical" : "Navpično",
"Opacity" : "Prosojnost",
"Position" : "Položaj",
"Save image as" : "Shrani sliko kot",
"Extension" : "Pripona",
"Name is required." : "Ime mora biti vpisano.",
"Quality" : "Kakovost",
"Direct" : "Neposredno izbranim",
"Actual size (100%)" : "Prava velikost (100%)",
"Fit size" : "Prilagodi velikosti",
"Transcoding failed." : "Prekodiranje je spodletelo.",
"Direct" : "Neposredno",
"Auto" : "Samodejno",
"Shared Folder" : "Mapa v souporabi",
"Failed to create {albumName}." : "Ustvarjanje albuma {albumName} je spodletelo.",
"Failed to delete {fileName}." : "Brisanje datoteke {fileName} je spodletelo."
"General Failure" : "Splošna napaka",
"Error: {msg}" : "Napaka: {msg}",
"Failed to delete files." : "Brisanje datotek je spodletelo.",
"Failed to delete {fileName}." : "Brisanje datoteke {fileName} je spodletelo.",
"Failed to move files." : "Premikanje datotek je spodletelo.",
"Could not move {fileName}, target exists." : "Datoteke {fileName} ni mogoče premakniti, ker cilj že obstaja.",
"Failed to move {fileName}." : "Premikanje datoteke {fileName} je spodletelo.",
"Failed to download files" : "Prejemanje datotek je spodletelo."
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");

87
l10n/sl.json vendored
View File

@ -1,7 +1,10 @@
{ "translations": {
"Memories" : "Spomini",
"Fast, modern and advanced photo management suite" : "Hiter, sodoben in zmogljiv urejevalnik fotografij",
"Settings" : "Nastavitve",
"People (Recognize)" : "Ljudje (prepoznava)",
"People" : "Osebe",
"People (Face Recognition)" : "Ljudje (prepoznava obraza)",
"EXIF" : "EXIF",
"Timeline" : "Časovnica",
"Folders" : "Mape",
@ -12,17 +15,27 @@
"On this day" : "Na današnji dan",
"Tags" : "Oznake",
"Maps" : "Zemljevidi",
"Continue to Memories" : "Nadaljujte med Spomine",
"Choose again" : "Ponovni izobor",
"Click here to start" : "Kliknite za začetek",
"Edit" : "Uredi",
"No title" : "Ni naslova",
"No description" : "Ni opisa",
"Loading …" : "Poteka nalaganje …",
"Cancel" : "Prekliči",
"Delete" : "Izbriši",
"Remove from album" : "Odstrani iz albuma",
"Download" : "Prejmi",
"Favorite" : "Priljubljeno",
"Unarchive" : "Odpri iz arhiva",
"Edit Date/Time" : "Uredi datum in čas",
"Edit EXIF Data" : "Uredi podatke EXIF",
"View in folder" : "Pokaži v mapi",
"Move to folder" : "Premakni v mapo",
"Add to album" : "Dodaj album",
"Folders Path" : "Pot map",
"Show hidden folders" : "Pokaži skrite mape",
"Square grid mode" : "Način kvadratne mreže",
"Search for collaborators" : "Iskanje sodelujočih",
"Search people or groups" : "Iskanje oseb in skupin",
"Add {collaboratorLabel} to the collaborators list" : "Dodaj {collaboratorLabel} na seznam sodelujočih",
@ -59,9 +72,17 @@
"Time" : "Čas",
"Hour" : "Ura",
"Minute" : "Minuta",
"Update Exif" : "Posodobi EXIF",
"Newest" : "Najnovejše",
"Oldest" : "Najstarejše",
"Loading data … {n}/{m}" : "Poteka nalaganje podatkov … {n}/{m}",
"Title" : "Naziv",
"Description" : "Opis",
"Date Taken" : "Datum zajema",
"Label" : "Oznaka",
"Camera Make" : "Vrsta fotoaparata",
"Camera Model" : "Model fotoaparata",
"Lens Model" : "Model leče",
"Copyright" : "Avtorske pravice",
"Remove person" : "Odstrani osebo",
"Name" : "Ime",
@ -69,14 +90,23 @@
"Update" : "Posodobi",
"Refresh" : "Osveži",
"Remove" : "Odstrani",
"Add Path" : "Dodaj pot",
"Download album" : "Prejmi album",
"Delete album" : "Izbriši album",
"Merge with different person" : "Združi z obstoječo osebo",
"Share folder" : "Omogoči souporabo mape",
"Folder View" : "Pogled mape",
"Timeline View" : "Časovni pogled",
"Move left" : "Premakni levo",
"Move right" : "Premakni desno",
"Image saved successfully" : "Slika je uspešno shranjena",
"Error saving image" : "Napaka shranjevanja slike",
"Unsaved changes" : "Neshranjene spremembe",
"Drop changes" : "Opusti spremembe",
"Share" : "Souporaba",
"Sidebar" : "Bočno okno",
"Download Video" : "Prejmi posnetek",
"Slideshow" : "Projekcija",
"Close" : "Zapri",
"Previous" : "Predhodni",
"Next" : "Naslednji",
@ -93,9 +123,10 @@
"Zoom out" : "Oddalji",
"Toggle zoom menu" : "Meni preklopa približevanja",
"Adjust" : "Prilagodi",
"Fine-tune" : "Podrobno prilagajanje",
"Filters" : "Filtri",
"Watermark" : "Vodni žig",
"Draw" : "Risba",
"Draw" : "Nariši",
"Resize" : "Spremeni velikost",
"Invalid image." : "Neveljavna slika",
"Crop" : "Obreži",
@ -105,20 +136,68 @@
"Landscape" : "Pokrajina",
"Portrait" : "Portret",
"Ellipse" : "Elipsa",
"Classic TV" : "Klasični TV",
"Arrow" : "Puščica",
"Blur" : "Zameglitev",
"Brightness" : "Svetlost",
"Contrast" : "Kontrast",
"Un-flip X" : "Prekliči zrcaljenje po osi X",
"Flip X" : "Zrcali po osi X",
"Un-flip Y" : "Prekliči zrcaljenje po osi Y",
"Flip Y" : "Zrcali po osi Y",
"HSV" : "HSV",
"Saturation" : "Nasičenost",
"Value" : "Vrednost",
"Image" : "Slika",
"Line" : "Črtni diagram",
"Importing …" : "Poteka uvažanje ...",
"+ Add image" : "+ Dodaj sliko",
"Line" : "Črta",
"Pen" : "Pisalo",
"Polygon" : "Mnogokotnik",
"Sides" : "Drsnicew",
"Rectangle" : "Pravokotnik",
"Corner Radius" : "Radij robu",
"Width in pixels" : "Širina v točkah",
"Height in pixels" : "Višina v točkah",
"Toggle ratio lock" : "Preklopi zaklep razmerja",
"Reset to original image size" : "Ponastavi na izvorno velikost slike",
"Rotate" : "Zavrti",
"Text" : "Besedilo",
"Text spacing" : "Razmik besedila",
"Text alignment" : "Poravnava besedila",
"Font family" : "Družina pisave",
"Size" : "Velikost",
"Letter spacing" : "Razmik med črkami",
"Line height" : "Višina vrstice",
"Warmth" : "Toplota",
"+ Add watermark" : "+ Dodaj vodni žig",
"Choose watermark type" : "Izbor vrste vodnega žiga",
"Upload watermark" : "Pošlji vodni žig",
"Add as text" : "Dodaj kot besedilo",
"Padding" : "Blazinjenje",
"Shadow" : "Senca",
"Horizontal" : "Vodoravno",
"Vertical" : "Navpično",
"Opacity" : "Prosojnost",
"Position" : "Položaj",
"Save image as" : "Shrani sliko kot",
"Extension" : "Pripona",
"Name is required." : "Ime mora biti vpisano.",
"Quality" : "Kakovost",
"Direct" : "Neposredno izbranim",
"Actual size (100%)" : "Prava velikost (100%)",
"Fit size" : "Prilagodi velikosti",
"Transcoding failed." : "Prekodiranje je spodletelo.",
"Direct" : "Neposredno",
"Auto" : "Samodejno",
"Shared Folder" : "Mapa v souporabi",
"Failed to create {albumName}." : "Ustvarjanje albuma {albumName} je spodletelo.",
"Failed to delete {fileName}." : "Brisanje datoteke {fileName} je spodletelo."
"General Failure" : "Splošna napaka",
"Error: {msg}" : "Napaka: {msg}",
"Failed to delete files." : "Brisanje datotek je spodletelo.",
"Failed to delete {fileName}." : "Brisanje datoteke {fileName} je spodletelo.",
"Failed to move files." : "Premikanje datotek je spodletelo.",
"Could not move {fileName}, target exists." : "Datoteke {fileName} ni mogoče premakniti, ker cilj že obstaja.",
"Failed to move {fileName}." : "Premikanje datoteke {fileName} je spodletelo.",
"Failed to download files" : "Prejemanje datotek je spodletelo."
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
}

2
l10n/th.js vendored
View File

@ -42,7 +42,7 @@ OC.L10N.register(
"Close" : "ปิด",
"Previous" : "ก่อนหน้า",
"Next" : "ถัดไป",
"Reset" : "ั้งค่าใหม่",
"Reset" : "รีเซ็ต",
"Continue" : "ดำเนินการต่อ",
"Undo" : "เลิกทำ",
"Custom" : "กำหนดเอง",

2
l10n/th.json vendored
View File

@ -40,7 +40,7 @@
"Close" : "ปิด",
"Previous" : "ก่อนหน้า",
"Next" : "ถัดไป",
"Reset" : "ั้งค่าใหม่",
"Reset" : "รีเซ็ต",
"Continue" : "ดำเนินการต่อ",
"Undo" : "เลิกทำ",
"Custom" : "กำหนดเอง",

9
l10n/zh_TW.js vendored
View File

@ -41,6 +41,7 @@ OC.L10N.register(
"Edit Date/Time" : "編輯日期/時間",
"Edit EXIF Data" : "編輯 EXIF 資料",
"View in folder" : "在資料夾中檢視",
"Move to folder" : "移動至資料夾",
"Add to album" : "新增至相簿",
"Move to another person" : "移動到其他人",
"Remove from person" : "從人中移除",
@ -112,6 +113,7 @@ OC.L10N.register(
"Label" : "標籤",
"Camera Make" : "相機品牌",
"Camera Model" : "相機型號",
"Lens Model" : "鏡頭型號",
"Copyright" : "著作權",
"Remove person" : "移除人",
"Are you sure you want to remove {name}?" : "您確定您想要移除 {name} 嗎?",
@ -131,6 +133,8 @@ OC.L10N.register(
"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." : "若您建立公開連結分享,請點擊「重新整理」,下方將會顯示對應的 Memories 連結。",
"Refresh" : "重新整理",
"Choose a folder" : "選擇資料夾",
"_{n} item moved to folder_::_{n} items moved to folder_" : ["已移動 {n} 個項目至資料夾"],
"Remove" : "移除",
"Add Path" : "新增路徑",
"Add a root to your timeline" : "新增您時間軸的根",
@ -140,6 +144,8 @@ OC.L10N.register(
"Merge with different person" : "與其他人合併",
"Mark person in preview" : "在預覽中標記人",
"Share folder" : "分享資料夾",
"Folder View" : "資料夾檢視",
"Timeline View" : "時間軸檢視",
"Move left" : "向左移動",
"Move right" : "向右移動",
"Failed to get Exif data. Metadata may be lost!" : "取得 Exif 資料失敗。詮釋資料可能會遺失!",
@ -253,6 +259,9 @@ OC.L10N.register(
"Error: {msg}" : "錯誤:{msg}",
"Failed to delete files." : "刪除檔案失敗",
"Failed to delete {fileName}." : "刪除 {fileName} 失敗。",
"Failed to move files." : "移動檔案失敗。",
"Could not move {fileName}, target exists." : "無法移動 {fileName},目標已存在。",
"Failed to move {fileName}." : "移動 {fileName} 失敗",
"Failed to download files" : "下載檔案失敗",
"Failed to favorite files." : "加入最愛檔案失敗。",
"Failed to favorite some files." : "將部份檔案加入最愛失敗。",

9
l10n/zh_TW.json vendored
View File

@ -39,6 +39,7 @@
"Edit Date/Time" : "編輯日期/時間",
"Edit EXIF Data" : "編輯 EXIF 資料",
"View in folder" : "在資料夾中檢視",
"Move to folder" : "移動至資料夾",
"Add to album" : "新增至相簿",
"Move to another person" : "移動到其他人",
"Remove from person" : "從人中移除",
@ -110,6 +111,7 @@
"Label" : "標籤",
"Camera Make" : "相機品牌",
"Camera Model" : "相機型號",
"Lens Model" : "鏡頭型號",
"Copyright" : "著作權",
"Remove person" : "移除人",
"Are you sure you want to remove {name}?" : "您確定您想要移除 {name} 嗎?",
@ -129,6 +131,8 @@
"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." : "若您建立公開連結分享,請點擊「重新整理」,下方將會顯示對應的 Memories 連結。",
"Refresh" : "重新整理",
"Choose a folder" : "選擇資料夾",
"_{n} item moved to folder_::_{n} items moved to folder_" : ["已移動 {n} 個項目至資料夾"],
"Remove" : "移除",
"Add Path" : "新增路徑",
"Add a root to your timeline" : "新增您時間軸的根",
@ -138,6 +142,8 @@
"Merge with different person" : "與其他人合併",
"Mark person in preview" : "在預覽中標記人",
"Share folder" : "分享資料夾",
"Folder View" : "資料夾檢視",
"Timeline View" : "時間軸檢視",
"Move left" : "向左移動",
"Move right" : "向右移動",
"Failed to get Exif data. Metadata may be lost!" : "取得 Exif 資料失敗。詮釋資料可能會遺失!",
@ -251,6 +257,9 @@
"Error: {msg}" : "錯誤:{msg}",
"Failed to delete files." : "刪除檔案失敗",
"Failed to delete {fileName}." : "刪除 {fileName} 失敗。",
"Failed to move files." : "移動檔案失敗。",
"Could not move {fileName}, target exists." : "無法移動 {fileName},目標已存在。",
"Failed to move {fileName}." : "移動 {fileName} 失敗",
"Failed to download files" : "下載檔案失敗",
"Failed to favorite files." : "加入最愛檔案失敗。",
"Failed to favorite some files." : "將部份檔案加入最愛失敗。",

View File

@ -33,6 +33,7 @@ use OCP\Files\IRootFolder;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IPreview;
use OCP\ITempManager;
use OCP\IUser;
use OCP\IUserManager;
use Symfony\Component\Console\Command\Command;
@ -68,6 +69,7 @@ class Index extends Command
protected IDBConnection $connection;
protected Connection $connectionForSchema;
protected TimelineWrite $timelineWrite;
protected ITempManager $tempManager;
// Stats
private int $nUser = 0;
@ -85,7 +87,8 @@ class Index extends Command
IPreview $preview,
IConfig $config,
IDBConnection $connection,
Connection $connectionForSchema
Connection $connectionForSchema,
ITempManager $tempManager
) {
parent::__construct();
@ -95,6 +98,7 @@ class Index extends Command
$this->config = $config;
$this->connection = $connection;
$this->connectionForSchema = $connectionForSchema;
$this->tempManager = $tempManager;
$this->timelineWrite = new TimelineWrite($connection);
}
@ -306,6 +310,7 @@ class Index extends Command
$progress = (float) (($progress_i / $progress_n) * 100);
$this->outputSection->overwrite(sprintf('%.2f%%', $progress).' scanning '.$node->getPath());
$this->parseFile($node, $opts);
$this->tempManager->clean();
}
}
} catch (\Exception $e) {

View File

@ -27,6 +27,7 @@ use bantu\IniGetWrapper\IniGetWrapper;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\JSONResponse;
use OCP\ISession;
use OCP\ITempManager;
use OCP\Security\ISecureRandom;
class DownloadController extends ApiBase
@ -193,6 +194,9 @@ class DownloadController extends ApiBase
// So we need to add a number to the end of the name
$nameCounts = [];
/** @var ITempManager for clearing temp files */
$tempManager = \OC::$server->get(ITempManager::class);
// Send each file
foreach ($fileIds as $fileId) {
if (connection_aborted()) {
@ -265,6 +269,9 @@ class DownloadController extends ApiBase
if (false !== $handle) {
fclose($handle);
}
// Clear any temp files
$tempManager->clean();
}
}

View File

@ -142,6 +142,7 @@ class PageController extends Controller
// Video configuration
$initialState->provideInitialState('notranscode', $config->getSystemValue('memories.no_transcode', 'UNSET'));
$initialState->provideInitialState('video_default_quality', $config->getSystemValue('memories.video_default_quality', '0'));
}
/**

View File

@ -139,6 +139,15 @@ class VideoController extends ApiBase
} catch (\Exception $e) {
return new JSONResponse(['message' => 'Embedded video not found'], Http::STATUS_NOT_FOUND);
}
} elseif (str_starts_with($liveid, 'self__traileroffset=')) {
// Remove prefix
$offset = (int) substr($liveid, \strlen('self__traileroffset='));
if ($offset <= 0) {
return new JSONResponse(['message' => 'Invalid offset'], Http::STATUS_BAD_REQUEST);
}
// Read file from offset to end
$blob = file_get_contents($path, false, null, $offset);
} else {
// Get stored video file (Apple MOV)
$lp = $this->timelineQuery->getLivePhoto($fileid);
@ -213,29 +222,45 @@ class VideoController extends ApiBase
}
// Check for environment variables
$env = '';
$env = [];
// QSV with VAAPI
$vaapi = $this->config->getSystemValue('memories.qsv', false);
if ($vaapi) {
$env .= 'VAAPI=1 ';
if ($this->config->getSystemValue('memories.qsv', false)) {
$env[] = 'VAAPI=1';
}
// NVENC
$nvenc = $this->config->getSystemValue('memories.nvenc', false);
if ($nvenc) {
$env .= 'NVENC=1 ';
if ($this->config->getSystemValue('memories.nvenc', false)) {
$env[] = 'NVENC=1';
}
// Bind address / port
$port = $this->config->getSystemValue('memories.govod_port', 47788);
$env[] = "GOVOD_BIND='127.0.0.1:{$port}'";
// Paths
$ffmpegPath = $this->config->getSystemValue('memories.ffmpeg_path', 'ffmpeg');
$ffprobePath = $this->config->getSystemValue('memories.ffprobe_path', 'ffprobe');
$tmpPath = $this->config->getSystemValue('memories.tmp_path', sys_get_temp_dir());
$env .= "FFMPEG='{$ffmpegPath}' FFPROBE='{$ffprobePath}' GOVOD_TEMPDIR='{$tmpPath}/go-vod' ";
$env[] = "FFMPEG='{$ffmpegPath}'";
$env[] = "FFPROBE='{$ffprobePath}'";
// Check if already running
// (Re-)create Temp dir
$instanceId = $this->config->getSystemValue('instanceid', 'default');
$defaultTmp = sys_get_temp_dir().'/go-vod/'.$instanceId;
$tmpPath = $this->config->getSystemValue('memories.tmp_path', $defaultTmp);
shell_exec("rm -rf '{$tmpPath}'");
mkdir($tmpPath, 0755, true);
// Remove trailing slash from temp path if present
if ('/' === substr($tmpPath, -1)) {
$tmpPath = substr($tmpPath, 0, -1);
}
$env[] = "GOVOD_TEMPDIR='{$tmpPath}'";
// Kill already running and start new
\OCA\Memories\Util::pkill($transcoder);
shell_exec("{$env} nohup {$transcoder} > {$tmpPath}/go-vod.log 2>&1 & > /dev/null");
$env = implode(' ', $env);
shell_exec("{$env} nohup {$transcoder} > '{$tmpPath}.log' 2>&1 & > /dev/null");
// wait for 1s and try again
sleep(1);
@ -249,7 +274,8 @@ class VideoController extends ApiBase
// Make sure query params are repeated
// For example, in folder sharing, we need the params on every request
$url = "http://127.0.0.1:47788/{$client}{$path}/{$profile}";
$port = $this->config->getSystemValue('memories.govod_port', 47788);
$url = "http://127.0.0.1:{$port}/{$client}{$path}/{$profile}";
if ($params = $_SERVER['QUERY_STRING']) {
$url .= "?{$params}";
}

View File

@ -4,6 +4,7 @@ declare(strict_types=1);
namespace OCA\Memories\Db;
use OCA\Memories\Exif;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\Files\File;
use OCP\IDBConnection;
@ -26,7 +27,7 @@ class LivePhoto
}
/** Get liveid from photo part */
public function getLivePhotoId(array &$exif)
public function getLivePhotoId(File &$file, array &$exif)
{
// Apple JPEG (MOV has ContentIdentifier)
if (\array_key_exists('MediaGroupUUID', $exif)) {
@ -41,7 +42,36 @@ class LivePhoto
// Google JPEG and Samsung HEIC (Apple?)
if (\array_key_exists('MotionPhoto', $exif)) {
if ('image/jpeg' === $exif['MIMEType']) {
// Google JPEG -- image should hopefully be in trailer
// Google Motion Photo JPEG
// We need to read the DirectoryItemLength key to get the length of the video
// These keys are duplicate, one for the image and one for the video
// With exiftool -G4, we get the following:
//
// "Unknown:DirectoryItemSemantic": "Primary"
// "Unknown:DirectoryItemLength": 0
// "Copy1:DirectoryItemSemantic": "MotionPhoto"
// "Copy1:DirectoryItemLength": 3011435 // <-- this is the length of the video
//
// The video is then located at the end of the file, so we can get the offset.
// Match each DirectoryItemSemantic to find MotionPhoto, then get the length.
$path = $file->getStorage()->getLocalFile($file->getInternalPath());
$extExif = Exif::getExifWithDuplicates($path);
foreach ($extExif as $key => $value) {
if (str_ends_with($key, ':DirectoryItemSemantic')) {
if ('MotionPhoto' === $value) {
$videoLength = $extExif[str_replace('Semantic', 'Length', $key)];
if (\is_int($videoLength) && $videoLength > 0) {
$videoOffset = $file->getSize() - $videoLength;
return 'self__traileroffset='.((string) $videoOffset);
}
}
}
}
// Fallback: video should hopefully be in trailer
return 'self__trailer';
}
if ('image/heic' === $exif['MIMEType']) {

View File

@ -120,7 +120,7 @@ class TimelineWrite
$dayId = floor($dateTaken / 86400);
$dateTaken = gmdate('Y-m-d H:i:s', $dateTaken);
[$w, $h] = Exif::getDimensions($exif);
$liveid = $this->livePhoto->getLivePhotoId($exif);
$liveid = $this->livePhoto->getLivePhotoId($file, $exif);
// Video parameters
$videoDuration = 0;
@ -129,20 +129,21 @@ class TimelineWrite
}
// Clean up EXIF to keep only useful metadata
foreach ($exif as $key => &$value) {
$filteredExif = [];
foreach ($exif as $key => $value) {
// Truncate any fields > 2048 chars
if (\is_string($value) && \strlen($value) > 2048) {
$exif[$key] = substr($value, 0, 2048);
$value = substr($value, 0, 2048);
}
// These are huge and not needed
if (!EXIF_FIELDS_LIST[$key] ?? false) {
unset($exif[$key]);
// Only keep fields in the whitelist
if (\array_key_exists($key, EXIF_FIELDS_LIST)) {
$filteredExif[$key] = $value;
}
}
// Store JSON string
$exifJson = json_encode($exif);
$exifJson = json_encode($filteredExif);
// Store error if data > 64kb
if (\is_string($exifJson)) {

View File

@ -282,6 +282,11 @@ class Exif
}
}
public static function getExifWithDuplicates(string $path)
{
return self::getExifFromLocalPathWithSeparateProc($path, ['-G4']);
}
/** Get path to exiftool binary */
private static function getExiftool()
{
@ -407,10 +412,10 @@ class Exif
}
}
private static function getExifFromLocalPathWithSeparateProc(string &$path)
private static function getExifFromLocalPathWithSeparateProc(string &$path, array $extraArgs = [])
{
$pipes = [];
$proc = proc_open(array_merge(self::getExiftool(), ['-api', 'QuickTimeUTC=1', '-n', '-U', '-json', '--b', $path]), [
$proc = proc_open(array_merge(self::getExiftool(), ['-api', 'QuickTimeUTC=1', '-n', '-U', '-json', '--b'], $extraArgs, [$path]), [
1 => ['pipe', 'w'],
2 => ['pipe', 'w'],
], $pipes);

View File

@ -20,7 +20,7 @@ mv "exiftool-$exifver" exiftool
rm -rf *.zip exiftool/t exiftool/html
chmod 755 exiftool/exiftool
govod="0.0.24"
govod="0.0.25"
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"

View File

@ -14,6 +14,10 @@ const config_noTranscode = loadState(
<string>"UNSET"
) as boolean | string;
const config_video_default_quality = Number(
loadState("memories", "video_default_quality", <string>"0") as string
);
/**
* Check if slide has video content
*
@ -271,26 +275,31 @@ class VideoContentSetup {
let qualityNums: number[];
if (qualityList && qualityList.length > 1) {
const s = new Set<number>();
let hasMax = false;
for (let i = 0; i < qualityList?.length; i++) {
const { width, height, label } = qualityList[i];
s.add(Math.min(width, height));
if (label?.includes("max.m3u8")) {
s.add(999999999);
hasMax = true;
}
}
qualityNums = Array.from(s).sort((a, b) => b - a);
qualityNums.unshift(0);
if (hasMax) {
qualityNums.unshift(-1);
}
qualityNums.unshift(-2);
}
// Create the plyr instance
const opts: Plyr.Options = {
i18n: {
qualityLabel: {
"-1": t("memories", "Direct"),
0: t("memories", "Auto"),
999999999: t("memories", "Original"),
"-2": t("memories", "Direct"),
"-1": t("memories", "Original"),
"0": t("memories", "Auto"),
},
},
fullscreen: {
@ -304,14 +313,14 @@ class VideoContentSetup {
if (qualityNums) {
opts.quality = {
default: 0,
default: config_video_default_quality,
options: qualityNums,
forced: true,
onChange: (quality: number) => {
qualityList = content.videojs?.qualityLevels();
if (!qualityList || !content.videojs) return;
if (quality === -1) {
if (quality === -2) {
// Direct playback
// Prevent any useless transcodes
for (let i = 0; i < qualityList.length; ++i) {
@ -340,7 +349,7 @@ class VideoContentSetup {
qualityList[i].enabled =
!quality || // auto
pixels === quality || // exact match
(label?.includes("max.m3u8") && quality === 999999999); // max
(label?.includes("max.m3u8") && quality === -1); // max
}
},
};