新增多语言设置
This commit is contained in:
parent
a17ba9f62c
commit
b8f15bcca9
59
package-lock.json
generated
59
package-lock.json
generated
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "lx-music-desktop",
|
||||
"version": "0.15.0",
|
||||
"version": "0.16.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@ -2704,8 +2704,7 @@
|
||||
"@types/node": {
|
||||
"version": "10.14.12",
|
||||
"resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-10.14.12.tgz?cache=0&sync_timestamp=1563323059673&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-10.14.12.tgz",
|
||||
"integrity": "sha1-DuwxVaRubE2x8nw+WIogX3Z9Yi8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-DuwxVaRubE2x8nw+WIogX3Z9Yi8="
|
||||
},
|
||||
"@types/q": {
|
||||
"version": "1.5.2",
|
||||
@ -2714,9 +2713,12 @@
|
||||
"dev": true
|
||||
},
|
||||
"@types/semver": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npm.taobao.org/@types/semver/download/@types/semver-6.2.0.tgz?cache=0&sync_timestamp=1572034910183&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fsemver%2Fdownload%2F%40types%2Fsemver-6.2.0.tgz",
|
||||
"integrity": "sha1-1ojVdEANlsWwEUlocFNm9DGDHho="
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npm.taobao.org/@types/semver/download/@types/semver-7.1.0.tgz?cache=0&sync_timestamp=1580871311074&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fsemver%2Fdownload%2F%40types%2Fsemver-7.1.0.tgz",
|
||||
"integrity": "sha1-yMYw1MGM0ya+/3dASIdZb5ZAhAg=",
|
||||
"requires": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@vue/component-compiler-utils": {
|
||||
"version": "3.1.1",
|
||||
@ -4831,9 +4833,9 @@
|
||||
}
|
||||
},
|
||||
"builder-util-runtime": {
|
||||
"version": "8.4.0",
|
||||
"resolved": "https://registry.npm.taobao.org/builder-util-runtime/download/builder-util-runtime-8.4.0.tgz?cache=0&sync_timestamp=1574846206242&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbuilder-util-runtime%2Fdownload%2Fbuilder-util-runtime-8.4.0.tgz",
|
||||
"integrity": "sha1-MWP//AeOa4891bbrEqg0VXNZBoI=",
|
||||
"version": "8.6.0",
|
||||
"resolved": "https://registry.npm.taobao.org/builder-util-runtime/download/builder-util-runtime-8.6.0.tgz",
|
||||
"integrity": "sha1-twB8MBJtqakOmZMhKNKSLIwXhkk=",
|
||||
"requires": {
|
||||
"debug": "^4.1.1",
|
||||
"sax": "^1.2.4"
|
||||
@ -5046,9 +5048,9 @@
|
||||
}
|
||||
},
|
||||
"cfonts": {
|
||||
"version": "2.6.1",
|
||||
"resolved": "https://registry.npm.taobao.org/cfonts/download/cfonts-2.6.1.tgz",
|
||||
"integrity": "sha1-uErzJQD/JxsKY0HeQ6I9RkrRun8=",
|
||||
"version": "2.7.0",
|
||||
"resolved": "https://registry.npm.taobao.org/cfonts/download/cfonts-2.7.0.tgz",
|
||||
"integrity": "sha1-tFGO2mUUJH/8yPZv+Ch9TaqIVd4=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chalk": "^3.0.0",
|
||||
@ -7036,24 +7038,29 @@
|
||||
"dev": true
|
||||
},
|
||||
"electron-updater": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npm.taobao.org/electron-updater/download/electron-updater-4.2.0.tgz",
|
||||
"integrity": "sha1-+ez8ZX9l6tc31Cue/s9ijTdWtVA=",
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npm.taobao.org/electron-updater/download/electron-updater-4.2.2.tgz",
|
||||
"integrity": "sha1-V+EGv/rRb3Gx/6OWilKhtxyBR+Y=",
|
||||
"requires": {
|
||||
"@types/semver": "^6.0.2",
|
||||
"builder-util-runtime": "8.4.0",
|
||||
"@types/semver": "^7.1.0",
|
||||
"builder-util-runtime": "8.6.0",
|
||||
"fs-extra": "^8.1.0",
|
||||
"js-yaml": "^3.13.1",
|
||||
"lazy-val": "^1.0.4",
|
||||
"lodash.isequal": "^4.5.0",
|
||||
"pako": "^1.0.10",
|
||||
"semver": "^6.3.0"
|
||||
"pako": "^1.0.11",
|
||||
"semver": "^7.1.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"pako": {
|
||||
"version": "1.0.11",
|
||||
"resolved": "https://registry.npm.taobao.org/pako/download/pako-1.0.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpako%2Fdownload%2Fpako-1.0.11.tgz",
|
||||
"integrity": "sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8="
|
||||
},
|
||||
"semver": {
|
||||
"version": "6.3.0",
|
||||
"resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1565627380363&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz",
|
||||
"integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0="
|
||||
"version": "7.1.3",
|
||||
"resolved": "https://registry.npm.taobao.org/semver/download/semver-7.1.3.tgz?cache=0&sync_timestamp=1581458063470&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.1.3.tgz",
|
||||
"integrity": "sha1-5DRc5zBxxT8zZEXPwZ77HDEd8qY="
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -12264,7 +12271,8 @@
|
||||
"pako": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npm.taobao.org/pako/download/pako-1.0.10.tgz",
|
||||
"integrity": "sha1-Qyi621CGpCaqkPVBl31JVdpclzI="
|
||||
"integrity": "sha1-Qyi621CGpCaqkPVBl31JVdpclzI=",
|
||||
"dev": true
|
||||
},
|
||||
"parallel-transform": {
|
||||
"version": "1.1.0",
|
||||
@ -16084,6 +16092,11 @@
|
||||
"integrity": "sha1-UylVzB6yCKPZkLOp+acFdGV+CPI=",
|
||||
"dev": true
|
||||
},
|
||||
"vue-i18n": {
|
||||
"version": "8.15.3",
|
||||
"resolved": "https://registry.npm.taobao.org/vue-i18n/download/vue-i18n-8.15.3.tgz?cache=0&sync_timestamp=1576684265396&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-i18n%2Fdownload%2Fvue-i18n-8.15.3.tgz",
|
||||
"integrity": "sha1-n5R4Atm3NPy5LiznJNplTy+fwPQ="
|
||||
},
|
||||
"vue-loader": {
|
||||
"version": "15.9.0",
|
||||
"resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-15.9.0.tgz?cache=0&sync_timestamp=1581493732642&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-15.9.0.tgz",
|
||||
|
||||
@ -151,7 +151,7 @@
|
||||
"babel-minify-webpack-plugin": "^0.3.1",
|
||||
"babel-preset-minify": "^0.5.1",
|
||||
"browserslist": "^4.8.7",
|
||||
"cfonts": "^2.6.1",
|
||||
"cfonts": "^2.7.0",
|
||||
"chalk": "^3.0.0",
|
||||
"changelog-parser": "^2.8.0",
|
||||
"copy-webpack-plugin": "^5.1.1",
|
||||
@ -206,7 +206,7 @@
|
||||
"dnscache": "^1.0.2",
|
||||
"electron-log": "^4.0.6",
|
||||
"electron-store": "^5.1.0",
|
||||
"electron-updater": "^4.2.0",
|
||||
"electron-updater": "^4.2.2",
|
||||
"flac-metadata": "^0.1.1",
|
||||
"js-htmlencode": "^0.3.0",
|
||||
"lrc-file-parser": "^1.0.0",
|
||||
@ -215,6 +215,7 @@
|
||||
"request": "^2.88.2",
|
||||
"vue": "^2.6.11",
|
||||
"vue-electron": "^1.0.6",
|
||||
"vue-i18n": "^8.15.3",
|
||||
"vue-router": "^3.1.5",
|
||||
"vuex": "^3.1.2",
|
||||
"vuex-electron": "^1.0.3",
|
||||
|
||||
@ -1,25 +1,3 @@
|
||||
### 新增
|
||||
|
||||
- 允许选中列表内歌曲名、歌手名、专辑名内的文字,选中后可使用键盘快捷键进行复制
|
||||
- 新增在列表可选内容区域**鼠标右击**时自动复制列表已选文字的功能
|
||||
- 新增在搜索框**鼠标右击**时自动粘贴剪贴板的文本到搜索框中
|
||||
- 任务下载失败时将显示搜索按钮,方便在其他源搜索该歌曲
|
||||
|
||||
### 优化
|
||||
|
||||
- 优化木叶之村主题翻页器背景颜色
|
||||
- 优化各个主题音质标签颜色
|
||||
- 优化其他一些界面细节及用户交互效果
|
||||
|
||||
### 修复
|
||||
|
||||
- 修复启用透明窗口鼠标不穿透的bug
|
||||
- 修复大窗口时设置的音乐来源选项不换行的问题
|
||||
- 修复某些情况下暂停任务会自动开始任务的问题
|
||||
- 修复移除暂停、错误的任务时不删除未下载完成的文件的问题
|
||||
- 修复酷狗源歌单热门标签歌单列表无法加载问题
|
||||
- 修复QQ源歌单热门标签歌单列表无法加载问题
|
||||
|
||||
### 其他
|
||||
|
||||
- 更新electron到 8.0.1
|
||||
- 新增多语言设置,目前软件内置了简体中文、繁体中文、英语三种语言,欢迎提交PR翻译更多语言!
|
||||
|
||||
@ -2,21 +2,21 @@ module.exports = {
|
||||
windowSizeList: [
|
||||
{
|
||||
id: 1,
|
||||
name: '小',
|
||||
name: 'small',
|
||||
width: 920,
|
||||
height: 590,
|
||||
tabList: '645px',
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: '中',
|
||||
name: 'medium',
|
||||
width: 1012,
|
||||
height: 650,
|
||||
tabList: '719px',
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: '大',
|
||||
name: 'big',
|
||||
width: 1104,
|
||||
height: 708,
|
||||
tabList: '792px',
|
||||
|
||||
@ -55,6 +55,7 @@ export default {
|
||||
}),
|
||||
},
|
||||
created() {
|
||||
this.$i18n.locale = this.setting.langId
|
||||
this.saveSetting = throttle(n => {
|
||||
window.electronStore_config.set('setting', n)
|
||||
})
|
||||
|
||||
@ -6,25 +6,25 @@ div(:class="$style.aside")
|
||||
|
||||
div(:class="$style.menu")
|
||||
dl
|
||||
dt 在线音乐
|
||||
dt {{$t('core.aside.online_music')}}
|
||||
dd
|
||||
router-link(:active-class="$style.active" to="search") 搜索
|
||||
router-link(:active-class="$style.active" to="search") {{$t('core.aside.search')}}
|
||||
dd
|
||||
router-link(:active-class="$style.active" to="songList") 歌单
|
||||
router-link(:active-class="$style.active" to="songList") {{$t('core.aside.song_list')}}
|
||||
dd
|
||||
router-link(:active-class="$style.active" to="leaderboard") 排行榜
|
||||
router-link(:active-class="$style.active" to="leaderboard") {{$t('core.aside.leaderboard')}}
|
||||
dl
|
||||
dt 我的音乐
|
||||
dt {{$t('core.aside.my_music')}}
|
||||
dd
|
||||
router-link(:active-class="($route.query.id === defaultList.id || $route.query.id == '') ? $style.active : ''" :to="`list?id=${defaultList.id || ''}`") {{defaultList.name}}
|
||||
router-link(:active-class="$route.query.id === loveList.id ? $style.active : ''" :to="`list?id=${loveList.id}`") {{loveList.name}}
|
||||
router-link(:active-class="($route.query.id === defaultList.id || $route.query.id == '') ? $style.active : ''" :to="`list?id=${defaultList.id || ''}`") {{$t('core.aside.default_list')}}
|
||||
router-link(:active-class="$route.query.id === loveList.id ? $style.active : ''" :to="`list?id=${loveList.id}`") {{$t('core.aside.love_list')}}
|
||||
router-link(:active-class="$route.query.id === item.id ? $style.active : ''" v-for="item in userList" :to="`list?id=${item._id}`" :key="item._id") {{item.name}}
|
||||
dl
|
||||
dt 其他
|
||||
dt {{$t('core.aside.other')}}
|
||||
dd
|
||||
router-link(:active-class="$style.active" to="download") 下载管理
|
||||
router-link(:active-class="$style.active" to="download") {{$t('core.aside.download')}}
|
||||
dd
|
||||
router-link(:active-class="$style.active" to="setting") 设置
|
||||
router-link(:active-class="$style.active" to="setting") {{$t('core.aside.setting')}}
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
@ -7,19 +7,19 @@ div(:class="$style.player")
|
||||
div(:class="$style.right")
|
||||
div(:class="$style.column1")
|
||||
div(:class="$style.container")
|
||||
div(:class="$style.title" @click="handleCopy(title)" :title="title + '(点击复制)'") {{title}}
|
||||
div(:class="$style.title" @click="handleCopy(title)" :title="title + $t('core.player.copy_title')") {{title}}
|
||||
div(:class="$style.volumeContent")
|
||||
div(:class="$style.volume")
|
||||
div(:class="$style.volumeBar" :style="{ transform: `scaleX(${volume || 0})` }")
|
||||
div(:class="$style.volumeMask" @mousedown="handleVolumeMsDown" ref="dom_volumeMask" :title="`当前音量:${parseInt(volume * 100)}%`")
|
||||
div(:class="$style.volumeMask" @mousedown="handleVolumeMsDown" ref="dom_volumeMask" :title="`${$t('core.player.volume')}${parseInt(volume * 100)}%`")
|
||||
|
||||
//- div(:class="$style.playBtn" @click='handleNext' title="音量")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 291.063 291.064' space='preserve')
|
||||
use(xlink:href='#icon-sound')
|
||||
div(:class="$style.playBtn" @click='handleNext' title="下一首")
|
||||
div(:class="$style.playBtn" @click='handleNext' :title="$t('core.player.next')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 220.847 220.847' space='preserve')
|
||||
use(xlink:href='#icon-nextMusic')
|
||||
div(:class="$style.playBtn" :title="isPlay ? '暂停' : '播放'" @click='togglePlay')
|
||||
div(:class="$style.playBtn" :title="isPlay ? $t('core.player.pause') : $t('core.player.play')" @click='togglePlay')
|
||||
svg(v-if="isPlay" version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 277.338 277.338' space='preserve')
|
||||
use(xlink:href='#icon-pause')
|
||||
svg(v-else version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 170 170' space='preserve')
|
||||
@ -196,19 +196,19 @@ export default {
|
||||
|
||||
this.audio.addEventListener('playing', () => {
|
||||
console.log('开始播放')
|
||||
this.status = '播放中...'
|
||||
this.status = this.$t('core.player.playing')
|
||||
this.startPlay()
|
||||
})
|
||||
this.audio.addEventListener('pause', () => {
|
||||
console.log('暂停播放')
|
||||
this.lyric.lrc.pause()
|
||||
this.stopPlay()
|
||||
this.status = '暂停播放'
|
||||
this.status = this.$t('core.player.stop')
|
||||
})
|
||||
this.audio.addEventListener('ended', () => {
|
||||
console.log('播放完毕')
|
||||
this.stopPlay()
|
||||
this.status = '播放完毕'
|
||||
this.status = this.$t('core.player.end')
|
||||
this.handleNext()
|
||||
})
|
||||
this.audio.addEventListener('error', () => {
|
||||
@ -221,12 +221,12 @@ export default {
|
||||
if (!this.audioErrorTime) this.audioErrorTime = this.audio.currentTime // 记录出错的播放时间
|
||||
this.retryNum++
|
||||
this.setUrl(this.list[this.playIndex], true)
|
||||
this.status = 'URL过期,正在刷新URL...'
|
||||
this.status = this.$t('core.player.refresh_url')
|
||||
return
|
||||
}
|
||||
|
||||
this.sendProgressEvent(this.progress, 'error')
|
||||
this.status = '音频加载出错,5 秒后切换下一首'
|
||||
this.status = this.$t('core.player.error')
|
||||
this.addDelayNextTimeout()
|
||||
})
|
||||
this.audio.addEventListener('loadeddata', () => {
|
||||
@ -236,10 +236,10 @@ export default {
|
||||
this.audioErrorTime = 0
|
||||
}
|
||||
if (!this.targetSong.interval && this.listId != 'download') this.updateMusicInfo({ id: 'default', index: this.playIndex, data: { interval: formatPlayTime2(this.maxPlayTime) } })
|
||||
this.status = '音乐加载中...'
|
||||
this.status = this.$t('core.player.loading')
|
||||
})
|
||||
this.audio.addEventListener('loadstart', () => {
|
||||
this.status = '音乐加载中...'
|
||||
this.status = this.$t('core.player.loading')
|
||||
})
|
||||
this.audio.addEventListener('canplay', () => {
|
||||
console.log('加载完成开始播放')
|
||||
@ -252,7 +252,7 @@ export default {
|
||||
this.clearBufferTimeout()
|
||||
}
|
||||
// if (this.musicInfo.lrc) this.lyric.lrc.play(this.audio.currentTime * 1000)
|
||||
this.status = '音乐加载中...'
|
||||
this.status = this.$t('core.player.loading')
|
||||
})
|
||||
// this.audio.addEventListener('canplaythrough', () => {
|
||||
// console.log('音乐加载完毕')
|
||||
@ -276,7 +276,7 @@ export default {
|
||||
// console.log('缓冲中...')
|
||||
this.stopPlay()
|
||||
this.startBuffering()
|
||||
this.status = '缓冲中...'
|
||||
this.status = this.$t('core.player.buffering')
|
||||
})
|
||||
|
||||
this.lyric.lrc = new Lyric({
|
||||
@ -431,7 +431,7 @@ export default {
|
||||
setUrl(targetSong, isRefresh) {
|
||||
let type = this.getPlayType(this.setting.player.highQuality, targetSong)
|
||||
this.musicInfo.url = targetSong.typeUrl[type]
|
||||
this.status = '歌曲链接获取中...'
|
||||
this.status = this.$t('core.player.geting_url')
|
||||
|
||||
return this.getUrl({ musicInfo: targetSong, type, isRefresh }).then(() => {
|
||||
this.audio.src = this.musicInfo.url = targetSong.typeUrl[type]
|
||||
@ -466,7 +466,7 @@ export default {
|
||||
if (this.isPlay && (this.musicInfo.url || this.listId == 'download')) this.lyric.lrc.play(this.audio.currentTime * 1000)
|
||||
})
|
||||
.catch(() => {
|
||||
this.status = '歌词获取失败'
|
||||
this.status = this.$t('core.player.lyric_error')
|
||||
})
|
||||
},
|
||||
handleRemoveMusic() {
|
||||
|
||||
@ -6,9 +6,9 @@
|
||||
@event="handleEvent" :list="tipList" :visibleList="visibleList"
|
||||
v-model="searchText")
|
||||
div(:class="$style.control")
|
||||
button(type="button" :class="$style.min" title="最小化" @click="min")
|
||||
button(type="button" :class="$style.min" :title="$t('core.toolbar.min')" @click="min")
|
||||
//- button(type="button" :class="$style.max" @click="max")
|
||||
button(type="button" :class="$style.close" title="关闭" @click="close")
|
||||
button(type="button" :class="$style.close" :title="$t('core.toolbar.close')" @click="close")
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
@ -33,7 +33,9 @@ export default {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {},
|
||||
label: {
|
||||
type: String,
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
@ -149,6 +151,7 @@ export default {
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
color: @color-theme;
|
||||
margin-top: .25em;
|
||||
// border: 1px solid #ccc;
|
||||
&:after {
|
||||
position: absolute;
|
||||
@ -173,6 +176,7 @@ export default {
|
||||
flex: auto;
|
||||
line-height: 1;
|
||||
margin-left: 5px;
|
||||
line-height: 1.5;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ material-modal(:show="show" :bg-close="bgClose" @close="handleClose")
|
||||
| {{ info.name }}
|
||||
br
|
||||
| {{ info.singer }}
|
||||
material-btn(:class="$style.btn" :title="!checkSource(type.type) && '腾讯、网易音源仅支持下载128k音质'" :disabled="!checkSource(type.type)" :key="type.type" @click="handleClick(type.type)" v-for="type in info.types") {{getTypeName(type.type)}} {{ type.type.toUpperCase() }}{{ type.size && ` - ${type.size.toUpperCase()}` }}
|
||||
material-btn(:class="$style.btn" :title="!checkSource(type.type) && $t('material.download_modal.btn_tip')" :disabled="!checkSource(type.type)" :key="type.type" @click="handleClick(type.type)" v-for="type in info.types") {{getTypeName(type.type)}} {{ type.type.toUpperCase() }}{{ type.size && ` - ${type.size.toUpperCase()}` }}
|
||||
|
||||
</template>
|
||||
|
||||
@ -41,12 +41,12 @@ export default {
|
||||
switch (type) {
|
||||
case 'flac':
|
||||
case 'ape':
|
||||
return '无损音质'
|
||||
return this.$t('material.download_modal.lossless')
|
||||
case '320k':
|
||||
return '高品音质'
|
||||
return this.$t('material.download_modal.high_quality')
|
||||
case '192k':
|
||||
case '128k':
|
||||
return '普通音质'
|
||||
return this.$t('material.download_modal.normal')
|
||||
}
|
||||
},
|
||||
checkSource(type) {
|
||||
|
||||
@ -2,13 +2,13 @@
|
||||
material-modal(:show="show" :bg-close="bgClose" @close="handleClose")
|
||||
main(:class="$style.main")
|
||||
h2
|
||||
| 已选择 {{list.length}} 首歌曲
|
||||
| {{$t('material.download_multiple_modal.tip', { len: list.length })}}
|
||||
br
|
||||
| 请选择要优先下载的音质
|
||||
material-btn(:class="$style.btn" @click="handleClick('128k')") 普通音质 - 128K
|
||||
material-btn(:class="$style.btn" @click="handleClick('320k')") 高品音质 - 320K
|
||||
| {{$t('material.download_multiple_modal.tip2')}}
|
||||
material-btn(:class="$style.btn" @click="handleClick('128k')") {{$t('material.download_multiple_modal.normal')}} - 128K
|
||||
material-btn(:class="$style.btn" @click="handleClick('320k')") {{$t('material.download_multiple_modal.high_quality')}} - 320K
|
||||
//- material-btn(:class="$style.btn" @click="handleClick('ape')") 无损音质 - APE
|
||||
material-btn(:class="$style.btn" @click="handleClick('flac')") 无损音质 - FLAC
|
||||
material-btn(:class="$style.btn" @click="handleClick('flac')") {{$t('material.download_multiple_modal.lossless')}} - FLAC
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
@ -1,22 +1,22 @@
|
||||
<template lang="pug">
|
||||
transition(enter-active-class="animated-fast zoomIn" leave-active-class="animated zoomOut")
|
||||
div(:class="$style.btns" v-show="show")
|
||||
button(type="button" v-if="playBtn" title="播放" @click.stop="handleClick('play')")
|
||||
button(type="button" v-if="playBtn" :title="$t('material.flow_btn.play')" @click.stop="handleClick('play')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 287.386 287.386' space='preserve')
|
||||
use(xlink:href='#icon-testPlay')
|
||||
button(type="button" v-if="addBtn" title="添加" @click.stop="handleClick('add')")
|
||||
button(type="button" v-if="addBtn" :title="$t('material.flow_btn.play')" @click.stop="handleClick('add')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 42 42' space='preserve')
|
||||
use(xlink:href='#icon-addTo')
|
||||
button(type="button" v-if="downloadBtn" title="下载" @click.stop="handleClick('download')")
|
||||
button(type="button" v-if="downloadBtn" :title="$t('material.flow_btn.download')" @click.stop="handleClick('download')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 475.078 475.077' space='preserve')
|
||||
use(xlink:href='#icon-download')
|
||||
button(type="button" v-if="startBtn" title="开始" @click.stop="handleClick('start')")
|
||||
button(type="button" v-if="startBtn" :title="$t('material.flow_btn.start')" @click.stop="handleClick('start')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 170 170' space='preserve')
|
||||
use(xlink:href='#icon-play')
|
||||
button(type="button" v-if="pauseBtn" title="暂停" @click.stop="handleClick('pause')")
|
||||
button(type="button" v-if="pauseBtn" :title="$t('material.flow_btn.pause')" @click.stop="handleClick('pause')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 277.338 277.338' space='preserve')
|
||||
use(xlink:href='#icon-pause')
|
||||
button(type="button" v-if="removeBtn" title="移除" @click.stop="handleClick('remove')")
|
||||
button(type="button" v-if="removeBtn" :title="$t('material.flow_btn.remove')" @click.stop="handleClick('remove')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 212.982 212.982' space='preserve')
|
||||
use(xlink:href='#icon-delete')
|
||||
|
||||
|
||||
@ -1,30 +1,30 @@
|
||||
<template lang="pug">
|
||||
div(:class="$style.btns")
|
||||
button(type="button" v-if="playBtn" title="播放" @click.stop="handleClick('play')")
|
||||
button(type="button" v-if="playBtn" :title="$t('material.list_buttons.play')" @click.stop="handleClick('play')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 287.386 287.386' space='preserve')
|
||||
use(xlink:href='#icon-testPlay')
|
||||
button(type="button" v-if="listAddBtn" title="添加到..." @click.stop="handleClick('listAdd')")
|
||||
button(type="button" v-if="listAddBtn" :title="$t('material.list_buttons.add_to')" @click.stop="handleClick('listAdd')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 42 42' space='preserve')
|
||||
use(xlink:href='#icon-addTo')
|
||||
button(type="button" v-if="downloadBtn" title="下载" @click.stop="handleClick('download')")
|
||||
button(type="button" v-if="downloadBtn" :title="$t('material.list_buttons.download')" @click.stop="handleClick('download')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 475.078 475.077' space='preserve')
|
||||
use(xlink:href='#icon-download')
|
||||
button(type="button" title="添加" v-if="userInfo" @click.stop="handleClick('add')")
|
||||
button(type="button" :title="$t('material.list_buttons.add')" v-if="userInfo" @click.stop="handleClick('add')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 42 42' space='preserve')
|
||||
use(xlink:href='#icon-addTo')
|
||||
button(type="button" v-if="startBtn" title="开始" @click.stop="handleClick('start')")
|
||||
button(type="button" v-if="startBtn" :title="$t('material.list_buttons.start')" @click.stop="handleClick('start')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 170 170' space='preserve')
|
||||
use(xlink:href='#icon-play')
|
||||
button(type="button" v-if="pauseBtn" title="暂停" @click.stop="handleClick('pause')")
|
||||
button(type="button" v-if="pauseBtn" :title="$t('material.list_buttons.pause')" @click.stop="handleClick('pause')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 277.338 277.338' space='preserve')
|
||||
use(xlink:href='#icon-pause')
|
||||
button(type="button" v-if="fileBtn" title="定位文件" @click.stop="handleClick('file')")
|
||||
button(type="button" v-if="fileBtn" :title="$t('material.list_buttons.file')" @click.stop="handleClick('file')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='-61 0 512 512' space='preserve')
|
||||
use(xlink:href='#icon-musicFile')
|
||||
button(type="button" v-if="searchBtn" title="搜索" @click.stop="handleClick('search')")
|
||||
button(type="button" v-if="searchBtn" :title="$t('material.list_buttons.search')" @click.stop="handleClick('search')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 30.239 30.239' space='preserve')
|
||||
use(xlink:href='#icon-search')
|
||||
button(type="button" v-if="removeBtn" title="移除" @click.stop="handleClick('remove')")
|
||||
button(type="button" v-if="removeBtn" :title="$t('material.list_buttons.remove')" @click.stop="handleClick('remove')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 212.982 212.982' space='preserve')
|
||||
use(xlink:href='#icon-delete')
|
||||
|
||||
|
||||
@ -6,20 +6,20 @@ div(:class="$style.pagination" v-if="allPage > 1")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 451.846 451.847' space='preserve')
|
||||
use(xlink:href='#icon-left')
|
||||
li(v-else)
|
||||
button(type="button" @click="handleClick(page - 1)" title="上一页")
|
||||
button(type="button" @click="handleClick(page - 1)" :title="$t('material.pagination.prev')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 451.846 451.847' space='preserve')
|
||||
use(xlink:href='#icon-left')
|
||||
li(v-if="allPage > btnLength && page > pageEvg+1" :class="$style.first")
|
||||
button(type="button" @click="handleClick(1)" title="第 1 页")
|
||||
button(type="button" @click="handleClick(1)" :title="$t('material.pagination.page', { num: 1 })")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 451.846 451.847' space='preserve')
|
||||
use(xlink:href='#icon-first')
|
||||
|
||||
li(v-for="(p, index) in pages" :key="index" :class="{[$style.active] : p == page}")
|
||||
span(v-if="p === page" v-text="page")
|
||||
button(v-else type="button" @click="handleClick(p)" v-text="p" :title="`第 ${p} 页`")
|
||||
button(v-else type="button" @click="handleClick(p)" v-text="p" :title="$t('material.pagination.page', { num: p })")
|
||||
|
||||
li(v-if="allPage > btnLength && allPage - page > pageEvg" :class="$style.last")
|
||||
button(type="button" @click="handleClick(allPage)" :title="`第 ${allPage} 页`")
|
||||
button(type="button" @click="handleClick(allPage)" :title="$t('material.pagination.page', { num: allPage })")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 451.846 451.847' space='preserve')
|
||||
use(xlink:href='#icon-last')
|
||||
|
||||
@ -29,7 +29,7 @@ div(:class="$style.pagination" v-if="allPage > 1")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 451.846 451.847' space='preserve')
|
||||
use(xlink:href='#icon-right')
|
||||
li(v-else)
|
||||
button(type="button" @click="handleClick(page + 1)" title="下一页")
|
||||
button(type="button" @click="handleClick(page + 1)" :title="$t('material.pagination.next')")
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 451.846 451.847' space='preserve')
|
||||
use(xlink:href='#icon-right')
|
||||
|
||||
|
||||
@ -8,12 +8,12 @@ div(:class="$style.songList")
|
||||
tr
|
||||
th.nobreak.center(style="width: 37px;")
|
||||
material-checkbox(id="search_select_all" v-model="isSelectAll" @change="handleSelectAllData"
|
||||
:indeterminate="isIndeterminate" :title="isSelectAll && !isIndeterminate ? '全不选' : '全选'")
|
||||
th.nobreak(style="width: 25%;") 歌曲名
|
||||
th.nobreak(style="width: 20%;") 歌手
|
||||
th.nobreak(style="width: 20%;") 专辑
|
||||
th.nobreak(style="width: 20%;") 操作
|
||||
th.nobreak(style="width: 10%;") 时长
|
||||
:indeterminate="isIndeterminate" :title="isSelectAll && !isIndeterminate ? $t('material.song_list.unselect_all') : $t('material.song_list.select_all')")
|
||||
th.nobreak(style="width: 25%;") {{$t('material.song_list.name')}}
|
||||
th.nobreak(style="width: 20%;") {{$t('material.song_list.singer')}}
|
||||
th.nobreak(style="width: 20%;") {{$t('material.song_list.album')}}
|
||||
th.nobreak(style="width: 20%;") {{$t('material.song_list.action')}}
|
||||
th.nobreak(style="width: 10%;") {{$t('material.song_list.time')}}
|
||||
div.scroll(:class="$style.tbody" ref="dom_scrollContent")
|
||||
table
|
||||
tbody(@contextmenu="handleContextMenu")
|
||||
@ -22,8 +22,8 @@ div(:class="$style.songList")
|
||||
material-checkbox(:id="index.toString()" v-model="selectdList" @change="handleChangeSelect" :value="item")
|
||||
td.break(style="width: 25%;")
|
||||
span.select {{item.name}}
|
||||
span.badge.badge-theme-success(v-if="item._types.ape || item._types.flac") 无损
|
||||
span.badge.badge-theme-info(v-else-if="item._types['320k']") 高品质
|
||||
span.badge.badge-theme-success(v-if="item._types.ape || item._types.flac") {{$t('material.song_list.lossless')}}
|
||||
span.badge.badge-theme-info(v-else-if="item._types['320k']") {{$t('material.song_list.high_quality')}}
|
||||
td.break(style="width: 20%;")
|
||||
span.select {{item.singer}}
|
||||
td.break(style="width: 20%;")
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
svg(version='1.1' xmlns='http://www.w3.org/2000/svg' xlink='http://www.w3.org/1999/xlink' height='100%' viewBox='0 0 451.847 451.847' space='preserve')
|
||||
use(xlink:href='#icon-down')
|
||||
div.scroll(:class="$style.list" :style="{ width: listStyle }" @click.stop ref="dom_list")
|
||||
div(:class="$style.tag" @click="handleClick(null)") 默认
|
||||
div(:class="$style.tag" @click="handleClick(null)") {{$t('material.tag_list.default')}}
|
||||
dl(v-for="type in list")
|
||||
dt(:class="$style.type") {{type.name}}
|
||||
dd(:class="$style.tag" v-for="tag in type.list" @click="handleClick(tag)") {{tag.name}}
|
||||
@ -56,7 +56,7 @@ export default {
|
||||
handleClick(item) {
|
||||
if (!item) {
|
||||
item = {
|
||||
name: '默认',
|
||||
name: this.$t('material.tab_list.default'),
|
||||
id: null,
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,10 +2,10 @@
|
||||
material-modal(:show="show" :bg-close="bgClose" @close="handleClose")
|
||||
main(:class="$style.main")
|
||||
h2
|
||||
| 添加
|
||||
| {{$t('material.list_add_modal.title_first')}}
|
||||
span(:class="$style.name") {{this.musicInfo && `${musicInfo.name}`}}
|
||||
| 到...
|
||||
material-btn(:class="$style.btn" :title="`把该歌曲添加到 ${item.name}`" :key="item.id" @click="handleClick(index)" v-for="(item, index) in lists") {{item.name}}
|
||||
| {{$t('material.list_add_modal.title_last')}}
|
||||
material-btn(:class="$style.btn" :title="$t('material.list_add_modal.btn_title', { name: item.name })" :key="item.id" @click="handleClick(index)" v-for="(item, index) in lists") {{item.name}}
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
<template lang="pug">
|
||||
material-modal(:show="show" :bg-close="bgClose" @close="handleClose")
|
||||
main(:class="$style.main")
|
||||
h2 添加已选的 {{musicList.length}} 首歌曲到...
|
||||
material-btn(:class="$style.btn" :title="`把该歌曲添加到 ${item.name}`" :key="item.id" @click="handleClick(index)" v-for="(item, index) in lists") {{item.name}}
|
||||
h2 {{$t('material.list_add_multiple_modal.title', { num: musicList.length })}}
|
||||
material-btn(:class="$style.btn" :title="$t('material.list_add_multiple_modal.btn_title', { name: item.name })" :key="item.id" @click="handleClick(index)" v-for="(item, index) in lists") {{item.name}}
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
12
src/renderer/lang/cns/core/aside.json
Normal file
12
src/renderer/lang/cns/core/aside.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"online_music": "在线音乐",
|
||||
"search": "搜索",
|
||||
"song_list": "歌单",
|
||||
"leaderboard": "排行榜",
|
||||
"my_music": "我的音乐",
|
||||
"default_list": "试听列表",
|
||||
"love_list": "收藏列表",
|
||||
"other": "其他",
|
||||
"download": "下载管理",
|
||||
"setting": "设置"
|
||||
}
|
||||
16
src/renderer/lang/cns/core/player.json
Normal file
16
src/renderer/lang/cns/core/player.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"copy_title": "(点击复制)",
|
||||
"volume": "当前音量:",
|
||||
"pause": "暂停",
|
||||
"play": "播放",
|
||||
"next": "下一首",
|
||||
"playing": "播放中...",
|
||||
"stop": "暂停播放",
|
||||
"end": "播放完毕",
|
||||
"refresh_url": "URL过期,正在刷新URL...",
|
||||
"error": "音频加载出错,5 秒后切换下一首",
|
||||
"loading": "音乐加载中...",
|
||||
"buffering": "缓冲中...",
|
||||
"geting_url": "歌曲链接获取中...",
|
||||
"lyric_error": "歌词获取失败"
|
||||
}
|
||||
4
src/renderer/lang/cns/core/toolbar.json
Normal file
4
src/renderer/lang/cns/core/toolbar.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"min": "最小化",
|
||||
"close": "关闭"
|
||||
}
|
||||
6
src/renderer/lang/cns/material/download_modal.json
Normal file
6
src/renderer/lang/cns/material/download_modal.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"btn_tip": "腾讯、网易音源仅支持下载128k音质",
|
||||
"lossless": "无损音质",
|
||||
"high_quality": "高品音质",
|
||||
"normal": "普通音质"
|
||||
}
|
||||
@ -0,0 +1,7 @@
|
||||
{
|
||||
"tip": "已选择 {len} 首歌曲",
|
||||
"tip2": "请选择要优先下载的音质",
|
||||
"normal": "普通音质",
|
||||
"high_quality": "高品音质",
|
||||
"lossless": "无损音质"
|
||||
}
|
||||
8
src/renderer/lang/cns/material/flow_btn.json
Normal file
8
src/renderer/lang/cns/material/flow_btn.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"play": "播放",
|
||||
"add": "添加",
|
||||
"download": "下载",
|
||||
"start": "开始",
|
||||
"pause": "暂停",
|
||||
"remove": "移除"
|
||||
}
|
||||
5
src/renderer/lang/cns/material/list_add_modal.json
Normal file
5
src/renderer/lang/cns/material/list_add_modal.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"title_first": "添加",
|
||||
"title_last": "到...",
|
||||
"btn_title": "把该歌曲添加到 {name}"
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
{
|
||||
"title": "添加已选的 {num} 首歌曲到...",
|
||||
"btn_title": "把该歌曲添加到 {name}"
|
||||
}
|
||||
11
src/renderer/lang/cns/material/list_buttons.json
Normal file
11
src/renderer/lang/cns/material/list_buttons.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"play": "播放",
|
||||
"add_to": "添加到...",
|
||||
"download": "下载",
|
||||
"add": "添加",
|
||||
"start": "开始",
|
||||
"pause": "暂停",
|
||||
"file": "定位文件",
|
||||
"search": "搜索",
|
||||
"remove": "移除"
|
||||
}
|
||||
5
src/renderer/lang/cns/material/pagination.json
Normal file
5
src/renderer/lang/cns/material/pagination.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"prev": "上一页",
|
||||
"next": "下一页",
|
||||
"page": "第 {num} 页"
|
||||
}
|
||||
12
src/renderer/lang/cns/material/song_list.json
Normal file
12
src/renderer/lang/cns/material/song_list.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"select_all": "全选",
|
||||
"unselect_all": "全不选",
|
||||
"name": "歌曲名",
|
||||
"singer": "歌手",
|
||||
"album": "专辑",
|
||||
"action": "操作",
|
||||
"time": "时长",
|
||||
"lossless": "无损",
|
||||
"high_quality": "高品质",
|
||||
"loding_list": "列表加载中..."
|
||||
}
|
||||
3
src/renderer/lang/cns/material/tag_list.json
Normal file
3
src/renderer/lang/cns/material/tag_list.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"default": "默认"
|
||||
}
|
||||
14
src/renderer/lang/cns/view/download.json
Normal file
14
src/renderer/lang/cns/view/download.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"select_all": "全选",
|
||||
"unselect_all": "全不选",
|
||||
"name": "歌曲名",
|
||||
"progress": "进度",
|
||||
"status": "状态",
|
||||
"quality": "品质",
|
||||
"action": "操作",
|
||||
"all": "全部任务",
|
||||
"runing": "正在下载",
|
||||
"paused": "已暂停",
|
||||
"error": "出错",
|
||||
"finished": "下载完成"
|
||||
}
|
||||
11
src/renderer/lang/cns/view/list.json
Normal file
11
src/renderer/lang/cns/view/list.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"select_all": "全选",
|
||||
"unselect_all": "全不选",
|
||||
"name": "歌曲名",
|
||||
"singer": "歌手",
|
||||
"album": "专辑",
|
||||
"action": "操作",
|
||||
"time": "时长",
|
||||
"loding_list": "加载中...",
|
||||
"no_item": "列表竟然是空的..."
|
||||
}
|
||||
12
src/renderer/lang/cns/view/search.json
Normal file
12
src/renderer/lang/cns/view/search.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"select_all": "全选",
|
||||
"unselect_all": "全不选",
|
||||
"name": "歌曲名",
|
||||
"singer": "歌手",
|
||||
"album": "专辑",
|
||||
"action": "操作",
|
||||
"time": "时长",
|
||||
"lossless": "无损",
|
||||
"high_quality": "高品质",
|
||||
"no_item": "搜我所想~~😉"
|
||||
}
|
||||
104
src/renderer/lang/cns/view/setting.json
Normal file
104
src/renderer/lang/cns/view/setting.json
Normal file
@ -0,0 +1,104 @@
|
||||
{
|
||||
"basic": "基本设置",
|
||||
"basic_theme": "主题颜色",
|
||||
"basic_animation_title": "弹出层的动画效果",
|
||||
"basic_animation": "弹出层随机动画",
|
||||
"basic_source_title": "选择音乐来源",
|
||||
"basic_source_test": "测试接口(几乎软件的所有功能都可用)",
|
||||
"basic_source_temp": "临时接口(软件的某些功能不可用,建议测试接口不可用再使用本接口)",
|
||||
"basic_source": "音乐来源",
|
||||
"basic_window_size_title": "设置软件窗口尺寸",
|
||||
"basic_window_size": "窗口尺寸",
|
||||
"basic_window_size_small": "小",
|
||||
"basic_window_size_medium": "中",
|
||||
"basic_window_size_big": "大",
|
||||
"basic_lang_title": "软件显示的语言",
|
||||
"basic_lang": "语言",
|
||||
|
||||
"play": "播放设置",
|
||||
"play_toggle_title": "都不选时播放完当前歌曲就停止播放",
|
||||
"play_toggle": "歌曲切换方式",
|
||||
"play_toggle_list_loop": "列表循环",
|
||||
"play_toggle_random": "列表随机",
|
||||
"play_toggle_list": "顺序播放",
|
||||
"play_toggle_single_loop": "单曲循环",
|
||||
"play_quality_title": "启用时将优先播放320K品质的歌曲",
|
||||
"play_quality": "优先播放高品质音乐",
|
||||
"play_task_bar_title": "在任务栏上显示当前歌曲播放进度",
|
||||
"play_task_bar": "任务栏播放进度条",
|
||||
|
||||
"list": "列表设置",
|
||||
"list_source_title": "是否显示歌曲源",
|
||||
"list_source": "是否显示歌曲源(仅对我的音乐分类有效)",
|
||||
"list_scroll_title": "是否记住播放列表滚动条位置",
|
||||
"list_scroll": "记住列表滚动位置(仅对我的音乐分类有效)",
|
||||
|
||||
"download": "下载设置",
|
||||
"download_path_title": "下载歌曲保存的路径",
|
||||
"download_path": "下载路径",
|
||||
"download_path_label": "当前下载路径:",
|
||||
"download_path_open_label": "点击打开当前路径",
|
||||
"download_path_change_btn": "更改",
|
||||
"download_name_title": "下载歌曲时的命名方式",
|
||||
"download_name": "文件命名方式",
|
||||
"download_embed_pic_title": "是否将封面嵌入音频文件中",
|
||||
"download_embed_pic": "封面嵌入(只支持MP3格式)",
|
||||
"download_lyric_title": "是否同时下载歌词文件",
|
||||
"download_lyric": "歌词下载",
|
||||
"download_name1": "歌名 - 歌手",
|
||||
"download_name2": "歌手 - 歌名",
|
||||
"download_name3": "歌名",
|
||||
"download_select_save_path": "选择歌曲保存路径",
|
||||
|
||||
"network": "网络设置",
|
||||
"network_proxy_title": "代理设置(乱设置软件将无法联网)",
|
||||
"network_proxy_host": "主机",
|
||||
"network_proxy_port": "端口",
|
||||
"network_proxy_username": "用户名",
|
||||
"network_proxy_password": "密码",
|
||||
|
||||
"odc": "强迫症设置",
|
||||
"odc_clear_search_input": "离开搜索界面时清空搜索框",
|
||||
"odc_clear_search_list": "离开搜索界面时清空搜索列表",
|
||||
|
||||
"backup": "备份与恢复",
|
||||
"backup_part": "部分数据",
|
||||
"backup_part_import_list": "导入列表",
|
||||
"backup_part_export_list": "导出列表",
|
||||
"backup_part_import_setting": "导入设置",
|
||||
"backup_part_export_setting": "导出设置",
|
||||
"backup_all": "所有数据(设置与试听列表)",
|
||||
"backup_all_import": "导入",
|
||||
"backup_all_export": "导出",
|
||||
"backup_all_import_desc": "选择备份文件",
|
||||
"backup_all_export_desc": "选择备份保存位置",
|
||||
"backup_part_import_setting_desc": "选择配置文件",
|
||||
"backup_part_export_setting_desc": "选择设置保存位置",
|
||||
"backup_part_import_list_desc": "选择列表文件",
|
||||
"backup_part_export_list_desc": "选择设置保存位置",
|
||||
|
||||
"other": "其他",
|
||||
"other_cache": "缓存大小(清理缓存后图片等资源将需要重新下载,不建议清理,软件会根据磁盘空间动态管理缓存大小)",
|
||||
"other_cache_label": "软件已使用缓存大小:",
|
||||
"other_cache_label_title": "当前已用缓存",
|
||||
"other_cache_clear_btn": "清理缓存",
|
||||
|
||||
"update": "软件更新",
|
||||
"update_latest_label": "最新版本:",
|
||||
"update_unknown": "未知",
|
||||
"update_current_label": "当前版本:",
|
||||
"update_downloading": "发现新版本并在努力下载中,请稍后...⏳",
|
||||
"update_progress": "下载进度:",
|
||||
"update_latest": "软件已是最新,尽情地体验吧~🥂",
|
||||
"update_open_version_modal_btn": "打开更新窗口 🚀",
|
||||
"update_checking": "检查更新中...",
|
||||
"update_init": "更新初始化中...",
|
||||
|
||||
"about": "关于洛雪音乐",
|
||||
|
||||
|
||||
"is_enable": "是否启用",
|
||||
"is_show": "是否显示",
|
||||
"click_open": "点击打开",
|
||||
"click_copy": "点击复制"
|
||||
}
|
||||
12
src/renderer/lang/cnt/core/aside.json
Normal file
12
src/renderer/lang/cnt/core/aside.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"online_music": "在線音樂",
|
||||
"search": "搜索",
|
||||
"song_list": "歌單",
|
||||
"leaderboard": "排行榜",
|
||||
"my_music": "我的音樂",
|
||||
"default_list": "試聽列表",
|
||||
"love_list": "收藏列表",
|
||||
"other": "其他",
|
||||
"download": "下載管理",
|
||||
"setting": "設置"
|
||||
}
|
||||
16
src/renderer/lang/cnt/core/player.json
Normal file
16
src/renderer/lang/cnt/core/player.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"copy_title": "(點擊複製)",
|
||||
"volume": "當前音量:",
|
||||
"pause": "暫停",
|
||||
"play": "播放",
|
||||
"next": "下一首",
|
||||
"playing": "播放中...",
|
||||
"stop": "暫停播放",
|
||||
"end": "播放完畢",
|
||||
"refresh_url": "URL過期,正在刷新URL...",
|
||||
"error": "音頻加載出錯,5 秒後切換下一首",
|
||||
"loading": "音樂加載中...",
|
||||
"buffering": "緩衝中...",
|
||||
"geting_url": "歌曲鏈接獲取中...",
|
||||
"lyric_error": "歌詞獲取失敗"
|
||||
}
|
||||
4
src/renderer/lang/cnt/core/toolbar.json
Normal file
4
src/renderer/lang/cnt/core/toolbar.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"min": "最小化",
|
||||
"close": "關閉"
|
||||
}
|
||||
6
src/renderer/lang/cnt/material/download_modal.json
Normal file
6
src/renderer/lang/cnt/material/download_modal.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"btn_tip": "騰訊、網易音源僅支持下載128k音質",
|
||||
"lossless": "無損音質",
|
||||
"high_quality": "高品音質",
|
||||
"normal": "普通音質"
|
||||
}
|
||||
@ -0,0 +1,7 @@
|
||||
{
|
||||
"tip": "已選擇 {len} 首歌曲",
|
||||
"tip2": "請選擇要優先下載的音質",
|
||||
"normal": "普通音質",
|
||||
"high_quality": "高品音質",
|
||||
"lossless": "無損音質"
|
||||
}
|
||||
8
src/renderer/lang/cnt/material/flow_btn.json
Normal file
8
src/renderer/lang/cnt/material/flow_btn.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"play": "播放",
|
||||
"add": "添加",
|
||||
"download": "下載",
|
||||
"start": "開始",
|
||||
"pause": "暫停",
|
||||
"remove": "移除"
|
||||
}
|
||||
5
src/renderer/lang/cnt/material/list_add_modal.json
Normal file
5
src/renderer/lang/cnt/material/list_add_modal.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"title_first": "添加",
|
||||
"title_last": "到...",
|
||||
"btn_title": "把該歌曲添加到 {name}"
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
{
|
||||
"title": "添加已選的 {num} 首歌曲到...",
|
||||
"btn_title": "把該歌曲添加到 {name}"
|
||||
}
|
||||
11
src/renderer/lang/cnt/material/list_buttons.json
Normal file
11
src/renderer/lang/cnt/material/list_buttons.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"play": "播放",
|
||||
"add_to": "添加到...",
|
||||
"download": "下載",
|
||||
"add": "添加",
|
||||
"start": "開始",
|
||||
"pause": "暫停",
|
||||
"file": "定位文件",
|
||||
"search": "搜索",
|
||||
"remove": "移除"
|
||||
}
|
||||
5
src/renderer/lang/cnt/material/pagination.json
Normal file
5
src/renderer/lang/cnt/material/pagination.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"prev": "上一頁",
|
||||
"next": "下一頁",
|
||||
"page": "第 {num} 頁"
|
||||
}
|
||||
12
src/renderer/lang/cnt/material/song_list.json
Normal file
12
src/renderer/lang/cnt/material/song_list.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"select_all": "全選",
|
||||
"unselect_all": "全不選",
|
||||
"name": "歌曲名",
|
||||
"singer": "歌手",
|
||||
"album": "專輯",
|
||||
"action": "操作",
|
||||
"time": "時長",
|
||||
"lossless": "無損",
|
||||
"high_quality": "高品質",
|
||||
"loding_list": "列表加載中..."
|
||||
}
|
||||
3
src/renderer/lang/cnt/material/tag_list.json
Normal file
3
src/renderer/lang/cnt/material/tag_list.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"default": "默認"
|
||||
}
|
||||
14
src/renderer/lang/cnt/view/download.json
Normal file
14
src/renderer/lang/cnt/view/download.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"select_all": "全選",
|
||||
"unselect_all": "全不選",
|
||||
"name": "歌曲名",
|
||||
"progress": "進度",
|
||||
"status": "狀態",
|
||||
"quality": "品質",
|
||||
"action": "操作",
|
||||
"all": "全部任務",
|
||||
"runing": "正在下載",
|
||||
"paused": "已暫停",
|
||||
"error": "出錯",
|
||||
"finished": "下載完成"
|
||||
}
|
||||
11
src/renderer/lang/cnt/view/list.json
Normal file
11
src/renderer/lang/cnt/view/list.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"select_all": "全選",
|
||||
"unselect_all": "全不選",
|
||||
"name": "歌曲名",
|
||||
"singer": "歌手",
|
||||
"album": "專輯",
|
||||
"action": "操作",
|
||||
"time": "時長",
|
||||
"loding_list": "加載中...",
|
||||
"no_item": "列表竟然是空的..."
|
||||
}
|
||||
12
src/renderer/lang/cnt/view/search.json
Normal file
12
src/renderer/lang/cnt/view/search.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"select_all": "全選",
|
||||
"unselect_all": "全不選",
|
||||
"name": "歌曲名",
|
||||
"singer": "歌手",
|
||||
"album": "專輯",
|
||||
"action": "操作",
|
||||
"time": "時長",
|
||||
"lossless": "無損",
|
||||
"high_quality": "高品質",
|
||||
"no_item": "搜我所想~~😉"
|
||||
}
|
||||
93
src/renderer/lang/cnt/view/setting.json
Normal file
93
src/renderer/lang/cnt/view/setting.json
Normal file
@ -0,0 +1,93 @@
|
||||
{
|
||||
"basic": "基本設置",
|
||||
"basic_theme": "主題顏色",
|
||||
"basic_animation_title": "彈出層的動畫效果",
|
||||
"basic_animation": "彈出層隨機動畫",
|
||||
"basic_source_title": "選擇音樂來源",
|
||||
"basic_source_test": "測試接口(幾乎軟件的所有功能都可用)",
|
||||
"basic_source_temp": "臨時接口(軟件的某些功能不可用,建議測試接口不可用再使用本接口)",
|
||||
"basic_source": "音樂來源",
|
||||
"basic_window_size_title": "設置軟件窗口尺寸",
|
||||
"basic_window_size": "窗口尺寸",
|
||||
"basic_window_size_small": "小",
|
||||
"basic_window_size_medium": "中",
|
||||
"basic_window_size_big": "大",
|
||||
"basic_lang_title": "軟件顯示的語言",
|
||||
"basic_lang": "語言",
|
||||
"play": "播放設置",
|
||||
"play_toggle_title": "都不選時播放完當前歌曲就停止播放",
|
||||
"play_toggle": "歌曲切換方式",
|
||||
"play_toggle_list_loop": "列表循環",
|
||||
"play_toggle_random": "列表隨機",
|
||||
"play_toggle_list": "順序播放",
|
||||
"play_toggle_single_loop": "單曲循環",
|
||||
"play_quality_title": "啟用時將優先播放320K品質的歌曲",
|
||||
"play_quality": "優先播放高品質音樂",
|
||||
"play_task_bar_title": "在任務欄上顯示當前歌曲播放進度",
|
||||
"play_task_bar": "任務欄播放進度條",
|
||||
"list": "列表設置",
|
||||
"list_source_title": "是否顯示歌曲源",
|
||||
"list_source": "是否顯示歌曲源(僅對我的音樂分類有效)",
|
||||
"list_scroll_title": "是否記住播放列表滾動條位置",
|
||||
"list_scroll": "記住列表滾動位置(僅對我的音樂分類有效)",
|
||||
"download": "下載設置",
|
||||
"download_path_title": "下載歌曲保存的路徑",
|
||||
"download_path": "下載路徑",
|
||||
"download_path_label": "當前下載路徑:",
|
||||
"download_path_open_label": "點擊打開當前路徑",
|
||||
"download_path_change_btn": "更改",
|
||||
"download_name_title": "下載歌曲時的命名方式",
|
||||
"download_name": "文件命名方式",
|
||||
"download_embed_pic_title": "是否將封面嵌入音頻文件中",
|
||||
"download_embed_pic": "封面嵌入(只支持MP3格式)",
|
||||
"download_lyric_title": "是否同時下載歌詞文件",
|
||||
"download_lyric": "歌詞下載",
|
||||
"download_name1": "歌名 - 歌手",
|
||||
"download_name2": "歌手 - 歌名",
|
||||
"download_name3": "歌名",
|
||||
"download_select_save_path": "選擇歌曲保存路徑",
|
||||
"network": "網絡設置",
|
||||
"network_proxy_title": "代理設置(亂設置軟件將無法聯網)",
|
||||
"network_proxy_host": "主機",
|
||||
"network_proxy_port": "端口",
|
||||
"network_proxy_username": "用戶名",
|
||||
"network_proxy_password": "密碼",
|
||||
"odc": "強迫症設置",
|
||||
"odc_clear_search_input": "離開搜索界面時清空搜索框",
|
||||
"odc_clear_search_list": "離開搜索界面時清空搜索列表",
|
||||
"backup": "備份與恢復",
|
||||
"backup_part": "部分數據",
|
||||
"backup_part_import_list": "導入列表",
|
||||
"backup_part_export_list": "導出列表",
|
||||
"backup_part_import_setting": "導入設置",
|
||||
"backup_part_export_setting": "導出設置",
|
||||
"backup_all": "所有數據(設置與試聽列表)",
|
||||
"backup_all_import": "導入",
|
||||
"backup_all_export": "導出",
|
||||
"backup_all_import_desc": "選擇備份文件",
|
||||
"backup_all_export_desc": "選擇備份保存位置",
|
||||
"backup_part_import_setting_desc": "選擇配置文件",
|
||||
"backup_part_export_setting_desc": "選擇設置保存位置",
|
||||
"backup_part_import_list_desc": "選擇列表文件",
|
||||
"backup_part_export_list_desc": "選擇設置保存位置",
|
||||
"other": "其他",
|
||||
"other_cache": "緩存大小(清理緩存後圖片等資源將需要重新下載,不建議清理,軟件會根據磁盤空間動態管理緩存大小)",
|
||||
"other_cache_label": "軟件已使用緩存大小:",
|
||||
"other_cache_label_title": "當前已用緩存",
|
||||
"other_cache_clear_btn": "清理緩存",
|
||||
"update": "軟件更新",
|
||||
"update_latest_label": "最新版本:",
|
||||
"update_unknown": "未知",
|
||||
"update_current_label": "當前版本:",
|
||||
"update_downloading": "發現新版本並在努力下載中,請稍後...⏳",
|
||||
"update_progress": "下載進度:",
|
||||
"update_latest": "軟件已是最新,盡情地體驗吧~🥂",
|
||||
"update_open_version_modal_btn": "打開更新窗口 🚀",
|
||||
"update_checking": "檢查更新中...",
|
||||
"update_init": "更新初始化中...",
|
||||
"about": "關於洛雪音樂",
|
||||
"is_enable": "是否啟用",
|
||||
"is_show": "是否顯示",
|
||||
"click_open": "點擊打開",
|
||||
"click_copy": "點擊複製"
|
||||
}
|
||||
12
src/renderer/lang/en/core/aside.json
Normal file
12
src/renderer/lang/en/core/aside.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"online_music": "Online music",
|
||||
"search": "Search",
|
||||
"song_list": "Song list",
|
||||
"leaderboard": "Leaderboard",
|
||||
"my_music": "My music",
|
||||
"default_list": "Preview list",
|
||||
"love_list": "Favorites list",
|
||||
"other": "Other",
|
||||
"download": "Download manage",
|
||||
"setting": "Setting"
|
||||
}
|
||||
16
src/renderer/lang/en/core/player.json
Normal file
16
src/renderer/lang/en/core/player.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"copy_title": " (Click copy)",
|
||||
"volume": "Volume: ",
|
||||
"pause": "Pause",
|
||||
"play": "Play",
|
||||
"next": "Next",
|
||||
"playing": "Playing...",
|
||||
"stop": "Stopped",
|
||||
"end": "End",
|
||||
"refresh_url": "URL expired, refreshing URL...",
|
||||
"error": "Music loading error, switch to next song after 5 seconds",
|
||||
"loading": "Loding...",
|
||||
"buffering": "Buffering...",
|
||||
"geting_url": "Getting link...",
|
||||
"lyric_error": "Get lyric failed"
|
||||
}
|
||||
4
src/renderer/lang/en/core/toolbar.json
Normal file
4
src/renderer/lang/en/core/toolbar.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"min": "Minimize",
|
||||
"close": "Close"
|
||||
}
|
||||
6
src/renderer/lang/en/material/download_modal.json
Normal file
6
src/renderer/lang/en/material/download_modal.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"btn_tip": "Tencent and Netease sources only support download 128k",
|
||||
"lossless": "Lossless",
|
||||
"high_quality": "High Quality",
|
||||
"normal": "Normal"
|
||||
}
|
||||
@ -0,0 +1,7 @@
|
||||
{
|
||||
"tip": "{len} songs selected",
|
||||
"tip2": "Select priority download quality",
|
||||
"normal": "Normal",
|
||||
"high_quality": "High-quality",
|
||||
"lossless": "Lossless"
|
||||
}
|
||||
8
src/renderer/lang/en/material/flow_btn.json
Normal file
8
src/renderer/lang/en/material/flow_btn.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"play": "Play",
|
||||
"add": "Add",
|
||||
"download": "Download",
|
||||
"start": "Start",
|
||||
"pause": "Pause",
|
||||
"remove": "Remove"
|
||||
}
|
||||
5
src/renderer/lang/en/material/list_add_modal.json
Normal file
5
src/renderer/lang/en/material/list_add_modal.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"title_first": "Add",
|
||||
"title_last": "to...",
|
||||
"btn_title": "Add the song to {name}"
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
{
|
||||
"title": "Add selected {num} songs to...",
|
||||
"btn_title": "Add the song to {name}"
|
||||
}
|
||||
11
src/renderer/lang/en/material/list_buttons.json
Normal file
11
src/renderer/lang/en/material/list_buttons.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"play": "Play",
|
||||
"add_to": "Add to...",
|
||||
"download": "Download",
|
||||
"add": "add",
|
||||
"start": "Start",
|
||||
"pause": "Pause",
|
||||
"file": "Locate file",
|
||||
"search": "Search",
|
||||
"remove": "Remove"
|
||||
}
|
||||
5
src/renderer/lang/en/material/pagination.json
Normal file
5
src/renderer/lang/en/material/pagination.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"prev": "Prev",
|
||||
"next": "Next",
|
||||
"page": "Page {num}"
|
||||
}
|
||||
12
src/renderer/lang/en/material/song_list.json
Normal file
12
src/renderer/lang/en/material/song_list.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"select_all": "Select all",
|
||||
"unselect_all": "Unselect all",
|
||||
"name": "Name",
|
||||
"singer": "Singer",
|
||||
"album": "Album",
|
||||
"action": "Actions",
|
||||
"time": "Interval",
|
||||
"lossless": "SQ",
|
||||
"high_quality": "HQ",
|
||||
"loding_list": "List loading..."
|
||||
}
|
||||
3
src/renderer/lang/en/material/tag_list.json
Normal file
3
src/renderer/lang/en/material/tag_list.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"default": "Default"
|
||||
}
|
||||
14
src/renderer/lang/en/view/download.json
Normal file
14
src/renderer/lang/en/view/download.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"select_all": "Select all",
|
||||
"unselect_all": "Unselect all",
|
||||
"name": "Name",
|
||||
"progress": "Progress",
|
||||
"status": "Status",
|
||||
"quality": "Quality",
|
||||
"action": "Actions",
|
||||
"all": "All task",
|
||||
"runing": "Downloading",
|
||||
"paused": "Paused",
|
||||
"error": "Error",
|
||||
"finished": "Finished"
|
||||
}
|
||||
11
src/renderer/lang/en/view/list.json
Normal file
11
src/renderer/lang/en/view/list.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"select_all": "Select all",
|
||||
"unselect_all": "Unselect all",
|
||||
"name": "Name",
|
||||
"singer": "Singer",
|
||||
"album": "Album",
|
||||
"action": "Actions",
|
||||
"time": "Interval",
|
||||
"loding_list": "Loading...",
|
||||
"no_item": "The list turned out to be empty..."
|
||||
}
|
||||
12
src/renderer/lang/en/view/search.json
Normal file
12
src/renderer/lang/en/view/search.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"select_all": "Select all",
|
||||
"unselect_all": "Unselect all",
|
||||
"name": "Name",
|
||||
"singer": "Singer",
|
||||
"album": "Album",
|
||||
"action": "Actions",
|
||||
"time": "Interval",
|
||||
"lossless": "SQ",
|
||||
"high_quality": "HQ",
|
||||
"no_item": "Search what i think~~😉"
|
||||
}
|
||||
104
src/renderer/lang/en/view/setting.json
Normal file
104
src/renderer/lang/en/view/setting.json
Normal file
@ -0,0 +1,104 @@
|
||||
{
|
||||
"basic": "Basic settings",
|
||||
"basic_theme": "Theme",
|
||||
"basic_animation_title": "Animation effect of pop-up layer",
|
||||
"basic_animation": "Pop-up layer random animation",
|
||||
"basic_source_title": "Select music source",
|
||||
"basic_source_test": "test interface (almost all functions of the software are available)",
|
||||
"basic_source_temp": "temp interface (some functions are not available, it is recommended to use this interface if the test interface is unavailable)",
|
||||
"basic_source": "Music source",
|
||||
"basic_window_size_title": "Set software window size",
|
||||
"basic_window_size": "Window size",
|
||||
"basic_window_size_small": "small",
|
||||
"basic_window_size_medium": "medium",
|
||||
"basic_window_size_big": "big",
|
||||
"basic_lang_title": "Software display language",
|
||||
"basic_lang": "Language",
|
||||
|
||||
"play": "Playback settings",
|
||||
"play_toggle_title": "Stop playing when the current song is finished without selecting any",
|
||||
"play_toggle": "Music switching method",
|
||||
"play_toggle_list_loop": "list loop",
|
||||
"play_toggle_random": "random list",
|
||||
"play_toggle_list": "play in order",
|
||||
"play_toggle_single_loop": "single cycle",
|
||||
"play_quality_title": "320K quality songs will be played preferentially when enabled",
|
||||
"play_quality": "Prioritize high-quality music",
|
||||
"play_task_bar_title": "Show current song playback progress on taskbar",
|
||||
"play_task_bar": "Taskbar playback progress bar",
|
||||
|
||||
"list": "List settings",
|
||||
"list_source_title": "Whether to show song sources",
|
||||
"list_source": "Whether to show song sources (only valid for my music category)",
|
||||
"list_scroll_title": "Whether to remember playlist scroll bar position",
|
||||
"list_scroll": "Remember list scroll position (only valid for my music category)",
|
||||
|
||||
"download": "Download settings",
|
||||
"download_path_title": "Download song save path",
|
||||
"download_path": "Save path",
|
||||
"download_path_label": "current save path: ",
|
||||
"download_path_open_label": "click to open the current path",
|
||||
"download_path_change_btn": "Change",
|
||||
"download_name_title": "Naming when downloading songs",
|
||||
"download_name": "File naming",
|
||||
"download_embed_pic_title": "Whether to embed the cover in the audio file",
|
||||
"download_embed_pic": "Cover embedding (only supports MP3 format)",
|
||||
"download_lyric_title": "Whether to download lyrics files at the same time",
|
||||
"download_lyric": "Lyrics download",
|
||||
"download_name1": "name - singer",
|
||||
"download_name2": "singer - name",
|
||||
"download_name3": "name",
|
||||
"download_select_save_path": "Select a song save path",
|
||||
|
||||
"network": "Network settings",
|
||||
"network_proxy_title": "Proxy settings (disorderly setting software will not be able to network)",
|
||||
"network_proxy_host": "host",
|
||||
"network_proxy_port": "port",
|
||||
"network_proxy_username": "username",
|
||||
"network_proxy_password": "password",
|
||||
|
||||
"odc": "OCD settings",
|
||||
"odc_clear_search_input": "Clear search box when leaving search interface",
|
||||
"odc_clear_search_list": "Clear search list when leaving search interface",
|
||||
|
||||
"backup": "Backup and restore",
|
||||
"backup_part": "Part of data",
|
||||
"backup_part_import_list": "import list",
|
||||
"backup_part_export_list": "export list",
|
||||
"backup_part_import_setting": "import settings",
|
||||
"backup_part_export_setting": "export settings",
|
||||
"backup_all": "All data (settings and list)",
|
||||
"backup_all_import": "import",
|
||||
"backup_all_export": "export",
|
||||
"backup_all_import_desc": "Select backup file",
|
||||
"backup_all_export_desc": "Select backup save location",
|
||||
"backup_part_import_setting_desc": "Choose a profile",
|
||||
"backup_part_export_setting_desc": "Select a setting to save the location",
|
||||
"backup_part_import_list_desc": "Select list file",
|
||||
"backup_part_export_list_desc": "Select a setting to save the location",
|
||||
|
||||
"other": "Other",
|
||||
"other_cache": "cache size (After clearing the cache, resources such as pictures will need to be downloaded again. Cleaning is not recommended. The software will dynamically manage the cache size based on disk space.)",
|
||||
"other_cache_label": "used cache size: ",
|
||||
"other_cache_label_title": "currently used cache",
|
||||
"other_cache_clear_btn": "clear cache",
|
||||
|
||||
"update": "Software update",
|
||||
"update_latest_label": "Latest version: ",
|
||||
"update_unknown": "unknown",
|
||||
"update_current_label": "Current version: ",
|
||||
"update_downloading": "New version found and working hard to download, please wait...⏳",
|
||||
"update_progress": "Download progress: ",
|
||||
"update_latest": "The software is up to date, enjoy yourself~🥂",
|
||||
"update_open_version_modal_btn": "open update window 🚀",
|
||||
"update_checking": "checking for updates...",
|
||||
"update_init": "initializing update...",
|
||||
|
||||
"about": "About lx-music-desktop",
|
||||
|
||||
|
||||
"is_enable": "is enabel",
|
||||
"is_show": "is show",
|
||||
"click_open": "click to open",
|
||||
"click_copy": "click to copy"
|
||||
}
|
||||
27
src/renderer/lang/index.js
Normal file
27
src/renderer/lang/index.js
Normal file
@ -0,0 +1,27 @@
|
||||
// http://kazupon.github.io/vue-i18n/en/messages.html
|
||||
|
||||
const requireLang = require.context(
|
||||
'@/lang',
|
||||
true,
|
||||
/\.json$/,
|
||||
)
|
||||
|
||||
const messages = {}
|
||||
|
||||
for (const file of requireLang.keys()) {
|
||||
if (file === './index.js') continue
|
||||
|
||||
const path = file.replace(/(\.\/|\.json$)/g, '').split('/')
|
||||
|
||||
path.reduce((o, s, i) => {
|
||||
if (o[s]) return o[s]
|
||||
|
||||
o[s] = i + 1 === path.length
|
||||
? requireLang(file)
|
||||
: {}
|
||||
|
||||
return o[s]
|
||||
}, messages)
|
||||
}
|
||||
|
||||
export default messages
|
||||
19
src/renderer/lang/languages.json
Normal file
19
src/renderer/lang/languages.json
Normal file
@ -0,0 +1,19 @@
|
||||
[
|
||||
{
|
||||
"name": "简体中文",
|
||||
"locale": "cns",
|
||||
"alternate": "zh-Hans",
|
||||
"country": "cn",
|
||||
"fallback": true
|
||||
},
|
||||
{
|
||||
"name": "繁体中文",
|
||||
"locale": "cnt",
|
||||
"country": "cn"
|
||||
},
|
||||
{
|
||||
"name": "English",
|
||||
"locale": "en",
|
||||
"country": "us"
|
||||
}
|
||||
]
|
||||
@ -10,6 +10,7 @@ import './plugins'
|
||||
import App from './App'
|
||||
import router from './route'
|
||||
import store from './store'
|
||||
import i18n from './plugins/i18n'
|
||||
|
||||
import '../common/error'
|
||||
|
||||
@ -24,6 +25,7 @@ Vue.config.productionTip = false
|
||||
new Vue({
|
||||
router,
|
||||
store,
|
||||
i18n,
|
||||
el: '#root',
|
||||
render: h => h(App),
|
||||
})
|
||||
|
||||
22
src/renderer/plugins/i18n.js
Normal file
22
src/renderer/plugins/i18n.js
Normal file
@ -0,0 +1,22 @@
|
||||
/**
|
||||
* Vue i18n
|
||||
*
|
||||
* @library
|
||||
*
|
||||
* http://kazupon.github.io/vue-i18n/en/
|
||||
*/
|
||||
|
||||
// Lib imports
|
||||
import Vue from 'vue'
|
||||
import VueI18n from 'vue-i18n'
|
||||
import messages from '@/lang'
|
||||
|
||||
Vue.use(VueI18n)
|
||||
|
||||
const i18n = new VueI18n({
|
||||
locale: 'cns',
|
||||
fallbackLocale: 'cns',
|
||||
messages,
|
||||
})
|
||||
|
||||
export default i18n
|
||||
@ -177,7 +177,7 @@ export const isChildren = (parent, children) => {
|
||||
* @param {*} setting
|
||||
*/
|
||||
export const updateSetting = (setting, version) => {
|
||||
const defaultVersion = '1.0.15'
|
||||
const defaultVersion = '1.0.16'
|
||||
if (!version) {
|
||||
if (setting) {
|
||||
version = setting.version
|
||||
@ -237,6 +237,7 @@ export const updateSetting = (setting, version) => {
|
||||
},
|
||||
windowSizeId: 1,
|
||||
themeId: 0,
|
||||
langId: 'cns',
|
||||
sourceId: 'kw',
|
||||
apiSource: 'temp',
|
||||
randomAnimate: true,
|
||||
|
||||
@ -10,12 +10,12 @@ div(:class="$style.download")
|
||||
tr
|
||||
th.nobreak.center(style="width: 37px;")
|
||||
material-checkbox(id="search_select_all" v-model="isSelectAll" @change="handleSelectAllData"
|
||||
:indeterminate="isIndeterminate" :title="isSelectAll && !isIndeterminate ? '全不选' : '全选'")
|
||||
th.nobreak(style="width: 28%;") 歌曲名
|
||||
th.nobreak(style="width: 22%;") 进度
|
||||
th.nobreak(style="width: 15%;") 状态
|
||||
th.nobreak(style="width: 10%;") 品质
|
||||
th.nobreak(style="width: 20%;") 操作
|
||||
:indeterminate="isIndeterminate" :title="isSelectAll && !isIndeterminate ? $t('view.download.unselect_all') : $t('view.download.select_all')")
|
||||
th.nobreak(style="width: 28%;") {{$t('view.download.name')}}
|
||||
th.nobreak(style="width: 22%;") {{$t('view.download.progress')}}
|
||||
th.nobreak(style="width: 15%;") {{$t('view.download.status')}}
|
||||
th.nobreak(style="width: 10%;") {{$t('view.download.quality')}}
|
||||
th.nobreak(style="width: 20%;") {{$t('view.download.action')}}
|
||||
div.scroll(v-if="list.length" :class="$style.tbody")
|
||||
table
|
||||
tbody
|
||||
@ -52,23 +52,23 @@ export default {
|
||||
isShowDownloadMultiple: false,
|
||||
tabs: [
|
||||
{
|
||||
name: '全部任务',
|
||||
name: this.$t('view.download.all'),
|
||||
id: 'all',
|
||||
},
|
||||
{
|
||||
name: '正在下载',
|
||||
name: this.$t('view.download.runing'),
|
||||
id: 'runing',
|
||||
},
|
||||
{
|
||||
name: '已暂停',
|
||||
name: this.$t('view.download.paused'),
|
||||
id: 'paused',
|
||||
},
|
||||
{
|
||||
name: '出错',
|
||||
name: this.$t('view.download.error'),
|
||||
id: 'error',
|
||||
},
|
||||
{
|
||||
name: '下载完成',
|
||||
name: this.$t('view.download.finished'),
|
||||
id: 'finished',
|
||||
},
|
||||
],
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
div(:class="$style.header")
|
||||
material-tab(:class="$style.tab" :list="types" align="left" item-key="id" item-name="name" v-model="tabId")
|
||||
material-select(:class="$style.select" :list="sourceInfo.sources" item-key="id" item-name="name" v-model="source")
|
||||
material-song-list(v-model="selectdData" @action="handleSongListAction" :source="source" :page="page" :limit="info.limit" :total="info.total" :list="list")
|
||||
material-song-list(v-model="selectdData" @action="handleSongListAction" :source="source" :page="page" :limit="info.limit" :total="info.total" :noItem="$t('material.song_list.loding_list')" :list="list")
|
||||
material-download-modal(:show="isShowDownload" :musicInfo="musicInfo" @select="handleAddDownload" @close="isShowDownload = false")
|
||||
material-download-multiple-modal(:show="isShowDownloadMultiple" :list="selectdData" @select="handleAddDownloadMultiple" @close="isShowDownloadMultiple = false")
|
||||
material-list-add-modal(:show="isShowListAdd" :musicInfo="musicInfo" @close="isShowListAdd = false")
|
||||
|
||||
@ -8,12 +8,12 @@
|
||||
tr
|
||||
th.nobreak.center(style="width: 37px;")
|
||||
material-checkbox(id="search_select_all" v-model="isSelectAll" @change="handleSelectAllData"
|
||||
:indeterminate="isIndeterminate" :title="isSelectAll && !isIndeterminate ? '全不选' : '全选'")
|
||||
th.nobreak(style="width: 25%;") 歌曲名
|
||||
th.nobreak(style="width: 20%;") 歌手
|
||||
th.nobreak(style="width: 20%;") 专辑
|
||||
th.nobreak(style="width: 20%;") 操作
|
||||
th.nobreak(style="width: 10%;") 时长
|
||||
:indeterminate="isIndeterminate" :title="isSelectAll && !isIndeterminate ? $t('view.list.unselect_all') : $t('view.list.select_all')")
|
||||
th.nobreak(style="width: 25%;") {{$t('view.list.name')}}
|
||||
th.nobreak(style="width: 20%;") {{$t('view.list.singer')}}
|
||||
th.nobreak(style="width: 20%;") {{$t('view.list.album')}}
|
||||
th.nobreak(style="width: 20%;") {{$t('view.list.action')}}
|
||||
th.nobreak(style="width: 10%;") {{$t('view.list.time')}}
|
||||
div.scroll(:class="$style.tbody" @scroll="handleScroll" ref="dom_scrollContent")
|
||||
table
|
||||
tbody(@contextmenu="handleContextMenu")
|
||||
@ -42,7 +42,7 @@
|
||||
td(style="width: 10%;")
|
||||
span(:class="$style.time") {{item.interval || '--/--'}}
|
||||
div(:class="$style.noItem" v-else)
|
||||
p(v-text="list.length ? '加载中...' : '列表竟然是空的...'")
|
||||
p(v-text="list.length ? $t('view.list.loding_list') : $t('view.list.no_item')")
|
||||
material-download-modal(:show="isShowDownload" :musicInfo="musicInfo" @select="handleAddDownload" @close="isShowDownload = false")
|
||||
material-download-multiple-modal(:show="isShowDownloadMultiple" :list="selectdData" @select="handleAddDownloadMultiple" @close="isShowDownloadMultiple = false")
|
||||
material-flow-btn(:show="isShowEditBtn" :play-btn="false" @btn-click="handleFlowBtnClick")
|
||||
@ -313,14 +313,6 @@ export default {
|
||||
if (isSelect) this.resetSelect()
|
||||
this.isShowListAddMultiple = false
|
||||
},
|
||||
getSource(source) {
|
||||
switch (source) {
|
||||
case 'kw':
|
||||
return '酷我'
|
||||
default:
|
||||
break
|
||||
}
|
||||
},
|
||||
getMusicLocation(index) {
|
||||
let dom = document.getElementById('mid_' + this.list[index].songmid)
|
||||
return dom ? dom.offsetTop : 0
|
||||
|
||||
@ -10,12 +10,12 @@
|
||||
tr
|
||||
th.nobreak.center(style="width: 37px;")
|
||||
material-checkbox(id="search_select_all" v-model="isSelectAll" @change="handleSelectAllData"
|
||||
:indeterminate="isIndeterminate" :title="isSelectAll && !isIndeterminate ? '全不选' : '全选'")
|
||||
th.nobreak(style="width: 25%;") 歌曲名
|
||||
th.nobreak(style="width: 20%;") 歌手
|
||||
th.nobreak(style="width: 25%;") 专辑
|
||||
th.nobreak(style="width: 15%;") 操作
|
||||
th.nobreak(style="width: 10%;") 时长
|
||||
:indeterminate="isIndeterminate" :title="isSelectAll && !isIndeterminate ? $t('view.search.unselect_all') : $t('view.search.select_all')")
|
||||
th.nobreak(style="width: 25%;") {{$t('view.search.name')}}
|
||||
th.nobreak(style="width: 20%;") {{$t('view.search.singer')}}
|
||||
th.nobreak(style="width: 25%;") {{$t('view.search.album')}}
|
||||
th.nobreak(style="width: 15%;") {{$t('view.search.action')}}
|
||||
th.nobreak(style="width: 10%;") {{$t('view.search.time')}}
|
||||
div.scroll(:class="$style.tbody" ref="dom_scrollContent")
|
||||
table
|
||||
tbody(@contextmenu="handleContextMenu")
|
||||
@ -24,8 +24,8 @@
|
||||
material-checkbox(:id="index.toString()" v-model="selectdData" :value="item")
|
||||
td.break(style="width: 25%;")
|
||||
span.select {{item.name}}
|
||||
span.badge.badge-theme-success(v-if="item._types.ape || item._types.flac") 无损
|
||||
span.badge.badge-theme-info(v-else-if="item._types['320k']") 高品质
|
||||
span.badge.badge-theme-success(v-if="item._types.ape || item._types.flac") {{$t('material.song_list.lossless')}}
|
||||
span.badge.badge-theme-info(v-else-if="item._types['320k']") {{$t('material.song_list.high_quality')}}
|
||||
span(:class="$style.labelSource" v-if="searchSourceId == 'all'") {{item.source}}
|
||||
td.break(style="width: 20%;")
|
||||
span.select {{item.singer}}
|
||||
@ -41,7 +41,7 @@
|
||||
div(:class="$style.pagination")
|
||||
material-pagination(:count="listInfo.total" :limit="listInfo.limit" :page="page" @btn-click="handleTogglePage")
|
||||
div(v-else :class="$style.noitem")
|
||||
p 搜我所想~~😉
|
||||
p {{$t('view.search.no_item')}}
|
||||
material-download-modal(:show="isShowDownload" :musicInfo="musicInfo" @select="handleAddDownload" @close="isShowDownload = false")
|
||||
material-download-multiple-modal(:show="isShowDownloadMultiple" :list="selectdData" @select="handleAddDownloadMultiple" @close="isShowDownloadMultiple = false")
|
||||
material-flow-btn(:show="isShowEditBtn && (searchSourceId == 'kw' || searchSourceId == 'all' || !isAPITemp)" :remove-btn="false" @btn-click="handleFlowBtnClick")
|
||||
|
||||
@ -1,156 +1,163 @@
|
||||
<template lang="pug">
|
||||
div.scroll(:class="$style.setting")
|
||||
dl
|
||||
dt 基本设置
|
||||
dt {{$t('view.setting.basic')}}
|
||||
dd
|
||||
h3 主题颜色
|
||||
h3 {{$t('view.setting.basic_theme')}}
|
||||
div
|
||||
ul(:class="$style.theme")
|
||||
li(v-for="theme in themes.list" :key="theme.id" @click="current_setting.themeId = theme.id" :class="[theme.class, themes.active == theme.id ? $style.active : '']")
|
||||
span
|
||||
| {{theme.name}}
|
||||
|
||||
dd(title='弹出层的动画效果')
|
||||
h3 弹出层随机动画
|
||||
dd(:title="$t('view.setting.basic_animation_title')")
|
||||
h3 {{$t('view.setting.basic_animation')}}
|
||||
div
|
||||
material-checkbox(id="setting_animate" v-model="current_setting.randomAnimate" label="是否启用")
|
||||
material-checkbox(id="setting_animate" v-model="current_setting.randomAnimate" :label="$t('view.setting.is_enable')")
|
||||
|
||||
dd(title='选择音乐来源')
|
||||
h3 音乐来源
|
||||
dd(:title="$t('view.setting.basic_source_title')")
|
||||
h3 {{$t('view.setting.basic_source')}}
|
||||
div
|
||||
div(v-for="item in apiSources" :key="item.id" :class="$style.gapTop")
|
||||
material-checkbox(:id="`setting_api_source_${item.id}`" name="setting_api_source" @change="handleAPISourceChange(item.id)"
|
||||
need v-model="current_setting.apiSource" :disabled="item.disabled" :value="item.id" :label="item.label")
|
||||
|
||||
dd(title='设置软件窗口尺寸')
|
||||
h3 窗口尺寸
|
||||
dd(:title="$t('view.setting.basic_window_size_title')")
|
||||
h3 {{$t('view.setting.basic_window_size')}}
|
||||
div
|
||||
material-checkbox(v-for="(item, index) in windowSizeList" :id="`setting_window_size_${item.id}`" name="setting_window_size" @change="handleWindowSizeChange(index)" :class="$style.gapLeft"
|
||||
need v-model="current_setting.windowSizeId" :value="item.id" :label="item.name" :key="item.id")
|
||||
need v-model="current_setting.windowSizeId" :value="item.id" :label="$t('view.setting.basic_window_size_' + item.name)" :key="item.id")
|
||||
|
||||
dt 播放设置
|
||||
dd(title="都不选时播放完当前歌曲就停止播放")
|
||||
h3 歌曲切换方式
|
||||
dd(:title="$t('view.setting.basic_lang_title')")
|
||||
h3 {{$t('view.setting.basic_lang')}}
|
||||
div
|
||||
material-checkbox(v-for="item in languageList" :key="item.locale" :id="`setting_lang_${item.locale}`" name="setting_lang"
|
||||
@change="handleLangChange(item.locale)" :class="$style.gapLeft"
|
||||
need v-model="current_setting.langId" :value="item.locale" :label="item.name")
|
||||
|
||||
dt {{$t('view.setting.play')}}
|
||||
dd(:title="$t('view.setting.play_toggle_title')")
|
||||
h3 {{$t('view.setting.play_toggle')}}
|
||||
div
|
||||
material-checkbox(:id="`setting_player_togglePlay_${item.value}`" :class="$style.gapLeft" :value="item.value" :key="item.value"
|
||||
v-model="current_setting.player.togglePlayMethod" v-for="item in togglePlayMethods" :label="item.name")
|
||||
dd(title='启用时将优先播放320K品质的歌曲')
|
||||
h3 优先播放高品质音乐
|
||||
dd(:title="$t('view.setting.play_quality_title')")
|
||||
h3 {{$t('view.setting.play_quality')}}
|
||||
div
|
||||
material-checkbox(id="setting_player_highQuality" v-model="current_setting.player.highQuality" label="是否启用")
|
||||
dd(title='在任务栏上显示当前歌曲播放进度')
|
||||
h3 任务栏播放进度条
|
||||
material-checkbox(id="setting_player_highQuality" v-model="current_setting.player.highQuality" :label="$t('view.setting.is_enable')")
|
||||
dd(:title="$t('view.setting.play_task_bar_title')")
|
||||
h3 {{$t('view.setting.play_task_bar')}}
|
||||
div
|
||||
material-checkbox(id="setting_player_showTaskProgess" v-model="current_setting.player.isShowTaskProgess" label="是否启用")
|
||||
dt 列表设置
|
||||
dd(title='是否显示歌曲源')
|
||||
h3 是否显示歌曲源(仅对我的音乐分类有效)
|
||||
material-checkbox(id="setting_player_showTaskProgess" v-model="current_setting.player.isShowTaskProgess" :label="$t('view.setting.is_enable')")
|
||||
dt {{$t('view.setting.list')}}
|
||||
dd(:title="$t('view.setting.list_source_title')")
|
||||
h3 {{$t('view.setting.list_source')}}
|
||||
div
|
||||
material-checkbox(id="setting_list_showSource_enable" v-model="current_setting.list.isShowSource" label="是否显示")
|
||||
dd(title='是否记住播放列表滚动条位置')
|
||||
h3 记住列表滚动位置(仅对我的音乐分类有效)
|
||||
material-checkbox(id="setting_list_showSource_enable" v-model="current_setting.list.isShowSource" :label="$t('view.setting.is_show')")
|
||||
dd(:title="$t('view.setting.list_scroll_title')")
|
||||
h3 {{$t('view.setting.list_scroll')}}
|
||||
div
|
||||
material-checkbox(id="setting_list_scroll_enable" v-model="current_setting.list.scroll.enable" label="是否启用")
|
||||
//- dd(title='播放列表是否显示专辑栏')
|
||||
material-checkbox(id="setting_list_scroll_enable" v-model="current_setting.list.scroll.enable" :label="$t('view.setting.is_enable')")
|
||||
//- dd(:title="播放列表是否显示专辑栏")
|
||||
h3 专辑栏
|
||||
div
|
||||
material-checkbox(id="setting_list_showalbum" v-model="current_setting.list.isShowAlbumName" label="是否显示专辑栏")
|
||||
dt 下载设置
|
||||
dd(title='下载歌曲保存的路径')
|
||||
h3 下载路径
|
||||
dt {{$t('view.setting.download')}}
|
||||
dd(:title="$t('view.setting.download_path_title')")
|
||||
h3 {{$t('view.setting.download_path')}}
|
||||
div
|
||||
p
|
||||
| 当前下载路径:
|
||||
span.auto-hidden.hover(title="点击打开当前路径" :class="$style.savePath" @click="handleOpenDir(current_setting.download.savePath)") {{current_setting.download.savePath}}
|
||||
| {{$t('view.setting.download_path_label')}}
|
||||
span.auto-hidden.hover(:title="$t('view.setting.download_path_open_label')" :class="$style.savePath" @click="handleOpenDir(current_setting.download.savePath)") {{current_setting.download.savePath}}
|
||||
p
|
||||
material-btn(:class="$style.btn" min @click="handleChangeSavePath") 更改
|
||||
dd(title='下载歌曲时的命名方式')
|
||||
h3 文件命名方式
|
||||
material-btn(:class="$style.btn" min @click="handleChangeSavePath") {{$t('view.setting.download_path_change_btn')}}
|
||||
dd(:title="$t('view.setting.download_name_title')")
|
||||
h3 {{$t('view.setting.download_name')}}
|
||||
div
|
||||
material-checkbox(:id="`setting_download_musicName_${item.value}`" :class="$style.gapLeft" name="setting_download_musicName" :value="item.value" :key="item.value" need
|
||||
v-model="current_setting.download.fileName" v-for="item in musicNames" :label="item.name")
|
||||
dd(title='是否将封面嵌入音频文件中')
|
||||
h3 封面嵌入(只支持MP3格式)
|
||||
dd(:title="$t('view.setting.download_embed_pic_title')")
|
||||
h3 {{$t('view.setting.download_embed_pic')}}
|
||||
div
|
||||
material-checkbox(id="setting_download_isEmbedPic" v-model="current_setting.download.isEmbedPic" label="是否启用")
|
||||
dd(title='是否同时下载歌词文件')
|
||||
h3 歌词下载
|
||||
material-checkbox(id="setting_download_isEmbedPic" v-model="current_setting.download.isEmbedPic" :label="$t('view.setting.is_enable')")
|
||||
dd(:title="$t('view.setting.download_lyric_title')")
|
||||
h3 {{$t('view.setting.download_lyric')}}
|
||||
div
|
||||
material-checkbox(id="setting_download_isDownloadLrc" v-model="current_setting.download.isDownloadLrc" label="是否启用")
|
||||
dt 网络设置
|
||||
material-checkbox(id="setting_download_isDownloadLrc" v-model="current_setting.download.isDownloadLrc" :label="$t('view.setting.is_enable')")
|
||||
dt {{$t('view.setting.network')}}
|
||||
dd
|
||||
h3 代理设置(乱设置软件将无法联网)
|
||||
h3 {{$t('view.setting.network_proxy_title')}}
|
||||
div
|
||||
p
|
||||
material-checkbox(id="setting_network_proxy_enable" v-model="current_setting.network.proxy.enable" @change="handleProxyChange('enable')" label="是否启用")
|
||||
material-checkbox(id="setting_network_proxy_enable" v-model="current_setting.network.proxy.enable" @change="handleProxyChange('enable')" :label="$t('view.setting.is_enable')")
|
||||
p
|
||||
material-input(:class="$style.gapLeft" v-model="current_setting.network.proxy.host" @change="handleProxyChange('host')" placeholder="主机")
|
||||
material-input(:class="$style.gapLeft" v-model="current_setting.network.proxy.port" @change="handleProxyChange('port')" placeholder="端口")
|
||||
material-input(:class="$style.gapLeft" v-model="current_setting.network.proxy.host" @change="handleProxyChange('host')" :placeholder="$t('view.setting.network_proxy_host')")
|
||||
material-input(:class="$style.gapLeft" v-model="current_setting.network.proxy.port" @change="handleProxyChange('port')" :placeholder="$t('view.setting.network_proxy_port')")
|
||||
p
|
||||
material-input(:class="$style.gapLeft" v-model="current_setting.network.proxy.username" @change="handleProxyChange('username')" placeholder="用户名")
|
||||
material-input(:class="$style.gapLeft" v-model="current_setting.network.proxy.password" @change="handleProxyChange('password')" type="password" placeholder="密码")
|
||||
dt 强迫症设置
|
||||
material-input(:class="$style.gapLeft" v-model="current_setting.network.proxy.username" @change="handleProxyChange('username')" :placeholder="$t('view.setting.network_proxy_username')")
|
||||
material-input(:class="$style.gapLeft" v-model="current_setting.network.proxy.password" @change="handleProxyChange('password')" type="password" :placeholder="$t('view.setting.network_proxy_password')")
|
||||
dt {{$t('view.setting.odc')}}
|
||||
dd
|
||||
h3 离开搜索界面时清空搜索框
|
||||
h3 {{$t('view.setting.odc_clear_search_input')}}
|
||||
div
|
||||
material-checkbox(id="setting_odc_isAutoClearSearchInput" v-model="current_setting.odc.isAutoClearSearchInput" label="是否启用")
|
||||
material-checkbox(id="setting_odc_isAutoClearSearchInput" v-model="current_setting.odc.isAutoClearSearchInput" :label="$t('view.setting.is_enable')")
|
||||
dd
|
||||
h3 离开搜索界面时清空搜索列表
|
||||
h3 {{$t('view.setting.odc_clear_search_list')}}
|
||||
div
|
||||
material-checkbox(id="setting_odc_isAutoClearSearchList" v-model="current_setting.odc.isAutoClearSearchList" label="是否启用")
|
||||
dt 备份与恢复
|
||||
material-checkbox(id="setting_odc_isAutoClearSearchList" v-model="current_setting.odc.isAutoClearSearchList" :label="$t('view.setting.is_enable')")
|
||||
dt {{$t('view.setting.backup')}}
|
||||
dd
|
||||
h3 部分数据
|
||||
h3 {{$t('view.setting.backup_part')}}
|
||||
div
|
||||
material-btn(:class="[$style.btn, $style.gapLeft]" min @click="handleImportPlayList") 导入列表
|
||||
material-btn(:class="[$style.btn, $style.gapLeft]" min @click="handleExportPlayList") 导出列表
|
||||
material-btn(:class="[$style.btn, $style.gapLeft]" min @click="handleImportSetting") 导入设置
|
||||
material-btn(:class="[$style.btn, $style.gapLeft]" min @click="handleExportSetting") 导出设置
|
||||
material-btn(:class="[$style.btn, $style.gapLeft]" min @click="handleImportPlayList") {{$t('view.setting.backup_part_import_list')}}
|
||||
material-btn(:class="[$style.btn, $style.gapLeft]" min @click="handleExportPlayList") {{$t('view.setting.backup_part_export_list')}}
|
||||
material-btn(:class="[$style.btn, $style.gapLeft]" min @click="handleImportSetting") {{$t('view.setting.backup_part_import_setting')}}
|
||||
material-btn(:class="[$style.btn, $style.gapLeft]" min @click="handleExportSetting") {{$t('view.setting.backup_part_export_setting')}}
|
||||
dd
|
||||
h3 所有数据(设置与试听列表)
|
||||
h3 {{$t('view.setting.backup_all')}}
|
||||
div
|
||||
material-btn(:class="[$style.btn, $style.gapLeft]" min @click="handleImportAllData") 导入
|
||||
material-btn(:class="[$style.btn, $style.gapLeft]" min @click="handleExportAllData") 导出
|
||||
dt 其他
|
||||
material-btn(:class="[$style.btn, $style.gapLeft]" min @click="handleImportAllData") {{$t('view.setting.backup_all_import')}}
|
||||
material-btn(:class="[$style.btn, $style.gapLeft]" min @click="handleExportAllData") {{$t('view.setting.backup_all_export')}}
|
||||
dt {{$t('view.setting.other')}}
|
||||
dd
|
||||
h3 缓存大小(清理缓存后图片等资源将需要重新下载,不建议清理,软件会根据磁盘空间动态管理缓存大小)
|
||||
h3 {{$t('view.setting.other_cache')}}
|
||||
div
|
||||
p
|
||||
| 软件已使用缓存大小:
|
||||
span.auto-hidden(title="当前已用缓存") {{cacheSize}}
|
||||
| {{$t('view.setting.other_cache_label')}}
|
||||
span.auto-hidden(:title="$t('view.setting.other_cache_label_title')") {{cacheSize}}
|
||||
p
|
||||
material-btn(:class="$style.btn" min @click="clearCache") 清理缓存
|
||||
dt 软件更新
|
||||
material-btn(:class="$style.btn" min @click="clearCache") {{$t('view.setting.other_cache_clear_btn')}}
|
||||
dt {{$t('view.setting.update')}}
|
||||
dd
|
||||
p.small
|
||||
| 最新版本:{{version.newVersion ? version.newVersion.version : '未知'}}
|
||||
p.small 当前版本:{{version.version}}
|
||||
| {{$t('view.setting.update_latest_label')}}{{version.newVersion ? version.newVersion.version : $t('view.setting.update_unknown')}}
|
||||
p.small {{$t('view.setting.update_current_label')}}{{version.version}}
|
||||
p.small(v-if="this.version.downloadProgress" style="line-height: 1.5;")
|
||||
| 发现新版本并在努力下载中,请稍后...⏳
|
||||
| {{$t('view.setting.update_downloading')}}
|
||||
br
|
||||
| 下载进度:{{downloadProgress}}
|
||||
| {{$t('view.setting.update_progress')}}{{downloadProgress}}
|
||||
p(v-if="version.newVersion")
|
||||
span(v-if="version.isLatestVer") 软件已是最新,尽情地体验吧~🥂
|
||||
material-btn(v-else :class="[$style.btn, $style.gapLeft]" min @click="showUpdateModal") 打开更新窗口 🚀
|
||||
p.small(v-else) 检查更新中...
|
||||
dt 关于洛雪音乐
|
||||
span(v-if="version.isLatestVer") {{$t('view.setting.update_latest')}}
|
||||
material-btn(v-else :class="[$style.btn, $style.gapLeft]" min @click="showUpdateModal") {{$t('view.setting.update_open_version_modal_btn')}}
|
||||
p.small(v-else) {{$t('view.setting.update_checking')}}
|
||||
dt {{$t('view.setting.about')}}
|
||||
dd
|
||||
p.small
|
||||
| 本软件完全免费,代码已开源,开源地址:
|
||||
span.hover.underline(title="点击打开" @click="handleOpenUrl('https://github.com/lyswhut/lx-music-desktop#readme')") https://github.com/lyswhut/lx-music-desktop
|
||||
span.hover.underline(:title="$t('view.setting.click_open')" @click="handleOpenUrl('https://github.com/lyswhut/lx-music-desktop#readme')") https://github.com/lyswhut/lx-music-desktop
|
||||
p.small
|
||||
| 最新版网盘下载地址(网盘内有Windows、MAC版):
|
||||
span.hover.underline(title="点击打开" @click="handleOpenUrl('https://www.lanzous.com/b906260/')") 网盘地址
|
||||
span.hover.underline(:title="$t('view.setting.click_open')" @click="handleOpenUrl('https://www.lanzous.com/b906260/')") 网盘地址
|
||||
| 密码:
|
||||
span.hover(title="点击复制" @click="clipboardWriteText('glqw')") glqw
|
||||
span.hover(:title="$t('view.setting.click_copy')" @click="clipboardWriteText('glqw')") glqw
|
||||
p.small
|
||||
| 软件的常见问题可转至:
|
||||
span.hover.underline(title="点击打开" @click="handleOpenUrl('https://github.com/lyswhut/lx-music-desktop/blob/master/FAQ.md')") 常见问题
|
||||
span.hover.underline(:title="$t('view.setting.click_open')" @click="handleOpenUrl('https://github.com/lyswhut/lx-music-desktop/blob/master/FAQ.md')") 常见问题
|
||||
p.small
|
||||
| 阅读常见问题后仍有问题可 mail to:
|
||||
span.hover(title="点击复制" @click="clipboardWriteText('lyswhut@qq.com')") lyswhut@qq.com
|
||||
span.hover(:title="$t('view.setting.click_copy')" @click="clipboardWriteText('lyswhut@qq.com')") lyswhut@qq.com
|
||||
| 或到 GitHub 提交
|
||||
span.hover.underline(title="点击打开" @click="handleOpenUrl('https://github.com/lyswhut/lx-music-desktop/issues')") issue
|
||||
span.hover.underline(:title="$t('view.setting.click_open')" @click="handleOpenUrl('https://github.com/lyswhut/lx-music-desktop/issues')") issue
|
||||
|
||||
br
|
||||
p.small
|
||||
@ -203,6 +210,7 @@ import {
|
||||
} from '../utils'
|
||||
import { rendererSend } from '../../common/ipc'
|
||||
import fs from 'fs'
|
||||
import languageList from '@/lang/languages.json'
|
||||
|
||||
export default {
|
||||
name: 'Setting',
|
||||
@ -215,7 +223,57 @@ export default {
|
||||
downloadProgress() {
|
||||
return this.version.downloadProgress
|
||||
? `${this.version.downloadProgress.percent.toFixed(2)}% - ${sizeFormate(this.version.downloadProgress.transferred)}/${sizeFormate(this.version.downloadProgress.total)} - ${sizeFormate(this.version.downloadProgress.bytesPerSecond)}/s`
|
||||
: '更新初始化中...'
|
||||
: this.$t('view.setting.update_init')
|
||||
},
|
||||
togglePlayMethods() {
|
||||
return [
|
||||
{
|
||||
name: this.$t('view.setting.play_toggle_list_loop'),
|
||||
value: 'listLoop',
|
||||
},
|
||||
{
|
||||
name: this.$t('view.setting.play_toggle_random'),
|
||||
value: 'random',
|
||||
},
|
||||
{
|
||||
name: this.$t('view.setting.play_toggle_list'),
|
||||
value: 'list',
|
||||
},
|
||||
{
|
||||
name: this.$t('view.setting.play_toggle_single_loop'),
|
||||
value: 'singleLoop',
|
||||
},
|
||||
]
|
||||
},
|
||||
apiSources() {
|
||||
return [
|
||||
{
|
||||
id: 'test',
|
||||
label: this.$t('view.setting.basic_source_test'),
|
||||
disabled: false,
|
||||
},
|
||||
{
|
||||
id: 'temp',
|
||||
label: this.$t('view.setting.basic_source_temp'),
|
||||
disabled: false,
|
||||
},
|
||||
]
|
||||
},
|
||||
musicNames() {
|
||||
return [
|
||||
{
|
||||
name: this.$t('view.setting.download_name1'),
|
||||
value: '歌名 - 歌手',
|
||||
},
|
||||
{
|
||||
name: this.$t('view.setting.download_name2'),
|
||||
value: '歌手 - 歌名',
|
||||
},
|
||||
{
|
||||
name: this.$t('view.setting.download_name3'),
|
||||
value: '歌名',
|
||||
},
|
||||
]
|
||||
},
|
||||
},
|
||||
data() {
|
||||
@ -254,55 +312,13 @@ export default {
|
||||
isAutoClearSearchList: false,
|
||||
},
|
||||
windowSizeId: 1,
|
||||
langId: 'cns',
|
||||
themeId: 0,
|
||||
sourceId: 0,
|
||||
randomAnimate: true,
|
||||
apiSource: 'messoer',
|
||||
},
|
||||
togglePlayMethods: [
|
||||
{
|
||||
name: '列表循环',
|
||||
value: 'listLoop',
|
||||
},
|
||||
{
|
||||
name: '列表随机',
|
||||
value: 'random',
|
||||
},
|
||||
{
|
||||
name: '顺序播放',
|
||||
value: 'list',
|
||||
},
|
||||
{
|
||||
name: '单曲循环',
|
||||
value: 'singleLoop',
|
||||
},
|
||||
],
|
||||
apiSources: [
|
||||
{
|
||||
id: 'test',
|
||||
label: '测试接口(几乎软件的所有功能都可用)',
|
||||
disabled: false,
|
||||
},
|
||||
{
|
||||
id: 'temp',
|
||||
label: '临时接口(软件的某些功能不可用,建议测试接口不可用再使用本接口)',
|
||||
disabled: false,
|
||||
},
|
||||
],
|
||||
musicNames: [
|
||||
{
|
||||
name: '歌名 - 歌手',
|
||||
value: '歌名 - 歌手',
|
||||
},
|
||||
{
|
||||
name: '歌手 - 歌名',
|
||||
value: '歌手 - 歌名',
|
||||
},
|
||||
{
|
||||
name: '歌名',
|
||||
value: '歌名',
|
||||
},
|
||||
],
|
||||
languageList,
|
||||
cacheSize: '0 B',
|
||||
}
|
||||
},
|
||||
@ -337,7 +353,7 @@ export default {
|
||||
},
|
||||
handleChangeSavePath() {
|
||||
selectDir({
|
||||
title: '选择歌曲保存路径',
|
||||
title: this.$t('view.setting.download_select_save_path'),
|
||||
defaultPath: this.current_setting.download.savePath,
|
||||
properties: ['openDirectory'],
|
||||
}).then(result => {
|
||||
@ -429,7 +445,7 @@ export default {
|
||||
},
|
||||
handleImportAllData() {
|
||||
selectDir({
|
||||
title: '选择备份文件',
|
||||
title: this.$t('view.setting.backup_all_import_desc'),
|
||||
properties: ['openFile'],
|
||||
filters: [
|
||||
{ name: 'Setting', extensions: ['json'] },
|
||||
@ -442,7 +458,7 @@ export default {
|
||||
},
|
||||
handleExportAllData() {
|
||||
openSaveDir({
|
||||
title: '选择备份保存位置',
|
||||
title: this.$t('view.setting.backup_all_export_desc'),
|
||||
defaultPath: 'lx_datas.json',
|
||||
}).then(result => {
|
||||
if (result.canceled) return
|
||||
@ -451,7 +467,7 @@ export default {
|
||||
},
|
||||
handleImportSetting() {
|
||||
selectDir({
|
||||
title: '选择配置文件',
|
||||
title: this.$t('view.setting.backup_part_import_setting_desc'),
|
||||
properties: ['openFile'],
|
||||
filters: [
|
||||
{ name: 'Setting', extensions: ['json'] },
|
||||
@ -464,7 +480,7 @@ export default {
|
||||
},
|
||||
handleExportSetting() {
|
||||
openSaveDir({
|
||||
title: '选择设置保存位置',
|
||||
title: this.$t('view.setting.backup_part_export_setting_desc'),
|
||||
defaultPath: 'lx_setting.json',
|
||||
}).then(result => {
|
||||
if (result.canceled) return
|
||||
@ -473,7 +489,7 @@ export default {
|
||||
},
|
||||
handleImportPlayList() {
|
||||
selectDir({
|
||||
title: '选择列表文件',
|
||||
title: this.$t('view.setting.backup_part_import_list_desc'),
|
||||
properties: ['openFile'],
|
||||
filters: [
|
||||
{ name: 'Play List', extensions: ['json'] },
|
||||
@ -486,7 +502,7 @@ export default {
|
||||
},
|
||||
handleExportPlayList() {
|
||||
openSaveDir({
|
||||
title: '选择设置保存位置',
|
||||
title: this.$t('view.setting.backup_part_export_list_desc'),
|
||||
defaultPath: 'lx_list.json',
|
||||
}).then(result => {
|
||||
if (result.canceled) return
|
||||
@ -533,6 +549,9 @@ export default {
|
||||
}
|
||||
this.init()
|
||||
},
|
||||
handleLangChange(id) {
|
||||
this.$i18n.locale = id
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
//- material-btn(:class="$style.closeDetailButton" :disabled="detailLoading" @click="playSongListDetail") 播放
|
||||
//- |
|
||||
material-btn(:class="$style.closeDetailButton" @click="hideListDetail") 返回
|
||||
material-song-list(v-model="selectdData" @action="handleSongListAction" :source="source" :page="listDetail.page" :limit="listDetail.limit" :total="listDetail.total" :list="listDetail.list")
|
||||
material-song-list(v-model="selectdData" @action="handleSongListAction" :source="source" :page="listDetail.page" :limit="listDetail.limit" :total="listDetail.total" :noItem="$t('material.song_list.loding_list')" :list="listDetail.list")
|
||||
transition(enter-active-class="animated-fast fadeIn" leave-active-class="animated-fast fadeOut")
|
||||
div(:class="$style.songListContainer" v-if="!isVisibleListDetail")
|
||||
div(:class="$style.header")
|
||||
@ -44,7 +44,7 @@
|
||||
use(xlink:href='#icon-right')
|
||||
transition(enter-active-class="animated-fast fadeIn" leave-active-class="animated-fast fadeOut")
|
||||
div(v-show="!listData.list.length" :class="$style.noitem")
|
||||
p 列表加载中...
|
||||
p {{$t('material.song_list.loding_list')}}
|
||||
material-download-modal(:show="isShowDownload" :musicInfo="musicInfo" @select="handleAddDownload" @close="isShowDownload = false")
|
||||
material-download-multiple-modal(:show="isShowDownloadMultiple" :list="selectdData" @select="handleAddDownloadMultiple" @close="isShowDownloadMultiple = false")
|
||||
material-list-add-modal(:show="isShowListAdd" :musicInfo="musicInfo" @close="isShowListAdd = false")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user