mirror of
https://github.com/VueTorrent/VueTorrent.git
synced 2024-11-28 21:18:54 +03:00
perf: support more translations + add Simplified Chinese translations (#415)
* Extract all translatable strings in the settings dialog box. * Finish All string extract. issue: 1. src\components\Modals\ShareLimit\ShareLimitInput.vue :label="`${title} Limit`" 2. src\components\Modals\TagsAndCategories\CreateCategoryDialog.vue all tips not work 3. src\components\Modals\TorrentDetailModal\Tabs\Trackers.vue no idea about formatTrackerStatus Signed-off-by: Dee.H.Y <dongfengweixiao@hotmail.com>
This commit is contained in:
parent
ea8e4a4f75
commit
ddd28ae619
45 changed files with 863 additions and 261 deletions
|
@ -87,14 +87,14 @@
|
|||
<v-textarea
|
||||
v-if="files.length == 0"
|
||||
v-model="urls"
|
||||
label="URL"
|
||||
:label="$t('url')"
|
||||
:prepend-icon="mdiLink"
|
||||
rows="1"
|
||||
required
|
||||
:autofocus="!phoneLayout"
|
||||
auto-grow
|
||||
clearable
|
||||
hint="One link per line"
|
||||
:hint="$t('modals.add.urlHint')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
@ -103,7 +103,7 @@
|
|||
v-model="category"
|
||||
:items="availableCategories"
|
||||
clearable
|
||||
label="Category"
|
||||
:label="$t('category')"
|
||||
item-text="name"
|
||||
:prepend-icon="mdiTag"
|
||||
@input="categoryChanged"
|
||||
|
@ -112,7 +112,7 @@
|
|||
<v-text-field
|
||||
v-model="directory"
|
||||
:disabled="autoTMM"
|
||||
label="Download Directory"
|
||||
:label="$t('modals.add.downloadDirectory')"
|
||||
:prepend-icon="mdiFolder"
|
||||
autocomplete="download-directory"
|
||||
name="download-directory"
|
||||
|
@ -121,28 +121,28 @@
|
|||
<v-flex xs12 sm6>
|
||||
<v-checkbox
|
||||
v-model="start"
|
||||
label="Start torrent"
|
||||
:label="$t('modals.add.starttorrent')"
|
||||
hide-details
|
||||
/>
|
||||
</v-flex>
|
||||
<v-flex xs12 sm6>
|
||||
<v-checkbox
|
||||
v-model="skip_checking"
|
||||
label="Skip hash check"
|
||||
:label="$t('modals.add.skipHashCheck')"
|
||||
hide-details
|
||||
/>
|
||||
</v-flex>
|
||||
<v-flex xs12 sm6>
|
||||
<v-checkbox
|
||||
v-model="root_folder"
|
||||
label="Create subfolder"
|
||||
:label="$t('modals.add.createSubfolder')"
|
||||
hide-details
|
||||
/>
|
||||
</v-flex>
|
||||
<v-flex xs12 sm6>
|
||||
<v-checkbox
|
||||
v-model="autoTMM"
|
||||
label="Automatic Torrent Management"
|
||||
:label="$t('modals.add.automaticTorrentManagement')"
|
||||
hide-details
|
||||
/>
|
||||
</v-flex>
|
||||
|
@ -198,7 +198,7 @@
|
|||
</v-icon>
|
||||
</div>
|
||||
<div>
|
||||
<h3>Drop here for add</h3>
|
||||
<h3>{{ $t('modals.add.dropHereForAdd') }}</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -234,7 +234,7 @@ export default {
|
|||
else return /^.*\.torrent$/.test(f.name)
|
||||
})
|
||||
|
||||
return result ? result : 'One or more files is not a valid torrent'
|
||||
return result ? result : this.$i18n.t('modals.add.oneOrMoreFilesInvalidTorrent')
|
||||
}
|
||||
],
|
||||
loading: false,
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<v-card>
|
||||
<v-card-title class="pa-0">
|
||||
<v-toolbar-title class="ma-4 primarytext--text">
|
||||
<h3>Change Location</h3>
|
||||
<h3>{{ $t('modals.changeLocation.title') }}</h3>
|
||||
</v-toolbar-title>
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
|
@ -17,13 +17,13 @@
|
|||
<v-col>
|
||||
<v-text-field
|
||||
v-model="torrent.name"
|
||||
label="Torrent Name"
|
||||
:label="$t('modals.changeLocation.torrentName')"
|
||||
:prepend-icon="mdiFile"
|
||||
readonly
|
||||
/>
|
||||
<v-text-field
|
||||
v-model="newPath"
|
||||
label="Directory"
|
||||
:label="$t('directory')"
|
||||
:prepend-icon="mdiFolder"
|
||||
@keydown.enter="setLocation"
|
||||
/>
|
||||
|
@ -37,13 +37,13 @@
|
|||
class="accent white--text elevation-0 px-4"
|
||||
@click="setLocation"
|
||||
>
|
||||
Save
|
||||
{{ $t('save') }}
|
||||
</v-btn>
|
||||
<v-btn
|
||||
class="error white--text elevation-0 px-4"
|
||||
@click="close"
|
||||
>
|
||||
Cancel
|
||||
{{ $t('cancel') }}
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<v-card>
|
||||
<v-card-title class="pa-0">
|
||||
<v-toolbar-title class="ma-4 primarytext--text">
|
||||
<h3>Rename</h3>
|
||||
<h3>{{ $t('modals.rename.title') }}</h3>
|
||||
</v-toolbar-title>
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
|
@ -21,7 +21,7 @@
|
|||
rows="1"
|
||||
auto-grow
|
||||
clearable
|
||||
label="Torrent Name"
|
||||
:label="$t('modals.rename.torrentName')"
|
||||
:prepend-inner-icon="mdiFile"
|
||||
/>
|
||||
</v-col>
|
||||
|
@ -42,13 +42,13 @@
|
|||
class="accent white--text elevation-0 px-4"
|
||||
@click="rename"
|
||||
>
|
||||
save
|
||||
{{ $t('save') }}
|
||||
</v-btn>
|
||||
<v-btn
|
||||
class="error white--text elevation-0 px-4"
|
||||
@click="close"
|
||||
>
|
||||
cancel
|
||||
{{ $t('cancel') }}
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div>
|
||||
<v-btn @click="opened = true">
|
||||
<v-icon>{{ mdiCog }}</v-icon> Plugin manager
|
||||
<v-icon>{{ mdiCog }}</v-icon> {{ $t('modals.pluginManager.title') | titleCase }}
|
||||
</v-btn>
|
||||
|
||||
<v-bottom-sheet
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
>
|
||||
<v-card :style="{ height: phoneLayout ? '100vh' : '' }">
|
||||
<v-card-title class="justify-center">
|
||||
<h2>Search</h2>
|
||||
<h2>{{ $t('modals.search.title') }}</h2>
|
||||
</v-card-title>
|
||||
<v-card-text class="pa-0">
|
||||
<v-form
|
||||
|
@ -35,7 +35,7 @@
|
|||
:color="loading ? 'warning' : 'primary'"
|
||||
@click="loading ? stopSearch() : startSearch()"
|
||||
>
|
||||
{{ loading ? "Stop" : "Search" }}
|
||||
{{ loading ? $t('modals.search.btnStopSearch') : $t('modals.search.btnStartSearch') }}
|
||||
</v-btn>
|
||||
</v-col>
|
||||
</v-flex>
|
||||
|
@ -106,12 +106,12 @@ export default {
|
|||
loading: false,
|
||||
grid: {
|
||||
headers: [
|
||||
{ text: 'Name', value: 'fileName' },
|
||||
{ text: 'Size', value: 'fileSize' },
|
||||
{ text: 'Seeds', value: 'nbSeeders' },
|
||||
{ text: 'Peers', value: 'nbLeechers' },
|
||||
{ text: 'Search_engine', value: 'siteUrl' },
|
||||
{ text: 'Action', value: 'actions', sortable: false }
|
||||
{ text: this.$i18n.t('modals.search.columnTitle.name'), value: 'fileName' },
|
||||
{ text: this.$i18n.t('modals.search.columnTitle.size'), value: 'fileSize' },
|
||||
{ text: this.$i18n.t('modals.search.columnTitle.seeds'), value: 'nbSeeders' },
|
||||
{ text: this.$i18n.t('modals.search.columnTitle.peers'), value: 'nbLeechers' },
|
||||
{ text: this.$i18n.t('modals.search.columnTitle.search_engine'), value: 'siteUrl' },
|
||||
{ text: this.$i18n.t('modals.search.columnTitle.action'), value: 'actions', sortable: false }
|
||||
]
|
||||
},
|
||||
searchForm: {
|
||||
|
|
|
@ -20,22 +20,22 @@
|
|||
<v-tabs v-model="tab" align-with-title show-arrows>
|
||||
<v-tabs-slider color="white" />
|
||||
<v-tab class="white--text" href="#vuetorrent">
|
||||
<h4>vuetorrent</h4>
|
||||
<h4>{{ $t('modals.settings.tabName.VueTorrent') }}</h4>
|
||||
</v-tab>
|
||||
<v-tab class="white--text" href="#downloads">
|
||||
<h4>downloads</h4>
|
||||
<h4>{{ $t('modals.settings.tabName.downloads') }}</h4>
|
||||
</v-tab>
|
||||
<v-tab class="white--text" href="#connection">
|
||||
<h4>connection</h4>
|
||||
<h4>{{ $t('modals.settings.tabName.connection') }}</h4>
|
||||
</v-tab>
|
||||
<v-tab class="white--text" href="#bittorrent">
|
||||
<h4>bittorrent</h4>
|
||||
<h4>{{ $t('modals.settings.tabName.bittorrent') }}</h4>
|
||||
</v-tab>
|
||||
<v-tab class="white--text" href="#webui">
|
||||
<h4>WEB UI</h4>
|
||||
<h4>{{ $t('modals.settings.tabName.webUI') }}</h4>
|
||||
</v-tab>
|
||||
<v-tab class="white--text" href="#tagsAndCategories">
|
||||
<h4>tags & categories</h4>
|
||||
<h4>{{ $t('modals.settings.tabName.tagsAndCategories') }}</h4>
|
||||
</v-tab>
|
||||
</v-tabs>
|
||||
</template>
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-subheader>Privacy</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.pageBittorrent.subHeaderPrivacy') }}</v-subheader>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.dht"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Enable DHT (decentralized network) to find more peers"
|
||||
:label="$t('modals.settings.pageBittorrent.enableDHT')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
|
@ -14,7 +14,7 @@
|
|||
v-model="settings.pex"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Enable Peer Exchange (PeX) to find more peers"
|
||||
:label="$t('modals.settings.pageBittorrent.enablePeX')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
|
@ -22,7 +22,7 @@
|
|||
v-model="settings.lsd"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Enable Local Peer Discovery to find more peers"
|
||||
:label="$t('modals.settings.pageBittorrent.enableLPD')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
|
@ -30,7 +30,7 @@
|
|||
v-model="settings.lsd"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Enable anonymous mode"
|
||||
:label="$t('modals.settings.pageBittorrent.enableAnonymous')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-divider insert />
|
||||
|
@ -39,7 +39,7 @@
|
|||
v-model="settings.queueing_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Torrent Queueing"
|
||||
:label="$t('modals.settings.pageBittorrent.torrentQueue')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
|
@ -50,7 +50,7 @@
|
|||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
label="Maximum active downloads"
|
||||
:label="$t('modals.settings.pageBittorrent.maxActiveDownload')"
|
||||
:disabled="!settings.queueing_enabled"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
@ -62,7 +62,7 @@
|
|||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
label="Maximum active uploads"
|
||||
:label="$t('modals.settings.pageBittorrent.maxActiveUpload')"
|
||||
:disabled="!settings.queueing_enabled"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
@ -74,7 +74,7 @@
|
|||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
label="Maximum active torrents"
|
||||
:label="$t('modals.settings.pageBittorrent.maxActiveTorrent')"
|
||||
:disabled="!settings.queueing_enabled"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
@ -83,7 +83,7 @@
|
|||
v-model="settings.dont_count_slow_torrents"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Do not count slow torrents in these limits"
|
||||
:label="$t('modals.settings.pageBittorrent.excludeSlowTorrent')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
|
@ -94,7 +94,7 @@
|
|||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
label="Download rate threshold KiB/s"
|
||||
:label="$t('modals.settings.pageBittorrent.downloadRateLimit')"
|
||||
:disabled="!settings.dont_count_slow_torrents"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
@ -106,7 +106,7 @@
|
|||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
label="Upload rate threshold KiB/s"
|
||||
:label="$t('modals.settings.pageBittorrent.uploadRateLimit')"
|
||||
:disabled="!settings.dont_count_slow_torrents"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
@ -118,12 +118,12 @@
|
|||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
label="Torrent inactivity timer"
|
||||
:label="$t('modals.settings.pageBittorrent.torrentInactivityTimer')"
|
||||
:disabled="!settings.dont_count_slow_torrents"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-divider insert />
|
||||
<v-subheader>Seed Limits</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.pageBittorrent.subHeaderSeedLimits') }}</v-subheader>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
|
@ -131,7 +131,7 @@
|
|||
v-model="settings.max_ratio_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="When ratio reaches"
|
||||
:label="$t('modals.settings.pageBittorrent.whenRatioReaches')"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col>
|
||||
|
@ -154,7 +154,7 @@
|
|||
v-model="settings.max_seeding_time_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="When seeding time reaches"
|
||||
:label="$t('modals.settings.pageBittorrent.whenSeedingTimeReaches')"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-subheader>Connection Limits</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.pageConnection.subHeader') }}</v-subheader>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.max_connec"
|
||||
|
@ -9,7 +9,7 @@
|
|||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
label="Global maximum number of connections"
|
||||
:label="$t('modals.settings.pageConnection.globalMaxConnection')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
|
@ -20,7 +20,7 @@
|
|||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
label="Maximum number of connections per torrent"
|
||||
:label="$t('modals.settings.pageConnection.perTorrentMaxConnection')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
|
@ -31,7 +31,7 @@
|
|||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
label="Global maximum number of upload slots"
|
||||
:label="$t('modals.settings.pageConnection.globalMaxUploadSlots')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
|
@ -42,7 +42,7 @@
|
|||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
label="Maximum number of upload slots per torrent"
|
||||
:label="$t('modals.settings.pageConnection.perTorrentMaxUploadSlots')"
|
||||
/>
|
||||
</v-list-item>
|
||||
</v-card>
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-subheader>When adding a torrent</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.pageDownloads.subHeaderWhenAddTorrent') }}</v-subheader>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.create_subfolder_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Create subfolder for torrents with multiple files"
|
||||
:label="$t('modals.settings.pageDownloads.whenAddTorrent.createSubFolder')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
|
@ -14,17 +14,17 @@
|
|||
v-model="settings.start_paused_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Do not start the download automatically"
|
||||
:label="$t('modals.settings.pageDownloads.whenAddTorrent.donotAutoStart')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-divider insert />
|
||||
<v-subheader>Public Settings</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.pageDownloads.subHeaderPublicSettings') }}</v-subheader>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.preallocate_all"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Pre-allocate disk space for all files"
|
||||
:label="$t('modals.settings.pageDownloads.publicSettings.preAllocateDisk')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
|
@ -32,17 +32,17 @@
|
|||
v-model="settings.incomplete_files_ext"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Append .!qB extension to incomplete files"
|
||||
:label="$t('modals.settings.pageDownloads.publicSettings.appendQBExtension')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-divider insert />
|
||||
<v-subheader>Saving Management</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.pageDownloads.subHeaderSaveManagement') }}</v-subheader>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.auto_tmm_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Automatic Torrent Management"
|
||||
:label="$t('modals.settings.pageDownloads.saveManagement.autoManagement')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item class="mb-2">
|
||||
|
@ -50,7 +50,7 @@
|
|||
v-model="settings.save_path_changed_tmm_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Relocate Torrent when category changes"
|
||||
:label="$t('modals.settings.pageDownloads.saveManagement.relocate')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item class="mb-2">
|
||||
|
@ -59,7 +59,7 @@
|
|||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
label="Default Save Path"
|
||||
:label="$t('modals.settings.pageDownloads.saveManagement.defaultSavePath')"
|
||||
hide-details
|
||||
/>
|
||||
</v-list-item>
|
||||
|
@ -68,7 +68,7 @@
|
|||
v-model="settings.temp_path_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Keep incomplete torrents in:"
|
||||
:label="$t('modals.settings.pageDownloads.saveManagement.keepIncompleteIn')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item v-if="settings.temp_path_enabled">
|
||||
|
@ -85,7 +85,7 @@
|
|||
v-model="settings.autorun_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Autorun enabled:"
|
||||
:label="$t('modals.settings.pageDownloads.saveManagement.autoEnabled')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item v-if="settings.autorun_enabled">
|
||||
|
@ -94,25 +94,25 @@
|
|||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
label="Autorun program"
|
||||
:label="$t('modals.settings.pageDownloads.saveManagement.autorunProgram')"
|
||||
hide-details
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item v-if="settings.autorun_enabled" class="mb-4">
|
||||
<v-card flat color="grey--text selected">
|
||||
<v-card-text>
|
||||
<h5>Supported parameters (case sensitive):</h5>
|
||||
<h5>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamTitle') }}</h5>
|
||||
<ul>
|
||||
<li>%N: Torrent name </li>
|
||||
<li>%L: Category</li>
|
||||
<li>%G: Tags (separated by comma)</li>
|
||||
<li>%F: Content path (same as root path for multi-file torrent)</li>
|
||||
<li>%R: Root path (first torrent subdirectory path)</li>
|
||||
<li>%D: Save path</li>
|
||||
<li>%C: Number of files</li>
|
||||
<li>%Z: Torrent size (bytes)</li>
|
||||
<li>%T: Current tracker</li>
|
||||
<li>%I: Info hash</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamN') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamL') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamG') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamF') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamR') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamD') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamC') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamZ') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamT') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamI') }}</li>
|
||||
</ul>
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<v-card flat>
|
||||
<v-row dense class="ma-0 pa-0">
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>Available Tags:</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.pageTagsAndCategories.subHeaderTags') }}</v-subheader>
|
||||
<template v-for="(item, index) in availableTags">
|
||||
<v-list-item :key="item.title">
|
||||
<v-list-item-content>
|
||||
|
@ -24,13 +24,13 @@
|
|||
class="mx-auto accent white--text elevation-0 px-4"
|
||||
@click="createTag"
|
||||
>
|
||||
Create new
|
||||
{{ $t('modals.settings.pageTagsAndCategories.btnCreateNew') }}
|
||||
</v-btn>
|
||||
</v-list-item>
|
||||
</v-col>
|
||||
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>Available Categories:</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.pageTagsAndCategories.subHeaderCategories') }}</v-subheader>
|
||||
<template v-for="(item, index) in availableCategories">
|
||||
<v-list-item :key="item.title">
|
||||
<v-list-item-content>
|
||||
|
@ -58,7 +58,7 @@
|
|||
class="mx-auto accent white--text elevation-0 px-4"
|
||||
@click="createCategory"
|
||||
>
|
||||
Create new
|
||||
{{ $t('modals.settings.pageTagsAndCategories.btnCreateNew') }}
|
||||
</v-btn>
|
||||
</v-list-item>
|
||||
</v-col>
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
<v-card flat>
|
||||
<v-tabs v-model="tab">
|
||||
<v-tab href="#general">
|
||||
General
|
||||
{{ $t('modals.settings.pageVueTorrent.tabName.general') }}
|
||||
</v-tab>
|
||||
<v-tab href="#dashboard">
|
||||
Dashboard
|
||||
{{ $t('modals.settings.pageVueTorrent.tabName.dashboard') }}
|
||||
</v-tab>
|
||||
</v-tabs>
|
||||
<v-tabs-items v-model="tab" touchless>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<v-row dense>
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>
|
||||
Properties to display for busy torrents
|
||||
{{ $t('modals.settings.pageVueTorrent.pageDashboard.busyTorrentTip') }}
|
||||
</v-subheader>
|
||||
<v-row dense>
|
||||
<v-list flat class="ma-2 pa-0">
|
||||
|
@ -38,7 +38,7 @@
|
|||
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>
|
||||
Properties to display for completed torrents
|
||||
{{ $t('modals.settings.pageVueTorrent.pageDashboard.completedTorrentTip') }}
|
||||
</v-subheader>
|
||||
<v-row dense>
|
||||
<v-list flat class="ma-2 pa-0">
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-subheader>
|
||||
These settings are for the custom WebUI
|
||||
itself
|
||||
{{ $t('modals.settings.pageVueTorrent.pageGeneral.tip') }}
|
||||
</v-subheader>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
|
@ -12,7 +11,7 @@
|
|||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
label="Show Current Speed"
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.currentSpeed')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
@ -25,7 +24,7 @@
|
|||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
label="Show Speed Graph"
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.speedGraph')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
@ -38,7 +37,7 @@
|
|||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
label="Show Session Stats"
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.sessionStats')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
@ -51,7 +50,7 @@
|
|||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
label="Show All-Time Stats"
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.allTimeStats')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
@ -64,7 +63,7 @@
|
|||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
label="Show Free Space"
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.freeSpace')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
@ -77,7 +76,7 @@
|
|||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
label="Show Tracker Filter"
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.trackerFilter')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
@ -90,7 +89,7 @@
|
|||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
label="Right Drawer"
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.rightDrawer')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
@ -99,7 +98,7 @@
|
|||
<v-row dense>
|
||||
<v-col cols="8" sm="8" md="10">
|
||||
<p class="subtitle-1 mt-2">
|
||||
Language:
|
||||
{{ $t('modals.settings.pageVueTorrent.pageGeneral.language') }}
|
||||
</p>
|
||||
</v-col>
|
||||
<v-col cols="4" sm="4" md="2">
|
||||
|
@ -120,7 +119,7 @@
|
|||
<v-row dense>
|
||||
<v-col cols="8" sm="8" md="10">
|
||||
<p class="subtitle-1 mt-2">
|
||||
Pagination size:
|
||||
{{ $t('modals.settings.pageVueTorrent.pageGeneral.paginationSize') }}
|
||||
</p>
|
||||
</v-col>
|
||||
<v-col cols="4" sm="4" md="2">
|
||||
|
@ -141,7 +140,7 @@
|
|||
<v-row dense>
|
||||
<v-col cols="8" sm="8" md="10">
|
||||
<p class="subtitle-1 mt-2">
|
||||
VueTorrent title:
|
||||
{{ $t('modals.settings.pageVueTorrent.pageGeneral.vueTorrentTitle') }}
|
||||
</p>
|
||||
</v-col>
|
||||
<v-col cols="4" sm="4" md="2">
|
||||
|
@ -162,7 +161,7 @@
|
|||
<v-row dense>
|
||||
<v-col cols="10" sm="10" md="11">
|
||||
<p class="subtitle-1">
|
||||
Current Version:
|
||||
{{ $t('modals.settings.pageVueTorrent.pageGeneral.currentVersion') }}
|
||||
</p>
|
||||
</v-col>
|
||||
<v-col cols="2" sm="2" md="1">
|
||||
|
@ -176,7 +175,7 @@
|
|||
<v-row dense>
|
||||
<v-col cols="10" sm="10" md="11">
|
||||
<p class="subtitle-1">
|
||||
QBittorrent Version:
|
||||
{{ $t('modals.settings.pageVueTorrent.pageGeneral.qbittorrentVersion') }}
|
||||
</p>
|
||||
</v-col>
|
||||
<v-col cols="2" sm="2" md="1">
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
v-model="settings.alternative_webui_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Use Alternative WebUI"
|
||||
:label="$t('modals.settings.pageWebUI.useAlternativeWebUI')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
|
@ -15,12 +15,12 @@
|
|||
outlined
|
||||
dense
|
||||
hide-details
|
||||
label="Files location"
|
||||
:label="$t('modals.settings.pageWebUI.filesLocation')"
|
||||
:disabled="!settings.alternative_webui_enabled"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-divider insert />
|
||||
<v-subheader>Web User Interface (Remote Control)</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.pageWebUI.webUserInterface') }}</v-subheader>
|
||||
<v-list-item>
|
||||
<v-row class="ml-5 mr-5 pb-4">
|
||||
<v-col cols="9" class="pa-0">
|
||||
|
@ -30,7 +30,7 @@
|
|||
outlined
|
||||
dense
|
||||
hide-details="true"
|
||||
label="IP Address:"
|
||||
:label="$t('modals.settings.pageWebUI.ipAddress')"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col cols="3" class="pa-0">
|
||||
|
@ -41,13 +41,13 @@
|
|||
dense
|
||||
type="number"
|
||||
hide-details="true"
|
||||
label="Port"
|
||||
:label="$t('modals.settings.pageWebUI.port')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-divider insert />
|
||||
<v-subheader>Authentication</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.pageWebUI.authentication') }}</v-subheader>
|
||||
<v-list-item>
|
||||
<v-row class="ml-5 mr-5 pb-4">
|
||||
<v-col cols="6" class="pa-0">
|
||||
|
@ -57,7 +57,7 @@
|
|||
outlined
|
||||
dense
|
||||
hide-details="true"
|
||||
label="Username"
|
||||
:label="$t('modals.settings.pageWebUI.username')"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col cols="6" class="pa-0">
|
||||
|
@ -67,7 +67,7 @@
|
|||
outlined
|
||||
dense
|
||||
hide-details="true"
|
||||
label="password"
|
||||
:label="$t('modals.settings.pageWebUI.password')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
@ -82,7 +82,7 @@
|
|||
dense
|
||||
type="number"
|
||||
hide-details="true"
|
||||
label="Max attempts"
|
||||
:label="$t('modals.settings.pageWebUI.maxAttempts')"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col cols="6" class="pa-0">
|
||||
|
@ -93,7 +93,7 @@
|
|||
dense
|
||||
type="number"
|
||||
hide-details="true"
|
||||
label="Ban Duration (seconds)"
|
||||
:label="$t('modals.settings.pageWebUI.banDuration')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
@ -106,7 +106,7 @@
|
|||
dense
|
||||
type="number"
|
||||
hide-details="true"
|
||||
label="Session timeout (seconds)"
|
||||
:label="$t('modals.settings.pageWebUI.sessionTimeout')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item class="ml-4">
|
||||
|
@ -114,7 +114,7 @@
|
|||
v-model="settings.bypass_local_auth"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Bypass authentication for clients on localhost"
|
||||
:label="$t('modals.settings.pageWebUI.bypassAuthenticationForClientsOnLocalhost')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item class="ml-4">
|
||||
|
@ -122,7 +122,7 @@
|
|||
v-model="settings.bypass_auth_subnet_whitelist_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
label="Bypass authentication for clients in whitelisted IP subnets"
|
||||
:label="$t('modals.settings.pageWebUI.bypassAuthenticationForClientsInWhitelisted')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item class="ml-4">
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
label="Use global limit"
|
||||
:label="$t('modals.shareLimit.input.globalLimit')"
|
||||
@change="disableUnlimited"
|
||||
/>
|
||||
</v-col>
|
||||
|
@ -23,7 +23,7 @@
|
|||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
label="Unlimited"
|
||||
:label="$t('modals.shareLimit.input.unlimited')"
|
||||
@change="disabledGlobal"
|
||||
/>
|
||||
</v-col>
|
||||
|
|
|
@ -9,14 +9,18 @@
|
|||
<v-card class="px-2">
|
||||
<v-card-title class="pa-0">
|
||||
<v-toolbar-title class="ma-4 primarytext--text">
|
||||
<h3>Limit Ratio</h3>
|
||||
<h3>{{ $t('modals.shareLimit.limitRatio') }}</h3>
|
||||
</v-toolbar-title>
|
||||
</v-card-title>
|
||||
<v-card-text class="px-4 py-2">
|
||||
<ShareLimitInput ref="ratio" title="Ratio" :initial-limit="torrent.ratio_limit" />
|
||||
<ShareLimitInput
|
||||
ref="ratio"
|
||||
:title="$t('modals.shareLimit.titleRatio')"
|
||||
:initial-limit="torrent.ratio_limit"
|
||||
/>
|
||||
<ShareLimitInput
|
||||
ref="time"
|
||||
title="Duration"
|
||||
:title="$t('modals.shareLimit.titleDuration')"
|
||||
:initial-limit="torrent.ratio_time_limit"
|
||||
class="mt-2"
|
||||
/>
|
||||
|
@ -24,10 +28,10 @@
|
|||
<v-divider />
|
||||
<v-card-actions class="justify-end">
|
||||
<v-btn class="accent white--text elevation-0 px-4" @click="save">
|
||||
Save
|
||||
{{ $t('save') }}
|
||||
</v-btn>
|
||||
<v-btn class="error white--text elevation-0 px-4" @click="close">
|
||||
Cancel
|
||||
{{ $t('cancel') }}
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
>
|
||||
<v-card>
|
||||
<v-card-title class="justify-center primarytext--text">
|
||||
<h2>Sort Torrents</h2>
|
||||
<h2>{{ $t('modals.sort.title') }}</h2>
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
<v-form class="px-6 mt-3 justify-center mx-auto">
|
||||
|
@ -32,7 +32,7 @@
|
|||
style="padding-left: 10px !important"
|
||||
>
|
||||
<template #label>
|
||||
Reverse
|
||||
{{ $t('modals.sort.reverse') }}
|
||||
</template>
|
||||
</v-switch>
|
||||
</v-container>
|
||||
|
@ -51,30 +51,32 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
sortProperty: { value: 'added_on', name: 'Added On' },
|
||||
reverse: true,
|
||||
options: [
|
||||
{ value: 'added_on', name: 'Added On' },
|
||||
{ value: 'availability', name: 'Availability' },
|
||||
{ value: 'category', name: 'Category' },
|
||||
{ value: 'completed', name: 'Completed' },
|
||||
{ value: 'dlspeed', name: 'Download Speed' },
|
||||
{ value: 'downloaded', name: 'Downloaded' },
|
||||
{ value: 'eta', name: 'ETA' },
|
||||
{ value: 'name', name: 'Name' },
|
||||
{ value: 'num_leechs', name: 'Peers' },
|
||||
{ value: 'priority', name: 'Priority' },
|
||||
{ value: 'progress', name: 'Progress' },
|
||||
{ value: 'ratio', name: 'Ratio' },
|
||||
{ value: 'size', name: 'Size' },
|
||||
{ value: 'state', name: 'State' },
|
||||
{ value: 'time_active', name: 'Time Active' },
|
||||
{ value: 'uploaded', name: 'Uploaded' },
|
||||
{ value: 'upspeed', name: 'Upload Speed' }
|
||||
]
|
||||
reverse: true
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapState(['sort_options'])
|
||||
...mapState(['sort_options']),
|
||||
options() {
|
||||
return [
|
||||
{ value: 'added_on', name: this.$i18n.t('modals.sort.sortBy.addedOn') },
|
||||
{ value: 'availability', name: this.$i18n.t('modals.sort.sortBy.availability') },
|
||||
{ value: 'category', name: this.$i18n.t('modals.sort.sortBy.category') },
|
||||
{ value: 'completed', name: this.$i18n.t('modals.sort.sortBy.completed') },
|
||||
{ value: 'dlspeed', name: this.$i18n.t('modals.sort.sortBy.downloadSpeed') },
|
||||
{ value: 'downloaded', name: this.$i18n.t('modals.sort.sortBy.downloaded') },
|
||||
{ value: 'eta', name: this.$i18n.t('modals.sort.sortBy.ETA') },
|
||||
{ value: 'name', name: this.$i18n.t('modals.sort.sortBy.name') },
|
||||
{ value: 'num_leechs', name: this.$i18n.t('modals.sort.sortBy.peers') },
|
||||
{ value: 'priority', name: this.$i18n.t('modals.sort.sortBy.priority') },
|
||||
{ value: 'progress', name: this.$i18n.t('modals.sort.sortBy.progress') },
|
||||
{ value: 'ratio', name: this.$i18n.t('modals.sort.sortBy.ratio') },
|
||||
{ value: 'size', name: this.$i18n.t('modals.sort.sortBy.size') },
|
||||
{ value: 'state', name: this.$i18n.t('modals.sort.sortBy.state') },
|
||||
{ value: 'time_active', name: this.$i18n.t('modals.sort.sortBy.timeActive') },
|
||||
{ value: 'uploaded', name: this.$i18n.t('modals.sort.sortBy.uploaded') },
|
||||
{ value: 'upspeed', name: this.$i18n.t('modals.sort.sortBy.uploadSpeed') }
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
close() {
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
v-model="limit"
|
||||
autofocus
|
||||
clearable
|
||||
label="Speed Limit"
|
||||
label="$t('modals.speedLimit.speedLimit')"
|
||||
:prepend-inner-icon="mdiSpeedometer"
|
||||
suffix="KB/s"
|
||||
@focus="$event.target.select()"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<v-card>
|
||||
<v-card-title class="pa-0">
|
||||
<v-toolbar-title class="ma-4 primarytext--text">
|
||||
<h3>{{ hasInitialCategory ? 'Edit' : 'Create New' }} Category</h3>
|
||||
<h3>{{ hasInitialCategory ? $t('edit') : $t('createNew') }} {{ $t('category') }}</h3>
|
||||
</v-toolbar-title>
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
|
@ -13,7 +13,7 @@
|
|||
v-model="category.name"
|
||||
:rules="nameRules"
|
||||
:counter="15"
|
||||
label="Category name"
|
||||
:label="$t('modals.newCategory.categoryName')"
|
||||
required
|
||||
:disabled="hasInitialCategory"
|
||||
/>
|
||||
|
@ -21,7 +21,7 @@
|
|||
v-model="category.savePath"
|
||||
:rules="PathRules"
|
||||
:counter="40"
|
||||
label="Path"
|
||||
:label="$t('path')"
|
||||
required
|
||||
/>
|
||||
</v-container>
|
||||
|
@ -34,20 +34,20 @@
|
|||
class="accent white--text elevation-0 px-4"
|
||||
@click="create"
|
||||
>
|
||||
Create
|
||||
{{ $t('create') }}
|
||||
</v-btn>
|
||||
<v-btn
|
||||
v-else
|
||||
class="accent white--text elevation-0 px-4"
|
||||
@click="edit"
|
||||
>
|
||||
Edit
|
||||
{{ $t('edit') }}
|
||||
</v-btn>
|
||||
<v-btn
|
||||
class="error white--text elevation-0 px-4"
|
||||
@click="cancel"
|
||||
>
|
||||
Cancel
|
||||
{{ $t('cancel') }}
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
|
@ -69,14 +69,14 @@ export default {
|
|||
},
|
||||
data: () => ({
|
||||
nameRules: [
|
||||
v => !!v || 'Category name is required',
|
||||
v => !!v || this.$i18n.t('modals.newCategory.tipOnNoName'),
|
||||
v =>
|
||||
(v && v.length <= 15) ||
|
||||
'Category name must be less than 15 characters'
|
||||
this.$i18n.t('modals.newCategory.tipOnNameTooLong')
|
||||
],
|
||||
PathRules: [
|
||||
v => !!v || 'Path is required',
|
||||
v => (v && v.length <= 40) || 'Path must be less than 40 characters'
|
||||
v => !!v || this.$i18n.t('modals.newCategory.tipOnNoPath'),
|
||||
v => (v && v.length <= 40) || this.$i18n.t('modals.newCategory.TipOnPathTooLong')
|
||||
],
|
||||
category: { name: '', savePath: '' },
|
||||
mdiCancel, mdiTagPlus, mdiPencil
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<v-card>
|
||||
<v-card-title class="pa-0">
|
||||
<v-toolbar-title class="ma-4 primarytext--text">
|
||||
<h3>Create New Tag</h3>
|
||||
<h3>{{ $t('modals.newTag.createNewTag') }}</h3>
|
||||
</v-toolbar-title>
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
|
@ -13,7 +13,7 @@
|
|||
v-model="tagname"
|
||||
:rules="rules"
|
||||
:counter="10"
|
||||
label="Tag name"
|
||||
:label="$t('modals.newTag.tagName')"
|
||||
required
|
||||
/>
|
||||
</v-container>
|
||||
|
@ -25,13 +25,13 @@
|
|||
class="accent white--text elevation-0 px-4"
|
||||
@click="create"
|
||||
>
|
||||
Create
|
||||
{{ $t('create') }}
|
||||
</v-btn>
|
||||
<v-btn
|
||||
class="error white--text elevation-0 px-4"
|
||||
@click="cancel"
|
||||
>
|
||||
Cancel
|
||||
{{ $t('cancel') }}
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
Torrent title
|
||||
{{ $t('modals.detail.pageInfo.torrentTitle') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ torrent.name }}
|
||||
|
@ -20,7 +20,7 @@
|
|||
</tr>
|
||||
<tr style="margin-top: 10px !important">
|
||||
<td :class="commonStyle">
|
||||
hash
|
||||
{{ $t('modals.detail.pageInfo.hash') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ torrent.hash }}
|
||||
|
@ -55,7 +55,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
Ratio
|
||||
{{ $t('modals.detail.pageInfo.ratio') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ torrent.ratio }}
|
||||
|
@ -63,7 +63,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
DL Speed
|
||||
{{ $t('modals.detail.pageInfo.downloadSpeed') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ torrent.dlspeed | getDataValue }}
|
||||
|
@ -72,7 +72,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
UP Speed
|
||||
{{ $t('modals.detail.pageInfo.uploadSpeed') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ torrent.upspeed | getDataValue }}
|
||||
|
@ -81,7 +81,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
ETA
|
||||
{{ $t('modals.detail.pageInfo.eta') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ torrent.eta }}
|
||||
|
@ -89,7 +89,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
Peers
|
||||
{{ $t('modals.detail.pageInfo.peers') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ torrent.num_leechs
|
||||
|
@ -98,7 +98,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
Seeds
|
||||
{{ $t('modals.detail.pageInfo.seeds') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ torrent.num_seeds
|
||||
|
@ -115,7 +115,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
Status
|
||||
{{ $t('modals.detail.pageInfo.status') }}
|
||||
</td>
|
||||
<td>
|
||||
<v-chip
|
||||
|
@ -128,7 +128,7 @@
|
|||
</tr>
|
||||
<tr v-if="torrent.tracker">
|
||||
<td :class="commonStyle">
|
||||
Trackers
|
||||
{{ $t('modals.detail.pageInfo.trackers') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ torrent.tracker }}
|
||||
|
@ -136,7 +136,7 @@
|
|||
</tr>
|
||||
<tr v-if="createdBy">
|
||||
<td :class="commonStyle">
|
||||
Created By
|
||||
{{ $t('modals.detail.pageInfo.createdBy') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ createdBy }}
|
||||
|
@ -153,7 +153,7 @@
|
|||
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
First/Last Piece Priority
|
||||
{{ $t('modals.detail.pageInfo.firstLastPiecePriority') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ torrent.f_l_piece_prio }}
|
||||
|
@ -161,7 +161,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
Sequential Download
|
||||
{{ $t('modals.detail.pageInfo.sequentialDownload') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ torrent.seq_dl }}
|
||||
|
@ -169,7 +169,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
Auto TMM
|
||||
{{ $t('modals.detail.pageInfo.autoTMM') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ torrent.auto_tmm }}
|
||||
|
@ -177,7 +177,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
Share Ratio Limit
|
||||
{{ $t('modals.detail.pageInfo.shareRatioLimit') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ torrent.ratio_limit | limitToValue }}
|
||||
|
@ -185,7 +185,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
Share Time Limit (minutes)
|
||||
{{ $t('modals.detail.pageInfo.shareTimeLimit') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ torrent.ratio_time_limit | limitToValue }}
|
||||
|
@ -193,7 +193,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
Download Limit
|
||||
{{ $t('modals.detail.pageInfo.downloadLimit') }}
|
||||
</td>
|
||||
<td v-if="torrent.dl_limit > 0">
|
||||
{{ torrent.dl_limit | getDataValue }} {{ torrent.dl_limit | getDataUnit }}<span>/s </span>
|
||||
|
@ -204,7 +204,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
Upload Limit
|
||||
{{ $t('modals.detail.pageInfo.uploadLimit') }}
|
||||
</td>
|
||||
<td v-if="torrent.up_limit > 0">
|
||||
{{ torrent.up_limit | getDataValue }} {{ torrent.up_limit | getDataUnit }}<span>/s </span>
|
||||
|
|
|
@ -58,19 +58,6 @@ export default {
|
|||
props: { hash: String, isActive: Boolean },
|
||||
data: () => ({
|
||||
refreshTimer: '',
|
||||
headers: [
|
||||
{ text: 'IP', value: 'ip' },
|
||||
{ text: 'Connection', value: 'connection' },
|
||||
{ text: 'Flags', value: 'flags' },
|
||||
{ text: 'Client', value: 'client' },
|
||||
{ text: 'Progress', value: 'progress' },
|
||||
{ text: 'DL Speed', value: 'dl_speed' },
|
||||
{ text: 'Downloaded', value: 'downloaded' },
|
||||
{ text: 'UP Speed', value: 'up_speed' },
|
||||
{ text: 'Uploaded', value: 'uploaded' },
|
||||
{ text: 'Relevance', value: 'relevance' },
|
||||
{ text: 'Files', value: 'files' }
|
||||
],
|
||||
peersObj: null
|
||||
}),
|
||||
computed: {
|
||||
|
@ -84,6 +71,21 @@ export default {
|
|||
},
|
||||
peers() {
|
||||
return map(this.peersObj, (value, key) => merge({}, value, { key }))
|
||||
},
|
||||
headers() {
|
||||
return [
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.ip'), value: 'ip' },
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.connection'), value: 'connection' },
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.flags'), value: 'flags' },
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.client'), value: 'client' },
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.progress'), value: 'progress' },
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.downloadSpeed'), value: 'dl_speed' },
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.downloaded'), value: 'downloaded' },
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.upSpeed'), value: 'up_speed' },
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.uploaded'), value: 'uploaded' },
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.relevance'), value: 'relevance' },
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.files'), value: 'files' }
|
||||
]
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<v-card flat>
|
||||
<v-row dense class="ma-0 pa-0">
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>Available Tags:</v-subheader>
|
||||
<v-subheader>{{ $t('modals.detail.pageTagsAndCategories.subHeaderTag') }}</v-subheader>
|
||||
<v-list-item-group
|
||||
:value="activeTags"
|
||||
active-class="accent--text"
|
||||
|
@ -23,7 +23,7 @@
|
|||
</v-col>
|
||||
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>Available Categories:</v-subheader>
|
||||
<v-subheader>{{ $t('modals.detail.pageTagsAndCategories.subHeaderCategories') }}</v-subheader>
|
||||
<v-list-item-group
|
||||
:value="activeCategory"
|
||||
active-class="accent--text"
|
||||
|
|
|
@ -120,16 +120,6 @@ export default {
|
|||
props: { hash: String, isActive: Boolean },
|
||||
data: () => ({
|
||||
trackerDialog: false,
|
||||
headers: [
|
||||
{ text: '#', value: 'tier' },
|
||||
{ text: 'URL', value: 'url' },
|
||||
{ text: 'Status', value: 'status' },
|
||||
{ text: 'Peers', value: 'num_peers' },
|
||||
{ text: 'Seeds', value: 'num_seeds' },
|
||||
{ text: 'Leeches', value: 'num_leeches' },
|
||||
{ text: 'Downloaded', value: 'num_downloaded' },
|
||||
{ text: 'Message', value: 'msg' }
|
||||
],
|
||||
tempTrackers: [],
|
||||
newTrackers: '',
|
||||
selectedTrackers: []
|
||||
|
@ -137,6 +127,18 @@ export default {
|
|||
computed: {
|
||||
trackers() {
|
||||
return this.tempTrackers.map(x => ({ ...x, isSelectable: typeof x.tier === 'number' }))
|
||||
},
|
||||
headers() {
|
||||
return [
|
||||
{ text: '#', value: 'tier' },
|
||||
{ text: this.$i18n.t('modals.detail.pageTrackers.url'), value: 'url' },
|
||||
{ text: this.$i18n.t('modals.detail.pageTrackers.status'), value: 'status' },
|
||||
{ text: this.$i18n.t('modals.detail.pageTrackers.peers'), value: 'num_peers' },
|
||||
{ text: this.$i18n.t('modals.detail.pageTrackers.seeds'), value: 'num_seeds' },
|
||||
{ text: this.$i18n.t('modals.detail.pageTrackers.leeches'), value: 'num_leeches' },
|
||||
{ text: this.$i18n.t('modals.detail.pageTrackers.downloaded'), value: 'num_downloaded' },
|
||||
{ text: this.$i18n.t('modals.detail.pageTrackers.message'), value: 'msg' }
|
||||
]
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<v-card-title class="primary pa-0" @dblclick="hndlFullscreen = !hndlFullscreen">
|
||||
<v-toolbar flat dense class="primary white--text">
|
||||
<v-toolbar-title class="mt-auto">
|
||||
<h3>Torrent Detail</h3>
|
||||
<h3>{{ $t('modals.detail.title') }}</h3>
|
||||
</v-toolbar-title>
|
||||
<v-spacer />
|
||||
<v-btn
|
||||
|
@ -37,19 +37,19 @@
|
|||
<v-tabs v-model="tab" align-with-title show-arrows>
|
||||
<v-tabs-slider color="white" />
|
||||
<v-tab class="white--text" href="#info">
|
||||
<h4>Info</h4>
|
||||
<h4>{{ $t('modals.detail.tabTitleInfo') }}</h4>
|
||||
</v-tab>
|
||||
<v-tab class="white--text" href="#trackers">
|
||||
<h4>Trackers</h4>
|
||||
<h4>{{ $t('modals.detail.tabTitleTrackers') }}</h4>
|
||||
</v-tab>
|
||||
<v-tab class="white--text" href="#peers">
|
||||
<h4>Peers</h4>
|
||||
<h4>{{ $t('modals.detail.tabTitlePeers') }}</h4>
|
||||
</v-tab>
|
||||
<v-tab class="white--text" href="#content">
|
||||
<h4>Content</h4>
|
||||
<h4>{{ $t('modals.detail.tabTitleContent') }}</h4>
|
||||
</v-tab>
|
||||
<v-tab class="white--text" href="#tagsAndCategories">
|
||||
<h4>Tags & Categories</h4>
|
||||
<h4>{{ $t('modals.detail.tabTitleTagsCategories') }}</h4>
|
||||
</v-tab>
|
||||
</v-tabs>
|
||||
</template>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
</div>
|
||||
</template>
|
||||
|
||||
<span>{{ status || 'unknown' }}</span>
|
||||
<span>{{ status || $t('unknown') }}</span>
|
||||
</v-tooltip>
|
||||
</template>
|
||||
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
<template>
|
||||
<div class="mt-1">
|
||||
<label class="white--text text-uppercase font-weight-medium caption ml-4">
|
||||
Status
|
||||
{{ $t('status') }}
|
||||
</label>
|
||||
<v-select
|
||||
name="state_filter"
|
||||
aria-label="state_filter"
|
||||
:value="selectedState"
|
||||
class="ml-2 mr-2"
|
||||
label="STATUS"
|
||||
:label="$t('status')"
|
||||
flat
|
||||
solo
|
||||
:items="options"
|
||||
|
@ -27,7 +27,7 @@
|
|||
flat
|
||||
solo
|
||||
class="ml-2 mr-2"
|
||||
label="CATEGORIES"
|
||||
:label="$t('category')"
|
||||
:items="availableCategories"
|
||||
item-text="name"
|
||||
color="download"
|
||||
|
@ -63,20 +63,6 @@ export default {
|
|||
name: 'FilterSelect',
|
||||
props: ['showTrackerFilter'],
|
||||
data: () => ({
|
||||
options: [
|
||||
{ value: null, name: 'All' },
|
||||
{ value: 'downloading', name: 'Downloading' },
|
||||
{ value: 'seeding', name: 'Seeding' },
|
||||
{ value: 'completed', name: 'Completed' },
|
||||
{ value: 'resumed', name: 'Resumed' },
|
||||
{ value: 'paused', name: 'Paused' },
|
||||
{ value: 'active', name: 'Active' },
|
||||
{ value: 'inactive', name: 'Inactive' },
|
||||
{ value: 'stalled', name: 'Stalled' },
|
||||
{ value: 'stalled_uploading', name: 'Stalled Uploading' },
|
||||
{ value: 'stalled_downloading', name: 'Stalled Downloading' },
|
||||
{ value: 'errored', name: 'Errored' }
|
||||
],
|
||||
selectedState: null,
|
||||
selectedCategory: null,
|
||||
selectedTracker: null
|
||||
|
@ -84,6 +70,22 @@ export default {
|
|||
computed: {
|
||||
...mapGetters(['getCategories', 'getTrackers']),
|
||||
...mapState(['sort_options']),
|
||||
options() {
|
||||
return [
|
||||
{ value: null, name: this.$i18n.t('all') },
|
||||
{ value: 'downloading', name: this.$i18n.t('downloading') },
|
||||
{ value: 'seeding', name: this.$i18n.t('seeding') },
|
||||
{ value: 'completed', name: this.$i18n.t('completed') },
|
||||
{ value: 'resumed', name: this.$i18n.t('resumed') },
|
||||
{ value: 'paused', name: this.$i18n.t('paused') },
|
||||
{ value: 'active', name: this.$i18n.t('active') },
|
||||
{ value: 'inactive', name: this.$i18n.t('inactive') },
|
||||
{ value: 'stalled', name: this.$i18n.t('stalled') },
|
||||
{ value: 'stalled_uploading', name: this.$i18n.t('navbar.filters.stalled_uploading') },
|
||||
{ value: 'stalled_downloading', name: this.$i18n.t('navbar.filters.stalled_downloading') },
|
||||
{ value: 'errored', name: this.$i18n.t('errored') }
|
||||
]
|
||||
},
|
||||
availableCategories() {
|
||||
const categories = [
|
||||
{ name: 'All', value: null },
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
</v-icon>
|
||||
</v-btn>
|
||||
</template>
|
||||
<span>Log Out</span>
|
||||
<span>{{ $t('logout') }}</span>
|
||||
</v-tooltip>
|
||||
</v-col>
|
||||
<v-col>
|
||||
|
@ -33,7 +33,7 @@
|
|||
</v-icon>
|
||||
</v-btn>
|
||||
</template>
|
||||
<span>Alt speeds</span>
|
||||
<span>{{ $t('navbar.action.altSpeed') }}</span>
|
||||
</v-tooltip>
|
||||
</v-col>
|
||||
<v-col>
|
||||
|
@ -95,7 +95,7 @@ export default {
|
|||
return this.getWebuiSettings()
|
||||
},
|
||||
theme() {
|
||||
return this.getTheme() ? 'Dark' : 'Light'
|
||||
return this.getTheme() ? this.$i18n.t('navbar.action.dark') : this.$i18n.t('navbar.action.light')
|
||||
},
|
||||
alarm() {
|
||||
return this.getAlarm()
|
||||
|
|
|
@ -18,11 +18,11 @@
|
|||
</v-tooltip>
|
||||
<StorageCard
|
||||
class="mb-4 mt-4"
|
||||
label="Downloaded"
|
||||
:label="$t('downloaded')"
|
||||
color="download"
|
||||
:value="getDownload"
|
||||
/>
|
||||
<StorageCard label="Uploaded" color="upload" :value="getUpload" />
|
||||
<StorageCard :label="$t('uploaded')" color="upload" :value="getUpload" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
md1
|
||||
>
|
||||
<div class="caption grey--text">
|
||||
Category
|
||||
{{ $t('category') }}
|
||||
</div>
|
||||
<v-chip small class="upload white--text caption">
|
||||
{{ torrent.category }}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<v-flex xs6 sm1 md1>
|
||||
<div class="caption grey--text">
|
||||
Download
|
||||
{{ $t('download') }}
|
||||
</div>
|
||||
<div>
|
||||
{{ torrent.dlspeed | getDataValue(1) }}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<v-flex xs6 sm1 md1>
|
||||
<div class="caption grey--text">
|
||||
Downloaded
|
||||
{{ $t('downloaded') }}
|
||||
</div>
|
||||
<div>
|
||||
{{ torrent.dloaded | getDataValue(2) }}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<v-flex xs6 sm1 md1>
|
||||
<div class="caption grey--text">
|
||||
ETA
|
||||
{{ $t('ETA') }}
|
||||
</div>
|
||||
<div>
|
||||
{{ torrent.eta }}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<v-flex xs6 sm1 md1>
|
||||
<div class="caption grey--text">
|
||||
Peers
|
||||
{{ $t('peers') }}
|
||||
</div>
|
||||
<div>
|
||||
{{ torrent.num_leechs }}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<v-flex xs6 sm1 md1>
|
||||
<div class="caption grey--text">
|
||||
Ratio
|
||||
{{ $t('ratio') }}
|
||||
</div>
|
||||
<div>{{ torrent.ratio }}</div>
|
||||
</v-flex>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<v-flex xs6 sm1 md1>
|
||||
<div class="caption grey--text">
|
||||
Seeds
|
||||
{{ $t('seeds') }}
|
||||
</div>
|
||||
<div>
|
||||
{{ torrent.num_seeds }}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
class="mr-4"
|
||||
>
|
||||
<div class="caption grey--text">
|
||||
Status
|
||||
{{ $t('status') }}
|
||||
</div>
|
||||
<v-chip
|
||||
small
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<v-flex v-if="torrent.tags && torrent.tags.length" xs6 sm2>
|
||||
<div class="caption grey--text">
|
||||
Tags
|
||||
{{ $t('tags') }}
|
||||
</div>
|
||||
<v-row wrap class="ma-0">
|
||||
<v-chip
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<v-flex xs6 sm1 md1>
|
||||
<div class="caption grey--text">
|
||||
Upload
|
||||
{{ $t('upload') }}
|
||||
</div>
|
||||
<div>
|
||||
{{ torrent.upspeed | getDataValue(1) }}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<v-flex xs6 sm1 md1>
|
||||
<div class="caption grey--text">
|
||||
Uploaded
|
||||
{{ $t('uploaded') }}
|
||||
</div>
|
||||
<div>
|
||||
{{ torrent.uploaded | getDataValue }}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<v-flex xs6 sm2 md2>
|
||||
<div class="caption grey--text">
|
||||
Uploaded Session
|
||||
{{ $t('torrent.uploadedSession') }}
|
||||
</div>
|
||||
<div>
|
||||
{{ torrent.uploaded_session | getDataValue }}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
>
|
||||
<v-flex xs12>
|
||||
<div class="caption grey--text">
|
||||
Torrent title
|
||||
{{ $t('torrent.torrentTitle') }}
|
||||
</div>
|
||||
<div class="truncate mr-4">
|
||||
{{ torrent.name }}
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
class="ml-2"
|
||||
style="font-size: 1em"
|
||||
>
|
||||
Force recheck
|
||||
{{ $t('rightClick.advanced.forceRecheck') | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item link @click="reannounce">
|
||||
|
@ -96,7 +96,7 @@
|
|||
class="ml-2"
|
||||
style="font-size: 1em"
|
||||
>
|
||||
Force reannounce
|
||||
{{ $t('rightClick.advanced.forceReannounce') | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item v-if="!multiple" link @click="toggleSeq">
|
||||
|
@ -105,7 +105,7 @@
|
|||
class="ml-2"
|
||||
style="font-size: 1em"
|
||||
>
|
||||
Sequential Download
|
||||
{{ $t('rightClick.advanced.sequentialDownload') | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item v-if="!multiple" link @click="toggleFL">
|
||||
|
@ -114,7 +114,7 @@
|
|||
class="ml-2"
|
||||
style="font-size: 1em"
|
||||
>
|
||||
First/Last priority
|
||||
{{ $t('rightClick.advanced.firstLastPriority') | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item v-if="!multiple" link @click="toggleAutoTMM">
|
||||
|
@ -123,7 +123,7 @@
|
|||
class="ml-2"
|
||||
style="font-size: 1em"
|
||||
>
|
||||
Auto TMM
|
||||
{{ $t('rightClick.advanced.automaticTorrentManagement') | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
|
@ -223,19 +223,19 @@
|
|||
<v-list-item @click="setLimit('download')">
|
||||
<v-icon>{{ mdiChevronDown }}</v-icon>
|
||||
<v-list-item-title class="ml-2">
|
||||
Download
|
||||
{{ $t('download') }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item @click="setLimit('upload')">
|
||||
<v-icon>{{ mdiChevronUp }}</v-icon>
|
||||
<v-list-item-title class="ml-2">
|
||||
Upload
|
||||
{{ $t('upload') }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item @click="setShareLimit()">
|
||||
<v-icon>{{ mdiAccountGroup }}</v-icon>
|
||||
<v-list-item-title class="ml-2">
|
||||
Share
|
||||
{{ $t('share') }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
|
@ -266,19 +266,19 @@
|
|||
<v-list-item @click="copyToClipBoard(torrent.name)">
|
||||
<v-icon>{{ mdiContentCopy }}</v-icon>
|
||||
<v-list-item-title class="ml-2">
|
||||
Name
|
||||
{{ $t('name') }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item @click="copyToClipBoard(torrent.hash)">
|
||||
<v-icon>{{ mdiContentCopy }}</v-icon>
|
||||
<v-list-item-title class="ml-2">
|
||||
Hash
|
||||
{{ $t('hash') }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item @click="copyToClipBoard(torrent.magnet)">
|
||||
<v-icon>{{ mdiMagnet }}</v-icon>
|
||||
<v-list-item-title class="ml-2">
|
||||
Magnet
|
||||
{{ $t('magnet') }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
|
|
301
src/lang/en.js
301
src/lang/en.js
|
@ -7,6 +7,39 @@ const locale = {
|
|||
save: 'save',
|
||||
cancel: 'cancel',
|
||||
confirm: 'confirm',
|
||||
edit: 'Edit',
|
||||
createNew: 'Create New',
|
||||
path: 'Path',
|
||||
create: 'Create',
|
||||
url: 'URL',
|
||||
directory: 'Directory',
|
||||
unknown: 'unknown',
|
||||
status: 'Status',
|
||||
all: 'All',
|
||||
downloading: 'downloading',
|
||||
seeding: 'Seeding',
|
||||
completed: 'Completed',
|
||||
resumed: 'Resumed',
|
||||
paused: 'Paused',
|
||||
active: 'Active',
|
||||
inactive: 'Inactive',
|
||||
stalled: 'Stalled',
|
||||
errored: 'Errored',
|
||||
login: 'Login in',
|
||||
logout: 'Log out',
|
||||
downloaded: 'downloaded',
|
||||
uploaded: 'uploaded',
|
||||
upload: 'upload',
|
||||
download: 'Download',
|
||||
ETA: 'ETA',
|
||||
peers: 'Peers',
|
||||
ratio: 'Ratio',
|
||||
seeds: 'Seeds',
|
||||
tags: 'Tags',
|
||||
share: 'Share',
|
||||
name: 'Name',
|
||||
hash: 'Hase',
|
||||
magnet: 'Magnet',
|
||||
|
||||
/** Torrent */
|
||||
torrent: {
|
||||
|
@ -19,7 +52,9 @@ const locale = {
|
|||
downloaded: 'downloaded',
|
||||
uploaded: 'uploaded',
|
||||
created: 'created by',
|
||||
comments: 'comments'
|
||||
comments: 'comments',
|
||||
uploadedSession: 'Uploaded Session',
|
||||
torrentTitle: 'Torrent Title'
|
||||
},
|
||||
/** Navbar */
|
||||
navbar: {
|
||||
|
@ -35,14 +70,269 @@ const locale = {
|
|||
},
|
||||
sessionStats: {
|
||||
tooltip: 'Since the last time qBittorrent was restarted'
|
||||
},
|
||||
filters: {
|
||||
stalled_uploading: 'Stalled Uploading',
|
||||
stalled_downloading: 'Stalled Downloading'
|
||||
},
|
||||
action: {
|
||||
altSpeed: 'Alt speeds',
|
||||
dark: 'Dark',
|
||||
light: 'Light'
|
||||
}
|
||||
},
|
||||
|
||||
/** Modals */
|
||||
modals: {
|
||||
pluginManager: {
|
||||
title: 'Plugin manager'
|
||||
},
|
||||
search: {
|
||||
title: 'Search',
|
||||
btnStartSearch: 'Search',
|
||||
btnStopSearch: 'Stop',
|
||||
columnTitle: {
|
||||
name: 'Name',
|
||||
size: 'Size',
|
||||
seeds: 'Seeds',
|
||||
peers: 'Peers',
|
||||
search_engine: 'Search_engine',
|
||||
action: 'Action'
|
||||
}
|
||||
},
|
||||
settings: {
|
||||
tabName: {
|
||||
VueTorrent: 'vuetorrent',
|
||||
downloads: 'downloads',
|
||||
connection: 'connection',
|
||||
bittorrent: 'bittorrent',
|
||||
webUI: 'WEB UI',
|
||||
tagsAndCategories: 'tags & categories'
|
||||
},
|
||||
pageVueTorrent: {
|
||||
tabName: {
|
||||
general: 'General',
|
||||
dashboard: 'Dashboard'
|
||||
},
|
||||
pageGeneral: {
|
||||
tip: 'These settings are for the custom WebUI itself',
|
||||
currentSpeed: 'Show Current Speed',
|
||||
speedGraph: 'Show Speed Graph',
|
||||
sessionStats: 'Show Session Stats',
|
||||
allTimeStats: 'Show All-Time Stats',
|
||||
freeSpace: 'Show Free Space',
|
||||
trackerFilter: 'Show Tracker Filter',
|
||||
rightDrawer: 'Right Drawer',
|
||||
language: 'Language:',
|
||||
paginationSize: 'Pagination size:',
|
||||
vueTorrentTitle: 'VueTorrent title:',
|
||||
currentVersion: 'Current Version:',
|
||||
qbittorrentVersion: 'QBittorrent Version:'
|
||||
},
|
||||
pageDashboard: {
|
||||
busyTorrentTip: 'Properties to display for busy torrents',
|
||||
completedTorrentTip: 'Properties to display for completed torrents'
|
||||
}
|
||||
},
|
||||
pageDownloads: {
|
||||
subHeaderWhenAddTorrent: 'When adding a torrent',
|
||||
whenAddTorrent: {
|
||||
createSubFolder: 'Create subfolder for torrents with multiple files',
|
||||
donotAutoStart: 'Do not start the download automatically'
|
||||
},
|
||||
subHeaderPublicSettings: 'Public Settings',
|
||||
publicSettings: {
|
||||
preAllocateDisk: 'Pre-allocate disk space for all files',
|
||||
appendQBExtension: 'Append .!qB extension to incomplete files'
|
||||
},
|
||||
subHeaderSaveManagement: 'Saving Management',
|
||||
saveManagement: {
|
||||
autoManagement: 'Automatic Torrent Management',
|
||||
relocate: 'Relocate Torrent when category changes',
|
||||
defaultSavePath: 'Default Save Path',
|
||||
keepIncompleteIn: 'Keep incomplete torrents in:',
|
||||
autoEnabled: 'Autorun enabled:',
|
||||
autorunProgram: 'Autorun program',
|
||||
supportParamTitle: 'Supported parameters (case sensitive):',
|
||||
supportParamN: '%N: Torrent name ',
|
||||
supportParamL: '%L: Category',
|
||||
supportParamG: '%G: Tags (separated by comma)',
|
||||
supportParamF: '%F: Content path (same as root path for multi-file torrent)',
|
||||
supportParamR: '%R: Root path (first torrent subdirectory path)',
|
||||
supportParamD: '%D: Save path',
|
||||
supportParamC: '%C: Number of files',
|
||||
supportParamZ: '%Z: Torrent size (bytes)',
|
||||
supportParamT: '%T: Current tracker',
|
||||
supportParamI: '%I: Info hash'
|
||||
}
|
||||
},
|
||||
pageConnection: {
|
||||
subHeader: 'Connection Limits',
|
||||
globalMaxConnection: 'Global maximum number of connections',
|
||||
perTorrentMaxConnection: 'Maximum number of connections per torrent',
|
||||
globalMaxUploadSlots: 'Global maximum number of upload slots',
|
||||
perTorrentMaxUploadSlots: 'Maximum number of upload slots per torrent'
|
||||
},
|
||||
pageBittorrent: {
|
||||
subHeaderPrivacy: 'Privacy',
|
||||
enableDHT: 'Enable DHT (decentralized network) to find more peers',
|
||||
enablePeX: 'Enable Peer Exchange (PeX) to find more peers',
|
||||
enableLPD: 'Enable Local Peer Discovery to find more peers',
|
||||
enableAnonymous: 'Enable anonymous mode',
|
||||
torrentQueue: 'Torrent Queueing',
|
||||
maxActiveDownload: 'Maximum active downloads',
|
||||
maxActiveUpload: 'Maximum active uploads',
|
||||
maxActiveTorrent: 'Maximum active torrents',
|
||||
excludeSlowTorrent: 'Do not count slow torrents in these limits',
|
||||
downloadRateLimit: 'Download rate threshold KiB/s',
|
||||
uploadRateLimit: 'Upload rate threshold KiB/s',
|
||||
torrentInactivityTimer: 'Torrent inactivity timer',
|
||||
subHeaderSeedLimits: 'Seed Limits',
|
||||
whenRatioReaches: 'When ratio reaches',
|
||||
whenSeedingTimeReaches: 'When seeding time reaches'
|
||||
},
|
||||
pageWebUI: {
|
||||
useAlternativeWebUI: 'Use Alternative WebUI',
|
||||
filesLocation: 'Files location',
|
||||
webUserInterface: 'Web User Interface (Remote Control)',
|
||||
ipAddress: 'IP Address:',
|
||||
port: 'Port',
|
||||
authentication: 'Authentication',
|
||||
username: 'Username',
|
||||
password: 'password',
|
||||
maxAttempts: 'Max attempts',
|
||||
banDuration: 'Ban Duration (seconds)',
|
||||
sessionTimeout: 'Session timeout (seconds)',
|
||||
bypassAuthenticationForClientsOnLocalhost: 'Bypass authentication for clients on localhost',
|
||||
bypassAuthenticationForClientsInWhitelisted: 'Bypass authentication for clients in whitelisted IP subnets',
|
||||
whiteListExample: 'Example: 172.17.32.0/24, fdff:ffff:c8::/40'
|
||||
},
|
||||
pageTagsAndCategories: {
|
||||
btnCreateNew: 'Create new',
|
||||
subHeaderTags: 'Available Tags:',
|
||||
subHeaderCategories: 'Available Categories:'
|
||||
}
|
||||
},
|
||||
shareLimit: {
|
||||
input: {
|
||||
globalLimit: 'Use global limit',
|
||||
unlimited: 'Unlimited'
|
||||
},
|
||||
limitRatio: 'Limit Ratio',
|
||||
titleDuration: 'Duration',
|
||||
titleRatio: 'Ratio'
|
||||
},
|
||||
newCategory: {
|
||||
categoryName: 'Category name',
|
||||
Path: 'Path',
|
||||
tipOnNoName: 'Category name is required',
|
||||
tipOnNameTooLong: 'Category name must be less than 15 characters',
|
||||
tipOnNoPath: 'Path is required',
|
||||
TipOnPathTooLong: 'Path must be less than 40 characters'
|
||||
},
|
||||
newTag: {
|
||||
createNewTag: 'Create New Tag',
|
||||
tagName: 'Tag name'
|
||||
},
|
||||
detail: {
|
||||
title: 'Torrent Detail',
|
||||
tabTitleInfo: 'Info',
|
||||
tabTitleTrackers: 'Trackers',
|
||||
tabTitlePeers: 'Peers',
|
||||
tabTitleContent: 'Content',
|
||||
tabTitleTagsCategories: 'Tags & Categories',
|
||||
pageInfo: {
|
||||
torrentTitle: 'Torrent title',
|
||||
hash: 'hash',
|
||||
ratio: 'Ratio',
|
||||
downloadSpeed: 'DL Speed',
|
||||
uploadSpeed: 'UP Speed',
|
||||
eta: 'ETA',
|
||||
peers: 'Peers',
|
||||
seeds: 'Seeds',
|
||||
status: 'Status',
|
||||
trackers: 'Trackers',
|
||||
createdBy: 'Created By',
|
||||
firstLastPiecePriority: 'First/Last Piece Priority',
|
||||
sequentialDownload: 'Sequential Download',
|
||||
autoTMM: 'Auto TMM',
|
||||
shareRatioLimit: 'Share Ratio Limit',
|
||||
shareTimeLimit: 'Share Time Limit (minutes)',
|
||||
downloadLimit: 'Download Limit',
|
||||
uploadLimit: 'Upload Limit'
|
||||
},
|
||||
pagePeers: {
|
||||
ip: 'IP',
|
||||
connection: 'Connection',
|
||||
flags: 'Flags',
|
||||
client: 'Client',
|
||||
progress: 'Progress',
|
||||
downloadSpeed: 'DL Speed',
|
||||
downloaded: 'Downloaded',
|
||||
upSpeed: 'UP Speed',
|
||||
uploaded: 'Uploaded',
|
||||
relevance: 'Relevance',
|
||||
files: 'Files'
|
||||
},
|
||||
pageTagsAndCategories: {
|
||||
subHeaderTag: 'Available Tags:',
|
||||
subHeaderCategories: 'Available Categories:'
|
||||
},
|
||||
pageTrackers: {
|
||||
url: 'URL',
|
||||
status: 'Status',
|
||||
peers: 'Peers',
|
||||
seeds: 'Seeds',
|
||||
leeches: 'Leeches',
|
||||
downloaded: 'Downloaded',
|
||||
message: 'Message'
|
||||
}
|
||||
},
|
||||
add: {
|
||||
title: 'Add a new Torrent',
|
||||
selectFiles: 'Select your files'
|
||||
selectFiles: 'Select your files',
|
||||
urlHint: 'One link per line',
|
||||
downloadDirectory: 'Download Directory',
|
||||
starttorrent: 'Start torrent',
|
||||
skipHashCheck: 'Skip hash check',
|
||||
createSubfolder: 'Create subfolder',
|
||||
automaticTorrentManagement: 'Automatic Torrent Management',
|
||||
dropHereForAdd: 'Drop here for add',
|
||||
oneOrMoreFilesInvalidTorrent: 'One or more files is not a valid torrent'
|
||||
},
|
||||
changeLocation: {
|
||||
title: 'Change Location',
|
||||
torrentName: 'Torrent Name'
|
||||
},
|
||||
rename: {
|
||||
title: 'Rename',
|
||||
torrentName: 'Torrent Name'
|
||||
},
|
||||
sort: {
|
||||
title: 'Sort Torrents',
|
||||
reverse: 'Reverse',
|
||||
sortBy: {
|
||||
availability: 'Availability',
|
||||
category: 'Category',
|
||||
completed: 'Completed',
|
||||
downloaded: 'Downloaded',
|
||||
ETA: 'ETA',
|
||||
name: 'Name',
|
||||
peers: 'Peers',
|
||||
priority: 'Priority',
|
||||
progress: 'Progress',
|
||||
ratio: 'Ratio',
|
||||
size: 'Size',
|
||||
state: 'State',
|
||||
uploaded: 'Uploaded',
|
||||
addedOn: 'Added On',
|
||||
downloadSpeed: 'Download Speed',
|
||||
timeActive: 'Time Active',
|
||||
uploadSpeed: 'Upload Speed'
|
||||
}
|
||||
},
|
||||
speedLimit: {
|
||||
speedLimit: 'Speed Limit'
|
||||
},
|
||||
delete: {
|
||||
check: 'Also delete files from storage'
|
||||
|
@ -64,7 +354,12 @@ const locale = {
|
|||
advanced: {
|
||||
advanced: 'advanced',
|
||||
changeLocation: 'change location',
|
||||
rename: 'rename'
|
||||
rename: 'rename',
|
||||
forceRecheck: 'Force recheck',
|
||||
forceReannounce: 'Force reannounce',
|
||||
sequentialDownload: 'Sequential Download',
|
||||
firstLastPriority: 'First/Last priority',
|
||||
autoManagement: 'Automatic Torrent Management'
|
||||
},
|
||||
prio: {
|
||||
prio: 'set priority',
|
||||
|
|
|
@ -7,6 +7,39 @@ const locale = {
|
|||
save: '保存',
|
||||
cancel: '取消',
|
||||
confirm: '确认',
|
||||
edit: '编辑',
|
||||
createNew: '新增',
|
||||
path: '路径',
|
||||
create: '新增',
|
||||
url: '链接',
|
||||
directory: '目录',
|
||||
unknown: '未知',
|
||||
status: '状态',
|
||||
all: '所有',
|
||||
downloading: '下载中',
|
||||
seeding: '做种中',
|
||||
completed: '已完成',
|
||||
resumed: '恢复',
|
||||
paused: '暂停',
|
||||
active: '活动',
|
||||
inactive: '空闲',
|
||||
stalled: '低速',
|
||||
errored: '错误',
|
||||
login: '登录',
|
||||
logout: '退出',
|
||||
downloaded: '已下载',
|
||||
uploaded: '已上传',
|
||||
download: '下载',
|
||||
ETA: '剩余时间',
|
||||
peers: '用户',
|
||||
ratio: '比率',
|
||||
seeds: '做种',
|
||||
tags: '标签',
|
||||
upload: '上传',
|
||||
share: '分享',
|
||||
name: '名称',
|
||||
hash: '哈希值',
|
||||
magnet: '磁力链接',
|
||||
|
||||
/** Torrent */
|
||||
torrent: {
|
||||
|
@ -19,7 +52,9 @@ const locale = {
|
|||
downloaded: '下载量',
|
||||
uploaded: '上传量',
|
||||
created: '制作程序',
|
||||
comments: '注释'
|
||||
comments: '注释',
|
||||
uploadedSession: '上传会话',
|
||||
torrentTitle: '种子标题'
|
||||
},
|
||||
/** Navbar */
|
||||
navbar: {
|
||||
|
@ -35,14 +70,269 @@ const locale = {
|
|||
},
|
||||
sessionStats: {
|
||||
tooltip: '自 qBittorrent 上次重启以来'
|
||||
},
|
||||
filters: {
|
||||
stalled_uploading: '低速上传',
|
||||
stalled_downloading: '低速下载'
|
||||
},
|
||||
action: {
|
||||
altSpeed: '备用速率限制',
|
||||
dark: '暗色界面',
|
||||
light: '亮色界面'
|
||||
}
|
||||
},
|
||||
|
||||
/** Modals */
|
||||
modals: {
|
||||
pluginManager: {
|
||||
title: '插件管理器'
|
||||
},
|
||||
search: {
|
||||
title: '搜索',
|
||||
btnStartSearch: '搜索',
|
||||
btnStopSearch: '停止',
|
||||
columnTitle: {
|
||||
name: '名称',
|
||||
size: '大小',
|
||||
seeds: '上传',
|
||||
peers: '用户',
|
||||
search_engine: '搜索引擎',
|
||||
action: '操作'
|
||||
}
|
||||
},
|
||||
settings: {
|
||||
tabName: {
|
||||
VueTorrent: 'VueTorrent',
|
||||
downloads: '下载',
|
||||
connection: '连接',
|
||||
bittorrent: 'bittorrent',
|
||||
webUI: '网页界面',
|
||||
tagsAndCategories: '标签和分类'
|
||||
},
|
||||
pageVueTorrent: {
|
||||
tabName: {
|
||||
general: '常规',
|
||||
dashboard: '面板'
|
||||
},
|
||||
pageGeneral: {
|
||||
tip: '这些设置适用于自定义WebUI本身',
|
||||
currentSpeed: '显示当前速度',
|
||||
speedGraph: '显示速度图形化',
|
||||
sessionStats: '显示会话状态',
|
||||
allTimeStats: '显示历史状态',
|
||||
freeSpace: '显示剩余空间',
|
||||
trackerFilter: '显示 Tracker 过滤',
|
||||
rightDrawer: '侧边栏居右显示',
|
||||
language: '语言',
|
||||
paginationSize: '每页展示数量',
|
||||
vueTorrentTitle: 'VueTorrent 标题',
|
||||
currentVersion: '当前版本',
|
||||
qbittorrentVersion: 'QBittorrent 版本'
|
||||
},
|
||||
pageDashboard: {
|
||||
busyTorrentTip: '未完成的种子要显示的属性',
|
||||
completedTorrentTip: '已完成的种子要显示的属性'
|
||||
}
|
||||
},
|
||||
pageDownloads: {
|
||||
subHeaderWhenAddTorrent: '当添加种子时',
|
||||
whenAddTorrent: {
|
||||
createSubFolder: '为包含多个文件的种子创建子文件夹',
|
||||
donotAutoStart: '不要自动开始下载'
|
||||
},
|
||||
subHeaderPublicSettings: '公共设置',
|
||||
publicSettings: {
|
||||
preAllocateDisk: '为所有文件预分配磁盘空间',
|
||||
appendQBExtension: '为未完成的文件添加 .!qB 后缀'
|
||||
},
|
||||
subHeaderSaveManagement: '存储管理器',
|
||||
saveManagement: {
|
||||
autoManagement: '自动管理种子',
|
||||
relocate: '当分类变化时更改种子保存的路径',
|
||||
defaultSavePath: '默认保存路径',
|
||||
keepIncompleteIn: '将未完成的种子保存在:',
|
||||
autoEnabled: '启用自动运行:',
|
||||
autorunProgram: '自动运行的程序',
|
||||
supportParamTitle: '支持的参数(大小写敏感):',
|
||||
supportParamN: '%N: 种子名称',
|
||||
supportParamL: '%L: 分类',
|
||||
supportParamG: '%G: 标签(用逗号分隔)',
|
||||
supportParamF: '%F: 内容路径(多文件种子同根路径)',
|
||||
supportParamR: '%R: 根路径(首个种子子目录的路径)',
|
||||
supportParamD: '%D: 保存路径',
|
||||
supportParamC: '%C: 文件数量',
|
||||
supportParamZ: '%Z: 种子大小(单位为字节 byte)',
|
||||
supportParamT: '%T: 当前 tracker',
|
||||
supportParamI: '%I: 信息哈希值'
|
||||
}
|
||||
},
|
||||
pageConnection: {
|
||||
subHeader: '连接限制',
|
||||
globalMaxConnection: '全局最大连接数',
|
||||
perTorrentMaxConnection: '单个种子最大连接数',
|
||||
globalMaxUploadSlots: '全局最大上传数',
|
||||
perTorrentMaxUploadSlots: '单个种子最大上传数'
|
||||
},
|
||||
pageBittorrent: {
|
||||
subHeaderPrivacy: '隐私',
|
||||
enableDHT: '启用 DHT(分散网络)寻找更多终端',
|
||||
enablePeX: '启用 PeX (对等交换)寻找更多终端',
|
||||
enableLPD: '启用 LPD (本地终端发现)寻找更多终端',
|
||||
enableAnonymous: '启用匿名模式',
|
||||
torrentQueue: '种子队列',
|
||||
maxActiveDownload: '最大活跃下载数',
|
||||
maxActiveUpload: '最大活跃上传数',
|
||||
maxActiveTorrent: '最大活跃种子数',
|
||||
excludeSlowTorrent: '不要在这些限制范围内计算慢速种子',
|
||||
downloadRateLimit: '下载速率限制为 KiB/s',
|
||||
uploadRateLimit: '上传速率限制为 KiB/s',
|
||||
torrentInactivityTimer: '种子不活跃计数器',
|
||||
subHeaderSeedLimits: '做种限制',
|
||||
whenRatioReaches: '当比率达到时',
|
||||
whenSeedingTimeReaches: '当做种时间达到时'
|
||||
},
|
||||
pageWebUI: {
|
||||
useAlternativeWebUI: '使用其他的网页界面',
|
||||
filesLocation: '文件路径',
|
||||
webUserInterface: '网页用户界面(远程控制)',
|
||||
ipAddress: 'IP 地址',
|
||||
port: '端口号',
|
||||
authentication: '认证',
|
||||
username: '用户名',
|
||||
password: '密码',
|
||||
maxAttempts: '最大尝试次数',
|
||||
banDuration: '禁用时长(秒)',
|
||||
sessionTimeout: '会话持续时间(秒)',
|
||||
bypassAuthenticationForClientsOnLocalhost: '绕过本地主机上客户端的身份验证',
|
||||
bypassAuthenticationForClientsInWhitelisted: '绕过白名单IP子网中客户端的身份验证',
|
||||
whiteListExample: '示例:172.17.32.0/24, fdff:ffff:c8::/40'
|
||||
},
|
||||
pageTagsAndCategories: {
|
||||
btnCreateNew: '新增',
|
||||
subHeaderTags: '可用标签:',
|
||||
subHeaderCategories: '可用分类:'
|
||||
}
|
||||
},
|
||||
shareLimit: {
|
||||
input: {
|
||||
globalLimit: '使用全局限制',
|
||||
unlimited: '无限制'
|
||||
},
|
||||
limitRatio: '做种限制',
|
||||
titleDuration: '做种时间',
|
||||
titleRatio: '分享率'
|
||||
},
|
||||
newCategory: {
|
||||
categoryName: '分类名称',
|
||||
path: '路径',
|
||||
tipOnNoName: '分类名称是必须的',
|
||||
tipOnNameTooLong: '分类名称必须小于 15 个字符',
|
||||
tipOnNoPath: '路径是必须的',
|
||||
TipOnPathTooLong: '路径必须小于 40 个字符'
|
||||
},
|
||||
newTag: {
|
||||
createNewTag: '新建标签',
|
||||
tagName: '标签名称'
|
||||
},
|
||||
detail: {
|
||||
title: '种子详情',
|
||||
tabTitleInfo: '信息',
|
||||
tabTitleTrackers: 'Trackers',
|
||||
tabTitlePeers: '用户',
|
||||
tabTitleContent: '内容',
|
||||
tabTitleTagsCategories: '标签和分类',
|
||||
pageInfo: {
|
||||
torrentTitle: '种子标题',
|
||||
hash: '哈希值',
|
||||
ratio: '比率',
|
||||
downloadSpeed: '下载速度',
|
||||
uploadSpeed: '上传速度',
|
||||
eta: '剩余时间',
|
||||
peers: '用户',
|
||||
seeds: '上传',
|
||||
status: '状态',
|
||||
trackers: 'Trackers',
|
||||
createdBy: '创建者',
|
||||
firstLastPiecePriority: '首末块优先',
|
||||
sequentialDownload: '顺序下载',
|
||||
autoTMM: '自动种子管理',
|
||||
shareRatioLimit: '分享率限制',
|
||||
shareTimeLimit: '分享时间限制(分钟)',
|
||||
downloadLimit: '下载限制',
|
||||
uploadLimit: '上传限制'
|
||||
},
|
||||
pagePeers: {
|
||||
ip: 'IP',
|
||||
connection: '连接',
|
||||
flags: '标志',
|
||||
client: '客户端',
|
||||
progress: '进度',
|
||||
downloadSpeed: '下载速率',
|
||||
downloaded: '下载量',
|
||||
upSpeed: '上传速率',
|
||||
uploaded: '上传量',
|
||||
relevance: '关联',
|
||||
files: '文件'
|
||||
},
|
||||
pageTagsAndCategories: {
|
||||
subHeaderTag: '可用标签:',
|
||||
subHeaderCategories: '可用分类:'
|
||||
},
|
||||
pageTrackers: {
|
||||
url: '连接地址',
|
||||
status: '状态',
|
||||
peers: '用户',
|
||||
seeds: '做种',
|
||||
leeches: '下载',
|
||||
downloaded: '下载量',
|
||||
message: '消息'
|
||||
}
|
||||
},
|
||||
add: {
|
||||
title: '添加新的种子',
|
||||
selectFiles: '选择文件'
|
||||
selectFiles: '选择文件',
|
||||
urlHint: '每行一个链接',
|
||||
downloadDirectory: '下载目录',
|
||||
starttorrent: '添加后立即开始',
|
||||
skipHashCheck: '跳过哈希值检查',
|
||||
createSubfolder: '建立子目录',
|
||||
automaticTorrentManagement: '自动种子管理(ATM)',
|
||||
dropHereForAdd: '拖拽到此处即可添加',
|
||||
oneOrMoreFilesInvalidTorrent: '存在无效的种子文件'
|
||||
},
|
||||
changeLocation: {
|
||||
title: '更改位置',
|
||||
torrentName: '种子名称'
|
||||
},
|
||||
rename: {
|
||||
title: '重命名',
|
||||
torrentName: '种子名称'
|
||||
},
|
||||
sort: {
|
||||
title: '种子排序',
|
||||
reverse: '逆序',
|
||||
sortBy: {
|
||||
availability: '可用性',
|
||||
category: '分类',
|
||||
completed: '已完成',
|
||||
downloaded: '下载量',
|
||||
ETA: '剩余时间',
|
||||
name: '名称',
|
||||
peers: '用户',
|
||||
priority: '优先级',
|
||||
progress: '进度',
|
||||
ratio: '比率',
|
||||
size: '大小',
|
||||
state: '状态',
|
||||
uploaded: '上传量',
|
||||
addedOn: '添加时间',
|
||||
downloadSpeed: '下载速率',
|
||||
timeActive: '活跃时间',
|
||||
uploadSpeed: '上传速率'
|
||||
}
|
||||
},
|
||||
speedLimit: {
|
||||
speedLimit: '速率限制'
|
||||
},
|
||||
delete: {
|
||||
check: '同时从存储中删除'
|
||||
|
@ -64,7 +354,12 @@ const locale = {
|
|||
advanced: {
|
||||
advanced: '高级',
|
||||
changeLocation: '修改保存位置',
|
||||
rename: '重命名'
|
||||
rename: '重命名',
|
||||
forceRecheck: '强制重新检查',
|
||||
forceReannounce: '强制重新汇报',
|
||||
sequentialDownload: '顺序下载',
|
||||
firstLastPriority: '首尾优先',
|
||||
automaticTorrentManagement: '自动种子管理(ATM)'
|
||||
},
|
||||
prio: {
|
||||
prio: '设置优先级',
|
||||
|
@ -75,7 +370,7 @@ const locale = {
|
|||
},
|
||||
category: '设置分类',
|
||||
limit: '设置限制',
|
||||
copy: '复制…',
|
||||
copy: '复制',
|
||||
info: '显示详情'
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue