- Status
+ {{ $t('modals.detail.pageInfo.status') }}
|
- Trackers
+ {{ $t('modals.detail.pageInfo.trackers') }}
|
{{ torrent.tracker }}
@@ -136,7 +136,7 @@
|
- Created By
+ {{ $t('modals.detail.pageInfo.createdBy') }}
|
{{ createdBy }}
@@ -153,7 +153,7 @@
|
- First/Last Piece Priority
+ {{ $t('modals.detail.pageInfo.firstLastPiecePriority') }}
|
{{ torrent.f_l_piece_prio }}
@@ -161,7 +161,7 @@
|
- Sequential Download
+ {{ $t('modals.detail.pageInfo.sequentialDownload') }}
|
{{ torrent.seq_dl }}
@@ -169,7 +169,7 @@
|
- Auto TMM
+ {{ $t('modals.detail.pageInfo.autoTMM') }}
|
{{ torrent.auto_tmm }}
@@ -177,7 +177,7 @@
|
- Share Ratio Limit
+ {{ $t('modals.detail.pageInfo.shareRatioLimit') }}
|
{{ torrent.ratio_limit | limitToValue }}
@@ -185,7 +185,7 @@
|
- Share Time Limit (minutes)
+ {{ $t('modals.detail.pageInfo.shareTimeLimit') }}
|
{{ torrent.ratio_time_limit | limitToValue }}
@@ -193,7 +193,7 @@
|
- Download Limit
+ {{ $t('modals.detail.pageInfo.downloadLimit') }}
|
{{ torrent.dl_limit | getDataValue }} {{ torrent.dl_limit | getDataUnit }}/s
@@ -204,7 +204,7 @@
|
- Upload Limit
+ {{ $t('modals.detail.pageInfo.uploadLimit') }}
|
{{ torrent.up_limit | getDataValue }} {{ torrent.up_limit | getDataUnit }}/s
diff --git a/src/components/Modals/TorrentDetailModal/Tabs/Peers.vue b/src/components/Modals/TorrentDetailModal/Tabs/Peers.vue
index dca5542e..5725e10d 100644
--- a/src/components/Modals/TorrentDetailModal/Tabs/Peers.vue
+++ b/src/components/Modals/TorrentDetailModal/Tabs/Peers.vue
@@ -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: {
diff --git a/src/components/Modals/TorrentDetailModal/Tabs/TorrentTagsAndCategories.vue b/src/components/Modals/TorrentDetailModal/Tabs/TorrentTagsAndCategories.vue
index 59807731..216ad015 100644
--- a/src/components/Modals/TorrentDetailModal/Tabs/TorrentTagsAndCategories.vue
+++ b/src/components/Modals/TorrentDetailModal/Tabs/TorrentTagsAndCategories.vue
@@ -2,7 +2,7 @@
- Available Tags:
+ {{ $t('modals.detail.pageTagsAndCategories.subHeaderTag') }}
- Available Categories:
+ {{ $t('modals.detail.pageTagsAndCategories.subHeaderCategories') }}
({
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: {
diff --git a/src/components/Modals/TorrentDetailModal/TorrentDetailModal.vue b/src/components/Modals/TorrentDetailModal/TorrentDetailModal.vue
index c6e9b794..a168bafd 100644
--- a/src/components/Modals/TorrentDetailModal/TorrentDetailModal.vue
+++ b/src/components/Modals/TorrentDetailModal/TorrentDetailModal.vue
@@ -13,7 +13,7 @@
- Torrent Detail
+ {{ $t('modals.detail.title') }}
- Info
+ {{ $t('modals.detail.tabTitleInfo') }}
- Trackers
+ {{ $t('modals.detail.tabTitleTrackers') }}
- Peers
+ {{ $t('modals.detail.tabTitlePeers') }}
- Content
+ {{ $t('modals.detail.tabTitleContent') }}
- Tags & Categories
+ {{ $t('modals.detail.tabTitleTagsCategories') }}
diff --git a/src/components/Navbar/ConnectionStatus.vue b/src/components/Navbar/ConnectionStatus.vue
index 9f1ce62e..ba3636be 100644
--- a/src/components/Navbar/ConnectionStatus.vue
+++ b/src/components/Navbar/ConnectionStatus.vue
@@ -8,7 +8,7 @@
- {{ status || 'unknown' }}
+ {{ status || $t('unknown') }}
diff --git a/src/components/Navbar/FilterSelect.vue b/src/components/Navbar/FilterSelect.vue
index 00e9cf34..6c56460b 100644
--- a/src/components/Navbar/FilterSelect.vue
+++ b/src/components/Navbar/FilterSelect.vue
@@ -1,14 +1,14 @@
({
- 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 },
diff --git a/src/components/Navbar/NavbarActions.vue b/src/components/Navbar/NavbarActions.vue
index d35ef9eb..521f9edb 100644
--- a/src/components/Navbar/NavbarActions.vue
+++ b/src/components/Navbar/NavbarActions.vue
@@ -15,7 +15,7 @@
- Log Out
+ {{ $t('logout') }}
@@ -33,7 +33,7 @@
- Alt speeds
+ {{ $t('navbar.action.altSpeed') }}
@@ -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()
diff --git a/src/components/Navbar/TransferStats.vue b/src/components/Navbar/TransferStats.vue
index 12e790c1..94be8ee2 100644
--- a/src/components/Navbar/TransferStats.vue
+++ b/src/components/Navbar/TransferStats.vue
@@ -18,11 +18,11 @@
-
+
diff --git a/src/components/Torrent/DashboardItems/Category.vue b/src/components/Torrent/DashboardItems/Category.vue
index a27cce69..7a079a1e 100644
--- a/src/components/Torrent/DashboardItems/Category.vue
+++ b/src/components/Torrent/DashboardItems/Category.vue
@@ -6,7 +6,7 @@
md1
>
- Category
+ {{ $t('category') }}
{{ torrent.category }}
diff --git a/src/components/Torrent/DashboardItems/Download.vue b/src/components/Torrent/DashboardItems/Download.vue
index f43fa344..8a1d0f00 100644
--- a/src/components/Torrent/DashboardItems/Download.vue
+++ b/src/components/Torrent/DashboardItems/Download.vue
@@ -1,7 +1,7 @@
- Download
+ {{ $t('download') }}
{{ torrent.dlspeed | getDataValue(1) }}
diff --git a/src/components/Torrent/DashboardItems/Downloaded.vue b/src/components/Torrent/DashboardItems/Downloaded.vue
index df97f016..9d7c505a 100644
--- a/src/components/Torrent/DashboardItems/Downloaded.vue
+++ b/src/components/Torrent/DashboardItems/Downloaded.vue
@@ -1,7 +1,7 @@
- Downloaded
+ {{ $t('downloaded') }}
{{ torrent.dloaded | getDataValue(2) }}
diff --git a/src/components/Torrent/DashboardItems/ETA.vue b/src/components/Torrent/DashboardItems/ETA.vue
index eb6a81b0..172f2d6d 100644
--- a/src/components/Torrent/DashboardItems/ETA.vue
+++ b/src/components/Torrent/DashboardItems/ETA.vue
@@ -1,7 +1,7 @@
- ETA
+ {{ $t('ETA') }}
{{ torrent.eta }}
diff --git a/src/components/Torrent/DashboardItems/Peers.vue b/src/components/Torrent/DashboardItems/Peers.vue
index fb81a708..8394748a 100644
--- a/src/components/Torrent/DashboardItems/Peers.vue
+++ b/src/components/Torrent/DashboardItems/Peers.vue
@@ -1,7 +1,7 @@
- Peers
+ {{ $t('peers') }}
{{ torrent.num_leechs }}
diff --git a/src/components/Torrent/DashboardItems/Ratio.vue b/src/components/Torrent/DashboardItems/Ratio.vue
index 4dddd2b0..e0773f08 100644
--- a/src/components/Torrent/DashboardItems/Ratio.vue
+++ b/src/components/Torrent/DashboardItems/Ratio.vue
@@ -1,7 +1,7 @@
- Ratio
+ {{ $t('ratio') }}
{{ torrent.ratio }}
diff --git a/src/components/Torrent/DashboardItems/Seeds.vue b/src/components/Torrent/DashboardItems/Seeds.vue
index 17b9c11c..797d310e 100644
--- a/src/components/Torrent/DashboardItems/Seeds.vue
+++ b/src/components/Torrent/DashboardItems/Seeds.vue
@@ -1,7 +1,7 @@
- Seeds
+ {{ $t('seeds') }}
{{ torrent.num_seeds }}
diff --git a/src/components/Torrent/DashboardItems/Status.vue b/src/components/Torrent/DashboardItems/Status.vue
index a5540120..a21d9871 100644
--- a/src/components/Torrent/DashboardItems/Status.vue
+++ b/src/components/Torrent/DashboardItems/Status.vue
@@ -6,7 +6,7 @@
class="mr-4"
>
- Status
+ {{ $t('status') }}
- Tags
+ {{ $t('tags') }}
- Upload
+ {{ $t('upload') }}
{{ torrent.upspeed | getDataValue(1) }}
diff --git a/src/components/Torrent/DashboardItems/Uploaded.vue b/src/components/Torrent/DashboardItems/Uploaded.vue
index c039cd3b..7f376fec 100644
--- a/src/components/Torrent/DashboardItems/Uploaded.vue
+++ b/src/components/Torrent/DashboardItems/Uploaded.vue
@@ -1,7 +1,7 @@
- Uploaded
+ {{ $t('uploaded') }}
{{ torrent.uploaded | getDataValue }}
diff --git a/src/components/Torrent/DashboardItems/UploadedSession.vue b/src/components/Torrent/DashboardItems/UploadedSession.vue
index 7a8c7001..0a13fa87 100644
--- a/src/components/Torrent/DashboardItems/UploadedSession.vue
+++ b/src/components/Torrent/DashboardItems/UploadedSession.vue
@@ -2,6 +2,7 @@
Uploaded Session
+ {{ $t('torrent.uploadedSession') }}
{{ torrent.uploaded_session | getDataValue }}
diff --git a/src/components/Torrent/DesktopCard.vue b/src/components/Torrent/DesktopCard.vue
index ffae9d45..f065906b 100644
--- a/src/components/Torrent/DesktopCard.vue
+++ b/src/components/Torrent/DesktopCard.vue
@@ -6,7 +6,7 @@
>
- Torrent title
+ {{ $t('torrent.torrentTitle') }}
{{ torrent.name }}
diff --git a/src/components/Torrent/TorrentRightClickMenu.vue b/src/components/Torrent/TorrentRightClickMenu.vue
index f4480c0f..eb6f71fa 100644
--- a/src/components/Torrent/TorrentRightClickMenu.vue
+++ b/src/components/Torrent/TorrentRightClickMenu.vue
@@ -87,7 +87,7 @@
class="ml-2"
style="font-size: 1em"
>
- Force recheck
+ {{ $t('rightClick.advanced.forceRecheck') | titleCase }}
@@ -96,7 +96,7 @@
class="ml-2"
style="font-size: 1em"
>
- Force reannounce
+ {{ $t('rightClick.advanced.forceReannounce') | titleCase }}
@@ -105,7 +105,7 @@
class="ml-2"
style="font-size: 1em"
>
- Sequential Download
+ {{ $t('rightClick.advanced.sequentialDownload') | titleCase }}
@@ -114,7 +114,7 @@
class="ml-2"
style="font-size: 1em"
>
- First/Last priority
+ {{ $t('rightClick.advanced.firstLastPriority') | titleCase }}
@@ -123,7 +123,7 @@
class="ml-2"
style="font-size: 1em"
>
- Auto TMM
+ {{ $t('rightClick.advanced.automaticTorrentManagement') | titleCase }}
@@ -223,19 +223,19 @@
{{ mdiChevronDown }}
- Download
+ {{ $t('download') }}
{{ mdiChevronUp }}
- Upload
+ {{ $t('upload') }}
{{ mdiAccountGroup }}
- Share
+ {{ $t('share') }}
@@ -266,19 +266,19 @@
{{ mdiContentCopy }}
- Name
+ {{ $t('name') }}
{{ mdiContentCopy }}
- Hash
+ {{ $t('hash') }}
{{ mdiMagnet }}
- Magnet
+ {{ $t('magnet') }}
diff --git a/src/lang/en.js b/src/lang/en.js
index 045102c9..33740f46 100644
--- a/src/lang/en.js
+++ b/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',
diff --git a/src/lang/zh-hans.js b/src/lang/zh-hans.js
index ea144370..9b2d9f3c 100644
--- a/src/lang/zh-hans.js
+++ b/src/lang/zh-hans.js
@@ -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: '显示详情'
}
}
| |