From 581404648c12d40ef05edd57afcdd29f87a5268d Mon Sep 17 00:00:00 2001 From: Michael Mayer Date: Sun, 5 Jul 2020 14:48:49 +0200 Subject: [PATCH] Add search filter for content that has no album #377 Signed-off-by: Michael Mayer --- frontend/package.json | 3 +- frontend/src/common/notify.js | 2 +- frontend/src/common/util.js | 2 +- frontend/src/component/album/clipboard.vue | 6 +- frontend/src/component/file/clipboard.vue | 2 +- frontend/src/component/label/clipboard.vue | 2 +- frontend/src/component/navigation.vue | 18 +- frontend/src/component/photo/cards.vue | 12 +- frontend/src/component/photo/clipboard.vue | 2 +- frontend/src/component/photo/mosaic.vue | 12 +- frontend/src/component/photo/viewer.vue | 2 +- frontend/src/dialog/album/edit.vue | 9 - frontend/src/dialog/photo/info.vue | 13 + frontend/src/dialog/share.vue | 11 +- frontend/src/dialog/share/upload.vue | 20 +- frontend/src/dialog/upload.vue | 18 +- frontend/src/model/file.js | 2 +- frontend/src/model/folder.js | 2 +- frontend/src/model/link.js | 10 +- frontend/src/model/photo.js | 3 +- frontend/src/model/rest.js | 4 + frontend/src/pages/about/about.vue | 7 +- frontend/src/pages/albums.vue | 6 +- frontend/src/pages/library/files.vue | 20 +- frontend/src/pages/library/import.vue | 11 +- frontend/src/pages/library/index.vue | 16 +- frontend/src/pages/settings/general.vue | 4 +- frontend/src/resources/de.mo | Bin 23742 -> 25549 bytes frontend/src/resources/de.po | 587 +++++++++++---------- frontend/src/resources/translations.json | 2 +- frontend/src/resources/translations.pot | 424 ++++++++------- frontend/src/routes.js | 7 + frontend/src/share/album/clipboard.vue | 2 +- frontend/src/share/photo/cards.vue | 9 +- frontend/src/share/photo/clipboard.vue | 2 +- frontend/src/share/photo/mosaic.vue | 9 +- frontend/tests/unit/model/file_test.js | 4 +- frontend/tests/unit/model/folder_test.js | 4 +- frontend/tests/unit/model/link_test.js | 4 +- frontend/tests/unit/model/photo_test.js | 2 +- internal/entity/photo.go | 1 + internal/form/photo_search.go | 2 + internal/query/photo_results.go | 1 + internal/query/photo_search.go | 6 + 44 files changed, 704 insertions(+), 581 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index c064d3c14..6161f5107 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,8 +1,9 @@ { "name": "photoprism", "version": "1.0.0", - "description": "Single-page Web app frontend for PhotoPrism", + "description": "PhotoPrism Progressive Web App (PWA)", "author": "Michael Mayer", + "license": "AGPL-3.0", "private": true, "scripts": { "watch": "webpack --watch", diff --git a/frontend/src/common/notify.js b/frontend/src/common/notify.js index f56618c42..a0358383f 100644 --- a/frontend/src/common/notify.js +++ b/frontend/src/common/notify.js @@ -69,7 +69,7 @@ const Notify = { } }, wait: function () { - this.warn($gettext("Busy, please wait...")); + this.warn($gettext("Busy, please wait…")); }, }; diff --git a/frontend/src/common/util.js b/frontend/src/common/util.js index 1b9d1b49d..4d2d459af 100644 --- a/frontend/src/common/util.js +++ b/frontend/src/common/util.js @@ -118,7 +118,7 @@ export default class Util { length = 100; } if (ending == null) { - ending = "..."; + ending = "…"; } if (str.length > length) { return str.substring(0, length - ending.length) + ending; diff --git a/frontend/src/component/album/clipboard.vue b/frontend/src/component/album/clipboard.vue index 45583b477..a56896071 100644 --- a/frontend/src/component/album/clipboard.vue +++ b/frontend/src/component/album/clipboard.vue @@ -122,7 +122,7 @@ methods: { editDialog() { if (this.selection.length !== 1) { - this.$notify.error("select one album to edit"); + this.$notify.error(this.$gettext("You may only select one item")); return; } @@ -135,7 +135,7 @@ }, shareDialog() { if (this.selection.length !== 1) { - this.$notify.error("select one album to share"); + this.$notify.error(this.$gettext("You may only select one item")); return; } @@ -178,7 +178,7 @@ this.expanded = false; }, onDownload(path) { - Notify.success(this.$gettext("Downloading...")); + Notify.success(this.$gettext("Downloading…")); const link = document.createElement('a') link.href = path; link.download = "album.zip"; diff --git a/frontend/src/component/file/clipboard.vue b/frontend/src/component/file/clipboard.vue index 71bdba4f0..c50fee02f 100644 --- a/frontend/src/component/file/clipboard.vue +++ b/frontend/src/component/file/clipboard.vue @@ -103,7 +103,7 @@ this.expanded = false; }, onDownload(path) { - Notify.success(this.$gettext("Downloading...")); + Notify.success(this.$gettext("Downloading…")); const link = document.createElement('a') link.href = path; link.download = "photos.zip"; diff --git a/frontend/src/component/label/clipboard.vue b/frontend/src/component/label/clipboard.vue index 59fbcf567..29f4c09fa 100644 --- a/frontend/src/component/label/clipboard.vue +++ b/frontend/src/component/label/clipboard.vue @@ -129,7 +129,7 @@ this.expanded = false; }, onDownload(path) { - Notify.success(this.$gettext("Downloading...")); + Notify.success(this.$gettext("Downloading…")); const link = document.createElement('a') link.href = path; link.download = "label.zip"; diff --git a/frontend/src/component/navigation.vue b/frontend/src/component/navigation.vue index ba748714f..df2b931c9 100644 --- a/frontend/src/component/navigation.vue +++ b/frontend/src/component/navigation.vue @@ -90,6 +90,14 @@ + + + + Film Scans + + + + @@ -178,6 +186,14 @@ class="nav-count">{{ config.count.folders }} + + + + + Unsorted + + + @@ -376,7 +392,7 @@ - Connecting... + Offline diff --git a/frontend/src/component/photo/cards.vue b/frontend/src/component/photo/cards.vue index a3356d976..8e3a65094 100644 --- a/frontend/src/component/photo/cards.vue +++ b/frontend/src/component/photo/cards.vue @@ -3,15 +3,15 @@
-

+

No photos or videos found

-
+

Try using other terms and search options such as category, country and camera. - - Non-photographic and low-quality images require a review before they appear in search results. - -

+

+

+ Non-photographic and low-quality images require a review before they appear in search results. +

diff --git a/frontend/src/component/photo/clipboard.vue b/frontend/src/component/photo/clipboard.vue index 4e1a01519..41e60f003 100644 --- a/frontend/src/component/photo/clipboard.vue +++ b/frontend/src/component/photo/clipboard.vue @@ -220,7 +220,7 @@ this.expanded = false; }, onDownload(path) { - Notify.success(this.$gettext("Downloading...")); + Notify.success(this.$gettext("Downloading…")); const link = document.createElement('a') link.href = path; link.download = "photos.zip"; diff --git a/frontend/src/component/photo/mosaic.vue b/frontend/src/component/photo/mosaic.vue index 2cf18aba5..c4936ad84 100644 --- a/frontend/src/component/photo/mosaic.vue +++ b/frontend/src/component/photo/mosaic.vue @@ -3,15 +3,15 @@
-

+

No photos or videos found

-
+

Try using other terms and search options such as category, country and camera. - - Non-photographic and low-quality images require a review before they appear in search results. - -

+

+

+ Non-photographic and low-quality images require a review before they appear in search results. +

diff --git a/frontend/src/component/photo/viewer.vue b/frontend/src/component/photo/viewer.vue index 2aae82eea..0eec7f227 100644 --- a/frontend/src/component/photo/viewer.vue +++ b/frontend/src/component/photo/viewer.vue @@ -143,7 +143,7 @@ return; } - Notify.success(this.$gettext("Downloading...")); + Notify.success(this.$gettext("Downloading…")); let photo = new Photo(); photo.find(this.item.uid).then((p) => { p.downloadAll(); diff --git a/frontend/src/dialog/album/edit.vue b/frontend/src/dialog/album/edit.vue index d18976026..0e16c649b 100644 --- a/frontend/src/dialog/album/edit.vue +++ b/frontend/src/dialog/album/edit.vue @@ -48,15 +48,6 @@ color="secondary-dark" class="input-category" > - diff --git a/frontend/src/dialog/photo/info.vue b/frontend/src/dialog/photo/info.vue index 3b3015c6e..762a32d26 100644 --- a/frontend/src/dialog/photo/info.vue +++ b/frontend/src/dialog/photo/info.vue @@ -130,6 +130,19 @@ > + + + Analog + + + + + Created diff --git a/frontend/src/dialog/share.vue b/frontend/src/dialog/share.vue index eb8de73d7..bffbaea75 100644 --- a/frontend/src/dialog/share.vue +++ b/frontend/src/dialog/share.vue @@ -20,8 +20,7 @@ @@ -62,6 +61,7 @@ color="secondary-dark" v-model="link.Token" class="input-secret" + mask="n" > - A click will copy it to your clipboard. Any private photos remain private. - Alternatively, you can upload files directly to WebDAV servers like Nextcloud. + People you share a link with will be able to view public contents. + A click will copy it to your clipboard. + Any private photos and videos remain private and won't be shared. + Alternatively, you can upload files directly to WebDAV servers like Nextcloud. diff --git a/frontend/src/dialog/share/upload.vue b/frontend/src/dialog/share/upload.vue index 74ec55b4b..26031cea9 100644 --- a/frontend/src/dialog/share/upload.vue +++ b/frontend/src/dialog/share/upload.vue @@ -21,7 +21,7 @@ - Cancel + Cancel - {{ labels.setup }} + Setup - {{ labels.upload }} + Upload @@ -88,12 +88,6 @@ ], pathItems: [], newPath: "", - labels: { - account: this.$gettext("Account"), - path: this.$gettext("Folder"), - upload: this.$gettext("Upload"), - setup: this.$gettext("Setup"), - } } }, methods: { @@ -115,9 +109,9 @@ this.loading = false; if (files.length === 1) { - this.$notify.success("One photo shared"); + this.$notify.success("One file uploaded"); } else { - this.$notify.success(this.$gettextInterpolate(this.$gettext("%{n} photos shared"), {n: files.length})); + this.$notify.success(this.$gettextInterpolate(this.$gettext("%{n} files uploaded"), {n: files.length})); } this.$emit('confirm', this.account); diff --git a/frontend/src/dialog/upload.vue b/frontend/src/dialog/upload.vue index 2f85fb469..3360735e1 100644 --- a/frontend/src/dialog/upload.vue +++ b/frontend/src/dialog/upload.vue @@ -50,20 +50,18 @@ Upload failed - Uploading {{current}} of {{total}}... - - Upload complete. Indexing... + Uploading %{n} of %{t}… + + Upload complete. Indexing… Done.

- -

- Please don't upload photos containing offensive content. Uploads - that may contain such images will be rejected automatically. + Please don't upload photos containing offensive content. + Uploads that may contain such images will be rejected automatically.

@@ -140,7 +138,7 @@ }, cancel() { if (this.busy) { - Notify.info(this.$gettext("Uploading photos...")); + Notify.info(this.$gettext("Uploading photos…")); return; } @@ -148,7 +146,7 @@ }, confirm() { if (this.busy) { - Notify.info(this.$gettext("Uploading photos...")); + Notify.info(this.$gettext("Uploading photos…")); return; } @@ -189,7 +187,7 @@ this.completed = 0; this.uploads = []; - Notify.info(this.$gettext("Uploading photos...")); + Notify.info(this.$gettext("Uploading photos…")); let addToAlbums = []; diff --git a/frontend/src/model/file.js b/frontend/src/model/file.js index aedc9c050..758108f0f 100644 --- a/frontend/src/model/file.js +++ b/frontend/src/model/file.js @@ -85,7 +85,7 @@ export class File extends RestModel { } if (truncate) { - result = Util.truncate(result, truncate, "..."); + result = Util.truncate(result, truncate, "…"); } return result; diff --git a/frontend/src/model/folder.js b/frontend/src/model/folder.js index 6ca0c1d83..bccfb8be1 100644 --- a/frontend/src/model/folder.js +++ b/frontend/src/model/folder.js @@ -72,7 +72,7 @@ export class Folder extends RestModel { } if(truncate) { - result = Util.truncate(result, truncate, "..."); + result = Util.truncate(result, truncate, "…"); } return result; diff --git a/frontend/src/model/link.js b/frontend/src/model/link.js index 6ff45a938..9d06de610 100644 --- a/frontend/src/model/link.js +++ b/frontend/src/model/link.js @@ -51,11 +51,15 @@ export default class Link extends Model { }; } + getToken() { + return this.Token.toLowerCase().trim(); + } + url() { - let token = this.Token.toLowerCase(); + let token = this.getToken(); if(!token) { - token = "..."; + token = "…"; } if(this.hasSlug()) { @@ -66,7 +70,7 @@ export default class Link extends Model { } caption() { - return `/s/${this.Token.toLowerCase()}`; + return `/s/${this.getToken()}`; } getId() { diff --git a/frontend/src/model/photo.js b/frontend/src/model/photo.js index 37aaf5243..64b4f221b 100644 --- a/frontend/src/model/photo.js +++ b/frontend/src/model/photo.js @@ -53,6 +53,7 @@ export class Photo extends RestModel { Type: TypeImage, Favorite: false, Private: false, + Analog: false, TakenAt: "", TakenAtLocal: "", TakenSrc: "", @@ -127,7 +128,7 @@ export class Photo extends RestModel { let result = this.fileBase(this.FileName ? this.FileName : this.mainFile().Name); if (truncate) { - result = Util.truncate(result, truncate, "..."); + result = Util.truncate(result, truncate, "…"); } return result; diff --git a/frontend/src/model/rest.js b/frontend/src/model/rest.js index f5af6944e..4f3e69203 100644 --- a/frontend/src/model/rest.js +++ b/frontend/src/model/rest.js @@ -102,6 +102,10 @@ export class Rest extends Model { updateLink(link) { let values = link.getValues(false); + if(link.Token) { + values["Token"] = link.getToken(); + } + if(link.Password) { values["Password"] = link.Password; } diff --git a/frontend/src/pages/about/about.vue b/frontend/src/pages/about/about.vue index 981629c12..07e153b7d 100644 --- a/frontend/src/pages/about/about.vue +++ b/frontend/src/pages/about/about.vue @@ -78,9 +78,10 @@

Trademarks

-

PhotoPrism™ is a registered trademark of Michael Mayer. You may use it as required to - describe our software, run your own server, for educational purposes, but not for offering commercial - goods, products, or services without prior written permission. In other words, please ask.

+

+ PhotoPrism™ is a registered trademark of Michael Mayer. + You may use it as required to describe our software, run your own server, for educational purposes, but not for offering commercial goods, products, or services without prior written permission. In other words, please ask. +

diff --git a/frontend/src/pages/albums.vue b/frontend/src/pages/albums.vue index 52daba43b..93ec83c2d 100644 --- a/frontend/src/pages/albums.vue +++ b/frontend/src/pages/albums.vue @@ -155,13 +155,13 @@
- Contains one photo. + Contains one entry.
- Contains %{n} photos. + Contains %{n} entries.
diff --git a/frontend/src/pages/library/files.vue b/frontend/src/pages/library/files.vue index d2a43a21c..a4138a39a 100644 --- a/frontend/src/pages/library/files.vue +++ b/frontend/src/pages/library/files.vue @@ -35,12 +35,10 @@

- No files matched your search + No files matched your search

- Please re-index your originals if a file you expect is - missing. - + Please re-index your originals if a file you expect is missing.
@@ -405,13 +403,17 @@ this.breadcrumbs = this.getBreadcrumbs(); if (response.count === 0) { - this.$notify.warn(this.$gettext('Directory is empty')); - } else if (response.count === 1) { - this.$notify.info(this.$gettext('One entry found')); + this.$notify.warn(this.$gettext('Folder is empty')); + } else if (response.files === 1) { + this.$notify.info(this.$gettext('One file found')); + } else if (response.files === 0 && response.folders === 1) { + this.$notify.info(this.$gettext('One folder found')); + } else if (response.files === 0 && response.folders > 1) { + this.$notify.info(this.$gettextInterpolate(this.$gettext("%{n} folders found"), {n: response.folders})); } else if (response.files < this.files.limit) { - this.$notify.info(response.count + this.$gettext(' entries found')); + this.$notify.info(this.$gettextInterpolate(this.$gettext("Folder contains %{n} files"), {n: response.files})); } else { - this.$notify.warn(this.$gettext('Too many files in folder, showing first') + ` ${response.files}`); + this.$notify.warn(this.$gettextInterpolate(this.$gettext("Limit reached, showing first %{n} files"), {n: response.files})); } }).finally(() => { this.dirty = false; diff --git a/frontend/src/pages/library/import.vue b/frontend/src/pages/library/import.vue index 9230bfbd1..381136507 100644 --- a/frontend/src/pages/library/import.vue +++ b/frontend/src/pages/library/import.vue @@ -3,11 +3,10 @@

- {{ $gettext('Importing') }} {{fileName}}... - {{ $gettext('Importing files to originals...') }} - {{ $gettext('Done.') }} - {{ $gettext('Press button to start moving...') }} - {{ $gettext('Press button to start copying...') }} + Importing %{name}… + Importing files to originals… + Done. + Press button to start importing…

- {{ action }} {{ fileName }}... - {{ $gettext('Indexing photos and sidecar files...') }} - {{ $gettext('Done.') }} - {{ $gettext('Press button to start indexing...') }} + {{ action }} {{ fileName }}… + Indexing media and sidecar files… + Done. + Press button to start indexing…

@@ -374,7 +374,7 @@ this.settings.save().then((s) => { if (reload) { - this.$notify.info(this.$gettext("Reloading...")); + this.$notify.info(this.$gettext("Reloading…")); this.$notify.blockUI(); setTimeout(() => window.location.reload(), 100); } else { diff --git a/frontend/src/resources/de.mo b/frontend/src/resources/de.mo index baf0bf0826a2db49b0c503826000cd0cbf4589e4..0b1df899de2253b0255c312af1e4f27176004e6a 100644 GIT binary patch literal 25549 zcmdU%d7NBTnfGs4W7zi{E<#8G=_U!Qi3pu^cM_6Lx9KbpHmj>{R~21-tGM@8ce)Wl zK}SKw1svs7K?e~=N1bs%(J(l+3y!#q8rKmW6@49F#g!Ko$M^d?=ebqY38*vg=l$cY z52wHPoO|wBpYxpOEa9<3_qsjccgvh0I38yE2f+z@1i_<6D>Mi$Iyndqfj#h0I1CSi zqvoHs_pgEb5Pm0|3-5vZ!uP`k@I&VRj`2rO@t=T-|0J9T{|FbsdCv`k74U3Gk%9)? z8(s(ZgEw0Et;V;)g9yJ59takLU`)l9<@Wtl8*?2pA4&iq}wddbL#rrhe0Cz&w=hRbia4COOjxA8%T>*Pw z8LGVZLD!DP4?(rp!|+V_2<(DS8Bd$<{hOfDeHm1}UImrTU2t!BFWd{h&-@>Ri}62b z{2@FX|6!;3{1!r`w-l;A=fe|WzlBF|Z~Qf=@+B62EmZuM!DaAuQ1UYaRi3XwefJ&X z%VALOPl77X0yq~gGp>M2 zw-+kiwH7`IkHCKkB*`F#O8-qz<$o7c{P#nBe?L_DKVtkeRDNH9D$jSI%JD?^%JnqVcXLkn>Cb}- zKOCyO$G{K6)1b=p9e5>t9L|HiXZU!7Q1!SRY8)2fv9J!+-#0^*^A0He^iHULyWhe; z1@-;sq4M7emESkb|6Qo~k3-4PlNLUY!JzLBf-3Kk##12w1xxs&_g5H8P;x#7H^M3S z0{AFYJMG6HJqd0?@k1y% z`6*PoPs9D--re4Ri1ApcbWef&7cAtD+Hb4zDya8mxB%A7f1B|wQ2D+cDxdqH%JUCU z<@hkv_YcG8z)wJ>|9N--{3=wuA6WQLjK6|P_xDig?Q^F8et)R(dZcj)RR3QL)vgg# zdeczpzZ5F}TcOgs&HQ)T`@5klFWjH^A2xmx?t%YH@F2Joo&X<*l8-%?czu32)cd7S z?|Y#1;8hm>5~%XN7D_+e3pJh}hLZ1{P~|&&sjuJjpyX~9?1x+7UGVL26TA?msq)?i zPlb0tmGfb!cKtY1J^lr%zrO}mzV91<1rNl(=UKiUheG9l3RJr-gzCpLq1x|!NR@+r zsQ#O<_cy?U@xKb{`#Ye%zZ0&6_du2N$MAXZ346cjY#)CKRQz)wQ+)7zcs{%mD!;#m z7s5}&L*c&X1OZcXa4b~(3(S8NRJ~tjyxI5$sPylEs_#3X>hl2$|0k&Wd=mDm&WCEpMNsW{E>wCe;k9rrR5?BgC09R!D#tIO+WU7<@#mfA>w5^)`y=HCDnZ?pNYfXb%?)ef&PzQx|Z7pi<8gzC44q3ZDnRQrF;_-&~Ae;=yfegQ+c z2aPVf

-`ya+1)ON|9%6{?@FF-}KLGXp4ybndjD>$4 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 diff --git a/frontend/src/resources/de.po b/frontend/src/resources/de.po index 8763e4d3a..884cd34b1 100644 --- a/frontend/src/resources/de.po +++ b/frontend/src/resources/de.po @@ -13,10 +13,6 @@ msgstr "" "X-Generator: Poedit 2.3.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/pages/library/files.vue:412 -msgid " entries found" -msgstr " Einträge gefunden" - #: src/pages/albums.vue:443 src/share/albums.vue:347 msgid "%{n} albums found" msgstr "%{n} Alben gefunden" @@ -25,14 +21,18 @@ msgstr "%{n} Alben gefunden" msgid "%{n} entries found" msgstr "%{n} Einträge gefunden" +#: src/dialog/share/upload.vue:114 +msgid "%{n} files uploaded" +msgstr "%{n} Dateien hochgeladen" + +#: src/pages/library/files.vue:412 +msgid "%{n} folders found" +msgstr "%{n} Ordner gefunden" + #: src/pages/labels.vue:423 msgid "%{n} labels found" msgstr "%{n} Kategorien gefunden" -#: src/dialog/share/upload.vue:120 -msgid "%{n} photos shared" -msgstr "%{n} Bilder geteilt" - #: src/resources/options.js:114 msgid "1 hour" msgstr "1 Stunde" @@ -45,24 +45,11 @@ msgstr "12 Stunden" msgid "4 hours" msgstr "4 Stunden" -#: src/dialog/share.vue:72 -#, fuzzy -#| msgid "" -#| "A click will copy it to your clipboard. Any private photos remain " -#| "private.\n" -#| " Alternatively, you can upload files directly to " -#| "WebDAV servers like Nextcloud." -msgid "" -"A click will copy it to your clipboard. Any private photos remain private.\n" -" Alternatively, you can upload files directly to WebDAV servers " -"like Nextcloud." -msgstr "" -"Klicke auf den Link, um ihn zu kopieren. Private Fotos werden nicht " -"angezeigt.\n" -"Alternativ kannst du deine Dateien auch direkt zu WebDAV Servern wie " -"Nextcloud hochladen." +#: src/dialog/share.vue:71 +msgid "A click will copy it to your clipboard." +msgstr "Auf den Link klicken, um ihn zu kopieren." -#: src/dialog/share/upload.vue:92 src/model/account.js:91 +#: src/dialog/share/upload.vue:106 src/model/account.js:91 #: src/pages/settings.vue:12 msgid "Account" msgstr "Zugang" @@ -73,15 +60,16 @@ msgstr "Aktion" #: src/pages/settings/general.vue:320 msgid "Add files to your library via Web Upload." -msgstr "Fotos können über den Browser hochgeladen werden." +msgstr "Dateien über den Browser hochladen und indexieren." #: src/dialog/share.vue:76 msgid "Add Link" msgstr "Link hinzufügen" #: src/pages/albums.vue:108 -msgid "Add photos from search results by selecting them." -msgstr "Füge Bilder oder Videos aus der Suche hinzu, indem du sie selektierst." +msgid "Add photos or videos from search results by selecting them." +msgstr "" +"Selektierte Suchergebnisse können über das Kontextmenü hinzugefügt werden." #: src/dialog/account/add.vue:5 src/pages/settings/sync.vue:33 msgid "Add Server" @@ -135,7 +123,7 @@ msgstr "Album" msgid "Album Name" msgstr "Album Name" -#: src/component/navigation.vue:141 src/component/navigation.vue:150 +#: src/component/navigation.vue:149 src/component/navigation.vue:158 #: src/routes.js:104 src/share/routes.js:15 src/share/routes.js:22 msgid "Albums" msgstr "Alben" @@ -146,15 +134,15 @@ msgstr "Alben gelöscht" #: src/pages/albums.vue:365 src/share/albums.vue:269 msgid "All %{n} albums loaded" -msgstr "Alle %{n} Alben geladen" +msgstr "Alle %{n} Alben werden angezeigt" #: src/pages/album/photos.vue:255 src/share/photos.vue:298 msgid "All %{n} entries loaded" -msgstr "Alle %{n} Einträge geladen" +msgstr "Alle %{n} Einträge werden angezeigt" #: src/pages/labels.vue:342 msgid "All %{n} labels loaded" -msgstr "Alle %{n} Kategorien geladen" +msgstr "Alle %{n} Kategorien werden angezeigt" #: src/component/album/toolbar.vue:79 src/component/photo/toolbar.vue:174 msgid "All Cameras" @@ -173,13 +161,13 @@ msgstr "Alle Farben" msgid "All Countries" msgstr "Alle Länder" -#: src/pages/library/import.vue:106 +#: src/pages/library/import.vue:105 msgid "All files from import folder" msgstr "Alle Dateien aus Import" #: src/component/photo/toolbar.vue:175 msgid "All Lenses" -msgstr "Alle Linsen" +msgstr "Alle Objektive" #: src/component/photo/toolbar.vue:178 msgid "All Months" @@ -193,18 +181,36 @@ msgstr "Alle Dateien aus Originals" msgid "All Years" msgstr "Alle Jahre" +#: src/dialog/share.vue:73 +msgid "" +"Alternatively, you can upload files directly to WebDAV servers like " +"Nextcloud." +msgstr "" +"Alternativ können Dateien auch direkt auf kompatible WebDAV-Server " +"hochgeladen z.B. Nextcloud." + #: src/dialog/photo/details.vue:445 msgid "Altitude (m)" -msgstr "Höhenmeter" +msgstr "Höhe (m)" #: src/common/api.js:76 msgid "An error occurred - are you offline?" -msgstr "Der Server konnte nicht erreicht werden - offline?" +msgstr "Server konnte nicht erreicht werden - keine Verbindung?" + +#: src/dialog/photo/info.vue:107 +msgid "Analog" +msgstr "Analog" #: src/pages/settings/general.vue:773 msgid "Animation" msgstr "Animation" +#: src/dialog/share.vue:72 +msgid "Any private photos and videos remain private and won't be shared." +msgstr "" +"Als privat markierte Fotos und Videos bleiben privat und werden nicht " +"geteilt." + #: src/dialog/account/edit.vue:594 msgid "API Key" msgstr "API Key" @@ -217,13 +223,13 @@ msgstr "Speichern" msgid "Approve" msgstr "Übernehmen" -#: src/component/navigation.vue:89 src/component/photo/cards.vue:120 +#: src/component/navigation.vue:97 src/component/photo/cards.vue:120 #: src/component/photo/clipboard.vue:155 src/pages/settings/general.vue:415 -#: src/routes.js:171 src/share/photo/clipboard.vue:74 +#: src/routes.js:178 src/share/photo/clipboard.vue:74 msgid "Archive" msgstr "Archiv" -#: src/dialog/photo/info.vue:139 +#: src/dialog/photo/info.vue:147 msgid "Archived" msgstr "Archiviert" @@ -245,7 +251,7 @@ msgstr "Diesen Account wirklich löschen?" #: src/dialog/photo/details.vue:450 msgid "Artist" -msgstr "Fotograf" +msgstr "Erstellt von" #: src/pages/settings/account.vue:70 msgid "At least 6 characters." @@ -269,22 +275,22 @@ msgstr "Braun" #: src/pages/settings/general.vue:544 msgid "Browse and edit image classification labels." -msgstr "Kategorien sehen und bearbeiten." +msgstr "Automatische Bild-Kategorisierung sehen und bearbeiten." #: src/pages/settings/general.vue:480 msgid "Browse indexed files and folders in Library." msgstr "Durchsuche indexierte Dateien und Verzeichnisse." #: src/common/notify.js:72 -msgid "Busy, please wait..." +msgid "Busy, please wait…" msgstr "Bitte warten…" -#: src/component/navigation.vue:172 src/routes.js:117 src/routes.js:124 +#: src/component/navigation.vue:188 src/routes.js:117 src/routes.js:124 msgid "Calendar" msgstr "Kalender" #: src/component/album/toolbar.vue:119 src/component/photo/list.vue:113 -#: src/component/photo/toolbar.vue:199 src/dialog/album/edit.vue:126 +#: src/component/photo/toolbar.vue:199 src/dialog/album/edit.vue:117 #: src/dialog/photo/details.vue:429 src/share/photo/list.vue:96 msgid "Camera" msgstr "Kamera" @@ -300,9 +306,9 @@ msgstr "Limit erreicht, bitte Suche eingrenzen" #: src/dialog/account/add.vue:81 src/dialog/account/edit.vue:95 #: src/dialog/account/remove.vue:13 src/dialog/album/delete.vue:13 -#: src/dialog/album/edit.vue:48 src/dialog/label/delete.vue:13 -#: src/dialog/photo/album.vue:15 src/dialog/share.vue:155 -#: src/dialog/share/upload.vue:29 src/pages/library/import.vue:35 +#: src/dialog/album/edit.vue:39 src/dialog/label/delete.vue:13 +#: src/dialog/photo/album.vue:15 src/dialog/share.vue:156 +#: src/dialog/share/upload.vue:29 src/pages/library/import.vue:34 #: src/pages/library/index.vue:26 msgid "Cancel" msgstr "Abbrechen" @@ -312,7 +318,7 @@ msgid "Cards" msgstr "Karteikarten" #: src/component/album/toolbar.vue:121 src/component/photo/toolbar.vue:204 -#: src/dialog/album/edit.vue:128 src/dialog/photo/details.vue:433 +#: src/dialog/album/edit.vue:119 src/dialog/photo/details.vue:433 #: src/pages/albums.vue:241 src/share/albums.vue:163 msgid "Category" msgstr "Kategorie" @@ -323,17 +329,17 @@ msgstr "Ändern" #: src/pages/settings/general.vue:448 msgid "Change photo titles, locations and other metadata." -msgstr "Titel, Ort und andere Metadaten können bearbeitet werden." +msgstr "Titel, Datum, Ort und andere Metadaten können geändert werden." #: src/component/photo/clipboard.vue:151 src/share/photo/clipboard.vue:70 msgid "Change private flag" -msgstr "Privatstatus ändern" +msgstr "Als privat markieren" #: src/dialog/photo/files.vue:30 msgid "Change Status" msgstr "Status ändern" -#: src/dialog/photo/info.vue:131 +#: src/dialog/photo/info.vue:139 msgid "Checked" msgstr "Geprüft" @@ -365,25 +371,25 @@ msgstr "Wahrscheinlichkeit" msgid "Connect" msgstr "Verbinden" -#: src/component/navigation.vue:355 -msgid "Connecting..." -msgstr "Offline" - #: src/pages/albums.vue:105 -msgid "Contains %{n} photos." -msgstr "Enthält %{n} Bilder." +msgid "Contains %{n} entries." +msgstr "Enthält %{n} Einträge." #: src/pages/albums.vue:102 -msgid "Contains one photo." -msgstr "Enthält ein Foto." +msgid "Contains one entry." +msgstr "Enthält einen Eintrag." #: src/pages/library/index.vue:116 src/pages/settings/general.vue:130 msgid "Convert to JPEG" msgstr "Automatisch konvertieren" -#: src/dialog/share.vue:170 +#: src/pages/library/index.vue:182 +msgid "Converting" +msgstr "Konvertiere" + +#: src/dialog/share.vue:171 msgid "Copied to clipboard" -msgstr "In Zwischenablage gespeichert" +msgstr "In Zwischenablage kopiert" #: src/pages/library.vue:12 src/pages/library.vue:1 msgid "Copy" @@ -398,7 +404,7 @@ msgid "Couldn't find any results" msgstr "Leider nichts gefunden" #: src/component/album/toolbar.vue:118 src/component/photo/toolbar.vue:198 -#: src/dialog/album/edit.vue:125 src/dialog/photo/details.vue:428 +#: src/dialog/album/edit.vue:116 src/dialog/photo/details.vue:428 msgid "Country" msgstr "Land" @@ -406,10 +412,14 @@ msgstr "Land" msgid "Create album" msgstr "Album erstellen" -#: src/dialog/photo/info.vue:107 +#: src/dialog/photo/info.vue:115 msgid "Created" msgstr "Hinzugefügt" +#: src/pages/library/index.vue:188 +msgid "Creating thumbnails for" +msgstr "Erstelle Thumbnails für" + #: src/pages/settings/account.vue:38 msgid "Current Password" msgstr "Aktuelles Passwort" @@ -420,7 +430,7 @@ msgstr "Cyan" #: src/resources/options.js:46 msgid "Cyano" -msgstr "Cyanblau" +msgstr "Cyano" #: src/resources/options.js:117 msgid "Daily" @@ -436,12 +446,12 @@ msgstr "Standard Ordner" #: src/component/album/clipboard.vue:117 src/component/label/clipboard.vue:92 #: src/dialog/account/remove.vue:15 src/dialog/album/delete.vue:15 -#: src/dialog/label/delete.vue:15 src/dialog/share.vue:294 +#: src/dialog/label/delete.vue:15 src/dialog/share.vue:291 #: src/share/album/clipboard.vue:72 msgid "Delete" msgstr "Löschen" -#: src/component/album/toolbar.vue:115 src/dialog/album/edit.vue:122 +#: src/component/album/toolbar.vue:115 src/dialog/album/edit.vue:113 #: src/dialog/photo/details.vue:453 msgid "Description" msgstr "Beschreibung" @@ -454,24 +464,20 @@ msgstr "Details" msgid "Dimensions" msgstr "Auflösung" -#: src/pages/library/files.vue:408 -msgid "Directory is empty" -msgstr "Verzeichnis ist leer" - #: src/dialog/account/edit.vue:61 src/dialog/account/edit.vue:120 msgid "Disabled" msgstr "Aus" -#: src/routes.js:283 src/routes.js:290 src/routes.js:297 src/routes.js:304 +#: src/routes.js:290 src/routes.js:297 src/routes.js:304 src/routes.js:311 msgid "Discover" msgstr "Entdecken" -#: src/dialog/share.vue:156 +#: src/dialog/share.vue:157 msgid "Done" msgstr "Fertig" -#: src/dialog/upload.vue:39 src/pages/library/import.vue:44 -#: src/pages/library/index.vue:43 +#: src/dialog/upload.vue:39 src/pages/library/import.vue:7 +#: src/pages/library/index.vue:7 msgid "Done." msgstr "Fertig." @@ -488,14 +494,15 @@ msgstr "Dateien herunterladen" #: src/pages/settings/general.vue:352 msgid "Download single files and zip archives." -msgstr "Einzelne Bilder sowie Zip-Archive können heruntergeladen werden." +msgstr "" +"Einzelne Fotos, Videos sowie Zip-Archive können heruntergeladen werden." #: src/component/album/clipboard.vue:181 src/component/file/clipboard.vue:106 #: src/component/label/clipboard.vue:132 src/component/photo/clipboard.vue:223 #: src/component/photo/viewer.vue:146 src/share/album/clipboard.vue:93 #: src/share/photo/clipboard.vue:97 -msgid "Downloading..." -msgstr "Lade herunter…" +msgid "Downloading…" +msgstr "Wird heruntergeladen…" #: src/dialog/photo/files.vue:103 msgid "Duplicate" @@ -522,7 +529,7 @@ msgstr "Account bearbeiten" msgid "Edit Photo" msgstr "Foto bearbeiten" -#: src/dialog/photo/info.vue:123 +#: src/dialog/photo/info.vue:131 msgid "Edited" msgstr "Bearbeitet" @@ -538,7 +545,7 @@ msgstr "Englisch" msgid "Error" msgstr "Fehler" -#: src/component/navigation.vue:278 +#: src/component/navigation.vue:294 msgid "Errors" msgstr "Ereignisse" @@ -552,11 +559,13 @@ msgstr "Jeden zweiten Tag" #: src/pages/settings/general.vue:67 msgid "" -"Exclude photos marked as private from search results, shared albums, labels " +"Exclude content marked as private from search results, shared albums, labels " "and places." -msgstr "Als privat markierte Bilder werden nicht in Suchergebnissen angezeigt." +msgstr "" +"Als privat markierte Inhalte werden nicht in Suchergebnissen und geteilten " +"Alben angezeigt." -#: src/dialog/account/edit.vue:288 src/dialog/share.vue:173 +#: src/dialog/account/edit.vue:288 src/dialog/share.vue:174 msgid "Expires" msgstr "Ablaufdatum" @@ -568,19 +577,19 @@ msgstr "Belichtungszeit" msgid "F Number" msgstr "F Nummer" -#: src/dialog/share.vue:170 +#: src/dialog/share.vue:171 msgid "Failed copying to clipboard" -msgstr "Speichern in der Zwischenablage fehlgeschlagen" +msgstr "Konnte nicht in die Zwischenablage kopiert werden" -#: src/dialog/share.vue:202 +#: src/dialog/share.vue:203 msgid "Failed removing link" -msgstr "Der Link konnte nicht entfernt werden" +msgstr "Der Link konnte nicht gelöscht werden" -#: src/dialog/share.vue:190 +#: src/dialog/share.vue:191 msgid "Failed updating link" -msgstr "Der Link konnte nicht aktualisiert werden" +msgstr "Der Link konnte nicht gespeichert werden" -#: src/dialog/upload.vue:243 +#: src/dialog/upload.vue:241 msgid "Failure while importing uploaded files" msgstr "Fehler beim Importieren der hochgeladenen Dateien" @@ -592,7 +601,7 @@ msgstr "Schnell" msgid "Favorite" msgstr "Favorit" -#: src/component/navigation.vue:102 src/routes.js:143 +#: src/component/navigation.vue:110 src/routes.js:150 msgid "Favorites" msgstr "Favoriten" @@ -600,7 +609,7 @@ msgstr "Favoriten" msgid "File" msgstr "Datei" -#: src/routes.js:203 +#: src/routes.js:210 msgid "File Browser" msgstr "Datei Browser" @@ -625,28 +634,40 @@ msgstr "" "Dateien mit Namen wie ‘IMG_1234 (2)’ oder ‘IMG_1234 copy 2’ werden " "zusammengefasst." +#: src/component/navigation.vue:80 +msgid "Film Scans" +msgstr "Film-Scans" + #: src/dialog/photo/details.vue:448 msgid "Focal Length" msgstr "Brennweite" #: src/dialog/account/edit.vue:326 src/dialog/account/edit.vue:332 -#: src/dialog/share/upload.vue:93 src/model/folder.js:187 -#: src/pages/library/files.vue:85 src/pages/library/import.vue:121 +#: src/dialog/share/upload.vue:147 src/model/folder.js:187 +#: src/pages/library/files.vue:83 src/pages/library/import.vue:120 #: src/pages/library/index.vue:117 msgid "Folder" msgstr "Ordner" -#: src/pages/library/files.vue:179 +#: src/pages/library/files.vue:414 +msgid "Folder contains %{n} files" +msgstr "Ordner enthält %{n} Dateien" + +#: src/pages/library/files.vue:406 +msgid "Folder is empty" +msgstr "Ordner ist leer" + +#: src/pages/library/files.vue:177 msgid "Folder Name" msgstr "Ordnername" -#: src/component/navigation.vue:159 src/routes.js:130 src/routes.js:137 +#: src/component/navigation.vue:167 src/routes.js:130 src/routes.js:137 msgid "Folders" msgstr "Ordner" #: src/pages/photos.vue:391 msgid "Found %{n} results" -msgstr "%{n} Ergebnisse gefunden" +msgstr "Es gibt %{n} Ergebnisse" #: src/pages/photos.vue:389 msgid "Found one result" @@ -673,7 +694,7 @@ msgid "Grey" msgstr "Grau" #: src/component/album/toolbar.vue:104 src/component/photo/toolbar.vue:191 -#: src/dialog/album/edit.vue:115 +#: src/dialog/album/edit.vue:106 msgid "Group by similarity" msgstr "Ähnlichkeit" @@ -681,16 +702,16 @@ msgstr "Ähnlichkeit" msgid "Group Sequential" msgstr "Sequenzen gruppieren" -#: src/component/navigation.vue:309 src/component/navigation.vue:25 +#: src/component/navigation.vue:325 src/component/navigation.vue:25 #: src/pages/help.vue:4 msgid "Help" msgstr "Hilfe" -#: src/component/navigation.vue:269 +#: src/component/navigation.vue:285 msgid "Hidden" msgstr "Unsichtbar" -#: src/routes.js:209 +#: src/routes.js:216 msgid "Hidden Files" msgstr "Unsichtbare Dateien" @@ -710,55 +731,61 @@ msgstr "Hybrid" msgid "image" msgstr "Bild" -#: src/pages/library/import.vue:44 src/pages/settings/general.vue:607 +#: src/pages/library/import.vue:43 src/pages/settings/general.vue:607 msgid "Import" msgstr "Import" -#: src/pages/library/import.vue:164 +#: src/pages/library/import.vue:163 msgid "Import failed" msgstr "Import fehlgeschlagen" -#: src/pages/library/import.vue:26 +#: src/pages/library/import.vue:25 msgid "" "Imported files will be sorted by date and given a unique name to avoid " "duplicates." msgstr "" -"Dateien werden beim Import nach Datum sortiert und umbenannt um Duplikate zu " -"vermeiden." +"Dateien werden beim Import verschoben und nach Datum sortiert, um Duplikate " +"zu vermeiden." #: src/pages/settings/general.vue:608 msgid "Imported files will be sorted by date and given a unique name." -msgstr "Dateien werden beim Import nach Datum sortiert und umbenannt." +msgstr "" +"Dateien werden beim Import verschoben und nach Datum sortiert, um Duplikate " +"zu vermeiden." -#: src/pages/library/import.vue:31 -msgid "Importing" -msgstr "Importiere" +#: src/pages/library/import.vue:5 +msgid "Importing %{name}…" +msgstr "Importiere %{name}…" -#: src/pages/library/import.vue:40 -msgid "Importing files to originals..." -msgstr "Importiere Dateien ins Originals Verzeichnis…" +#: src/pages/library/import.vue:6 +msgid "Importing files to originals…" +msgstr "Importiere Dateien nach Originals…" #: src/pages/library.vue:4 src/pages/library/index.vue:30 msgid "Index" +msgstr "Index" + +#: src/pages/library/index.vue:176 +msgid "Indexing" msgstr "Indexieren" #: src/pages/library/index.vue:158 msgid "Indexing failed" msgstr "Indexierung fehlgeschlagen" -#: src/pages/library/index.vue:38 -msgid "Indexing photos and sidecar files..." -msgstr "Indexiere Bilder und Sidecar Dateien…" +#: src/pages/library/index.vue:6 +msgid "Indexing media and sidecar files…" +msgstr "Indexiere Fotos, Videos und Sidecar-Dateien…" #: src/dialog/account/edit.vue:362 msgid "Interval" msgstr "Intervall" -#: src/model/rest.js:151 +#: src/model/rest.js:155 msgid "Item" msgstr "Eintrag" -#: src/pages/library/import.vue:27 +#: src/pages/library/import.vue:26 msgid "JPEGs and thumbnails are automatically rendered as needed." msgstr "JPEGs und Thumbnails werden bei Bedarf automatisch erstellt." @@ -774,8 +801,8 @@ msgstr "Kategorie" msgid "Label Name" msgstr "Name" -#: src/component/navigation.vue:230 src/dialog/photo/edit.vue:27 -#: src/pages/settings/general.vue:543 src/routes.js:222 +#: src/component/navigation.vue:246 src/dialog/photo/edit.vue:27 +#: src/pages/settings/general.vue:543 src/routes.js:229 msgid "Labels" msgstr "Kategorien" @@ -807,13 +834,13 @@ msgstr "Linse" msgid "Let PhotoPrism create albums from past events." msgstr "PhotoPrism erstellt automatisch Alben deiner schönsten Erlebnisse." -#: src/component/navigation.vue:243 src/component/navigation.vue:252 +#: src/component/navigation.vue:259 src/component/navigation.vue:268 #: src/pages/settings/general.vue:6 src/pages/settings/general.vue:575 -#: src/routes.js:241 src/routes.js:248 src/routes.js:255 +#: src/routes.js:248 src/routes.js:255 src/routes.js:262 msgid "Library" msgstr "Dateien" -#: src/component/navigation.vue:317 src/component/navigation.vue:33 +#: src/component/navigation.vue:333 src/component/navigation.vue:33 #: src/dialog/photo/details.vue:452 src/pages/about/license.vue:4 msgid "License" msgstr "Lizenz" @@ -822,7 +849,11 @@ msgstr "Lizenz" msgid "Lime" msgstr "Hellgrün" -#: src/model/link.js:101 +#: src/pages/library/files.vue:416 +msgid "Limit reached, showing first %{n} files" +msgstr "Limit erreicht, zeige erste %{n} Dateien" + +#: src/model/link.js:105 msgid "Link" msgstr "Link" @@ -842,11 +873,11 @@ msgstr "Ort" msgid "Location" msgstr "Ort" -#: src/component/navigation.vue:343 +#: src/component/navigation.vue:359 msgid "Login" msgstr "Anmelden" -#: src/component/navigation.vue:331 +#: src/component/navigation.vue:347 msgid "Logout" msgstr "Abmelden" @@ -878,7 +909,7 @@ msgstr "Mittel" msgid "Missing" msgstr "Fehlend" -#: src/component/navigation.vue:185 src/pages/settings/general.vue:511 +#: src/component/navigation.vue:201 src/pages/settings/general.vue:511 #: src/routes.js:91 src/routes.js:98 msgid "Moments" msgstr "Erlebnisse" @@ -893,30 +924,30 @@ msgstr "Monat" #: src/resources/options.js:54 src/resources/options.js:107 msgid "Moonlight" -msgstr "Mondlicht" +msgstr "Moonlight" #: src/pages/albums.vue:446 src/share/albums.vue:350 msgid "More than 20 albums found" -msgstr "Über 20 Albengefunden" +msgstr "Mehr als 20 Alben gefunden" #: src/pages/labels.vue:425 msgid "More than 20 labels found" -msgstr "Über 20 Labels gefunden" +msgstr "Mehr als 20 Labels gefunden" #: src/pages/album/photos.vue:361 src/share/photos.vue:404 msgid "More than 50 entries found" -msgstr "Über 50 Einträge gefunden" +msgstr "Mehr als 50 Einträge gefunden" #: src/pages/photos.vue:394 msgid "More than 50 results" -msgstr "Über 50 Ergebnisse" +msgstr "Mehr als 50 Ergebnisse" #: src/component/album/toolbar.vue:93 src/component/photo/toolbar.vue:182 msgid "Mosaic" msgstr "Mosaik" #: src/component/album/toolbar.vue:105 src/component/photo/toolbar.vue:192 -#: src/dialog/album/edit.vue:116 +#: src/dialog/album/edit.vue:107 msgid "Most relevant" msgstr "Relevanz" @@ -924,7 +955,7 @@ msgstr "Relevanz" msgid "Move" msgstr "Verschieben" -#: src/pages/library/import.vue:120 +#: src/pages/library/import.vue:119 msgid "Move Files" msgstr "Verschiebe Dateien" @@ -936,15 +967,15 @@ msgstr[0] "" msgstr[1] "" #: src/component/photo/list.vue:115 src/dialog/account/edit.vue:488 -#: src/dialog/album/edit.vue:121 src/dialog/photo/files.vue:43 +#: src/dialog/album/edit.vue:112 src/dialog/photo/files.vue:43 #: src/dialog/photo/files.vue:162 src/dialog/photo/info.vue:27 #: src/pages/login.vue:72 src/share/photo/list.vue:97 msgid "Name" msgstr "Name" -#: src/component/album/toolbar.vue:123 src/dialog/album/edit.vue:119 +#: src/component/album/toolbar.vue:123 src/dialog/album/edit.vue:110 #: src/dialog/photo/labels.vue:116 src/pages/labels.vue:199 -#: src/pages/library/files.vue:181 +#: src/pages/library/files.vue:179 msgid "Name too long" msgstr "Name zu lang" @@ -958,12 +989,12 @@ msgid "New Password" msgstr "Neues Passwort" #: src/component/album/toolbar.vue:101 src/component/photo/toolbar.vue:188 -#: src/dialog/album/edit.vue:112 +#: src/dialog/album/edit.vue:103 msgid "Newest first" msgstr "Neueste zuerst" #: src/dialog/photo/archive.vue:13 src/dialog/photo/info.vue:265 -#: src/dialog/photo/info.vue:296 +#: src/dialog/photo/info.vue:296 src/dialog/photo/info.vue:327 msgid "No" msgstr "Nein" @@ -1012,10 +1043,9 @@ msgstr "Keine Backup-Server eingerichtet." msgid "No warnings or errors" msgstr "Keine Warnungen oder Fehler vorhanden" -#: src/component/photo/cards.vue:11 src/component/photo/list.vue:101 -#: src/component/photo/mosaic.vue:11 src/dialog/upload.vue:52 -#: src/pages/settings/general.vue:99 src/share/photo/cards.vue:11 -#: src/share/photo/list.vue:84 src/share/photo/mosaic.vue:11 +#: src/component/photo/cards.vue:12 src/component/photo/list.vue:101 +#: src/component/photo/mosaic.vue:12 src/dialog/upload.vue:50 +#: src/pages/settings/general.vue:99 src/share/photo/list.vue:84 msgid "" "Non-photographic and low-quality images require a review before they appear " "in search results." @@ -1035,7 +1065,7 @@ msgstr "Keine Ergebnisse" msgid "Not implemented yet" msgstr "Noch nicht implementiert" -#: src/pages/library/import.vue:29 +#: src/pages/library/import.vue:28 msgid "Note that you can as well manage and re-index your originals manually." msgstr "" "Beachte: Wenn du deine Ordnerstruktur und Dateinamen beibehalten willst " @@ -1047,7 +1077,7 @@ msgid "" "Support for additional\n" " services like Google Drive will be added over time." msgstr "" -"Hinweis: Momentan können nur WebDAV Server wie Nextcloud konfiguriert " +"Hinweis: Momentan können nur WebDAV-Server wie Nextcloud konfiguriert " "werden. Die Unterstützung weiterer Dienste ist geplant." #: src/pages/settings/account.vue:20 @@ -1066,11 +1096,7 @@ msgstr "Notizen" msgid "Nothing to see here yet. Be patient." msgstr "Noch nichts zu sehen. Gedulde dich noch ein bisschen." -#: src/dialog/upload.vue:36 -msgid "of" -msgstr "von" - -#: src/resources/options.js:91 +#: src/component/navigation.vue:371 src/resources/options.js:91 msgid "Offline" msgstr "Offline" @@ -1079,7 +1105,7 @@ msgid "OK" msgstr "OK" #: src/component/album/toolbar.vue:102 src/component/photo/toolbar.vue:189 -#: src/dialog/album/edit.vue:113 +#: src/dialog/album/edit.vue:104 msgid "Oldest first" msgstr "Älteste zuerst" @@ -1091,11 +1117,18 @@ msgstr "Einmal die Woche" msgid "One album found" msgstr "Ein Album gefunden" -#: src/pages/album/photos.vue:356 src/pages/library/files.vue:410 -#: src/share/photos.vue:399 +#: src/pages/album/photos.vue:356 src/share/photos.vue:399 msgid "One entry found" msgstr "Ein Eintrag gefunden" +#: src/pages/library/files.vue:408 +msgid "One file found" +msgstr "Eine Datei gefunden" + +#: src/pages/library/files.vue:410 +msgid "One folder found" +msgstr "Ein Ordner gefunden" + #: src/resources/options.js:58 msgid "Onyx" msgstr "Onyx" @@ -1108,7 +1141,7 @@ msgstr "Orange" msgid "Original" msgstr "Original" -#: src/pages/library/import.vue:28 +#: src/pages/library/import.vue:27 msgid "Original file names will be stored and indexed." msgstr "Die originalen Dateinamen werden gespeichert und indexiert." @@ -1116,13 +1149,13 @@ msgstr "Die originalen Dateinamen werden gespeichert und indexiert." msgid "Original Name" msgstr "Original Name" -#: src/component/navigation.vue:260 src/pages/library/files.vue:6 +#: src/component/navigation.vue:276 src/pages/library/files.vue:6 #: src/pages/settings/general.vue:479 msgid "Originals" msgstr "Originale" #: src/dialog/account/add.vue:80 src/dialog/account/edit.vue:561 -#: src/dialog/share.vue:154 src/pages/login.vue:73 +#: src/dialog/share.vue:155 src/pages/login.vue:73 msgid "Password" msgstr "Passwort" @@ -1134,23 +1167,21 @@ msgstr "Passwort geändert" msgid "Path" msgstr "Pfad" -#: src/routes.js:235 +#: src/routes.js:242 msgid "People" -msgstr "Menschen" +msgstr "Personen" -#: src/model/photo.js:583 +#: src/dialog/share.vue:70 +msgid "People you share a link with will be able to view public contents." +msgstr "Jeder mit diesem Link wird öffentliche Fotos und Videos sehen können." + +#: src/model/photo.js:584 msgid "Photo" msgstr "Foto" -#: src/pages/about/about.vue:73 -msgid "" -"PhotoPrism™ is a registered trademark of Michael Mayer. You may use it as " -"required to\n" -" describe our software, run your own server, for educational " -"purposes, but not for offering commercial\n" -" goods, products, or services without prior written permission. In " -"other words, please ask." -msgstr "" +#: src/pages/about/about.vue:74 +msgid "PhotoPrism™ is a registered trademark of Michael Mayer." +msgstr "PhotoPrism™ ist ein registriertes Markenzeichen von Michael Mayer." #: src/component/navigation.vue:54 src/component/navigation.vue:63 msgid "Photos" @@ -1160,58 +1191,44 @@ msgstr "Fotos" msgid "Pink" msgstr "Pink" -#: src/component/navigation.vue:198 src/component/navigation.vue:207 +#: src/component/navigation.vue:214 src/component/navigation.vue:223 #: src/pages/settings/general.vue:124 src/pages/settings/general.vue:671 -#: src/routes.js:178 src/routes.js:184 src/routes.js:190 src/routes.js:197 +#: src/routes.js:185 src/routes.js:191 src/routes.js:197 src/routes.js:204 msgid "Places" msgstr "Karten" #: src/pages/settings/account.vue:99 msgid "Please confirm your new password." -msgstr "Bitte bestätige dein neues Passwort." +msgstr "Neues Passwort bitte bestätigen." -#: src/dialog/upload.vue:47 -msgid "" -"Please don't upload photos containing offensive content. Uploads\n" -" that may contain such images will be rejected automatically." -msgstr "" -"Bitte lade keine anstößigen Bilder hoch, diese werden automatisch erkannt " -"und gelöscht." +#: src/dialog/upload.vue:45 +msgid "Please don't upload photos containing offensive content." +msgstr "Bitte lade keine anstößigen Bilder hoch." #: src/pages/login.vue:14 msgid "Please enter your name and password to proceed:" -msgstr "Bitte gib dein Passwort ein, um fortzufahren…" +msgstr "Bitte Name und Passwort eingeben, um fortzufahren:" #: src/pages/library/files.vue:39 -msgid "" -"Please re-index your originals if a file you expect is\n" -" missing." -msgstr "Wenn du eine Datei vermisst, indexiere deine Originals erneut." +msgid "Please re-index your originals if a file you expect is missing." +msgstr "Bitte erneut indexieren, falls eine Datei fehlt." #: src/dialog/account/edit.vue:414 msgid "Preserve filenames" msgstr "Namen beibehalten" -#: src/pages/library/import.vue:53 -msgid "Press button to start copying..." -msgstr "Klicke “Import” um den Kopiervorgang zu starten" +#: src/pages/library/import.vue:8 +msgid "Press button to start importing…" +msgstr "Auf die Schaltfläche klicken, um Dateien zu importieren…" -#: src/pages/library/index.vue:47 -msgid "Press button to start indexing..." -msgstr "Klicke “Indexieren” um das Indexieren zu starten" - -#: src/pages/library/import.vue:48 -msgid "Press button to start moving..." -msgstr "Klicke “Import” um den Importvorgang zu starten" +#: src/pages/library/index.vue:8 +msgid "Press button to start indexing…" +msgstr "Auf die Schaltfläche klicken, um Dateien zu indexieren…" #: src/dialog/upload.vue:22 src/dialog/upload.vue:4 msgid "Press enter to create a new album." msgstr "Enter drücken, um ein neues Album zu erstellen." -#: src/dialog/album/edit.vue:30 src/dialog/album/edit.vue:4 -msgid "Press enter to create a new category." -msgstr "Enter drücken, um eine neue Kategorie zu erstellen." - #: src/dialog/photo/files.vue:18 msgid "Preview" msgstr "Voransicht" @@ -1220,8 +1237,8 @@ msgstr "Voransicht" msgid "Primary" msgstr "Hauptdatei" -#: src/component/navigation.vue:115 src/dialog/photo/info.vue:99 -#: src/routes.js:164 +#: src/component/navigation.vue:123 src/dialog/photo/info.vue:99 +#: src/routes.js:171 msgid "Private" msgstr "Privat" @@ -1243,15 +1260,14 @@ msgstr "Zufällig" #: src/resources/options.js:62 msgid "Raspberry" -msgstr "Himbeere" +msgstr "Raspberry" #: src/pages/library/index.vue:120 msgid "Re-index all originals, including already indexed and unchanged files." -msgstr "" -"Indexiere alle Dateien, auch bereits indexierte und unveränderte Dateien." +msgstr "Auch bereits bekannte und unveränderte Dateien indexieren." #: src/component/album/toolbar.vue:100 src/component/photo/toolbar.vue:187 -#: src/dialog/album/edit.vue:111 +#: src/dialog/album/edit.vue:102 msgid "Recently added" msgstr "Zuletzt hinzugefügt" @@ -1260,8 +1276,8 @@ msgid "Red" msgstr "Rot" #: src/pages/settings/general.vue:377 -msgid "Reloading..." -msgstr "Lade…" +msgid "Reloading…" +msgstr "Wird neu geladen…" #: src/dialog/account/edit.vue:104 msgid "Remote Sync" @@ -1274,20 +1290,19 @@ msgstr "Entfernen" #: src/component/photo/clipboard.vue:198 msgid "remove failed: unknown album" -msgstr "Entfernen fehlgeschlagen: Unbekanntes Album" +msgstr "Löschen nicht möglich: Unbekanntes Album" -#: src/pages/library/import.vue:124 +#: src/pages/library/import.vue:123 msgid "" "Remove imported files to save storage. Unsupported file types will never be " "deleted, they remain in their current location." msgstr "" -"Verschiebe Dateien von Import zu Originals, um Speicherplatz zu sparen. " -"Dateitypen, die nicht unterstützt werden, bleiben in Import bestehen. " -"Verschobene Dateien werden neu sortiert und umbenannt." +"Dateien von Import nach Originals verschieben, um Speicherplatz zu sparen. " +"Dateitypen, die nicht unterstützt werden, verbleiben in ihrem Ordner." #: src/common/api.js:60 msgid "Request failed - invalid response" -msgstr "Request fehlgeschlagen - ungültige Antwort" +msgstr "Anfrage fehlgeschlagen - ungültige Antwort" #: src/dialog/photo/info.vue:78 msgid "Resolution" @@ -1301,7 +1316,7 @@ msgstr "Wiederherstellen" msgid "Retype Password" msgstr "Passwort wiederholen" -#: src/component/navigation.vue:80 src/routes.js:157 +#: src/component/navigation.vue:88 src/routes.js:164 msgid "Review" msgstr "Bestätigen" @@ -1313,22 +1328,22 @@ msgstr "Hauptverzeichnis" msgid "Russian" msgstr "Russisch" -#: src/dialog/account/edit.vue:98 src/dialog/album/edit.vue:51 -#: src/dialog/share.vue:60 +#: src/dialog/account/edit.vue:98 src/dialog/album/edit.vue:42 +#: src/dialog/share.vue:59 msgid "Save" msgstr "Speichern" #: src/component/album/toolbar.vue:116 src/component/photo/toolbar.vue:196 -#: src/dialog/album/edit.vue:123 src/dialog/photo/details.vue:426 +#: src/dialog/album/edit.vue:114 src/dialog/photo/details.vue:426 #: src/dialog/photo/labels.vue:113 src/pages/albums.vue:239 -#: src/pages/labels.vue:196 src/pages/library/files.vue:178 -#: src/pages/places.vue:174 src/routes.js:228 src/share/albums.vue:161 +#: src/pages/labels.vue:196 src/pages/library/files.vue:176 +#: src/pages/places.vue:174 src/routes.js:235 src/share/albums.vue:161 msgid "Search" msgstr "Suche" #: src/pages/settings/general.vue:672 msgid "Search and display photos on a map." -msgstr "Fotos werden auf einer Weltkarte angezeigt." +msgstr "Fotos und Videos auf verschiedenen Weltkarten anzeigen und filtern." #: src/pages/discover.vue:12 msgid "Season" @@ -1338,11 +1353,11 @@ msgstr "Jahreszeit" msgid "Seaweed" msgstr "Seegras" -#: src/dialog/share.vue:260 +#: src/dialog/share.vue:256 msgid "Secret" msgstr "Code" -#: src/dialog/upload.vue:117 +#: src/dialog/upload.vue:115 msgid "Select albums or create a new one" msgstr "Wähle Alben aus oder erstelle ein neues" @@ -1359,13 +1374,13 @@ msgid "Server" msgstr "Server" #: src/dialog/account/add.vue:78 src/dialog/account/edit.vue:513 -#: src/dialog/share.vue:152 +#: src/dialog/share.vue:153 msgid "Service URL" msgstr "Service URL" -#: src/component/navigation.vue:292 src/component/navigation.vue:301 +#: src/component/navigation.vue:308 src/component/navigation.vue:317 #: src/component/navigation.vue:8 src/component/navigation.vue:17 -#: src/routes.js:262 src/routes.js:269 src/routes.js:276 +#: src/routes.js:269 src/routes.js:276 src/routes.js:283 msgid "Settings" msgstr "Einstellungen" @@ -1373,7 +1388,7 @@ msgstr "Einstellungen" msgid "Settings saved" msgstr "Einstellungen gespeichert" -#: src/dialog/share/upload.vue:95 +#: src/dialog/share/upload.vue:32 msgid "Setup" msgstr "Einrichtung" @@ -1397,11 +1412,11 @@ msgstr "Datei-Verwaltung in der Hauptnavigation anzeigen." #: src/pages/settings/general.vue:640 msgid "Show server logs in Library." -msgstr "Server-Ereignisprotokoll anzeigen." +msgstr "Server-Ereignisprotokoll anzeigen, um Fehler zu finden." #: src/pages/photos.vue:290 msgid "Showing all %{n} results" -msgstr "Alle %{n} Ergebnisse werden angezeigt" +msgstr "Es werden alle %{n} Ergebnisse angezeigt" #: src/model/file.js:198 msgid "Sidecar" @@ -1427,22 +1442,22 @@ msgstr "Langsam" #: src/component/album/toolbar.vue:120 src/component/photo/toolbar.vue:205 #: src/dialog/photo/details.vue:434 msgid "Sort By" -msgstr "Sortiere nach" +msgstr "Sortierung" #: src/component/album/toolbar.vue:103 src/component/photo/toolbar.vue:190 -#: src/dialog/album/edit.vue:114 +#: src/dialog/album/edit.vue:105 msgid "Sort by file name" -msgstr "Nach Dateinamen sortieren" +msgstr "Dateinamen" -#: src/dialog/album/edit.vue:127 +#: src/dialog/album/edit.vue:118 msgid "Sort Order" -msgstr "Reihenfolge" +msgstr "Sortierung" #: src/dialog/photo/labels.vue:107 msgid "Source" msgstr "Quelle" -#: src/component/navigation.vue:216 +#: src/component/navigation.vue:232 msgid "States" msgstr "Länder" @@ -1525,16 +1540,12 @@ msgstr "Titel zu lang" #: src/app.js:135 src/share.js:135 msgid "to" -msgstr "" +msgstr "nach" -#: src/dialog/share.vue:261 +#: src/dialog/share.vue:257 msgid "Token" msgstr "Code" -#: src/pages/library/files.vue:414 -msgid "Too many files in folder, showing first" -msgstr "Es befinden sich zu viele Dateien im Ordner. Zeige die ersten " - #: src/resources/options.js:103 msgid "Topographic" msgstr "Topographisch" @@ -1553,7 +1564,7 @@ msgstr "" #: src/pages/labels.vue:38 msgid "Try again using a related or otherwise similar term." -msgstr "Versuche es nochmal mit einem verwandten oder ähnlichen Suchbegriff" +msgstr "Versuche es mit einem verwandten oder ähnlichen Suchbegriff." #: src/component/photo/cards.vue:9 src/component/photo/list.vue:98 #: src/component/photo/mosaic.vue:9 src/share/photo/cards.vue:9 @@ -1577,29 +1588,33 @@ msgid "Ungroup" msgstr "Gruppierung auflösen" #: src/component/photo/toolbar.vue:235 src/dialog/photo/details.vue:420 -#: src/dialog/photo/info.vue:197 src/model/photo.js:349 src/model/photo.js:361 -#: src/model/photo.js:385 src/model/photo.js:397 src/model/photo.js:474 -#: src/model/photo.js:487 src/resources/options.js:16 +#: src/dialog/photo/info.vue:210 src/model/photo.js:350 src/model/photo.js:362 +#: src/model/photo.js:386 src/model/photo.js:398 src/model/photo.js:475 +#: src/model/photo.js:488 src/resources/options.js:16 msgid "Unknown" msgstr "Unbekannt" -#: src/dialog/photo/info.vue:115 +#: src/component/navigation.vue:175 src/routes.js:143 +msgid "Unsorted" +msgstr "Unsortiert" + +#: src/dialog/photo/info.vue:123 msgid "Updated" msgstr "Geändert" -#: src/dialog/share/upload.vue:94 src/dialog/upload.vue:8 -#: src/dialog/upload.vue:56 src/pages/library/import.vue:39 +#: src/dialog/share/upload.vue:35 src/dialog/upload.vue:8 +#: src/dialog/upload.vue:54 src/pages/library/import.vue:38 #: src/pages/settings/general.vue:319 src/pages/settings/sync.vue:93 msgid "Upload" msgstr "Upload" -#: src/dialog/upload.vue:239 +#: src/dialog/upload.vue:237 msgid "Upload complete" msgstr "Vollständig hochgeladen" #: src/dialog/upload.vue:38 -msgid "Upload complete. Indexing..." -msgstr "Hochladen abgeschlossen. Indexiere…" +msgid "Upload complete. Indexing…" +msgstr "Upload abgeschlossen. Indexiere…" #: src/dialog/upload.vue:34 msgid "Upload failed" @@ -1611,18 +1626,22 @@ msgstr "Dateien hochladen" #: src/pages/settings/general.vue:384 msgid "Upload to WebDAV and share links with friends." -msgstr "Teile Links mit Freunden und lade Inhalte hoch." +msgstr "Teile Fotos, Videos und Alben mit Freunden." #: src/dialog/upload.vue:36 -msgid "Uploading" -msgstr "Lade hoch" +msgid "Uploading %{n} of %{t}…" +msgstr "Datei %{n} von %{t} wird hochgeladen…" -#: src/dialog/upload.vue:143 src/dialog/upload.vue:151 -#: src/dialog/upload.vue:192 -msgid "Uploading photos..." +#: src/dialog/upload.vue:141 src/dialog/upload.vue:149 +#: src/dialog/upload.vue:190 +msgid "Uploading photos…" msgstr "Bilder werden hochgeladen…" -#: src/dialog/share.vue:193 +#: src/dialog/upload.vue:46 +msgid "Uploads that may contain such images will be rejected automatically." +msgstr "Diese werden automatisch erkannt und gelöscht." + +#: src/dialog/share.vue:189 msgid "URL" msgstr "URL" @@ -1635,7 +1654,7 @@ msgid "User Interface" msgstr "Benutzeroberfläche" #: src/dialog/account/add.vue:79 src/dialog/account/edit.vue:537 -#: src/dialog/share.vue:153 +#: src/dialog/share.vue:154 msgid "Username" msgstr "Nutzername" @@ -1647,16 +1666,16 @@ msgstr "UTC Datum" msgid "UTC Time" msgstr "UTC Zeit" -#: src/model/file.js:196 src/model/photo.js:434 src/model/photo.js:448 +#: src/model/file.js:196 src/model/photo.js:435 src/model/photo.js:449 msgid "Video" msgstr "Video" -#: src/component/navigation.vue:128 src/routes.js:150 +#: src/component/navigation.vue:136 src/routes.js:157 msgid "Videos" msgstr "Videos" #: src/component/album/toolbar.vue:117 src/component/photo/toolbar.vue:197 -#: src/dialog/album/edit.vue:124 src/dialog/photo/details.vue:427 +#: src/dialog/album/edit.vue:115 src/dialog/photo/details.vue:427 msgid "View" msgstr "Ansicht" @@ -1717,7 +1736,7 @@ msgstr "Gelb" #: src/dialog/photo/archive.vue:15 src/dialog/photo/files.vue:99 #: src/dialog/photo/files.vue:105 src/dialog/photo/info.vue:264 -#: src/dialog/photo/info.vue:295 +#: src/dialog/photo/info.vue:295 src/dialog/photo/info.vue:326 msgid "Yes" msgstr "Ja" @@ -1729,6 +1748,47 @@ msgstr "Du kannst nur ein Album gleichzeitig downloaden" msgid "You can only download one label" msgstr "Es kann nur eine Kategorie gleichzeitig downgeloadet werden" +#: src/component/album/clipboard.vue:125 src/component/album/clipboard.vue:138 +msgid "You may only select one item" +msgstr "Es darf nur ein Eintrag ausgewählt werden" + +#: src/pages/about/about.vue:75 +msgid "" +"You may use it as required to describe our software, run your own server, " +"for educational purposes, but not for offering commercial goods, products, " +"or services without prior written permission. In other words, please ask." +msgstr "" +"Es darf von jedem verwendet werden, um unsere Software zu beschreiben, einen " +"eigenen Server zu betreiben und über das Projekt zu berichten.\n" +"Das Anbieten oder Bewerben kommerzieller Produkte, Waren oder " +"Dienstleistungen ist nur nach vorheriger, schriftlicher Genehmigung erlaubt." + +#~ msgid "Folder contains %{n} sub-folders" +#~ msgstr "%{n} Ordner gefunden" + +#~ msgid "%{n} photos shared" +#~ msgstr "%{n} Bilder geteilt" + +#~ msgid " entries found" +#~ msgstr " Einträge gefunden" + +#~ msgid "of" +#~ msgstr "von" + +#, fuzzy +#~| msgid "Press button to start copying..." +#~ msgid "Press button to start copying" +#~ msgstr "Klicke “Import” um den Kopiervorgang zu starten" + +#~ msgid "Press enter to create a new category." +#~ msgstr "Enter drücken, um eine neue Kategorie zu erstellen." + +#~ msgid "Too many files in folder, showing first" +#~ msgstr "Es befinden sich zu viele Dateien im Ordner. Zeige die ersten " + +#~ msgid "Uploading" +#~ msgstr "Lade hoch" + #~ msgid "No photos matched your search" #~ msgstr "Keine Fotos oder Videos gefunden" @@ -1783,9 +1843,6 @@ msgstr "Es kann nur eine Kategorie gleichzeitig downgeloadet werden" #~ msgid "Complete rescan" #~ msgstr "Alle Dateien erneut indexieren" -#~ msgid "Create thumbnails" -#~ msgstr "Thumbnails generieren" - #~ msgid "Display indexed files in Originals" #~ msgstr "Originals Verzeichnis anzeigen" @@ -1847,12 +1904,6 @@ msgstr "Es kann nur eine Kategorie gleichzeitig downgeloadet werden" #~ msgid "Maintained" #~ msgstr "Gewartet" -#~ msgid "No files found" -#~ msgstr "Keine Dateien gefunden" - -#~ msgid "People you share a link with will be able to view the" -#~ msgstr "Jeder mit diesem Link sieht dein" - #~ msgid "photos." #~ msgstr "Fotos." diff --git a/frontend/src/resources/translations.json b/frontend/src/resources/translations.json index e5b85f5f7..22cdae697 100644 --- a/frontend/src/resources/translations.json +++ b/frontend/src/resources/translations.json @@ -1 +1 @@ -{"de":{" entries found":" Einträge gefunden","%{n} albums found":"%{n} Alben gefunden","%{n} entries found":"%{n} Einträge gefunden","%{n} labels found":"%{n} Kategorien gefunden","%{n} photos shared":"%{n} Bilder geteilt","1 hour":"1 Stunde","12 hours":"12 Stunden","4 hours":"4 Stunden","Account":"Zugang","Action":"Aktion","Add files to your library via Web Upload.":"Fotos können über den Browser hochgeladen werden.","Add Link":"Link hinzufügen","Add photos from search results by selecting them.":"Füge Bilder oder Videos aus der Suche hinzu, indem du sie selektierst.","Add Server":"Server hinzufügen","Add to album":"Hinzufügen","Added":"Hinzugefügt","After 1 day":"Nach einem Tag","After 3 days":"Nach 3 Tagen","After 7 days":"Nach 7 Tagen","After one month":"Nach einem Monat","After one year":"Nach einem Jahr","After two months":"Nach zwei Monaten","After two weeks":"Nach zwei Wochen","Album":"Album","Album Name":"Album Name","Albums":"Alben","Albums deleted":"Alben gelöscht","All %{n} albums loaded":"Alle %{n} Alben geladen","All %{n} entries loaded":"Alle %{n} Einträge geladen","All %{n} labels loaded":"Alle %{n} Kategorien geladen","All Cameras":"Alle Kameras","All Categories":"Alle Kategorien","All Colors":"Alle Farben","All Countries":"Alle Länder","All files from import folder":"Alle Dateien aus Import","All Lenses":"Alle Linsen","All Months":"Alle Monate","All originals":"Alle Dateien aus Originals","All Years":"Alle Jahre","Altitude (m)":"Höhenmeter","An error occurred - are you offline?":"Der Server konnte nicht erreicht werden - offline?","Animation":"Animation","API Key":"API Key","Apply":"Speichern","Approve":"Übernehmen","Archive":"Archiv","Archived":"Archiviert","Are you sure you want to archive the selection?":"Auswahl wirklich archivieren?","Are you sure you want to delete these albums?":"Diese Alben wirklich löschen?","Are you sure you want to delete these labels?":"Diese Kategorie wirklich löschen?","Are you sure you want to delete this account?":"Diesen Account wirklich löschen?","Artist":"Fotograf","At least 6 characters.":"Mindestens 6 Zeichen.","Backups":"Backups","Black":"Schwarz","Blue":"Blau","Brown":"Braun","Browse and edit image classification labels.":"Kategorien sehen und bearbeiten.","Browse indexed files and folders in Library.":"Durchsuche indexierte Dateien und Verzeichnisse.","Busy, please wait...":"Bitte warten…","Calendar":"Kalender","Camera":"Kamera","Camera Serial":"Kamera-Seriennummer","Can't load more, limit reached":"Limit erreicht, bitte Suche eingrenzen","Cancel":"Abbrechen","Cards":"Karteikarten","Category":"Kategorie","Change":"Ändern","Change photo titles, locations and other metadata.":"Titel, Ort und andere Metadaten können bearbeitet werden.","Change private flag":"Privatstatus ändern","Change Status":"Status ändern","Checked":"Geprüft","Close":"Schließen","Codec":"Codec","Color":"Farbe","Colors":"Farben","Complete Rescan":"Alle Dateien erneut indexieren","Confidence":"Wahrscheinlichkeit","Connect":"Verbinden","Connecting...":"Offline","Contains %{n} photos.":"Enthält %{n} Bilder.","Contains one photo.":"Enthält ein Foto.","Convert to JPEG":"Automatisch konvertieren","Copied to clipboard":"In Zwischenablage gespeichert","Copy":"Kopieren","Copyright":"Copyright","Couldn't find any results":"Leider nichts gefunden","Country":"Land","Create album":"Album erstellen","Created":"Hinzugefügt","Current Password":"Aktuelles Passwort","Cyan":"Cyan","Cyano":"Cyanblau","Daily":"Täglich","Default":"Standard","Default Folder":"Standard Ordner","Delete":"Löschen","Description":"Beschreibung","Details":"Details","Dimensions":"Auflösung","Directory is empty":"Verzeichnis ist leer","Disabled":"Aus","Discover":"Entdecken","Done":"Fertig","Done.":"Fertig.","Download":"Download","Download remote files":"Dateien herunterladen","Download single files and zip archives.":"Einzelne Bilder sowie Zip-Archive können heruntergeladen werden.","Downloading...":"Lade herunter…","Duplicate":"Duplikat","Dutch":"Niederländisch","Edit":"Bearbeiten","Edit %{name}":"%{name} bearbeiten","Edit Account":"Account bearbeiten","Edit Photo":"Foto bearbeiten","Edited":"Bearbeitet","Enabled":"An","English":"Englisch","Error":"Fehler","Errors":"Ereignisse","Event Log":"Ereignisse","Every two days":"Jeden zweiten Tag","Exclude photos marked as private from search results, shared albums, labels and places.":"Als privat markierte Bilder werden nicht in Suchergebnissen angezeigt.","Expires":"Ablaufdatum","Exposure":"Belichtungszeit","F Number":"F Nummer","Failed copying to clipboard":"Speichern in der Zwischenablage fehlgeschlagen","Failed removing link":"Der Link konnte nicht entfernt werden","Failed updating link":"Der Link konnte nicht aktualisiert werden","Failure while importing uploaded files":"Fehler beim Importieren der hochgeladenen Dateien","Fast":"Schnell","Favorite":"Favorit","Favorites":"Favoriten","File":"Datei","File Browser":"Datei Browser","File types like RAW might need to be converted so that they can be displayed in a browser. JPEGs will be stored in the same folder next to the original using the best possible quality.":"RAW-Bilder und Videos müssen zu JPEGs konvertiert werden, damit sie in der Suche angezeigt werden können.","Files":"Dateien","Files with sequential names like 'IMG_1234 (2)' or 'IMG_1234 copy 2' belong to the same photo.":"Dateien mit Namen wie ‘IMG_1234 (2)’ oder ‘IMG_1234 copy 2’ werden zusammengefasst.","Focal Length":"Brennweite","Folder":"Ordner","Folder Name":"Ordnername","Folders":"Ordner","Found %{n} results":"%{n} Ergebnisse gefunden","Found one result":"Ein Ergebnis gefunden","General":"Allgemein","German":"Deutsch","Gold":"Gold","Green":"Grün","Grey":"Grau","Group by similarity":"Ähnlichkeit","Group Sequential":"Sequenzen gruppieren","Help":"Hilfe","Hidden":"Unsichtbar","Hidden Files":"Unsichtbare Dateien","Hide photos that have been moved to archive.":"Archivierte Inhalte werden nicht in den Suchergebnissen angezeigt.","Hide Private":"Privates ausblenden","Hybrid":"Hybrid","image":"Bild","Import":"Import","Import failed":"Import fehlgeschlagen","Imported files will be sorted by date and given a unique name to avoid duplicates.":"Dateien werden beim Import nach Datum sortiert und umbenannt um Duplikate zu vermeiden.","Imported files will be sorted by date and given a unique name.":"Dateien werden beim Import nach Datum sortiert und umbenannt.","Importing":"Importiere","Importing files to originals...":"Importiere Dateien ins Originals Verzeichnis…","Index":"Indexieren","Indexing failed":"Indexierung fehlgeschlagen","Indexing photos and sidecar files...":"Indexiere Bilder und Sidecar Dateien…","Interval":"Intervall","Item":"Eintrag","JPEGs and thumbnails are automatically rendered as needed.":"JPEGs und Thumbnails werden bei Bedarf automatisch erstellt.","Keywords":"Suchbegriffe","Label":"Kategorie","Label Name":"Name","Labels":"Kategorien","Labels deleted":"Kategorien gelöscht","Language":"Sprache","Last Backup":"Letztes Backup","Latitude":"Breitengrad","Lavender":"Lavendel","Lens":"Linse","Let PhotoPrism create albums from past events.":"PhotoPrism erstellt automatisch Alben deiner schönsten Erlebnisse.","Library":"Dateien","License":"Lizenz","Lime":"Hellgrün","Link":"Link","List":"Liste","Local Time":"Ortszeit","location":"Ort","Location":"Ort","Login":"Anmelden","Logout":"Abmelden","Logs":"Logs","Longitude":"Längengrad","Magenta":"Magenta","manual":"Manuell","Manual Upload":"Manueller Upload","Medium":"Mittel","Missing":"Fehlend","Moments":"Erlebnisse","Monochrome":"Monochrom","Month":"Monat","Moonlight":"Mondlicht","More than 20 albums found":"Über 20 Albengefunden","More than 20 labels found":"Über 20 Labels gefunden","More than 50 entries found":"Über 50 Einträge gefunden","More than 50 results":"Über 50 Ergebnisse","Mosaic":"Mosaik","Most relevant":"Relevanz","Move":"Verschieben","Move Files":"Verschiebe Dateien","Name":"Name","Name too long":"Name zu lang","Never":"Nie","New Password":"Neues Passwort","Newest first":"Neueste zuerst","No":"Nein","No albums found":"Keine Alben gefunden","No albums matched your search":"Keine Alben entsprechen deinen Suchkriterien","No entries found":"Keine Einträge gefunden","No files matched your search":"Keine Dateien entsprechen deinen Suchkriterien","No labels found":"Keine Labels gefunden","No labels matched your search":"Keine Labels entsprechen deinen Suchkriterien","No moments matched your search":"Keine passenden Alben gefunden","No photos found":"Keine Bilder gefunden","No photos or videos found":"Keine Fotos oder Videos gefunden","No servers configured.":"Keine Backup-Server eingerichtet.","No warnings or errors":"Keine Warnungen oder Fehler vorhanden","Non-photographic and low-quality images require a review before they appear in search results.":"Nicht-fotografische Inhalte oder Fotos mit geringer Qualität werden erst nach einer Bestätigung in der Suche angezeigt.","None":"Keine","Not Found":"Keine Ergebnisse","Not implemented yet":"Noch nicht implementiert","Note that you can as well manage and re-index your originals manually.":"Beachte: Wenn du deine Ordnerstruktur und Dateinamen beibehalten willst nutze Index statt Import.","Note: Only WebDAV servers like Nextcloud can be configured at the moment. Support for additional\n services like Google Drive will be added over time.":"Hinweis: Momentan können nur WebDAV Server wie Nextcloud konfiguriert werden. Die Unterstützung weiterer Dienste ist geplant.","Note: Updating the password will not revoke access from already authenticated users.":"Note: Bereits angemeldete Benutzer werden nach ändern des Passworts nicht automatisch abgemeldet.","Notes":"Notizen","Nothing to see here yet. Be patient.":"Noch nichts zu sehen. Gedulde dich noch ein bisschen.","of":"von","Offline":"Offline","OK":"OK","Oldest first":"Älteste zuerst","Once a week":"Einmal die Woche","One album found":"Ein Album gefunden","One entry found":"Ein Eintrag gefunden","Onyx":"Onyx","Orange":"Orange","Original":"Original","Original file names will be stored and indexed.":"Die originalen Dateinamen werden gespeichert und indexiert.","Original Name":"Original Name","Originals":"Originale","Password":"Passwort","Password changed":"Passwort geändert","Path":"Pfad","People":"Menschen","Photo":"Foto","Photos":"Fotos","Pink":"Pink","Places":"Karten","Please confirm your new password.":"Bitte bestätige dein neues Passwort.","Please don't upload photos containing offensive content. Uploads\n that may contain such images will be rejected automatically.":"Bitte lade keine anstößigen Bilder hoch, diese werden automatisch erkannt und gelöscht.","Please enter your name and password to proceed:":"Bitte gib dein Passwort ein, um fortzufahren…","Please re-index your originals if a file you expect is\n missing.":"Wenn du eine Datei vermisst, indexiere deine Originals erneut.","Preserve filenames":"Namen beibehalten","Press button to start copying...":"Klicke “Import” um den Kopiervorgang zu starten","Press button to start indexing...":"Klicke “Indexieren” um das Indexieren zu starten","Press button to start moving...":"Klicke “Import” um den Importvorgang zu starten","Press enter to create a new album.":"Enter drücken, um ein neues Album zu erstellen.","Press enter to create a new category.":"Enter drücken, um eine neue Kategorie zu erstellen.","Preview":"Voransicht","Primary":"Hauptdatei","Private":"Privat","Purple":"Purpur","Quality Filter":"Qualitätsfilter","Quality Score":"Qualität","Random":"Zufällig","Raspberry":"Himbeere","Re-index all originals, including already indexed and unchanged files.":"Indexiere alle Dateien, auch bereits indexierte und unveränderte Dateien.","Recently added":"Zuletzt hinzugefügt","Red":"Rot","Reloading...":"Lade…","Remote Sync":"Remote Sync","Remove":"Entfernen","remove failed: unknown album":"Entfernen fehlgeschlagen: Unbekanntes Album","Remove imported files to save storage. Unsupported file types will never be deleted, they remain in their current location.":"Verschiebe Dateien von Import zu Originals, um Speicherplatz zu sparen. Dateitypen, die nicht unterstützt werden, bleiben in Import bestehen. Verschobene Dateien werden neu sortiert und umbenannt.","Request failed - invalid response":"Request fehlgeschlagen - ungültige Antwort","Resolution":"Auflösung","Restore":"Wiederherstellen","Retype Password":"Passwort wiederholen","Review":"Bestätigen","Root":"Hauptverzeichnis","Russian":"Russisch","Save":"Speichern","Search":"Suche","Search and display photos on a map.":"Fotos werden auf einer Weltkarte angezeigt.","Season":"Jahreszeit","Seaweed":"Seegras","Secret":"Code","Select albums or create a new one":"Wähle Alben aus oder erstelle ein neues","Selection archived":"Auswahl archiviert","Selection restored":"Auswahl wiederhergestellt","Server":"Server","Service URL":"Service URL","Settings":"Einstellungen","Settings saved":"Einstellungen gespeichert","Setup":"Einrichtung","Share":"Teilen","Share %{name}":"%{name} teilen","Shared with you.":"Mit dir geteilt.","Show Library in navigation menu.":"Datei-Verwaltung in der Hauptnavigation anzeigen.","Show server logs in Library.":"Server-Ereignisprotokoll anzeigen.","Showing all %{n} results":"Alle %{n} Ergebnisse werden angezeigt","Sidecar":"Sidecar","Sign in":"Anmelden","Similar":"Ähnlich","Size":"Größe","Slow":"Langsam","Sort By":"Sortiere nach","Sort by file name":"Nach Dateinamen sortieren","Sort Order":"Reihenfolge","Source":"Quelle","States":"Länder","Status":"Status","Streets":"Straßen","Style":"Style","Subject":"Bildinhalt","Sync":"Sync","Sync raw images":"RAW-Dateien sichern","Taken":"Aufgenommen","Taken after":"Erstell nach","Taken before":"Erstellt vor","Teal":"Blaugrün","Text too long":"Text ist zu lang","The index currently contains %{n} hidden files.":"Der Index enthält momentan %{n} versteckte Dateien.","Their format may not be supported, they haven't been converted to JPEG yet or there are duplicates.":"Their format may not be supported, they haven’t been converted to JPEG yet or there are duplicates.","Theme":"Theme","Time Zone":"Zeitzone","Title":"Titel","Title Source":"Herkunft des Titels","Title too long":"Titel zu lang","Token":"Code","Too many files in folder, showing first":"Es befinden sich zu viele Dateien im Ordner. Zeige die ersten ","Topographic":"Topographisch","Trademarks":"Markenrechte","Try again using a different term or create a new album from a\n selection in Photos.":"Versuche es nochmal mit einem anderen Suchbegriff oder erstelle ein neues Album.","Try again using a related or otherwise similar term.":"Versuche es nochmal mit einem verwandten oder ähnlichen Suchbegriff","Try using other terms and search options such as category, country and camera.":"Versuche es mit anderen Begriffen oder Suchfiltern.","Type":"Typ","UID":"UID","Ungroup":"Gruppierung auflösen","Unknown":"Unbekannt","Updated":"Geändert","Upload":"Upload","Upload complete":"Vollständig hochgeladen","Upload complete. Indexing...":"Hochladen abgeschlossen. Indexiere…","Upload failed":"Upload fehlgeschlagen","Upload local files":"Dateien hochladen","Upload to WebDAV and share links with friends.":"Teile Links mit Freunden und lade Inhalte hoch.","Uploading":"Lade hoch","Uploading photos...":"Bilder werden hochgeladen…","URL":"URL","User":"Benutzer","User Interface":"Benutzeroberfläche","Username":"Nutzername","UTC Date":"UTC Datum","UTC Time":"UTC Zeit","Video":"Video","Videos":"Videos","View":"Ansicht","Wait until a moment was shared with you or try again using a different term.":"Warte bis jemand ein Album mit dir geteilt hat oder versuche es erneut mit einem anderen Suchbegriff.","Wait until an album was shared with you or try again using a different term.":"Warte bis jemand ein Album mit dir geteilt hat oder versuche es erneut mit einem anderen Suchbegriff.","Wait until PhotoPrism has analyzed your library or try\n again using a different term.":"Warte bis PhotoPrism deine Dateien analysiert hat oder versuche es erneut mit einem anderen Suchbegriff.","WebDAV Upload":"WebDAV Upload","Whatever it is, we'd love to hear from you!":"Wir freuen uns, von dir zu hören!","When PhotoPrism found broken files or there are other potential issues, you'll see a short message on this page.":"Auf dieser Seite erscheint ein Hinweis, falls PhotoPrism beschädigte Dateien findet oder es andere Probleme gibt.","White":"Weiß","Who we are":"Wer wir sind","Year":"Jahr","Yellow":"Gelb","Yes":"Ja","You can only download one album":"Du kannst nur ein Album gleichzeitig downloaden","You can only download one label":"Es kann nur eine Kategorie gleichzeitig downgeloadet werden"},"en":{" albums found":" albums found"," albums loaded":" albums loaded"," labels found":" labels found"," labels loaded":" labels loaded"," photos found":" photos found"," photos loaded":" photos loaded","4 Day":"4 Day","Add to album":"Add to album","Album Name":"Album Name","Albums":"Albums","Albums deleted":"Albums deleted","All ":"All ","All Cameras":"All Cameras","All Countries":"All Countries","Are you sure you want to delete these albums?":"Are you sure you want to delete these albums?","Are you sure you want to delete these photos?":"Are you sure you want to delete these photos?","Camera":"Camera","Cancel":"Cancel","Country":"Country","create a new album":"create a new album","Custom Daily":"Custom Daily","Custom Weekly":"Custom Weekly","Day":"Day","Delete":"Delete","Details":"Details","Done.":"Done.","Download":"Download","Downloading...":"Downloading…","Failure while importing uploaded files":"Failure while importing uploaded files","Favorite":"Favorite","Favorites":"Favorites","Finding your position...":"Finding your position…","General":"General","Geolocation is not available":"Geolocation is not available","Import":"Import","Import failed":"Import failed","Importing":"Importing","Importing files from directory...":"Importing files from directory…","Indexing":"Indexing","Indexing failed":"Indexing failed","Indexing photos and sidecar files...":"Indexing photos and sidecar files…","Labels":"Labels","Language":"Language","Library":"Library","List":"List","Login":"Login","Logout":"Logout","Logs":"Logs","Maintenance":"Maintenance","Monochrome":"Monochrome","Month":"Month","More than 100 photos found":"More than 100 photos found","More than 20 albums found":"More than 20 albums found","More than 20 labels found":"More than 20 labels found","More than 50 photos found":"More than 50 photos found","Mosaic":"Mosaic","New Album":"New Album","Newest first":"Newest first","Next":"Next","No albums found":"No albums found","No albums matched your search":"No albums matched your search","No labels matched your search":"No labels matched your search","No locations found":"No locations found","No photos found":"No photos found","No photos matched your search":"No photos matched your search","Not implemented yet":"Not implemented yet","Nothing to see here yet. Be patient.":"Nothing to see here yet. Be patient.","of":"of","Oldest first":"Oldest first","One album found":"One album found","One photo found":"One photo found","Password":"Password","Photos":"Photos","Photos deleted":"Photos deleted","Places":"Places","Please enter the admin password to proceed...":"Please enter the admin password to proceed…","Press button to import photos from directory...":"Press button to import photos from directory…","Press button to start indexing...":"Press button to start indexing…","Prev":"Prev","Private":"Private","Recently imported":"Recently imported","remove failed: unknown album":"remove failed: unknown album","Remove from album":"Remove from album","Save":"Save","Search":"Search","Select album":"Select album","Select photos to start upload...":"Select photos to start upload…","Settings":"Settings","Settings saved":"Settings saved","Sign in":"Sign in","Skip existing photos and sidecar files":"Skip existing photos and sidecar files","Sort By":"Sort By","Start":"Start","Story":"Story","Taken after":"Taken after","Taken At":"Taken At","Taken before":"Taken before","Theme":"Theme","Tiles":"Tiles","Title":"Title","Title too long":"Title too long","Toggled private flag":"Toggled private flag","Toggled story flag":"Toggled story flag","Try again using a different term or":"Try again using a different term or","Try again using a related or otherwise similar term.":"Try again using a related or otherwise similar term.","Try using other terms and search options such as category, country and camera.":"Try using other terms and search options such as category, country and camera.","Type":"Type","Upload":"Upload","Upload complete":"Upload complete","Upload complete. Indexing...":"Upload complete. Indexing…","Upload failed":"Upload failed","Uploading":"Uploading","Uploading photos...":"Uploading photos…","Vibrant":"Vibrant","View":"View","Week":"Week","You can only download one album":"You can only download one album"},"nl":{" albums found":" gevonden albums"," albums loaded":" albums geladen"," labels found":" labels gevonden"," labels loaded":" labels geladen"," photos found":" foto's gevonden"," photos loaded":" foto's geladen","4 Day":"4-Daags","Add to album":"Toevoegen aan album","Album Name":"Album Naam","Albums":"Albums","Albums deleted":"Albums verwijderd","All ":"Alle ","All Cameras":"Alle camera’s","All Countries":"Alle landen","Are you sure you want to delete these albums?":"Weet je zeker dat je deze albums wil verwijderen?","Are you sure you want to delete these photos?":"Weet je zeker dat je deze foto’s wil verwijderen?","Camera":"Camera","Cancel":"Annuleren","Country":"Land","create a new album":"maak nieuw album","Custom Daily":"Dagelijks aangepast","Custom Weekly":"Wekelijks aangepast","Day":"Dag","Delete":"Verwijder","Details":"Details","Done.":"Klaar.","Download":"Download","Downloading...":"Downloaden…","Failure while importing uploaded files":"Fout tijdens importeren geüploade bestanden","Favorite":"Favoriet","Favorites":"Favorieten","Finding your position...":"Zoeken naar jouw locatie…","General":"Algemeen","Geolocation is not available":"Geolocatie is niet beschikbaar","Import":"Importeren","Import failed":"Importeren mislust","Importing":"Importeren","Importing files from directory...":"Bestanden importeren uit directory…","Indexing":"Indexeren","Indexing failed":"Indexeren mislukt","Indexing photos and sidecar files...":"Foto’s en sidecar-bestanden aan het indexeren…","Labels":"Labels","Language":"Taal","Library":"Bibliotheek","List":"Lijst","Login":"Log in","Logout":"Log uit","Logs":"Logs","Maintenance":"Onderhoud","Monochrome":"Monochroom","Month":"Maand","More than 100 photos found":"Meer dan 100 foto’s gevonden","More than 20 albums found":"Meer dan 20 albums gevonden","More than 20 labels found":"Meer dan 20 labels gevonden","More than 50 photos found":"Meer dan 50 foto’s gevonden","Mosaic":"Mozaiek","New Album":"Nieuw album","Newest first":"Nieuwste eerst","Next":"Volgende","No albums found":"Geen albums gevonden","No albums matched your search":"Geen albums komen overeen met jouw zoekwoorden","No labels matched your search":"Geen labels komen overeen met jouw zoekwoorden","No locations found":"Geen locaties gevonden","No photos found":"Geen foto’s gevonden","No photos matched your search":"Geen foto’s komen overeen met jouw zoekwoorden","Not implemented yet":"Nog niet geïmplementeerd","Nothing to see here yet. Be patient.":"Niets te zien hier. Weer geduldig.","of":"van","Oldest first":"Oudste eerst","One album found":"Een album gevonden","One photo found":"Een foto gevonden","Password":"Wachtwoord","Photos":"Foto’s","Photos deleted":"Foto’s verwijderd","Places":"Locaties","Please enter the admin password to proceed...":"Voer een beheerderswachtwoord in om verder te gaan…","Press button to import photos from directory...":"Klik knop om foto’s te importeren uit directory…","Press button to start indexing...":"Klik knop om indexeren te starten…","Prev":"Vorige","Private":"Privé","Recently imported":"Recent geïmporteerd","remove failed: unknown album":"verwijder mislukte: onbekend album","Remove from album":"Verwijder uit album","Save":"Opslaan","Search":"Zoeken","Select album":"Selecteer album","Select photos to start upload...":"Selecteer foto’s om uploaden te starten…","Settings":"Instellingen","Settings saved":"Instellingen opgeslagen","Sign in":"Inloggen","Skip existing photos and sidecar files":"Sla bestaande foto’s en sidecar-bestanden over","Sort By":"Sorteer op","Start":"Start","Story":"Verhaal","Taken after":"Genomen na","Taken At":"Genomen op","Taken before":"Genomen voor","Theme":"Thema","Tiles":"Tegels","Title":"Titel","Title too long":"Titel is te lang","Toggled private flag":"Privé vlag geschakeld","Toggled story flag":"Verhaal vlag geschakeld","Try again using a different term or":"Probeer opnieuw met een andere trefwoord of","Try again using a related or otherwise similar term.":"Probeer opnieuww met een gerelateerd of anders vergelijkbaar trefwoord.","Try using other terms and search options such as category, country and camera.":"Probeer andere trefwoorden of zoekopties zoals categorie, land en camera.","Type":"Type","Upload":"Uploaden","Upload complete":"Uploaden klaar","Upload complete. Indexing...":"Uploaden klaar. Indexeren…","Upload failed":"Uploaden mislukt","Uploading":"Uploaden","Uploading photos...":"Foto’s uploaden…","Vibrant":"Levendig","View":"Weergave","Week":"Week","You can only download one album":"Je kunt slechts een album downloaden"},"ru":{" albums found":" альбомов найдено"," albums loaded":" альбомов загружено"," labels found":" меток найдено"," labels loaded":" метки загружены"," photos found":" фотографий найдено"," photos loaded":" фотографий загружено","4 Day":"4 Дня","Add to album":"Добавить в альбом","Added":"Добавлено","Album Name":"Названия альбома","Albums":"Альбомы","Albums deleted":"Альбом удален","All ":"Все ","All Cameras":"Все Камеры","All Categories":"Все Категории","All Colors":"Все Цвета","All Countries":"Все Страны","All Lenses":"Все Объективы","All Years":"Все Года","Archive":"Архив","Are you sure you want to archive these photos?":"Вы действительно хотите архивировать эти фотографии?","Are you sure you want to delete these albums?":"Вы действительно хотите удалить эти альбомы?","Authentication required":"Требуется авторизация","Camera":"Камера","Cancel":"Отменить","Category":"Категория","Close":"Закрыть","Color":"Цвет","Colors":"Цвета","Convert RAW to JPEG":"Конвертировать RAW в JPEG","Country":"Страна","Create album":"Создать альбом","Custom Daily":"Произвольное ежедневно","Custom Weekly":"Произвольное еженедельно","Day":"День","Delete":"Удалить","Details":"Подробно","Discover":"Исследование","Download":"Скачать","Downloading...":"Скачивание…","Duplicate":"Дубликат","Edit":"Редактировать","Failure while importing uploaded files":"Импортирование загруженных файлов не удалось","Favorite":"В избранном","Favorites":"Избранное","Files":"Файлы","General":"Основные","Groom metadata and estimate locations":"Извлечь метаданные и определить местоположение","Height":"Высота","Import":"Импортировать","Import failed":"Импортирование не удалось","Index":"Индексировать","Indexing failed":"Индексирование не удалось","Label":"Метка","Labels":"Метки","Language":"Язык","Lens":"Объектив","Library":"Библиотека","List":"Список","Location":"Местоположение","Login":"Login","Logout":"Выйти","Logs":"Журнал","Missing":"Пропущенно","Monochrome":"Монохром","Month":"Месяц","More than 20 albums found":"Более 20 альбомов найдено","More than 20 labels found":"Более 20 меток найдено","More than 50 photos found":"Более 50 фотографий найдено","Mosaic":"Мозайка","Name":"Название","Newest first":"Сначала новые","Next":"Следующее","No albums found":"Альбомов не найдено","No albums matched your search":"Нет совпадений среди альбовом по Вашему запросу","No labels matched your search":"Нет совпадений меток по Вашему запросу","No photos found":"Фотографии не найдены","No photos matched your search":"Нет совпадений среди фотографий по Вашему запросу","Not implemented yet":"Еще не реализованно","Nothing to see here yet. Be patient.":"Пока что тут нечего смотреть. Будьте терпеливы.","Oldest first":"Сначала старые","One album found":"Один альбом найден","One photo found":"Одна фотография найдена","Originals":"Оригиналы","Password":"Пароль","Photos":"Фотографии","Photos archived":"Фотографии архивированы","Photos restored":"Фотографии востановлены","Places":"Места","Please enter your password to proceed:":"Пожалуйста, введите пароль что бы продолжить:","Pre-render thumbnails":"Сформировать предпросмотр","Prev":"Предыдущая","Primary":"Главная","Priority":"Приоритет","Random":"Случайно","Recently imported":"Недавно добавленные","Reloading...":"Перезагрузка…","Remove":"Удалить","remove failed: unknown album":"не могу удалить: неизвестный альбом","Restore":"Восстановить","Save":"Сохранить","Search":"Поиск","Season":"Сезон","Settings":"Настройки","Settings saved":"Настрокйки сохранены","Share":"Поделиться","Sharing":"Поделиться","Sign in":"Войти","Similar":"Похожие","Skip unchanged files":"Пропустить не измененные файлы","Sort By":"Сортировать по","Story":"История","Taken after":"Снято после","Taken At":"Дата съемки","Taken before":"Снято до","Theme":"Тема","Time Zone":"Часовой пояс","Title":"Название","Title too long":"Название слишком длинное","Toggled private flag":"Включен флаг приватности","Toggled story flag":"Фключен флаг История","Try again using a different term or create a new album":"Попробуйте еще раз, используя другой запрос или создайте новый альбом","Try again using a related or otherwise similar term.":"Попробуйте еще раз использовать смежный или похожий запрос.","Try using other terms and search options such as category, country and camera.":"Попробуйте другой запрос или опции поиска, такие как категория, страна и камера.","Type":"Тип","Unknown":"Неизвестно","Upload":"Загрузка","Upload complete":"Загрузка завершена","Uploading photos...":"Загрузка фотографий...","Vibrant":"Вибрант","View":"Обзор","Week":"Неделя","Width":"Ширина","Year":"Год","You can only download one album":"Вы можете загрузить только один альбом"}} \ No newline at end of file +{"de":{"%{n} albums found":"%{n} Alben gefunden","%{n} entries found":"%{n} Einträge gefunden","%{n} files uploaded":"%{n} Dateien hochgeladen","%{n} folders found":"%{n} Ordner gefunden","%{n} labels found":"%{n} Kategorien gefunden","1 hour":"1 Stunde","12 hours":"12 Stunden","4 hours":"4 Stunden","A click will copy it to your clipboard.":"Auf den Link klicken, um ihn zu kopieren.","Account":"Zugang","Action":"Aktion","Add files to your library via Web Upload.":"Dateien über den Browser hochladen und indexieren.","Add Link":"Link hinzufügen","Add photos or videos from search results by selecting them.":"Selektierte Suchergebnisse können über das Kontextmenü hinzugefügt werden.","Add Server":"Server hinzufügen","Add to album":"Hinzufügen","Added":"Hinzugefügt","After 1 day":"Nach einem Tag","After 3 days":"Nach 3 Tagen","After 7 days":"Nach 7 Tagen","After one month":"Nach einem Monat","After one year":"Nach einem Jahr","After two months":"Nach zwei Monaten","After two weeks":"Nach zwei Wochen","Album":"Album","Album Name":"Album Name","Albums":"Alben","Albums deleted":"Alben gelöscht","All %{n} albums loaded":"Alle %{n} Alben werden angezeigt","All %{n} entries loaded":"Alle %{n} Einträge werden angezeigt","All %{n} labels loaded":"Alle %{n} Kategorien werden angezeigt","All Cameras":"Alle Kameras","All Categories":"Alle Kategorien","All Colors":"Alle Farben","All Countries":"Alle Länder","All files from import folder":"Alle Dateien aus Import","All Lenses":"Alle Objektive","All Months":"Alle Monate","All originals":"Alle Dateien aus Originals","All Years":"Alle Jahre","Alternatively, you can upload files directly to WebDAV servers like Nextcloud.":"Alternativ können Dateien auch direkt auf kompatible WebDAV-Server hochgeladen z.B. Nextcloud.","Altitude (m)":"Höhe (m)","An error occurred - are you offline?":"Server konnte nicht erreicht werden - keine Verbindung?","Analog":"Analog","Animation":"Animation","Any private photos and videos remain private and won't be shared.":"Als privat markierte Fotos und Videos bleiben privat und werden nicht geteilt.","API Key":"API Key","Apply":"Speichern","Approve":"Übernehmen","Archive":"Archiv","Archived":"Archiviert","Are you sure you want to archive the selection?":"Auswahl wirklich archivieren?","Are you sure you want to delete these albums?":"Diese Alben wirklich löschen?","Are you sure you want to delete these labels?":"Diese Kategorie wirklich löschen?","Are you sure you want to delete this account?":"Diesen Account wirklich löschen?","Artist":"Erstellt von","At least 6 characters.":"Mindestens 6 Zeichen.","Backups":"Backups","Black":"Schwarz","Blue":"Blau","Brown":"Braun","Browse and edit image classification labels.":"Automatische Bild-Kategorisierung sehen und bearbeiten.","Browse indexed files and folders in Library.":"Durchsuche indexierte Dateien und Verzeichnisse.","Busy, please wait…":"Bitte warten…","Calendar":"Kalender","Camera":"Kamera","Camera Serial":"Kamera-Seriennummer","Can't load more, limit reached":"Limit erreicht, bitte Suche eingrenzen","Cancel":"Abbrechen","Cards":"Karteikarten","Category":"Kategorie","Change":"Ändern","Change photo titles, locations and other metadata.":"Titel, Datum, Ort und andere Metadaten können geändert werden.","Change private flag":"Als privat markieren","Change Status":"Status ändern","Checked":"Geprüft","Close":"Schließen","Codec":"Codec","Color":"Farbe","Colors":"Farben","Complete Rescan":"Alle Dateien erneut indexieren","Confidence":"Wahrscheinlichkeit","Connect":"Verbinden","Contains %{n} entries.":"Enthält %{n} Einträge.","Contains one entry.":"Enthält einen Eintrag.","Convert to JPEG":"Automatisch konvertieren","Converting":"Konvertiere","Copied to clipboard":"In Zwischenablage kopiert","Copy":"Kopieren","Copyright":"Copyright","Couldn't find any results":"Leider nichts gefunden","Country":"Land","Create album":"Album erstellen","Created":"Hinzugefügt","Creating thumbnails for":"Erstelle Thumbnails für","Current Password":"Aktuelles Passwort","Cyan":"Cyan","Cyano":"Cyano","Daily":"Täglich","Default":"Standard","Default Folder":"Standard Ordner","Delete":"Löschen","Description":"Beschreibung","Details":"Details","Dimensions":"Auflösung","Disabled":"Aus","Discover":"Entdecken","Done":"Fertig","Done.":"Fertig.","Download":"Download","Download remote files":"Dateien herunterladen","Download single files and zip archives.":"Einzelne Fotos, Videos sowie Zip-Archive können heruntergeladen werden.","Downloading…":"Wird heruntergeladen…","Duplicate":"Duplikat","Dutch":"Niederländisch","Edit":"Bearbeiten","Edit %{name}":"%{name} bearbeiten","Edit Account":"Account bearbeiten","Edit Photo":"Foto bearbeiten","Edited":"Bearbeitet","Enabled":"An","English":"Englisch","Error":"Fehler","Errors":"Ereignisse","Event Log":"Ereignisse","Every two days":"Jeden zweiten Tag","Exclude content marked as private from search results, shared albums, labels and places.":"Als privat markierte Inhalte werden nicht in Suchergebnissen und geteilten Alben angezeigt.","Expires":"Ablaufdatum","Exposure":"Belichtungszeit","F Number":"F Nummer","Failed copying to clipboard":"Konnte nicht in die Zwischenablage kopiert werden","Failed removing link":"Der Link konnte nicht gelöscht werden","Failed updating link":"Der Link konnte nicht gespeichert werden","Failure while importing uploaded files":"Fehler beim Importieren der hochgeladenen Dateien","Fast":"Schnell","Favorite":"Favorit","Favorites":"Favoriten","File":"Datei","File Browser":"Datei Browser","File types like RAW might need to be converted so that they can be displayed in a browser. JPEGs will be stored in the same folder next to the original using the best possible quality.":"RAW-Bilder und Videos müssen zu JPEGs konvertiert werden, damit sie in der Suche angezeigt werden können.","Files":"Dateien","Files with sequential names like 'IMG_1234 (2)' or 'IMG_1234 copy 2' belong to the same photo.":"Dateien mit Namen wie ‘IMG_1234 (2)’ oder ‘IMG_1234 copy 2’ werden zusammengefasst.","Film Scans":"Film-Scans","Focal Length":"Brennweite","Folder":"Ordner","Folder contains %{n} files":"Ordner enthält %{n} Dateien","Folder is empty":"Ordner ist leer","Folder Name":"Ordnername","Folders":"Ordner","Found %{n} results":"Es gibt %{n} Ergebnisse","Found one result":"Ein Ergebnis gefunden","General":"Allgemein","German":"Deutsch","Gold":"Gold","Green":"Grün","Grey":"Grau","Group by similarity":"Ähnlichkeit","Group Sequential":"Sequenzen gruppieren","Help":"Hilfe","Hidden":"Unsichtbar","Hidden Files":"Unsichtbare Dateien","Hide photos that have been moved to archive.":"Archivierte Inhalte werden nicht in den Suchergebnissen angezeigt.","Hide Private":"Privates ausblenden","Hybrid":"Hybrid","image":"Bild","Import":"Import","Import failed":"Import fehlgeschlagen","Imported files will be sorted by date and given a unique name to avoid duplicates.":"Dateien werden beim Import verschoben und nach Datum sortiert, um Duplikate zu vermeiden.","Imported files will be sorted by date and given a unique name.":"Dateien werden beim Import verschoben und nach Datum sortiert, um Duplikate zu vermeiden.","Importing %{name}…":"Importiere %{name}…","Importing files to originals…":"Importiere Dateien nach Originals…","Index":"Index","Indexing":"Indexieren","Indexing failed":"Indexierung fehlgeschlagen","Indexing media and sidecar files…":"Indexiere Fotos, Videos und Sidecar-Dateien…","Interval":"Intervall","Item":"Eintrag","JPEGs and thumbnails are automatically rendered as needed.":"JPEGs und Thumbnails werden bei Bedarf automatisch erstellt.","Keywords":"Suchbegriffe","Label":"Kategorie","Label Name":"Name","Labels":"Kategorien","Labels deleted":"Kategorien gelöscht","Language":"Sprache","Last Backup":"Letztes Backup","Latitude":"Breitengrad","Lavender":"Lavendel","Lens":"Linse","Let PhotoPrism create albums from past events.":"PhotoPrism erstellt automatisch Alben deiner schönsten Erlebnisse.","Library":"Dateien","License":"Lizenz","Lime":"Hellgrün","Limit reached, showing first %{n} files":"Limit erreicht, zeige erste %{n} Dateien","Link":"Link","List":"Liste","Local Time":"Ortszeit","location":"Ort","Location":"Ort","Login":"Anmelden","Logout":"Abmelden","Logs":"Logs","Longitude":"Längengrad","Magenta":"Magenta","manual":"Manuell","Manual Upload":"Manueller Upload","Medium":"Mittel","Missing":"Fehlend","Moments":"Erlebnisse","Monochrome":"Monochrom","Month":"Monat","Moonlight":"Moonlight","More than 20 albums found":"Mehr als 20 Alben gefunden","More than 20 labels found":"Mehr als 20 Labels gefunden","More than 50 entries found":"Mehr als 50 Einträge gefunden","More than 50 results":"Mehr als 50 Ergebnisse","Mosaic":"Mosaik","Most relevant":"Relevanz","Move":"Verschieben","Move Files":"Verschiebe Dateien","Name":"Name","Name too long":"Name zu lang","Never":"Nie","New Password":"Neues Passwort","Newest first":"Neueste zuerst","No":"Nein","No albums found":"Keine Alben gefunden","No albums matched your search":"Keine Alben entsprechen deinen Suchkriterien","No entries found":"Keine Einträge gefunden","No files matched your search":"Keine Dateien entsprechen deinen Suchkriterien","No labels found":"Keine Labels gefunden","No labels matched your search":"Keine Labels entsprechen deinen Suchkriterien","No moments matched your search":"Keine passenden Alben gefunden","No photos found":"Keine Bilder gefunden","No photos or videos found":"Keine Fotos oder Videos gefunden","No servers configured.":"Keine Backup-Server eingerichtet.","No warnings or errors":"Keine Warnungen oder Fehler vorhanden","Non-photographic and low-quality images require a review before they appear in search results.":"Nicht-fotografische Inhalte oder Fotos mit geringer Qualität werden erst nach einer Bestätigung in der Suche angezeigt.","None":"Keine","Not Found":"Keine Ergebnisse","Not implemented yet":"Noch nicht implementiert","Note that you can as well manage and re-index your originals manually.":"Beachte: Wenn du deine Ordnerstruktur und Dateinamen beibehalten willst nutze Index statt Import.","Note: Only WebDAV servers like Nextcloud can be configured at the moment. Support for additional\n services like Google Drive will be added over time.":"Hinweis: Momentan können nur WebDAV-Server wie Nextcloud konfiguriert werden. Die Unterstützung weiterer Dienste ist geplant.","Note: Updating the password will not revoke access from already authenticated users.":"Note: Bereits angemeldete Benutzer werden nach ändern des Passworts nicht automatisch abgemeldet.","Notes":"Notizen","Nothing to see here yet. Be patient.":"Noch nichts zu sehen. Gedulde dich noch ein bisschen.","Offline":"Offline","OK":"OK","Oldest first":"Älteste zuerst","Once a week":"Einmal die Woche","One album found":"Ein Album gefunden","One entry found":"Ein Eintrag gefunden","One file found":"Eine Datei gefunden","One folder found":"Ein Ordner gefunden","Onyx":"Onyx","Orange":"Orange","Original":"Original","Original file names will be stored and indexed.":"Die originalen Dateinamen werden gespeichert und indexiert.","Original Name":"Original Name","Originals":"Originale","Password":"Passwort","Password changed":"Passwort geändert","Path":"Pfad","People":"Personen","People you share a link with will be able to view public contents.":"Jeder mit diesem Link wird öffentliche Fotos und Videos sehen können.","Photo":"Foto","PhotoPrism™ is a registered trademark of Michael Mayer.":"PhotoPrism™ ist ein registriertes Markenzeichen von Michael Mayer.","Photos":"Fotos","Pink":"Pink","Places":"Karten","Please confirm your new password.":"Neues Passwort bitte bestätigen.","Please don't upload photos containing offensive content.":"Bitte lade keine anstößigen Bilder hoch.","Please enter your name and password to proceed:":"Bitte Name und Passwort eingeben, um fortzufahren:","Please re-index your originals if a file you expect is missing.":"Bitte erneut indexieren, falls eine Datei fehlt.","Preserve filenames":"Namen beibehalten","Press button to start importing…":"Auf die Schaltfläche klicken, um Dateien zu importieren…","Press button to start indexing…":"Auf die Schaltfläche klicken, um Dateien zu indexieren…","Press enter to create a new album.":"Enter drücken, um ein neues Album zu erstellen.","Preview":"Voransicht","Primary":"Hauptdatei","Private":"Privat","Purple":"Purpur","Quality Filter":"Qualitätsfilter","Quality Score":"Qualität","Random":"Zufällig","Raspberry":"Raspberry","Re-index all originals, including already indexed and unchanged files.":"Auch bereits bekannte und unveränderte Dateien indexieren.","Recently added":"Zuletzt hinzugefügt","Red":"Rot","Reloading…":"Wird neu geladen…","Remote Sync":"Remote Sync","Remove":"Entfernen","remove failed: unknown album":"Löschen nicht möglich: Unbekanntes Album","Remove imported files to save storage. Unsupported file types will never be deleted, they remain in their current location.":"Dateien von Import nach Originals verschieben, um Speicherplatz zu sparen. Dateitypen, die nicht unterstützt werden, verbleiben in ihrem Ordner.","Request failed - invalid response":"Anfrage fehlgeschlagen - ungültige Antwort","Resolution":"Auflösung","Restore":"Wiederherstellen","Retype Password":"Passwort wiederholen","Review":"Bestätigen","Root":"Hauptverzeichnis","Russian":"Russisch","Save":"Speichern","Search":"Suche","Search and display photos on a map.":"Fotos und Videos auf verschiedenen Weltkarten anzeigen und filtern.","Season":"Jahreszeit","Seaweed":"Seegras","Secret":"Code","Select albums or create a new one":"Wähle Alben aus oder erstelle ein neues","Selection archived":"Auswahl archiviert","Selection restored":"Auswahl wiederhergestellt","Server":"Server","Service URL":"Service URL","Settings":"Einstellungen","Settings saved":"Einstellungen gespeichert","Setup":"Einrichtung","Share":"Teilen","Share %{name}":"%{name} teilen","Shared with you.":"Mit dir geteilt.","Show Library in navigation menu.":"Datei-Verwaltung in der Hauptnavigation anzeigen.","Show server logs in Library.":"Server-Ereignisprotokoll anzeigen, um Fehler zu finden.","Showing all %{n} results":"Es werden alle %{n} Ergebnisse angezeigt","Sidecar":"Sidecar","Sign in":"Anmelden","Similar":"Ähnlich","Size":"Größe","Slow":"Langsam","Sort By":"Sortierung","Sort by file name":"Dateinamen","Sort Order":"Sortierung","Source":"Quelle","States":"Länder","Status":"Status","Streets":"Straßen","Style":"Style","Subject":"Bildinhalt","Sync":"Sync","Sync raw images":"RAW-Dateien sichern","Taken":"Aufgenommen","Taken after":"Erstell nach","Taken before":"Erstellt vor","Teal":"Blaugrün","Text too long":"Text ist zu lang","The index currently contains %{n} hidden files.":"Der Index enthält momentan %{n} versteckte Dateien.","Their format may not be supported, they haven't been converted to JPEG yet or there are duplicates.":"Their format may not be supported, they haven’t been converted to JPEG yet or there are duplicates.","Theme":"Theme","Time Zone":"Zeitzone","Title":"Titel","Title Source":"Herkunft des Titels","Title too long":"Titel zu lang","to":"nach","Token":"Code","Topographic":"Topographisch","Trademarks":"Markenrechte","Try again using a different term or create a new album from a\n selection in Photos.":"Versuche es nochmal mit einem anderen Suchbegriff oder erstelle ein neues Album.","Try again using a related or otherwise similar term.":"Versuche es mit einem verwandten oder ähnlichen Suchbegriff.","Try using other terms and search options such as category, country and camera.":"Versuche es mit anderen Begriffen oder Suchfiltern.","Type":"Typ","UID":"UID","Ungroup":"Gruppierung auflösen","Unknown":"Unbekannt","Unsorted":"Unsortiert","Updated":"Geändert","Upload":"Upload","Upload complete":"Vollständig hochgeladen","Upload complete. Indexing…":"Upload abgeschlossen. Indexiere…","Upload failed":"Upload fehlgeschlagen","Upload local files":"Dateien hochladen","Upload to WebDAV and share links with friends.":"Teile Fotos, Videos und Alben mit Freunden.","Uploading %{n} of %{t}…":"Datei %{n} von %{t} wird hochgeladen…","Uploading photos…":"Bilder werden hochgeladen…","Uploads that may contain such images will be rejected automatically.":"Diese werden automatisch erkannt und gelöscht.","URL":"URL","User":"Benutzer","User Interface":"Benutzeroberfläche","Username":"Nutzername","UTC Date":"UTC Datum","UTC Time":"UTC Zeit","Video":"Video","Videos":"Videos","View":"Ansicht","Wait until a moment was shared with you or try again using a different term.":"Warte bis jemand ein Album mit dir geteilt hat oder versuche es erneut mit einem anderen Suchbegriff.","Wait until an album was shared with you or try again using a different term.":"Warte bis jemand ein Album mit dir geteilt hat oder versuche es erneut mit einem anderen Suchbegriff.","Wait until PhotoPrism has analyzed your library or try\n again using a different term.":"Warte bis PhotoPrism deine Dateien analysiert hat oder versuche es erneut mit einem anderen Suchbegriff.","WebDAV Upload":"WebDAV Upload","Whatever it is, we'd love to hear from you!":"Wir freuen uns, von dir zu hören!","When PhotoPrism found broken files or there are other potential issues, you'll see a short message on this page.":"Auf dieser Seite erscheint ein Hinweis, falls PhotoPrism beschädigte Dateien findet oder es andere Probleme gibt.","White":"Weiß","Who we are":"Wer wir sind","Year":"Jahr","Yellow":"Gelb","Yes":"Ja","You can only download one album":"Du kannst nur ein Album gleichzeitig downloaden","You can only download one label":"Es kann nur eine Kategorie gleichzeitig downgeloadet werden","You may only select one item":"Es darf nur ein Eintrag ausgewählt werden","You may use it as required to describe our software, run your own server, for educational purposes, but not for offering commercial goods, products, or services without prior written permission. In other words, please ask.":"Es darf von jedem verwendet werden, um unsere Software zu beschreiben, einen eigenen Server zu betreiben und über das Projekt zu berichten.\nDas Anbieten oder Bewerben kommerzieller Produkte, Waren oder Dienstleistungen ist nur nach vorheriger, schriftlicher Genehmigung erlaubt."},"en":{" albums found":" albums found"," albums loaded":" albums loaded"," labels found":" labels found"," labels loaded":" labels loaded"," photos found":" photos found"," photos loaded":" photos loaded","4 Day":"4 Day","Add to album":"Add to album","Album Name":"Album Name","Albums":"Albums","Albums deleted":"Albums deleted","All ":"All ","All Cameras":"All Cameras","All Countries":"All Countries","Are you sure you want to delete these albums?":"Are you sure you want to delete these albums?","Are you sure you want to delete these photos?":"Are you sure you want to delete these photos?","Camera":"Camera","Cancel":"Cancel","Country":"Country","create a new album":"create a new album","Custom Daily":"Custom Daily","Custom Weekly":"Custom Weekly","Day":"Day","Delete":"Delete","Details":"Details","Done.":"Done.","Download":"Download","Downloading...":"Downloading…","Failure while importing uploaded files":"Failure while importing uploaded files","Favorite":"Favorite","Favorites":"Favorites","Finding your position...":"Finding your position…","General":"General","Geolocation is not available":"Geolocation is not available","Import":"Import","Import failed":"Import failed","Importing":"Importing","Importing files from directory...":"Importing files from directory…","Indexing":"Indexing","Indexing failed":"Indexing failed","Indexing photos and sidecar files...":"Indexing photos and sidecar files…","Labels":"Labels","Language":"Language","Library":"Library","List":"List","Login":"Login","Logout":"Logout","Logs":"Logs","Maintenance":"Maintenance","Monochrome":"Monochrome","Month":"Month","More than 100 photos found":"More than 100 photos found","More than 20 albums found":"More than 20 albums found","More than 20 labels found":"More than 20 labels found","More than 50 photos found":"More than 50 photos found","Mosaic":"Mosaic","New Album":"New Album","Newest first":"Newest first","Next":"Next","No albums found":"No albums found","No albums matched your search":"No albums matched your search","No labels matched your search":"No labels matched your search","No locations found":"No locations found","No photos found":"No photos found","No photos matched your search":"No photos matched your search","Not implemented yet":"Not implemented yet","Nothing to see here yet. Be patient.":"Nothing to see here yet. Be patient.","of":"of","Oldest first":"Oldest first","One album found":"One album found","One photo found":"One photo found","Password":"Password","Photos":"Photos","Photos deleted":"Photos deleted","Places":"Places","Please enter the admin password to proceed...":"Please enter the admin password to proceed…","Press button to import photos from directory...":"Press button to import photos from directory…","Press button to start indexing...":"Press button to start indexing…","Prev":"Prev","Private":"Private","Recently imported":"Recently imported","remove failed: unknown album":"remove failed: unknown album","Remove from album":"Remove from album","Save":"Save","Search":"Search","Select album":"Select album","Select photos to start upload...":"Select photos to start upload…","Settings":"Settings","Settings saved":"Settings saved","Sign in":"Sign in","Skip existing photos and sidecar files":"Skip existing photos and sidecar files","Sort By":"Sort By","Start":"Start","Story":"Story","Taken after":"Taken after","Taken At":"Taken At","Taken before":"Taken before","Theme":"Theme","Tiles":"Tiles","Title":"Title","Title too long":"Title too long","Toggled private flag":"Toggled private flag","Toggled story flag":"Toggled story flag","Try again using a different term or":"Try again using a different term or","Try again using a related or otherwise similar term.":"Try again using a related or otherwise similar term.","Try using other terms and search options such as category, country and camera.":"Try using other terms and search options such as category, country and camera.","Type":"Type","Upload":"Upload","Upload complete":"Upload complete","Upload complete. Indexing...":"Upload complete. Indexing…","Upload failed":"Upload failed","Uploading":"Uploading","Uploading photos...":"Uploading photos…","Vibrant":"Vibrant","View":"View","Week":"Week","You can only download one album":"You can only download one album"},"nl":{" albums found":" gevonden albums"," albums loaded":" albums geladen"," labels found":" labels gevonden"," labels loaded":" labels geladen"," photos found":" foto's gevonden"," photos loaded":" foto's geladen","4 Day":"4-Daags","Add to album":"Toevoegen aan album","Album Name":"Album Naam","Albums":"Albums","Albums deleted":"Albums verwijderd","All ":"Alle ","All Cameras":"Alle camera’s","All Countries":"Alle landen","Are you sure you want to delete these albums?":"Weet je zeker dat je deze albums wil verwijderen?","Are you sure you want to delete these photos?":"Weet je zeker dat je deze foto’s wil verwijderen?","Camera":"Camera","Cancel":"Annuleren","Country":"Land","create a new album":"maak nieuw album","Custom Daily":"Dagelijks aangepast","Custom Weekly":"Wekelijks aangepast","Day":"Dag","Delete":"Verwijder","Details":"Details","Done.":"Klaar.","Download":"Download","Downloading...":"Downloaden…","Failure while importing uploaded files":"Fout tijdens importeren geüploade bestanden","Favorite":"Favoriet","Favorites":"Favorieten","Finding your position...":"Zoeken naar jouw locatie…","General":"Algemeen","Geolocation is not available":"Geolocatie is niet beschikbaar","Import":"Importeren","Import failed":"Importeren mislust","Importing":"Importeren","Importing files from directory...":"Bestanden importeren uit directory…","Indexing":"Indexeren","Indexing failed":"Indexeren mislukt","Indexing photos and sidecar files...":"Foto’s en sidecar-bestanden aan het indexeren…","Labels":"Labels","Language":"Taal","Library":"Bibliotheek","List":"Lijst","Login":"Log in","Logout":"Log uit","Logs":"Logs","Maintenance":"Onderhoud","Monochrome":"Monochroom","Month":"Maand","More than 100 photos found":"Meer dan 100 foto’s gevonden","More than 20 albums found":"Meer dan 20 albums gevonden","More than 20 labels found":"Meer dan 20 labels gevonden","More than 50 photos found":"Meer dan 50 foto’s gevonden","Mosaic":"Mozaiek","New Album":"Nieuw album","Newest first":"Nieuwste eerst","Next":"Volgende","No albums found":"Geen albums gevonden","No albums matched your search":"Geen albums komen overeen met jouw zoekwoorden","No labels matched your search":"Geen labels komen overeen met jouw zoekwoorden","No locations found":"Geen locaties gevonden","No photos found":"Geen foto’s gevonden","No photos matched your search":"Geen foto’s komen overeen met jouw zoekwoorden","Not implemented yet":"Nog niet geïmplementeerd","Nothing to see here yet. Be patient.":"Niets te zien hier. Weer geduldig.","of":"van","Oldest first":"Oudste eerst","One album found":"Een album gevonden","One photo found":"Een foto gevonden","Password":"Wachtwoord","Photos":"Foto’s","Photos deleted":"Foto’s verwijderd","Places":"Locaties","Please enter the admin password to proceed...":"Voer een beheerderswachtwoord in om verder te gaan…","Press button to import photos from directory...":"Klik knop om foto’s te importeren uit directory…","Press button to start indexing...":"Klik knop om indexeren te starten…","Prev":"Vorige","Private":"Privé","Recently imported":"Recent geïmporteerd","remove failed: unknown album":"verwijder mislukte: onbekend album","Remove from album":"Verwijder uit album","Save":"Opslaan","Search":"Zoeken","Select album":"Selecteer album","Select photos to start upload...":"Selecteer foto’s om uploaden te starten…","Settings":"Instellingen","Settings saved":"Instellingen opgeslagen","Sign in":"Inloggen","Skip existing photos and sidecar files":"Sla bestaande foto’s en sidecar-bestanden over","Sort By":"Sorteer op","Start":"Start","Story":"Verhaal","Taken after":"Genomen na","Taken At":"Genomen op","Taken before":"Genomen voor","Theme":"Thema","Tiles":"Tegels","Title":"Titel","Title too long":"Titel is te lang","Toggled private flag":"Privé vlag geschakeld","Toggled story flag":"Verhaal vlag geschakeld","Try again using a different term or":"Probeer opnieuw met een andere trefwoord of","Try again using a related or otherwise similar term.":"Probeer opnieuww met een gerelateerd of anders vergelijkbaar trefwoord.","Try using other terms and search options such as category, country and camera.":"Probeer andere trefwoorden of zoekopties zoals categorie, land en camera.","Type":"Type","Upload":"Uploaden","Upload complete":"Uploaden klaar","Upload complete. Indexing...":"Uploaden klaar. Indexeren…","Upload failed":"Uploaden mislukt","Uploading":"Uploaden","Uploading photos...":"Foto’s uploaden…","Vibrant":"Levendig","View":"Weergave","Week":"Week","You can only download one album":"Je kunt slechts een album downloaden"},"ru":{" albums found":" альбомов найдено"," albums loaded":" альбомов загружено"," labels found":" меток найдено"," labels loaded":" метки загружены"," photos found":" фотографий найдено"," photos loaded":" фотографий загружено","4 Day":"4 Дня","Add to album":"Добавить в альбом","Added":"Добавлено","Album Name":"Названия альбома","Albums":"Альбомы","Albums deleted":"Альбом удален","All ":"Все ","All Cameras":"Все Камеры","All Categories":"Все Категории","All Colors":"Все Цвета","All Countries":"Все Страны","All Lenses":"Все Объективы","All Years":"Все Года","Archive":"Архив","Are you sure you want to archive these photos?":"Вы действительно хотите архивировать эти фотографии?","Are you sure you want to delete these albums?":"Вы действительно хотите удалить эти альбомы?","Authentication required":"Требуется авторизация","Camera":"Камера","Cancel":"Отменить","Category":"Категория","Close":"Закрыть","Color":"Цвет","Colors":"Цвета","Convert RAW to JPEG":"Конвертировать RAW в JPEG","Country":"Страна","Create album":"Создать альбом","Custom Daily":"Произвольное ежедневно","Custom Weekly":"Произвольное еженедельно","Day":"День","Delete":"Удалить","Details":"Подробно","Discover":"Исследование","Download":"Скачать","Downloading...":"Скачивание…","Duplicate":"Дубликат","Edit":"Редактировать","Failure while importing uploaded files":"Импортирование загруженных файлов не удалось","Favorite":"В избранном","Favorites":"Избранное","Files":"Файлы","General":"Основные","Groom metadata and estimate locations":"Извлечь метаданные и определить местоположение","Height":"Высота","Import":"Импортировать","Import failed":"Импортирование не удалось","Index":"Индексировать","Indexing failed":"Индексирование не удалось","Label":"Метка","Labels":"Метки","Language":"Язык","Lens":"Объектив","Library":"Библиотека","List":"Список","Location":"Местоположение","Login":"Login","Logout":"Выйти","Logs":"Журнал","Missing":"Пропущенно","Monochrome":"Монохром","Month":"Месяц","More than 20 albums found":"Более 20 альбомов найдено","More than 20 labels found":"Более 20 меток найдено","More than 50 photos found":"Более 50 фотографий найдено","Mosaic":"Мозайка","Name":"Название","Newest first":"Сначала новые","Next":"Следующее","No albums found":"Альбомов не найдено","No albums matched your search":"Нет совпадений среди альбовом по Вашему запросу","No labels matched your search":"Нет совпадений меток по Вашему запросу","No photos found":"Фотографии не найдены","No photos matched your search":"Нет совпадений среди фотографий по Вашему запросу","Not implemented yet":"Еще не реализованно","Nothing to see here yet. Be patient.":"Пока что тут нечего смотреть. Будьте терпеливы.","Oldest first":"Сначала старые","One album found":"Один альбом найден","One photo found":"Одна фотография найдена","Originals":"Оригиналы","Password":"Пароль","Photos":"Фотографии","Photos archived":"Фотографии архивированы","Photos restored":"Фотографии востановлены","Places":"Места","Please enter your password to proceed:":"Пожалуйста, введите пароль что бы продолжить:","Pre-render thumbnails":"Сформировать предпросмотр","Prev":"Предыдущая","Primary":"Главная","Priority":"Приоритет","Random":"Случайно","Recently imported":"Недавно добавленные","Reloading...":"Перезагрузка…","Remove":"Удалить","remove failed: unknown album":"не могу удалить: неизвестный альбом","Restore":"Восстановить","Save":"Сохранить","Search":"Поиск","Season":"Сезон","Settings":"Настройки","Settings saved":"Настрокйки сохранены","Share":"Поделиться","Sharing":"Поделиться","Sign in":"Войти","Similar":"Похожие","Skip unchanged files":"Пропустить не измененные файлы","Sort By":"Сортировать по","Story":"История","Taken after":"Снято после","Taken At":"Дата съемки","Taken before":"Снято до","Theme":"Тема","Time Zone":"Часовой пояс","Title":"Название","Title too long":"Название слишком длинное","Toggled private flag":"Включен флаг приватности","Toggled story flag":"Фключен флаг История","Try again using a different term or create a new album":"Попробуйте еще раз, используя другой запрос или создайте новый альбом","Try again using a related or otherwise similar term.":"Попробуйте еще раз использовать смежный или похожий запрос.","Try using other terms and search options such as category, country and camera.":"Попробуйте другой запрос или опции поиска, такие как категория, страна и камера.","Type":"Тип","Unknown":"Неизвестно","Upload":"Загрузка","Upload complete":"Загрузка завершена","Uploading photos...":"Загрузка фотографий...","Vibrant":"Вибрант","View":"Обзор","Week":"Неделя","Width":"Ширина","Year":"Год","You can only download one album":"Вы можете загрузить только один альбом"}} \ No newline at end of file diff --git a/frontend/src/resources/translations.pot b/frontend/src/resources/translations.pot index 3e0fce941..07f319080 100644 --- a/frontend/src/resources/translations.pot +++ b/frontend/src/resources/translations.pot @@ -5,10 +5,6 @@ msgstr "" "Generated-By: easygettext\n" "Project-Id-Version: \n" -#: src/pages/library/files.vue:412 -msgid " entries found" -msgstr "" - #: src/pages/albums.vue:443 #: src/share/albums.vue:347 msgid "%{n} albums found" @@ -19,12 +15,16 @@ msgstr "" msgid "%{n} entries found" msgstr "" -#: src/pages/labels.vue:423 -msgid "%{n} labels found" +#: src/dialog/share/upload.vue:114 +msgid "%{n} files uploaded" msgstr "" -#: src/dialog/share/upload.vue:120 -msgid "%{n} photos shared" +#: src/pages/library/files.vue:412 +msgid "%{n} folders found" +msgstr "" + +#: src/pages/labels.vue:423 +msgid "%{n} labels found" msgstr "" #: src/resources/options.js:114 @@ -39,13 +39,11 @@ msgstr "" msgid "4 hours" msgstr "" -#: src/dialog/share.vue:72 -msgid "" -"A click will copy it to your clipboard. Any private photos remain private.\n" -" Alternatively, you can upload files directly to WebDAV servers like Nextcloud." +#: src/dialog/share.vue:71 +msgid "A click will copy it to your clipboard." msgstr "" -#: src/dialog/share/upload.vue:92 +#: src/dialog/share/upload.vue:106 #: src/model/account.js:91 #: src/pages/settings.vue:12 msgid "Account" @@ -64,7 +62,7 @@ msgid "Add Link" msgstr "" #: src/pages/albums.vue:108 -msgid "Add photos from search results by selecting them." +msgid "Add photos or videos from search results by selecting them." msgstr "" #: src/dialog/account/add.vue:5 @@ -125,8 +123,8 @@ msgstr "" msgid "Album Name" msgstr "" -#: src/component/navigation.vue:141 -#: src/component/navigation.vue:150 +#: src/component/navigation.vue:149 +#: src/component/navigation.vue:158 #: src/routes.js:104 #: src/share/routes.js:15 #: src/share/routes.js:22 @@ -172,7 +170,7 @@ msgstr "" msgid "All Countries" msgstr "" -#: src/pages/library/import.vue:106 +#: src/pages/library/import.vue:105 msgid "All files from import folder" msgstr "" @@ -192,6 +190,10 @@ msgstr "" msgid "All Years" msgstr "" +#: src/dialog/share.vue:73 +msgid "Alternatively, you can upload files directly to WebDAV servers like Nextcloud." +msgstr "" + #: src/dialog/photo/details.vue:445 msgid "Altitude (m)" msgstr "" @@ -200,10 +202,18 @@ msgstr "" msgid "An error occurred - are you offline?" msgstr "" +#: src/dialog/photo/info.vue:107 +msgid "Analog" +msgstr "" + #: src/pages/settings/general.vue:773 msgid "Animation" msgstr "" +#: src/dialog/share.vue:72 +msgid "Any private photos and videos remain private and won't be shared." +msgstr "" + #: src/dialog/account/edit.vue:594 msgid "API Key" msgstr "" @@ -217,16 +227,16 @@ msgstr "" msgid "Approve" msgstr "" -#: src/component/navigation.vue:89 +#: src/component/navigation.vue:97 #: src/component/photo/cards.vue:120 #: src/component/photo/clipboard.vue:155 #: src/pages/settings/general.vue:415 -#: src/routes.js:171 +#: src/routes.js:178 #: src/share/photo/clipboard.vue:74 msgid "Archive" msgstr "" -#: src/dialog/photo/info.vue:139 +#: src/dialog/photo/info.vue:147 msgid "Archived" msgstr "" @@ -279,10 +289,10 @@ msgid "Browse indexed files and folders in Library." msgstr "" #: src/common/notify.js:72 -msgid "Busy, please wait..." +msgid "Busy, please wait…" msgstr "" -#: src/component/navigation.vue:172 +#: src/component/navigation.vue:188 #: src/routes.js:117 #: src/routes.js:124 msgid "Calendar" @@ -291,7 +301,7 @@ msgstr "" #: src/component/album/toolbar.vue:119 #: src/component/photo/list.vue:113 #: src/component/photo/toolbar.vue:199 -#: src/dialog/album/edit.vue:126 +#: src/dialog/album/edit.vue:117 #: src/dialog/photo/details.vue:429 #: src/share/photo/list.vue:96 msgid "Camera" @@ -311,12 +321,12 @@ msgstr "" #: src/dialog/account/edit.vue:95 #: src/dialog/account/remove.vue:13 #: src/dialog/album/delete.vue:13 -#: src/dialog/album/edit.vue:48 +#: src/dialog/album/edit.vue:39 #: src/dialog/label/delete.vue:13 #: src/dialog/photo/album.vue:15 -#: src/dialog/share.vue:155 +#: src/dialog/share.vue:156 #: src/dialog/share/upload.vue:29 -#: src/pages/library/import.vue:35 +#: src/pages/library/import.vue:34 #: src/pages/library/index.vue:26 msgid "Cancel" msgstr "" @@ -328,7 +338,7 @@ msgstr "" #: src/component/album/toolbar.vue:121 #: src/component/photo/toolbar.vue:204 -#: src/dialog/album/edit.vue:128 +#: src/dialog/album/edit.vue:119 #: src/dialog/photo/details.vue:433 #: src/pages/albums.vue:241 #: src/share/albums.vue:163 @@ -352,7 +362,7 @@ msgstr "" msgid "Change Status" msgstr "" -#: src/dialog/photo/info.vue:131 +#: src/dialog/photo/info.vue:139 msgid "Checked" msgstr "" @@ -386,16 +396,12 @@ msgstr "" msgid "Connect" msgstr "" -#: src/component/navigation.vue:355 -msgid "Connecting..." -msgstr "" - #: src/pages/albums.vue:105 -msgid "Contains %{n} photos." +msgid "Contains %{n} entries." msgstr "" #: src/pages/albums.vue:102 -msgid "Contains one photo." +msgid "Contains one entry." msgstr "" #: src/pages/library/index.vue:116 @@ -403,7 +409,11 @@ msgstr "" msgid "Convert to JPEG" msgstr "" -#: src/dialog/share.vue:170 +#: src/pages/library/index.vue:182 +msgid "Converting" +msgstr "" + +#: src/dialog/share.vue:171 msgid "Copied to clipboard" msgstr "" @@ -422,7 +432,7 @@ msgstr "" #: src/component/album/toolbar.vue:118 #: src/component/photo/toolbar.vue:198 -#: src/dialog/album/edit.vue:125 +#: src/dialog/album/edit.vue:116 #: src/dialog/photo/details.vue:428 msgid "Country" msgstr "" @@ -431,10 +441,14 @@ msgstr "" msgid "Create album" msgstr "" -#: src/dialog/photo/info.vue:107 +#: src/dialog/photo/info.vue:115 msgid "Created" msgstr "" +#: src/pages/library/index.vue:188 +msgid "Creating thumbnails for" +msgstr "" + #: src/pages/settings/account.vue:38 msgid "Current Password" msgstr "" @@ -464,13 +478,13 @@ msgstr "" #: src/dialog/account/remove.vue:15 #: src/dialog/album/delete.vue:15 #: src/dialog/label/delete.vue:15 -#: src/dialog/share.vue:294 +#: src/dialog/share.vue:291 #: src/share/album/clipboard.vue:72 msgid "Delete" msgstr "" #: src/component/album/toolbar.vue:115 -#: src/dialog/album/edit.vue:122 +#: src/dialog/album/edit.vue:113 #: src/dialog/photo/details.vue:453 msgid "Description" msgstr "" @@ -483,29 +497,25 @@ msgstr "" msgid "Dimensions" msgstr "" -#: src/pages/library/files.vue:408 -msgid "Directory is empty" -msgstr "" - #: src/dialog/account/edit.vue:61 #: src/dialog/account/edit.vue:120 msgid "Disabled" msgstr "" -#: src/routes.js:283 #: src/routes.js:290 #: src/routes.js:297 #: src/routes.js:304 +#: src/routes.js:311 msgid "Discover" msgstr "" -#: src/dialog/share.vue:156 +#: src/dialog/share.vue:157 msgid "Done" msgstr "" #: src/dialog/upload.vue:39 -#: src/pages/library/import.vue:44 -#: src/pages/library/index.vue:43 +#: src/pages/library/import.vue:7 +#: src/pages/library/index.vue:7 msgid "Done." msgstr "" @@ -534,7 +544,7 @@ msgstr "" #: src/component/photo/viewer.vue:146 #: src/share/album/clipboard.vue:93 #: src/share/photo/clipboard.vue:97 -msgid "Downloading..." +msgid "Downloading…" msgstr "" #: src/dialog/photo/files.vue:103 @@ -564,7 +574,7 @@ msgstr "" msgid "Edit Photo" msgstr "" -#: src/dialog/photo/info.vue:123 +#: src/dialog/photo/info.vue:131 msgid "Edited" msgstr "" @@ -581,7 +591,7 @@ msgstr "" msgid "Error" msgstr "" -#: src/component/navigation.vue:278 +#: src/component/navigation.vue:294 msgid "Errors" msgstr "" @@ -594,11 +604,11 @@ msgid "Every two days" msgstr "" #: src/pages/settings/general.vue:67 -msgid "Exclude photos marked as private from search results, shared albums, labels and places." +msgid "Exclude content marked as private from search results, shared albums, labels and places." msgstr "" #: src/dialog/account/edit.vue:288 -#: src/dialog/share.vue:173 +#: src/dialog/share.vue:174 msgid "Expires" msgstr "" @@ -610,19 +620,19 @@ msgstr "" msgid "F Number" msgstr "" -#: src/dialog/share.vue:170 +#: src/dialog/share.vue:171 msgid "Failed copying to clipboard" msgstr "" -#: src/dialog/share.vue:202 +#: src/dialog/share.vue:203 msgid "Failed removing link" msgstr "" -#: src/dialog/share.vue:190 +#: src/dialog/share.vue:191 msgid "Failed updating link" msgstr "" -#: src/dialog/upload.vue:243 +#: src/dialog/upload.vue:241 msgid "Failure while importing uploaded files" msgstr "" @@ -634,8 +644,8 @@ msgstr "" msgid "Favorite" msgstr "" -#: src/component/navigation.vue:102 -#: src/routes.js:143 +#: src/component/navigation.vue:110 +#: src/routes.js:150 msgid "Favorites" msgstr "" @@ -643,7 +653,7 @@ msgstr "" msgid "File" msgstr "" -#: src/routes.js:203 +#: src/routes.js:210 msgid "File Browser" msgstr "" @@ -660,25 +670,37 @@ msgstr "" msgid "Files with sequential names like 'IMG_1234 (2)' or 'IMG_1234 copy 2' belong to the same photo." msgstr "" +#: src/component/navigation.vue:80 +msgid "Film Scans" +msgstr "" + #: src/dialog/photo/details.vue:448 msgid "Focal Length" msgstr "" #: src/dialog/account/edit.vue:326 #: src/dialog/account/edit.vue:332 -#: src/dialog/share/upload.vue:93 +#: src/dialog/share/upload.vue:147 #: src/model/folder.js:187 -#: src/pages/library/files.vue:85 -#: src/pages/library/import.vue:121 +#: src/pages/library/files.vue:83 +#: src/pages/library/import.vue:120 #: src/pages/library/index.vue:117 msgid "Folder" msgstr "" -#: src/pages/library/files.vue:179 +#: src/pages/library/files.vue:414 +msgid "Folder contains %{n} files" +msgstr "" + +#: src/pages/library/files.vue:406 +msgid "Folder is empty" +msgstr "" + +#: src/pages/library/files.vue:177 msgid "Folder Name" msgstr "" -#: src/component/navigation.vue:159 +#: src/component/navigation.vue:167 #: src/routes.js:130 #: src/routes.js:137 msgid "Folders" @@ -714,7 +736,7 @@ msgstr "" #: src/component/album/toolbar.vue:104 #: src/component/photo/toolbar.vue:191 -#: src/dialog/album/edit.vue:115 +#: src/dialog/album/edit.vue:106 msgid "Group by similarity" msgstr "" @@ -722,17 +744,17 @@ msgstr "" msgid "Group Sequential" msgstr "" -#: src/component/navigation.vue:309 +#: src/component/navigation.vue:325 #: src/component/navigation.vue:25 #: src/pages/help.vue:4 msgid "Help" msgstr "" -#: src/component/navigation.vue:269 +#: src/component/navigation.vue:285 msgid "Hidden" msgstr "" -#: src/routes.js:209 +#: src/routes.js:216 msgid "Hidden Files" msgstr "" @@ -752,16 +774,16 @@ msgstr "" msgid "image" msgstr "" -#: src/pages/library/import.vue:44 +#: src/pages/library/import.vue:43 #: src/pages/settings/general.vue:607 msgid "Import" msgstr "" -#: src/pages/library/import.vue:164 +#: src/pages/library/import.vue:163 msgid "Import failed" msgstr "" -#: src/pages/library/import.vue:26 +#: src/pages/library/import.vue:25 msgid "Imported files will be sorted by date and given a unique name to avoid duplicates." msgstr "" @@ -769,12 +791,12 @@ msgstr "" msgid "Imported files will be sorted by date and given a unique name." msgstr "" -#: src/pages/library/import.vue:31 -msgid "Importing" +#: src/pages/library/import.vue:5 +msgid "Importing %{name}…" msgstr "" -#: src/pages/library/import.vue:40 -msgid "Importing files to originals..." +#: src/pages/library/import.vue:6 +msgid "Importing files to originals…" msgstr "" #: src/pages/library.vue:4 @@ -782,23 +804,27 @@ msgstr "" msgid "Index" msgstr "" +#: src/pages/library/index.vue:176 +msgid "Indexing" +msgstr "" + #: src/pages/library/index.vue:158 msgid "Indexing failed" msgstr "" -#: src/pages/library/index.vue:38 -msgid "Indexing photos and sidecar files..." +#: src/pages/library/index.vue:6 +msgid "Indexing media and sidecar files…" msgstr "" #: src/dialog/account/edit.vue:362 msgid "Interval" msgstr "" -#: src/model/rest.js:151 +#: src/model/rest.js:155 msgid "Item" msgstr "" -#: src/pages/library/import.vue:27 +#: src/pages/library/import.vue:26 msgid "JPEGs and thumbnails are automatically rendered as needed." msgstr "" @@ -816,10 +842,10 @@ msgstr "" msgid "Label Name" msgstr "" -#: src/component/navigation.vue:230 +#: src/component/navigation.vue:246 #: src/dialog/photo/edit.vue:27 #: src/pages/settings/general.vue:543 -#: src/routes.js:222 +#: src/routes.js:229 msgid "Labels" msgstr "" @@ -853,17 +879,17 @@ msgstr "" msgid "Let PhotoPrism create albums from past events." msgstr "" -#: src/component/navigation.vue:243 -#: src/component/navigation.vue:252 +#: src/component/navigation.vue:259 +#: src/component/navigation.vue:268 #: src/pages/settings/general.vue:6 #: src/pages/settings/general.vue:575 -#: src/routes.js:241 #: src/routes.js:248 #: src/routes.js:255 +#: src/routes.js:262 msgid "Library" msgstr "" -#: src/component/navigation.vue:317 +#: src/component/navigation.vue:333 #: src/component/navigation.vue:33 #: src/dialog/photo/details.vue:452 #: src/pages/about/license.vue:4 @@ -874,7 +900,11 @@ msgstr "" msgid "Lime" msgstr "" -#: src/model/link.js:101 +#: src/pages/library/files.vue:416 +msgid "Limit reached, showing first %{n} files" +msgstr "" + +#: src/model/link.js:105 msgid "Link" msgstr "" @@ -896,11 +926,11 @@ msgstr "" msgid "Location" msgstr "" -#: src/component/navigation.vue:343 +#: src/component/navigation.vue:359 msgid "Login" msgstr "" -#: src/component/navigation.vue:331 +#: src/component/navigation.vue:347 msgid "Logout" msgstr "" @@ -933,7 +963,7 @@ msgstr "" msgid "Missing" msgstr "" -#: src/component/navigation.vue:185 +#: src/component/navigation.vue:201 #: src/pages/settings/general.vue:511 #: src/routes.js:91 #: src/routes.js:98 @@ -979,7 +1009,7 @@ msgstr "" #: src/component/album/toolbar.vue:105 #: src/component/photo/toolbar.vue:192 -#: src/dialog/album/edit.vue:116 +#: src/dialog/album/edit.vue:107 msgid "Most relevant" msgstr "" @@ -988,7 +1018,7 @@ msgstr "" msgid "Move" msgstr "" -#: src/pages/library/import.vue:120 +#: src/pages/library/import.vue:119 msgid "Move Files" msgstr "" @@ -1003,7 +1033,7 @@ msgstr[1] "" #: src/component/photo/list.vue:115 #: src/dialog/account/edit.vue:488 -#: src/dialog/album/edit.vue:121 +#: src/dialog/album/edit.vue:112 #: src/dialog/photo/files.vue:43 #: src/dialog/photo/files.vue:162 #: src/dialog/photo/info.vue:27 @@ -1013,10 +1043,10 @@ msgid "Name" msgstr "" #: src/component/album/toolbar.vue:123 -#: src/dialog/album/edit.vue:119 +#: src/dialog/album/edit.vue:110 #: src/dialog/photo/labels.vue:116 #: src/pages/labels.vue:199 -#: src/pages/library/files.vue:181 +#: src/pages/library/files.vue:179 msgid "Name too long" msgstr "" @@ -1032,13 +1062,14 @@ msgstr "" #: src/component/album/toolbar.vue:101 #: src/component/photo/toolbar.vue:188 -#: src/dialog/album/edit.vue:112 +#: src/dialog/album/edit.vue:103 msgid "Newest first" msgstr "" #: src/dialog/photo/archive.vue:13 #: src/dialog/photo/info.vue:265 #: src/dialog/photo/info.vue:296 +#: src/dialog/photo/info.vue:327 msgid "No" msgstr "" @@ -1094,14 +1125,12 @@ msgstr "" msgid "No warnings or errors" msgstr "" -#: src/component/photo/cards.vue:11 +#: src/component/photo/cards.vue:12 #: src/component/photo/list.vue:101 -#: src/component/photo/mosaic.vue:11 -#: src/dialog/upload.vue:52 +#: src/component/photo/mosaic.vue:12 +#: src/dialog/upload.vue:50 #: src/pages/settings/general.vue:99 -#: src/share/photo/cards.vue:11 #: src/share/photo/list.vue:84 -#: src/share/photo/mosaic.vue:11 msgid "Non-photographic and low-quality images require a review before they appear in search results." msgstr "" @@ -1117,7 +1146,7 @@ msgstr "" msgid "Not implemented yet" msgstr "" -#: src/pages/library/import.vue:29 +#: src/pages/library/import.vue:28 msgid "Note that you can as well manage and re-index your originals manually." msgstr "" @@ -1139,10 +1168,7 @@ msgstr "" msgid "Nothing to see here yet. Be patient." msgstr "" -#: src/dialog/upload.vue:36 -msgid "of" -msgstr "" - +#: src/component/navigation.vue:371 #: src/resources/options.js:91 msgid "Offline" msgstr "" @@ -1153,7 +1179,7 @@ msgstr "" #: src/component/album/toolbar.vue:102 #: src/component/photo/toolbar.vue:189 -#: src/dialog/album/edit.vue:113 +#: src/dialog/album/edit.vue:104 msgid "Oldest first" msgstr "" @@ -1167,11 +1193,18 @@ msgid "One album found" msgstr "" #: src/pages/album/photos.vue:356 -#: src/pages/library/files.vue:410 #: src/share/photos.vue:399 msgid "One entry found" msgstr "" +#: src/pages/library/files.vue:408 +msgid "One file found" +msgstr "" + +#: src/pages/library/files.vue:410 +msgid "One folder found" +msgstr "" + #: src/resources/options.js:58 msgid "Onyx" msgstr "" @@ -1184,7 +1217,7 @@ msgstr "" msgid "Original" msgstr "" -#: src/pages/library/import.vue:28 +#: src/pages/library/import.vue:27 msgid "Original file names will be stored and indexed." msgstr "" @@ -1193,7 +1226,7 @@ msgstr "" msgid "Original Name" msgstr "" -#: src/component/navigation.vue:260 +#: src/component/navigation.vue:276 #: src/pages/library/files.vue:6 #: src/pages/settings/general.vue:479 msgid "Originals" @@ -1201,7 +1234,7 @@ msgstr "" #: src/dialog/account/add.vue:80 #: src/dialog/account/edit.vue:561 -#: src/dialog/share.vue:154 +#: src/dialog/share.vue:155 #: src/pages/login.vue:73 msgid "Password" msgstr "" @@ -1214,19 +1247,20 @@ msgstr "" msgid "Path" msgstr "" -#: src/routes.js:235 +#: src/routes.js:242 msgid "People" msgstr "" -#: src/model/photo.js:583 +#: src/dialog/share.vue:70 +msgid "People you share a link with will be able to view public contents." +msgstr "" + +#: src/model/photo.js:584 msgid "Photo" msgstr "" -#: src/pages/about/about.vue:73 -msgid "" -"PhotoPrism™ is a registered trademark of Michael Mayer. You may use it as required to\n" -" describe our software, run your own server, for educational purposes, but not for offering commercial\n" -" goods, products, or services without prior written permission. In other words, please ask." +#: src/pages/about/about.vue:74 +msgid "PhotoPrism™ is a registered trademark of Michael Mayer." msgstr "" #: src/component/navigation.vue:54 @@ -1238,14 +1272,14 @@ msgstr "" msgid "Pink" msgstr "" -#: src/component/navigation.vue:198 -#: src/component/navigation.vue:207 +#: src/component/navigation.vue:214 +#: src/component/navigation.vue:223 #: src/pages/settings/general.vue:124 #: src/pages/settings/general.vue:671 -#: src/routes.js:178 -#: src/routes.js:184 -#: src/routes.js:190 +#: src/routes.js:185 +#: src/routes.js:191 #: src/routes.js:197 +#: src/routes.js:204 msgid "Places" msgstr "" @@ -1253,10 +1287,8 @@ msgstr "" msgid "Please confirm your new password." msgstr "" -#: src/dialog/upload.vue:47 -msgid "" -"Please don't upload photos containing offensive content. Uploads\n" -" that may contain such images will be rejected automatically." +#: src/dialog/upload.vue:45 +msgid "Please don't upload photos containing offensive content." msgstr "" #: src/pages/login.vue:14 @@ -1264,25 +1296,19 @@ msgid "Please enter your name and password to proceed:" msgstr "" #: src/pages/library/files.vue:39 -msgid "" -"Please re-index your originals if a file you expect is\n" -" missing." +msgid "Please re-index your originals if a file you expect is missing." msgstr "" #: src/dialog/account/edit.vue:414 msgid "Preserve filenames" msgstr "" -#: src/pages/library/import.vue:53 -msgid "Press button to start copying..." +#: src/pages/library/import.vue:8 +msgid "Press button to start importing…" msgstr "" -#: src/pages/library/index.vue:47 -msgid "Press button to start indexing..." -msgstr "" - -#: src/pages/library/import.vue:48 -msgid "Press button to start moving..." +#: src/pages/library/index.vue:8 +msgid "Press button to start indexing…" msgstr "" #: src/dialog/upload.vue:22 @@ -1290,11 +1316,6 @@ msgstr "" msgid "Press enter to create a new album." msgstr "" -#: src/dialog/album/edit.vue:30 -#: src/dialog/album/edit.vue:4 -msgid "Press enter to create a new category." -msgstr "" - #: src/dialog/photo/files.vue:18 msgid "Preview" msgstr "" @@ -1304,9 +1325,9 @@ msgstr "" msgid "Primary" msgstr "" -#: src/component/navigation.vue:115 +#: src/component/navigation.vue:123 #: src/dialog/photo/info.vue:99 -#: src/routes.js:164 +#: src/routes.js:171 msgid "Private" msgstr "" @@ -1336,7 +1357,7 @@ msgstr "" #: src/component/album/toolbar.vue:100 #: src/component/photo/toolbar.vue:187 -#: src/dialog/album/edit.vue:111 +#: src/dialog/album/edit.vue:102 msgid "Recently added" msgstr "" @@ -1345,7 +1366,7 @@ msgid "Red" msgstr "" #: src/pages/settings/general.vue:377 -msgid "Reloading..." +msgid "Reloading…" msgstr "" #: src/dialog/account/edit.vue:104 @@ -1363,7 +1384,7 @@ msgstr "" msgid "remove failed: unknown album" msgstr "" -#: src/pages/library/import.vue:124 +#: src/pages/library/import.vue:123 msgid "Remove imported files to save storage. Unsupported file types will never be deleted, they remain in their current location." msgstr "" @@ -1384,8 +1405,8 @@ msgstr "" msgid "Retype Password" msgstr "" -#: src/component/navigation.vue:80 -#: src/routes.js:157 +#: src/component/navigation.vue:88 +#: src/routes.js:164 msgid "Review" msgstr "" @@ -1398,21 +1419,21 @@ msgid "Russian" msgstr "" #: src/dialog/account/edit.vue:98 -#: src/dialog/album/edit.vue:51 -#: src/dialog/share.vue:60 +#: src/dialog/album/edit.vue:42 +#: src/dialog/share.vue:59 msgid "Save" msgstr "" #: src/component/album/toolbar.vue:116 #: src/component/photo/toolbar.vue:196 -#: src/dialog/album/edit.vue:123 +#: src/dialog/album/edit.vue:114 #: src/dialog/photo/details.vue:426 #: src/dialog/photo/labels.vue:113 #: src/pages/albums.vue:239 #: src/pages/labels.vue:196 -#: src/pages/library/files.vue:178 +#: src/pages/library/files.vue:176 #: src/pages/places.vue:174 -#: src/routes.js:228 +#: src/routes.js:235 #: src/share/albums.vue:161 msgid "Search" msgstr "" @@ -1429,11 +1450,11 @@ msgstr "" msgid "Seaweed" msgstr "" -#: src/dialog/share.vue:260 +#: src/dialog/share.vue:256 msgid "Secret" msgstr "" -#: src/dialog/upload.vue:117 +#: src/dialog/upload.vue:115 msgid "Select albums or create a new one" msgstr "" @@ -1451,17 +1472,17 @@ msgstr "" #: src/dialog/account/add.vue:78 #: src/dialog/account/edit.vue:513 -#: src/dialog/share.vue:152 +#: src/dialog/share.vue:153 msgid "Service URL" msgstr "" -#: src/component/navigation.vue:292 -#: src/component/navigation.vue:301 +#: src/component/navigation.vue:308 +#: src/component/navigation.vue:317 #: src/component/navigation.vue:8 #: src/component/navigation.vue:17 -#: src/routes.js:262 #: src/routes.js:269 #: src/routes.js:276 +#: src/routes.js:283 msgid "Settings" msgstr "" @@ -1469,7 +1490,7 @@ msgstr "" msgid "Settings saved" msgstr "" -#: src/dialog/share/upload.vue:95 +#: src/dialog/share/upload.vue:32 msgid "Setup" msgstr "" @@ -1531,11 +1552,11 @@ msgstr "" #: src/component/album/toolbar.vue:103 #: src/component/photo/toolbar.vue:190 -#: src/dialog/album/edit.vue:114 +#: src/dialog/album/edit.vue:105 msgid "Sort by file name" msgstr "" -#: src/dialog/album/edit.vue:127 +#: src/dialog/album/edit.vue:118 msgid "Sort Order" msgstr "" @@ -1543,7 +1564,7 @@ msgstr "" msgid "Source" msgstr "" -#: src/component/navigation.vue:216 +#: src/component/navigation.vue:232 msgid "States" msgstr "" @@ -1631,14 +1652,10 @@ msgstr "" msgid "to" msgstr "" -#: src/dialog/share.vue:261 +#: src/dialog/share.vue:257 msgid "Token" msgstr "" -#: src/pages/library/files.vue:414 -msgid "Too many files in folder, showing first" -msgstr "" - #: src/resources/options.js:103 msgid "Topographic" msgstr "" @@ -1683,36 +1700,41 @@ msgstr "" #: src/component/photo/toolbar.vue:235 #: src/dialog/photo/details.vue:420 -#: src/dialog/photo/info.vue:197 -#: src/model/photo.js:349 -#: src/model/photo.js:361 -#: src/model/photo.js:385 -#: src/model/photo.js:397 -#: src/model/photo.js:474 -#: src/model/photo.js:487 +#: src/dialog/photo/info.vue:210 +#: src/model/photo.js:350 +#: src/model/photo.js:362 +#: src/model/photo.js:386 +#: src/model/photo.js:398 +#: src/model/photo.js:475 +#: src/model/photo.js:488 #: src/resources/options.js:16 msgid "Unknown" msgstr "" -#: src/dialog/photo/info.vue:115 +#: src/component/navigation.vue:175 +#: src/routes.js:143 +msgid "Unsorted" +msgstr "" + +#: src/dialog/photo/info.vue:123 msgid "Updated" msgstr "" -#: src/dialog/share/upload.vue:94 +#: src/dialog/share/upload.vue:35 #: src/dialog/upload.vue:8 -#: src/dialog/upload.vue:56 -#: src/pages/library/import.vue:39 +#: src/dialog/upload.vue:54 +#: src/pages/library/import.vue:38 #: src/pages/settings/general.vue:319 #: src/pages/settings/sync.vue:93 msgid "Upload" msgstr "" -#: src/dialog/upload.vue:239 +#: src/dialog/upload.vue:237 msgid "Upload complete" msgstr "" #: src/dialog/upload.vue:38 -msgid "Upload complete. Indexing..." +msgid "Upload complete. Indexing…" msgstr "" #: src/dialog/upload.vue:34 @@ -1728,16 +1750,20 @@ msgid "Upload to WebDAV and share links with friends." msgstr "" #: src/dialog/upload.vue:36 -msgid "Uploading" +msgid "Uploading %{n} of %{t}…" msgstr "" -#: src/dialog/upload.vue:143 -#: src/dialog/upload.vue:151 -#: src/dialog/upload.vue:192 -msgid "Uploading photos..." +#: src/dialog/upload.vue:141 +#: src/dialog/upload.vue:149 +#: src/dialog/upload.vue:190 +msgid "Uploading photos…" msgstr "" -#: src/dialog/share.vue:193 +#: src/dialog/upload.vue:46 +msgid "Uploads that may contain such images will be rejected automatically." +msgstr "" + +#: src/dialog/share.vue:189 msgid "URL" msgstr "" @@ -1751,7 +1777,7 @@ msgstr "" #: src/dialog/account/add.vue:79 #: src/dialog/account/edit.vue:537 -#: src/dialog/share.vue:153 +#: src/dialog/share.vue:154 msgid "Username" msgstr "" @@ -1764,19 +1790,19 @@ msgid "UTC Time" msgstr "" #: src/model/file.js:196 -#: src/model/photo.js:434 -#: src/model/photo.js:448 +#: src/model/photo.js:435 +#: src/model/photo.js:449 msgid "Video" msgstr "" -#: src/component/navigation.vue:128 -#: src/routes.js:150 +#: src/component/navigation.vue:136 +#: src/routes.js:157 msgid "Videos" msgstr "" #: src/component/album/toolbar.vue:117 #: src/component/photo/toolbar.vue:197 -#: src/dialog/album/edit.vue:124 +#: src/dialog/album/edit.vue:115 #: src/dialog/photo/details.vue:427 msgid "View" msgstr "" @@ -1831,6 +1857,7 @@ msgstr "" #: src/dialog/photo/files.vue:105 #: src/dialog/photo/info.vue:264 #: src/dialog/photo/info.vue:295 +#: src/dialog/photo/info.vue:326 msgid "Yes" msgstr "" @@ -1842,3 +1869,12 @@ msgstr "" #: src/component/label/clipboard.vue:123 msgid "You can only download one label" msgstr "" + +#: src/component/album/clipboard.vue:125 +#: src/component/album/clipboard.vue:138 +msgid "You may only select one item" +msgstr "" + +#: src/pages/about/about.vue:75 +msgid "You may use it as required to describe our software, run your own server, for educational purposes, but not for offering commercial goods, products, or services without prior written permission. In other words, please ask." +msgstr "" diff --git a/frontend/src/routes.js b/frontend/src/routes.js index b65ba76a8..e6d8e2747 100644 --- a/frontend/src/routes.js +++ b/frontend/src/routes.js @@ -136,6 +136,13 @@ export default [ component: AlbumPhotos, meta: {title: $gettext("Folders"), auth: true}, }, + { + name: "unsorted", + path: "/unsorted", + component: Photos, + meta: {title: $gettext("Unsorted"), auth: true}, + props: {staticFilter: {unsorted: true}}, + }, { name: "favorites", path: "/favorites", diff --git a/frontend/src/share/album/clipboard.vue b/frontend/src/share/album/clipboard.vue index 81e5cf586..34c7773dc 100644 --- a/frontend/src/share/album/clipboard.vue +++ b/frontend/src/share/album/clipboard.vue @@ -90,7 +90,7 @@ this.expanded = false; }, onDownload(path) { - Notify.success(this.$gettext("Downloading...")); + Notify.success(this.$gettext("Downloading…")); const link = document.createElement('a') link.href = path; link.download = "album.zip"; diff --git a/frontend/src/share/photo/cards.vue b/frontend/src/share/photo/cards.vue index 445d3d7a3..949856eec 100644 --- a/frontend/src/share/photo/cards.vue +++ b/frontend/src/share/photo/cards.vue @@ -3,15 +3,12 @@

diff --git a/frontend/src/share/photo/clipboard.vue b/frontend/src/share/photo/clipboard.vue index 2ba7dd6d9..977b1e4e6 100644 --- a/frontend/src/share/photo/clipboard.vue +++ b/frontend/src/share/photo/clipboard.vue @@ -94,7 +94,7 @@ this.expanded = false; }, onDownload(path) { - Notify.success(this.$gettext("Downloading...")); + Notify.success(this.$gettext("Downloading…")); const link = document.createElement('a') link.href = path; link.download = "photos.zip"; diff --git a/frontend/src/share/photo/mosaic.vue b/frontend/src/share/photo/mosaic.vue index c595bb640..e6e60c063 100644 --- a/frontend/src/share/photo/mosaic.vue +++ b/frontend/src/share/photo/mosaic.vue @@ -3,15 +3,12 @@
-

+

No photos or videos found

-
+

Try using other terms and search options such as category, country and camera. - - Non-photographic and low-quality images require a review before they appear in search results. - -

+

diff --git a/frontend/tests/unit/model/file_test.js b/frontend/tests/unit/model/file_test.js index 80d7dcd10..206b4c661 100644 --- a/frontend/tests/unit/model/file_test.js +++ b/frontend/tests/unit/model/file_test.js @@ -26,7 +26,7 @@ describe("model/file", () => { const result = file.baseName(); assert.equal(result, "IMG123.jpg"); const result2 = file.baseName(8); - assert.equal(result2, "IMG12..."); + assert.equal(result2, "IMG123.…"); }); it("should return true", () => { @@ -336,4 +336,4 @@ describe("model/file", () => { assert.equal(result, "File"); }); -}); \ No newline at end of file +}); diff --git a/frontend/tests/unit/model/folder_test.js b/frontend/tests/unit/model/folder_test.js index 5c9fc3ca0..60fdfde48 100644 --- a/frontend/tests/unit/model/folder_test.js +++ b/frontend/tests/unit/model/folder_test.js @@ -70,7 +70,7 @@ describe("model/folder", () => { const result = folder.baseName(); assert.equal(result, "10-Halloween"); const result2 = folder.baseName(8); - assert.equal(result2, "10-Ha..."); + assert.equal(result2, "10-Hall…"); }); it("should return false", () => { @@ -244,4 +244,4 @@ describe("model/folder", () => { ); }); -}); \ No newline at end of file +}); diff --git a/frontend/tests/unit/model/link_test.js b/frontend/tests/unit/model/link_test.js index 365046c29..d3335f108 100644 --- a/frontend/tests/unit/model/link_test.js +++ b/frontend/tests/unit/model/link_test.js @@ -31,7 +31,7 @@ describe("model/link", () => { const values2 = {UID: 5, Token: "", Share: "family"}; const link2 = new Link(values2); const result2 = link2.url(); - assert.equal(result2, "http://localhost:9876/s/.../family"); + assert.equal(result2, "http://localhost:9876/s/…/family"); }); it("should get link caption", () => { @@ -98,4 +98,4 @@ describe("model/link", () => { assert.equal(result, "Link"); }); -}); \ No newline at end of file +}); diff --git a/frontend/tests/unit/model/photo_test.js b/frontend/tests/unit/model/photo_test.js index 5c4a48d60..f919f7888 100644 --- a/frontend/tests/unit/model/photo_test.js +++ b/frontend/tests/unit/model/photo_test.js @@ -285,7 +285,7 @@ describe("model/photo", () => { const result = photo.baseName(); assert.equal(result, "superCuteKitten.jpg"); const result2 = photo.baseName(5); - assert.equal(result2, "su..."); + assert.equal(result2, "supe…"); }); it("should refresh file attributes", () => { diff --git a/internal/entity/photo.go b/internal/entity/photo.go index 98d2b52b4..a792ec7ba 100644 --- a/internal/entity/photo.go +++ b/internal/entity/photo.go @@ -50,6 +50,7 @@ type Photo struct { OriginalName string `gorm:"type:varbinary(768);" json:"OriginalName" yaml:"OriginalName,omitempty"` PhotoFavorite bool `json:"Favorite" yaml:"Favorite,omitempty"` PhotoPrivate bool `json:"Private" yaml:"Private,omitempty"` + PhotoAnalog bool `json:"Analog" yaml:"Analog,omitempty"` TimeZone string `gorm:"type:varbinary(64);" json:"TimeZone" yaml:"-"` PlaceID string `gorm:"type:varbinary(42);index;" json:"PlaceID" yaml:"-"` LocationID string `gorm:"type:varbinary(42);index;" json:"LocationID" yaml:"-"` diff --git a/internal/form/photo_search.go b/internal/form/photo_search.go index 85ed87004..e29894cdc 100644 --- a/internal/form/photo_search.go +++ b/internal/form/photo_search.go @@ -19,6 +19,7 @@ type PhotoSearch struct { Primary bool `form:"primary"` Video bool `form:"video"` Photo bool `form:"photo"` + Analog bool `form:"analog"` Duplicate bool `form:"duplicate"` Error bool `form:"error"` Hidden bool `form:"hidden"` @@ -26,6 +27,7 @@ type PhotoSearch struct { Public bool `form:"public"` Private bool `form:"private"` Favorite bool `form:"favorite"` + Unsorted bool `form:"unsorted"` Lat float32 `form:"lat"` Lng float32 `form:"lng"` Dist uint `form:"dist"` diff --git a/internal/query/photo_results.go b/internal/query/photo_results.go index 0dc2d3527..cb67df1f3 100644 --- a/internal/query/photo_results.go +++ b/internal/query/photo_results.go @@ -41,6 +41,7 @@ type PhotoResult struct { PhotoExposure string `json:"Exposure"` PhotoQuality int `json:"Quality"` PhotoResolution int `json:"Resolution"` + PhotoAnalog bool `json:"Analog"` CameraID uint `json:"CameraID"` // Camera CameraSerial string `json:"CameraSerial"` CameraSrc string `json:"CameraSrc"` diff --git a/internal/query/photo_search.go b/internal/query/photo_search.go index ca8b1a28d..3a868a2ca 100644 --- a/internal/query/photo_search.go +++ b/internal/query/photo_search.go @@ -186,6 +186,10 @@ func PhotoSearch(f form.PhotoSearch) (results PhotoResults, count int, err error s = s.Where("photos.photo_favorite = 1") } + if f.Analog { + s = s.Where("photos.photo_analog = 1") + } + if f.Country != "" { s = s.Where("photos.photo_country IN (?)", strings.Split(strings.ToLower(f.Country), ",")) } @@ -303,6 +307,8 @@ func PhotoSearch(f form.PhotoSearch) (results PhotoResults, count int, err error } else { s = s.Joins("JOIN photos_albums ON photos_albums.photo_uid = photos.photo_uid").Where("photos_albums.hidden = 0 AND photos_albums.album_uid = ?", f.Album) } + } else if f.Unsorted && f.Filter == "" { + s = s.Where("photos.photo_uid NOT IN (SELECT photo_uid FROM photos_albums pa WHERE pa.hidden = 0)") } // Set sort order for results.