Merge pull request #579 from ciderapp/develop

Backport develop commits to e18 (again)
This commit is contained in:
Maikiwi 2022-03-16 18:30:52 -07:00 committed by GitHub
commit 08f6cc9063
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 118 additions and 19129 deletions

View file

@ -1,6 +1,8 @@
version: 2.1 version: 2.1
orbs: # adds orbs to your configuration orbs: # adds orbs to your configuration
jira: circleci/jira@1.0.5 # invokes the Jira orb, making its commands accessible jira: circleci/jira@1.0.5 # invokes the Jira orb, making its commands accessible
branches:
ignore: feature/i10n
jobs: jobs:
build: build:
working_directory: ~/Cider working_directory: ~/Cider
@ -61,4 +63,13 @@ jobs:
mv ~/Cider/dist/*.blockmap ~/Cider/dist/artifacts mv ~/Cider/dist/*.blockmap ~/Cider/dist/artifacts
- store_artifacts: - store_artifacts:
path: ~/Cider/dist/artifacts path: ~/Cider/dist/artifacts
publish-github-release:
docker:
- image: cibuilds/github:0.10
steps:
- attach_workspace:
at: ~/Cider/dist/artifacts
- run:
name: "Publish Release on GitHub"
command: |
ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r "cider-releases" -c ${CIRCLE_SHA1} -n "${CIRCLE_BRANCH} build #${CIRCLE_BUILD_NUM}" -b "This release is made automatically from [this commit](https://github.com/ciderapp/Cider/commit/${CIRCLE_SHA1}) using [this CircleCI job.](${CIRCLE_BUILD_URL})" ~/Cider/dist/artifacts

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,86 +1,67 @@
app-id: org.cidercollective.cider app-id: org.cidercollective.cider
branch: main
runtime: org.freedesktop.Platform runtime: org.freedesktop.Platform
runtime-version: '21.08' runtime-version: '21.08'
sdk: org.freedesktop.Sdk sdk: org.freedesktop.Sdk
# Use the Electron 2 BaseApp, which adds several common libraries we'll need.
base: org.electronjs.Electron2.BaseApp base: org.electronjs.Electron2.BaseApp
base-version: '21.08' base-version: '21.08'
# Add the Node 10 SDK extension.
sdk-extensions:
- org.freedesktop.Sdk.Extension.node14
# Electron doesn't use a traditional locale format so separate-locales is useless.
separate-locales: false
command: cider command: cider
rename-desktop-file: cider.desktop
rename-icon: cider
finish-args: finish-args:
# These two lines add Xorg access for graphics. - --device=dri
- '--share=ipc' - --filesystem=xdg-music
- '--socket=x11' - --own-name=org.mpris.MediaPlayer2.Cider
# Sound access. - --share=ipc
- '--socket=pulseaudio' - --share=network
# Network access. - --socket=pulseaudio
- '--share=network' # needs electron v11 (chromium v87) or newer with ozone enabled
# If you need to access the filesystem, also add: # https://github.com/electron/electron/issues/10915
# - '--filesystem=home' # - --socket=wayland
- --socket=x11
- --system-talk-name=org.freedesktop.UPower
- --talk-name=com.canonical.AppMenu.Registrar
- --talk-name=com.canonical.dbusmenu
- --talk-name=org.freedesktop.Notifications
- --talk-name=org.kde.StatusNotifierWatcher
modules: modules:
# With electron-webpack and electron-builder we don't install Node to /app/node,
# because electron-builder will bundle everything for us in one piece.
# Instead we jump straight to the quick start module.
# However, since this quick start uses yarn, we do have to install that.
- name: yarn
buildsystem: simple
build-commands:
- 'cp -a * /app'
# Only used for building, so clean it up afterwards.
cleanup:
- '*'
sources:
- type: archive
url: https://github.com/yarnpkg/yarn/releases/download/v1.22.17/yarn-v1.22.17.tar.gz
sha256: 267982c61119a055ba2b23d9cf90b02d3d16c202c03cb0c3a53b9633eae37249
- name: cider - name: cider
buildsystem: simple buildsystem: simple
build-options:
# Add the node bin directory & yarn directory.
append-path: '/usr/lib/sdk/node14/bin:/app/yarn/bin'
env:
# Set the Electron cache directory.
# (The directory format is: /run/build/MODULE_NAME/flatpak-node/electron-cache)
ELECTRON_CACHE: '/run/build/cider/flatpak-node/electron-cache'
XDG_CACHE_HOME: /run/build/cider/flatpak-node/cache
# Sets the directory where Node is located so way npm won't download the headers.
npm_config_nodedir: 'flatpak-node/node-gyp/electron-current'
build-commands: build-commands:
# Have Yarn use the offline mirror. - install -dm755 ${FLATPAK_DEST}/cider
- 'HOME=$PWD yarn config --offline set yarn-offline-mirror $FLATPAK_BUILDER_BUILDDIR/flatpak-node/yarn-mirror' - |
# Download the packages bsdtar -Oxf cider.deb 'data.tar*' |
- 'cp cider-yarn.lock yarn.lock' bsdtar -xf - \
- 'yarn install --offline' -C ${FLATPAK_DEST}/cider \
# If you were using npm with electron-webpack/electron-builder, then the above two commands --strip-components=3 \
# would look more like the npm commands in the vanilla-quick-start manifest, just without ./opt/Cider
# the --prefix. - |
bsdtar -Oxf cider.deb 'data.tar*' |
# Run electron-builder, passing the architecture arguments to it. bsdtar -xf - \
# Note that the -- is important; without that, the argument will be passed to -C ${FLATPAK_DEST} \
# yarn instead of electron-builder. --strip-components=2 \
- '. flatpak-node/electron-builder-arch-args.sh; yarn run --offline electron-builder build --linux dir -- $ELECTRON_BUILDER_ARCH_ARGS' --exclude=./usr/share/doc \
# Copy the resulting, unpacked directory to /app. ./usr/share
# (A glob is used because the directory name may contain the current arch.) - desktop-file-edit --set-key=Exec --set-value=cider ${FLATPAK_DEST}/share/applications/cider.desktop
- 'cp -r dist/linux*unpacked /app/cider' - install -Dm755 stub_sandbox ${FLATPAK_DEST}/cider/chrome-sandbox
# If you passed --electron-non-patented-ffmpeg, you could install it like this: - install -Dm755 cider -t ${FLATPAK_DEST}/bin/
# - 'install -Dm 755 flatpak-node/libffmpeg.so -t /app/electron-webpack-quick-start'
# Install the wrapper script to start it.
- 'install -Dm 755 cider.sh /app/bin/cider'
sources: sources:
- type: git - type: file
url: https://github.com/ciderapp/cider dest-filename: cider.deb
branch: develop url: https://1308-429851205-gh.circle-artifacts.com/0/~/Cider/dist/artifacts/cider_1.3.1308_amd64.deb
# Add the flatpak-node-generator generated sources. sha256: 342abde96bac9668e7238860ba435171edd72077ed9f4b385a3546c4d8f96995
- generated-sources.json x-checker-data:
# Our runner script. type: html
url: https://circleci.com/api/v1.1/project/gh/ciderapp/Cider/latest/artifacts?branch=main&filter=successful
pattern: (https://.*circle-artifacts.com/.+/cider_([\d\.]+)_amd64.deb)
- type: script - type: script
dest-filename: cider.sh dest-filename: cider
commands: commands:
- '/app/cider/cider' # share chromium singleton between multiple session, needed for flatpak<1.11.1
- export TMPDIR=$XDG_RUNTIME_DIR/app/$FLATPAK_ID
- exec zypak-wrapper /app/cider/cider "$@"
- type: script
dest-filename: stub_sandbox
commands:
- |
echo Stub sandbox ignoring command: $@
exit 1

View file

@ -16,7 +16,6 @@
"scripts": { "scripts": {
"build": "tsc", "build": "tsc",
"watch": "tsc --watch", "watch": "tsc --watch",
"test": "yarn build && playwright test",
"start": "run-script-os", "start": "run-script-os",
"start:win32": "yarn build && set ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers", "start:win32": "yarn build && set ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
"start:linux": "yarn build && ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers", "start:linux": "yarn build && ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
@ -63,7 +62,6 @@
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"run-script-os": "^1.1.6", "run-script-os": "^1.1.6",
"source-map-support": "^0.5.21", "source-map-support": "^0.5.21",
"typescript": "^4.5.5",
"v8-compile-cache": "^2.3.0", "v8-compile-cache": "^2.3.0",
"wallpaper": "5.0.1", "wallpaper": "5.0.1",
"ws": "^8.5.0", "ws": "^8.5.0",
@ -71,7 +69,6 @@
"youtube-search-without-api-key": "^1.0.7" "youtube-search-without-api-key": "^1.0.7"
}, },
"devDependencies": { "devDependencies": {
"@playwright/test": "^1.19.2",
"@types/discord-rpc": "^4.0.0", "@types/discord-rpc": "^4.0.0",
"@types/express": "^4.17.13", "@types/express": "^4.17.13",
"@types/qrcode-terminal": "^0.12.0", "@types/qrcode-terminal": "^0.12.0",
@ -81,7 +78,7 @@
"electron-builder-notarize-pkg": "^1.2.0", "electron-builder-notarize-pkg": "^1.2.0",
"electron-webpack": "^2.8.2", "electron-webpack": "^2.8.2",
"musickit-typescript": "^1.2.4", "musickit-typescript": "^1.2.4",
"playwright": "^1.19.2", "typescript": "^4.6.2",
"vue-devtools": "^5.1.4", "vue-devtools": "^5.1.4",
"webpack": "~5.69.1" "webpack": "~5.69.1"
}, },

View file

@ -364,7 +364,6 @@
"settings.option.experimental.unknownPlugin.description": "Cider 플러그인 저장소 이외의 저장소에서 플러그인 설치 허용", "settings.option.experimental.unknownPlugin.description": "Cider 플러그인 저장소 이외의 저장소에서 플러그인 설치 허용",
"settings.option.experimental.compactUI": "간결한 사용자 인터페이스", "settings.option.experimental.compactUI": "간결한 사용자 인터페이스",
"settings.option.experimental.close_button_hide": "닫기 버튼으로 애플리케이션 숨기기", "settings.option.experimental.close_button_hide": "닫기 버튼으로 애플리케이션 숨기기",
"settings.option.experimental.copy_log": "로그를 클립보드에 복사하기",
"settings.option.experimental.inline_playlists": "인라인 플레이리스트 및 앨범", "settings.option.experimental.inline_playlists": "인라인 플레이리스트 및 앨범",
"settings.option.advanced.playlistTrackMapping": "플레이리스트 트랙 매핑", "settings.option.advanced.playlistTrackMapping": "플레이리스트 트랙 매핑",
"settings.option.advanced.playlistTrackMapping.description": "플레이리스트를 자세히 스캔하여 어떤 트랙이 어떤 플레이리스트에 있는지 확인합니다. 플레이리스트 캐시 빌드 시간이 크게 늘어날 수 있습니다.", "settings.option.advanced.playlistTrackMapping.description": "플레이리스트를 자세히 스캔하여 어떤 트랙이 어떤 플레이리스트에 있는지 확인합니다. 플레이리스트 캐시 빌드 시간이 크게 늘어날 수 있습니다.",

View file

@ -409,5 +409,15 @@
"settings.header.unfinished": "Unfinished", "settings.header.unfinished": "Unfinished",
"remote.web.title": "Cider Remote", "remote.web.title": "Cider Remote",
"remote.web.description": "Scan the QR code to pair your phone up with this Cider instance", "remote.web.description": "Scan the QR code to pair your phone up with this Cider instance",
"share.platform.twitter.tweet": "Listen to {{song}} on Apple Music.\n\n{{url}}\n\n#AppleMusic #Cider",
"share.platform.twitter": "Twitter",
"share.platform.facebook": "Facebook",
"share.platform.reddit": "Reddit",
"share.platform.telegram": "Telegram",
"share.platform.whatsapp": "WhatsApp",
"share.platform.messenger": "Messenger",
"share.platform.email": "Email",
"share.platform.songLink": "Copy with song.link",
"share.platform.clipboard": "Copy Link",
"about.thanks": "Major thanks to the Cider Collective Team and all of our contributors." "about.thanks": "Major thanks to the Cider Collective Team and all of our contributors."
} }

View file

@ -70,10 +70,10 @@
"term.size": "大小", "term.size": "大小",
"term.size.normal": "正常", "term.size.normal": "正常",
"term.size.compact": "緊密", "term.size.compact": "緊密",
"term.enable": "", "term.enable": "啟",
"term.disable": "停用", "term.disable": "關閉",
"term.enabled": "已", "term.enabled": "已啟",
"term.disabled": "已停用", "term.disabled": "已關閉",
"term.connect": "連接", "term.connect": "連接",
"term.connecting": "連接中", "term.connecting": "連接中",
"term.disconnect": "斷開", "term.disconnect": "斷開",
@ -194,6 +194,12 @@
"action.open": "開啟", "action.open": "開啟",
"settings.header.general": "一般", "settings.header.general": "一般",
"settings.header.general.description": "調整 Cider 的一般設定", "settings.header.general.description": "調整 Cider 的一般設定",
"settings.option.general.resumebehavior": "還原行為",
"settings.option.general.resumebehavior.description": "會影響你回到 Cider 應用程式時,恢復歌曲的方式。",
"settings.option.general.resumebehavior.locally": "本機",
"settings.option.general.resumebehavior.locally.description": "Cider 將還原你在這台電腦上的最後一次操作。",
"settings.option.general.resumebehavior.history": "歷史",
"settings.option.general.resumebehavior.history.description": "Cider 將跨裝置將你的整個 Apple Music 歷史記錄中的最後一首歌曲排隊入列。",
"settings.option.general.language.main": "語言", "settings.option.general.language.main": "語言",
"settings.option.general.language.fun": "特殊語言", "settings.option.general.language.fun": "特殊語言",
"settings.option.general.language.unsorted": "未分類", "settings.option.general.language.unsorted": "未分類",
@ -202,6 +208,10 @@
"settings.option.general.updateCider.branch.description": "選擇您要接收 Cider 軟體更新的通道", "settings.option.general.updateCider.branch.description": "選擇您要接收 Cider 軟體更新的通道",
"settings.option.general.updateCider.branch.main": "穩定版(建議)", "settings.option.general.updateCider.branch.main": "穩定版(建議)",
"settings.option.general.updateCider.branch.develop": "開發者測試版(不穩定)", "settings.option.general.updateCider.branch.develop": "開發者測試版(不穩定)",
"settings.notyf.updateCider.update-not-available": "沒有可用的更新",
"settings.notyf.updateCider.update-downloaded": "更新已成功下載,重啟後進行更新",
"settings.notyf.updateCider.update-error": "更新時,發生錯誤",
"settings.notyf.updateCider.update-timeout": "更新超時",
"settings.header.audio": "音訊", "settings.header.audio": "音訊",
"settings.header.audio.description": "調整 Cider 的音訊設定", "settings.header.audio.description": "調整 Cider 的音訊設定",
"settings.option.audio.volumeStep": "音量改變量", "settings.option.audio.volumeStep": "音量改變量",
@ -217,25 +227,32 @@
"settings.header.audio.quality.auto": "自動", "settings.header.audio.quality.auto": "自動",
"settings.option.audio.seamlessTransition": "無間斷播放", "settings.option.audio.seamlessTransition": "無間斷播放",
"settings.option.audio.enableAdvancedFunctionality": "進階音訊功能", "settings.option.audio.enableAdvancedFunctionality": "進階音訊功能",
"settings.option.audio.enableAdvancedFunctionality.description": " AudioContext 將開啟類似音訊平衡和等化器的進階設定。但這並不一定適合每部電腦,可能會發生音樂卡頓。", "settings.option.audio.enableAdvancedFunctionality.description": "啟 AudioContext 將開啟類似音訊平衡和等化器的進階設定。但這並不一定適合每部電腦,可能會發生音樂卡頓。",
"settings.option.audio.audioLab": "Cider 音訊實驗室", "settings.option.audio.audioLab": "Cider 音訊實驗室",
"settings.option.audio.audioLab.description": "包含由 Cider 開發團隊進行的各種音訊改善功能。", "settings.option.audio.audioLab.description": "包含由 Cider 開發團隊進行的各種音訊改善功能。",
"settings.warn.audioLab.withoutAF": "使用 Cider 音訊實驗室需要開啟進階音訊功能才能使用。" , "settings.warn.audioLab.withoutAF": "使用 Cider 音訊實驗室需要開啟進階音訊功能才能使用。" ,
"settings.option.audio.enableAdvancedFunctionality.analogWarmth": "模擬溫暖", "settings.option.audio.enableAdvancedFunctionality.analogWarmth": "模擬溫暖",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "以 Korg Nutube 6P1 為設計的模擬溫暖", "settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "以 Korg Nutube 6P1 為設計的模擬溫暖",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "改變模擬溫暖模組處理的強度。", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "改變模擬溫暖模組處理的強度。",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "溫和", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "溫和",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "溫暖", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "溫暖",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 數位增強音訊處理™️", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 數位增強音訊處理™️",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "將欺騙您的大腦讓您感受到近似保真壓縮的音質。| 由 Maikiwi 設計", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "將欺騙您的大腦讓您感受到近似保真壓縮的音質。| 由 Maikiwi 設計",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "數位增強音訊處理設定", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "數位增強音訊處理設定",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "將更改音訊處理的激進/振奮程度(增強選項有可能會引起雜訊)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "將更改音訊處理的激進/振奮程度(增強選項有可能會引起雜訊)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "標準", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "標準",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "增強", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "增強",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "音訊平衡", "settings.option.audio.enableAdvancedFunctionality.audioNormalization": "音訊平衡",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "將平衡輕柔和響亮的歌曲,建立更統一舒適的聆聽體驗。", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "將平衡輕柔和響亮的歌曲,建立更統一舒適的聆聽體驗。",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "空間音訊", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "空間音訊",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "將音訊進行空間化處理來製造一個更立體的聆聽體驗(註:此功能不是官方的杜比全景聲)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "將音訊進行空間化處理來製造一個更立體的聆聽體驗(註:此功能不是官方的杜比全景聲)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cider 空間音訊效果",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description": "預先調整空間音訊效果,關閉空間音訊可自訂設定。但必須先開啟空間音訊才可以做設定。",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile": "Cider 空間音訊配置檔案",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description": "變更空間音訊的配置檔案,需要重新啟動應用程式。",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard": "標準",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile": "發燒友",
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "空間音訊無法與 CAP 相容,請關閉 CAP 在進行操作。",
"settings.header.visual": "外觀", "settings.header.visual": "外觀",
"settings.header.visual.description": "調整 Cider 的外觀", "settings.header.visual.description": "調整 Cider 的外觀",
"settings.option.visual.windowBackgroundStyle": "視窗背景樣式", "settings.option.visual.windowBackgroundStyle": "視窗背景樣式",
@ -260,11 +277,18 @@
"settings.header.visual.theme": "主題", "settings.header.visual.theme": "主題",
"settings.option.visual.theme.github.download": "從 GitHub 網址安裝", "settings.option.visual.theme.github.download": "從 GitHub 網址安裝",
"settings.option.visual.theme.github.explore": "探索 GitHub 上的主題", "settings.option.visual.theme.github.explore": "探索 GitHub 上的主題",
"settings.option.visual.plugin.github.explore": "探索 GitHub 插件",
"settings.header.visual.plugin.github.page": "來自 GitHub 的插件",
"settings.prompt.visual.theme.github.URL": "輸入你要安裝的主題網址", "settings.prompt.visual.theme.github.URL": "輸入你要安裝的主題網址",
"settings.notyf.visual.theme.install.success": "主題成功安裝", "settings.notyf.visual.theme.install.success": "主題成功安裝",
"settings.notyf.visual.theme.install.error": "主題安裝失敗", "settings.notyf.visual.theme.install.error": "主題安裝失敗",
"settings.header.visual.plugin": "套件",
"settings.option.visual.plugin.github.download": "從 GitHub 網址安裝",
"settings.option.visual.plugin.github.explore": "探索 GitHub 套件",
"settings.header.visual.plugin.github.page": "來自 GitHub 的套件",
"settings.option.visual.plugin.github.install.confirm": "你確定要安裝 {{ repo }}",
"settings.prompt.visual.plugin.github.URL": "輸入你要安裝的套件網址",
"settings.prompt.visual.plugin.github.success": "套件成功安裝,按「確認」以重新啟動 Cider",
"settings.notyf.visual.plugin.install.success": "套件成功安裝",
"settings.notyf.visual.plugin.install.error": "套件安裝失敗",
"settings.option.visual.theme.default": "預設", "settings.option.visual.theme.default": "預設",
"settings.option.visual.theme.dark": "午夜黑", "settings.option.visual.theme.dark": "午夜黑",
"settings.option.visual.showPersonalInfo": "顯示個人檔案", "settings.option.visual.showPersonalInfo": "顯示個人檔案",
@ -274,8 +298,8 @@
"settings.option.window.openOnStartup.hidden": "啟動時,自動隱藏至系統列", "settings.option.window.openOnStartup.hidden": "啟動時,自動隱藏至系統列",
"settings.header.lyrics": "歌詞", "settings.header.lyrics": "歌詞",
"settings.header.lyrics.description": "調整 Cider 的歌詞設定", "settings.header.lyrics.description": "調整 Cider 的歌詞設定",
"settings.option.lyrics.enableMusixmatch": " Musixmatch 歌詞", "settings.option.lyrics.enableMusixmatch": "啟 Musixmatch 歌詞",
"settings.option.lyrics.enableMusixmatchKaraoke": "K歌模式僅限Musixmatch", "settings.option.lyrics.enableMusixmatchKaraoke": "啟K歌模式僅限Musixmatch",
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌詞語言偏好", "settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌詞語言偏好",
"settings.option.lyrics.enableYoutubeLyrics": "播放 MV 時使用 YouTube 歌詞", "settings.option.lyrics.enableYoutubeLyrics": "播放 MV 時使用 YouTube 歌詞",
"settings.header.connectivity": "外部連接", "settings.header.connectivity": "外部連接",
@ -287,7 +311,7 @@
"settings.option.connectivity.discordRPC.clearOnPause": "暫停時清除 Discord 動態", "settings.option.connectivity.discordRPC.clearOnPause": "暫停時清除 Discord 動態",
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling 記錄", "settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling 記錄",
"settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble 延遲 (%)", "settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble 延遲 (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": " LastFM 目前聆聽", "settings.option.connectivity.lastfmScrobble.nowPlaying": "啟 LastFM 目前聆聽",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "從歌名中移除客串藝人 (LastFM)", "settings.option.connectivity.lastfmScrobble.removeFeatured": "從歌名中移除客串藝人 (LastFM)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "不記錄單曲循環 (LastFM)", "settings.option.connectivity.lastfmScrobble.filterLoop": "不記錄單曲循環 (LastFM)",
"settings.header.debug": "除錯", "settings.header.debug": "除錯",
@ -295,6 +319,8 @@
"settings.option.debug.openAppData": "打開 Cider 資料夾", "settings.option.debug.openAppData": "打開 Cider 資料夾",
"settings.header.experimental": "實驗性功能", "settings.header.experimental": "實驗性功能",
"settings.header.experimental.description": "調整 Cider 的實驗性功能", "settings.header.experimental.description": "調整 Cider 的實驗性功能",
"settings.option.experimental.unknownPlugin": "未知來源",
"settings.option.experimental.unknownPlugin.description": "允許從 Cider 來源以外的 repo 安裝套件",
"settings.option.experimental.compactUI": "使用緊密的介面設計", "settings.option.experimental.compactUI": "使用緊密的介面設計",
"settings.option.experimental.closeButtonBehaviour": "關閉按鈕操作", "settings.option.experimental.closeButtonBehaviour": "關閉按鈕操作",
"settings.option.window.close_button_hide": "關閉按鈕將 Cider 隱藏至系統列", "settings.option.window.close_button_hide": "關閉按鈕將 Cider 隱藏至系統列",
@ -302,7 +328,7 @@
"settings.option.advanced.playlistTrackMapping": "播放列表追蹤映射", "settings.option.advanced.playlistTrackMapping": "播放列表追蹤映射",
"settings.option.advanced.playlistTrackMapping.description": "開啟對播放列表的深度掃描,以確定歌曲在哪些播放列表中。但播放列表快取時間會顯著增加。", "settings.option.advanced.playlistTrackMapping.description": "開啟對播放列表的深度掃描,以確定歌曲在哪些播放列表中。但播放列表快取時間會顯著增加。",
"settings.option.visual.transparent": "透明視窗框架", "settings.option.visual.transparent": "透明視窗框架",
"settings.option.visual.transparent.description": "透明視窗框架(需要主題支援,且須重新啟動)。", "settings.option.visual.transparent.description": "需主題有支援透明框架,且須重新啟動才會套用。",
"spatial.notTurnedOn": "空間音訊目前是關閉狀態,請先開啟再使用。", "spatial.notTurnedOn": "空間音訊目前是關閉狀態,請先開啟再使用。",
"spatial.spatialProperties": "空間音訊屬性設定", "spatial.spatialProperties": "空間音訊屬性設定",
"spatial.width": "寬度", "spatial.width": "寬度",
@ -324,6 +350,6 @@
"spatial.audioSource": "音訊來源", "spatial.audioSource": "音訊來源",
"settings.header.unfinished": "未開發完成的功能", "settings.header.unfinished": "未開發完成的功能",
"remote.web.title": "Cider 遠端操控", "remote.web.title": "Cider 遠端操控",
"remote.web.description": "掃描以下的行動條碼以操控 Cider", "remote.web.description": "掃描以下 QR Code 即可操控 Cider",
"about.thanks": "著重感謝 Cider Collective 的成員以及所有為項目付出的貢獻者。" "about.thanks": "著重感謝 Cider Collective 的成員以及所有為項目付出的貢獻者。"
} }

View file

@ -2324,7 +2324,7 @@ const app = new Vue({
try { try {
if (app.showingPlaylist.relationships.tracks.data.length === 0) return "" if (app.showingPlaylist.relationships.tracks.data.length === 0) return ""
const timeInSeconds = Math.round([].concat(...app.showingPlaylist.relationships.tracks.data).reduce((a, {attributes: {durationInMillis}}) => a + durationInMillis, 0) / 1000); const timeInSeconds = Math.round([].concat(...app.showingPlaylist.relationships.tracks.data).reduce((a, {attributes: {durationInMillis}}) => a + durationInMillis, 0) / 1000);
return `${app.showingPlaylist.relationships.tracks.data.length} ${app.getLz(`term.${app.showingPlaylist.relationships.tracks.data.length === 1 ? "track" : "tracks"}`)}, ${app.convertTime(timeInSeconds, 'long')}` return `${app.showingPlaylist.relationships.tracks.data.length} ${app.getLz("term.track", {"count": app.showingPlaylist.relationships.tracks.data.length})}, ${app.convertTime(timeInSeconds, 'long')}`
} catch (err) { } catch (err) {
return "" return ""
} }

View file

@ -40,7 +40,7 @@
<mediaitem-square :item="artistData.relationships.artist.data[0]"></mediaitem-square> <mediaitem-square :item="artistData.relationships.artist.data[0]"></mediaitem-square>
</div> </div>
<div class="card-footer"> <div class="card-footer">
{{ artistData.attributes.listenTimeInMinutes }} {{$root.getLz('term.time.minutes')}}<br> {{ artistData.attributes.listenTimeInMinutes }} {{$root.getLz('term.time.minutes', {'count': artistData.attributes.listenTimeInMinutes})}}<br>
{{$root.getLz('term.listenedTo')}} {{ artistData.attributes.playCount }} {{$root.getLz('term.times')}} {{$root.getLz('term.listenedTo')}} {{ artistData.attributes.playCount }} {{$root.getLz('term.times')}}
</div> </div>
</div> </div>
@ -55,7 +55,7 @@
<mediaitem-square :item="albumData.relationships.album.data[0]"></mediaitem-square> <mediaitem-square :item="albumData.relationships.album.data[0]"></mediaitem-square>
</div> </div>
<div class="card-footer"> <div class="card-footer">
{{ albumData.attributes.listenTimeInMinutes }} {{$root.getLz('term.time.minutes')}}<br> {{ albumData.attributes.listenTimeInMinutes }} {{$root.getLz('term.time.minutes', {'count': albumData.attributes.listenTimeInMinutes})}}<br>
{{ albumData.attributes.playCount }} {{$root.getLz('term.plays')}} {{ albumData.attributes.playCount }} {{$root.getLz('term.plays')}}
</div> </div>
</div> </div>