Frontend: Translate options, labels and hints

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
This commit is contained in:
Michael Mayer 2020-07-02 15:43:28 +02:00
parent 956a8e6d41
commit 4f6fd4ccf3
15 changed files with 1159 additions and 647 deletions

View file

@ -49,7 +49,7 @@
let m = data.msg;
if (!m || !m.length) {
console.warn("notify: error message missing in api response");
console.warn("notify: empty message");
return;
}

View file

@ -12,7 +12,7 @@
color="secondary-dark"
:true-value="true"
:false-value="false"
:label="model.AccShare ? label.enabled : label.disabled"
:label="model.AccShare ? labels.enabled : labels.disabled"
:disabled="model.AccType !== 'webdav'"
class="ma-0 hidden-xs-only"
hide-details
@ -38,7 +38,7 @@
color="secondary-dark"
:true-value="true"
:false-value="false"
:label="model.AccSync ? label.enabled : label.disabled"
:label="model.AccSync ? labels.enabled : labels.disabled"
:disabled="model.AccType !== 'webdav'"
class="mt-0 hidden-xs-only"
hide-details
@ -82,7 +82,7 @@
:loading="loading"
item-text="abs"
item-value="abs"
:label="label.SharePath"
:label="labels.SharePath"
:disabled="!model.AccShare || loading"
>
</v-autocomplete>
@ -90,7 +90,7 @@
<v-flex xs12 sm6 class="pa-2 input-share-size">
<v-select
:disabled="!model.AccShare"
:label="label.ShareSize"
:label="labels.ShareSize"
browser-autocomplete="off"
hide-details
color="secondary-dark"
@ -103,7 +103,7 @@
<v-flex xs12 sm6 class="pa-2">
<v-select
:disabled="!model.AccShare"
:label="label.Expires"
:label="labels.Expires"
browser-autocomplete="off"
hide-details
color="secondary-dark"
@ -127,7 +127,7 @@
:loading="loading"
item-text="abs"
item-value="abs"
:label="label.SyncPath"
:label="labels.SyncPath"
:disabled="!model.AccSync || loading"
>
</v-autocomplete>
@ -135,7 +135,7 @@
<v-flex xs12 sm6 class="pa-2">
<v-select
:disabled="!model.AccSync"
:label="label.SyncInterval"
:label="labels.SyncInterval"
browser-autocomplete="off"
hide-details
color="secondary-dark"
@ -150,7 +150,7 @@
:disabled="!model.AccSync || readonly"
hide-details
color="secondary-dark"
:label="label.SyncDownload"
:label="labels.SyncDownload"
v-model="model.SyncDownload"
></v-checkbox>
</v-flex>
@ -159,7 +159,7 @@
:disabled="!model.AccSync"
hide-details
color="secondary-dark"
:label="label.SyncFilenames"
:label="labels.SyncFilenames"
v-model="model.SyncFilenames"
></v-checkbox>
</v-flex>
@ -168,7 +168,7 @@
:disabled="!model.AccSync"
hide-details
color="secondary-dark"
:label="label.SyncUpload"
:label="labels.SyncUpload"
v-model="model.SyncUpload"
></v-checkbox>
</v-flex>
@ -177,7 +177,7 @@
:disabled="!model.AccSync"
hide-details
color="secondary-dark"
:label="label.SyncRaw"
:label="labels.SyncRaw"
v-model="model.SyncRaw"
></v-checkbox>
</v-flex>
@ -187,7 +187,7 @@
<v-text-field
hide-details
browser-autocomplete="off"
:label="label.name"
:label="labels.name"
placeholder=""
color="secondary-dark"
v-model="model.AccName"
@ -198,7 +198,7 @@
<v-text-field
hide-details
browser-autocomplete="off"
:label="label.url"
:label="labels.url"
placeholder="https://www.example.com/"
color="secondary-dark"
v-model="model.AccURL"
@ -208,7 +208,7 @@
<v-text-field
hide-details
browser-autocomplete="off"
:label="label.user"
:label="labels.user"
placeholder="optional"
color="secondary-dark"
v-model="model.AccUser"
@ -218,7 +218,7 @@
<v-text-field
hide-details
browser-autocomplete="off"
:label="label.pass"
:label="labels.pass"
placeholder="optional"
color="secondary-dark"
v-model="model.AccPass"
@ -231,7 +231,7 @@
<v-text-field
hide-details
browser-autocomplete="off"
:label="label.apiKey"
:label="labels.apiKey"
placeholder="optional"
color="secondary-dark"
v-model="model.AccKey"
@ -240,7 +240,7 @@
</v-flex>
<v-flex xs12 sm6 pa-2 class="input-account-type">
<v-select
:label="label.AccType"
:label="labels.AccType"
browser-autocomplete="off"
hide-details
color="secondary-dark"
@ -255,11 +255,11 @@
<v-flex xs12 text-xs-right class="pt-3 pb-0">
<v-btn @click.stop="cancel" depressed color="secondary-light"
class="action-cancel">
<span>{{ label.cancel }}</span>
<span>{{ labels.cancel }}</span>
</v-btn>
<v-btn depressed dark color="secondary-dark" @click.stop="save"
class="action-save">
<span>{{ label.save }}</span>
<span>{{ labels.save }}</span>
</v-btn>
</v-flex>
</v-layout>
@ -268,7 +268,8 @@
</v-dialog>
</template>
<script>
import options from "resources/options";
import * as options from "resources/options";
import labels from "resources/labels";
export default {
name: 'p-account-edit-dialog',
@ -283,6 +284,8 @@
thumbs.sort((a, b) => a.Width - b.Width);
return {
options: options,
labels: labels,
showPassword: false,
loading: false,
search: null,
@ -330,32 +333,6 @@
],
},
readonly: this.$config.get("readonly"),
options: options,
label: {
cancel: this.$gettext("Cancel"),
confirm: this.$gettext("Save"),
save: this.$gettext("Save"),
enabled: this.$gettext("Enabled"),
disabled: this.$gettext("Disabled"),
name: this.$gettext("Name"),
url: this.$gettext("Service URL"),
user: this.$gettext("Username"),
pass: this.$gettext("Password"),
owner: this.$gettext("Owner"),
apiKey: this.$gettext("API Key"),
AccType: this.$gettext("Type"),
SharePath: this.$gettext("Default Folder"),
ShareSize: this.$gettext("Size"),
Expires: this.$gettext("Expires"),
SyncPath: this.$gettext("Folder"),
SyncInterval: this.$gettext("Interval"),
SyncFilenames: this.$gettext("Preserve filenames"),
SyncStart: this.$gettext("Start"),
SyncDownload: this.$gettext("Download remote files"),
SyncUpload: this.$gettext("Upload local files"),
SyncDelete: this.$gettext("Remote delete"),
SyncRaw: this.$gettext("Sync raw images"),
}
}
},
computed: {},

