Merge branch 'develop' into feature/oidc-v2
This commit is contained in:
commit
0facf42981
19 changed files with 701 additions and 977 deletions
10
README.md
10
README.md
|
@ -19,8 +19,8 @@ To get a first impression, you're welcome to play with our public demo at [demo.
|
|||
|
||||
## Features ##
|
||||
|
||||
* Browse all your photos and videos without worrying about duplicates, RAW images or video codecs
|
||||
* Powerful [search filters](https://demo.photoprism.org/browse?q=mono%3Atrue%20quality%3A3%20photo%3Atrue) make finding the right picture a walk in the park
|
||||
* Browse all your photos and videos without worrying about RAW conversion, duplicates or video formats
|
||||
* Powerful [search filters](https://demo.photoprism.org/browse?q=mono%3Atrue%20quality%3A3%20photo%3Atrue) make it easy to find the right pictures
|
||||
* Since the [user interface](https://demo.photoprism.org/) is a [Progressive Web App](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps),
|
||||
it provides a native app-like experience, and you can easily install it on the home screen of all major operating systems and mobile devices
|
||||
* Includes four high-resolution [world maps](https://demo.photoprism.org/places) to see where you've been and for rediscovering long-forgotten shots
|
||||
|
@ -29,9 +29,9 @@ To get a first impression, you're welcome to play with our public demo at [demo.
|
|||
* AI-powered [image classification](https://demo.photoprism.org/labels)
|
||||
based on Google TensorFlow
|
||||
* Metadata is extracted and merged from Exif, XMP, and proprietary formats such as Google Photos JSON
|
||||
* Image properties like colors, chroma, luminance, quality, panoramic projection, and location type are automatically detected when you update the index or import files
|
||||
* Use [PhotoSync](https://www.photosync-app.com/) to securely backup iOS and Android mobile devices in the background
|
||||
* WebDAV clients such as Microsoft's Windows Explorer and Apple's Finder can [connect](https://docs.photoprism.org/user-guide/sync/webdav/) directly to PhotoPrism, allowing you to open, edit, and delete files from your computer or phone as if they were local
|
||||
* Image properties like colors, chroma, luminance, quality, and location are automatically detected when you update the index or import files
|
||||
* Use [PhotoSync](https://www.photosync-app.com/) to securely backup iOS and Android phones in the background
|
||||
* WebDAV clients such as Microsoft's Windows Explorer and Apple's Finder can [connect](https://docs.photoprism.org/user-guide/sync/webdav/) directly to PhotoPrism, allowing you to open, edit, and delete files from your computer as if they were local
|
||||
|
||||
## Getting Started ##
|
||||
|
||||
|
|
905
frontend/package-lock.json
generated
905
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -301,6 +301,101 @@ body.dark-theme #photoprism .v-tabs .v-badge__badge {
|
|||
background: transparent;
|
||||
}
|
||||
|
||||
/* Midnight Theme */
|
||||
|
||||
.theme-midnight .v-content__wrap,
|
||||
.theme-midnight .p-page,
|
||||
.theme-midnight .form,
|
||||
.theme-midnight .v-content {
|
||||
background: #212121 !important;
|
||||
}
|
||||
|
||||
#photoprism.theme-midnight .theme--light.v-small-dialog__content,
|
||||
#photoprism.theme-midnight .theme--light.v-sheet,
|
||||
#photoprism.theme-midnight .theme--light.v-card {
|
||||
background: #212121;
|
||||
}
|
||||
|
||||
.theme-midnight .application.theme--light {
|
||||
background: #212121;
|
||||
}
|
||||
|
||||
#photoprism.theme-midnight .theme--light .v-table {
|
||||
background: #262626;
|
||||
}
|
||||
|
||||
#photoprism.theme-midnight .theme--light.v-table thead th,
|
||||
#photoprism.theme-midnight .theme--light.v-table tbody td {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#photoprism.theme-midnight .theme--light.v-table tbody tr:hover {
|
||||
background: #333333;
|
||||
}
|
||||
|
||||
#photoprism.theme-midnight .theme--light.v-chip,
|
||||
#photoprism.theme-midnight .v-card__actions .theme--light.v-text-field--solo>.v-input__control>.v-input__slot {
|
||||
background: #333;
|
||||
}
|
||||
|
||||
#photoprism.theme-midnight .theme--light.v-text-field--solo>.v-input__control>.v-input__slot {
|
||||
background: #262626;
|
||||
}
|
||||
|
||||
#photoprism.theme-midnight .theme--light.v-input--selection-controls.v-input--is-disabled .v-icon {
|
||||
color: #999 !important;
|
||||
}
|
||||
|
||||
#photoprism.theme-midnight .theme--light.v-input--selection-controls.v-input--is-disabled .v-icon,
|
||||
#photoprism.theme-midnight .theme--light.v-input--is-disabled .v-label,
|
||||
#photoprism.theme-midnight .theme--light.v-input--is-disabled input,
|
||||
#photoprism.theme-midnight .theme--light.v-input--is-disabled textarea {
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
#photoprism.theme-midnight,
|
||||
#photoprism.theme-midnight .p-page a,
|
||||
#photoprism.theme-midnight .v-datatable a,
|
||||
#photoprism.theme-midnight .theme--light.v-expansion-panel .v-expansion-panel__container,
|
||||
#photoprism.theme-midnight .theme--light.v-tabs__bar .v-tabs__div,
|
||||
#photoprism.theme-midnight .theme--light {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#photoprism.theme-midnight .theme--light.v-list {
|
||||
background: #262626;
|
||||
}
|
||||
|
||||
#photoprism.theme-midnight a.text-link {
|
||||
color: #c8e3e7 !important;
|
||||
}
|
||||
|
||||
#photoprism.theme-midnight .theme--light.v-select .v-select__selections {
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
#photoprism.theme-midnight .theme--light.v-list .v-list__tile__sub-title,
|
||||
#photoprism.theme-midnight .accent--text {
|
||||
color: #919bd4 !important;
|
||||
}
|
||||
|
||||
#photoprism.theme-midnight .theme--light.v-input:not(.v-input--is-disabled) input,
|
||||
#photoprism.theme-theri .theme--light.v-input:not(.v-input--is-disabled) textarea {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#photoprism.theme-midnight .theme--light.v-btn.v-btn--disabled,
|
||||
#photoprism.theme-midnight .theme--light.v-btn.v-btn--disabled .v-btn__loading,
|
||||
#photoprism.theme-midnight .theme--light.v-btn.v-btn--disabled .v-icon {
|
||||
color: #999 !important;
|
||||
}
|
||||
|
||||
#photoprism.theme-midnight .theme--light.v-list .v-list__tile__mask {
|
||||
color: #cccccc;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
|
||||
/* Exceptions */
|
||||
|
||||
#photoprism .theme--light.v-text-field--solo.background-inherit>.v-input__control>.v-input__slot {
|
||||
|
|
Binary file not shown.
|
@ -93,11 +93,11 @@ msgstr "Pridať súbory do vašej knižnice pomocou Web Upload."
|
|||
|
||||
#: src/dialog/share.vue:92
|
||||
msgid "Add Link"
|
||||
msgstr "Pridať link"
|
||||
msgstr "Pridať odkaz"
|
||||
|
||||
#: src/pages/albums.vue:96
|
||||
msgid "Add pictures from search results by selecting them."
|
||||
msgstr "Pridanie obrázkov z výsledkov vyhľadávania ich výberom."
|
||||
msgstr "Pridanie fotiek z výsledkov vyhľadávania ich výberom."
|
||||
|
||||
#: src/dialog/account/add.vue:6 src/pages/settings/sync.vue:46
|
||||
msgid "Add Server"
|
||||
|
@ -111,7 +111,7 @@ msgstr "Pridať do albumu"
|
|||
|
||||
#: src/dialog/photo/files.vue:157 src/dialog/photo/files.vue:154
|
||||
msgid "Added"
|
||||
msgstr "Pridaný"
|
||||
msgstr "Pridané"
|
||||
|
||||
#: src/pages/settings.vue:52
|
||||
msgid "Advanced"
|
||||
|
@ -173,7 +173,7 @@ msgstr "Albumy odstránené"
|
|||
|
||||
#: src/pages/albums.vue:257 src/share/albums.vue:215
|
||||
msgid "All %{n} albums loaded"
|
||||
msgstr "Všetkých %{n} bolo načítaných"
|
||||
msgstr "Všetkých %{n} albumov bolo načítaných"
|
||||
|
||||
#: src/pages/labels.vue:246
|
||||
msgid "All %{n} labels loaded"
|
||||
|
@ -181,16 +181,16 @@ msgstr "Všetkých %{n} štítkov načítaných"
|
|||
|
||||
#: src/pages/people/subjects.vue:335
|
||||
msgid "All %{n} people loaded"
|
||||
msgstr "Všetci %{n} ľudia načítaní"
|
||||
msgstr "Všetkých %{n} ľudí načítaných"
|
||||
|
||||
#: src/component/album/toolbar.vue:17 src/component/photo/toolbar.vue:21
|
||||
msgid "All Cameras"
|
||||
msgstr "Všetky Kamery"
|
||||
msgstr "Všetky kamery"
|
||||
|
||||
#: src/component/photo/toolbar.vue:24 src/pages/albums.vue:23
|
||||
#: src/pages/albums.vue:447 src/share/albums.vue:23 src/share/albums.vue:405
|
||||
msgid "All Categories"
|
||||
msgstr "Všetky Kategórie"
|
||||
msgstr "Všetky kategórie"
|
||||
|
||||
#: src/component/photo/toolbar.vue:23
|
||||
msgid "All Colors"
|
||||
|
@ -277,27 +277,27 @@ msgstr "Archivované"
|
|||
|
||||
#: src/dialog/photo/archive.vue:10
|
||||
msgid "Are you sure you want to archive the selection?"
|
||||
msgstr "Ste si istý že chcete archivovať výber?"
|
||||
msgstr "Ste si istý, že chcete archivovať výber?"
|
||||
|
||||
#: src/dialog/album/delete.vue:10
|
||||
msgid "Are you sure you want to delete these albums?"
|
||||
msgstr "Ste si istý že chcete vymazať tieto albumy?"
|
||||
msgstr "Ste si istý, že chcete vymazať tieto albumy?"
|
||||
|
||||
#: src/dialog/label/delete.vue:10
|
||||
msgid "Are you sure you want to delete these labels?"
|
||||
msgstr "Ste si istý že chcete vymazať tieto štítky?"
|
||||
msgstr "Ste si istý, že chcete vymazať tieto štítky?"
|
||||
|
||||
#: src/dialog/account/remove.vue:10
|
||||
msgid "Are you sure you want to delete this account?"
|
||||
msgstr "Ste si istý že chcete vymazať tento účet?"
|
||||
msgstr "Ste si istý, že chcete vymazať tento účet?"
|
||||
|
||||
#: src/dialog/photo/delete.vue:10
|
||||
msgid "Are you sure you want to permanently delete these pictures?"
|
||||
msgstr "Ste si istí, že chcete tieto obrázky natrvalo odstrániť?"
|
||||
msgstr "Ste si istý, že chcete tieto obrázky natrvalo odstrániť?"
|
||||
|
||||
#: src/dialog/file/delete.vue:10
|
||||
msgid "Are you sure you want to permanently delete this file?"
|
||||
msgstr "Ste si istý že chcete permanentne vymazať tento účet?"
|
||||
msgstr "Ste si istý že chcete permanentne vymazať tento súbor?"
|
||||
|
||||
#: src/dialog/photo/details.vue:506
|
||||
msgid "Artist"
|
||||
|
@ -361,11 +361,11 @@ msgstr "Prehliadať indexované súbory a zložky v Knižnici."
|
|||
|
||||
#: src/options/options.js:349
|
||||
msgid "Bug Report"
|
||||
msgstr "Nahlásenie chyby"
|
||||
msgstr "Nahlásiť chybu"
|
||||
|
||||
#: src/common/notify.js:99
|
||||
msgid "Busy, please wait…"
|
||||
msgstr "Zaneprázdnený, prosím čakajte..."
|
||||
msgstr "Som zaneprázdnený, prosím čakajte..."
|
||||
|
||||
#: src/component/navigation.vue:215 src/component/navigation.vue:835
|
||||
#: src/routes.js:147 src/routes.js:154
|
||||
|
@ -467,7 +467,7 @@ msgstr "Kompletné preskenovanie"
|
|||
|
||||
#: src/dialog/photo/labels.vue:19
|
||||
msgid "Confidence"
|
||||
msgstr "Dôvera"
|
||||
msgstr "Zhoda"
|
||||
|
||||
#: src/dialog/account/add.vue:16
|
||||
msgid "Connect"
|
||||
|
@ -501,7 +501,7 @@ msgstr "Konvertuje sa"
|
|||
|
||||
#: src/dialog/share.vue:55 src/dialog/webdav.vue:36
|
||||
msgid "Copied to clipboard"
|
||||
msgstr "Skopírované"
|
||||
msgstr "Skopírované do schránky"
|
||||
|
||||
#: src/dialog/photo/details.vue:529
|
||||
msgid "Copyright"
|
||||
|
@ -556,7 +556,6 @@ msgid "Daily"
|
|||
msgstr "Denne"
|
||||
|
||||
#: src/options/options.js:95
|
||||
#| msgid "Spanish"
|
||||
msgid "Danish"
|
||||
msgstr "Dánčina"
|
||||
|
||||
|
@ -610,7 +609,7 @@ msgstr "Posledná Záloha"
|
|||
|
||||
#: src/pages/settings/advanced.vue:166
|
||||
msgid "Disable built-in WebDAV server. Requires a restart."
|
||||
msgstr "Zakáže vstavaný server WebDAV. Vyžaduje sa reštart."
|
||||
msgstr "Zakázať vstavaný server WebDAV. Vyžaduje reštart."
|
||||
|
||||
#: src/pages/settings/advanced.vue:484
|
||||
msgid "Disable Darktable"
|
||||
|
@ -626,7 +625,7 @@ msgstr "Zakázanie aplikácie FFmpeg"
|
|||
|
||||
#: src/pages/settings/advanced.vue:187
|
||||
msgid "Disable Places"
|
||||
msgstr "Vypnuté"
|
||||
msgstr "Zakázať miesta"
|
||||
|
||||
#: src/pages/settings/advanced.vue:505
|
||||
msgid "Disable RawTherapee"
|
||||
|
@ -638,11 +637,11 @@ msgstr "Zakázať TensorFlow"
|
|||
|
||||
#: src/pages/settings/advanced.vue:165
|
||||
msgid "Disable WebDAV"
|
||||
msgstr "Vypnuté"
|
||||
msgstr "Zakázať WebDAV"
|
||||
|
||||
#: src/dialog/account/edit.vue:67 src/dialog/account/edit.vue:112
|
||||
msgid "Disabled"
|
||||
msgstr "Vypnuté"
|
||||
msgstr "Zakázané"
|
||||
|
||||
#: src/pages/settings/advanced.vue:188
|
||||
msgid "Disables reverse geocoding and maps."
|
||||
|
@ -654,32 +653,32 @@ msgstr "Objaviť"
|
|||
|
||||
#: src/pages/settings/advanced.vue:144
|
||||
msgid "Don't backup photo and album metadata to YAML files."
|
||||
msgstr "Nezálohujte metadáta fotografií a albumov do súborov YAML."
|
||||
msgstr "Nezálohovať metadáta fotografií a albumov do súborov YAML."
|
||||
|
||||
#: src/pages/settings/advanced.vue:210
|
||||
msgid "Don't create ExifTool JSON files for improved metadata extraction."
|
||||
msgstr "Nevytvárajte súbory ExifTool JSON pre vylepšenú extrakciu metadát."
|
||||
msgstr "Nevytvárať súbory ExifTool JSON pre vylepšenú extrakciu metadát."
|
||||
|
||||
#: src/pages/settings/advanced.vue:100
|
||||
msgid "Don't modify originals folder. Disables import, upload, and delete."
|
||||
msgstr ""
|
||||
"Neupravujte priečinok s originálmi. Zakáže import, nahrávanie a mazanie."
|
||||
"Neupravovať priečinok s originálmi. Zakáže import, nahrávanie a mazanie."
|
||||
|
||||
#: src/pages/settings/advanced.vue:527
|
||||
msgid "Don't transcode videos with FFmpeg."
|
||||
msgstr "Neprekladajte videá pomocou programu FFmpeg."
|
||||
msgstr "Netranskódvať videá pomocou programu FFmpeg."
|
||||
|
||||
#: src/pages/settings/advanced.vue:485
|
||||
msgid "Don't use Darktable to convert RAW files."
|
||||
msgstr "Na konverziu súborov RAW nepoužívajte program Darktable."
|
||||
msgstr "Nepoužívať Darktable pre konvertovanie RAW súborov."
|
||||
|
||||
#: src/pages/settings/advanced.vue:506
|
||||
msgid "Don't use RawTherapee to convert RAW files."
|
||||
msgstr "Nepoužívajte RawTherapee na konverziu súborov RAW."
|
||||
msgstr "Nepoužívať RawTherapee na konverziu súborov RAW."
|
||||
|
||||
#: src/pages/settings/advanced.vue:232
|
||||
msgid "Don't use TensorFlow for image classification."
|
||||
msgstr "Prehliadať a upravovať triediace štítky fotiek."
|
||||
msgstr "Nepoužívať TensorFlow pre triedenie fotografií"
|
||||
|
||||
#: src/options/options.js:350
|
||||
msgid "Donations"
|
||||
|
@ -705,7 +704,7 @@ msgstr "Stiahnuť"
|
|||
|
||||
#: src/dialog/account/edit.vue:321
|
||||
msgid "Download remote files"
|
||||
msgstr "Stiahnuť ovládané súbory"
|
||||
msgstr "Stiahnuť vzdialené súbory"
|
||||
|
||||
#: src/pages/settings/general.vue:163
|
||||
msgid "Download single files and zip archives."
|
||||
|
@ -724,7 +723,7 @@ msgstr "Sťahovanie..."
|
|||
|
||||
#: src/pages/settings/advanced.vue:282
|
||||
msgid "Downscaling Filter"
|
||||
msgstr "Filter Kvality"
|
||||
msgstr "Filter znižovania kvality"
|
||||
|
||||
#: src/pages/library/files.vue:37
|
||||
msgid "Duplicates will be skipped and only appear once."
|
||||
|
@ -736,19 +735,19 @@ msgstr "Holandsky"
|
|||
|
||||
#: src/pages/settings/advanced.vue:305
|
||||
msgid "Dynamic Previews"
|
||||
msgstr "Neuložené ukážky"
|
||||
msgstr "Dynamické Ukážky"
|
||||
|
||||
#: src/pages/settings/advanced.vue:306
|
||||
msgid ""
|
||||
"Dynamic rendering requires a powerful server. It is not recommended for NAS "
|
||||
"devices."
|
||||
msgstr ""
|
||||
"Vykresľovanie na požiadanie vyžaduje výkonný procesor a nedoporučuje sa pre "
|
||||
"menšie domáce servery alebo zariadenia NAS."
|
||||
"Dynamické vykresľovanie vyžaduje výkonný server. Neodporúčame používať na "
|
||||
"NAS zariadeniach."
|
||||
|
||||
#: src/pages/settings/advanced.vue:348
|
||||
msgid "Dynamic Size Limit: %{n}px"
|
||||
msgstr "Limit veľkosti bez medzipamäte: %{n} px"
|
||||
msgstr "Limit dynamickej pamäte: %{n} px"
|
||||
|
||||
#: src/pages/about/feedback.vue:167
|
||||
msgid "E-Mail"
|
||||
|
@ -766,7 +765,7 @@ msgstr "Upraviť %{name}"
|
|||
|
||||
#: src/dialog/account/edit.vue:141
|
||||
msgid "Edit Account"
|
||||
msgstr "Upraviť Účet"
|
||||
msgstr "Upraviť učet"
|
||||
|
||||
#: src/dialog/photo/edit.vue:45
|
||||
msgid "Edit Photo"
|
||||
|
@ -778,7 +777,7 @@ msgstr "Upravené"
|
|||
|
||||
#: src/pages/settings/advanced.vue:122
|
||||
msgid "Enable new features currently under development."
|
||||
msgstr "Povoľte nové funkcie, ktoré sú momentálne vo vývoji."
|
||||
msgstr "Povoliť nové funkcie, ktoré sú momentálne vo vývoji."
|
||||
|
||||
#: src/dialog/account/edit.vue:67 src/dialog/account/edit.vue:112
|
||||
msgid "Enabled"
|
||||
|
@ -798,11 +797,11 @@ msgstr "Chyby"
|
|||
|
||||
#: src/pages/settings/library.vue:72
|
||||
msgid "Estimate the approximate location of pictures without coordinates."
|
||||
msgstr "Odhad približnej polohy obrázkov bez súradníc."
|
||||
msgstr "Odhadnúť približnú polohu fotiek bez súradníc."
|
||||
|
||||
#: src/pages/settings/library.vue:71
|
||||
msgid "Estimates"
|
||||
msgstr "Odhady"
|
||||
msgstr "Odhaduje sa"
|
||||
|
||||
#: src/options/options.js:311
|
||||
msgid "Every two days"
|
||||
|
@ -821,7 +820,6 @@ msgid "Exclude hidden"
|
|||
msgstr "Vylúčiť skryté"
|
||||
|
||||
#: src/component/navigation.vue:252
|
||||
#| msgid "Expand Search"
|
||||
msgid "Expand"
|
||||
msgstr "Rozbaliť"
|
||||
|
||||
|
@ -847,7 +845,7 @@ msgstr "F Číslo"
|
|||
|
||||
#: src/model/face.js:159
|
||||
msgid "Face"
|
||||
msgstr "Tvar"
|
||||
msgstr "Tvár"
|
||||
|
||||
#: src/dialog/photo/info.vue:73
|
||||
msgid "Faces"
|
||||
|
@ -859,11 +857,11 @@ msgstr "Zlyhalo kopírovanie do schránky"
|
|||
|
||||
#: src/dialog/share.vue:90
|
||||
msgid "Failed removing link"
|
||||
msgstr "Zlyhalo odstraňovanie linku"
|
||||
msgstr "Zlyhalo odstraňovanie odkazu"
|
||||
|
||||
#: src/dialog/share.vue:78
|
||||
msgid "Failed updating link"
|
||||
msgstr "Zlyhalo aktualizovanie linku"
|
||||
msgstr "Zlyhalo aktualizovanie odkazu"
|
||||
|
||||
#: src/dialog/upload.vue:159
|
||||
msgid "Failure while importing uploaded files"
|
||||
|
@ -956,7 +954,7 @@ msgstr "Zlatá"
|
|||
|
||||
#: src/options/options.js:199
|
||||
msgid "Grayscale"
|
||||
msgstr "Stupne šedej"
|
||||
msgstr "Stupne sivej"
|
||||
|
||||
#: src/options/options.js:335
|
||||
msgid "Green"
|
||||
|
@ -1077,7 +1075,7 @@ msgid ""
|
|||
"In case pictures you expect are missing, please rescan your library and wait "
|
||||
"until indexing has been completed."
|
||||
msgstr ""
|
||||
"V prípade, že očakávané obrázky chýbajú, preskenujte svoju knižnicu znova a "
|
||||
"V prípade, že niektoré fotky chýbajú, znova preskenujte svoju knižnicu a "
|
||||
"počkajte, kým sa indexovanie neukončí."
|
||||
|
||||
#: src/pages/library.vue:32 src/pages/settings/library.vue:6
|
||||
|
@ -1130,7 +1128,7 @@ msgstr "Limit veľkosti JPEG: %{n} px"
|
|||
|
||||
#: src/pages/library/import.vue:26
|
||||
msgid "JPEGs and thumbnails are automatically rendered as needed."
|
||||
msgstr "JPEG a náhľady sú automaticky zobrazené podľa potreby."
|
||||
msgstr "JPEG a náhľady sú automaticky vykreslené podľa potreby."
|
||||
|
||||
#: src/dialog/photo/details.vue:598
|
||||
msgid "Keywords"
|
||||
|
@ -1185,8 +1183,7 @@ msgstr "Objektív"
|
|||
|
||||
#: src/pages/about/about.vue:37
|
||||
msgid "Let us know when we mistakenly label an idea as unfunded."
|
||||
msgstr ""
|
||||
"Dajte nám vedieť, keď nejakú myšlienku omylom označíme za nefinancovanú."
|
||||
msgstr "Dajte nám vedieť, ak nejaký nápad označíme ako nefinancovaný."
|
||||
|
||||
#: src/component/navigation.vue:301 src/component/navigation.vue:311
|
||||
#: src/component/navigation.vue:4 src/component/navigation.vue:1135
|
||||
|
@ -1210,15 +1207,15 @@ msgstr "Limetka"
|
|||
|
||||
#: src/pages/library/files.vue:307
|
||||
msgid "Limit reached, showing first %{n} files"
|
||||
msgstr "Limit dosiahnutý, zobrazovanie prvých %{n} súborov"
|
||||
msgstr "Limit bol dosiahnutý, zobrazovanie prvých %{n} súborov"
|
||||
|
||||
#: src/options/options.js:358
|
||||
msgid "Linear: Very Smooth, Best Performance"
|
||||
msgstr "Lineárne: veľmi hladké, najlepší výkon"
|
||||
msgstr "Lineárne: Veľmi hladké, Najlepší výkon"
|
||||
|
||||
#: src/model/link.js:120
|
||||
msgid "Link"
|
||||
msgstr "Link"
|
||||
msgstr "Odkaz"
|
||||
|
||||
#: src/component/album/toolbar.vue:33 src/component/photo/toolbar.vue:32
|
||||
msgid "List"
|
||||
|
@ -1255,12 +1252,12 @@ msgstr ""
|
|||
|
||||
#: src/component/navigation.vue:401 src/component/navigation.vue:1471
|
||||
msgid "Login"
|
||||
msgstr "Prihlásiť"
|
||||
msgstr "Prihlásiť sa"
|
||||
|
||||
#: src/component/navigation.vue:448 src/component/navigation.vue:1581
|
||||
#: src/component/navigation.vue:1612
|
||||
msgid "Logout"
|
||||
msgstr "Odhlásiť"
|
||||
msgstr "Odhlásiť sa"
|
||||
|
||||
#: src/pages/library.vue:55 src/pages/settings/general.vue:426
|
||||
msgid "Logs"
|
||||
|
@ -1330,7 +1327,7 @@ msgstr "Mesačný svit"
|
|||
#: src/pages/album/photos.vue:343 src/pages/photos.vue:381
|
||||
#: src/share/photos.vue:358
|
||||
msgid "More than %{n} pictures found"
|
||||
msgstr "Nájdených viac ako %{n} obrázkov"
|
||||
msgstr "Našlo sa viac ako %{n} obrázkov"
|
||||
|
||||
#: src/pages/albums.vue:345 src/share/albums.vue:303
|
||||
msgid "More than 20 albums found"
|
||||
|
@ -1342,7 +1339,7 @@ msgstr "Našlo sa viac ako 20 štítkov"
|
|||
|
||||
#: src/pages/people/subjects.vue:435
|
||||
msgid "More than 20 people found"
|
||||
msgstr "Viac ako 20 ľudí našlo"
|
||||
msgstr "Našlo sa viac ako 20 ľudí"
|
||||
|
||||
#: src/component/album/toolbar.vue:31 src/component/photo/toolbar.vue:30
|
||||
msgid "Mosaic"
|
||||
|
@ -1376,7 +1373,7 @@ msgstr "Meno"
|
|||
#: src/pages/labels.vue:38 src/pages/library/files.vue:40
|
||||
#: src/pages/people/faces.vue:42 src/pages/people/subjects.vue:40
|
||||
msgid "Name too long"
|
||||
msgstr "Príliš dlhé meno"
|
||||
msgstr "Meno je príliš dlhé"
|
||||
|
||||
#: src/options/options.js:306 src/options/options.js:316
|
||||
#: src/pages/settings/sync.vue:50
|
||||
|
@ -1416,9 +1413,8 @@ msgstr "Nenašli sa žiadne štítky"
|
|||
#: src/dialog/photo/people.vue:5 src/pages/people/faces.vue:30
|
||||
#: src/pages/people/faces.vue:278 src/pages/people/faces.vue:364
|
||||
#: src/pages/people/subjects.vue:33 src/pages/people/subjects.vue:428
|
||||
#| msgid "No photos found"
|
||||
msgid "No people found"
|
||||
msgstr "Neboli nájdené žiadny členovia"
|
||||
msgstr "Neboli nájdené žiadny ľudia"
|
||||
|
||||
#: src/component/photo/cards.vue:7 src/component/photo/list.vue:8
|
||||
#: src/component/photo/mosaic.vue:7 src/pages/album/photos.vue:336
|
||||
|
@ -1427,13 +1423,13 @@ msgstr "Neboli nájdené žiadny členovia"
|
|||
#: src/share/photo/cards.vue:7 src/share/photo/list.vue:8
|
||||
#: src/share/photo/mosaic.vue:7 src/share/photos.vue:351
|
||||
msgid "No pictures found"
|
||||
msgstr "Nenašli sa žiadne obrázky"
|
||||
msgstr "Nenašli sa žiadne fotky"
|
||||
|
||||
#: src/component/photo/cards.vue:4 src/component/photo/list.vue:5
|
||||
#: src/component/photo/mosaic.vue:4 src/share/photo/cards.vue:4
|
||||
#: src/share/photo/list.vue:5 src/share/photo/mosaic.vue:4
|
||||
msgid "No recently edited pictures"
|
||||
msgstr "Žiadne nedávno upravené obrázky"
|
||||
msgstr "Žiadne nedávno upravené fotky"
|
||||
|
||||
#: src/pages/settings/sync.vue:47
|
||||
msgid "No servers configured."
|
||||
|
@ -1479,8 +1475,8 @@ msgstr "Nebolo Nájdené"
|
|||
msgid ""
|
||||
"Note you may manually manage your originals folder and importing is optional."
|
||||
msgstr ""
|
||||
"Upozorňujeme, že priečinok s originálmi môžete spravovať ručne a import je "
|
||||
"voliteľný."
|
||||
"Upozorňujeme, že priečinok s originálmi by ste mali spravovať ručne a import "
|
||||
"je voliteľný."
|
||||
|
||||
#: src/pages/settings/sync.vue:34
|
||||
msgid "Note:"
|
||||
|
@ -1492,7 +1488,7 @@ msgid ""
|
|||
"as remote service for backup and file upload."
|
||||
msgstr ""
|
||||
"Poznámka: Iba WebDAV servery, ako napríklad Nextcloud alebo PhotoPrism, môžu "
|
||||
"byť nakonfigurované ako ovládané služby pre zálohu a odovzdávanie súborov."
|
||||
"byť nakonfigurované ako vzdialené služby pre zálohu a odovzdávanie súborov."
|
||||
|
||||
#: src/pages/settings/account.vue:20
|
||||
msgid ""
|
||||
|
@ -1526,29 +1522,29 @@ msgstr "Raz za týždeň"
|
|||
|
||||
#: src/pages/albums.vue:340 src/share/albums.vue:298
|
||||
msgid "One album found"
|
||||
msgstr "Jeden album nájdený"
|
||||
msgstr "Našiel sa jeden album"
|
||||
|
||||
#: src/pages/library/files.vue:299
|
||||
msgid "One file found"
|
||||
msgstr "Jeden súbor nájdený"
|
||||
msgstr "Našiel sa jeden súbor"
|
||||
|
||||
#: src/pages/library/files.vue:301
|
||||
msgid "One folder found"
|
||||
msgstr "Jedna zložka nájdená"
|
||||
msgstr "Našla sa jedna zložka"
|
||||
|
||||
#: src/pages/labels.vue:337
|
||||
msgid "One label found"
|
||||
msgstr "Jeden štítok sa našiel"
|
||||
msgstr "Našiel sa jeden štítok"
|
||||
|
||||
#: src/pages/people/faces.vue:280 src/pages/people/faces.vue:366
|
||||
#: src/pages/people/subjects.vue:430
|
||||
msgid "One person found"
|
||||
msgstr "Jedna osoba našla"
|
||||
msgstr "Našla sa jedna osoba"
|
||||
|
||||
#: src/pages/album/photos.vue:338 src/pages/photos.vue:376
|
||||
#: src/share/photos.vue:353
|
||||
msgid "One picture found"
|
||||
msgstr "Jeden nájdený obrázok"
|
||||
msgstr "Našla sa jedna fotka"
|
||||
|
||||
#: src/options/options.js:219
|
||||
msgid "Onyx"
|
||||
|
@ -1563,7 +1559,6 @@ msgid "Orange"
|
|||
msgstr "Oranžová"
|
||||
|
||||
#: src/dialog/photo/files.vue:129 src/dialog/photo/files.vue:126
|
||||
#| msgid "Animation"
|
||||
msgid "Orientation"
|
||||
msgstr "Orientácie"
|
||||
|
||||
|
@ -1627,7 +1622,7 @@ msgstr "Ľudia"
|
|||
|
||||
#: src/dialog/share.vue:72
|
||||
msgid "People you share a link with will be able to view public contents."
|
||||
msgstr "Ľudia s ktorými zdieľate link, budú vidieť verejný obsah."
|
||||
msgstr "Ľudia s ktorými zdieľate odkaz, budú vidieť verejný obsah."
|
||||
|
||||
#: src/component/photo/clipboard.vue:67
|
||||
msgid "Permanently deleted"
|
||||
|
@ -1635,7 +1630,7 @@ msgstr "Trvalo vymazané"
|
|||
|
||||
#: src/pages/settings/general.vue:207
|
||||
msgid "Permanently remove files to free up storage."
|
||||
msgstr "Trvalé odstránenie súborov na uvoľnenie úložiska."
|
||||
msgstr "Trvalo odstráňte súbory aby ste uvoľnili miesto."
|
||||
|
||||
#: src/model/photo.js:852
|
||||
msgid "Photo"
|
||||
|
@ -1679,7 +1674,7 @@ msgstr "Prehrať"
|
|||
|
||||
#: src/pages/settings/account.vue:105
|
||||
msgid "Please confirm your new password."
|
||||
msgstr "Prosím overte vaše nové heslo."
|
||||
msgstr "Prosím potvrďte vaše nové heslo."
|
||||
|
||||
#: src/dialog/sponsor.vue:24
|
||||
msgid ""
|
||||
|
@ -1771,11 +1766,11 @@ msgstr "Raw"
|
|||
#: src/component/photo/cards.vue:205 src/component/photo/mosaic.vue:180
|
||||
#: src/share/photo/cards.vue:178 src/share/photo/mosaic.vue:161
|
||||
msgid "RAW"
|
||||
msgstr "Raw"
|
||||
msgstr "RAW"
|
||||
|
||||
#: src/pages/settings/advanced.vue:96
|
||||
msgid "RAW Conversion"
|
||||
msgstr "Konvertuje sa"
|
||||
msgstr "Konverzia súborov RAW"
|
||||
|
||||
#: src/pages/library/index.vue:124
|
||||
msgid "Re-index all originals, including already indexed and unchanged files."
|
||||
|
@ -1804,7 +1799,7 @@ msgstr "Rozpoznávanie sa začne po dokončení indexovania."
|
|||
|
||||
#: src/pages/people.vue:17
|
||||
msgid "Recognized"
|
||||
msgstr "Uznávané"
|
||||
msgstr "Rozpoznané"
|
||||
|
||||
#: src/pages/settings/general.vue:339
|
||||
msgid "Recognizes faces so that specific people can be found."
|
||||
|
@ -1828,7 +1823,7 @@ msgstr "Znovu načítavanie..."
|
|||
|
||||
#: src/dialog/account/edit.vue:97
|
||||
msgid "Remote Sync"
|
||||
msgstr "Ovládaná Synchronizácia"
|
||||
msgstr "Vzdialená Synchronizácia"
|
||||
|
||||
#: src/dialog/photo/people.vue:108
|
||||
msgid "Remove"
|
||||
|
@ -1934,7 +1929,7 @@ msgstr "Vybrať"
|
|||
|
||||
#: src/dialog/upload.vue:139
|
||||
msgid "Select albums or create a new one"
|
||||
msgstr "Označte album alebo vytvorte nový"
|
||||
msgstr "Označte albumy alebo vytvorte nové"
|
||||
|
||||
#: src/component/photo/clipboard.vue:39
|
||||
msgid "Selection approved"
|
||||
|
@ -1984,7 +1979,7 @@ msgstr "Prvotné nastavenie"
|
|||
|
||||
#: src/options/options.js:234
|
||||
msgid "Shadow"
|
||||
msgstr "Bez tieňa"
|
||||
msgstr "Tieň"
|
||||
|
||||
#: src/component/album/clipboard.vue:70 src/component/album/toolbar.vue:88
|
||||
#: src/component/photo/clipboard.vue:77 src/pages/settings/general.vue:250
|
||||
|
@ -2033,16 +2028,15 @@ msgstr "Zobrazí podrobnejšie správy denníka. Vyžaduje reštart."
|
|||
|
||||
#: src/model/file.js:185
|
||||
msgid "Sidecar"
|
||||
msgstr "Pripojenie"
|
||||
msgstr "Pripojený súbor (sidecar)"
|
||||
|
||||
#: src/pages/login.vue:19
|
||||
msgid "Sign in"
|
||||
msgstr "Registrácia"
|
||||
msgstr "Prihlásiť sa"
|
||||
|
||||
#: src/dialog/sponsor.vue:39
|
||||
#| msgid "Sign in"
|
||||
msgid "Sign Up"
|
||||
msgstr "Registrácia"
|
||||
msgstr "Registrovať sa"
|
||||
|
||||
#: src/pages/discover.vue:8
|
||||
msgid "Similar"
|
||||
|
@ -2080,14 +2074,13 @@ msgstr "Španielsky"
|
|||
|
||||
#: src/component/photo/cards.vue:235 src/component/photo/mosaic.vue:210
|
||||
#: src/share/photo/cards.vue:208 src/share/photo/mosaic.vue:191
|
||||
#| msgid "Stacks"
|
||||
msgid "Stack"
|
||||
msgstr "Zásobník"
|
||||
msgstr "Naskladané fotky"
|
||||
|
||||
#: src/pages/settings/library.vue:195
|
||||
msgid "Stack files sharing the same unique image or instance identifier."
|
||||
msgstr ""
|
||||
"Skladať súbory zdieľajúce rovnaký jedinečný obrázok alebo identifikátor "
|
||||
"Naskladané súbory zdieľajúce rovnaký jedinečný obrázok alebo identifikátor "
|
||||
"inštancie."
|
||||
|
||||
#: src/pages/settings/library.vue:174
|
||||
|
@ -2095,23 +2088,23 @@ msgid ""
|
|||
"Stack pictures taken at the exact same time and location based on their "
|
||||
"metadata."
|
||||
msgstr ""
|
||||
"Skladajte obrázky nasnímané v rovnakom čase a na rovnakom mieste na základe "
|
||||
"Naskladané fotky nasnímané v rovnakom čase a na rovnakom mieste na základe "
|
||||
"ich metadát."
|
||||
|
||||
#: src/dialog/photo/info.vue:86
|
||||
msgid "Stackable"
|
||||
msgstr "Stohovateľné"
|
||||
msgstr "Naskladateľné"
|
||||
|
||||
#: src/component/navigation.vue:92 src/pages/settings/library.vue:34
|
||||
msgid "Stacks"
|
||||
msgstr "Postupnosť"
|
||||
msgstr "Naskladané"
|
||||
|
||||
#: src/pages/settings/library.vue:140
|
||||
msgid ""
|
||||
"Stacks group files with a similar frame of reference, but differences of "
|
||||
"quality, format, size or color."
|
||||
msgstr ""
|
||||
"Skladá skupinové súbory s podobným referenčným rámcom, ale s rozdielmi v "
|
||||
"Naskladá skupinové súbory s podobným referenčným rámcom, ale s rozdielmi v "
|
||||
"kvalite, formáte, veľkosti alebo farbe."
|
||||
|
||||
#: src/pages/library/index.vue:31
|
||||
|
@ -2128,7 +2121,7 @@ msgstr "Štáty"
|
|||
|
||||
#: src/pages/settings/advanced.vue:374
|
||||
msgid "Static Size Limit: %{n}px"
|
||||
msgstr "Limit veľkosti pred predbežným vykreslením: %{n} px"
|
||||
msgstr "Statický limit veľkosti: %{n} px"
|
||||
|
||||
#: src/dialog/photo/files.vue:34
|
||||
msgid "Status"
|
||||
|
@ -2163,13 +2156,13 @@ msgstr "Synchronizácia"
|
|||
|
||||
#: src/dialog/account/edit.vue:372
|
||||
msgid "Sync raw and video files"
|
||||
msgstr "Synchronizovať fotky formátu raw"
|
||||
msgstr "Synchronizovať súbory raw a videá"
|
||||
|
||||
#: src/component/photo/cards.vue:25 src/component/photo/list.vue:35
|
||||
#: src/dialog/photo/info.vue:52 src/share/photo/cards.vue:25
|
||||
#: src/share/photo/list.vue:31
|
||||
msgid "Taken"
|
||||
msgstr "Odobratý"
|
||||
msgstr "Zachytené"
|
||||
|
||||
#: src/options/options.js:336
|
||||
msgid "Teal"
|
||||
|
@ -2185,7 +2178,7 @@ msgstr "Ďakujeme veľmi pekne!"
|
|||
|
||||
#: src/pages/library/index.vue:36
|
||||
msgid "The index currently contains %{n} hidden files."
|
||||
msgstr "Index obsahuje %{n} skrytých súborov."
|
||||
msgstr "Index momentálne obsahuje %{n} skrytých súborov."
|
||||
|
||||
#: src/pages/about/about.vue:17
|
||||
msgid ""
|
||||
|
@ -2222,8 +2215,8 @@ msgid ""
|
|||
"local."
|
||||
msgstr ""
|
||||
"Toto pripojí zložku originálov ako sieťový disk a umožní vám otvoriť, "
|
||||
"upraviť a zmazať súbory z vášho počítača alebo smartphonu ak sú uložené "
|
||||
"lokálne."
|
||||
"upraviť a zmazať súbory z vášho počítača alebo smartphonu ako keby boli "
|
||||
"uložené lokálne."
|
||||
|
||||
#: src/pages/about/about.vue:21
|
||||
msgid "This open-source project is made possible thanks to our sponsors."
|
||||
|
@ -2311,7 +2304,7 @@ msgstr "Nezoradené"
|
|||
|
||||
#: src/dialog/photo/files.vue:38 src/dialog/photo/files.vue:35
|
||||
msgid "Unstack"
|
||||
msgstr "Nepostupné"
|
||||
msgstr "Rozdeliť naskladané"
|
||||
|
||||
#: src/dialog/photo/files.vue:166 src/dialog/photo/files.vue:163
|
||||
#: src/dialog/photo/info.vue:175
|
||||
|
@ -2320,7 +2313,7 @@ msgstr "Aktualizované"
|
|||
|
||||
#: src/pages/library/index.vue:153
|
||||
msgid "Updating faces"
|
||||
msgstr "Aktualizácia tvárí"
|
||||
msgstr "Aktualizujú sa tváre"
|
||||
|
||||
#: src/pages/library/index.vue:157
|
||||
msgid "Updating index"
|
||||
|
@ -2332,11 +2325,11 @@ msgstr "Aktualizujú sa momenty"
|
|||
|
||||
#: src/pages/library/index.vue:155
|
||||
msgid "Updating previews"
|
||||
msgstr "Aktualizácia náhľadov"
|
||||
msgstr "Aktualizujú sa náhľady"
|
||||
|
||||
#: src/pages/library/index.vue:149
|
||||
msgid "Updating stacks"
|
||||
msgstr "Nepostupné"
|
||||
msgstr "Aktualizujú sa naskladané fotky"
|
||||
|
||||
#: src/component/album/toolbar.vue:176 src/component/navigation.vue:130
|
||||
#: src/component/photo/toolbar.vue:125 src/dialog/share/upload.vue:35
|
||||
|
@ -2364,7 +2357,7 @@ msgstr "Odovzdať lokálne súbory"
|
|||
|
||||
#: src/pages/settings/general.vue:251
|
||||
msgid "Upload to WebDAV and share links with friends."
|
||||
msgstr "Odovzdať do WebDAV a zdieľať linky s priateľmi."
|
||||
msgstr "Odovzdať do WebDAV a zdieľať odkazy s priateľmi."
|
||||
|
||||
#: src/dialog/upload.vue:36
|
||||
msgid "Uploading %{n} of %{t}…"
|
||||
|
@ -2384,7 +2377,7 @@ msgstr "URL"
|
|||
|
||||
#: src/pages/settings/advanced.vue:463
|
||||
msgid "Use Presets"
|
||||
msgstr "Použite predvoľby"
|
||||
msgstr "Použiť predvoľbu"
|
||||
|
||||
#: src/model/user.js:122
|
||||
msgid "User"
|
||||
|
@ -2430,7 +2423,7 @@ msgstr ""
|
|||
#: src/dialog/webdav.vue:8
|
||||
msgid "WebDAV clients can connect to PhotoPrism using the following URL:"
|
||||
msgstr ""
|
||||
"WebDAV klienti sa môžu pripojiť ku PhotoPrismu pomocou následujúcej URL:"
|
||||
"WebDAV klienti sa môžu pripojiť ku PhotoPrismu pomocou nasledujúcej URL:"
|
||||
|
||||
#: src/pages/settings/sync.vue:35
|
||||
msgid ""
|
||||
|
@ -2442,7 +2435,7 @@ msgstr ""
|
|||
|
||||
#: src/dialog/share.vue:82 src/dialog/share/upload.vue:7
|
||||
msgid "WebDAV Upload"
|
||||
msgstr "WebDAV Odovzdávanie"
|
||||
msgstr "Odovzdávanie cez WebDAV"
|
||||
|
||||
#: src/options/options.js:340
|
||||
msgid "White"
|
||||
|
@ -2481,12 +2474,12 @@ msgstr "Môžete stiahnuť iba jeden štítok"
|
|||
|
||||
#: src/component/album/clipboard.vue:32 src/component/album/clipboard.vue:45
|
||||
msgid "You may only select one item"
|
||||
msgstr "Mali by ste označiť len jednu položku"
|
||||
msgstr "Mali by ste označiť iba jednu položku"
|
||||
|
||||
#: src/dialog/photo/people.vue:8 src/pages/people/faces.vue:33
|
||||
#: src/pages/people/subjects.vue:37
|
||||
msgid "You may rescan your library to find additional faces."
|
||||
msgstr "Ak chcete nájsť ďalšie tváre, môžete svoju knižnicu preskenovať."
|
||||
msgstr "Mali by ste preskenovať knižnicu pre nájdenie viac tvárí."
|
||||
|
||||
#: src/pages/about/about.vue:47
|
||||
msgid ""
|
||||
|
@ -2495,9 +2488,9 @@ msgid ""
|
|||
"or services without prior written permission. In other words, please ask."
|
||||
msgstr ""
|
||||
"Mali by ste to používať ako je požadované pre opísanie nášho softwaru, "
|
||||
"spusťte svoj vlastný server, pre edukačné účely, ale nie pre ponúkanie "
|
||||
"reklamy, produktov alebo služieb bez povolenia. Inak povedané, prosím, "
|
||||
"spýtajte sa."
|
||||
"spustenie svojho vlastného serveru, pre edukačné účely, ale nie pre "
|
||||
"ponúkanie reklamy, produktov alebo služieb bez povolenia. Inak povedané, "
|
||||
"prosím, spýtajte sa."
|
||||
|
||||
#: src/dialog/sponsor.vue:21 src/pages/about/about.vue:32
|
||||
msgid ""
|
||||
|
@ -2505,14 +2498,14 @@ msgid ""
|
|||
"satellite maps, and develop new features."
|
||||
msgstr ""
|
||||
"Vaša podpora nám pomáha financovať prevádzkové náklady, poskytovať služby, "
|
||||
"ako sú satelitné mapy, a vyvíjať nové funkcie."
|
||||
"ako sú satelitné mapy, a vyvíjanie nových funkcií."
|
||||
|
||||
#: src/pages/albums.vue:43 src/pages/albums.vue:1
|
||||
msgid ""
|
||||
"Your library is continuously analyzed to automatically create albums of "
|
||||
"special moments, trips, and places."
|
||||
msgstr ""
|
||||
"Vaša knižnica sa priebežne analyzuje a automaticky vytvára albumy "
|
||||
"Vaša knižnica sa priebežne analyzuje aby mohla automaticky vytvárať albumy "
|
||||
"špeciálnych momentov, výletov a miest."
|
||||
|
||||
#: src/pages/about/feedback.vue:4
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -46,15 +46,15 @@ msgstr ""
|
|||
msgid "%{n} pictures found"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:307
|
||||
#: src/options/options.js:312
|
||||
msgid "1 hour"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:309
|
||||
#: src/options/options.js:314
|
||||
msgid "12 hours"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:308
|
||||
#: src/options/options.js:313
|
||||
msgid "4 hours"
|
||||
msgstr ""
|
||||
|
||||
|
@ -70,6 +70,7 @@ msgstr ""
|
|||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:44
|
||||
#: src/dialog/share/upload.vue:113
|
||||
#: src/model/account.js:96
|
||||
#: src/pages/settings.vue:74
|
||||
|
@ -129,23 +130,23 @@ msgstr ""
|
|||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:317
|
||||
#: src/options/options.js:322
|
||||
msgid "After 1 day"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:318
|
||||
#: src/options/options.js:323
|
||||
msgid "After 3 days"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:319
|
||||
#: src/options/options.js:324
|
||||
msgid "After 7 days"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:321
|
||||
#: src/options/options.js:326
|
||||
msgid "After one month"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:323
|
||||
#: src/options/options.js:328
|
||||
msgid "After one year"
|
||||
msgstr ""
|
||||
|
||||
|
@ -154,11 +155,11 @@ msgstr ""
|
|||
msgid "After selecting pictures from search results, you can add them to an album using the context menu."
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:322
|
||||
#: src/options/options.js:327
|
||||
msgid "After two months"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:320
|
||||
#: src/options/options.js:325
|
||||
msgid "After two weeks"
|
||||
msgstr ""
|
||||
|
||||
|
@ -174,7 +175,7 @@ msgstr ""
|
|||
#: src/component/navigation.vue:130
|
||||
#: src/component/navigation.vue:140
|
||||
#: src/component/navigation.vue:4
|
||||
#: src/component/navigation.vue:545
|
||||
#: src/component/navigation.vue:544
|
||||
#: src/routes.js:134
|
||||
#: src/routes.js:141
|
||||
#: src/share/albums.vue:4
|
||||
|
@ -350,15 +351,15 @@ msgstr ""
|
|||
msgid "Bio"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:342
|
||||
#: src/options/options.js:347
|
||||
msgid "Black"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:355
|
||||
#: src/options/options.js:360
|
||||
msgid "Blackman: Lanczos Modification, Less Ringing Artifacts"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:338
|
||||
#: src/options/options.js:343
|
||||
msgid "Blue"
|
||||
msgstr ""
|
||||
|
||||
|
@ -366,7 +367,7 @@ msgstr ""
|
|||
msgid "Brazilian Portuguese"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:339
|
||||
#: src/options/options.js:344
|
||||
msgid "Brown"
|
||||
msgstr ""
|
||||
|
||||
|
@ -378,7 +379,7 @@ msgstr ""
|
|||
msgid "Browse indexed files and folders in Library."
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:349
|
||||
#: src/options/options.js:354
|
||||
msgid "Bug Report"
|
||||
msgstr ""
|
||||
|
||||
|
@ -387,7 +388,7 @@ msgid "Busy, please wait…"
|
|||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:215
|
||||
#: src/component/navigation.vue:835
|
||||
#: src/component/navigation.vue:834
|
||||
#: src/routes.js:147
|
||||
#: src/routes.js:154
|
||||
msgid "Calendar"
|
||||
|
@ -579,7 +580,7 @@ msgstr ""
|
|||
msgid "Creating thumbnails for"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:357
|
||||
#: src/options/options.js:362
|
||||
msgid "Cubic: Moderate Quality, Good Performance"
|
||||
msgstr ""
|
||||
|
||||
|
@ -587,15 +588,15 @@ msgstr ""
|
|||
msgid "Current Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:346
|
||||
#: src/options/options.js:351
|
||||
msgid "Customer Support"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:337
|
||||
#: src/options/options.js:342
|
||||
msgid "Cyan"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:204
|
||||
#: src/options/options.js:214
|
||||
msgid "Cyano"
|
||||
msgstr ""
|
||||
|
||||
|
@ -603,7 +604,7 @@ msgstr ""
|
|||
msgid "Czech"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:310
|
||||
#: src/options/options.js:315
|
||||
msgid "Daily"
|
||||
msgstr ""
|
||||
|
||||
|
@ -745,7 +746,7 @@ msgstr ""
|
|||
msgid "Don't use TensorFlow for image classification."
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:350
|
||||
#: src/options/options.js:355
|
||||
msgid "Donations"
|
||||
msgstr ""
|
||||
|
||||
|
@ -883,7 +884,7 @@ msgstr ""
|
|||
msgid "Estimates"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:311
|
||||
#: src/options/options.js:316
|
||||
msgid "Every two days"
|
||||
msgstr ""
|
||||
|
||||
|
@ -896,7 +897,7 @@ msgstr ""
|
|||
msgid "Exclude hidden"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:252
|
||||
#: src/component/navigation.vue:251
|
||||
msgid "Expand"
|
||||
msgstr ""
|
||||
|
||||
|
@ -946,7 +947,7 @@ msgstr ""
|
|||
msgid "Failure while importing uploaded files"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:250
|
||||
#: src/options/options.js:255
|
||||
msgid "Fast"
|
||||
msgstr ""
|
||||
|
||||
|
@ -955,12 +956,12 @@ msgid "Favorite"
|
|||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:189
|
||||
#: src/component/navigation.vue:747
|
||||
#: src/component/navigation.vue:746
|
||||
#: src/routes.js:180
|
||||
msgid "Favorites"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:348
|
||||
#: src/options/options.js:353
|
||||
msgid "Feature Request"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1009,7 +1010,7 @@ msgid "Folder is empty"
|
|||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:275
|
||||
#: src/component/navigation.vue:1043
|
||||
#: src/component/navigation.vue:1042
|
||||
#: src/routes.js:160
|
||||
#: src/routes.js:167
|
||||
msgid "Folders"
|
||||
|
@ -1031,7 +1032,7 @@ msgstr ""
|
|||
msgid "German"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:332
|
||||
#: src/options/options.js:337
|
||||
msgid "Gold"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1039,11 +1040,11 @@ msgstr ""
|
|||
msgid "Grayscale"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:335
|
||||
#: src/options/options.js:340
|
||||
msgid "Green"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:341
|
||||
#: src/options/options.js:346
|
||||
msgid "Grey"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1091,7 +1092,7 @@ msgstr ""
|
|||
msgid "How can we help?"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:273
|
||||
#: src/options/options.js:278
|
||||
msgid "Hybrid"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1107,7 +1108,7 @@ msgstr ""
|
|||
msgid "image"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:288
|
||||
#: src/options/options.js:293
|
||||
msgid "Image"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1229,7 +1230,7 @@ msgid "Label"
|
|||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:262
|
||||
#: src/component/navigation.vue:998
|
||||
#: src/component/navigation.vue:997
|
||||
#: src/dialog/photo/edit.vue:39
|
||||
#: src/dialog/photo/edit.vue:6
|
||||
#: src/dialog/photo/edit.vue:216
|
||||
|
@ -1242,7 +1243,7 @@ msgstr ""
|
|||
msgid "Labels deleted"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:356
|
||||
#: src/options/options.js:361
|
||||
msgid "Lanczos: Detail Preservation, Minimal Artifacts"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1259,7 +1260,7 @@ msgstr ""
|
|||
msgid "Latitude"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:209
|
||||
#: src/options/options.js:219
|
||||
msgid "Lavender"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1274,7 +1275,7 @@ msgstr ""
|
|||
#: src/component/navigation.vue:301
|
||||
#: src/component/navigation.vue:311
|
||||
#: src/component/navigation.vue:4
|
||||
#: src/component/navigation.vue:1135
|
||||
#: src/component/navigation.vue:1134
|
||||
#: src/pages/settings.vue:41
|
||||
#: src/pages/settings/general.vue:404
|
||||
#: src/routes.js:291
|
||||
|
@ -1294,7 +1295,7 @@ msgstr ""
|
|||
msgid "Like"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:334
|
||||
#: src/options/options.js:339
|
||||
msgid "Lime"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1302,7 +1303,7 @@ msgstr ""
|
|||
msgid "Limit reached, showing first %{n} files"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:358
|
||||
#: src/options/options.js:363
|
||||
msgid "Linear: Very Smooth, Best Performance"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1316,11 +1317,11 @@ msgid "List"
|
|||
msgstr ""
|
||||
|
||||
#: src/component/photo/cards.vue:215
|
||||
#: src/component/photo/list.vue:188
|
||||
#: src/component/photo/list.vue:186
|
||||
#: src/component/photo/mosaic.vue:190
|
||||
#: src/options/options.js:296
|
||||
#: src/options/options.js:301
|
||||
#: src/share/photo/cards.vue:188
|
||||
#: src/share/photo/list.vue:167
|
||||
#: src/share/photo/list.vue:165
|
||||
#: src/share/photo/mosaic.vue:171
|
||||
msgid "Live"
|
||||
msgstr ""
|
||||
|
@ -1348,13 +1349,13 @@ msgid "Log messages appear here whenever PhotoPrism comes across broken files, o
|
|||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:401
|
||||
#: src/component/navigation.vue:1471
|
||||
#: src/component/navigation.vue:1470
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:448
|
||||
#: src/component/navigation.vue:1581
|
||||
#: src/component/navigation.vue:1612
|
||||
#: src/component/navigation.vue:1580
|
||||
#: src/component/navigation.vue:1611
|
||||
msgid "Logout"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1368,7 +1369,7 @@ msgstr ""
|
|||
msgid "Longitude"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:328
|
||||
#: src/options/options.js:333
|
||||
msgid "Magenta"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1389,7 +1390,7 @@ msgstr ""
|
|||
msgid "Marker"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:254
|
||||
#: src/options/options.js:259
|
||||
msgid "Medium"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1401,7 +1402,11 @@ msgstr ""
|
|||
msgid "Message sent"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:205
|
||||
#: src/options/options.js:234
|
||||
msgid "Midnight"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:204
|
||||
msgid "Minimize"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1411,7 +1416,7 @@ msgid "Missing"
|
|||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:202
|
||||
#: src/component/navigation.vue:790
|
||||
#: src/component/navigation.vue:789
|
||||
#: src/pages/settings/general.vue:360
|
||||
#: src/routes.js:121
|
||||
#: src/routes.js:128
|
||||
|
@ -1427,7 +1432,7 @@ msgstr ""
|
|||
msgid "Month"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:214
|
||||
#: src/options/options.js:204
|
||||
msgid "Moonlight"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1467,7 +1472,7 @@ msgstr ""
|
|||
|
||||
#: src/component/photo/cards.vue:30
|
||||
#: src/component/photo/list.vue:38
|
||||
#: src/component/photo/list.vue:237
|
||||
#: src/component/photo/list.vue:235
|
||||
#: src/dialog/account/edit.vue:397
|
||||
#: src/dialog/album/edit.vue:106
|
||||
#: src/dialog/photo/files.vue:71
|
||||
|
@ -1485,7 +1490,7 @@ msgstr ""
|
|||
#: src/pages/people/subjects.vue:393
|
||||
#: src/share/photo/cards.vue:30
|
||||
#: src/share/photo/list.vue:34
|
||||
#: src/share/photo/list.vue:216
|
||||
#: src/share/photo/list.vue:214
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1500,8 +1505,8 @@ msgstr ""
|
|||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:306
|
||||
#: src/options/options.js:316
|
||||
#: src/options/options.js:311
|
||||
#: src/options/options.js:321
|
||||
#: src/pages/settings/sync.vue:50
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
@ -1601,7 +1606,7 @@ msgstr ""
|
|||
msgid "Non-photographic and low-quality images require a review before they appear in search results."
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:246
|
||||
#: src/options/options.js:251
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1638,8 +1643,8 @@ msgid "Nothing to see here yet. Be patient."
|
|||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:417
|
||||
#: src/component/navigation.vue:1516
|
||||
#: src/options/options.js:265
|
||||
#: src/component/navigation.vue:1515
|
||||
#: src/options/options.js:270
|
||||
msgid "Offline"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1649,7 +1654,7 @@ msgstr ""
|
|||
msgid "Oldest first"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:312
|
||||
#: src/options/options.js:317
|
||||
msgid "Once a week"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1682,7 +1687,7 @@ msgstr ""
|
|||
msgid "One picture found"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:219
|
||||
#: src/options/options.js:209
|
||||
msgid "Onyx"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1690,7 +1695,7 @@ msgstr ""
|
|||
msgid "Options"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:331
|
||||
#: src/options/options.js:336
|
||||
msgid "Orange"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1719,7 +1724,7 @@ msgstr ""
|
|||
msgid "Originals"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:351
|
||||
#: src/options/options.js:356
|
||||
msgid "Other"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1727,7 +1732,7 @@ msgstr ""
|
|||
msgid "Our vision is to provide the most user-friendly solution for browsing, organizing, and sharing your photo collection."
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:281
|
||||
#: src/options/options.js:286
|
||||
msgid "Outdoor"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1751,7 +1756,7 @@ msgid "Password changed"
|
|||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:176
|
||||
#: src/component/navigation.vue:702
|
||||
#: src/component/navigation.vue:701
|
||||
#: src/dialog/photo/edit.vue:52
|
||||
#: src/dialog/photo/edit.vue:6
|
||||
#: src/dialog/photo/edit.vue:267
|
||||
|
@ -1789,7 +1794,7 @@ msgstr ""
|
|||
msgid "Photos"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:329
|
||||
#: src/options/options.js:334
|
||||
msgid "Pink"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1804,7 +1809,7 @@ msgstr ""
|
|||
#: src/component/navigation.vue:228
|
||||
#: src/component/navigation.vue:238
|
||||
#: src/component/navigation.vue:4
|
||||
#: src/component/navigation.vue:880
|
||||
#: src/component/navigation.vue:879
|
||||
#: src/pages/settings/general.vue:108
|
||||
#: src/pages/settings/general.vue:450
|
||||
#: src/routes.js:215
|
||||
|
@ -1877,14 +1882,14 @@ msgid "Primary"
|
|||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:288
|
||||
#: src/component/navigation.vue:1088
|
||||
#: src/component/navigation.vue:1087
|
||||
#: src/dialog/photo/info.vue:102
|
||||
#: src/pages/settings/general.vue:272
|
||||
#: src/routes.js:201
|
||||
msgid "Private"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:347
|
||||
#: src/options/options.js:352
|
||||
msgid "Product Feedback"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1893,7 +1898,7 @@ msgstr ""
|
|||
msgid "Projection"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:327
|
||||
#: src/options/options.js:332
|
||||
msgid "Purple"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1913,7 +1918,7 @@ msgstr ""
|
|||
msgid "Raspberry"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:292
|
||||
#: src/options/options.js:297
|
||||
msgid "Raw"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1962,7 +1967,7 @@ msgstr ""
|
|||
msgid "Recognizes faces so that specific people can be found."
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:330
|
||||
#: src/options/options.js:335
|
||||
msgid "Red"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2060,7 +2065,7 @@ msgstr ""
|
|||
#: src/component/navigation.vue:56
|
||||
#: src/component/navigation.vue:66
|
||||
#: src/component/navigation.vue:4
|
||||
#: src/component/navigation.vue:284
|
||||
#: src/component/navigation.vue:283
|
||||
#: src/component/photo/toolbar.vue:48
|
||||
#: src/pages/albums.vue:109
|
||||
#: src/pages/labels.vue:81
|
||||
|
@ -2130,7 +2135,7 @@ msgstr ""
|
|||
#: src/component/navigation.vue:8
|
||||
#: src/component/navigation.vue:18
|
||||
#: src/component/navigation.vue:4
|
||||
#: src/component/navigation.vue:1309
|
||||
#: src/component/navigation.vue:1308
|
||||
#: src/routes.js:313
|
||||
#: src/routes.js:325
|
||||
#: src/routes.js:337
|
||||
|
@ -2149,7 +2154,7 @@ msgstr ""
|
|||
msgid "Setup"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:234
|
||||
#: src/options/options.js:239
|
||||
msgid "Shadow"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2229,7 +2234,7 @@ msgstr ""
|
|||
msgid "Slovak"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:258
|
||||
#: src/options/options.js:263
|
||||
msgid "Slow"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2305,7 +2310,7 @@ msgstr ""
|
|||
msgid "Storage Folder"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:269
|
||||
#: src/options/options.js:274
|
||||
msgid "Streets"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2339,7 +2344,7 @@ msgstr ""
|
|||
msgid "Taken"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:336
|
||||
#: src/options/options.js:341
|
||||
msgid "Teal"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2423,7 +2428,7 @@ msgstr ""
|
|||
msgid "Token"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:277
|
||||
#: src/options/options.js:282
|
||||
msgid "Topographic"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2519,7 +2524,7 @@ msgid "Updating stacks"
|
|||
msgstr ""
|
||||
|
||||
#: src/component/album/toolbar.vue:176
|
||||
#: src/component/navigation.vue:130
|
||||
#: src/component/navigation.vue:129
|
||||
#: src/component/photo/toolbar.vue:125
|
||||
#: src/dialog/share/upload.vue:35
|
||||
#: src/dialog/upload.vue:8
|
||||
|
@ -2589,21 +2594,21 @@ msgstr ""
|
|||
|
||||
#: src/component/photo/cards.vue:29
|
||||
#: src/component/photo/cards.vue:225
|
||||
#: src/component/photo/list.vue:198
|
||||
#: src/component/photo/list.vue:196
|
||||
#: src/component/photo/mosaic.vue:200
|
||||
#: src/model/file.js:183
|
||||
#: src/model/photo.js:618
|
||||
#: src/model/photo.js:632
|
||||
#: src/options/options.js:300
|
||||
#: src/options/options.js:305
|
||||
#: src/share/photo/cards.vue:29
|
||||
#: src/share/photo/cards.vue:198
|
||||
#: src/share/photo/list.vue:177
|
||||
#: src/share/photo/list.vue:175
|
||||
#: src/share/photo/mosaic.vue:181
|
||||
msgid "Video"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:163
|
||||
#: src/component/navigation.vue:658
|
||||
#: src/component/navigation.vue:657
|
||||
#: src/routes.js:187
|
||||
msgid "Videos"
|
||||
msgstr ""
|
||||
|
@ -2633,7 +2638,7 @@ msgstr ""
|
|||
msgid "WebDAV Upload"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:340
|
||||
#: src/options/options.js:345
|
||||
msgid "White"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2642,11 +2647,11 @@ msgstr ""
|
|||
msgid "Year"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:333
|
||||
#: src/options/options.js:338
|
||||
msgid "Yellow"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:239
|
||||
#: src/options/options.js:244
|
||||
msgid "Yellowstone"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -200,16 +200,6 @@ export const Themes = () => [
|
|||
value: "grayscale",
|
||||
disabled: false,
|
||||
},
|
||||
{
|
||||
text: $gettext("Cyano"),
|
||||
value: "cyano",
|
||||
disabled: false,
|
||||
},
|
||||
{
|
||||
text: $gettext("Lavender"),
|
||||
value: "lavender",
|
||||
disabled: false,
|
||||
},
|
||||
{
|
||||
text: $gettext("Moonlight"),
|
||||
value: "moonlight",
|
||||
|
@ -220,6 +210,16 @@ export const Themes = () => [
|
|||
value: "onyx",
|
||||
disabled: false,
|
||||
},
|
||||
{
|
||||
text: $gettext("Cyano"),
|
||||
value: "cyano",
|
||||
disabled: false,
|
||||
},
|
||||
{
|
||||
text: $gettext("Lavender"),
|
||||
value: "lavender",
|
||||
disabled: false,
|
||||
},
|
||||
{
|
||||
text: $gettext("Raspberry"),
|
||||
value: "raspberry",
|
||||
|
@ -230,6 +230,11 @@ export const Themes = () => [
|
|||
value: "seaweed",
|
||||
disabled: false,
|
||||
},
|
||||
{
|
||||
text: $gettext("Midnight"),
|
||||
value: "midnight",
|
||||
disabled: false,
|
||||
},
|
||||
{
|
||||
text: $gettext("Shadow"),
|
||||
value: "shadow",
|
||||
|
|
|
@ -288,5 +288,34 @@
|
|||
"navigation": "#111",
|
||||
"navigation-home": "#000000"
|
||||
}
|
||||
},
|
||||
"midnight": {
|
||||
"dark": true,
|
||||
"sponsor": true,
|
||||
"colors": {
|
||||
"application": "#212121",
|
||||
"form": "#AFB42B",
|
||||
"primary": "#7e8acd",
|
||||
"primary-button": "#444444",
|
||||
"secondary-dark": "#5C6BC0",
|
||||
"secondary": "#111111",
|
||||
"secondary-light": "#1a1a1a",
|
||||
"accent": "#090c10",
|
||||
"error": "#e57373",
|
||||
"info": "#00acc1",
|
||||
"success": "#4db6ac",
|
||||
"warning": "#ffd740",
|
||||
"remove": "#e57373",
|
||||
"restore": "#64b5f6",
|
||||
"album": "#ffab00",
|
||||
"download": "#00bfa5",
|
||||
"private": "#00b8d4",
|
||||
"edit": "#00b8d4",
|
||||
"share": "#9575cd",
|
||||
"love": "#ef5350",
|
||||
"terminal": "#333333",
|
||||
"navigation": "#0d0d0d",
|
||||
"navigation-home": "#000000"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,6 +23,8 @@ type PhotoSearch struct {
|
|||
Stackable bool `form:"stackable"`
|
||||
Video bool `form:"video"`
|
||||
Photo bool `form:"photo"`
|
||||
Raw bool `form:"raw"`
|
||||
Live bool `form:"live"`
|
||||
Scan bool `form:"scan"`
|
||||
Panorama bool `form:"panorama"`
|
||||
Error bool `form:"error"`
|
||||
|
|
|
@ -15,6 +15,10 @@ type PhotoSearchGeo struct {
|
|||
Favorite bool `form:"favorite"`
|
||||
Video bool `form:"video"`
|
||||
Photo bool `form:"photo"`
|
||||
Raw bool `form:"raw"`
|
||||
Live bool `form:"live"`
|
||||
Scan bool `form:"scan"`
|
||||
Panorama bool `form:"panorama"`
|
||||
Archived bool `form:"archived"`
|
||||
Public bool `form:"public"`
|
||||
Private bool `form:"private"`
|
||||
|
|
|
@ -16,10 +16,7 @@ func LikeAny(col, s string, keywords, exact bool) (wheres []string) {
|
|||
return wheres
|
||||
}
|
||||
|
||||
s = strings.ReplaceAll(s, txt.Or, " ")
|
||||
s = strings.ReplaceAll(s, txt.OrEn, " ")
|
||||
s = strings.ReplaceAll(s, txt.AndEn, txt.And)
|
||||
s = strings.ReplaceAll(s, txt.Plus, txt.And)
|
||||
s = txt.StripOr(txt.NormalizeQuery(s))
|
||||
|
||||
var wildcardThreshold int
|
||||
|
||||
|
|
|
@ -135,7 +135,7 @@ func Photos(f form.PhotoSearch) (results PhotoResults, count int, err error) {
|
|||
}
|
||||
}
|
||||
|
||||
// Clip to reasonable size and normalize operators.
|
||||
// Clip and normalize search query.
|
||||
f.Query = txt.NormalizeQuery(f.Query)
|
||||
|
||||
// Set search filters based on search terms.
|
||||
|
@ -158,12 +158,12 @@ func Photos(f form.PhotoSearch) (results PhotoResults, count int, err error) {
|
|||
case terms["video"]:
|
||||
f.Query = strings.ReplaceAll(f.Query, "video", "")
|
||||
f.Video = true
|
||||
case terms["photos"]:
|
||||
f.Query = strings.ReplaceAll(f.Query, "photos", "")
|
||||
f.Photo = true
|
||||
case terms["photo"]:
|
||||
f.Query = strings.ReplaceAll(f.Query, "photo", "")
|
||||
f.Photo = true
|
||||
case terms["live"]:
|
||||
f.Query = strings.ReplaceAll(f.Query, "live", "")
|
||||
f.Live = true
|
||||
case terms["raws"]:
|
||||
f.Query = strings.ReplaceAll(f.Query, "raws", "")
|
||||
f.Raw = true
|
||||
case terms["favorites"]:
|
||||
f.Query = strings.ReplaceAll(f.Query, "favorites", "")
|
||||
f.Favorite = true
|
||||
|
@ -230,15 +230,16 @@ func Photos(f form.PhotoSearch) (results PhotoResults, count int, err error) {
|
|||
}
|
||||
}
|
||||
|
||||
// Filter by number of faces.
|
||||
// Filter by number of faces?
|
||||
if txt.IsUInt(f.Faces) {
|
||||
s = s.Where("photos.photo_faces >= ?", txt.Int(f.Faces))
|
||||
} else if txt.New(f.Faces) && f.Face == "" {
|
||||
f.Face = f.Faces
|
||||
f.Faces = ""
|
||||
} else if txt.Yes(f.Faces) {
|
||||
s = s.Where("photos.photo_faces > 0")
|
||||
} else if txt.No(f.Faces) {
|
||||
s = s.Where("photos.photo_faces = 0")
|
||||
} else if txt.New(f.Faces) && f.Face == "" {
|
||||
f.Face = f.Faces
|
||||
}
|
||||
|
||||
// Filter for specific face clusters? Example: PLJ7A3G4MBGZJRMVDIUCBLC46IAP4N7O
|
||||
|
@ -324,52 +325,67 @@ func Photos(f form.PhotoSearch) (results PhotoResults, count int, err error) {
|
|||
s = s.Where(AnyInt("photos.photo_day", f.Day, txt.Or, entity.UnknownDay, txt.DayMax))
|
||||
}
|
||||
|
||||
// Filter by main color?
|
||||
if f.Color != "" {
|
||||
s = s.Where("files.file_main_color IN (?)", strings.Split(strings.ToLower(f.Color), txt.Or))
|
||||
}
|
||||
|
||||
// Find favorites only?
|
||||
if f.Favorite {
|
||||
s = s.Where("photos.photo_favorite = 1")
|
||||
}
|
||||
|
||||
// Find scans only?
|
||||
if f.Scan {
|
||||
s = s.Where("photos.photo_scan = 1")
|
||||
}
|
||||
|
||||
// Find panoramas only?
|
||||
if f.Panorama {
|
||||
s = s.Where("photos.photo_panorama = 1")
|
||||
}
|
||||
|
||||
// Find portraits only?
|
||||
if f.Portrait {
|
||||
s = s.Where("files.file_portrait = 1")
|
||||
}
|
||||
|
||||
if f.Stackable {
|
||||
s = s.Where("photos.photo_stack > -1")
|
||||
} else if f.Unstacked {
|
||||
s = s.Where("photos.photo_stack = -1")
|
||||
}
|
||||
|
||||
// Filter by location country?
|
||||
if f.Country != "" {
|
||||
s = s.Where("photos.photo_country IN (?)", strings.Split(strings.ToLower(f.Country), txt.Or))
|
||||
}
|
||||
|
||||
// Filter by location state?
|
||||
if f.State != "" {
|
||||
s = s.Where("places.place_state IN (?)", strings.Split(f.State, txt.Or))
|
||||
}
|
||||
|
||||
// Filter by location category?
|
||||
if f.Category != "" {
|
||||
s = s.Joins("JOIN cells ON photos.cell_id = cells.id").
|
||||
Where("cells.cell_category IN (?)", strings.Split(strings.ToLower(f.Category), txt.Or))
|
||||
}
|
||||
|
||||
// Filter by media type.
|
||||
// Filter by media type?
|
||||
if f.Type != "" {
|
||||
s = s.Where("photos.photo_type IN (?)", strings.Split(strings.ToLower(f.Type), txt.Or))
|
||||
}
|
||||
|
||||
if f.Video {
|
||||
} else if f.Video {
|
||||
s = s.Where("photos.photo_type = 'video'")
|
||||
} else if f.Photo {
|
||||
s = s.Where("photos.photo_type IN ('image','raw','live')")
|
||||
} else if f.Raw {
|
||||
s = s.Where("photos.photo_type = 'raw'")
|
||||
} else if f.Live {
|
||||
s = s.Where("photos.photo_type = 'live'")
|
||||
}
|
||||
|
||||
// Filter by storage path?
|
||||
if f.Path != "" {
|
||||
p := f.Path
|
||||
|
||||
|
@ -397,33 +413,29 @@ func Photos(f form.PhotoSearch) (results PhotoResults, count int, err error) {
|
|||
s = s.Where(where, names...)
|
||||
}
|
||||
|
||||
// Filter by complete file names.
|
||||
// Filter by complete file names?
|
||||
if f.Filename != "" {
|
||||
where, values := OrLike("files.file_name", f.Filename)
|
||||
s = s.Where(where, values...)
|
||||
}
|
||||
|
||||
// Filter by original file name.
|
||||
// Filter by original file name?
|
||||
if f.Original != "" {
|
||||
where, values := OrLike("photos.original_name", f.Original)
|
||||
s = s.Where(where, values...)
|
||||
}
|
||||
|
||||
// Filter by photo title.
|
||||
// Filter by photo title?
|
||||
if f.Title != "" {
|
||||
where, values := OrLike("photos.photo_title", f.Title)
|
||||
s = s.Where(where, values...)
|
||||
}
|
||||
|
||||
// Filter by file hash.
|
||||
// Filter by file hash?
|
||||
if f.Hash != "" {
|
||||
s = s.Where("files.file_hash IN (?)", strings.Split(strings.ToLower(f.Hash), txt.Or))
|
||||
}
|
||||
|
||||
if f.Portrait {
|
||||
s = s.Where("files.file_portrait = 1")
|
||||
}
|
||||
|
||||
if f.Mono {
|
||||
s = s.Where("files.file_chroma = 0 OR file_colors = '111111111'")
|
||||
} else if f.Chroma > 9 {
|
||||
|
|
|
@ -39,7 +39,7 @@ func PhotosGeo(f form.PhotoSearchGeo) (results GeoResults, err error) {
|
|||
Where("photos.deleted_at IS NULL").
|
||||
Where("photos.photo_lat <> 0")
|
||||
|
||||
// Clip to reasonable size and normalize operators.
|
||||
// Clip and normalize search query.
|
||||
f.Query = txt.NormalizeQuery(f.Query)
|
||||
|
||||
// Set search filters based on search terms.
|
||||
|
@ -62,19 +62,25 @@ func PhotosGeo(f form.PhotoSearchGeo) (results GeoResults, err error) {
|
|||
case terms["video"]:
|
||||
f.Query = strings.ReplaceAll(f.Query, "video", "")
|
||||
f.Video = true
|
||||
case terms["photos"]:
|
||||
f.Query = strings.ReplaceAll(f.Query, "photos", "")
|
||||
f.Photo = true
|
||||
case terms["photo"]:
|
||||
f.Query = strings.ReplaceAll(f.Query, "photo", "")
|
||||
f.Photo = true
|
||||
case terms["live"]:
|
||||
f.Query = strings.ReplaceAll(f.Query, "live", "")
|
||||
f.Live = true
|
||||
case terms["raws"]:
|
||||
f.Query = strings.ReplaceAll(f.Query, "raws", "")
|
||||
f.Raw = true
|
||||
case terms["favorites"]:
|
||||
f.Query = strings.ReplaceAll(f.Query, "favorites", "")
|
||||
f.Favorite = true
|
||||
case terms["panoramas"]:
|
||||
f.Query = strings.ReplaceAll(f.Query, "panoramas", "")
|
||||
f.Panorama = true
|
||||
case terms["scans"]:
|
||||
f.Query = strings.ReplaceAll(f.Query, "scans", "")
|
||||
f.Scan = true
|
||||
}
|
||||
}
|
||||
|
||||
// Filter by label, label category and keywords.
|
||||
// Filter by label, label category, and keywords?
|
||||
if f.Query != "" {
|
||||
var categories []entity.Category
|
||||
var labels []entity.Label
|
||||
|
@ -117,15 +123,16 @@ func PhotosGeo(f form.PhotoSearchGeo) (results GeoResults, err error) {
|
|||
}
|
||||
}
|
||||
|
||||
// Filter by number of faces.
|
||||
// Filter by number of faces?
|
||||
if txt.IsUInt(f.Faces) {
|
||||
s = s.Where("photos.photo_faces >= ?", txt.Int(f.Faces))
|
||||
} else if txt.New(f.Faces) && f.Face == "" {
|
||||
f.Face = f.Faces
|
||||
f.Faces = ""
|
||||
} else if txt.Yes(f.Faces) {
|
||||
s = s.Where("photos.photo_faces > 0")
|
||||
} else if txt.No(f.Faces) {
|
||||
s = s.Where("photos.photo_faces = 0")
|
||||
} else if txt.New(f.Faces) && f.Face == "" {
|
||||
f.Face = f.Faces
|
||||
}
|
||||
|
||||
// Filter for specific face clusters? Example: PLJ7A3G4MBGZJRMVDIUCBLC46IAP4N7O
|
||||
|
@ -134,6 +141,9 @@ func PhotosGeo(f form.PhotoSearchGeo) (results GeoResults, err error) {
|
|||
s = s.Where(fmt.Sprintf("photos.id IN (SELECT photo_id FROM files f JOIN %s m ON f.file_uid = m.file_uid AND m.marker_invalid = 0 WHERE face_id IN (?))",
|
||||
entity.Marker{}.TableName()), strings.Split(f, txt.Or))
|
||||
}
|
||||
} else if txt.New(f.Face) {
|
||||
s = s.Where(fmt.Sprintf("photos.id IN (SELECT photo_id FROM files f JOIN %s m ON f.file_uid = m.file_uid AND m.marker_invalid = 0 AND m.marker_type = ? WHERE subj_uid IS NULL OR subj_uid = '')",
|
||||
entity.Marker{}.TableName()), entity.MarkerFace)
|
||||
} else if txt.No(f.Face) {
|
||||
s = s.Where(fmt.Sprintf("photos.id IN (SELECT photo_id FROM files f JOIN %s m ON f.file_uid = m.file_uid AND m.marker_invalid = 0 AND m.marker_type = ? WHERE face_id IS NULL OR face_id = '')",
|
||||
entity.Marker{}.TableName()), entity.MarkerFace)
|
||||
|
@ -199,29 +209,45 @@ func PhotosGeo(f form.PhotoSearchGeo) (results GeoResults, err error) {
|
|||
s = s.Where(AnyInt("photos.photo_day", f.Day, txt.Or, entity.UnknownDay, txt.DayMax))
|
||||
}
|
||||
|
||||
// Filter by main color?
|
||||
if f.Color != "" {
|
||||
s = s.Where("files.file_main_color IN (?)", strings.Split(strings.ToLower(f.Color), txt.Or))
|
||||
}
|
||||
|
||||
// Find favorites only?
|
||||
if f.Favorite {
|
||||
s = s.Where("photos.photo_favorite = 1")
|
||||
}
|
||||
|
||||
// Find scans only?
|
||||
if f.Scan {
|
||||
s = s.Where("photos.photo_scan = 1")
|
||||
}
|
||||
|
||||
// Find panoramas only?
|
||||
if f.Panorama {
|
||||
s = s.Where("photos.photo_panorama = 1")
|
||||
}
|
||||
|
||||
// Filter by location country?
|
||||
if f.Country != "" {
|
||||
s = s.Where("photos.photo_country IN (?)", strings.Split(strings.ToLower(f.Country), txt.Or))
|
||||
}
|
||||
|
||||
// Filter by media type.
|
||||
// Filter by media type?
|
||||
if f.Type != "" {
|
||||
s = s.Where("photos.photo_type IN (?)", strings.Split(strings.ToLower(f.Type), txt.Or))
|
||||
}
|
||||
|
||||
if f.Video {
|
||||
} else if f.Video {
|
||||
s = s.Where("photos.photo_type = 'video'")
|
||||
} else if f.Photo {
|
||||
s = s.Where("photos.photo_type IN ('image','raw','live')")
|
||||
} else if f.Raw {
|
||||
s = s.Where("photos.photo_type = 'raw'")
|
||||
} else if f.Live {
|
||||
s = s.Where("photos.photo_type = 'live'")
|
||||
}
|
||||
|
||||
// Filter by storage path?
|
||||
if f.Path != "" {
|
||||
p := f.Path
|
||||
|
||||
|
@ -237,7 +263,7 @@ func PhotosGeo(f form.PhotoSearchGeo) (results GeoResults, err error) {
|
|||
}
|
||||
}
|
||||
|
||||
// Filter by primary file name without path and extension.
|
||||
// Filter by primary file name without path and extension?
|
||||
if f.Name != "" {
|
||||
where, names := OrLike("photos.photo_name", f.Name)
|
||||
|
||||
|
@ -249,13 +275,13 @@ func PhotosGeo(f form.PhotoSearchGeo) (results GeoResults, err error) {
|
|||
s = s.Where(where, names...)
|
||||
}
|
||||
|
||||
// Filter by photo title.
|
||||
// Filter by photo title?
|
||||
if f.Title != "" {
|
||||
where, values := OrLike("photos.photo_title", f.Title)
|
||||
s = s.Where(where, values...)
|
||||
}
|
||||
|
||||
// Filter by status.
|
||||
// Filter by status?
|
||||
if f.Archived {
|
||||
s = s.Where("photos.photo_quality > -1")
|
||||
s = s.Where("photos.deleted_at IS NOT NULL")
|
||||
|
@ -275,10 +301,6 @@ func PhotosGeo(f form.PhotoSearchGeo) (results GeoResults, err error) {
|
|||
}
|
||||
}
|
||||
|
||||
if f.Favorite {
|
||||
s = s.Where("photos.photo_favorite = 1")
|
||||
}
|
||||
|
||||
if f.S2 != "" {
|
||||
s2Min, s2Max := s2.PrefixedRange(f.S2, 7)
|
||||
s = s.Where("photos.cell_id BETWEEN ? AND ?", s2Min, s2Max)
|
||||
|
|
10
pkg/txt/en.go
Normal file
10
pkg/txt/en.go
Normal file
|
@ -0,0 +1,10 @@
|
|||
package txt
|
||||
|
||||
const (
|
||||
EnOr = "or"
|
||||
EnAnd = "and"
|
||||
EnWith = "with"
|
||||
EnIn = "in"
|
||||
EnAt = "at"
|
||||
EnNew = "new"
|
||||
)
|
|
@ -5,27 +5,34 @@ import (
|
|||
)
|
||||
|
||||
const (
|
||||
Or = "|"
|
||||
And = "&"
|
||||
Plus = " + "
|
||||
OrEn = " or "
|
||||
AndEn = " and "
|
||||
WithEn = " with "
|
||||
InEn = " in "
|
||||
AtEn = " at "
|
||||
Space = " "
|
||||
Empty = ""
|
||||
Empty = ""
|
||||
Space = " "
|
||||
Or = "|"
|
||||
And = "&"
|
||||
Plus = "+"
|
||||
SpacedPlus = Space + Plus + Space
|
||||
)
|
||||
|
||||
// Spaced returns the string padded with a space left and right.
|
||||
func Spaced(s string) string {
|
||||
return Space + s + Space
|
||||
}
|
||||
|
||||
// StripOr removes or operators from a query.
|
||||
func StripOr(s string) string {
|
||||
s = strings.ReplaceAll(s, Or, Space)
|
||||
return s
|
||||
}
|
||||
|
||||
// NormalizeQuery replaces search operator with default symbols.
|
||||
func NormalizeQuery(s string) string {
|
||||
s = strings.ToLower(Clip(s, ClipQuery))
|
||||
s = strings.ReplaceAll(s, OrEn, Or)
|
||||
s = strings.ReplaceAll(s, AndEn, And)
|
||||
s = strings.ReplaceAll(s, WithEn, And)
|
||||
s = strings.ReplaceAll(s, InEn, And)
|
||||
s = strings.ReplaceAll(s, AtEn, And)
|
||||
s = strings.ReplaceAll(s, Plus, And)
|
||||
s = strings.ReplaceAll(s, Spaced(EnOr), Or)
|
||||
s = strings.ReplaceAll(s, Spaced(EnAnd), And)
|
||||
s = strings.ReplaceAll(s, Spaced(EnWith), And)
|
||||
s = strings.ReplaceAll(s, Spaced(EnIn), And)
|
||||
s = strings.ReplaceAll(s, Spaced(EnAt), And)
|
||||
s = strings.ReplaceAll(s, SpacedPlus, And)
|
||||
s = strings.ReplaceAll(s, "%", "*")
|
||||
return strings.Trim(s, "+&|_-=!@$%^(){}\\<>,.;: ")
|
||||
}
|
||||
|
|
|
@ -6,6 +6,36 @@ import (
|
|||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestSpaced(t *testing.T) {
|
||||
t.Run("Empty", func(t *testing.T) {
|
||||
assert.Equal(t, " ", Spaced(""))
|
||||
})
|
||||
t.Run("Space", func(t *testing.T) {
|
||||
assert.Equal(t, " ", Spaced(" "))
|
||||
})
|
||||
t.Run("Chinese", func(t *testing.T) {
|
||||
assert.Equal(t, " 李 ", Spaced("李"))
|
||||
})
|
||||
t.Run("And", func(t *testing.T) {
|
||||
assert.Equal(t, " and ", Spaced("and"))
|
||||
})
|
||||
}
|
||||
|
||||
func TestStripOr(t *testing.T) {
|
||||
t.Run("Empty", func(t *testing.T) {
|
||||
assert.Equal(t, "", StripOr(""))
|
||||
})
|
||||
t.Run("EnOr", func(t *testing.T) {
|
||||
assert.Equal(t, "or", StripOr("or"))
|
||||
})
|
||||
t.Run("SpacedEnOr", func(t *testing.T) {
|
||||
assert.Equal(t, "李 or Foo", StripOr("李 or Foo"))
|
||||
})
|
||||
t.Run("Or", func(t *testing.T) {
|
||||
assert.Equal(t, "李 Foo", StripOr("李 | Foo"))
|
||||
})
|
||||
}
|
||||
|
||||
func TestNormalizeQuery(t *testing.T) {
|
||||
t.Run("Replace", func(t *testing.T) {
|
||||
q := NormalizeQuery("table spoon & usa | img% json OR BILL!")
|
||||
|
|
|
@ -45,5 +45,5 @@ func New(s string) bool {
|
|||
|
||||
s = strings.ToLower(strings.TrimSpace(s))
|
||||
|
||||
return s == "new"
|
||||
return s == EnNew
|
||||
}
|
||||
|
|
|
@ -130,6 +130,12 @@ func TestNew(t *testing.T) {
|
|||
t.Run("Empty", func(t *testing.T) {
|
||||
assert.Equal(t, false, New(""))
|
||||
})
|
||||
t.Run("EnNew", func(t *testing.T) {
|
||||
assert.Equal(t, true, New(EnNew))
|
||||
})
|
||||
t.Run("Spaces", func(t *testing.T) {
|
||||
assert.Equal(t, true, New(" new "))
|
||||
})
|
||||
t.Run("Uppercase", func(t *testing.T) {
|
||||
assert.Equal(t, true, New("NEW"))
|
||||
})
|
||||
|
|
Loading…
Add table
Reference in a new issue