From 039c9a4b30738cca302523deb6cebb716d4a8cd4 Mon Sep 17 00:00:00 2001 From: Quan Dong <604925267@qq.com> Date: Fri, 14 Jul 2023 16:43:17 +0800 Subject: [PATCH] feat(in18): add i18n support in info dialog Co-authored-by: tabris --- src/components/dialogs/InfoDialog.vue | 8 +-- src/components/dialogs/Peers.vue | 23 +++++---- src/components/dialogs/TorrentInfo.vue | 53 +++++++++---------- src/components/dialogs/Trackers.vue | 27 +++++----- src/locale/en.ts | 65 +++++++++++++++++++++++ src/locale/zh-CN.ts | 71 +++++++++++++++++++++++++- 6 files changed, 192 insertions(+), 55 deletions(-) diff --git a/src/components/dialogs/InfoDialog.vue b/src/components/dialogs/InfoDialog.vue index 7577e6c..750e30d 100644 --- a/src/components/dialogs/InfoDialog.vue +++ b/src/components/dialogs/InfoDialog.vue @@ -15,16 +15,16 @@ - General + {{ $t("prop_tab_bar.general") }} - Trackers + {{ $t("prop_tab_bar.trackers") }} - Peers + {{ $t("prop_tab_bar.peers") }} - Content + {{ $t("prop_tab_bar.content") }}
- Progress: + {{ $t('properties_widget.progress') }}: {{ torrent.progress | progress }}
- Transfer + {{ $t('properties_widget.transfer') }}
- Information + {{ $t('properties_widget.information') }} formatDuration(prop.time_elapsed) + (prop.seeding_time ? ` (seeded ${formatDuration(prop.seeding_time)})` : ''), + label: tr('properties_widget.timeActive'), + value: prop => formatDuration(prop.time_elapsed) + (prop.seeding_time ? ` ($tr('properties_widget.seeded') ${formatDuration(prop.seeding_time)})` : ''), }, - { label: 'ETA', value: prop => formatDuration(prop.eta, { dayLimit: 100 }) }, - { label: 'Connections', value: prop => `${prop.nb_connections} (${prop.nb_connections_limit} max)` }, - { label: 'Downloaded', value: prop => `${formatSize(prop.total_downloaded_session)}/${formatSize(prop.total_downloaded)}` }, - { label: 'Uploaded', value: prop => `${formatSize(prop.total_uploaded_session)}/${formatSize(prop.total_uploaded)}` }, - { label: 'Seeds', value: prop => `${prop.seeds} (${prop.seeds_total} total)` }, - { label: 'DL speed', value: prop => `${formatSize(prop.dl_speed)}/s` }, - { label: 'UP speed', value: prop => `${formatSize(prop.up_speed)}/s` }, - { label: 'Peers', value: prop => `${prop.peers} (${prop.peers_total} total)` }, - { label: 'Wasted', value: prop => formatSize(prop.total_wasted) }, - { label: 'Share ratio', value: prop => toPrecision(prop.share_ratio, 3) }, - { label: 'Reannounce', value: prop => formatDuration(prop.reannounce) }, - { label: 'Last seen', value: prop => formatTimestamp(prop.last_seen) }, + { label: tr('properties_widget.eta'), value: prop => formatDuration(prop.eta, { dayLimit: 100 }) }, + { label: tr('properties_widget.connections'), value: prop => `${prop.nb_connections} (${prop.nb_connections_limit} ${tr('properties_widget.max')})` }, + { label: tr('properties_widget.downloaded'), value: prop => `${formatSize(prop.total_downloaded_session)}/${formatSize(prop.total_downloaded)}` }, + { label: tr('properties_widget.uploaded'), value: prop => `${formatSize(prop.total_uploaded_session)}/${formatSize(prop.total_uploaded)}` }, + { label: tr('properties_widget.seeds'), value: prop => `${prop.seeds} (${prop.seeds_total} ${tr('properties_widget.total')})` }, + { label: tr('properties_widget.downloadSpeed'), value: prop => `${formatSize(prop.dl_speed)}/${tr('properties_widget.second')}` }, + { label: tr('properties_widget.uploadSpeed'), value: prop => `${formatSize(prop.up_speed)}/${tr('properties_widget.second')}` }, + { label: tr('properties_widget.peers'), value: prop => `${prop.peers} (${prop.peers_total} ${tr('properties_widget.total')})` }, + { label: tr('properties_widget.wasted'), value: prop => formatSize(prop.total_wasted) }, + { label: tr('properties_widget.shareRatio'), value: prop => toPrecision(prop.share_ratio, 3) }, + { label: tr('properties_widget.reannounce'), value: prop => formatDuration(prop.reannounce) }, + { label: tr('properties_widget.lastSeen'), value: prop => formatTimestamp(prop.last_seen) }, ] information: Item[] = [ - { label: 'Total size', value: prop => formatSize(prop.total_size) }, - { label: 'Pieces', value: prop => `${prop.pieces_num} x ${formatSize(prop.piece_size)} (have ${prop.pieces_have})` }, - { label: 'Created by', value: prop => prop.created_by }, - { label: 'Created on', value: prop => formatTimestamp(prop.creation_date) }, - { label: 'Added on', value: prop => formatTimestamp(prop.addition_date) }, - { label: 'Completed on', value: prop => formatTimestamp(prop.completion_date) }, - { label: 'Torrent hash', value: () => this.torrent.hash }, - { label: 'Save path', value: prop => prop.save_path }, - { label: 'Comment', value: prop => prop.comment }, + { label: tr('properties_widget.totalSize'), value: prop => formatSize(prop.total_size) }, + { label: tr('properties_widget.pieces'), value: prop => `${prop.pieces_num} x ${formatSize(prop.piece_size)} (${tr('properties_widget.have')} ${prop.pieces_have})` }, + { label: tr('properties_widget.createdBy'), value: prop => prop.created_by }, + { label: tr('properties_widget.createdOn'), value: prop => formatTimestamp(prop.creation_date) }, + { label: tr('properties_widget.addedOn'), value: prop => formatTimestamp(prop.addition_date) }, + { label: tr('properties_widget.completedOn'), value: prop => formatTimestamp(prop.completion_date) }, + { label: tr('properties_widget.torrentHash'), value: () => this.torrent.hash }, + { label: tr('properties_widget.savePath'), value: prop => prop.save_path }, + { label: tr('properties_widget.comment'), value: prop => prop.comment }, ] pieces: PieceState[] = [] canvas: CanvasRenderingContext2D | null = null diff --git a/src/components/dialogs/Trackers.vue b/src/components/dialogs/Trackers.vue index e0ae189..388e88a 100644 --- a/src/components/dialogs/Trackers.vue +++ b/src/components/dialogs/Trackers.vue @@ -25,16 +25,17 @@ import api from '../../Api'; import Component from 'vue-class-component'; import { Prop } from 'vue-property-decorator'; import BaseTorrentInfo from './baseTorrentInfo'; +import { tr } from '@/locale' @Component({ filters: { formatTrackerStatus(status: number) { const map = [ - 'Disabled', - 'Not contacted', - 'Working', - 'Updating', - 'Not working', + tr('properties_widget.disabled'), + tr('properties_widget.notContracted'), + tr('properties_widget.working'), + tr('properties_widget.updating'), + tr('properties_widget.notWorking'), ]; return map[status]; @@ -53,14 +54,14 @@ export default class Trackers extends BaseTorrentInfo { readonly hash!: string readonly 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' }, + { text: tr('properties_widget.tier'), value: 'tier' }, + { text: tr('properties_widget.url'), value: 'url' }, + { text: tr('properties_widget.status'), value: 'status' }, + { text: tr('properties_widget.numPeers'), value: 'num_peers' }, + { text: tr('properties_widget.numSeeds'), value: 'num_seeds' }, + { text: tr('properties_widget.numLeeches'), value: 'num_leeches' }, + { text: tr('properties_widget.numDownloaded'), value: 'num_downloaded' }, + { text: tr('properties_widget.msg'), value: 'msg' }, ] trackers = [] diff --git a/src/locale/en.ts b/src/locale/en.ts index 26044e5..db167d8 100644 --- a/src/locale/en.ts +++ b/src/locale/en.ts @@ -260,4 +260,69 @@ export default { moving: 'moving', unknown: 'unknown', }, + + + prop_tab_bar: { + general: 'General', + trackers: 'Trackers', + peers: 'Peers', + // httpSource: 'HTTP Sources', + content: 'Content', + }, + properties_widget: { + disabled: 'Disabled', + notContracted: 'Not contacted', + working: 'Working', + updating: 'Updating', + notWorking: 'Not working', + + tier: '#', + url: 'URL', + status: 'Status', + numPeers: 'Peers', + numSeeds: 'Seeds', + numLeeches: 'Leeches', + numDownloaded: 'Downloaded', + msg: 'Message', + + progress: 'Progress', + transfer: 'Transfer', + information: 'Information', + + timeActive: 'Time active', + eta: 'ETA', + connections: 'Connections', + downloaded: 'Downloaded', + uploaded: 'Uploaded', + seeds: 'Seeds', + downloadSpeed: 'DL speed', + uploadSpeed: 'UP speed', + peers: 'Peers', + wasted: 'Wasted', + shareRatio: 'Share ratio', + reannounce: 'Reannounce', + lastSeen: 'Last seen', + totalSize: 'Total size', + pieces: 'Pieces', + CreatedBy: 'Created by', + CreatedOn: 'Created on', + addedOn: 'Added on', + completedOn: 'Completed on', + torrentHash: 'Torrent hash', + savePath: 'Save path', + comment: 'Comment', + + ip: 'IP', + connection: 'Connection', + flags: 'Flags', + client: 'Client', + relevance: 'Relevance', + files: 'Files', + + seeded: 'seeded', + second: 's', + total: 'Total', + max: 'max', + have: 'have', + }, } diff --git a/src/locale/zh-CN.ts b/src/locale/zh-CN.ts index 37894aa..301ab6c 100644 --- a/src/locale/zh-CN.ts +++ b/src/locale/zh-CN.ts @@ -18,6 +18,7 @@ export default { resume: '恢复', pause: '暂停', force_start: '强制继续', + toggle_sequential: '切换顺序下载', info: '信息', reset: '重置', login: '登录', @@ -45,7 +46,6 @@ export default { added_on: '添加时间', settings: '设置', - logs: '日志', light: '亮色', dark: '暗色', @@ -66,6 +66,9 @@ export default { plugin: '插件', action: '操作', search_engine: '搜索引擎', + usage: '用法', + plugin_manager: '插件管理', + update_plugins: '更新插件', preferences: { change_applied: '配置已保存', @@ -108,6 +111,7 @@ export default { connection: '连接', bittorrent: 'BitTorrent', + rss: 'RSS', rss_processing_enabled: '启用自动刷新', rss_auto_downloading_enabled: '启用自动下载种子', rss_refresh_interval: '订阅刷新间隔', @@ -165,6 +169,7 @@ export default { reannounced: '已重新通告', rechecking: '重新检查中…', dht_nodes: '%{smart_count} 节点', + base_url: 'Base URL', }, msg: { @@ -255,4 +260,68 @@ export default { moving: '移动中', unknown: '未知', }, + + prop_tab_bar: { + general: '普通', + trackers: 'Tracker', + peers: '用户', + // httpSource: 'HTTP 源', + content: '内容', + }, + properties_widget: { + disabled: '禁用', + notContracted: '未联系', + working: '工作', + updating: '更新...', + notWorking: '未工作', + + tier: '层级', + url: 'URL', + status: '状态', + numPeers: '用户', + numSeeds: '种子', + numLeeches: '下载', + numDownloaded: '下载次数', + msg: '消息', + + progress: '进度', + transfer: '传输', + information: '信息', + + timeActive: '活动时间', + eta: '剩余时间', + connections: '连接', + downloaded: '已下载', + uploaded: '已上传', + seeds: '种子', + downloadSpeed: '下载速度', + uploadSpeed: '上传速度', + peers: '用户', + wasted: '已丢弃', + shareRatio: '分享率', + reannounce: '下次汇报', + lastSeen: '最后完整可见', + totalSize: '总大小', + pieces: '区块', + createdBy: '创建', + createdOn: '创建于', + addedOn: '添加于', + completedOn: '完成于', + torrentHash: '种子哈希', + savePath: '保存路径', + comment: '注释', + + ip: 'IP', + connection: '连接', + flags: '标志', + client: '客户端', + relevance: '文件关联', + files: '文件', + + seeded: '已做种', + second: '秒', + total: '总计', + max: '最大', + have: '已完成', + }, }