View file

@ -129,7 +129,7 @@
item-value="ID"
item-text="Name"
v-model="model.TimeZone"
:items="timeZones"
:items="options.TimeZones"
class="input-timezone">
</v-autocomplete>
</v-flex>
@ -402,9 +402,8 @@
</template>
<script>
import options from "resources/options.json";
import * as options from "resources/options";
import {DateTime} from "luxon";
import moment from "moment-timezone"
import countries from "resources/countries.json";
import Thumb from "model/thumb";
@ -418,7 +417,7 @@
disabled: !this.$config.feature("edit"),
config: this.$config.values,
all: {
colors: [{label: "Unknown", name: ""}],
colors: [{label: this.$gettext("Unknown"), name: ""}],
},
readonly: this.$config.get("readonly"),
options: options,
@ -489,9 +488,6 @@
colorOptions() {
return this.all.colors.concat(this.config.colors);
},
timeZones() {
return moment.tz.names();
},
},
methods: {
updateTime() {

View file

@ -167,7 +167,7 @@
this.viewerResults().then((results) => {
const thumbsIndex = results.findIndex(result => result.UID === selected.UID);
if(thumbsIndex < 0) {
if (thumbsIndex < 0) {
this.$viewer.show(Thumb.fromPhotos(this.results), index);
} else {
this.$viewer.show(Thumb.fromPhotos(results), thumbsIndex);
@ -252,7 +252,7 @@
this.offset = offset;
if (this.results.length > 1) {
this.$notify.info(this.$gettext('All ') + this.results.length + this.$gettext(' entries loaded'));
this.$notify.info(this.$gettextInterpolate(this.$gettext("All %{n} entries loaded"), {n: this.results.length}));
}
} else if (this.results.length >= Photo.limit()) {
this.offset = offset;
@ -270,7 +270,7 @@
this.loading = false;
this.listen = true;
if(offset === 0) {
if (offset === 0) {
this.viewerResults();
}
});

View file

@ -158,7 +158,7 @@
<translate>Contains one photo.</translate>
</div>
<div v-else-if="album.PhotoCount > 0" class="caption">
<translate :translate-params="{count: album.PhotoCount}">Contains %{count} photos.</translate>
<translate :translate-params="{n: album.PhotoCount}">Contains %{n} photos.</translate>
</div>
<button v-else @click.stop.prevent="$router.push({name: 'photos'})" class="caption">
<translate>Add photos from search results by selecting them.</translate>

View file

@ -75,7 +75,7 @@
outline
v-if="config.count.hidden > 1"
>
<translate :translate-params="{count: config.count.hidden}">The index currently contains %{count} hidden files.</translate>
<translate :translate-params="{n: config.count.hidden}">The index currently contains %{n} hidden files.</translate>
<translate>Their format may not be supported, they haven't been converted to JPEG yet or there are duplicates.</translate>
</v-alert>
</v-container>

View file

@ -88,7 +88,7 @@
<v-select
@change="onChange"
:disabled="busy"
:items="options.themes"
:items="options.Themes"
:label="labels.theme"
color="secondary-dark"
background-color="secondary-light"
@ -102,7 +102,7 @@
<v-select
@change="onChange"
:disabled="busy"
:items="options.languages"
:items="options.Languages"
:label="labels.language"
color="secondary-dark"
background-color="secondary-light"
@ -314,7 +314,7 @@
<v-select
@change="onChange"
:disabled="busy"
:items="options.mapsStyle"
:items="options.MapsStyle"
:label="labels.mapsStyle"
color="secondary-dark"
background-color="secondary-light"
@ -328,7 +328,7 @@
<v-select
@change="onChange"
:disabled="busy"
:items="options.mapsAnimate"
:items="options.MapsAnimate"
:label="labels.mapsAnimate"
color="secondary-dark"
background-color="secondary-light"
@ -369,7 +369,9 @@
<script>
import Settings from "model/settings";
import options from "resources/options.json";
import * as options from "resources/options";
import labels from "resources/labels";
import hints from "resources/hints";
export default {
name: 'p-settings-general',
@ -379,50 +381,8 @@
experimental: this.$config.get("experimental"),
settings: new Settings(this.$config.settings()),
options: options,
labels: {
language: this.$gettext("Language"),
theme: this.$gettext("Theme"),
mapsAnimate: this.$gettext("Animation"),
mapsStyle: this.$gettext("Style"),
rescan: this.$gettext("Complete rescan"),
thumbs: this.$gettext("Create thumbnails"),
move: this.$gettext("Remove imported files"),
group: this.$gettext("Group Sequential"),
archive: this.$gettext("Archive"),
private: this.$gettext("Hide Private"),
review: this.$gettext("Quality Filter"),
places: this.$gettext("Places"),
originals: this.$gettext("Originals"),
moments: this.$gettext("Moments"),
labels: this.$gettext("Labels"),
import: this.$gettext("Import"),
upload: this.$gettext("Upload"),
download: this.$gettext("Download"),
edit: this.$gettext("Edit"),
share: this.$gettext("Share"),
logs: this.$gettext("Logs"),
library: this.$gettext("Library"),
convert: this.$gettext("Convert to JPEG"),
},
hints: {
private: this.$gettext("Exclude photos marked as private from search results, shared albums, labels and places."),
review: this.$gettext("Non-photographic and low-quality images require a review before they appear in search results."),
group: this.$gettext("Files with sequential names like 'IMG_1234 (2)' or 'IMG_1234 copy 2' belong to the same photo."),
move: this.$gettext("Move files from import to originals to save storage. Unsupported file types will never be deleted, they remain in their current location."),
places: this.$gettext("Search and display photos on a map."),
originals: this.$gettext("Display indexed files in Originals"),
moments: this.$gettext("Let PhotoPrism create albums from past events."),
labels: this.$gettext("Browse and edit image classification labels."),
import: this.$gettext("Imported files will be sorted by date and given a unique name."),
archive: this.$gettext("Hide photos that have been moved to archive."),
upload: this.$gettext("Add files to your library via Web Upload."),
download: this.$gettext("Download single files and zip archives."),
edit: this.$gettext("Change photo titles, locations and other metadata."),
share: this.$gettext("Upload to WebDAV and other remote services."),
logs: this.$gettext("Show server logs in Library."),
library: this.$gettext("Show Library in navigation menu."),
convert: this.$gettext("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."),
},
labels: labels,
hints: hints,
busy: false,
};
},

View file

@ -8,7 +8,7 @@
class="elevation-0 p-accounts p-accounts-list p-results"
item-key="ID"
v-model="selected"
:no-data-text="this.$gettext('No remote services configured.')"
:no-data-text="$gettext('No remote services configured.')"
>
<template slot="items" slot-scope="props" class="p-account">
<td>
@ -69,7 +69,7 @@
<script>
import Settings from "model/settings";
import options from "resources/options.json";
import * as options from "resources/options";
import Account from "model/account";
import {DateTime} from "luxon";

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,21 @@
import {$gettext} from "common/vm";
export default {
private: $gettext("Exclude photos marked as private from search results, shared albums, labels and places."),
review: $gettext("Non-photographic and low-quality images require a review before they appear in search results."),
group: $gettext("Files with sequential names like 'IMG_1234 (2)' or 'IMG_1234 copy 2' belong to the same photo."),
move: $gettext("Move files from import to originals to save storage. Unsupported file types will never be deleted, they remain in their current location."),
places: $gettext("Search and display photos on a map."),
originals: $gettext("Display indexed files in Originals"),
moments: $gettext("Let PhotoPrism create albums from past events."),
labels: $gettext("Browse and edit image classification labels."),
import: $gettext("Imported files will be sorted by date and given a unique name."),
archive: $gettext("Hide photos that have been moved to archive."),
upload: $gettext("Add files to your library via Web Upload."),
download: $gettext("Download single files and zip archives."),
edit: $gettext("Change photo titles, locations and other metadata."),
share: $gettext("Upload to WebDAV and other remote services."),
logs: $gettext("Show server logs in Library."),
library: $gettext("Show Library in navigation menu."),
convert: $gettext("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."),
}

View file

@ -0,0 +1,50 @@
import {$gettext} from "common/vm";
export default {
cancel: $gettext("Cancel"),
confirm: $gettext("Save"),
save: $gettext("Save"),
enabled: $gettext("Enabled"),
disabled: $gettext("Disabled"),
name: $gettext("Name"),
url: $gettext("Service URL"),
user: $gettext("Username"),
pass: $gettext("Password"),
owner: $gettext("Owner"),
apiKey: $gettext("API Key"),
AccType: $gettext("Type"),
SharePath: $gettext("Default Folder"),
ShareSize: $gettext("Size"),
Expires: $gettext("Expires"),
SyncPath: $gettext("Folder"),
SyncInterval: $gettext("Interval"),
SyncFilenames: $gettext("Preserve filenames"),
SyncStart: $gettext("Start"),
SyncDownload: $gettext("Download remote files"),
SyncUpload: $gettext("Upload local files"),
SyncDelete: $gettext("Remote delete"),
SyncRaw: $gettext("Sync raw images"),
language: $gettext("Language"),
theme: $gettext("Theme"),
mapsAnimate: $gettext("Animation"),
mapsStyle: $gettext("Style"),
rescan: $gettext("Complete rescan"),
thumbs: $gettext("Create thumbnails"),
move: $gettext("Remove imported files"),
group: $gettext("Group Sequential"),
archive: $gettext("Archive"),
private: $gettext("Hide Private"),
review: $gettext("Quality Filter"),
places: $gettext("Places"),
originals: $gettext("Originals"),
moments: $gettext("Moments"),
labels: $gettext("Labels"),
import: $gettext("Import"),
upload: $gettext("Upload"),
download: $gettext("Download"),
edit: $gettext("Edit"),
share: $gettext("Share"),
logs: $gettext("Logs"),
library: $gettext("Library"),
convert: $gettext("Convert to JPEG"),
};

View file

@ -0,0 +1,95 @@
import {$gettext} from "common/vm";
import moment from "moment-timezone";
export const TimeZones = moment.tz.names();
export const Languages = [
{
"text": $gettext("English"),
"value": "en"
},
{
"text": $gettext("German"),
"value": "de"
},
{
"text": $gettext("Dutch"),
"value": "nl"
},
{
"text": $gettext("Russian"),
"value": "ru"
}
];
export const Themes = [
{
"text": $gettext("Default"),
"value": "default"
},
{
"text": $gettext("Cyano"),
"value": "cyano"
},
{
"text": $gettext("Lavender"),
"value": "lavender"
},
{
"text": $gettext("Moonlight"),
"value": "moonlight"
},
{
"text": $gettext("Onyx"),
"value": "onyx"
},
{
"text": $gettext("Raspberry"),
"value": "raspberry"
},
{
"text": $gettext("Seaweed"),
"value": "seaweed"
}
];
export const MapsAnimate = [
{
"text": $gettext("None"),
"value": 0
},
{
"text": $gettext("Fast"),
"value": 2500
},
{
"text": $gettext("Medium"),
"value": 6250
},
{
"text": $gettext("Slow"),
"value": 10000
}
];
export const MapsStyle = [
{
"text": $gettext("Offline"),
"value": "offline"
},
{
"text": $gettext("Streets"),
"value": "streets"
},
{
"text": $gettext("Hybrid"),
"value": "hybrid"
},
{
"text": $gettext("Topographic"),
"value": "topo"
},
{
"text": $gettext("Moonlight"),
"value": "darkmatter"
}
];

File diff suppressed because one or more lines are too long

View file

@ -21,7 +21,6 @@ msgstr ""
msgid " entries found"
msgstr ""
#: src/pages/album/photos.vue:255
#: src/share/photos.vue:298
msgid " entries loaded"
msgstr ""
@ -68,7 +67,7 @@ msgstr ""
msgid "Add"
msgstr ""
#: src/pages/settings/general.vue:418
#: src/resources/hints.js:14
msgid "Add files to your library via Web Upload."
msgstr ""
@ -122,7 +121,6 @@ msgstr ""
msgid "Albums deleted"
msgstr ""
#: src/pages/album/photos.vue:255
#: src/pages/albums.vue:365
#: src/pages/labels.vue:342
#: src/pages/photos.vue:290
@ -131,6 +129,10 @@ msgstr ""
msgid "All "
msgstr ""
#: src/pages/album/photos.vue:255
msgid "All %{n} entries loaded"
msgstr ""
#: src/component/album/toolbar.vue:79
#: src/component/photo/toolbar.vue:174
msgid "All Cameras"
@ -175,7 +177,7 @@ msgstr ""
msgid "All Years"
msgstr ""
#: src/dialog/photo/details.vue:446
#: src/dialog/photo/details.vue:445
msgid "Altitude (m)"
msgstr ""
@ -183,11 +185,11 @@ msgstr ""
msgid "An error occurred - are you offline?"
msgstr ""
#: src/pages/settings/general.vue:385
#: src/resources/labels.js:29
msgid "Animation"
msgstr ""
#: src/dialog/account/edit.vue:345
#: src/resources/labels.js:14
msgid "API Key"
msgstr ""
@ -202,7 +204,7 @@ msgstr ""
#: src/component/navigation.vue:87
#: src/component/photo/clipboard.vue:155
#: src/dialog/photo/archive.vue:15
#: src/pages/settings/general.vue:391
#: src/resources/labels.js:35
#: src/routes.js:164
#: src/share/photo/clipboard.vue:74
msgid "Archive"
@ -228,7 +230,7 @@ msgstr ""
msgid "Are you sure you want to delete this account?"
msgstr ""
#: src/dialog/photo/details.vue:451
#: src/dialog/photo/details.vue:450
msgid "Artist"
msgstr ""
@ -236,7 +238,7 @@ msgstr ""
msgid "At least 6 characters."
msgstr ""
#: src/pages/settings/general.vue:415
#: src/resources/hints.js:11
msgid "Browse and edit image classification labels."
msgstr ""
@ -254,7 +256,7 @@ msgstr ""
#: src/component/photo/list.vue:113
#: src/component/photo/toolbar.vue:198
#: src/dialog/album/edit.vue:116
#: src/dialog/photo/details.vue:430
#: src/dialog/photo/details.vue:429
#: src/share/photo/list.vue:96
msgid "Camera"
msgstr ""
@ -270,7 +272,6 @@ msgid "Can't load more, limit reached"
msgstr ""
#: src/dialog/account/add.vue:81
#: src/dialog/account/edit.vue:335
#: src/dialog/account/remove.vue:13
#: src/dialog/album/delete.vue:13
#: src/dialog/album/edit.vue:38
@ -281,6 +282,7 @@ msgstr ""
#: src/dialog/share/upload.vue:29
#: src/pages/library/import.vue:35
#: src/pages/library/index.vue:26
#: src/resources/labels.js:4
msgid "Cancel"
msgstr ""
@ -292,7 +294,7 @@ msgstr ""
#: src/component/album/toolbar.vue:121
#: src/component/photo/toolbar.vue:203
#: src/dialog/album/edit.vue:118
#: src/dialog/photo/details.vue:434
#: src/dialog/photo/details.vue:433
#: src/pages/albums.vue:241
#: src/share/albums.vue:163
msgid "Category"
@ -302,7 +304,7 @@ msgstr ""
msgid "Change Password"
msgstr ""
#: src/pages/settings/general.vue:420
#: src/resources/hints.js:16
msgid "Change photo titles, locations and other metadata."
msgstr ""
@ -329,7 +331,7 @@ msgid "Codec"
msgstr ""
#: src/component/photo/toolbar.vue:202
#: src/dialog/photo/details.vue:433
#: src/dialog/photo/details.vue:432
msgid "Color"
msgstr ""
@ -337,7 +339,7 @@ msgstr ""
msgid "Colors"
msgstr ""
#: src/pages/settings/general.vue:387
#: src/resources/labels.js:31
msgid "Complete rescan"
msgstr ""
@ -354,7 +356,7 @@ msgid "Connect"
msgstr ""
#: src/pages/albums.vue:105
msgid "Contains %{count} photos."
msgid "Contains %{n} photos."
msgstr ""
#: src/pages/albums.vue:102
@ -362,7 +364,7 @@ msgid "Contains one photo."
msgstr ""
#: src/pages/library/index.vue:116
#: src/pages/settings/general.vue:405
#: src/resources/labels.js:49
msgid "Convert to JPEG"
msgstr ""
@ -375,14 +377,14 @@ msgstr ""
msgid "Copy"
msgstr ""
#: src/dialog/photo/details.vue:452
#: src/dialog/photo/details.vue:451
msgid "Copyright"
msgstr ""
#: src/component/album/toolbar.vue:118
#: src/component/photo/toolbar.vue:197
#: src/dialog/album/edit.vue:115
#: src/dialog/photo/details.vue:429
#: src/dialog/photo/details.vue:428
msgid "Country"
msgstr ""
@ -390,7 +392,7 @@ msgstr ""
msgid "Create album"
msgstr ""
#: src/pages/settings/general.vue:388
#: src/resources/labels.js:32
msgid "Create thumbnails"
msgstr ""
@ -402,7 +404,15 @@ msgstr ""
msgid "Current Password"
msgstr ""
#: src/dialog/account/edit.vue:347
#: src/resources/options.js:31
msgid "Cyano"
msgstr ""
#: src/resources/options.js:27
msgid "Default"
msgstr ""
#: src/resources/labels.js:16
msgid "Default Folder"
msgstr ""
@ -418,7 +428,7 @@ msgstr ""
#: src/component/album/toolbar.vue:115
#: src/dialog/album/edit.vue:112
#: src/dialog/photo/details.vue:454
#: src/dialog/photo/details.vue:453
msgid "Description"
msgstr ""
@ -434,7 +444,7 @@ msgstr ""
msgid "Directory is empty"
msgstr ""
#: src/dialog/account/edit.vue:339
#: src/resources/labels.js:8
msgid "Disabled"
msgstr ""
@ -445,7 +455,7 @@ msgstr ""
msgid "Discover"
msgstr ""
#: src/pages/settings/general.vue:413
#: src/resources/hints.js:9
msgid "Display indexed files in Originals"
msgstr ""
@ -463,17 +473,17 @@ msgstr ""
#: src/component/file/clipboard.vue:78
#: src/component/label/clipboard.vue:91
#: src/component/photo/clipboard.vue:157
#: src/pages/settings/general.vue:400
#: src/resources/labels.js:44
#: src/share/album/clipboard.vue:70
#: src/share/photo/clipboard.vue:76
msgid "Download"
msgstr ""
#: src/dialog/account/edit.vue:354
#: src/resources/labels.js:23
msgid "Download remote files"
msgstr ""
#: src/pages/settings/general.vue:419
#: src/resources/hints.js:15
msgid "Download single files and zip archives."
msgstr ""
@ -491,9 +501,13 @@ msgstr ""
msgid "Duplicate"
msgstr ""
#: src/resources/options.js:16
msgid "Dutch"
msgstr ""
#: src/component/album/clipboard.vue:113
#: src/component/photo/clipboard.vue:152
#: src/pages/settings/general.vue:401
#: src/resources/labels.js:45
#: src/share/photo/clipboard.vue:71
msgid "Edit"
msgstr ""
@ -514,10 +528,14 @@ msgstr ""
msgid "Edited"
msgstr ""
#: src/dialog/account/edit.vue:338
#: src/resources/labels.js:7
msgid "Enabled"
msgstr ""
#: src/resources/options.js:8
msgid "English"
msgstr ""
#: src/dialog/photo/files.vue:91
msgid "Error"
msgstr ""
@ -530,20 +548,20 @@ msgstr ""
msgid "Event Log"
msgstr ""
#: src/pages/settings/general.vue:408
#: src/resources/hints.js:4
msgid "Exclude photos marked as private from search results, shared albums, labels and places."
msgstr ""
#: src/dialog/account/edit.vue:349
#: src/dialog/share.vue:173
#: src/resources/labels.js:18
msgid "Expires"
msgstr ""
#: src/dialog/photo/details.vue:447
#: src/dialog/photo/details.vue:446
msgid "Exposure"
msgstr ""
#: src/dialog/photo/details.vue:448
#: src/dialog/photo/details.vue:447
msgid "F Number"
msgstr ""
@ -563,6 +581,10 @@ msgstr ""
msgid "Failure while importing uploaded files"
msgstr ""
#: src/resources/options.js:61
msgid "Fast"
msgstr ""
#: src/dialog/photo/info.vue:91
msgid "Favorite"
msgstr ""
@ -581,7 +603,7 @@ msgid "File Browser"
msgstr ""
#: src/pages/library/index.vue:121
#: src/pages/settings/general.vue:424
#: src/resources/hints.js:20
msgid "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."
msgstr ""
@ -589,20 +611,20 @@ msgstr ""
msgid "Files"
msgstr ""
#: src/pages/settings/general.vue:410
#: src/resources/hints.js:6
msgid "Files with sequential names like 'IMG_1234 (2)' or 'IMG_1234 copy 2' belong to the same photo."
msgstr ""
#: src/dialog/photo/details.vue:449
#: src/dialog/photo/details.vue:448
msgid "Focal Length"
msgstr ""
#: src/dialog/account/edit.vue:350
#: src/dialog/share/upload.vue:93
#: src/model/folder.js:187
#: src/pages/library/files.vue:85
#: src/pages/library/import.vue:121
#: src/pages/library/index.vue:117
#: src/resources/labels.js:19
msgid "Folder"
msgstr ""
@ -620,13 +642,17 @@ msgstr ""
msgid "General"
msgstr ""
#: src/resources/options.js:12
msgid "German"
msgstr ""
#: src/component/album/toolbar.vue:104
#: src/component/photo/toolbar.vue:190
#: src/dialog/album/edit.vue:105
msgid "Group by similarity"
msgstr ""
#: src/pages/settings/general.vue:390
#: src/resources/labels.js:34
msgid "Group Sequential"
msgstr ""
@ -638,16 +664,20 @@ msgstr ""
msgid "Hidden Files"
msgstr ""
#: src/pages/settings/general.vue:417
#: src/resources/hints.js:13
msgid "Hide photos that have been moved to archive."
msgstr ""
#: src/pages/settings/general.vue:392
#: src/resources/labels.js:36
msgid "Hide Private"
msgstr ""
#: src/resources/options.js:84
msgid "Hybrid"
msgstr ""
#: src/pages/library/import.vue:44
#: src/pages/settings/general.vue:398
#: src/resources/labels.js:42
#: src/routes.js:241
msgid "Import"
msgstr ""
@ -660,7 +690,7 @@ msgstr ""
msgid "Imported files will be sorted by date and given a unique name to avoid duplicates."
msgstr ""
#: src/pages/settings/general.vue:416
#: src/resources/hints.js:12
msgid "Imported files will be sorted by date and given a unique name."
msgstr ""
@ -685,7 +715,7 @@ msgstr ""
msgid "Indexing photos and sidecar files..."
msgstr ""
#: src/dialog/account/edit.vue:351
#: src/resources/labels.js:20
msgid "Interval"
msgstr ""
@ -697,7 +727,7 @@ msgstr ""
msgid "JPEGs and thumbnails are automatically rendered as needed."
msgstr ""
#: src/dialog/photo/details.vue:455
#: src/dialog/photo/details.vue:454
msgid "Keywords"
msgstr ""
@ -713,7 +743,7 @@ msgstr ""
#: src/component/navigation.vue:228
#: src/dialog/photo/edit.vue:27
#: src/pages/settings/general.vue:397
#: src/resources/labels.js:41
#: src/routes.js:215
msgid "Labels"
msgstr ""
@ -722,34 +752,38 @@ msgstr ""
msgid "Labels deleted"
msgstr ""
#: src/dialog/photo/details.vue:438
#: src/pages/settings/general.vue:383
#: src/dialog/photo/details.vue:437
#: src/resources/labels.js:27
msgid "Language"
msgstr ""
#: src/dialog/photo/details.vue:444
#: src/dialog/photo/details.vue:443
msgid "Latitude"
msgstr ""
#: src/resources/options.js:35
msgid "Lavender"
msgstr ""
#: src/component/photo/toolbar.vue:199
#: src/dialog/photo/details.vue:431
#: src/dialog/photo/details.vue:430
msgid "Lens"
msgstr ""
#: src/pages/settings/general.vue:414
#: src/resources/hints.js:10
msgid "Let PhotoPrism create albums from past events."
msgstr ""
#: src/component/navigation.vue:241
#: src/component/navigation.vue:250
#: src/pages/settings/general.vue:6
#: src/pages/settings/general.vue:404
#: src/resources/labels.js:48
msgid "Library"
msgstr ""
#: src/component/navigation.vue:315
#: src/component/navigation.vue:33
#: src/dialog/photo/details.vue:453
#: src/dialog/photo/details.vue:452
#: src/pages/about/license.vue:4
msgid "License"
msgstr ""
@ -763,7 +797,7 @@ msgstr ""
msgid "List"
msgstr ""
#: src/dialog/photo/details.vue:441
#: src/dialog/photo/details.vue:440
msgid "Local Time"
msgstr ""
@ -781,20 +815,24 @@ msgid "Logout"
msgstr ""
#: src/pages/library.vue:17
#: src/pages/settings/general.vue:403
#: src/resources/labels.js:47
msgid "Logs"
msgstr ""
#: src/dialog/photo/details.vue:445
#: src/dialog/photo/details.vue:444
msgid "Longitude"
msgstr ""
#: src/resources/options.js:65
msgid "Medium"
msgstr ""
#: src/dialog/photo/files.vue:97
msgid "Missing"
msgstr ""
#: src/component/navigation.vue:183
#: src/pages/settings/general.vue:396
#: src/resources/labels.js:40
#: src/routes.js:84
#: src/routes.js:91
msgid "Moments"
@ -809,6 +847,11 @@ msgstr ""
msgid "Month"
msgstr ""
#: src/resources/options.js:39
#: src/resources/options.js:92
msgid "Moonlight"
msgstr ""
#: src/pages/albums.vue:446
#: src/share/albums.vue:350
msgid "More than 20 albums found"
@ -847,7 +890,7 @@ msgstr ""
msgid "Move Files"
msgstr ""
#: src/pages/settings/general.vue:411
#: src/resources/hints.js:7
msgid "Move files from import to originals to save storage. Unsupported file types will never be deleted, they remain in their current location."
msgstr ""
@ -861,13 +904,13 @@ msgstr[0] ""
msgstr[1] ""
#: src/component/photo/list.vue:115
#: src/dialog/account/edit.vue:340
#: src/dialog/album/edit.vue:111
#: src/dialog/photo/files.vue:43
#: src/dialog/photo/files.vue:162
#: src/dialog/photo/info.vue:27
#: src/pages/login.vue:59
#: src/pages/settings/sync.vue:94
#: src/resources/labels.js:9
#: src/share/photo/list.vue:97
msgid "Name"
msgstr ""
@ -949,13 +992,17 @@ msgstr ""
#: src/component/photo/list.vue:101
#: src/component/photo/mosaic.vue:11
#: src/dialog/upload.vue:52
#: src/pages/settings/general.vue:409
#: src/resources/hints.js:5
#: 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 ""
#: src/resources/options.js:57
msgid "None"
msgstr ""
#: src/model/thumb.js:66
msgid "Not Found"
msgstr ""
@ -972,7 +1019,7 @@ msgstr ""
msgid "Note: Updating the password will not revoke access from already authenticated users."
msgstr ""
#: src/dialog/photo/details.vue:456
#: src/dialog/photo/details.vue:455
msgid "Notes"
msgstr ""
@ -984,6 +1031,10 @@ msgstr ""
msgid "of"
msgstr ""
#: src/resources/options.js:76
msgid "Offline"
msgstr ""
#: src/dialog/photo/details.vue:128
msgid "OK"
msgstr ""
@ -1009,7 +1060,11 @@ msgstr ""
msgid "One photo found"
msgstr ""
#: src/dialog/account/edit.vue:396
#: src/resources/options.js:43
msgid "Onyx"
msgstr ""
#: src/dialog/account/edit.vue:373
msgid "Original"
msgstr ""
@ -1024,19 +1079,19 @@ msgstr ""
#: src/component/navigation.vue:258
#: src/pages/library/files.vue:6
#: src/pages/settings/general.vue:395
#: src/resources/labels.js:39
#: src/routes.js:248
msgid "Originals"
msgstr ""
#: src/dialog/account/edit.vue:344
#: src/resources/labels.js:13
msgid "Owner"
msgstr ""
#: src/dialog/account/add.vue:80
#: src/dialog/account/edit.vue:343
#: src/dialog/share.vue:154
#: src/pages/login.vue:60
#: src/resources/labels.js:12
msgid "Password"
msgstr ""
@ -1079,7 +1134,7 @@ msgstr ""
#: src/component/navigation.vue:196
#: src/component/navigation.vue:205
#: src/pages/settings/general.vue:124
#: src/pages/settings/general.vue:394
#: src/resources/labels.js:38
#: src/routes.js:171
#: src/routes.js:177
#: src/routes.js:183
@ -1107,7 +1162,7 @@ msgid ""
" missing."
msgstr ""
#: src/dialog/account/edit.vue:352
#: src/resources/labels.js:21
msgid "Preserve filenames"
msgstr ""
@ -1143,7 +1198,7 @@ msgstr ""
msgid "Private"
msgstr ""
#: src/pages/settings/general.vue:393
#: src/resources/labels.js:37
msgid "Quality Filter"
msgstr ""
@ -1155,6 +1210,10 @@ msgstr ""
msgid "Random"
msgstr ""
#: src/resources/options.js:47
msgid "Raspberry"
msgstr ""
#: src/pages/library/index.vue:120
msgid "Re-index all originals, including already indexed and unchanged files."
msgstr ""
@ -1165,11 +1224,11 @@ msgstr ""
msgid "Recently added"
msgstr ""
#: src/pages/settings/general.vue:442
#: src/pages/settings/general.vue:402
msgid "Reloading..."
msgstr ""
#: src/dialog/account/edit.vue:356
#: src/resources/labels.js:25
msgid "Remote delete"
msgstr ""
@ -1188,7 +1247,7 @@ msgstr ""
msgid "remove failed: unknown album"
msgstr ""
#: src/pages/settings/general.vue:389
#: src/resources/labels.js:33
msgid "Remove imported files"
msgstr ""
@ -1222,17 +1281,21 @@ msgstr ""
msgid "Root"
msgstr ""
#: src/dialog/account/edit.vue:336
#: src/dialog/account/edit.vue:337
#: src/resources/options.js:20
msgid "Russian"
msgstr ""
#: src/dialog/album/edit.vue:41
#: src/dialog/share.vue:60
#: src/resources/labels.js:5
#: src/resources/labels.js:6
msgid "Save"
msgstr ""
#: src/component/album/toolbar.vue:116
#: src/component/photo/toolbar.vue:195
#: src/dialog/album/edit.vue:113
#: src/dialog/photo/details.vue:427
#: src/dialog/photo/details.vue:426
#: src/dialog/photo/labels.vue:113
#: src/pages/albums.vue:239
#: src/pages/labels.vue:196
@ -1242,7 +1305,7 @@ msgstr ""
msgid "Search"
msgstr ""
#: src/pages/settings/general.vue:412
#: src/resources/hints.js:8
msgid "Search and display photos on a map."
msgstr ""
@ -1250,6 +1313,10 @@ msgstr ""
msgid "Season"
msgstr ""
#: src/resources/options.js:51
msgid "Seaweed"
msgstr ""
#: src/dialog/share.vue:260
msgid "Secret"
msgstr ""
@ -1262,8 +1329,8 @@ msgstr ""
msgid "Server Logs"
msgstr ""
#: src/dialog/account/edit.vue:341
#: src/dialog/share.vue:152
#: src/resources/labels.js:10
msgid "Service URL"
msgstr ""
@ -1277,7 +1344,7 @@ msgstr ""
msgid "Settings"
msgstr ""
#: src/pages/settings/general.vue:446
#: src/pages/settings/general.vue:406
msgid "Settings saved"
msgstr ""
@ -1287,7 +1354,7 @@ msgstr ""
#: src/component/album/clipboard.vue:114
#: src/component/photo/clipboard.vue:150
#: src/pages/settings/general.vue:402
#: src/resources/labels.js:46
#: src/share/album/clipboard.vue:69
#: src/share/photo/clipboard.vue:69
msgid "Share"
@ -1301,11 +1368,11 @@ msgstr ""
msgid "Shared with you."
msgstr ""
#: src/pages/settings/general.vue:423
#: src/resources/hints.js:19
msgid "Show Library in navigation menu."
msgstr ""
#: src/pages/settings/general.vue:422
#: src/resources/hints.js:18
msgid "Show server logs in Library."
msgstr ""
@ -1325,15 +1392,19 @@ msgstr ""
msgid "Similar"
msgstr ""
#: src/dialog/account/edit.vue:348
#: src/dialog/photo/files.vue:73
#: src/dialog/photo/files.vue:164
#: src/resources/labels.js:17
msgid "Size"
msgstr ""
#: src/resources/options.js:69
msgid "Slow"
msgstr ""
#: src/component/album/toolbar.vue:120
#: src/component/photo/toolbar.vue:204
#: src/dialog/photo/details.vue:435
#: src/dialog/photo/details.vue:434
msgid "Sort By"
msgstr ""
@ -1351,7 +1422,7 @@ msgstr ""
msgid "Source"
msgstr ""
#: src/dialog/account/edit.vue:353
#: src/resources/labels.js:22
msgid "Start"
msgstr ""
@ -1363,11 +1434,15 @@ msgstr ""
msgid "Status"
msgstr ""
#: src/pages/settings/general.vue:386
#: src/resources/options.js:80
msgid "Streets"
msgstr ""
#: src/resources/labels.js:30
msgid "Style"
msgstr ""
#: src/dialog/photo/details.vue:450
#: src/dialog/photo/details.vue:449
msgid "Subject"
msgstr ""
@ -1376,7 +1451,7 @@ msgstr ""
msgid "Sync"
msgstr ""
#: src/dialog/account/edit.vue:357
#: src/resources/labels.js:26
msgid "Sync raw images"
msgstr ""
@ -1390,37 +1465,37 @@ msgid "Taken"
msgstr ""
#: src/component/photo/toolbar.vue:206
#: src/dialog/photo/details.vue:437
#: src/dialog/photo/details.vue:436
msgid "Taken after"
msgstr ""
#: src/component/photo/toolbar.vue:205
#: src/dialog/photo/details.vue:436
#: src/dialog/photo/details.vue:435
msgid "Taken before"
msgstr ""
#: src/dialog/photo/details.vue:465
#: src/dialog/photo/details.vue:464
msgid "Text too long"
msgstr ""
#: src/pages/library/index.vue:35
msgid "The index currently contains %{count} hidden files."
msgid "The index currently contains %{n} hidden files."
msgstr ""
#: src/pages/library/index.vue:36
msgid "Their format may not be supported, they haven't been converted to JPEG yet or there are duplicates."
msgstr ""
#: src/pages/settings/general.vue:384
#: src/resources/labels.js:28
msgid "Theme"
msgstr ""
#: src/dialog/photo/details.vue:439
#: src/dialog/photo/details.vue:438
msgid "Time Zone"
msgstr ""
#: src/component/photo/list.vue:111
#: src/dialog/photo/details.vue:440
#: src/dialog/photo/details.vue:439
#: src/dialog/photo/info.vue:41
#: src/share/photo/list.vue:94
msgid "Title"
@ -1443,6 +1518,10 @@ msgstr ""
msgid "Too many files in folder, showing first"
msgstr ""
#: src/resources/options.js:88
msgid "Topographic"
msgstr ""
#: src/pages/about/about.vue:63
msgid "Trademarks"
msgstr ""
@ -1466,10 +1545,10 @@ msgstr ""
msgid "Try using other terms and search options such as category, country and camera."
msgstr ""
#: src/dialog/account/edit.vue:346
#: src/dialog/photo/files.vue:79
#: src/dialog/photo/files.vue:165
#: src/dialog/photo/info.vue:15
#: src/resources/labels.js:15
msgid "Type"
msgstr ""
@ -1483,6 +1562,7 @@ msgstr ""
#: src/component/photo/toolbar.vue:237
#: src/component/photo/toolbar.vue:252
#: src/dialog/photo/details.vue:420
#: src/dialog/photo/info.vue:197
#: src/model/photo.js:349
#: src/model/photo.js:361
@ -1502,8 +1582,8 @@ msgstr ""
#: src/dialog/upload.vue:8
#: src/dialog/upload.vue:56
#: src/pages/library/import.vue:39
#: src/pages/settings/general.vue:399
#: src/pages/settings/sync.vue:95
#: src/resources/labels.js:43
msgid "Upload"
msgstr ""
@ -1519,11 +1599,11 @@ msgstr ""
msgid "Upload failed"
msgstr ""
#: src/dialog/account/edit.vue:355
#: src/resources/labels.js:24
msgid "Upload local files"
msgstr ""
#: src/pages/settings/general.vue:421
#: src/resources/hints.js:17
msgid "Upload to WebDAV and other remote services."
msgstr ""
@ -1550,16 +1630,16 @@ msgid "User Interface"
msgstr ""
#: src/dialog/account/add.vue:79
#: src/dialog/account/edit.vue:342
#: src/dialog/share.vue:153
#: src/resources/labels.js:11
msgid "Username"
msgstr ""
#: src/dialog/photo/details.vue:443
#: src/dialog/photo/details.vue:442
msgid "UTC Date"
msgstr ""
#: src/dialog/photo/details.vue:442
#: src/dialog/photo/details.vue:441
msgid "UTC Time"
msgstr ""
@ -1577,7 +1657,7 @@ msgstr ""
#: src/component/album/toolbar.vue:117
#: src/component/photo/toolbar.vue:196
#: src/dialog/album/edit.vue:114
#: src/dialog/photo/details.vue:428
#: src/dialog/photo/details.vue:427
msgid "View"
msgstr ""
@ -1613,7 +1693,7 @@ msgid "Who we are"
msgstr ""
#: src/component/photo/toolbar.vue:200
#: src/dialog/photo/details.vue:432
#: src/dialog/photo/details.vue:431
#: src/dialog/photo/info.vue:53
msgid "Year"
msgstr ""