新增多语言设置
parent
a17ba9f62c
commit
b8f15bcca9
|
@ -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>
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"online_music": "在线音乐",
|
||||
"search": "搜索",
|
||||
"song_list": "歌单",
|
||||
"leaderboard": "排行榜",
|
||||
"my_music": "我的音乐",
|
||||
"default_list": "试听列表",
|
||||
"love_list": "收藏列表",
|
||||
"other": "其他",
|
||||
"download": "下载管理",
|
||||
"setting": "设置"
|
||||
}
|
|
@ -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": "歌词获取失败"
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"min": "最小化",
|
||||
"close": "关闭"
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"btn_tip": "腾讯、网易音源仅支持下载128k音质",
|
||||
"lossless": "无损音质",
|
||||
"high_quality": "高品音质",
|
||||
"normal": "普通音质"
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"tip": "已选择 {len} 首歌曲",
|
||||
"tip2": "请选择要优先下载的音质",
|
||||
"normal": "普通音质",
|
||||
"high_quality": "高品音质",
|
||||
"lossless": "无损音质"
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"play": "播放",
|
||||
"add": "添加",
|
||||
"download": "下载",
|
||||
"start": "开始",
|
||||
"pause": "暂停",
|
||||
"remove": "移除"
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"title_first": "添加",
|
||||
"title_last": "到...",
|
||||
"btn_title": "把该歌曲添加到 {name}"
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"title": "添加已选的 {num} 首歌曲到...",
|
||||
"btn_title": "把该歌曲添加到 {name}"
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"play": "播放",
|
||||
"add_to": "添加到...",
|
||||
"download": "下载",
|
||||
"add": "添加",
|
||||
"start": "开始",
|
||||
"pause": "暂停",
|
||||
"file": "定位文件",
|
||||
"search": "搜索",
|
||||
"remove": "移除"
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"prev": "上一页",
|
||||
"next": "下一页",
|
||||
"page": "第 {num} 页"
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"select_all": "全选",
|
||||
"unselect_all": "全不选",
|
||||
"name": "歌曲名",
|
||||
"singer": "歌手",
|
||||
"album": "专辑",
|
||||
"action": "操作",
|
||||
"time": "时长",
|
||||
"lossless": "无损",
|
||||
"high_quality": "高品质",
|
||||
"loding_list": "列表加载中..."
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"default": "默认"
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"select_all": "全选",
|
||||
"unselect_all": "全不选",
|
||||
"name": "歌曲名",
|
||||
"progress": "进度",
|
||||
"status": "状态",
|
||||
"quality": "品质",
|
||||
"action": "操作",
|
||||
"all": "全部任务",
|
||||
"runing": "正在下载",
|
||||
"paused": "已暂停",
|
||||
"error": "出错",
|
||||
"finished": "下载完成"
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"select_all": "全选",
|
||||
"unselect_all": "全不选",
|
||||
"name": "歌曲名",
|
||||
"singer": "歌手",
|
||||
"album": "专辑",
|
||||
"action": "操作",
|
||||
"time": "时长",
|
||||
"loding_list": "加载中...",
|
||||
"no_item": "列表竟然是空的..."
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"select_all": "全选",
|
||||
"unselect_all": "全不选",
|
||||
"name": "歌曲名",
|
||||
"singer": "歌手",
|
||||
"album": "专辑",
|
||||
"action": "操作",
|
||||
"time": "时长",
|
||||
"lossless": "无损",
|
||||
"high_quality": "高品质",
|
||||
"no_item": "搜我所想~~😉"
|
||||
}
|
|
@ -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": "点击复制"
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"online_music": "在線音樂",
|
||||
"search": "搜索",
|
||||
"song_list": "歌單",
|
||||
"leaderboard": "排行榜",
|
||||
"my_music": "我的音樂",
|
||||
"default_list": "試聽列表",
|
||||
"love_list": "收藏列表",
|
||||
"other": "其他",
|
||||
"download": "下載管理",
|
||||
"setting": "設置"
|
||||
}
|
|
@ -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": "歌詞獲取失敗"
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"min": "最小化",
|
||||
"close": "關閉"
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"btn_tip": "騰訊、網易音源僅支持下載128k音質",
|
||||
"lossless": "無損音質",
|
||||
"high_quality": "高品音質",
|
||||
"normal": "普通音質"
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"tip": "已選擇 {len} 首歌曲",
|
||||
"tip2": "請選擇要優先下載的音質",
|
||||
"normal": "普通音質",
|
||||
"high_quality": "高品音質",
|
||||
"lossless": "無損音質"
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"play": "播放",
|
||||
"add": "添加",
|
||||
"download": "下載",
|
||||
"start": "開始",
|
||||
"pause": "暫停",
|
||||
"remove": "移除"
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"title_first": "添加",
|
||||
"title_last": "到...",
|
||||
"btn_title": "把該歌曲添加到 {name}"
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"title": "添加已選的 {num} 首歌曲到...",
|
||||
"btn_title": "把該歌曲添加到 {name}"
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"play": "播放",
|
||||
"add_to": "添加到...",
|
||||
"download": "下載",
|
||||
"add": "添加",
|
||||
"start": "開始",
|
||||
"pause": "暫停",
|
||||
"file": "定位文件",
|
||||
"search": "搜索",
|
||||
"remove": "移除"
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"prev": "上一頁",
|
||||
"next": "下一頁",
|
||||
"page": "第 {num} 頁"
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"select_all": "全選",
|
||||
"unselect_all": "全不選",
|
||||
"name": "歌曲名",
|
||||
"singer": "歌手",
|
||||
"album": "專輯",
|
||||
"action": "操作",
|
||||
"time": "時長",
|
||||
"lossless": "無損",
|
||||
"high_quality": "高品質",
|
||||
"loding_list": "列表加載中..."
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"default": "默認"
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"select_all": "全選",
|
||||
"unselect_all": "全不選",
|
||||
"name": "歌曲名",
|
||||
"progress": "進度",
|
||||
"status": "狀態",
|
||||
"quality": "品質",
|
||||
"action": "操作",
|
||||
"all": "全部任務",
|
||||
"runing": "正在下載",
|
||||
"paused": "已暫停",
|
||||
"error": "出錯",
|
||||
"finished": "下載完成"
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"select_all": "全選",
|
||||
"unselect_all": "全不選",
|
||||
"name": "歌曲名",
|
||||
"singer": "歌手",
|
||||
"album": "專輯",
|
||||
"action": "操作",
|
||||
"time": "時長",
|
||||
"loding_list": "加載中...",
|
||||
"no_item": "列表竟然是空的..."
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"select_all": "全選",
|
||||
"unselect_all": "全不選",
|
||||
"name": "歌曲名",
|
||||
"singer": "歌手",
|
||||
"album": "專輯",
|
||||
"action": "操作",
|
||||
"time": "時長",
|
||||
"lossless": "無損",
|
||||
"high_quality": "高品質",
|
||||
"no_item": "搜我所想~~😉"
|
||||
}
|
|
@ -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": "點擊複製"
|
||||
}
|
|
@ -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"
|
||||
}
|
|
@ -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"
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"min": "Minimize",
|
||||
"close": "Close"
|
||||
}
|
|
@ -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"
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"play": "Play",
|
||||
"add": "Add",
|
||||
"download": "Download",
|
||||
"start": "Start",
|
||||
"pause": "Pause",
|
||||
"remove": "Remove"
|
||||
}
|
|
@ -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}"
|
||||
}
|
|
@ -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"
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"prev": "Prev",
|
||||
"next": "Next",
|
||||
"page": "Page {num}"
|
||||
}
|
|
@ -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..."
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"default": "Default"
|
||||
}
|
|
@ -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"
|
||||
}
|
|
@ -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..."
|
||||
}
|
|
@ -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~~😉"
|
||||
}
|
|
@ -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"
|
||||
}
|
|
@ -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
|
|
@ -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),
|
||||
})
|
||||
|
|
|
@ -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