Merge remote-tracking branch 'upstream/develop' into develop
|
@ -1,11 +1,19 @@
|
||||||
version: 2.1
|
version: 2.1
|
||||||
|
orbs: # adds orbs to your configuration
|
||||||
|
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
|
||||||
docker:
|
docker:
|
||||||
- image: circleci/node:16-browsers
|
- image: circleci/node:16
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
|
- run:
|
||||||
|
name: Set App Version
|
||||||
|
command: echo "export APP_VERSION=$(grep '"version":.*' package.json | cut -d '"' -f 4 | head -1)" >> $BASH_ENV
|
||||||
- run:
|
- run:
|
||||||
name: Update Package Managers
|
name: Update Package Managers
|
||||||
command: sudo npm update -g npm yarn
|
command: sudo npm update -g npm yarn
|
||||||
|
@ -15,42 +23,44 @@ jobs:
|
||||||
- yarn-packages-{{ checksum "cider-yarn.lock" }}
|
- yarn-packages-{{ checksum "cider-yarn.lock" }}
|
||||||
- run:
|
- run:
|
||||||
name: Install Dependencies
|
name: Install Dependencies
|
||||||
command: yarn install --cache-folder ~/.cache/yarn
|
command: yarn install --frozen-lockfile --cache-folder ~/.cache/yarn
|
||||||
- save_cache:
|
- save_cache:
|
||||||
name: Save Yarn Package Cache
|
name: Save Yarn Package Cache
|
||||||
key: yarn-packages-{{ checksum "cider-yarn.lock" }}
|
key: yarn-packages-{{ checksum "cider-yarn.lock" }}
|
||||||
paths:
|
paths:
|
||||||
- ~/.cache/yarn
|
- ~/.cache/yarn
|
||||||
- run:
|
|
||||||
name: Install Playwright
|
|
||||||
command: yarn playwright install --with-deps
|
|
||||||
- run:
|
- run:
|
||||||
name: Install system build dependencies
|
name: Install system build dependencies
|
||||||
command: |
|
command: |
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
|
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
|
||||||
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
|
||||||
sudo apt-get install -y dpkg fakeroot wine64
|
sudo apt-get install -y dpkg fakeroot wine64
|
||||||
sudo dpkg --add-architecture i386
|
sudo dpkg --add-architecture i386
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
sudo apt-get install -y wine32
|
sudo apt-get install -y wine32
|
||||||
sudo apt-get install -y x11vnc
|
sudo apt install -y gh
|
||||||
- run:
|
- run:
|
||||||
name: Start X VNC Server
|
name: Fix Versioning and Add Channel
|
||||||
command: x11vnc -forever -nopw -create
|
command: yarn circle:script
|
||||||
background: true
|
|
||||||
#- run:
|
|
||||||
#name: Base Functionality Testing
|
|
||||||
#command: yarn test
|
|
||||||
- store_test_results:
|
|
||||||
path: test-results
|
|
||||||
- run:
|
- run:
|
||||||
name: Append Commit BuildID to Version
|
name: TypeScript Compile
|
||||||
command: yarn circle:append-bid
|
command: yarn build
|
||||||
- run:
|
- run:
|
||||||
name: Generate Builds (Linux)
|
name: Generate Builds (Linux)
|
||||||
command: yarn dist -l -p never
|
command: yarn electron-builder -l -p never
|
||||||
|
post-steps:
|
||||||
|
- jira/notify
|
||||||
- run:
|
- run:
|
||||||
name: Generate Builds (Windows)
|
name: Generate Builds (Windows)
|
||||||
command: yarn dist -w --x64 -p never
|
command: yarn electron-builder -w --x64 -p never
|
||||||
|
post-steps:
|
||||||
|
- jira/notify
|
||||||
|
- run:
|
||||||
|
name: Generate Builds (Winget)
|
||||||
|
command: yarn electron-builder --win -c winget.json -p never
|
||||||
|
post-steps:
|
||||||
|
- jira/notify
|
||||||
- run:
|
- run:
|
||||||
name: Move Build Files
|
name: Move Build Files
|
||||||
command: |
|
command: |
|
||||||
|
@ -60,7 +70,10 @@ jobs:
|
||||||
mv ~/Cider/dist/*.AppImage ~/Cider/dist/artifacts
|
mv ~/Cider/dist/*.AppImage ~/Cider/dist/artifacts
|
||||||
mv ~/Cider/dist/*.snap ~/Cider/dist/artifacts
|
mv ~/Cider/dist/*.snap ~/Cider/dist/artifacts
|
||||||
mv ~/Cider/dist/*.yml ~/Cider/dist/artifacts
|
mv ~/Cider/dist/*.yml ~/Cider/dist/artifacts
|
||||||
|
mv ~/Cider/dist/*.blockmap ~/Cider/dist/artifacts
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: ~/Cider/dist/artifacts
|
path: ~/Cider/dist/artifacts
|
||||||
|
- run:
|
||||||
|
name: Publish Release
|
||||||
|
command: |
|
||||||
|
gh release create "v${APP_VERSION}.${CIRCLE_BUILD_NUM}" --title "Cider Version ${APP_VERSION} - Build ${CIRCLE_BUILD_NUM} (${CIRCLE_BRANCH})" --generate-notes -R ciderapp/cider-releases ~/Cider/dist/artifacts/*.deb ~/Cider/dist/artifacts/*.AppImage ~/Cider/dist/artifacts/*.snap ~/Cider/dist/artifacts/*.exe ~/Cider/dist/artifacts/*.yml ~/Cider/dist/artifacts/*.blockmap
|
||||||
|
|
146
.github/workflows/build-macos.yml
vendored
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
# For most projects, this workflow file will not need changing; you simply need
|
||||||
|
# to commit it to your repository.
|
||||||
|
#
|
||||||
|
# You may wish to alter this file to override the set of languages analyzed,
|
||||||
|
# or to provide custom queries or build logic.
|
||||||
|
#
|
||||||
|
# ******** NOTE ********
|
||||||
|
# We have attempted to detect the languages in your repository. Please check
|
||||||
|
# the `language` matrix defined below to confirm you have the correct set of
|
||||||
|
# supported CodeQL languages.
|
||||||
|
#
|
||||||
|
name: "macOS build"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ develop ]
|
||||||
|
paths-ignore:
|
||||||
|
- 'README.md'
|
||||||
|
- 'SECURITY.md'
|
||||||
|
- '.gitmodules'
|
||||||
|
- '.gitignore'
|
||||||
|
- 'LICENSE'
|
||||||
|
schedule:
|
||||||
|
- cron: '44 20 * * 1'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analyze:
|
||||||
|
name: macOS build
|
||||||
|
runs-on: macos-11
|
||||||
|
permissions:
|
||||||
|
actions: read
|
||||||
|
contents: write
|
||||||
|
security-events: write
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
language: [ 'javascript' ]
|
||||||
|
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
||||||
|
# Learn more:
|
||||||
|
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: maxim-lobanov/setup-xcode@v1
|
||||||
|
with:
|
||||||
|
xcode-version: '12.4'
|
||||||
|
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
# Initializes the CodeQL tools for scanning.
|
||||||
|
# - name: Initialize CodeQL
|
||||||
|
# uses: github/codeql-action/init@v1
|
||||||
|
# with:
|
||||||
|
# languages: ${{ matrix.language }}
|
||||||
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
|
# By default, queries listed here will override any specified in a config file.
|
||||||
|
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||||
|
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||||
|
|
||||||
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
|
# 📚 https://git.io/JvXDl
|
||||||
|
|
||||||
|
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||||
|
# and modify them (or add more) to build your code if your project
|
||||||
|
# uses a compiled language
|
||||||
|
|
||||||
|
# - name : env
|
||||||
|
# run: |
|
||||||
|
# export EVS_ACCOUNT_NAME=${{ secrets.EVS_ACCOUNT_NAME}} && export EVS_PASSWD=${{ secrets.EVS_PASSWD }}
|
||||||
|
# export CSC_LINK=${{ secrets.CSC_LINK }} && export CSC_KEY_PASSWORD=${{ secrets.CSC_KEY_PASSWORD }}
|
||||||
|
# export APPLEID=${{ secrets.APPLEID }} && export APPLEIDPASS=${{ secrets.APPLEIDPASS }}
|
||||||
|
|
||||||
|
- name: Sign in to EVS
|
||||||
|
run: |
|
||||||
|
python3 -m pip install --upgrade castlabs-evs
|
||||||
|
python3 -m castlabs_evs.account refresh -A ${{ secrets.EVS_ACCOUNT_NAME }} -P ${{ secrets.EVS_PASSWD }}
|
||||||
|
|
||||||
|
- name : Build
|
||||||
|
env:
|
||||||
|
CSC_LINK: ${{ secrets.CSC_LINK }}
|
||||||
|
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
|
||||||
|
APPLEID: ${{ secrets.APPLEID }}
|
||||||
|
APPLEIDPASS: ${{ secrets.APPLEIDPASS }}
|
||||||
|
APPLE_ID: ${{ secrets.APPLEID }}
|
||||||
|
APPLE_ID_PASSWORD: ${{ secrets.APPLEIDPASS }}
|
||||||
|
PSC_NAME: ${{ secrets.PSC_NAME }}
|
||||||
|
DEVELOPER_DIR: /Applications/Xcode_12.4.app/Contents/Developer
|
||||||
|
run: |
|
||||||
|
rm cider-yarn.lock || true
|
||||||
|
xcodebuild -version
|
||||||
|
yarn install
|
||||||
|
cp resources/verror-types node_modules/@types/verror/index.d.ts
|
||||||
|
cp resources/macPackager.js node_modules/app-builder-lib/out/macPackager.js
|
||||||
|
yarn dist:universalNotWorking -p never
|
||||||
|
# - name: Perform CodeQL Analysis
|
||||||
|
# uses: github/codeql-action/analyze@v1
|
||||||
|
|
||||||
|
- name: Add license to dmg
|
||||||
|
run: |
|
||||||
|
npx dmg-license resources/license.json dist/*.dmg
|
||||||
|
|
||||||
|
- name: Import
|
||||||
|
uses: apple-actions/import-codesign-certs@v1
|
||||||
|
with:
|
||||||
|
p12-file-base64: ${{ secrets.CSC_LINK }}
|
||||||
|
p12-password: ${{ secrets.CSC_KEY_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Create PKG manually
|
||||||
|
env:
|
||||||
|
CSC_LINK: ${{ secrets.CSC_LINK }}
|
||||||
|
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
|
||||||
|
APPLEID: ${{ secrets.APPLEID }}
|
||||||
|
APPLEIDPASS: ${{ secrets.APPLEIDPASS }}
|
||||||
|
run: |
|
||||||
|
pkgbuild --component dist/mac-universal/Cider.app --install-location /Applications dist/Cider.pkg --sign ${{ secrets.PSC_NAME }}
|
||||||
|
xcrun altool --notarize-app --primary-bundle-id com.ciderapp.cider -f dist/Cider.pkg --username ${{ secrets.APPLEID }} --password ${{ secrets.APPLEIDPASS }}
|
||||||
|
sleep 5m
|
||||||
|
xcrun stapler staple dist/Cider.pkg || true
|
||||||
|
mv dist/*.dmg dist/Cider.dmg
|
||||||
|
|
||||||
|
- name: Upload a Build Artifact
|
||||||
|
uses: actions/upload-artifact@v2.2.3
|
||||||
|
with:
|
||||||
|
# Artifact name
|
||||||
|
name: macOS
|
||||||
|
# A file, directory or wildcard pattern that describes what to upload
|
||||||
|
path: |
|
||||||
|
dist/*.dmg
|
||||||
|
dist/*.pkg
|
||||||
|
# The desired behavior if no files are found using the provided path.
|
||||||
|
- name: Release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
files: |
|
||||||
|
dist/Cider.dmg
|
||||||
|
dist/Cider.pkg
|
||||||
|
body: signed Develop MacOS Builds
|
||||||
|
name: macOS builds
|
||||||
|
tag_name: macos-beta
|
||||||
|
prerelease : true
|
||||||
|
generate_release_notes: true
|
||||||
|
append_body : false
|
||||||
|
fail_on_unmatched_files: false
|
7
.gitignore
vendored
|
@ -318,3 +318,10 @@ keys.sh
|
||||||
|
|
||||||
package-lock.json
|
package-lock.json
|
||||||
yarn.lock
|
yarn.lock
|
||||||
|
resources/b64.txt
|
||||||
|
|
||||||
|
|
||||||
|
savedconfig/cider-config.json
|
||||||
|
savedconfig/config.json
|
||||||
|
savedconfig/session.json
|
||||||
|
savedconfig/window-state.json
|
||||||
|
|
BIN
Assets/Install On Cider/install on cider.afdesign
Normal file
61
Assets/Install On Cider/install on cider.svg
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 183 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<path d="M0,6C0,2.686 2.686,0 6,0L177,0C180.314,0 183,2.686 183,6L183,34C183,37.314 180.314,40 177,40L6,40C2.686,40 0,37.314 0,34L0,6Z" style="fill:url(#_Linear1);fill-rule:nonzero;"/>
|
||||||
|
<g transform="matrix(1.42013,0,0,1.42013,-13.8213,-1.00475)">
|
||||||
|
<g transform="matrix(12,0,0,12,41.6776,19.3396)">
|
||||||
|
<rect x="0.063" y="-0.727" width="0.154" height="0.727" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(12,0,0,12,45.0441,19.3396)">
|
||||||
|
<path d="M0.212,-0.315C0.212,-0.386 0.254,-0.427 0.315,-0.427C0.376,-0.427 0.412,-0.387 0.412,-0.32L0.412,-0L0.563,-0L0.563,-0.347C0.563,-0.474 0.489,-0.553 0.375,-0.553C0.294,-0.553 0.235,-0.513 0.211,-0.449L0.205,-0.449L0.205,-0.545L0.06,-0.545L0.06,-0L0.212,-0L0.212,-0.315Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(12,0,0,12,52.5058,19.3396)">
|
||||||
|
<path d="M0.514,-0.39C0.501,-0.49 0.42,-0.553 0.282,-0.553C0.142,-0.553 0.05,-0.488 0.051,-0.383C0.05,-0.301 0.102,-0.248 0.208,-0.227L0.303,-0.208C0.35,-0.199 0.372,-0.181 0.373,-0.154C0.372,-0.121 0.337,-0.098 0.284,-0.098C0.23,-0.098 0.194,-0.121 0.185,-0.166L0.036,-0.158C0.05,-0.054 0.139,0.011 0.284,0.011C0.425,0.011 0.526,-0.061 0.527,-0.169C0.526,-0.248 0.475,-0.295 0.369,-0.317L0.27,-0.337C0.219,-0.348 0.201,-0.365 0.201,-0.391C0.201,-0.424 0.238,-0.445 0.284,-0.445C0.337,-0.445 0.368,-0.417 0.376,-0.381L0.514,-0.39Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(12,0,0,12,59.2472,19.3396)">
|
||||||
|
<path d="M0.35,-0.545L0.248,-0.545L0.248,-0.676L0.097,-0.676L0.097,-0.545L0.022,-0.545L0.022,-0.432L0.097,-0.432L0.097,-0.148C0.096,-0.041 0.169,0.012 0.278,0.007C0.317,0.006 0.345,-0.002 0.36,-0.007L0.337,-0.119C0.329,-0.118 0.313,-0.114 0.299,-0.114C0.269,-0.114 0.248,-0.126 0.248,-0.168L0.248,-0.432L0.35,-0.432L0.35,-0.545Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(12,0,0,12,63.9092,19.3396)">
|
||||||
|
<path d="M0.216,0.01C0.297,0.01 0.349,-0.025 0.375,-0.076L0.38,-0.076L0.38,-0L0.523,-0L0.523,-0.368C0.523,-0.498 0.413,-0.553 0.292,-0.553C0.161,-0.553 0.075,-0.49 0.054,-0.391L0.194,-0.379C0.204,-0.415 0.237,-0.442 0.291,-0.442C0.342,-0.442 0.372,-0.416 0.372,-0.371L0.372,-0.369C0.372,-0.334 0.335,-0.33 0.24,-0.32C0.132,-0.31 0.035,-0.274 0.035,-0.152C0.035,-0.044 0.112,0.01 0.216,0.01ZM0.259,-0.094C0.213,-0.094 0.179,-0.116 0.179,-0.157C0.179,-0.2 0.214,-0.221 0.268,-0.228C0.301,-0.233 0.355,-0.241 0.373,-0.253L0.373,-0.195C0.373,-0.138 0.326,-0.094 0.259,-0.094Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(12,0,0,12,70.8722,19.3396)">
|
||||||
|
<rect x="0.06" y="-0.727" width="0.151" height="0.727" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(12,0,0,12,74.1364,19.3396)">
|
||||||
|
<rect x="0.06" y="-0.727" width="0.151" height="0.727" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(12,0,0,12,80.1833,19.3396)">
|
||||||
|
<path d="M0.307,0.011C0.472,0.011 0.575,-0.103 0.575,-0.271C0.575,-0.44 0.472,-0.553 0.307,-0.553C0.141,-0.553 0.038,-0.44 0.038,-0.271C0.038,-0.103 0.141,0.011 0.307,0.011ZM0.308,-0.107C0.231,-0.107 0.192,-0.176 0.192,-0.272C0.192,-0.367 0.231,-0.437 0.308,-0.437C0.382,-0.437 0.422,-0.367 0.422,-0.272C0.422,-0.176 0.382,-0.107 0.308,-0.107Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(12,0,0,12,87.5469,19.3396)">
|
||||||
|
<path d="M0.212,-0.315C0.212,-0.386 0.254,-0.427 0.315,-0.427C0.376,-0.427 0.412,-0.387 0.412,-0.32L0.412,-0L0.563,-0L0.563,-0.347C0.563,-0.474 0.489,-0.553 0.375,-0.553C0.294,-0.553 0.235,-0.513 0.211,-0.449L0.205,-0.449L0.205,-0.545L0.06,-0.545L0.06,-0L0.212,-0L0.212,-0.315Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(12,0,0,12,97.7913,19.3396)">
|
||||||
|
<path d="M0.705,-0.473C0.685,-0.641 0.558,-0.737 0.389,-0.737C0.197,-0.737 0.05,-0.602 0.05,-0.364C0.05,-0.126 0.195,0.01 0.389,0.01C0.576,0.01 0.688,-0.114 0.705,-0.248L0.549,-0.249C0.535,-0.171 0.474,-0.126 0.392,-0.126C0.281,-0.126 0.206,-0.208 0.206,-0.364C0.206,-0.515 0.28,-0.601 0.393,-0.601C0.477,-0.601 0.538,-0.553 0.549,-0.473L0.705,-0.473Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(12,0,0,12,106.817,19.3396)">
|
||||||
|
<path d="M0.06,-0L0.212,-0L0.212,-0.545L0.06,-0.545L0.06,-0ZM0.136,-0.616C0.181,-0.616 0.218,-0.65 0.218,-0.692C0.218,-0.734 0.181,-0.769 0.136,-0.769C0.092,-0.769 0.055,-0.734 0.055,-0.692C0.055,-0.65 0.092,-0.616 0.136,-0.616Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(12,0,0,12,110.081,19.3396)">
|
||||||
|
<path d="M0.261,0.009C0.349,0.009 0.395,-0.042 0.416,-0.087L0.423,-0.087L0.423,-0L0.572,-0L0.572,-0.727L0.421,-0.727L0.421,-0.454L0.416,-0.454C0.396,-0.498 0.352,-0.553 0.261,-0.553C0.141,-0.553 0.04,-0.46 0.04,-0.272C0.04,-0.089 0.137,0.009 0.261,0.009ZM0.309,-0.112C0.235,-0.112 0.195,-0.178 0.195,-0.273C0.195,-0.367 0.234,-0.432 0.309,-0.432C0.383,-0.432 0.424,-0.37 0.424,-0.273C0.424,-0.175 0.382,-0.112 0.309,-0.112Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(12,0,0,12,117.705,19.3396)">
|
||||||
|
<path d="M0.309,0.011C0.444,0.011 0.535,-0.055 0.556,-0.156L0.416,-0.165C0.401,-0.124 0.362,-0.102 0.311,-0.102C0.236,-0.102 0.188,-0.152 0.188,-0.234L0.188,-0.234L0.559,-0.234L0.559,-0.276C0.559,-0.461 0.447,-0.553 0.303,-0.553C0.142,-0.553 0.038,-0.439 0.038,-0.27C0.038,-0.097 0.141,0.011 0.309,0.011ZM0.188,-0.328C0.191,-0.39 0.238,-0.44 0.305,-0.44C0.371,-0.44 0.417,-0.393 0.417,-0.328L0.188,-0.328Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(12,0,0,12,124.876,19.3396)">
|
||||||
|
<path d="M0.06,-0L0.212,-0L0.212,-0.309C0.212,-0.376 0.261,-0.422 0.327,-0.422C0.348,-0.422 0.377,-0.418 0.391,-0.414L0.391,-0.548C0.378,-0.551 0.359,-0.553 0.344,-0.553C0.283,-0.553 0.233,-0.518 0.213,-0.45L0.207,-0.45L0.207,-0.545L0.06,-0.545L0.06,-0Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(1,0,0,1,-10,-9.91057)">
|
||||||
|
<circle cx="34" cy="30" r="10" style="fill:rgb(15,15,15);"/>
|
||||||
|
</g>
|
||||||
|
<g id="Release.svg" transform="matrix(0.0257787,0,0,0.0257787,24.0003,20)">
|
||||||
|
<g transform="matrix(1,0,0,1,-501,-500)">
|
||||||
|
<path d="M501,21C765.367,21 980,235.633 980,500C980,764.367 765.367,979 501,979C236.633,979 22,764.367 22,500C22,235.633 236.633,21 501,21ZM501,169C683.684,169 832,317.316 832,500C832,682.684 683.684,831 501,831C318.316,831 170,682.684 170,500C170,317.316 318.316,169 501,169Z" style="fill:rgb(255,38,84);"/>
|
||||||
|
<path d="M501,224C653.053,224 776.5,347.447 776.5,499.5C776.5,651.553 653.053,775 501,775C348.947,775 225.5,651.553 225.5,499.5C225.5,347.447 348.947,224 501,224ZM589.165,492.207C595.163,495.672 595.163,504.328 589.165,507.793L439.502,594.256C433.502,597.722 426,593.392 426,586.463L426,413.537C426,406.608 433.502,402.278 439.502,405.744L589.165,492.207Z" style="fill:rgb(255,38,84);"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-155,37.5,-37.5,-155,181,-9.33524e-07)"><stop offset="0" style="stop-color:rgb(255,38,84);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(64,38,84);stop-opacity:1"/></linearGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 7.8 KiB |
10
README.md
|
@ -1,12 +1,12 @@
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="./resources/banner.png" width="80%" height="60%" alt="Banner"><br><br>
|
<img src="./resources/banner.png" width="80%" height="60%" alt="Banner"><br><br>
|
||||||
<img src="https://img.shields.io/github/release/ciderapp/Cider.svg?style=flat&label=Latest%20Release" alt="GitHub Releases"/>
|
|
||||||
<img src="https://img.shields.io/github/stars/ciderapp/Cider?label=Stars" alt="GitHub Stars"/>
|
<img src="https://img.shields.io/github/stars/ciderapp/Cider?label=Stars" alt="GitHub Stars"/>
|
||||||
<img src="https://img.shields.io/github/forks/ciderapp/Cider?label=Forks" alt="GitHub Forks"/>
|
<img src="https://img.shields.io/github/forks/ciderapp/Cider?label=Forks" alt="GitHub Forks"/>
|
||||||
<img src="https://img.shields.io/github/downloads/ciderapp/Cider/total.svg?color=23B14D&label=Downloads" alt="GitHub Downloads"/>
|
<a title="Crowdin" target="_blank" href="https://crowdin.com/project/cider-music"><img src="https://badges.crowdin.net/cider-music/localized.svg"></a>
|
||||||
<br>
|
<br>
|
||||||
<a target="_blank" href="https://ko-fi.com/cryptofyre"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-donate-B48C69" alt="Buy Me A Coffee"/></a>
|
<a target="_blank" href="https://ko-fi.com/cryptofyre"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-donate-B48C69?logo=Ko-fi&logoColor=FFFFFF" alt="Buy Me A Coffee"/></a>
|
||||||
<a target="_blank" href="https://opencollective.com/ciderapp"><img src="https://img.shields.io/opencollective/all/ciderapp?color=%237FADF2&label=Backers%20and%20Sponsors&logo=opencollective" alt="Open Collective"/></a>
|
<a target="_blank" href="https://opencollective.com/ciderapp"><img src="https://img.shields.io/opencollective/all/ciderapp?color=%237FADF2&label=Backers%20and%20Sponsors&logo=opencollective" alt="Open Collective"/></a>
|
||||||
|
<a target="_blank" href="https://github.com/sponsors/ciderapp"><img src="https://img.shields.io/github/sponsors/ciderapp?color=C96198&label=GitHub%20Sponsors&logo=GitHub" alt="GitHub Sponsor"/></a>
|
||||||
<br>
|
<br>
|
||||||
<a target="_blank" href="https://discord.gg/applemusic"><img src="https://img.shields.io/discord/843954443845238864?label=Discord&color=5865F2&logo=discord&logoColor=white&style=flat" alt="Discord"/></a>
|
<a target="_blank" href="https://discord.gg/applemusic"><img src="https://img.shields.io/discord/843954443845238864?label=Discord&color=5865F2&logo=discord&logoColor=white&style=flat" alt="Discord"/></a>
|
||||||
<a target="_blank" href="https://twitter.com/UseCider"><img src="https://img.shields.io/twitter/follow/UseCider?label=Twitter&color=%231DA1F2&logo=twitter&style=flat" alt="Twitter"/></a>
|
<a target="_blank" href="https://twitter.com/UseCider"><img src="https://img.shields.io/twitter/follow/UseCider?label=Twitter&color=%231DA1F2&logo=twitter&style=flat" alt="Twitter"/></a>
|
||||||
|
@ -28,6 +28,8 @@
|
||||||
|
|
||||||
[](https://winstall.app/apps/CiderCollective.Cider.Nightly)
|
[](https://winstall.app/apps/CiderCollective.Cider.Nightly)
|
||||||
|
|
||||||
|
[](https://flathub.org/apps/details/sh.cider.Cider)
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|
||||||
[](https://winstall.app/apps/cryptofyre.AppleMusicElectron)
|
[](https://winstall.app/apps/cryptofyre.AppleMusicElectron)
|
||||||
|
@ -36,6 +38,8 @@
|
||||||
-->
|
-->
|
||||||
[](https://aur.archlinux.org/packages/cider)
|
[](https://aur.archlinux.org/packages/cider)
|
||||||
|
|
||||||
|
[](https://flathub.org/apps/details/sh.cider.Cider)
|
||||||
|
|
||||||
### Compiling and Configuration
|
### Compiling and Configuration
|
||||||
For more information surrounding configuration, compiling and other developer documentation, see the [compilation docs](https://cider.sh/compile.html).
|
For more information surrounding configuration, compiling and other developer documentation, see the [compilation docs](https://cider.sh/compile.html).
|
||||||
|
|
||||||
|
|
1755
cider-yarn.lock
3
crowdin.yml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
files:
|
||||||
|
- source: /src/i18n/source/
|
||||||
|
translation: /src/i18n/%locale_with_underscore%.json
|
|
@ -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
|
||||||
|
|
661
license.txt
Normal file
|
@ -0,0 +1,661 @@
|
||||||
|
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 19 November 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU Affero General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works, specifically designed to ensure
|
||||||
|
cooperation with the community in the case of network server software.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
our General Public Licenses are intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
Developers that use our General Public Licenses protect your rights
|
||||||
|
with two steps: (1) assert copyright on the software, and (2) offer
|
||||||
|
you this License which gives you legal permission to copy, distribute
|
||||||
|
and/or modify the software.
|
||||||
|
|
||||||
|
A secondary benefit of defending all users' freedom is that
|
||||||
|
improvements made in alternate versions of the program, if they
|
||||||
|
receive widespread use, become available for other developers to
|
||||||
|
incorporate. Many developers of free software are heartened and
|
||||||
|
encouraged by the resulting cooperation. However, in the case of
|
||||||
|
software used on network servers, this result may fail to come about.
|
||||||
|
The GNU General Public License permits making a modified version and
|
||||||
|
letting the public access it on a server without ever releasing its
|
||||||
|
source code to the public.
|
||||||
|
|
||||||
|
The GNU Affero General Public License is designed specifically to
|
||||||
|
ensure that, in such cases, the modified source code becomes available
|
||||||
|
to the community. It requires the operator of a network server to
|
||||||
|
provide the source code of the modified version running there to the
|
||||||
|
users of that server. Therefore, public use of a modified version, on
|
||||||
|
a publicly accessible server, gives the public access to the source
|
||||||
|
code of the modified version.
|
||||||
|
|
||||||
|
An older license, called the Affero General Public License and
|
||||||
|
published by Affero, was designed to accomplish similar goals. This is
|
||||||
|
a different license, not a version of the Affero GPL, but Affero has
|
||||||
|
released a new version of the Affero GPL which permits relicensing under
|
||||||
|
this license.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU Affero General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Remote Network Interaction; Use with the GNU General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, if you modify the
|
||||||
|
Program, your modified version must prominently offer all users
|
||||||
|
interacting with it remotely through a computer network (if your version
|
||||||
|
supports such interaction) an opportunity to receive the Corresponding
|
||||||
|
Source of your version by providing access to the Corresponding Source
|
||||||
|
from a network server at no charge, through some standard or customary
|
||||||
|
means of facilitating copying of software. This Corresponding Source
|
||||||
|
shall include the Corresponding Source for any work covered by version 3
|
||||||
|
of the GNU General Public License that is incorporated pursuant to the
|
||||||
|
following paragraph.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the work with which it is combined will remain governed by version
|
||||||
|
3 of the GNU General Public License.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU Affero General Public License from time to time. Such new versions
|
||||||
|
will be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU Affero General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU Affero General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU Affero General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as published
|
||||||
|
by the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If your software can interact with users remotely through a computer
|
||||||
|
network, you should also make sure that it provides a way for users to
|
||||||
|
get its source. For example, if your program is a web application, its
|
||||||
|
interface could display a "Source" link that leads users to an archive
|
||||||
|
of the code. There are many ways you could offer source, and different
|
||||||
|
solutions will be better for different programs; see section 13 for the
|
||||||
|
specific requirements.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU AGPL, see
|
||||||
|
<https://www.gnu.org/licenses/>.
|
78
package.json
|
@ -2,12 +2,12 @@
|
||||||
"name": "cider",
|
"name": "cider",
|
||||||
"applicationId": "Cider",
|
"applicationId": "Cider",
|
||||||
"productName": "Cider",
|
"productName": "Cider",
|
||||||
"version": "1.1.0",
|
"version": "1.3.0",
|
||||||
"description": "A new look into listening and enjoying music in style and performance.",
|
"description": "A new look into listening and enjoying music in style and performance.",
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"main": "./build/index.js",
|
"main": "./build/index.js",
|
||||||
"author": "Cider Collective <cryptofyre@cider.sh> (https://cider.sh)",
|
"author": "Cider Collective <cryptofyre@cider.sh> (https://cider.sh)",
|
||||||
"repository": "https://github.com/ciderapp/Cider.git",
|
"repository": "github:ciderapp/Cider",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/ciderapp/Cider/issues?q=is%3Aopen+is%3Aissue+label%3Abug"
|
"url": "https://github.com/ciderapp/Cider/issues?q=is%3Aopen+is%3Aissue+label%3Abug"
|
||||||
},
|
},
|
||||||
|
@ -16,62 +16,71 @@
|
||||||
"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",
|
||||||
"start:darwin": "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:darwin": "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-renderer": "run-script-os",
|
||||||
|
"start-renderer:win32": "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-renderer:linux": "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-renderer:darwin": "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",
|
||||||
"pack": "electron-builder --dir",
|
"pack": "electron-builder --dir",
|
||||||
"dist": "yarn build && electron-builder",
|
"dist": "yarn build && electron-builder",
|
||||||
"dist:mac": "yarn build && electron-builder --mac --universal",
|
"dist:macarm": "yarn build && electron-builder --mac --arm64",
|
||||||
|
"dist:universalNotWorking": "yarn build && electron-builder --mac --universal",
|
||||||
"dist:all": "yarn build && electron-builder -mwl",
|
"dist:all": "yarn build && electron-builder -mwl",
|
||||||
|
"winget": "yarn build && electron-builder --win -c winget.json",
|
||||||
"msft": "yarn build && electron-builder -c msft-package.json",
|
"msft": "yarn build && electron-builder -c msft-package.json",
|
||||||
"postinstall": "electron-builder install-app-deps",
|
"postinstall": "electron-builder install-app-deps",
|
||||||
"circle:append-bid": "node resources/appendCommitToVersion"
|
"circle:script": "node resources/circle"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/electron": "^2.5.4",
|
"@sentry/electron": "^3.0.2",
|
||||||
"@sentry/integrations": "^6.17.4",
|
"@sentry/integrations": "^6.18.1",
|
||||||
|
"adm-zip": "0.4.10",
|
||||||
|
"castv2-client": "^1.2.0",
|
||||||
|
"chokidar": "^3.5.3",
|
||||||
"discord-rpc": "^4.0.1",
|
"discord-rpc": "^4.0.1",
|
||||||
"ejs": "^3.1.6",
|
"ejs": "^3.1.6",
|
||||||
"electron-fetch": "^1.7.4",
|
"electron-fetch": "^1.7.4",
|
||||||
"electron-log": "^4.4.5",
|
"electron-log": "^4.4.6",
|
||||||
"electron-notarize": "^1.1.1",
|
"electron-notarize": "^1.1.1",
|
||||||
"electron-store": "^8.0.1",
|
"electron-store": "^8.0.1",
|
||||||
"electron-updater": "^4.6.1",
|
"electron-updater": "^4.6.5",
|
||||||
"electron-window-state": "^5.0.3",
|
"electron-window-state": "^5.0.3",
|
||||||
"express": "^4.17.2",
|
"express": "^4.17.3",
|
||||||
"get-port": "^5.1.1",
|
"get-port": "^5.1.1",
|
||||||
"jsonc": "^2.0.0",
|
"jsonc": "^2.0.0",
|
||||||
"lastfmapi": "^0.1.1",
|
"lastfmapi": "^0.1.1",
|
||||||
"mdns-js": "git+https://github.com/bitfocus/node-mdns-js.git",
|
"mdns-js": "git+https://github.com/ciderapp/node-mdns-js.git",
|
||||||
"mpris-service": "^2.1.2",
|
"mpris-service": "^2.1.2",
|
||||||
"music-metadata": "^7.11.4",
|
"music-metadata": "^7.12.1",
|
||||||
"node-gyp": "^8.4.1",
|
"node-gyp": "^8.4.1",
|
||||||
|
"node-ssdp": "^4.0.1",
|
||||||
"qrcode": "^1.5.0",
|
"qrcode": "^1.5.0",
|
||||||
"react": "^17.0.2",
|
"react": "^17.0.2",
|
||||||
"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",
|
||||||
"ws": "^8.4.2",
|
"wallpaper": "5.0.1",
|
||||||
|
"ws": "^8.5.0",
|
||||||
"xml2js": "^0.4.23",
|
"xml2js": "^0.4.23",
|
||||||
"youtube-search-without-api-key": "^1.0.7"
|
"youtube-search-without-api-key": "^1.0.7"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@playwright/test": "^1.18.1",
|
"@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",
|
||||||
"@types/ws": "^8.2.2",
|
"@types/ws": "^8.5.1",
|
||||||
"electron": "git+https://github.com/castlabs/electron-releases.git",
|
"electron": "git+https://github.com/castlabs/electron-releases.git",
|
||||||
"electron-builder": "^22.14.5",
|
"electron-builder": "^22.14.13",
|
||||||
|
"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.18.1",
|
"typescript": "^4.6.2",
|
||||||
"vue-devtools": "^5.1.4",
|
"vue-devtools": "^5.1.4",
|
||||||
"webpack": "~5.65.0"
|
"webpack": "~5.69.1"
|
||||||
},
|
},
|
||||||
"fileAssociations": [
|
"fileAssociations": [
|
||||||
{
|
{
|
||||||
|
@ -147,7 +156,31 @@
|
||||||
"perMachine": false,
|
"perMachine": false,
|
||||||
"allowToChangeInstallationDirectory": true,
|
"allowToChangeInstallationDirectory": true,
|
||||||
"license": "LICENSE",
|
"license": "LICENSE",
|
||||||
"deleteAppDataOnUninstall": true
|
"deleteAppDataOnUninstall": true,
|
||||||
|
"artifactName": "${productName}-Setup-${version}.${ext}"
|
||||||
|
},
|
||||||
|
"pkg": {
|
||||||
|
"installLocation": "/Applications",
|
||||||
|
"background": {
|
||||||
|
"file": "./resources/bg.png",
|
||||||
|
"alignment": "bottomleft",
|
||||||
|
"scaling": "tofit"
|
||||||
|
},
|
||||||
|
"allowAnywhere": true,
|
||||||
|
"allowCurrentUserHome": true,
|
||||||
|
"allowRootDirectory": true,
|
||||||
|
"license": "./resources/license.txt",
|
||||||
|
"isVersionChecked": false,
|
||||||
|
"isRelocatable": false,
|
||||||
|
"overwriteAction": "upgrade"
|
||||||
|
},
|
||||||
|
"dmg": {
|
||||||
|
"background": "./resources/bg.png",
|
||||||
|
"icon": "resources/icons/icon.ico"
|
||||||
|
},
|
||||||
|
"mas": {
|
||||||
|
"entitlements": "./resources/entitlements.mac.plist",
|
||||||
|
"entitlementsInherit": "./resources/entitlements.mac.plist"
|
||||||
},
|
},
|
||||||
"win": {
|
"win": {
|
||||||
"target": [
|
"target": [
|
||||||
|
@ -170,7 +203,6 @@
|
||||||
"target": [
|
"target": [
|
||||||
"dmg"
|
"dmg"
|
||||||
]
|
]
|
||||||
},
|
}
|
||||||
"artifactName": "${productName}.${ext}"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,31 @@
|
||||||
exports.default = function(context) {
|
exports.default = function(context) {
|
||||||
const { execSync } = require('child_process')
|
const { execSync } = require('child_process')
|
||||||
|
const fs = require('fs')
|
||||||
|
|
||||||
if (process.platform !== 'darwin')
|
if (process.platform !== 'darwin')
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if (fs.existsSync('dist/mac-universal--x64/Cider.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/Electron Framework.sig'))
|
||||||
|
fs.unlinkSync('dist/mac-universal--x64/Cider.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/Electron Framework.sig')
|
||||||
|
if (fs.existsSync('dist/mac-universal--arm64/Cider.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/Electron Framework.sig'))
|
||||||
|
fs.unlinkSync('dist/mac-universal--arm64/Cider.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/Electron Framework.sig')
|
||||||
console.log('Castlabs-evs update start')
|
console.log('Castlabs-evs update start')
|
||||||
execSync('python3 -m pip install --upgrade castlabs-evs')
|
execSync('python3 -m pip install --upgrade castlabs-evs')
|
||||||
console.log('Castlabs-evs update complete')
|
console.log('Castlabs-evs update complete')
|
||||||
|
|
||||||
|
// xcode 13
|
||||||
|
if (fs.existsSync('dist/mac-universal--x64') && fs.existsSync('dist/mac-universal--arm64'))
|
||||||
|
execSync("cp 'dist/mac-universal--x64/Cider.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/MainMenu.nib/keyedobjects-101300.nib' 'dist/mac-universal--arm64/Cider.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/MainMenu.nib/keyedobjects-101300.nib'",{stdio: 'inherit'})
|
||||||
|
|
||||||
console.log('VMP signing start')
|
console.log('VMP signing start')
|
||||||
|
if (fs.existsSync('dist/mac-universal'))
|
||||||
|
execSync('python3 -m castlabs_evs.vmp -n sign-pkg dist/mac-universal',{stdio: 'inherit'})
|
||||||
|
if (fs.existsSync('dist/mac'))
|
||||||
execSync('python3 -m castlabs_evs.vmp -n sign-pkg dist/mac',{stdio: 'inherit'})
|
execSync('python3 -m castlabs_evs.vmp -n sign-pkg dist/mac',{stdio: 'inherit'})
|
||||||
|
if (fs.existsSync('dist/mac-arm64'))
|
||||||
|
execSync('python3 -m castlabs_evs.vmp -n sign-pkg dist/mac-arm64 -z',{stdio: 'inherit'})
|
||||||
|
if (fs.existsSync('dist/mac-x64'))
|
||||||
|
execSync('python3 -m castlabs_evs.vmp -n sign-pkg dist/mac-x64',{stdio: 'inherit'})
|
||||||
|
|
||||||
console.log('VMP signing complete')
|
console.log('VMP signing complete')
|
||||||
}
|
}
|
|
@ -1,21 +0,0 @@
|
||||||
if (!process.env['CIRCLECI']) {
|
|
||||||
console.log(`[CIRCLECI SCRIPT] CircleCI not found... Aborting script`)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
let fs = require('fs')
|
|
||||||
|
|
||||||
var data = fs.readFileSync('package.json');
|
|
||||||
var package = JSON.parse(data);
|
|
||||||
|
|
||||||
pvers = package.version.match(/\d+\./g)
|
|
||||||
|
|
||||||
// https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables
|
|
||||||
package.version = `${pvers[0]}${pvers[1]}${process.env['CIRCLE_BUILD_NUM']}`
|
|
||||||
|
|
||||||
|
|
||||||
fs.writeFile('package.json', JSON.stringify(package), err => {
|
|
||||||
// error checking
|
|
||||||
if(err) throw err;
|
|
||||||
console.log("VERSION CHANGED");
|
|
||||||
});
|
|
BIN
resources/bg.png
Normal file
After Width: | Height: | Size: 11 KiB |
53
resources/circle.js
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
|
||||||
|
|
||||||
|
if (!process.env['CIRCLECI']) {
|
||||||
|
console.log(`[CIRCLECI SCRIPT] CircleCI not found... Aborting script`)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let fs = require('fs')
|
||||||
|
|
||||||
|
|
||||||
|
var data = fs.readFileSync('package.json');
|
||||||
|
var package = JSON.parse(data);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
let channel;
|
||||||
|
if (process.env['CIRCLE_BRANCH'] === 'lts') {
|
||||||
|
channel = 'latest'
|
||||||
|
} else if (process.env['CIRCLE_BRANCH'] === 'main') {
|
||||||
|
channel = 'beta'
|
||||||
|
} else if (process.env['CIRCLE_BRANCH'] === 'develop') {
|
||||||
|
channel = 'alpha'
|
||||||
|
} else {
|
||||||
|
channel = process.env['CIRCLE_BRANCH'] // It won't have auto update support
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables
|
||||||
|
var pvers = package.version.split('.')
|
||||||
|
package.version = `${pvers[0]}.${pvers[1]}.${pvers[2]}-${channel}.${process.env['CIRCLE_BUILD_NUM']}`
|
||||||
|
// package.build.channel = channel
|
||||||
|
package.publish = {
|
||||||
|
"provider": "github",
|
||||||
|
"repo": "cider-releases",
|
||||||
|
"owner": "ciderapp",
|
||||||
|
"vPrefixedTagName": true,
|
||||||
|
"tag": `v${package.version}`,
|
||||||
|
"channel": channel,
|
||||||
|
"releaseType": "release"
|
||||||
|
}
|
||||||
|
|
||||||
|
let {exec} = require('child_process')
|
||||||
|
exec('echo $APP_VERSION', {env: {'APP_VERSION': package.version}}, function (error, stdout, stderr)
|
||||||
|
{
|
||||||
|
console.log(stdout, stderr, error);
|
||||||
|
});
|
||||||
|
fs.writeFile('package.json', JSON.stringify(package), err => {
|
||||||
|
// error checking
|
||||||
|
if(err) throw err;
|
||||||
|
console.log(`VERSION CHANGED TO ${package.version}`);
|
||||||
|
});
|
||||||
|
|
11
resources/license.json
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://github.com/argv-minus-one/dmg-license/raw/master/schema.json",
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"file": "license.txt",
|
||||||
|
"lang": ["en-US"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
}
|
661
resources/license.txt
Normal file
|
@ -0,0 +1,661 @@
|
||||||
|
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 19 November 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU Affero General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works, specifically designed to ensure
|
||||||
|
cooperation with the community in the case of network server software.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
our General Public Licenses are intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
Developers that use our General Public Licenses protect your rights
|
||||||
|
with two steps: (1) assert copyright on the software, and (2) offer
|
||||||
|
you this License which gives you legal permission to copy, distribute
|
||||||
|
and/or modify the software.
|
||||||
|
|
||||||
|
A secondary benefit of defending all users' freedom is that
|
||||||
|
improvements made in alternate versions of the program, if they
|
||||||
|
receive widespread use, become available for other developers to
|
||||||
|
incorporate. Many developers of free software are heartened and
|
||||||
|
encouraged by the resulting cooperation. However, in the case of
|
||||||
|
software used on network servers, this result may fail to come about.
|
||||||
|
The GNU General Public License permits making a modified version and
|
||||||
|
letting the public access it on a server without ever releasing its
|
||||||
|
source code to the public.
|
||||||
|
|
||||||
|
The GNU Affero General Public License is designed specifically to
|
||||||
|
ensure that, in such cases, the modified source code becomes available
|
||||||
|
to the community. It requires the operator of a network server to
|
||||||
|
provide the source code of the modified version running there to the
|
||||||
|
users of that server. Therefore, public use of a modified version, on
|
||||||
|
a publicly accessible server, gives the public access to the source
|
||||||
|
code of the modified version.
|
||||||
|
|
||||||
|
An older license, called the Affero General Public License and
|
||||||
|
published by Affero, was designed to accomplish similar goals. This is
|
||||||
|
a different license, not a version of the Affero GPL, but Affero has
|
||||||
|
released a new version of the Affero GPL which permits relicensing under
|
||||||
|
this license.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU Affero General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Remote Network Interaction; Use with the GNU General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, if you modify the
|
||||||
|
Program, your modified version must prominently offer all users
|
||||||
|
interacting with it remotely through a computer network (if your version
|
||||||
|
supports such interaction) an opportunity to receive the Corresponding
|
||||||
|
Source of your version by providing access to the Corresponding Source
|
||||||
|
from a network server at no charge, through some standard or customary
|
||||||
|
means of facilitating copying of software. This Corresponding Source
|
||||||
|
shall include the Corresponding Source for any work covered by version 3
|
||||||
|
of the GNU General Public License that is incorporated pursuant to the
|
||||||
|
following paragraph.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the work with which it is combined will remain governed by version
|
||||||
|
3 of the GNU General Public License.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU Affero General Public License from time to time. Such new versions
|
||||||
|
will be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU Affero General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU Affero General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU Affero General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as published
|
||||||
|
by the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If your software can interact with users remotely through a computer
|
||||||
|
network, you should also make sure that it provides a way for users to
|
||||||
|
get its source. For example, if your program is a web application, its
|
||||||
|
interface could display a "Source" link that leads users to an archive
|
||||||
|
of the code. There are many ways you could offer source, and different
|
||||||
|
solutions will be better for different programs; see section 13 for the
|
||||||
|
specific requirements.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU AGPL, see
|
||||||
|
<https://www.gnu.org/licenses/>.
|
399
resources/macPackager.js
Normal file
|
@ -0,0 +1,399 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const bluebird_lst_1 = require("bluebird-lst");
|
||||||
|
const builder_util_1 = require("builder-util");
|
||||||
|
const electron_osx_sign_1 = require("electron-osx-sign");
|
||||||
|
const promises_1 = require("fs/promises");
|
||||||
|
const lazy_val_1 = require("lazy-val");
|
||||||
|
const path = require("path");
|
||||||
|
const fs_1 = require("builder-util/out/fs");
|
||||||
|
const promise_1 = require("builder-util/out/promise");
|
||||||
|
const appInfo_1 = require("./appInfo");
|
||||||
|
const macCodeSign_1 = require("./codeSign/macCodeSign");
|
||||||
|
const core_1 = require("./core");
|
||||||
|
const platformPackager_1 = require("./platformPackager");
|
||||||
|
const ArchiveTarget_1 = require("./targets/ArchiveTarget");
|
||||||
|
const pkg_1 = require("./targets/pkg");
|
||||||
|
const targetFactory_1 = require("./targets/targetFactory");
|
||||||
|
const macosVersion_1 = require("./util/macosVersion");
|
||||||
|
const pathManager_1 = require("./util/pathManager");
|
||||||
|
const fs = require("fs/promises");
|
||||||
|
class MacPackager extends platformPackager_1.PlatformPackager {
|
||||||
|
constructor(info) {
|
||||||
|
super(info, core_1.Platform.MAC);
|
||||||
|
this.codeSigningInfo = new lazy_val_1.Lazy(() => {
|
||||||
|
const cscLink = this.getCscLink();
|
||||||
|
if (cscLink == null || process.platform !== "darwin") {
|
||||||
|
return Promise.resolve({ keychainFile: process.env.CSC_KEYCHAIN || null });
|
||||||
|
}
|
||||||
|
return macCodeSign_1.createKeychain({
|
||||||
|
tmpDir: this.info.tempDirManager,
|
||||||
|
cscLink,
|
||||||
|
cscKeyPassword: this.getCscPassword(),
|
||||||
|
cscILink: platformPackager_1.chooseNotNull(this.platformSpecificBuildOptions.cscInstallerLink, process.env.CSC_INSTALLER_LINK),
|
||||||
|
cscIKeyPassword: platformPackager_1.chooseNotNull(this.platformSpecificBuildOptions.cscInstallerKeyPassword, process.env.CSC_INSTALLER_KEY_PASSWORD),
|
||||||
|
currentDir: this.projectDir,
|
||||||
|
}).then(result => {
|
||||||
|
const keychainFile = result.keychainFile;
|
||||||
|
if (keychainFile != null) {
|
||||||
|
this.info.disposeOnBuildFinish(() => macCodeSign_1.removeKeychain(keychainFile));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
this._iconPath = new lazy_val_1.Lazy(() => this.getOrConvertIcon("icns"));
|
||||||
|
}
|
||||||
|
get defaultTarget() {
|
||||||
|
return this.info.framework.macOsDefaultTargets;
|
||||||
|
}
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
|
prepareAppInfo(appInfo) {
|
||||||
|
return new appInfo_1.AppInfo(this.info, this.platformSpecificBuildOptions.bundleVersion, this.platformSpecificBuildOptions);
|
||||||
|
}
|
||||||
|
async getIconPath() {
|
||||||
|
return this._iconPath.value;
|
||||||
|
}
|
||||||
|
createTargets(targets, mapper) {
|
||||||
|
for (const name of targets) {
|
||||||
|
switch (name) {
|
||||||
|
case core_1.DIR_TARGET:
|
||||||
|
break;
|
||||||
|
case "dmg": {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
const { DmgTarget } = require("dmg-builder");
|
||||||
|
mapper(name, outDir => new DmgTarget(this, outDir));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "zip":
|
||||||
|
// https://github.com/electron-userland/electron-builder/issues/2313
|
||||||
|
mapper(name, outDir => new ArchiveTarget_1.ArchiveTarget(name, outDir, this, true));
|
||||||
|
break;
|
||||||
|
case "pkg":
|
||||||
|
mapper(name, outDir => new pkg_1.PkgTarget(this, outDir));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mapper(name, outDir => (name === "mas" || name === "mas-dev" ? new targetFactory_1.NoOpTarget(name) : targetFactory_1.createCommonTarget(name, outDir, this)));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async doPack(outDir, appOutDir, platformName, arch, platformSpecificBuildOptions, targets) {
|
||||||
|
switch (arch) {
|
||||||
|
default: {
|
||||||
|
return super.doPack(outDir, appOutDir, platformName, arch, platformSpecificBuildOptions, targets);
|
||||||
|
}
|
||||||
|
case builder_util_1.Arch.universal: {
|
||||||
|
const x64Arch = builder_util_1.Arch.x64;
|
||||||
|
const x64AppOutDir = appOutDir + "--" + builder_util_1.Arch[x64Arch];
|
||||||
|
await super.doPack(outDir, x64AppOutDir, platformName, x64Arch, platformSpecificBuildOptions, targets, false, true);
|
||||||
|
const arm64Arch = builder_util_1.Arch.arm64;
|
||||||
|
const arm64AppOutPath = appOutDir + "--" + builder_util_1.Arch[arm64Arch];
|
||||||
|
await super.doPack(outDir, arm64AppOutPath, platformName, arm64Arch, platformSpecificBuildOptions, targets, false, true);
|
||||||
|
const framework = this.info.framework;
|
||||||
|
builder_util_1.log.info({
|
||||||
|
platform: platformName,
|
||||||
|
arch: builder_util_1.Arch[arch],
|
||||||
|
[`${framework.name}`]: framework.version,
|
||||||
|
appOutDir: builder_util_1.log.filePath(appOutDir),
|
||||||
|
}, `packaging`);
|
||||||
|
const appFile = `${this.appInfo.productFilename}.app`;
|
||||||
|
const { makeUniversalApp } = require("@electron/universal");
|
||||||
|
await makeUniversalApp({
|
||||||
|
x64AppPath: path.join(x64AppOutDir, appFile),
|
||||||
|
arm64AppPath: path.join(arm64AppOutPath, appFile),
|
||||||
|
outAppPath: path.join(appOutDir, appFile),
|
||||||
|
force: true,
|
||||||
|
});
|
||||||
|
await fs.rm(x64AppOutDir, { recursive: true, force: true });
|
||||||
|
await fs.rm(arm64AppOutPath, { recursive: true, force: true });
|
||||||
|
const packContext = {
|
||||||
|
appOutDir,
|
||||||
|
outDir,
|
||||||
|
arch,
|
||||||
|
targets,
|
||||||
|
packager: this,
|
||||||
|
electronPlatformName: platformName,
|
||||||
|
}
|
||||||
|
await this.info.afterPack(packContext)
|
||||||
|
if (framework.afterPack != null) {
|
||||||
|
await framework.afterPack(packContext)
|
||||||
|
}
|
||||||
|
await this.doSignAfterPack(outDir, appOutDir, platformName, arch, platformSpecificBuildOptions, targets);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async pack(outDir, arch, targets, taskManager) {
|
||||||
|
let nonMasPromise = null;
|
||||||
|
const hasMas = targets.length !== 0 && targets.some(it => it.name === "mas" || it.name === "mas-dev");
|
||||||
|
const prepackaged = this.packagerOptions.prepackaged;
|
||||||
|
if (!hasMas || targets.length > 1) {
|
||||||
|
const appPath = prepackaged == null ? path.join(this.computeAppOutDir(outDir, arch), `${this.appInfo.productFilename}.app`) : prepackaged;
|
||||||
|
nonMasPromise = (prepackaged
|
||||||
|
? Promise.resolve()
|
||||||
|
: this.doPack(outDir, path.dirname(appPath), this.platform.nodeName, arch, this.platformSpecificBuildOptions, targets)).then(() => this.packageInDistributableFormat(appPath, arch, targets, taskManager));
|
||||||
|
}
|
||||||
|
for (const target of targets) {
|
||||||
|
const targetName = target.name;
|
||||||
|
if (!(targetName === "mas" || targetName === "mas-dev")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const masBuildOptions = builder_util_1.deepAssign({}, this.platformSpecificBuildOptions, this.config.mas);
|
||||||
|
if (targetName === "mas-dev") {
|
||||||
|
builder_util_1.deepAssign(masBuildOptions, this.config.masDev, {
|
||||||
|
type: "development",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const targetOutDir = path.join(outDir, `${targetName}${builder_util_1.getArchSuffix(arch)}`);
|
||||||
|
if (prepackaged == null) {
|
||||||
|
await this.doPack(outDir, targetOutDir, "mas", arch, masBuildOptions, [target]);
|
||||||
|
await this.sign(path.join(targetOutDir, `${this.appInfo.productFilename}.app`), targetOutDir, masBuildOptions, arch);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
await this.sign(prepackaged, targetOutDir, masBuildOptions, arch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (nonMasPromise != null) {
|
||||||
|
await nonMasPromise;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async sign(appPath, outDir, masOptions, arch) {
|
||||||
|
if (!macCodeSign_1.isSignAllowed()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const isMas = masOptions != null;
|
||||||
|
const options = masOptions == null ? this.platformSpecificBuildOptions : masOptions;
|
||||||
|
const qualifier = options.identity;
|
||||||
|
if (!isMas && qualifier === null) {
|
||||||
|
if (this.forceCodeSigning) {
|
||||||
|
throw new builder_util_1.InvalidConfigurationError("identity explicitly is set to null, but forceCodeSigning is set to true");
|
||||||
|
}
|
||||||
|
builder_util_1.log.info({ reason: "identity explicitly is set to null" }, "skipped macOS code signing");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const keychainFile = (await this.codeSigningInfo.value).keychainFile;
|
||||||
|
const explicitType = options.type;
|
||||||
|
const type = explicitType || "distribution";
|
||||||
|
const isDevelopment = type === "development";
|
||||||
|
const certificateTypes = getCertificateTypes(isMas, isDevelopment);
|
||||||
|
let identity = null;
|
||||||
|
for (const certificateType of certificateTypes) {
|
||||||
|
identity = await macCodeSign_1.findIdentity(certificateType, qualifier, keychainFile);
|
||||||
|
if (identity != null) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (identity == null) {
|
||||||
|
if (!isMas && !isDevelopment && explicitType !== "distribution") {
|
||||||
|
identity = await macCodeSign_1.findIdentity("Mac Developer", qualifier, keychainFile);
|
||||||
|
if (identity != null) {
|
||||||
|
builder_util_1.log.warn("Mac Developer is used to sign app — it is only for development and testing, not for production");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (identity == null) {
|
||||||
|
await macCodeSign_1.reportError(isMas, certificateTypes, qualifier, keychainFile, this.forceCodeSigning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!macosVersion_1.isMacOsHighSierra()) {
|
||||||
|
throw new builder_util_1.InvalidConfigurationError("macOS High Sierra 10.13.6 is required to sign");
|
||||||
|
}
|
||||||
|
let filter = options.signIgnore;
|
||||||
|
if (Array.isArray(filter)) {
|
||||||
|
if (filter.length == 0) {
|
||||||
|
filter = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (filter != null) {
|
||||||
|
filter = filter.length === 0 ? null : [filter];
|
||||||
|
}
|
||||||
|
const filterRe = filter == null ? null : filter.map(it => new RegExp(it));
|
||||||
|
let binaries = options.binaries || undefined;
|
||||||
|
if (binaries) {
|
||||||
|
// Accept absolute paths for external binaries, else resolve relative paths from the artifact's app Contents path.
|
||||||
|
const userDefinedBinaries = await Promise.all(binaries.map(async (destination) => {
|
||||||
|
if (await fs_1.statOrNull(destination)) {
|
||||||
|
return destination;
|
||||||
|
}
|
||||||
|
return path.resolve(appPath, destination);
|
||||||
|
}));
|
||||||
|
// Insert at front to prioritize signing. We still sort by depth next
|
||||||
|
binaries = userDefinedBinaries.concat(binaries);
|
||||||
|
builder_util_1.log.info("Signing addtional user-defined binaries: " + JSON.stringify(userDefinedBinaries, null, 1));
|
||||||
|
}
|
||||||
|
const signOptions = {
|
||||||
|
"identity-validation": false,
|
||||||
|
// https://github.com/electron-userland/electron-builder/issues/1699
|
||||||
|
// kext are signed by the chipset manufacturers. You need a special certificate (only available on request) from Apple to be able to sign kext.
|
||||||
|
ignore: (file) => {
|
||||||
|
if (filterRe != null) {
|
||||||
|
for (const regExp of filterRe) {
|
||||||
|
if (regExp.test(file)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (file.endsWith(".kext") ||
|
||||||
|
file.startsWith("/Contents/PlugIns", appPath.length) ||
|
||||||
|
file.includes("/node_modules/puppeteer/.local-chromium") ||
|
||||||
|
file.includes("/node_modules/playwright-firefox/.local-browsers") ||
|
||||||
|
file.includes("/node_modules/playwright/.local-browsers"));
|
||||||
|
/* Those are browser automating modules, browser (chromium, nightly) cannot be signed
|
||||||
|
https://github.com/electron-userland/electron-builder/issues/2010
|
||||||
|
https://github.com/electron-userland/electron-builder/issues/5383
|
||||||
|
*/
|
||||||
|
},
|
||||||
|
identity: identity,
|
||||||
|
type,
|
||||||
|
platform: isMas ? "mas" : "darwin",
|
||||||
|
version: this.config.electronVersion,
|
||||||
|
app: appPath,
|
||||||
|
keychain: keychainFile || undefined,
|
||||||
|
binaries,
|
||||||
|
timestamp: isMas ? masOptions === null || masOptions === void 0 ? void 0 : masOptions.timestamp : options.timestamp,
|
||||||
|
requirements: isMas || this.platformSpecificBuildOptions.requirements == null ? undefined : await this.getResource(this.platformSpecificBuildOptions.requirements),
|
||||||
|
// https://github.com/electron-userland/electron-osx-sign/issues/196
|
||||||
|
// will fail on 10.14.5+ because a signed but unnotarized app is also rejected.
|
||||||
|
"gatekeeper-assess": options.gatekeeperAssess === true,
|
||||||
|
// https://github.com/electron-userland/electron-builder/issues/1480
|
||||||
|
"strict-verify": options.strictVerify,
|
||||||
|
hardenedRuntime: isMas ? masOptions && masOptions.hardenedRuntime === true : options.hardenedRuntime !== false,
|
||||||
|
};
|
||||||
|
await this.adjustSignOptions(signOptions, masOptions);
|
||||||
|
builder_util_1.log.info({
|
||||||
|
file: builder_util_1.log.filePath(appPath),
|
||||||
|
identityName: identity.name,
|
||||||
|
identityHash: identity.hash,
|
||||||
|
provisioningProfile: signOptions["provisioning-profile"] || "none",
|
||||||
|
}, "signing");
|
||||||
|
await this.doSign(signOptions);
|
||||||
|
// https://github.com/electron-userland/electron-builder/issues/1196#issuecomment-312310209
|
||||||
|
if (masOptions != null && !isDevelopment) {
|
||||||
|
const certType = isDevelopment ? "Mac Developer" : "3rd Party Mac Developer Installer";
|
||||||
|
const masInstallerIdentity = await macCodeSign_1.findIdentity(certType, masOptions.identity, keychainFile);
|
||||||
|
if (masInstallerIdentity == null) {
|
||||||
|
throw new builder_util_1.InvalidConfigurationError(`Cannot find valid "${certType}" identity to sign MAS installer, please see https://electron.build/code-signing`);
|
||||||
|
}
|
||||||
|
// mas uploaded to AppStore, so, use "-" instead of space for name
|
||||||
|
const artifactName = this.expandArtifactNamePattern(masOptions, "pkg", arch);
|
||||||
|
const artifactPath = path.join(outDir, artifactName);
|
||||||
|
await this.doFlat(appPath, artifactPath, masInstallerIdentity, keychainFile);
|
||||||
|
await this.dispatchArtifactCreated(artifactPath, null, builder_util_1.Arch.x64, this.computeSafeArtifactName(artifactName, "pkg", arch, true, this.platformSpecificBuildOptions.defaultArch));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async adjustSignOptions(signOptions, masOptions) {
|
||||||
|
const resourceList = await this.resourceList;
|
||||||
|
const customSignOptions = masOptions || this.platformSpecificBuildOptions;
|
||||||
|
const entitlementsSuffix = masOptions == null ? "mac" : "mas";
|
||||||
|
let entitlements = customSignOptions.entitlements;
|
||||||
|
if (entitlements == null) {
|
||||||
|
const p = `entitlements.${entitlementsSuffix}.plist`;
|
||||||
|
if (resourceList.includes(p)) {
|
||||||
|
entitlements = path.join(this.info.buildResourcesDir, p);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
entitlements = pathManager_1.getTemplatePath("entitlements.mac.plist");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
signOptions.entitlements = entitlements;
|
||||||
|
let entitlementsInherit = customSignOptions.entitlementsInherit;
|
||||||
|
if (entitlementsInherit == null) {
|
||||||
|
const p = `entitlements.${entitlementsSuffix}.inherit.plist`;
|
||||||
|
if (resourceList.includes(p)) {
|
||||||
|
entitlementsInherit = path.join(this.info.buildResourcesDir, p);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
entitlementsInherit = pathManager_1.getTemplatePath("entitlements.mac.plist");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
signOptions["entitlements-inherit"] = entitlementsInherit;
|
||||||
|
if (customSignOptions.provisioningProfile != null) {
|
||||||
|
signOptions["provisioning-profile"] = customSignOptions.provisioningProfile;
|
||||||
|
}
|
||||||
|
signOptions["entitlements-loginhelper"] = customSignOptions.entitlementsLoginHelper;
|
||||||
|
}
|
||||||
|
//noinspection JSMethodCanBeStatic
|
||||||
|
async doSign(opts) {
|
||||||
|
return electron_osx_sign_1.signAsync(opts);
|
||||||
|
}
|
||||||
|
//noinspection JSMethodCanBeStatic
|
||||||
|
async doFlat(appPath, outFile, identity, keychain) {
|
||||||
|
// productbuild doesn't created directory for out file
|
||||||
|
await promises_1.mkdir(path.dirname(outFile), { recursive: true });
|
||||||
|
const args = pkg_1.prepareProductBuildArgs(identity, keychain);
|
||||||
|
args.push("--component", appPath, "/Applications");
|
||||||
|
args.push(outFile);
|
||||||
|
return await builder_util_1.exec("productbuild", args);
|
||||||
|
}
|
||||||
|
getElectronSrcDir(dist) {
|
||||||
|
return path.resolve(this.projectDir, dist, this.info.framework.distMacOsAppName);
|
||||||
|
}
|
||||||
|
getElectronDestinationDir(appOutDir) {
|
||||||
|
return path.join(appOutDir, this.info.framework.distMacOsAppName);
|
||||||
|
}
|
||||||
|
// todo fileAssociations
|
||||||
|
async applyCommonInfo(appPlist, contentsPath) {
|
||||||
|
const appInfo = this.appInfo;
|
||||||
|
const appFilename = appInfo.productFilename;
|
||||||
|
// https://github.com/electron-userland/electron-builder/issues/1278
|
||||||
|
appPlist.CFBundleExecutable = appFilename.endsWith(" Helper") ? appFilename.substring(0, appFilename.length - " Helper".length) : appFilename;
|
||||||
|
const icon = await this.getIconPath();
|
||||||
|
if (icon != null) {
|
||||||
|
const oldIcon = appPlist.CFBundleIconFile;
|
||||||
|
const resourcesPath = path.join(contentsPath, "Resources");
|
||||||
|
if (oldIcon != null) {
|
||||||
|
await fs_1.unlinkIfExists(path.join(resourcesPath, oldIcon));
|
||||||
|
}
|
||||||
|
const iconFileName = "icon.icns";
|
||||||
|
appPlist.CFBundleIconFile = iconFileName;
|
||||||
|
await fs_1.copyFile(icon, path.join(resourcesPath, iconFileName));
|
||||||
|
}
|
||||||
|
appPlist.CFBundleName = appInfo.productName;
|
||||||
|
appPlist.CFBundleDisplayName = appInfo.productName;
|
||||||
|
const minimumSystemVersion = this.platformSpecificBuildOptions.minimumSystemVersion;
|
||||||
|
if (minimumSystemVersion != null) {
|
||||||
|
appPlist.LSMinimumSystemVersion = minimumSystemVersion;
|
||||||
|
}
|
||||||
|
appPlist.CFBundleIdentifier = appInfo.macBundleIdentifier;
|
||||||
|
appPlist.CFBundleShortVersionString = this.platformSpecificBuildOptions.bundleShortVersion || appInfo.version;
|
||||||
|
appPlist.CFBundleVersion = appInfo.buildVersion;
|
||||||
|
builder_util_1.use(this.platformSpecificBuildOptions.category || this.config.category, it => (appPlist.LSApplicationCategoryType = it));
|
||||||
|
appPlist.NSHumanReadableCopyright = appInfo.copyright;
|
||||||
|
if (this.platformSpecificBuildOptions.darkModeSupport) {
|
||||||
|
appPlist.NSRequiresAquaSystemAppearance = false;
|
||||||
|
}
|
||||||
|
const extendInfo = this.platformSpecificBuildOptions.extendInfo;
|
||||||
|
if (extendInfo != null) {
|
||||||
|
Object.assign(appPlist, extendInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async signApp(packContext, isAsar) {
|
||||||
|
const appFileName = `${this.appInfo.productFilename}.app`;
|
||||||
|
await bluebird_lst_1.default.map(promises_1.readdir(packContext.appOutDir), (file) => {
|
||||||
|
if (file === appFileName) {
|
||||||
|
return this.sign(path.join(packContext.appOutDir, file), null, null, null);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
if (!isAsar) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const outResourcesDir = path.join(packContext.appOutDir, "resources", "app.asar.unpacked");
|
||||||
|
await bluebird_lst_1.default.map(promise_1.orIfFileNotExist(promises_1.readdir(outResourcesDir), []), (file) => {
|
||||||
|
if (file.endsWith(".app")) {
|
||||||
|
return this.sign(path.join(outResourcesDir, file), null, null, null);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.default = MacPackager;
|
||||||
|
function getCertificateTypes(isMas, isDevelopment) {
|
||||||
|
if (isDevelopment) {
|
||||||
|
return isMas ? ["Mac Developer", "Apple Development"] : ["Developer ID Application"];
|
||||||
|
}
|
||||||
|
return isMas ? ["Apple Distribution"] : ["Developer ID Application"];
|
||||||
|
}
|
||||||
|
//# sourceMappingURL=macPackager.js.map
|
77
resources/verror-types
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
// Type definitions for verror 1.10
|
||||||
|
// Project: https://github.com/davepacheco/node-verror
|
||||||
|
// Definitions by: Sven Reglitzki <https://github.com/svi3c>, Maxime Toumi-M <https://github.com/max4t>
|
||||||
|
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||||
|
|
||||||
|
/*
|
||||||
|
* VError([cause], fmt[, arg...]): Like JavaScript's built-in Error class, but
|
||||||
|
* supports a "cause" argument (another error) and a printf-style message. The
|
||||||
|
* cause argument can be null or omitted entirely.
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
*
|
||||||
|
* CODE MESSAGE
|
||||||
|
* new VError('something bad happened') "something bad happened"
|
||||||
|
* new VError('missing file: "%s"', file) "missing file: "/etc/passwd"
|
||||||
|
* with file = '/etc/passwd'
|
||||||
|
* new VError(err, 'open failed') "open failed: file not found"
|
||||||
|
* with err.message = 'file not found'
|
||||||
|
*/
|
||||||
|
declare class VError extends Error {
|
||||||
|
static VError: typeof VError;
|
||||||
|
|
||||||
|
static cause(err: Error): Error | null;
|
||||||
|
static info(err: Error): VError.Info;
|
||||||
|
static fullStack(err: Error): string;
|
||||||
|
static findCauseByName(err: Error, name: string): Error | null;
|
||||||
|
static hasCauseWithName(err: Error, name: string): boolean;
|
||||||
|
static errorFromList<T extends Error>(errors: T[]): null | T | VError.MultiError;
|
||||||
|
static errorForEach(err: Error, func: (err: Error) => void): void;
|
||||||
|
|
||||||
|
//@ts-ignore
|
||||||
|
cause(): Error | undefined;
|
||||||
|
constructor(options: VError.Options | Error, message: string, ...params: any[]);
|
||||||
|
constructor(message?: string, ...params: any[]);
|
||||||
|
}
|
||||||
|
|
||||||
|
declare namespace VError {
|
||||||
|
interface Info {
|
||||||
|
[key: string]: any;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Options {
|
||||||
|
cause?: Error | null | undefined;
|
||||||
|
name?: string | undefined;
|
||||||
|
strict?: boolean | undefined;
|
||||||
|
constructorOpt?(...args: any[]): void;
|
||||||
|
info?: Info | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SError is like VError, but stricter about types. You cannot pass "null" or
|
||||||
|
* "undefined" as string arguments to the formatter. Since SError is only a
|
||||||
|
* different function, not really a different class, we don't set
|
||||||
|
* SError.prototype.name.
|
||||||
|
*/
|
||||||
|
class SError extends VError {}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Represents a collection of errors for the purpose of consumers that generally
|
||||||
|
* only deal with one error. Callers can extract the individual errors
|
||||||
|
* contained in this object, but may also just treat it as a normal single
|
||||||
|
* error, in which case a summary message will be printed.
|
||||||
|
*/
|
||||||
|
class MultiError extends VError {
|
||||||
|
constructor(errors: Error[]);
|
||||||
|
errors(): Error[];
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Like JavaScript's built-in Error class, but supports a "cause" argument which
|
||||||
|
* is wrapped, not "folded in" as with VError. Accepts a printf-style message.
|
||||||
|
* The cause argument can be null.
|
||||||
|
*/
|
||||||
|
class WError extends VError {}
|
||||||
|
}
|
||||||
|
|
||||||
|
export = VError;
|
|
@ -1,4 +1,4 @@
|
||||||
# Cider i18n
|
# Cider i18n Notices & Changelog
|
||||||
|
|
||||||
Some notes about Cider's i18n support.
|
Some notes about Cider's i18n support.
|
||||||
|
|
||||||
|
@ -9,6 +9,26 @@ Some notes about Cider's i18n support.
|
||||||
- Most of the strings in the content area are provided and translated by Apple themselves, and do not need to be translated.
|
- Most of the strings in the content area are provided and translated by Apple themselves, and do not need to be translated.
|
||||||
- The language Apple Music uses are dependent on the storefront region.
|
- The language Apple Music uses are dependent on the storefront region.
|
||||||
|
|
||||||
|
# Multiple Plural Forms
|
||||||
|
|
||||||
|
Multiple plural forms can be supported as below:
|
||||||
|
|
||||||
|
The keys and its meanings are here : https://github.com/prantlf/fast-plural-rules/blob/master/docs/languages.md#supported-languages
|
||||||
|
|
||||||
|
For example , English is in Plural rule #1 and has 2 keys ```one``` and ```other```
|
||||||
|
|
||||||
|
Russian is in Plural rule #7 (3 forms) : ```one```, ```few``` and ```other```
|
||||||
|
|
||||||
|
How it is implemented for English:
|
||||||
|
|
||||||
|
```
|
||||||
|
"term.track": {
|
||||||
|
"one" : "track",
|
||||||
|
"other" : "tracks"
|
||||||
|
},
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Localization Notices
|
## Localization Notices
|
||||||
|
|
||||||
|
@ -21,7 +41,7 @@ been modified, the ones not mentioned in the list need modifying.
|
||||||
* `term.sharedPlaylists`: "Shared Playlists" - Added for `en_US`.
|
* `term.sharedPlaylists`: "Shared Playlists" - Added for `en_US`.
|
||||||
* `term.people`: "People" - Added for `en_US`.
|
* `term.people`: "People" - Added for `en_US`.
|
||||||
|
|
||||||
Updated 02/02/2022 17:16 UTC
|
Update 02/02/2022 17:16 UTC
|
||||||
|
|
||||||
* `term.newpreset.name`: Added for `en_US`.
|
* `term.newpreset.name`: Added for `en_US`.
|
||||||
* `term.addedpreset`: Added for `en_US`.
|
* `term.addedpreset`: Added for `en_US`.
|
||||||
|
@ -38,7 +58,7 @@ Updated 02/02/2022 17:16 UTC
|
||||||
* `action.newpreset`: Added for `en_US`.
|
* `action.newpreset`: Added for `en_US`.
|
||||||
* `action.deletepreset`: Added for `en_US`.
|
* `action.deletepreset`: Added for `en_US`.
|
||||||
|
|
||||||
Updated 04/02/2022 10:00 UTC
|
Update 04/02/2022 10:00 UTC
|
||||||
|
|
||||||
* `term.history`: Added for `en_US`.
|
* `term.history`: Added for `en_US`.
|
||||||
* `action.copy`: Added for `en_US`.
|
* `action.copy`: Added for `en_US`.
|
||||||
|
@ -65,3 +85,115 @@ Update 06/02/2022 10:35 UTC
|
||||||
* `settings.header.audio.quality.auto`: Removed as default for MusicKit is 256.
|
* `settings.header.audio.quality.auto`: Removed as default for MusicKit is 256.
|
||||||
* `settings.header.audio.quality.standard`: Replaced `settings.header.audio.quality.low` to match MusicKit naming.
|
* `settings.header.audio.quality.standard`: Replaced `settings.header.audio.quality.low` to match MusicKit naming.
|
||||||
* `settings.header.audio.quality.standard.description`: Added for `en_US`.
|
* `settings.header.audio.quality.standard.description`: Added for `en_US`.
|
||||||
|
|
||||||
|
Update 08/02/2022 10:20 UTC
|
||||||
|
|
||||||
|
* `settings.option.general.updateCider`: Added for `en_US`.
|
||||||
|
* `settings.option.general.updateCider.branch`: Added for `en_US`.
|
||||||
|
* `settings.option.general.updateCider.branch.description`: Added for `en_US`.
|
||||||
|
* `settings.option.general.updateCider.branch.main`: Added for `en_US`.
|
||||||
|
* `settings.option.general.updateCider.branch.develop`: Added for `en_US`.
|
||||||
|
* `settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength`: Added for `en_US`.
|
||||||
|
* `settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description`: Added for `en_US`.
|
||||||
|
* `settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard`: Added for `en_US`.
|
||||||
|
* `settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive`: Added for `en_US`.
|
||||||
|
* `settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility`: Added for `en_US`.
|
||||||
|
* `settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility`: Added for `en_US`.
|
||||||
|
* `term.requestError`: Added for `en_US`.
|
||||||
|
* `term.song.link.generate`: Added for `en_US`.
|
||||||
|
|
||||||
|
Update 10/02/2022 05:58 UTC
|
||||||
|
|
||||||
|
* `term.sortBy.dateAdded`: Added for `en_US`.
|
||||||
|
|
||||||
|
Update 12/02/2022 12:00 UTC
|
||||||
|
|
||||||
|
* Added support for multiple plural forms. [Details](#multiple-plural-forms)
|
||||||
|
* `term.version`: Added for `en_US`.
|
||||||
|
* `settings.option.visual.theme.github.download`: Added for `en_US`.
|
||||||
|
* `settings.prompt.visual.theme.github.URL`: Added for `en_US`.
|
||||||
|
* `settings.notyf.visual.theme.install.success`: Added for `en_US`.
|
||||||
|
* `settings.notyf.visual.theme.install.error`: Added for `en_US`.
|
||||||
|
* `term.defaultPresets`: Added for `en_US`.
|
||||||
|
* `term.userPresets`: Added for `en_US`.
|
||||||
|
|
||||||
|
Update 16/02/2022 21:45 UTC
|
||||||
|
|
||||||
|
* `term.audioControls`: Added for `en_US`.
|
||||||
|
* `settings.option.audio.volumeStep`: Added for `en_US`.
|
||||||
|
* `settings.option.audio.maxVolume`: Added for `en_US`.`
|
||||||
|
|
||||||
|
Update 17/02/2022 10:00 UTC
|
||||||
|
|
||||||
|
+ `settings.header.debug`: Added for `en_US`.
|
||||||
|
+ `settings.option.debug.copy_log`: Replaces `settings.option.experimental.copy_log`.
|
||||||
|
+ `settings.option.debug.openAppData`: Added for `en_US`
|
||||||
|
+ `action.open`: Added for `en_US`
|
||||||
|
|
||||||
|
Update 19/2/2022 21:00 UTC
|
||||||
|
|
||||||
|
* `term.noVideos`: Added for `en_US`
|
||||||
|
* `term.plugin`: Added for `en_US`
|
||||||
|
* `term.pluginMenu`: Added for `en_US`
|
||||||
|
* `term.replay`: Added for `en_US`
|
||||||
|
* `term.uniqueAlbums`: Added for `en_US`
|
||||||
|
* `term.uniqueArtists`: Added for `en_US`
|
||||||
|
* `term.uniqueSongs`: Added for `en_US`
|
||||||
|
* `term.topArtists`: Added for `en_US`
|
||||||
|
* `term.listenedTo`: Added for `en_US`
|
||||||
|
* `term.times`: Added for `en_US`
|
||||||
|
* `term.topAlbums`: Added for `en_US`
|
||||||
|
* `term.plays`: Added for `en_US`
|
||||||
|
* `term.topGenres`: Added for `en_US`
|
||||||
|
* `action.install`: Added for `en_US`
|
||||||
|
* `settings.option.general.resumebehavior`: Added for `en_US`
|
||||||
|
* `settings.option.general.resumebehavior.description`: Added for `en_US`
|
||||||
|
* `settings.option.general.resumebehavior.locally`: Added for `en_US`
|
||||||
|
* `settings.option.general.resumebehavior.locally.description`: Added for `en_US`
|
||||||
|
* `settings.option.general.resumebehavior.history`: Added for `en_US`
|
||||||
|
* `settings.option.general.resumebehavior.history.description`: Added for `en_US`
|
||||||
|
* `settings.option.audio.audioLab`: Added for `en_US`
|
||||||
|
* `settings.option.audio.audioLab.description`: Added for `en_US`
|
||||||
|
* `settings.warn.audioLab.withoutAF`: Added for `en_US`
|
||||||
|
* `settings.option.audio.enableAdvancedFunctionality.analogWarmth`: Added for `en_US`
|
||||||
|
* `settings.option.audio.enableAdvancedFunctionality.analogWarmth.description`: Added for `en_US`
|
||||||
|
* `settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity`: Added for `en_US`
|
||||||
|
* `settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description`: Added for `en_US`
|
||||||
|
* `settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth`: Added for `en_US`
|
||||||
|
* `settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm`: Added for `en_US`
|
||||||
|
* `settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization`: Added for `en_US`
|
||||||
|
* `settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description`: Added for `en_US`
|
||||||
|
* `settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile`: Added for `en_US`
|
||||||
|
* `settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description`: Added for `en_US`
|
||||||
|
* `settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard`: Added for `en_US`
|
||||||
|
* `settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile`: Added for `en_US`
|
||||||
|
* `settings.header.visual.theme.github.page`: Added for `en_US`
|
||||||
|
* `settings.option.visual.theme.github.explore`: Added for `en_US`
|
||||||
|
* `settings.option.visual.theme.github.install.confirm`: Added for `en_US`
|
||||||
|
* `settings.option.experimental.unknownPlugin`: Added for `en_US`
|
||||||
|
* `settings.option.experimental.unknownPlugin.description`: Added for `en_US`
|
||||||
|
|
||||||
|
Update 25/02/2022 15:30 UTC
|
||||||
|
|
||||||
|
* `action.moveToTop`: Changed to `Move out of Folder` instead of `Move to top`
|
||||||
|
|
||||||
|
Update 27/02/2022 18:30 UTC
|
||||||
|
|
||||||
|
* `settings.notyf.updateCider.update-not-available`: Added for `en_US`
|
||||||
|
* `settings.notyf.updateCider.update-timeout`: Added for `en_US`
|
||||||
|
* `settings.notyf.updateCider.update-downloaded`: Added for `en_US`
|
||||||
|
* `settings.notyf.updateCider.update-error`: Added for `en_US`
|
||||||
|
|
||||||
|
Update 28/02/2022 13:00 UTC
|
||||||
|
|
||||||
|
* `term.time.days`: Added for `en_US`
|
||||||
|
* `term.time.day`: Added for `en_US`
|
||||||
|
|
||||||
|
Update 10/3/2022 14:00 UTC
|
||||||
|
* `settings.header.window`: Added for `en_US`
|
||||||
|
* `settings.header.window.description`: Added for `en_US`
|
||||||
|
* `settings.option.window.openOnStartup`: Added for `en_US`
|
||||||
|
* `settings.option.window.openOnStartup.hidden`: Added for `en_US`
|
||||||
|
|
||||||
|
Update 20/3/2022 00:01 UTC
|
||||||
|
* `term.creditDesignedBy`: Added for `en_US`
|
309
src/i18n/cz_CZ.json
Normal file
|
@ -0,0 +1,309 @@
|
||||||
|
{
|
||||||
|
"i18n.languageName": "Čeština (CZ)",
|
||||||
|
"i18n.languageNameEnglish": "Czech (CZ)",
|
||||||
|
"i18n.category": "main",
|
||||||
|
"i18n.authors": "@matuskoOk",
|
||||||
|
"app.name": "Cider",
|
||||||
|
"date.format": "${d} ${m}, ${y}",
|
||||||
|
"dialog.cancel": "Zrušit",
|
||||||
|
"dialog.ok": "OK",
|
||||||
|
"notification.updatingLibrarySongs": "Aktualizace skladeb v knihovně...",
|
||||||
|
"notification.updatingLibraryAlbums": "Aktualizace alb knihovny...",
|
||||||
|
"notification.updatingLibraryArtists": "Aktualizace umělců knihovny...",
|
||||||
|
"term.appleInc": "Apple Inc.",
|
||||||
|
"term.appleMusic": "Apple Music",
|
||||||
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
"term.itunes": "iTunes",
|
||||||
|
"term.github": "GitHub",
|
||||||
|
"term.discord": "Discord",
|
||||||
|
"term.learnMore": "Zjistěte více",
|
||||||
|
"term.accountSettings": "Nastavení účtu",
|
||||||
|
"term.logout": "Odhlásit se",
|
||||||
|
"term.login": "Přihlásit se",
|
||||||
|
"term.about": "About",
|
||||||
|
"term.privateSession": "Soukromá relace",
|
||||||
|
"term.queue": "Fronta",
|
||||||
|
"term.history": "Historie",
|
||||||
|
"term.search": "Vyhledávání",
|
||||||
|
"term.library": "Knihovna",
|
||||||
|
"term.listenNow": "Poslouchejte hned",
|
||||||
|
"term.browse": "Procházet",
|
||||||
|
"term.radio": "Rádio",
|
||||||
|
"term.recentlyAdded": "Nedávno přidané",
|
||||||
|
"term.songs": "Písně",
|
||||||
|
"term.albums": "Alba",
|
||||||
|
"term.artists": "Umělci",
|
||||||
|
"term.podcasts": "Podcasty",
|
||||||
|
"term.playlists": "Playlists",
|
||||||
|
"term.playlist": "Playlist",
|
||||||
|
"term.newPlaylist": "Nový seznam playlistu",
|
||||||
|
"term.newPlaylistFolder": "Nová složka playlistov",
|
||||||
|
"term.createNewPlaylist": "Vytvořit nový seznam playlistov",
|
||||||
|
"term.createNewPlaylistFolder": "Vytvořit nový seznam playlist složka",
|
||||||
|
"term.deletePlaylist": "Opravdu chcete tento playlist smazat?",
|
||||||
|
"term.play": "Play",
|
||||||
|
"term.pause": "Pause",
|
||||||
|
"term.previous": "Předchozí",
|
||||||
|
"term.next": "Další",
|
||||||
|
"term.shuffle": "Zamíchat",
|
||||||
|
"term.repeat": "Repeat",
|
||||||
|
"term.volume": "Hlasitosť",
|
||||||
|
"term.mute": "Mute",
|
||||||
|
"term.unmute": "Ztlumit",
|
||||||
|
"term.share": "Zdílet",
|
||||||
|
"term.share.success": "Zkopírováno do clipboard",
|
||||||
|
"term.settings": "Nastavení",
|
||||||
|
"term.seeAll": "Vidět vše",
|
||||||
|
"term.sortBy": "Seřazeno podle",
|
||||||
|
"term.sortBy.album": "Album",
|
||||||
|
"term.sortBy.artist": "Umělec",
|
||||||
|
"term.sortBy.name": "Název",
|
||||||
|
"term.sortBy.genre": "Žánr",
|
||||||
|
"term.sortBy.releaseDate": "Datum vydání",
|
||||||
|
"term.sortBy.duration": "Doba trvání",
|
||||||
|
"term.sortOrder": "A-Z",
|
||||||
|
"term.sortOrder.ascending": "Vzestupně",
|
||||||
|
"term.sortOrder.descending": "Klesající",
|
||||||
|
"term.viewAs": "Zobrazit jako",
|
||||||
|
"term.viewAs.coverArt": "Obálka Art",
|
||||||
|
"term.viewAs.list": "Seznam",
|
||||||
|
"term.size": "Velikost",
|
||||||
|
"term.size.normal": "Normální",
|
||||||
|
"term.size.compact": "Kompaktní",
|
||||||
|
"term.enable": "Zapnout",
|
||||||
|
"term.disable": "Vypnout",
|
||||||
|
"term.enabled": "Zapnuto",
|
||||||
|
"term.disabled": "Vypnuto",
|
||||||
|
"term.connect": "Připojit",
|
||||||
|
"term.connecting": "Připojování",
|
||||||
|
"term.disconnect": "Odpojit",
|
||||||
|
"term.authed": "Ověřeno",
|
||||||
|
"term.confirm": "Potvrdit?",
|
||||||
|
"term.more": "Více",
|
||||||
|
"term.less": "Méně",
|
||||||
|
"term.showMore": "Zobrazit více",
|
||||||
|
"term.showLess": "Ukaž méně",
|
||||||
|
"term.topSongs": "Nejlepší skladby",
|
||||||
|
"term.latestReleases": "Nejnovější verze",
|
||||||
|
"term.time.added": "Přidané",
|
||||||
|
"term.time.released": "Vydáno",
|
||||||
|
"term.time.updated": "Aktualizováno",
|
||||||
|
"term.time.hours": "hodin",
|
||||||
|
"term.time.hour": "hodina",
|
||||||
|
"term.time.minutes": "minut",
|
||||||
|
"term.time.minute": "minuta",
|
||||||
|
"term.time.seconds": "sekundy",
|
||||||
|
"term.time.second": "sekunda",
|
||||||
|
"term.fullscreenView": "Zobrazení na celou obrazovku",
|
||||||
|
"term.defaultView": "Výchozí zobrazení",
|
||||||
|
"term.audioSettings": "Nastavení zvuku",
|
||||||
|
"term.clearAll": "Vymazat vše",
|
||||||
|
"term.recentStations": "Nedávné stanice",
|
||||||
|
"term.language": "Jazyk",
|
||||||
|
"term.funLanguages": "Zábava",
|
||||||
|
"term.noLyrics": "Načítání... / Text nenalezen./ Instrumentální.",
|
||||||
|
"term.copyright": "Autorská práva",
|
||||||
|
"term.rightsReserved": "Všechna práva vyhrazena.",
|
||||||
|
"term.sponsor": "Sponzorujte tento projekt",
|
||||||
|
"term.ciderTeam": "Cider Tým",
|
||||||
|
"term.developer": "Vývojář",
|
||||||
|
"term.socialTeam": "Sociální tým",
|
||||||
|
"term.socials": "Socials",
|
||||||
|
"term.contributors": "Přispěvatelé",
|
||||||
|
"term.equalizer": "Ekvalizér",
|
||||||
|
"term.reset": "Resetovat",
|
||||||
|
"term.tracks": "tracks",
|
||||||
|
"term.videos": "Videa",
|
||||||
|
"term.menu": "Menu",
|
||||||
|
"term.check": "Zkontrolovat",
|
||||||
|
"term.aboutArtist": "O {{artistName}}",
|
||||||
|
"term.topResult": "Nejlepší výsledek",
|
||||||
|
"term.sharedPlaylists": "Sdílený Playlists",
|
||||||
|
"term.people": "Lidé",
|
||||||
|
"term.newpreset.name": "Název nové předvolby EQ",
|
||||||
|
"term.addedpreset": "Přidána předvolba",
|
||||||
|
"term.deletepreset.warn": "Opravdu chcete tuto předvolbu smazat?",
|
||||||
|
"term.deletedpreset": "Předvolba byla odstraněna",
|
||||||
|
"term.musicVideos": "Hudební videa",
|
||||||
|
"term.stations": "Stanice",
|
||||||
|
"term.curators": "Kurátoři",
|
||||||
|
"term.appleCurators": "Apple Curators",
|
||||||
|
"term.radioShows": "Rozhlasové pořady",
|
||||||
|
"term.recordLabels": "Nahrávací štítky",
|
||||||
|
"term.videoExtras": "Video Extra",
|
||||||
|
"term.top": "Top",
|
||||||
|
"home.title": "Domů",
|
||||||
|
"home.recentlyPlayed": "Nedávno hrané",
|
||||||
|
"home.recentlyAdded": "Nedávno přidané",
|
||||||
|
"home.artistsFeed": "Váš kanál umělců",
|
||||||
|
"home.artistsFeed.noArtist": "Nejprve sledujte některé umělce a jejich nejnovější verze budou zde",
|
||||||
|
"home.madeForYou": "Uděláno pro tebe",
|
||||||
|
"home.friendsListeningTo": "Přátelé Poslouchají",
|
||||||
|
"home.followedArtists": "Sledované umělce",
|
||||||
|
"error.appleMusicSubRequired": "Apple Music vyžaduje předplatné.",
|
||||||
|
"error.connectionError": "Došlo k problému s připojením k Apple Music.",
|
||||||
|
"error.noResults": "Žádné výsledky.",
|
||||||
|
"error.noResults.description": "Zkuste nové vyhledávání.",
|
||||||
|
"podcast.followOnCider": "Sledujte Na Cider",
|
||||||
|
"podcast.followedOnCider": "Sledujete Na Cider",
|
||||||
|
"podcast.subscribeOnItunes": "Předplatit na iTunes",
|
||||||
|
"podcast.subscribedOnItunes": "Předplaceno na iTunes",
|
||||||
|
"podcast.itunesStore": "iTunes Store",
|
||||||
|
"podcast.episodes": "Epizody",
|
||||||
|
"podcast.playEpisode": "Přehrát epizodu",
|
||||||
|
"podcast.website": "Webová stránka podcastun ",
|
||||||
|
"action.addToLibrary": "Přidat do knihovny",
|
||||||
|
"action.addToLibrary.success": "Přidáno do knihovny",
|
||||||
|
"action.addToLibrary.error": "Chyba při přidávání do knihovny",
|
||||||
|
"action.removeFromLibrary": "Odebrat z knihovny",
|
||||||
|
"action.removeFromLibrary.success": "Odebráno z knihovny",
|
||||||
|
"action.addToQueue": "Přidat do fronty",
|
||||||
|
"action.addToQueue.success": "Přidáno do fronty",
|
||||||
|
"action.addToQueue.error": "Chyba při přidávání do fronty",
|
||||||
|
"action.removeFromQueue": "Odebrat z fronty",
|
||||||
|
"action.removeFromQueue.success": "Odebráno z fronty",
|
||||||
|
"action.removeFromQueue.error": "Chyba při odstraňování z fronty",
|
||||||
|
"action.createPlaylist": "Vytvoř nový Playlist",
|
||||||
|
"action.addToPlaylist": "Přidat do Playlist",
|
||||||
|
"action.removeFromPlaylist": "Odstranit z Playlist",
|
||||||
|
"action.addToFavorites": "Přidat k oblíbeným",
|
||||||
|
"action.follow": "Sledovat",
|
||||||
|
"action.follow.success": "Sleduješ",
|
||||||
|
"action.follow.error": "Chyba sledování",
|
||||||
|
"action.unfollow": "Přestat sledovat",
|
||||||
|
"action.unfollow.success": "Nesledováno",
|
||||||
|
"action.unfollow.error": "Chyba při zrušení sledování",
|
||||||
|
"action.playNext": "Play Další",
|
||||||
|
"action.playLater": "Play Později",
|
||||||
|
"action.startRadio": "Start Rádio",
|
||||||
|
"action.goToArtist": "Přejít na Umělec",
|
||||||
|
"action.goToAlbum": "Přejděte do alba",
|
||||||
|
"action.moveToTop": "Přesunout nahoru",
|
||||||
|
"action.share": "Sdílet",
|
||||||
|
"action.rename": "Přejmenovat",
|
||||||
|
"action.love": "Milovat",
|
||||||
|
"action.unlove": "Nemilovat",
|
||||||
|
"action.dislike": "Dislike",
|
||||||
|
"action.undoDislike": "Undo dislike",
|
||||||
|
"action.showWebRemoteQR": "Web Remote",
|
||||||
|
"action.playTracksNext": "Play ${app.selectedMediaItems.length} tracks next",
|
||||||
|
"action.playTracksLater": "Play ${app.selectedMediaItems.length} tracks later",
|
||||||
|
"action.removeTracks": "Odstranit ${self.selectedItems.length} tracks from queue",
|
||||||
|
"action.import": "Importovať",
|
||||||
|
"action.export": "Exportovať",
|
||||||
|
"action.showAlbum": "Zobrazit kompletní album",
|
||||||
|
"action.tray.minimize": "Minimalizovat do lišty",
|
||||||
|
"action.tray.quit": "Přestat",
|
||||||
|
"action.tray.show": "Ukázat",
|
||||||
|
"action.update": "Aktualizace",
|
||||||
|
"action.copy": "kopírovat",
|
||||||
|
"action.newpreset": "Nová předvolba...",
|
||||||
|
"action.deletepreset": "Smazat předvolbu",
|
||||||
|
"settings.header.general": "Všeobecné",
|
||||||
|
"settings.header.general.description": "Upravte obecná nastavení pro Cider.",
|
||||||
|
"settings.option.general.language": "Jazyk",
|
||||||
|
"settings.option.general.language.main": "Jazyky",
|
||||||
|
"settings.option.general.language.fun": "Zábavné jazyky",
|
||||||
|
"settings.option.general.language.unsorted": "Neřazeno",
|
||||||
|
"settings.option.general.updateCider": "Aktualizujte Cider",
|
||||||
|
"settings.option.general.updateCider.branch": "Pobočka aktualizace cideru",
|
||||||
|
"settings.option.general.updateCider.branch.description": "Vyberte pobočku, do které chcete Cider aktualizovat",
|
||||||
|
"settings.option.general.updateCider.branch.main": "Stabilní",
|
||||||
|
"settings.option.general.updateCider.branch.develop": "Rozvoj",
|
||||||
|
"settings.header.audio": "Zvuk",
|
||||||
|
"settings.header.audio.description": "Upravte nastavení zvuku pro Cider.",
|
||||||
|
"settings.option.audio.quality": "Kvalita zvuku",
|
||||||
|
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
|
||||||
|
"settings.header.audio.quality.hireslossless.description": "až 24-bit/192 kHz",
|
||||||
|
"settings.header.audio.quality.lossless": "Lossless",
|
||||||
|
"settings.header.audio.quality.lossless.description": "až 24-bit/48 kHz",
|
||||||
|
"settings.header.audio.quality.high": "Vysoké",
|
||||||
|
"settings.header.audio.quality.high.description": "256 kbps",
|
||||||
|
"settings.header.audio.quality.standard": "Standard",
|
||||||
|
"settings.header.audio.quality.standard.description": "64 kbps",
|
||||||
|
"settings.option.audio.seamlessTransition": "Plynulý přechod zvuku",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality": "Povolit pokročilé funkce",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.description": "Povolení funkce AudioContext umožní rozšířené zvukové funkce, jako je normalizace zvuku, ekvalizéry a vizualizéry, ale na některých systémech to může způsobit zadrhávání ve zvukových stopách.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoakustická vylepšení, díky nimž vše zní bohatěji a živěji.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Síla CAP",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Změní sílu zpracování zvuku. (Agresivita může vést k nežádoucím výsledkům)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standard",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Agresivní",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalizace zvuku",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizuje špičkovou hlasitost pro jednotlivé stopy a vytváří jednotnější zážitek z poslechu.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Prostorovost zvuku",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Prostorově upravte zvuk a udělejte zvuk více 3-rozměrný (poznámka: Toto není Dolby Atmos)",
|
||||||
|
"settings.header.visual": "Vizuální",
|
||||||
|
"settings.header.visual.description": "Upravte vizuální nastavení pro Cider.",
|
||||||
|
"settings.option.visual.windowBackgroundStyle": "Styl pozadí okna",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.none": "Žádný",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.artwork": "Umělecké dílo",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.image": "obraz",
|
||||||
|
"settings.option.visual.animatedArtwork": "Animované umělecké dílo",
|
||||||
|
"settings.header.visual.animatedArtwork.always": "Vždy",
|
||||||
|
"settings.header.visual.animatedArtwork.limited": "Omezeno na stránky a speciální položky",
|
||||||
|
"settings.header.visual.animatedArtwork.disable": "Zakázat všude",
|
||||||
|
"settings.option.visual.animatedArtworkQuality": "Kvalita animovaného uměleckého díla",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.low": "Nízký",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.medium": "Střední",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.high": "Vysoký",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Velmi vysoký",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.extreme": "Extrémní",
|
||||||
|
"settings.option.visual.animatedWindowBackground": "Animované pozadí okna",
|
||||||
|
"settings.option.visual.hardwareAcceleration": "Hardwarová akcelerace",
|
||||||
|
"settings.option.visual.hardwareAcceleration.description": "Vyžaduje opětovné spuštění",
|
||||||
|
"settings.header.visual.hardwareAcceleration.default": "Výchozí",
|
||||||
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
|
"settings.header.visual.theme": "Téma",
|
||||||
|
"settings.option.visual.theme.default": "Cider",
|
||||||
|
"settings.option.visual.theme.dark": "Temný",
|
||||||
|
"settings.option.visual.showPersonalInfo": "Zobrazit osobní údaje",
|
||||||
|
"settings.header.lyrics": "Text",
|
||||||
|
"settings.header.lyrics.description": "Upravte nastavení textů pro Cider.",
|
||||||
|
"settings.option.lyrics.enableMusixmatch": "Povolit texty Musixmatch",
|
||||||
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Povolit režim karaoke (pouze Musixmatch)",
|
||||||
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Preferovaný jazyk překladu Musixmatch",
|
||||||
|
"settings.option.lyrics.enableYoutubeLyrics": "Povolit texty YouTube pro hudební videa",
|
||||||
|
"settings.header.connectivity": "Konektivita",
|
||||||
|
"settings.header.connectivity.description": "Upravte nastavení připojení pro Cider.",
|
||||||
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
|
"settings.option.connectivity.playbackNotifications": "Oznámení o přehrávání",
|
||||||
|
"settings.header.connectivity.discordRPC.cider": "Zobrazit jako 'Cider'",
|
||||||
|
"settings.header.connectivity.discordRPC.appleMusic": "Zobrazit jako 'Apple Music'",
|
||||||
|
"settings.option.connectivity.discordRPC.clearOnPause": "Vymazat Discord Rich Presence on Pause",
|
||||||
|
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Scrobble Delay (%)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Povolit Last.fm Now Playing",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Odebrat z názvu písně vystupující interprety (Last.fm)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrovaná stopa ve smyčce (Last.fm)",
|
||||||
|
"settings.header.experimental": "Experimentální",
|
||||||
|
"settings.header.experimental.description": "Upravte experimentální nastavení pro Cider.",
|
||||||
|
"settings.option.experimental.compactUI": "Kompaktní uživatelské rozhraní",
|
||||||
|
"settings.option.window.close_button_hide": "Tlačítko Zavřít by mělo aplikaci skrýt",
|
||||||
|
"settings.option.experimental.copy_log": "Zkopírujte protokoly do clipboard",
|
||||||
|
"settings.option.experimental.inline_playlists": "Vložené seznamy skladeb a alba",
|
||||||
|
"spatial.notTurnedOn": "Prostorová funkce zvuku je zakázána. Chcete-li jej používat, nejprve jej povolte.",
|
||||||
|
"spatial.spatialProperties": "Prostorové vlastnosti",
|
||||||
|
"spatial.width": "Šířka",
|
||||||
|
"spatial.height": "Výška",
|
||||||
|
"spatial.depth": "Hloubka",
|
||||||
|
"spatial.gain": "Získat",
|
||||||
|
"spatial.roomMaterials": "Materiály místnosti",
|
||||||
|
"spatial.roomDimensions": "Rozměry místnosti",
|
||||||
|
"spatial.roomPositions": "Pozice místností",
|
||||||
|
"spatial.setDimensions": "Nastavit rozměry",
|
||||||
|
"spatial.setPositions": "Nastavení pozici",
|
||||||
|
"spatial.up": "Nahoru",
|
||||||
|
"spatial.front": "Přední",
|
||||||
|
"spatial.left": "Vlevo",
|
||||||
|
"spatial.right": "Pravo",
|
||||||
|
"spatial.back": "Zadní",
|
||||||
|
"spatial.down": "Dolů",
|
||||||
|
"spatial.listener": "Posluchač",
|
||||||
|
"spatial.audioSource": "Zdroj zvuku",
|
||||||
|
"settings.header.unfinished": "Nedokončený",
|
||||||
|
"remote.web.title": "Cider Remote",
|
||||||
|
"remote.web.description": "Naskenujte QR kód a spárujte svůj telefon s touto instancí Cider",
|
||||||
|
"about.thanks": "Velké poděkování patří týmu Cider Collective Team a všem našim přispěvatelům."
|
||||||
|
}
|
|
@ -1,25 +1,15 @@
|
||||||
{ // Base File
|
{
|
||||||
|
"i18n.languageName": "Deutsch",
|
||||||
// i18n Info
|
"i18n.languageNameEnglish": "German",
|
||||||
"i18n.languageName": "Deutsch", // name of language in native language
|
"i18n.category": "main",
|
||||||
"i18n.languageNameEnglish": "German", // name of language in English
|
"i18n.authors": "@motz0815 @n0chteil",
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
|
||||||
"i18n.authors": "@motz0815", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
"app.name": "Cider",
|
||||||
|
|
||||||
"date.format": "${d}.${m}.${y}",
|
"date.format": "${d}.${m}.${y}",
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "Abbrechen",
|
"dialog.cancel": "Abbrechen",
|
||||||
"dialog.ok": "OK",
|
"dialog.ok": "OK",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "Aktualisiere Songs...",
|
"notification.updatingLibrarySongs": "Aktualisiere Songs...",
|
||||||
"notification.updatingLibraryAlbums": "Aktualisiere Alben...",
|
"notification.updatingLibraryAlbums": "Aktualisiere Alben...",
|
||||||
"notification.updatingLibraryArtists": "Aktualisiere Künstler...",
|
"notification.updatingLibraryArtists": "Aktualisiere Künstler...",
|
||||||
// Terms
|
|
||||||
"term.appleInc": "Apple Inc.",
|
"term.appleInc": "Apple Inc.",
|
||||||
"term.appleMusic": "Apple Music",
|
"term.appleMusic": "Apple Music",
|
||||||
"term.applePodcasts": "Apple Podcasts",
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
@ -33,6 +23,7 @@
|
||||||
"term.about": "Über",
|
"term.about": "Über",
|
||||||
"term.privateSession": "Private Sitzung",
|
"term.privateSession": "Private Sitzung",
|
||||||
"term.queue": "Warteschlange",
|
"term.queue": "Warteschlange",
|
||||||
|
"term.history": "Verlauf",
|
||||||
"term.search": "Suche",
|
"term.search": "Suche",
|
||||||
"term.library": "Mediathek",
|
"term.library": "Mediathek",
|
||||||
"term.listenNow": "Jetzt Hören",
|
"term.listenNow": "Jetzt Hören",
|
||||||
|
@ -45,7 +36,12 @@
|
||||||
"term.podcasts": "Podcasts",
|
"term.podcasts": "Podcasts",
|
||||||
"term.playlists": "Playlists",
|
"term.playlists": "Playlists",
|
||||||
"term.playlist": "Playlist",
|
"term.playlist": "Playlist",
|
||||||
"term.play": "Play",
|
"term.newPlaylist": "Neue Playlist",
|
||||||
|
"term.newPlaylistFolder": "Neuer Playlist-Ordner",
|
||||||
|
"term.createNewPlaylist": "Neue Playlist erstellen",
|
||||||
|
"term.createNewPlaylistFolder": "Neuen Playlist-Ordner erstellen",
|
||||||
|
"term.deletePlaylist": "Bist du sicher, dass du diese Playlist löschen willst?",
|
||||||
|
"term.play": "Wiedergabe",
|
||||||
"term.pause": "Pause",
|
"term.pause": "Pause",
|
||||||
"term.previous": "Zurück",
|
"term.previous": "Zurück",
|
||||||
"term.next": "Weiter",
|
"term.next": "Weiter",
|
||||||
|
@ -55,6 +51,7 @@
|
||||||
"term.mute": "Stummschalten",
|
"term.mute": "Stummschalten",
|
||||||
"term.unmute": "Stummschaltung aufheben",
|
"term.unmute": "Stummschaltung aufheben",
|
||||||
"term.share": "Teilen",
|
"term.share": "Teilen",
|
||||||
|
"term.share.success": "In die Zwischenablage kopiert",
|
||||||
"term.settings": "Einstellungen",
|
"term.settings": "Einstellungen",
|
||||||
"term.seeAll": "Alle Sehen",
|
"term.seeAll": "Alle Sehen",
|
||||||
"term.sortBy": "Sortieren nach",
|
"term.sortBy": "Sortieren nach",
|
||||||
|
@ -64,6 +61,7 @@
|
||||||
"term.sortBy.genre": "Genre",
|
"term.sortBy.genre": "Genre",
|
||||||
"term.sortBy.releaseDate": "Veröffentlichungsdatum",
|
"term.sortBy.releaseDate": "Veröffentlichungsdatum",
|
||||||
"term.sortBy.duration": "Länge",
|
"term.sortBy.duration": "Länge",
|
||||||
|
"term.sortBy.dateAdded": "Hinzugefügt am",
|
||||||
"term.sortOrder": "A-Z",
|
"term.sortOrder": "A-Z",
|
||||||
"term.sortOrder.ascending": "Aufsteigend",
|
"term.sortOrder.ascending": "Aufsteigend",
|
||||||
"term.sortOrder.descending": "Absteigend",
|
"term.sortOrder.descending": "Absteigend",
|
||||||
|
@ -81,12 +79,12 @@
|
||||||
"term.connecting": "Verbindet",
|
"term.connecting": "Verbindet",
|
||||||
"term.disconnect": "Trennen",
|
"term.disconnect": "Trennen",
|
||||||
"term.authed": "Autorisiert",
|
"term.authed": "Autorisiert",
|
||||||
"term.confirm": "Bestätigen ?",
|
"term.confirm": "Bestätigen?",
|
||||||
"term.more": "Mehr",
|
"term.more": "Mehr",
|
||||||
"term.less": "Weniger",
|
"term.less": "Weniger",
|
||||||
"term.showMore": "Zeige mehr",
|
"term.showMore": "Mehr anzeigen",
|
||||||
"term.showLess": "Zeige weniger",
|
"term.showLess": "Weniger anzeigen",
|
||||||
"term.topSongs" : "Top Songs",
|
"term.topSongs": "Top Songs",
|
||||||
"term.latestReleases": "Letzte Veröffentlichungen",
|
"term.latestReleases": "Letzte Veröffentlichungen",
|
||||||
"term.time.added": "Hinzugefügt",
|
"term.time.added": "Hinzugefügt",
|
||||||
"term.time.released": "Veröffentlicht",
|
"term.time.released": "Veröffentlicht",
|
||||||
|
@ -99,27 +97,48 @@
|
||||||
"term.time.second": "Sekunde",
|
"term.time.second": "Sekunde",
|
||||||
"term.fullscreenView": "Vollbildansicht",
|
"term.fullscreenView": "Vollbildansicht",
|
||||||
"term.defaultView": "Normale Ansicht",
|
"term.defaultView": "Normale Ansicht",
|
||||||
|
"term.audioSettings": "Audio-Einstellungen",
|
||||||
"term.spacializedAudioSetting": "Räumliches Audio",
|
"term.spacializedAudioSetting": "Räumliches Audio",
|
||||||
"term.clearAll": "Alle löschen",
|
"term.clearAll": "Alle löschen",
|
||||||
"term.recentStations": "Letzte Stationen",
|
"term.recentStations": "Letzte Sender",
|
||||||
"term.language": "Sprache",
|
"term.language": "Sprache",
|
||||||
"term.funLanguages": "Spaß",
|
"term.funLanguages": "Spaß",
|
||||||
"term.noLyrics": "Lädt... / Liedtext nicht gefunden./ Instrumental.",
|
"term.noLyrics": "Lädt... / Lyrik nicht gefunden./ Instrumental.",
|
||||||
"term.copyright": "Copyright",
|
"term.copyright": "Copyright",
|
||||||
"term.rightsReserved": "All Rights Reserved.",
|
"term.rightsReserved": "Alle Rechte vorbehalten.",
|
||||||
"term.sponsor": "Unterstütze dieses Projekt",
|
"term.sponsor": "Unterstütze dieses Projekt",
|
||||||
"term.ciderTeam": "Cider Team",
|
"term.ciderTeam": "Cider Team",
|
||||||
"term.developer": "Entwickler",
|
"term.developer": "Entwickler",
|
||||||
"term.socialTeam": "Social Team",
|
"term.socialTeam": "Social Team",
|
||||||
|
"term.socials": "Soziale Medien",
|
||||||
"term.contributors": "Mithelfer",
|
"term.contributors": "Mithelfer",
|
||||||
"term.equalizer": "Equalizer",
|
"term.equalizer": "Equalizer",
|
||||||
"term.reset": "Zurücksetzen",
|
"term.reset": "Zurücksetzen",
|
||||||
"term.tracks": "Lieder", // Assume x amount of tracks. e.g. 50 tracks
|
"term.tracks": "Lieder",
|
||||||
"term.videos": "Videos",
|
"term.videos": "Videos",
|
||||||
"term.menu": "Menü",
|
"term.menu": "Menü",
|
||||||
"action.showAlbum": "Zeige ganzes Album",
|
"term.check": "Nach Updates suchen",
|
||||||
|
"term.aboutArtist": "Über {{artistName}}",
|
||||||
// Home
|
"term.topResult": "Bestes Ergebnis",
|
||||||
|
"term.sharedPlaylists": "Geteilte Playlists",
|
||||||
|
"term.people": "Personen",
|
||||||
|
"term.newpreset.name": "Neuer EQ-Preset Name",
|
||||||
|
"term.addedpreset": "Preset erstellt",
|
||||||
|
"term.deletepreset.warn": "Bist du sicher, dass du dieses Preset löschen willst?",
|
||||||
|
"term.deletedpreset": "Preset gelöscht",
|
||||||
|
"term.defaultPresets": "Standard-Presets",
|
||||||
|
"term.userPresets": "Nutzer-Presets",
|
||||||
|
"term.requestError": "Es gab ein Problem bei der Anfrage.",
|
||||||
|
"term.song.link.generate": "song.link URL wird gesucht...",
|
||||||
|
"term.musicVideos": "Musikvideos",
|
||||||
|
"term.stations": "Radiosender",
|
||||||
|
"term.curators": "Kuratoren",
|
||||||
|
"term.appleCurators": "Apple-Kuratoren",
|
||||||
|
"term.radioShows": "Radiosendungen",
|
||||||
|
"term.recordLabels": "Plattenfirma",
|
||||||
|
"term.videoExtras": "Video-Extras",
|
||||||
|
"term.top": "Beste",
|
||||||
|
"term.version": "Version",
|
||||||
"home.title": "Home",
|
"home.title": "Home",
|
||||||
"home.recentlyPlayed": "Zuletzt gespielt",
|
"home.recentlyPlayed": "Zuletzt gespielt",
|
||||||
"home.recentlyAdded": "Zuletzt hinzugefügt",
|
"home.recentlyAdded": "Zuletzt hinzugefügt",
|
||||||
|
@ -128,13 +147,10 @@
|
||||||
"home.madeForYou": "Für dich gemacht",
|
"home.madeForYou": "Für dich gemacht",
|
||||||
"home.friendsListeningTo": "Freunde hören",
|
"home.friendsListeningTo": "Freunde hören",
|
||||||
"home.followedArtists": "Gefolgte Künstler",
|
"home.followedArtists": "Gefolgte Künstler",
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "Apple Music benötigt ein Abonnement.",
|
"error.appleMusicSubRequired": "Apple Music benötigt ein Abonnement.",
|
||||||
"error.connectionError": "Es ist ein Fehler aufgetreten, während sich mit Apple Music verbunden wurde.",
|
"error.connectionError": "Es gab ein Problem beim Verbinden mit Apple Music.",
|
||||||
"error.noResults": "Keine Ergebnisse.",
|
"error.noResults": "Keine Ergebnisse.",
|
||||||
"error.noResults.description": "Versuche einen anderen Suchbegriff.",
|
"error.noResults.description": "Versuche einen anderen Suchbegriff.",
|
||||||
|
|
||||||
//Podcasts
|
|
||||||
"podcast.followOnCider": "Folge auf Cider",
|
"podcast.followOnCider": "Folge auf Cider",
|
||||||
"podcast.followedOnCider": "Gefolgt auf Cider",
|
"podcast.followedOnCider": "Gefolgt auf Cider",
|
||||||
"podcast.subscribeOnItunes": "Folge auf iTunes",
|
"podcast.subscribeOnItunes": "Folge auf iTunes",
|
||||||
|
@ -143,8 +159,6 @@
|
||||||
"podcast.episodes": "Episoden",
|
"podcast.episodes": "Episoden",
|
||||||
"podcast.playEpisode": "Spiele Episode",
|
"podcast.playEpisode": "Spiele Episode",
|
||||||
"podcast.website": "Podcast Webseite",
|
"podcast.website": "Podcast Webseite",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "Zur Mediathek hinzufügen",
|
"action.addToLibrary": "Zur Mediathek hinzufügen",
|
||||||
"action.addToLibrary.success": "Zur Mediathek hinzugefügt",
|
"action.addToLibrary.success": "Zur Mediathek hinzugefügt",
|
||||||
"action.addToLibrary.error": "Fehler beim Hinzufügen zur Mediathek",
|
"action.addToLibrary.error": "Fehler beim Hinzufügen zur Mediathek",
|
||||||
|
@ -156,6 +170,7 @@
|
||||||
"action.removeFromQueue": "Aus Warteschlange entfernen",
|
"action.removeFromQueue": "Aus Warteschlange entfernen",
|
||||||
"action.removeFromQueue.success": "Aus Warteschlange entfernt",
|
"action.removeFromQueue.success": "Aus Warteschlange entfernt",
|
||||||
"action.removeFromQueue.error": "Fehler beim Entfernen aus der Warteschlange",
|
"action.removeFromQueue.error": "Fehler beim Entfernen aus der Warteschlange",
|
||||||
|
"action.createPlaylist": "Neue Playlist erstellen",
|
||||||
"action.addToPlaylist": "Zur Playlist hinzufügen",
|
"action.addToPlaylist": "Zur Playlist hinzufügen",
|
||||||
"action.removeFromPlaylist": "Aus Playlist entfernen",
|
"action.removeFromPlaylist": "Aus Playlist entfernen",
|
||||||
"action.addToFavorites": "Zu Favoriten hinzufügen",
|
"action.addToFavorites": "Zu Favoriten hinzufügen",
|
||||||
|
@ -183,117 +198,123 @@
|
||||||
"action.removeTracks": "Entferne ${self.selectedItems.length} Lieder aus der Warteschlange",
|
"action.removeTracks": "Entferne ${self.selectedItems.length} Lieder aus der Warteschlange",
|
||||||
"action.import": "Importieren",
|
"action.import": "Importieren",
|
||||||
"action.export": "Exportieren",
|
"action.export": "Exportieren",
|
||||||
|
"action.showAlbum": "Ganzes Album anzeigen",
|
||||||
// Settings - General
|
"action.tray.minimize": "Zu Tray minimieren",
|
||||||
|
"action.tray.quit": "Beenden",
|
||||||
|
"action.tray.show": "{appName} anzeigen",
|
||||||
|
"action.update": "Update",
|
||||||
|
"action.copy": "Kopieren",
|
||||||
|
"action.newpreset": "Neues Preset",
|
||||||
|
"action.deletepreset": "Preset löschen",
|
||||||
"settings.header.general": "Allgemein",
|
"settings.header.general": "Allgemein",
|
||||||
"settings.header.general.description": "Passe die allgemeinen Einstellungen für Cider an.",
|
"settings.header.general.description": "Passe die allgemeinen Einstellungen für Cider an.",
|
||||||
"settings.option.general.language": "Sprache",
|
"settings.option.general.language": "Sprache",
|
||||||
|
|
||||||
// Language optgroups
|
|
||||||
"settings.option.general.language.main": "Sprachen",
|
"settings.option.general.language.main": "Sprachen",
|
||||||
"settings.option.general.language.fun": "Lustige Sprachen",
|
"settings.option.general.language.fun": "Lustige Sprachen",
|
||||||
"settings.option.general.language.unsorted": "Unsortiert",
|
"settings.option.general.language.unsorted": "Unsortiert",
|
||||||
|
"settings.option.general.updateCider": "Cider updaten",
|
||||||
// Settings - Audio
|
"settings.option.general.updateCider.branch": "Update-Branch",
|
||||||
|
"settings.option.general.updateCider.branch.description": "Der Branch, von welchem Cider geupdatet werden soll",
|
||||||
|
"settings.option.general.updateCider.branch.main": "Stabil",
|
||||||
|
"settings.option.general.updateCider.branch.develop": "Entwicklung",
|
||||||
"settings.header.audio": "Audio",
|
"settings.header.audio": "Audio",
|
||||||
"settings.header.audio.description": "Passe die Audio-Einstellungen für Cider an.",
|
"settings.header.audio.description": "Passe die Audio-Einstellungen für Cider an.",
|
||||||
"settings.option.audio.quality": "Audioqualität", // Dropdown
|
"settings.option.audio.quality": "Audioqualität",
|
||||||
|
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
|
||||||
|
"settings.header.audio.quality.hireslossless.description": "bis zu 24-bit/192 kHz",
|
||||||
|
"settings.header.audio.quality.lossless": "Lossless",
|
||||||
|
"settings.header.audio.quality.lossless.description": "bis zu 24-bit/48 kHz",
|
||||||
"settings.header.audio.quality.high": "Hoch",
|
"settings.header.audio.quality.high": "Hoch",
|
||||||
"settings.header.audio.quality.low": "Niedrig",
|
"settings.header.audio.quality.standard": "Standard",
|
||||||
"settings.header.audio.quality.auto": "Auto",
|
"settings.option.audio.seamlessTransition": "Nahtloser Audioübergang",
|
||||||
"settings.option.audio.seamlessTransition": "Nahtloser Audioübergang", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality": "Akiviere erweiterte Funktionalität",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "Akiviere erweiterte Funktionalität", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "Das Aktivieren der erweiterten Funktionalität ermöglicht spezielle Features wie Audio-Normalisierung, Equalizer und Visualizer, jedoch könnte dies auf einigen Systemen zu Aussetzern in der Musik führen.",
|
"settings.option.audio.enableAdvancedFunctionality.description": "Das Aktivieren der erweiterten Funktionalität ermöglicht spezielle Features wie Audio-Normalisierung, Equalizer und Visualizer, jedoch könnte dies auf einigen Systemen zu Aussetzern in der Musik führen.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio-Normalisierung", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoakustische Verbesserungen die die Musik lebensechter erscheinen lassen.",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP ist nicht mit räumlichem Audio kompatibel. Bitte deaktiviere räumliches Audio zuerst.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP-Stärke",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Ändert die Stärke der Nachbearbeitung. (Aggressiv könnte zu ungewünschten Änderungen führen)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standard",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggressiv",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio-Normalisierung",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalisiert die Lautstärke aller Lieder, um die Hörerfahrung einheitlicher zu machen.",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalisiert die Lautstärke aller Lieder, um die Hörerfahrung einheitlicher zu machen.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Räumliches Audio", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Räumliches Audio",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Macht die Musik räumlicher (3D-Effekt) (Beachte: Dies ist kein Dolby Atmos)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Macht die Musik räumlicher (3D-Effekt) (Beachte: Dies ist kein Dolby Atmos)",
|
||||||
// Settings - Visual
|
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Räumliches Audio ist nicht mit CAP kompatibel. Bitte deaktiviere CAP zuerst.",
|
||||||
"settings.header.visual": "Visuell",
|
"settings.header.visual": "Visuell",
|
||||||
"settings.header.visual.description": "Passe die visuellen Einstellungen für Cider an.",
|
"settings.header.visual.description": "Passe die visuellen Einstellungen für Cider an.",
|
||||||
"settings.option.visual.windowBackgroundStyle": "Fensterhintergrund-Stil", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "Fensterhintergrund-Stil",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "Keiner",
|
"settings.header.visual.windowBackgroundStyle.none": "Keiner",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "Coverbild",
|
"settings.header.visual.windowBackgroundStyle.artwork": "Coverbild",
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "Bild",
|
"settings.header.visual.windowBackgroundStyle.image": "Bild",
|
||||||
"settings.option.visual.animatedArtwork": "Animiertes Coverbild", // Dropdown
|
"settings.option.visual.animatedArtwork": "Animiertes Coverbild",
|
||||||
"settings.header.visual.animatedArtwork.always": "Immer",
|
"settings.header.visual.animatedArtwork.always": "Immer",
|
||||||
"settings.header.visual.animatedArtwork.limited": "Beschränkt auf Seiten und Spezialeinträge",
|
"settings.header.visual.animatedArtwork.limited": "Beschränkt auf Seiten und Spezialeinträge",
|
||||||
"settings.header.visual.animatedArtwork.disable": "Überall deaktivieren",
|
"settings.header.visual.animatedArtwork.disable": "Überall deaktivieren",
|
||||||
"settings.option.visual.animatedArtworkQuality": "Qualität des Animierten Coverbilds", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "Qualität des Animierten Coverbilds",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "Niedrig",
|
"settings.header.visual.animatedArtworkQuality.low": "Niedrig",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "Mittel",
|
"settings.header.visual.animatedArtworkQuality.medium": "Mittel",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "Hoch",
|
"settings.header.visual.animatedArtworkQuality.high": "Hoch",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "Sehr hoch",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Sehr hoch",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "Extrem",
|
"settings.header.visual.animatedArtworkQuality.extreme": "Extrem",
|
||||||
"settings.option.visual.animatedWindowBackground": "Animierter Fensterhintergrund", // Toggle
|
"settings.option.visual.animatedWindowBackground": "Animierter Fensterhintergrund",
|
||||||
"settings.option.visual.hardwareAcceleration": "Hardware-Beschleunigung", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "Hardware-Beschleunigung",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "Erfordert Neustart der Anwendung",
|
"settings.option.visual.hardwareAcceleration.description": "Erfordert Neustart der Anwendung",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "Normal",
|
"settings.header.visual.hardwareAcceleration.default": "Normal",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.header.visual.theme": "Theme",
|
||||||
"settings.option.visual.showPersonalInfo": "Persönliche Daten anzeigen", // Toggle
|
"settings.option.visual.theme.github.download": "Von GitHub URL installieren",
|
||||||
|
"settings.prompt.visual.theme.github.URL": "Gib die URL des Themes ein, welches du installieren möchtest",
|
||||||
// Settings - Lyrics
|
"settings.notyf.visual.theme.install.success": "Theme erfolgreich installiert",
|
||||||
|
"settings.notyf.visual.theme.install.error": "Theme-Installation fehlgeschlagen",
|
||||||
|
"settings.option.visual.theme.default": "Cider",
|
||||||
|
"settings.option.visual.theme.dark": "Dunkel",
|
||||||
|
"settings.option.visual.showPersonalInfo": "Persönliche Daten anzeigen",
|
||||||
"settings.header.lyrics": "Liedtext",
|
"settings.header.lyrics": "Liedtext",
|
||||||
"settings.header.lyrics.description": "Passe die Liedtext-Einstellungen für Cider an.",
|
"settings.header.lyrics.description": "Passe die Liedtext-Einstellungen für Cider an.",
|
||||||
"settings.option.lyrics.enableMusixmatch": "Aktiviere Musixmatch-Liedtexte", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "Aktiviere Musixmatch-Liedtexte",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "Aktiviere Karaoke-Modus (nur mit Musixmatch)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Aktiviere Karaoke-Modus (nur mit Musixmatch)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Bevorzugte Sprache für Musixmatch-Übersetzung", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Bevorzugte Sprache für Musixmatch-Übersetzung",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "Aktiviere YouTube-Liedtexte für Musikvideos", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "Aktiviere YouTube-Liedtexte für Musikvideos",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "Konnektivität",
|
"settings.header.connectivity": "Konnektivität",
|
||||||
"settings.header.connectivity.description": "Passe die Konnektivitäts-Einstellungen für Cider an.",
|
"settings.header.connectivity.description": "Passe die Konnektivitäts-Einstellungen für Cider an.",
|
||||||
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
"settings.option.connectivity.playbackNotifications": "Wiedergabe-Benachrichtigungen", // Toggle
|
"settings.option.connectivity.playbackNotifications": "Wiedergabe-Benachrichtigungen",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.header.connectivity.discordRPC.cider": "'Cider' anzeigen",
|
||||||
"settings.header.connectivity.discordRPC.cider": "Zeige als 'Cider'",
|
"settings.header.connectivity.discordRPC.appleMusic": "'Apple Music' anzeigen",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "Zeige als 'Apple Music'",
|
"settings.option.connectivity.discordRPC.clearOnPause": "Leere Discord Rich Presence wenn pausiert",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "Leere Discord Rich Presence wenn pausiert", // Toggle
|
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling",
|
||||||
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling", // Option to Connect
|
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble Delay (%)",
|
"settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble Delay (%)",
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Aktiviere LastFM Jetzt spielend",
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Aktiviere LastFM Jetzt spielend",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Entferne Künstler-Featuring von Liedtitel (LastFM)",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Entferne Künstler-Featuring von Liedtitel (LastFM)",
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtere gelooptes Lied (LastFM)",
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtere gelooptes Lied (LastFM)",
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "Experimentell",
|
"settings.header.experimental": "Experimentell",
|
||||||
"settings.header.experimental.description": "Passe die experimentellen Einstellungen für Cider an.",
|
"settings.header.experimental.description": "Passe die experimentellen Einstellungen für Cider an.",
|
||||||
"settings.option.experimental.compactUI": "Kompaktes UI", // Toggle
|
"settings.option.experimental.compactUI": "Kompaktes UI",
|
||||||
"settings.option.experimental.closeButtonBehaviour": "Verhalten der Schließtaste",
|
"settings.option.window.close_button_hide": "Schließtaste soll die App verbergen",
|
||||||
"settings.option.experimental.closeButtonBehaviour.quit": "Cider Schließen",
|
"settings.option.experimental.copy_log": "Kopiere Logs in die Zwischenablage",
|
||||||
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "In Taskleiste minimieren",
|
"settings.option.experimental.inline_playlists": "Inline Playlists und Alben",
|
||||||
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "In den Tray minimieren",
|
"spatial.notTurnedOn": "Die Audio-Spatialisierung ist deaktiviert. Um sie zu verwenden, musst du diese zuerst aktivieren.",
|
||||||
// Refer to term.disabled & term.enabled
|
"spatial.spatialProperties": "Räumliche Einstellungen",
|
||||||
|
"spatial.width": "Breite",
|
||||||
// Spatialization Menu
|
"spatial.height": "Höhe",
|
||||||
"spatial.spatialProperties" : "Räumliche Einstellungen",
|
"spatial.depth": "Tiefe",
|
||||||
"spatial.width" : "Breite",
|
"spatial.gain": "Gain",
|
||||||
"spatial.height" : "Höhe",
|
"spatial.roomMaterials": "Raummaterialien",
|
||||||
"spatial.depth" : "Tiefe",
|
"spatial.roomDimensions": "Raumabmessungen",
|
||||||
"spatial.gain" : "Gain",
|
"spatial.roomPositions": "Raumpositionen",
|
||||||
"spatial.roomMaterials" : "Raummaterialien",
|
"spatial.setDimensions": "Setze Abmessungen",
|
||||||
"spatial.roomDimensions" : "Raumabmessungen",
|
"spatial.setPositions": "Setze Positionen",
|
||||||
"spatial.roomPositions" : "Raumpositionen",
|
"spatial.up": "Oben",
|
||||||
"spatial.setDimensions" : "Setze Abmessungen",
|
"spatial.front": "Vorne",
|
||||||
"spatial.setPositions" : "Setze Positionen",
|
"spatial.left": "Links",
|
||||||
"spatial.up" : "Oben",
|
"spatial.right": "Rechts",
|
||||||
"spatial.front" : "Vorne",
|
"spatial.back": "Hinten",
|
||||||
"spatial.left" : "Links",
|
"spatial.down": "Unten",
|
||||||
"spatial.right" : "Rechts",
|
"spatial.listener": "Hörer*in",
|
||||||
"spatial.back" : "Hinten",
|
"spatial.audioSource": "Audioquelle",
|
||||||
"spatial.down" : "Unten",
|
"settings.header.unfinished": "Unvollendet",
|
||||||
"spatial.listener" : "Hörer*in",
|
|
||||||
"spatial.audioSource" : "Audioquelle",
|
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "Unfertig",
|
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "Cider Remote",
|
"remote.web.title": "Cider Remote",
|
||||||
"remote.web.description": "Scanne den QR-Code um dein Handy mit dieser Cider-Instanz zu verbinden",
|
"remote.web.description": "Scanne den QR-Code um dein Handy mit dieser Cider-Instanz zu verbinden",
|
||||||
|
|
||||||
// About
|
|
||||||
"about.thanks": "Vielen lieben Dank an das Cider Collective Team und an alle Mithelfer."
|
"about.thanks": "Vielen lieben Dank an das Cider Collective Team und an alle Mithelfer."
|
||||||
}
|
}
|
|
@ -1,25 +1,15 @@
|
||||||
{
|
{
|
||||||
|
|
||||||
// i18n Info
|
|
||||||
"i18n.languageName": "Ελληνικά",
|
"i18n.languageName": "Ελληνικά",
|
||||||
"i18n.languageNameEnglish": "Greek",
|
"i18n.languageNameEnglish": "Greek",
|
||||||
"i18n.category": "main",
|
"i18n.category": "main",
|
||||||
"i18n.authors": "@down-bad",
|
"i18n.authors": "@down-bad",
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
"app.name": "Cider",
|
||||||
|
|
||||||
"date.format": "${d} ${m}, ${y}",
|
"date.format": "${d} ${m}, ${y}",
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "Ακύρωση",
|
"dialog.cancel": "Ακύρωση",
|
||||||
"dialog.ok": "ΟΚ",
|
"dialog.ok": "ΟΚ",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "Ενημέρωση βιβλιοθήκης τραγουδιών...",
|
"notification.updatingLibrarySongs": "Ενημέρωση βιβλιοθήκης τραγουδιών...",
|
||||||
"notification.updatingLibraryAlbums": "Ενημέρωση βιβλιοθήκης άλμπουμ...",
|
"notification.updatingLibraryAlbums": "Ενημέρωση βιβλιοθήκης άλμπουμ...",
|
||||||
"notification.updatingLibraryArtists": "Ενημέρωση βιβλιοθήκης καλλιτεχνών...",
|
"notification.updatingLibraryArtists": "Ενημέρωση βιβλιοθήκης καλλιτεχνών...",
|
||||||
// Terms
|
|
||||||
"term.appleInc": "Apple Inc.",
|
"term.appleInc": "Apple Inc.",
|
||||||
"term.appleMusic": "Apple Music",
|
"term.appleMusic": "Apple Music",
|
||||||
"term.applePodcasts": "Apple Podcasts",
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
@ -33,6 +23,7 @@
|
||||||
"term.about": "Σχετικά με",
|
"term.about": "Σχετικά με",
|
||||||
"term.privateSession": "Ιδιωτική περίοδος λειτουργίας",
|
"term.privateSession": "Ιδιωτική περίοδος λειτουργίας",
|
||||||
"term.queue": "Ουρά",
|
"term.queue": "Ουρά",
|
||||||
|
"term.history": "Ιστορικό",
|
||||||
"term.search": "Εύρεση",
|
"term.search": "Εύρεση",
|
||||||
"term.library": "Βιβλιοθήκη",
|
"term.library": "Βιβλιοθήκη",
|
||||||
"term.listenNow": "Ακρόαση",
|
"term.listenNow": "Ακρόαση",
|
||||||
|
@ -45,6 +36,11 @@
|
||||||
"term.podcasts": "Podcast",
|
"term.podcasts": "Podcast",
|
||||||
"term.playlists": "Λίστες αναπαραγωγής",
|
"term.playlists": "Λίστες αναπαραγωγής",
|
||||||
"term.playlist": "Λίστα αναπαραγωγής",
|
"term.playlist": "Λίστα αναπαραγωγής",
|
||||||
|
"term.newPlaylist": "Νέα λίστα αναπαραγωγής",
|
||||||
|
"term.newPlaylistFolder": "Νέος φάκελος λίστας",
|
||||||
|
"term.createNewPlaylist": "Δημιουργία νέας λίστας αναπαραγωγής",
|
||||||
|
"term.createNewPlaylistFolder": "Δημιουργία νέου φακέλου λίστας",
|
||||||
|
"term.deletePlaylist": "Θέλετε σίγουρα να διαγράψετε αυτή τη λίστα αναπαραγωγής;",
|
||||||
"term.play": "Αναπαραγωγή",
|
"term.play": "Αναπαραγωγή",
|
||||||
"term.pause": "Παύση",
|
"term.pause": "Παύση",
|
||||||
"term.previous": "Προηγούμενο",
|
"term.previous": "Προηγούμενο",
|
||||||
|
@ -55,6 +51,7 @@
|
||||||
"term.mute": "Σίγαση",
|
"term.mute": "Σίγαση",
|
||||||
"term.unmute": "Κατάργηση σίγασης",
|
"term.unmute": "Κατάργηση σίγασης",
|
||||||
"term.share": "Κοινή Χρήση",
|
"term.share": "Κοινή Χρήση",
|
||||||
|
"term.share.success": "Αντιγράφηκε στο πρόχειρο",
|
||||||
"term.settings": "Ρυθμίσεις",
|
"term.settings": "Ρυθμίσεις",
|
||||||
"term.seeAll": "Προβολή όλων",
|
"term.seeAll": "Προβολή όλων",
|
||||||
"term.sortBy": "Ταξινόμηση κατά",
|
"term.sortBy": "Ταξινόμηση κατά",
|
||||||
|
@ -64,6 +61,7 @@
|
||||||
"term.sortBy.genre": "Είδος",
|
"term.sortBy.genre": "Είδος",
|
||||||
"term.sortBy.releaseDate": "Ημερομηνία κυκλοφορίας",
|
"term.sortBy.releaseDate": "Ημερομηνία κυκλοφορίας",
|
||||||
"term.sortBy.duration": "Διάρκεια",
|
"term.sortBy.duration": "Διάρκεια",
|
||||||
|
"term.sortBy.dateAdded": "Ημερομηνία προσθήκης",
|
||||||
"term.sortOrder": "Α-Ω",
|
"term.sortOrder": "Α-Ω",
|
||||||
"term.sortOrder.ascending": "Αύξουσα",
|
"term.sortOrder.ascending": "Αύξουσα",
|
||||||
"term.sortOrder.descending": "Φθίνουσα",
|
"term.sortOrder.descending": "Φθίνουσα",
|
||||||
|
@ -86,7 +84,7 @@
|
||||||
"term.less": "Λιγότερα",
|
"term.less": "Λιγότερα",
|
||||||
"term.showMore": "Εμφάνιση περισσότερων",
|
"term.showMore": "Εμφάνιση περισσότερων",
|
||||||
"term.showLess": "Εμφάνιση λιγότερων",
|
"term.showLess": "Εμφάνιση λιγότερων",
|
||||||
"term.topSongs" : "Κορυφαία τραγούδια",
|
"term.topSongs": "Κορυφαία τραγούδια",
|
||||||
"term.latestReleases": "Τελευταίες κυκλοφορίες",
|
"term.latestReleases": "Τελευταίες κυκλοφορίες",
|
||||||
"term.time.added": "Προστέθηκε",
|
"term.time.added": "Προστέθηκε",
|
||||||
"term.time.released": "Κυκλοφόρησε",
|
"term.time.released": "Κυκλοφόρησε",
|
||||||
|
@ -99,7 +97,8 @@
|
||||||
"term.time.second": "δευτερόλεπτο",
|
"term.time.second": "δευτερόλεπτο",
|
||||||
"term.fullscreenView": "Πλήρης οθόνη",
|
"term.fullscreenView": "Πλήρης οθόνη",
|
||||||
"term.defaultView": "Κανονική οθόνη",
|
"term.defaultView": "Κανονική οθόνη",
|
||||||
"term.spacializedAudioSetting": "Χωρική ρύθμιση ήχου",
|
"term.audioSettings": "Ρυθμίσεις ήχου",
|
||||||
|
"term.audioControls": "Έλεγχος ήχου",
|
||||||
"term.clearAll": "Εκκαθάριση όλων",
|
"term.clearAll": "Εκκαθάριση όλων",
|
||||||
"term.recentStations": "Πρόσφατοι σταθμοί",
|
"term.recentStations": "Πρόσφατοι σταθμοί",
|
||||||
"term.language": "Γλώσσα",
|
"term.language": "Γλώσσα",
|
||||||
|
@ -111,15 +110,52 @@
|
||||||
"term.ciderTeam": "Ομάδα Cider",
|
"term.ciderTeam": "Ομάδα Cider",
|
||||||
"term.developer": "Προγραμματιστής",
|
"term.developer": "Προγραμματιστής",
|
||||||
"term.socialTeam": "Κοινωνική Ομάδα",
|
"term.socialTeam": "Κοινωνική Ομάδα",
|
||||||
|
"term.socials": "Κοινωνικά Μέσα",
|
||||||
"term.contributors": "Συνεισφέροντες",
|
"term.contributors": "Συνεισφέροντες",
|
||||||
"term.equalizer": "Ισοσταθμιστής",
|
"term.equalizer": "Ισοσταθμιστής",
|
||||||
"term.reset": "Επαναφορά",
|
"term.reset": "Επαναφορά",
|
||||||
"term.tracks": "τραγούδια", // Assume x amount of tracks. e.g. 50 tracks
|
"term.tracks": {
|
||||||
|
"one": "τραγούδι",
|
||||||
|
"other": "τραγούδια"
|
||||||
|
},
|
||||||
"term.videos": "Βίντεο",
|
"term.videos": "Βίντεο",
|
||||||
"term.menu": "Μενού",
|
"term.menu": "Μενού",
|
||||||
"action.showAlbum": "Εμφάνιση ολόκληρου άλμπουμ",
|
"term.check": "Έλεγχος",
|
||||||
|
"term.aboutArtist": "Σχετικά με {{artistName}}",
|
||||||
// Home
|
"term.topResult": "Κορυφαίο αποτέλεσμα",
|
||||||
|
"term.sharedPlaylists": "Κοινόχρηστες λίστες αναπαραγωγής",
|
||||||
|
"term.people": "Άτομα",
|
||||||
|
"term.newpreset.name": "Νέο όνομα προρύθμισης EQ",
|
||||||
|
"term.addedpreset": "Η προρύθμιση προστέθηκε",
|
||||||
|
"term.deletepreset.warn": "Θέλετε σίγουρα να διαγράψετε αυτή τη προρύθμιση;",
|
||||||
|
"term.deletedpreset": "Η προρύθμιση αφαιρέθηκε",
|
||||||
|
"term.defaultPresets": "Προκαθορισμένες προρυθμίσεις",
|
||||||
|
"term.userPresets": "Προρυθμίσεις χρήστη",
|
||||||
|
"term.requestError": "Παρουσιάστηκε κάποιο πρόβλημα με το αίτημά σου.",
|
||||||
|
"term.song.link.generate": "Γίνεται λήψη συνδέσμου song.link...",
|
||||||
|
"term.musicVideos": "Μουσικά βίντεο",
|
||||||
|
"term.stations": "Σταθμοί",
|
||||||
|
"term.curators": "Επιμελητές",
|
||||||
|
"term.appleCurators": "Επιμελητές Apple",
|
||||||
|
"term.radioShows": "Ραδιοφωνικές εκπομπές",
|
||||||
|
"term.recordLabels": "Δισκογραφικές εταιρίες",
|
||||||
|
"term.videoExtras": "Πρόσθετο υλικό βίντεο",
|
||||||
|
"term.top": "Κορυφαία",
|
||||||
|
"term.version": "Έκδοση",
|
||||||
|
"term.noVideos": "Δεν βρέθηκαν βίντεο",
|
||||||
|
"term.plugin": "Πρόσθετα",
|
||||||
|
"term.pluginMenu": "Μενού πρόσθετων",
|
||||||
|
"term.replay": "Replay",
|
||||||
|
"term.uniqueAlbums": "Μοναδικά άλμπουμ",
|
||||||
|
"term.uniqueArtists": "Μοναδικοί καλλιτέχνες",
|
||||||
|
"term.uniqueSongs": "Μοναδικά τραγούδια",
|
||||||
|
"term.topArtists": "Κορυφαίοι καλλιτέχνες",
|
||||||
|
"term.listenedTo": "Άκουσες:",
|
||||||
|
"term.times": "φορές",
|
||||||
|
"term.topAlbums": "Κορυφαία άλμπουμ",
|
||||||
|
"term.plays": "Αναπαραγωγές",
|
||||||
|
"term.topGenres": "Κορυφαία είδη",
|
||||||
|
"term.confirmLogout": "Θέλετε σίγουρα να αποσυνδεθείτε;",
|
||||||
"home.title": "Αρχική",
|
"home.title": "Αρχική",
|
||||||
"home.recentlyPlayed": "Έπαιξαν πρόσφατα",
|
"home.recentlyPlayed": "Έπαιξαν πρόσφατα",
|
||||||
"home.recentlyAdded": "Πρόσφατες προσθήκες",
|
"home.recentlyAdded": "Πρόσφατες προσθήκες",
|
||||||
|
@ -128,13 +164,10 @@
|
||||||
"home.madeForYou": "Δημιουργήθηκε για εσάς",
|
"home.madeForYou": "Δημιουργήθηκε για εσάς",
|
||||||
"home.friendsListeningTo": "Οι φίλοι σου ακούν",
|
"home.friendsListeningTo": "Οι φίλοι σου ακούν",
|
||||||
"home.followedArtists": "Καλλιτέχνες που ακολουθείτε",
|
"home.followedArtists": "Καλλιτέχνες που ακολουθείτε",
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "Το Apple Music απαιτεί μια συνδρομή.",
|
"error.appleMusicSubRequired": "Το Apple Music απαιτεί μια συνδρομή.",
|
||||||
"error.connectionError": "Δεν είναι δυνατή η σύνδεση με το Apple Music.",
|
"error.connectionError": "Δεν είναι δυνατή η σύνδεση με το Apple Music.",
|
||||||
"error.noResults": "Κανένα αποτέλεσμα.",
|
"error.noResults": "Κανένα αποτέλεσμα.",
|
||||||
"error.noResults.description": "Δοκιμάστε μια νέα αναζήτηση.",
|
"error.noResults.description": "Δοκιμάστε μια νέα αναζήτηση.",
|
||||||
|
|
||||||
//Podcasts
|
|
||||||
"podcast.followOnCider": "Ακολούθηση στο Cider",
|
"podcast.followOnCider": "Ακολούθηση στο Cider",
|
||||||
"podcast.followedOnCider": "Ακολουθείτε στο Cider",
|
"podcast.followedOnCider": "Ακολουθείτε στο Cider",
|
||||||
"podcast.subscribeOnItunes": "Συνδρομή στο iTunes",
|
"podcast.subscribeOnItunes": "Συνδρομή στο iTunes",
|
||||||
|
@ -143,8 +176,6 @@
|
||||||
"podcast.episodes": "Επεισόδια",
|
"podcast.episodes": "Επεισόδια",
|
||||||
"podcast.playEpisode": "Αναπαραγωγή επεισοδίου",
|
"podcast.playEpisode": "Αναπαραγωγή επεισοδίου",
|
||||||
"podcast.website": "Ιστότοπος Podcast",
|
"podcast.website": "Ιστότοπος Podcast",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "Προσθήκη στη βιβλιοθήκη",
|
"action.addToLibrary": "Προσθήκη στη βιβλιοθήκη",
|
||||||
"action.addToLibrary.success": "Προστέθηκε στη βιβλιοθήκη",
|
"action.addToLibrary.success": "Προστέθηκε στη βιβλιοθήκη",
|
||||||
"action.addToLibrary.error": "Σφάλμα Προσθήκης στη βιβλιοθήκης",
|
"action.addToLibrary.error": "Σφάλμα Προσθήκης στη βιβλιοθήκης",
|
||||||
|
@ -156,6 +187,7 @@
|
||||||
"action.removeFromQueue": "Αφαίρεση από την ουρά",
|
"action.removeFromQueue": "Αφαίρεση από την ουρά",
|
||||||
"action.removeFromQueue.success": "Αφαιρέθηκε από την ουρά",
|
"action.removeFromQueue.success": "Αφαιρέθηκε από την ουρά",
|
||||||
"action.removeFromQueue.error": "Σφάλμα Αφαίρεσης από την ουρά",
|
"action.removeFromQueue.error": "Σφάλμα Αφαίρεσης από την ουρά",
|
||||||
|
"action.createPlaylist": "Δημιουργία νέας λίστας αναπαραγωγής",
|
||||||
"action.addToPlaylist": "Προσθήκη σε λίστα",
|
"action.addToPlaylist": "Προσθήκη σε λίστα",
|
||||||
"action.removeFromPlaylist": "Αφαίρεση από λίστα",
|
"action.removeFromPlaylist": "Αφαίρεση από λίστα",
|
||||||
"action.addToFavorites": "Προσθήκη στα αγαπημένα",
|
"action.addToFavorites": "Προσθήκη στα αγαπημένα",
|
||||||
|
@ -183,117 +215,151 @@
|
||||||
"action.removeTracks": "Αφαίρεση ${self.selectedItems.length} τραγουδιών από την ουρά",
|
"action.removeTracks": "Αφαίρεση ${self.selectedItems.length} τραγουδιών από την ουρά",
|
||||||
"action.import": "Εισαγωγή",
|
"action.import": "Εισαγωγή",
|
||||||
"action.export": "Εξαγωγή",
|
"action.export": "Εξαγωγή",
|
||||||
|
"action.showAlbum": "Εμφάνιση ολόκληρου άλμπουμ",
|
||||||
// Settings - General
|
"action.tray.minimize": "Ελαχιστοποίηση στη γωνία γραμμής εργασιών",
|
||||||
|
"action.tray.quit": "Έξοδος",
|
||||||
|
"action.tray.show": "Εμφάνιση",
|
||||||
|
"action.update": "Ενημέρωση",
|
||||||
|
"action.install": "Εγκατάσταση",
|
||||||
|
"action.copy": "Αντιγραφή",
|
||||||
|
"action.newpreset": "Νέα προρύθμιση...",
|
||||||
|
"action.deletepreset": "Διαγραφή προρύθμισης",
|
||||||
|
"action.open": "Άνοιγμα",
|
||||||
"settings.header.general": "Γενικά",
|
"settings.header.general": "Γενικά",
|
||||||
"settings.header.general.description": "Προσαρμογή γενικών ρυθμίσεων για το Cider.",
|
"settings.header.general.description": "Προσαρμογή γενικών ρυθμίσεων για το Cider.",
|
||||||
"settings.option.general.language": "Γλώσσα",
|
"settings.option.general.language": "Γλώσσα",
|
||||||
|
"settings.option.general.resumebehavior": "Συμπεριφορά συνέχισης",
|
||||||
// Language optgroups
|
"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": "Αταξινόμητες",
|
||||||
|
"settings.option.general.updateCider": "Ενημέρωση Cider",
|
||||||
// Settings - Audio
|
"settings.option.general.updateCider.branch": "Κλάδος ενημέρωσης Cider",
|
||||||
|
"settings.option.general.updateCider.branch.description": "Επιλέξτε τον κλάδο στον οποίο θα γίνεται η ενημέρωση του Cider",
|
||||||
|
"settings.option.general.updateCider.branch.main": "Σταθερό",
|
||||||
|
"settings.option.general.updateCider.branch.develop": "Αναπτυξιακό",
|
||||||
"settings.header.audio": "Ήχος",
|
"settings.header.audio": "Ήχος",
|
||||||
"settings.header.audio.description": "Προσαρμογή ρυθμίσεων ήχου για το Cider.",
|
"settings.header.audio.description": "Προσαρμογή ρυθμίσεων ήχου για το Cider.",
|
||||||
"settings.option.audio.quality": "Ποιότητα Ήχου", // Dropdown
|
"settings.option.audio.volumeStep": "Βήματα έντασης",
|
||||||
|
"settings.option.audio.maxVolume": "Μέγιστη ένταση",
|
||||||
|
"settings.option.audio.quality": "Ποιότητα ήχου",
|
||||||
|
"settings.header.audio.quality.hireslossless": "Lossless υψηλής ανάλυσης",
|
||||||
|
"settings.header.audio.quality.hireslossless.description": "έως και 24-bit/192 kHz",
|
||||||
|
"settings.header.audio.quality.lossless": "Lossless",
|
||||||
|
"settings.header.audio.quality.lossless.description": "έως και 24-bit/48 kHz",
|
||||||
"settings.header.audio.quality.high": "Υψηλή",
|
"settings.header.audio.quality.high": "Υψηλή",
|
||||||
"settings.header.audio.quality.low": "Χαμηλή",
|
"settings.header.audio.quality.high.description": "256 kbps",
|
||||||
"settings.header.audio.quality.auto": "Αυτόματη",
|
"settings.header.audio.quality.standard": "Κανονική",
|
||||||
"settings.option.audio.seamlessTransition": "Αδιάκοπη Μετάβαση Ήχου", // Toggle
|
"settings.header.audio.quality.standard.description": "64 kbps",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "Ενεργοποίηση Προηγμένης Λειτουργικότητας", // Toggle
|
"settings.option.audio.seamlessTransition": "Αδιάκοπη μετάβαση ήχου",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality": "Ενεργοποίηση προηγμένης λειτουργικότητας",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "Ενεργοποιώντας τη λειτουργικότητα AudioContext θα επιτρέψει σε επεκταμένες δυνατότητες ήχου όπως Κανονικοποίηση Έντασης Ήχου, Ισοσταθμιστές και Οπτικοποιητές, ωστόσο σε κάποια συστήματα μπορεί να προκαλέσει τραύλισμα ήχου.",
|
"settings.option.audio.enableAdvancedFunctionality.description": "Ενεργοποιώντας τη λειτουργικότητα AudioContext θα επιτρέψει σε επεκταμένες δυνατότητες ήχου όπως Κανονικοποίηση Έντασης Ήχου, Ισοσταθμιστές και Οπτικοποιητές, ωστόσο σε κάποια συστήματα μπορεί να προκαλέσει τραύλισμα ήχου.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Κανονικοποίηση Έντασης Ήχου", // Toggle
|
"settings.option.audio.audioLab": "Cider Audio Lab",
|
||||||
|
"settings.option.audio.audioLab.description": "Περιέχει μια ποικιλία από τροποποιήσεις ήχου που έγιναν από την ομάδα προγραμματιστών του Cider",
|
||||||
|
"settings.warn.audioLab.withoutAF": "Το AudioContext (προηγμένη λειτουργικότητα) απαιτείται για την ενεργοποίηση του Cider Audio Laboratory.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Ένταση Analog Warmth",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "Αλλάζει την ένταση της επεξεργασίας του Analog Warmth Module.",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "Το CAP δεν είναι συμβατό με τη Χωρικοποίηση Ήχου. Παρακαλούμε απενεργοποιήστε τη Χωρικοποίηση Ήχου για να συνεχίσετε.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Ένταση CAP",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Αλλάζει την ένταση της επεξεργασίας του ήχου. (Η επιθετική επεξεργασία μπορεί να αποφέρει ανεπιθύμητα αποτελέσματα)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Κανονική",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Επιθετική",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Κανονικοποίηση Έντασης Ήχου",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Κανονικοποιεί την ένταση για μεμονωμένα κομμάτια για μια πιο ομοιόμορφη εμπειρία ακρόασης.",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Κανονικοποιεί την ένταση για μεμονωμένα κομμάτια για μια πιο ομοιόμορφη εμπειρία ακρόασης.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Χωρικοποίηση Ήχου", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Χωρικοποίηση Ήχου",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Πιο τρισδιάστατος και χωρικοποιημένος ήχος (σημείωση: Αυτό δεν είναι Dolby Atmos)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Πιο τρισδιάστατος και χωρικοποιημένος ήχος (σημείωση: Αυτό δεν είναι Dolby Atmos)",
|
||||||
// Settings - Visual
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Χωρικοποίηση Cider",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description": "Pre-tuned Εφέ Χωρικοποίησης, απενεργοποιεί τις προσαρμόσιμες ρυθμίσεις της Χωρικοποίησης Ήχου. Η Χωρικοποίηση Ήχου πρέπει να είναι ενεργοποιημένη.",
|
||||||
|
"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": "Στυλ Φόντου Παραθύρου", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "Στυλ Φόντου Παραθύρου",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "Κανένα",
|
"settings.header.visual.windowBackgroundStyle.none": "Κανένα",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "Εξώφυλλο",
|
"settings.header.visual.windowBackgroundStyle.artwork": "Εξώφυλλο",
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "Εικόνα",
|
"settings.header.visual.windowBackgroundStyle.image": "Εικόνα",
|
||||||
"settings.option.visual.animatedArtwork": "Κινούμενο Εξώφυλλο", // Dropdown
|
"settings.option.visual.animatedArtwork": "Κινούμενο Εξώφυλλο",
|
||||||
"settings.header.visual.animatedArtwork.always": "Πάντα",
|
"settings.header.visual.animatedArtwork.always": "Πάντα",
|
||||||
"settings.header.visual.animatedArtwork.limited": "Περιορισμός σε σελίδες και ειδικές καταχωρήσεις",
|
"settings.header.visual.animatedArtwork.limited": "Περιορισμός σε σελίδες και ειδικές καταχωρήσεις",
|
||||||
"settings.header.visual.animatedArtwork.disable": "Απενεργοποιημένο παντού",
|
"settings.header.visual.animatedArtwork.disable": "Απενεργοποιημένο παντού",
|
||||||
"settings.option.visual.animatedArtworkQuality": "Ποιότητα Κινούμενου Εξωφύλλου", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "Ποιότητα Κινούμενου Εξωφύλλου",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "Χαμηλή",
|
"settings.header.visual.animatedArtworkQuality.low": "Χαμηλή",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "Μέτρια",
|
"settings.header.visual.animatedArtworkQuality.medium": "Μέτρια",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "Υψηλή",
|
"settings.header.visual.animatedArtworkQuality.high": "Υψηλή",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "Πολύ Υψηλή",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Πολύ Υψηλή",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "Ακραία",
|
"settings.header.visual.animatedArtworkQuality.extreme": "Ακραία",
|
||||||
"settings.option.visual.animatedWindowBackground": "Κινούμενο Φόντο Παραθύρου", // Toggle
|
"settings.option.visual.animatedWindowBackground": "Κινούμενο Φόντο Παραθύρου",
|
||||||
"settings.option.visual.hardwareAcceleration": "Επιτάχυνση Υλικού", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "Επιτάχυνση Υλικού",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "Απαιτεί επανεκκίνηση",
|
"settings.option.visual.hardwareAcceleration.description": "Απαιτεί επανεκκίνηση",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "Προεπιλογή",
|
"settings.header.visual.hardwareAcceleration.default": "Προεπιλογή",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.header.visual.theme": "Θέμα",
|
||||||
"settings.option.visual.showPersonalInfo": "Εμφάνιση προσωπικών στοιχείων", // Toggle
|
"settings.option.visual.theme.github.download": "Εγκατάσταση από σύνδεσμο GitHub",
|
||||||
|
"settings.option.visual.theme.github.explore": "Εξερεύνηση θεμάτων GitHub",
|
||||||
// Settings - Lyrics
|
"settings.header.visual.theme.github.page": "Θέματα από το GitHub",
|
||||||
|
"settings.option.visual.theme.github.install.confirm": "Θέλετε σίγουρα να εγκαταστήσετε το θέμα {{ repo }};",
|
||||||
|
"settings.prompt.visual.theme.github.URL": "Εισάγετε τον σύνδεσμο του θέματος που θέλετε να εγκαταστήσετε",
|
||||||
|
"settings.notyf.visual.theme.install.success": "Το θέμα εγκαταστάθηκε με επιτυχία",
|
||||||
|
"settings.notyf.visual.theme.install.error": "Αποτυχία εγκατάστασης του θέματος",
|
||||||
|
"settings.option.visual.theme.default": "Cider",
|
||||||
|
"settings.option.visual.theme.dark": "Σκοτεινό",
|
||||||
|
"settings.option.visual.showPersonalInfo": "Εμφάνιση προσωπικών στοιχείων",
|
||||||
"settings.header.lyrics": "Στίχοι",
|
"settings.header.lyrics": "Στίχοι",
|
||||||
"settings.header.lyrics.description": "Προσαρμογή ρυθμίσεων στίχων για το Cider.",
|
"settings.header.lyrics.description": "Προσαρμογή ρυθμίσεων στίχων για το Cider.",
|
||||||
"settings.option.lyrics.enableMusixmatch": "Ενεργοποίηση Στίχων Musixmatch", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "Ενεργοποίηση Στίχων Musixmatch",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "Ενεργοποίηση Λειτουργίας Καραόκε (Musixmatch μόνο)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Ενεργοποίηση Λειτουργίας Καραόκε (Musixmatch μόνο)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Προτιμώμενη Γλώσσα Μετάφρασης Musixmatch", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Προτιμώμενη Γλώσσα Μετάφρασης Musixmatch",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "Ενεργοποίηση Στίχων Youtube για Μουσικά Βίντεο", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "Ενεργοποίηση Στίχων Youtube για Μουσικά Βίντεο",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "Σύνδεση",
|
"settings.header.connectivity": "Σύνδεση",
|
||||||
"settings.header.connectivity.description": "Προσαρμογή ρυθμίσεων σύνδεσης για το Cider.",
|
"settings.header.connectivity.description": "Προσαρμογή ρυθμίσεων σύνδεσης για το Cider.",
|
||||||
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
"settings.option.connectivity.playbackNotifications": "Ειδοποιήσεις Αναπαραγωγής", // Toggle
|
"settings.option.connectivity.playbackNotifications": "Ειδοποιήσεις Αναπαραγωγής",
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "Εμφάνιση ως 'Cider'",
|
"settings.header.connectivity.discordRPC.cider": "Εμφάνιση ως 'Cider'",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "Εμφάνιση ως 'Apple Music'",
|
"settings.header.connectivity.discordRPC.appleMusic": "Εμφάνιση ως 'Apple Music'",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "Εκκαθάριση του Discord Rich Presence στην Παύση", // Toggle
|
"settings.option.connectivity.discordRPC.clearOnPause": "Εκκαθάριση του Discord Rich Presence στην Παύση",
|
||||||
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling", // Option to Connect
|
"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 \"Now Playing\"",
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Ενεργοποίηση LastFM \"Now Playing\"",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Αφαίρεση καλλιτεχνών feature από τον τίτλο του τραγουδιού (LastFM)",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Αφαίρεση καλλιτεχνών feature από τον τίτλο του τραγουδιού (LastFM)",
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "Φιλτράρισμα επανειλημμένου τραγουδιού (LastFM)",
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Φιλτράρισμα επανειλημμένου τραγουδιού (LastFM)",
|
||||||
// Refer to term.connect for the connect button
|
"settings.header.debug": "Αποσφαλμάτωση",
|
||||||
|
"settings.option.debug.copy_log": "Αντιγραφή αρχείων καταγραφής στο πρόχειρο",
|
||||||
// Settings - Experimental
|
"settings.option.debug.openAppData": "Άνοιγμα του φακέλου Cider",
|
||||||
"settings.header.experimental": "Πειραματικές",
|
"settings.header.experimental": "Πειραματικές",
|
||||||
"settings.header.experimental.description": "Προσαρμογή πειραματικών ρυθμίσεων για το Cider.",
|
"settings.header.experimental.description": "Προσαρμογή πειραματικών ρυθμίσεων για το Cider.",
|
||||||
"settings.option.experimental.compactUI": "Συμπαγής Διεπαφή", // Toggle
|
"settings.option.experimental.compactUI": "Συμπαγής Διεπαφή",
|
||||||
"settings.option.experimental.closeButtonBehaviour": "Συμπεριφορά Κουμπιού Εξόδου",
|
"settings.option.experimental.closeButtonBehaviour": "Συμπεριφορά Κουμπιού Εξόδου",
|
||||||
"settings.option.experimental.closeButtonBehaviour.quit": "Έξοδος του Cider",
|
"settings.option.experimental.closeButtonBehaviour.quit": "Έξοδος του Cider",
|
||||||
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "Ελαχιστοποίηση στη γραμμή εργασιών",
|
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "Ελαχιστοποίηση στη γραμμή εργασιών",
|
||||||
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "Ελαχιστοποίηση στη γωνία γραμμής εργασιών",
|
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "Ελαχιστοποίηση στη γωνία γραμμής εργασιών",
|
||||||
// Refer to term.disabled & term.enabled
|
"spatial.notTurnedOn": "Η Χωρικοποίηση Ήχου είναι απενεργοποιημένη. Για χρήση, παρακαλούμε ενεργοποιήστε την πρώτα.",
|
||||||
|
"spatial.spatialProperties": "Χωρικές Ιδιότητες",
|
||||||
// Spatialization Menu
|
"spatial.width": "Πλάτος",
|
||||||
"spatial.spatialProperties" : "Χωρικές Ιδιότητες",
|
"spatial.height": "Ύψος",
|
||||||
"spatial.width" : "Πλάτος",
|
"spatial.depth": "Βάθος",
|
||||||
"spatial.height" : "Ύψος",
|
"spatial.gain": "Απολαβή",
|
||||||
"spatial.depth" : "Βάθος",
|
"spatial.roomMaterials": "Υλικά Δωματίου",
|
||||||
"spatial.gain" : "Απολαβή",
|
"spatial.roomDimensions": "Διαστάσεις Δωματίου",
|
||||||
"spatial.roomMaterials" : "Υλικά Δωματίου",
|
"spatial.roomPositions": "Θέσεις Δωματίου",
|
||||||
"spatial.roomDimensions" : "Διαστάσεις Δωματίου",
|
"spatial.setDimensions": "Ορισμός Διαστάσεων",
|
||||||
"spatial.roomPositions" : "Θέσεις Δωματίου",
|
"spatial.setPositions": "Ορισμός Θέσεων",
|
||||||
"spatial.setDimensions" : "Ορισμός Διαστάσεων",
|
"spatial.up": "Πάνω",
|
||||||
"spatial.setPositions" : "Ορισμός Θέσεων",
|
"spatial.front": "Πρόσοψη",
|
||||||
"spatial.up" : "Πάνω",
|
"spatial.left": "Αριστερά",
|
||||||
"spatial.front" : "Πρόσοψη",
|
"spatial.right": "Δεξιά",
|
||||||
"spatial.left" : "Αριστερά",
|
"spatial.back": "Πίσω Όψη",
|
||||||
"spatial.right" : "Δεξιά",
|
"spatial.down": "Κάτω",
|
||||||
"spatial.back" : "Πίσω Όψη",
|
"spatial.listener": "Ακροατής",
|
||||||
"spatial.down" : "Κάτω",
|
"spatial.audioSource": "Πηγή Ήχου",
|
||||||
"spatial.listener" : "Ακροατής",
|
|
||||||
"spatial.audioSource" : "Πηγή Ήχου",
|
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "Ημιτελής",
|
"settings.header.unfinished": "Ημιτελής",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "Cider Remote",
|
"remote.web.title": "Cider Remote",
|
||||||
"remote.web.description": "Σαρώστε τον κωδικό QR για σύζευξη του Cider με το κινητό σας",
|
"remote.web.description": "Σαρώστε τον κωδικό QR για σύζευξη του Cider με το κινητό σας",
|
||||||
|
|
||||||
//About
|
|
||||||
"about.thanks": "Μεγάλα ευχαριστώ στην Ομάδα Cider Collective και σε όλους τους συνεισφέροντές μας."
|
"about.thanks": "Μεγάλα ευχαριστώ στην Ομάδα Cider Collective και σε όλους τους συνεισφέροντές μας."
|
||||||
}
|
}
|
|
@ -1,16 +1,20 @@
|
||||||
{
|
{
|
||||||
// i18n Info
|
"i18n.languageName": "English (UK)",
|
||||||
"i18n.languageName": "English (UK)", // name of language in native language
|
"i18n.languageNameEnglish": "English (UK)",
|
||||||
"i18n.languageNameEnglish": "English (UK)", // name of language in English
|
"i18n.category": "main",
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
"i18n.authors": "Core, inalone, nosh118",
|
||||||
"i18n.authors": "Core, inalone", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
"date.format": "${d} ${m}, ${y}",
|
"date.format": "${d} ${m}, ${y}",
|
||||||
// translations
|
|
||||||
"term.equalizer": "Equaliser",
|
"term.equalizer": "Equaliser",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalisation , Equalisers and Visualisers, however on some systems this may cause stuttering in audio tracks.",
|
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalisation, Equalisers and Visualisers - however on some systems this may cause stuttering in audio tracks.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Normalisation", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Normalisation",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalises peak volume for individual tracks to create a more uniform listening experience.",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalises peak volume for individual tracks to create a more uniform listening experience.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialisation", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialisation",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialise audio and make audio more 3-dimensional (note: This is not Dolby Atmos)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialise audio and make audio more 3-dimensional (note: This is not Dolby Atmos)",
|
||||||
"spatial.notTurnedOn": "Audio Spatialisation is disabled. To use, please enable it first."
|
"spatial.notTurnedOn": "Audio Spatialisation is disabled. To use, please enable it first.",
|
||||||
|
"action.tray.minimize": "Minimise to Tray",
|
||||||
|
"term.tracks": "songs",
|
||||||
|
"term.track": {
|
||||||
|
"one" : "song",
|
||||||
|
"other" : "songs"
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,25 +1,15 @@
|
||||||
{ // HODOR
|
{
|
||||||
|
"i18n.languageName": "HODOR",
|
||||||
// i18n Info
|
"i18n.languageNameEnglish": "HODOR",
|
||||||
"i18n.languageName": "HODOR", // name of language in native language
|
"i18n.category": "fun",
|
||||||
"i18n.languageNameEnglish": "HODOR", // name of language in English
|
"i18n.authors": "HODOR",
|
||||||
"i18n.category": "fun", // main = real language, fun = fun community languages
|
|
||||||
"i18n.authors": "HODOR", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "HODER",
|
"app.name": "HODER",
|
||||||
|
|
||||||
"date.format": "${m} ${d}, ${y}",
|
"date.format": "${m} ${d}, ${y}",
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "NO HODOR",
|
"dialog.cancel": "NO HODOR",
|
||||||
"dialog.ok": "YES HODOR",
|
"dialog.ok": "YES HODOR",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "UPDATING HODOR HODORS...",
|
"notification.updatingLibrarySongs": "UPDATING HODOR HODORS...",
|
||||||
"notification.updatingLibraryAlbums": "UPDATING HODOR HODORBUMS...",
|
"notification.updatingLibraryAlbums": "UPDATING HODOR HODORBUMS...",
|
||||||
"notification.updatingLibraryArtists": "UPDATING HODOR HODORTISTS...",
|
"notification.updatingLibraryArtists": "UPDATING HODOR HODORTISTS...",
|
||||||
// Terms
|
|
||||||
"term.appleInc": "HODOR Inc.",
|
"term.appleInc": "HODOR Inc.",
|
||||||
"term.appleMusic": "HODOR MUSIC",
|
"term.appleMusic": "HODOR MUSIC",
|
||||||
"term.applePodcasts": "HODOR PODCASTS",
|
"term.applePodcasts": "HODOR PODCASTS",
|
||||||
|
@ -91,7 +81,7 @@
|
||||||
"term.less": "hodor",
|
"term.less": "hodor",
|
||||||
"term.showMore": "MORE HODOR",
|
"term.showMore": "MORE HODOR",
|
||||||
"term.showLess": "LESS HODOR",
|
"term.showLess": "LESS HODOR",
|
||||||
"term.topSongs" : "TOP HODORS",
|
"term.topSongs": "TOP HODORS",
|
||||||
"term.latestReleases": "LATEST HODORS",
|
"term.latestReleases": "LATEST HODORS",
|
||||||
"term.time.added": "HODOR ADDED",
|
"term.time.added": "HODOR ADDED",
|
||||||
"term.time.released": "HODOR RELEASED",
|
"term.time.released": "HODOR RELEASED",
|
||||||
|
@ -123,8 +113,6 @@
|
||||||
"term.funLanguages": "HODOR SPEAKS",
|
"term.funLanguages": "HODOR SPEAKS",
|
||||||
"term.videos": "HODOR WATCHING",
|
"term.videos": "HODOR WATCHING",
|
||||||
"term.menu": "HODOR MENU",
|
"term.menu": "HODOR MENU",
|
||||||
|
|
||||||
// Home
|
|
||||||
"home.title": "HODOR",
|
"home.title": "HODOR",
|
||||||
"home.recentlyPlayed": "RECENTLY HODOR",
|
"home.recentlyPlayed": "RECENTLY HODOR",
|
||||||
"home.recentlyAdded": "NEW HODOR",
|
"home.recentlyAdded": "NEW HODOR",
|
||||||
|
@ -133,13 +121,10 @@
|
||||||
"home.madeForYou": "HODOR FOR YOU",
|
"home.madeForYou": "HODOR FOR YOU",
|
||||||
"home.friendsListeningTo": "FRIENDS HODOR HODOR",
|
"home.friendsListeningTo": "FRIENDS HODOR HODOR",
|
||||||
"home.followedArtists": "FOLLOWED HODOR",
|
"home.followedArtists": "FOLLOWED HODOR",
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "HODOR MUSIC REQUIRES A HODOR.",
|
"error.appleMusicSubRequired": "HODOR MUSIC REQUIRES A HODOR.",
|
||||||
"error.connectionError": "CANNOT HODOR TO HODOR.",
|
"error.connectionError": "CANNOT HODOR TO HODOR.",
|
||||||
"error.noResults": "NO HODOR.",
|
"error.noResults": "NO HODOR.",
|
||||||
"error.noResults.description": "TRY NEW HODOR.",
|
"error.noResults.description": "TRY NEW HODOR.",
|
||||||
|
|
||||||
//Podcasts
|
|
||||||
"podcast.followOnCider": "FOLLOW ON HODOR",
|
"podcast.followOnCider": "FOLLOW ON HODOR",
|
||||||
"podcast.followedOnCider": "FOLLOWING ON HODOR",
|
"podcast.followedOnCider": "FOLLOWING ON HODOR",
|
||||||
"podcast.subscribeOnItunes": "SUBSCRIBE ON iHODOR",
|
"podcast.subscribeOnItunes": "SUBSCRIBE ON iHODOR",
|
||||||
|
@ -148,8 +133,6 @@
|
||||||
"podcast.episodes": "HODORS",
|
"podcast.episodes": "HODORS",
|
||||||
"podcast.playEpisode": "PLAY HODOR",
|
"podcast.playEpisode": "PLAY HODOR",
|
||||||
"podcast.website": "HODORCAST PAGE",
|
"podcast.website": "HODORCAST PAGE",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "ADD HODOR",
|
"action.addToLibrary": "ADD HODOR",
|
||||||
"action.addToLibrary.success": "YES HODOR",
|
"action.addToLibrary.success": "YES HODOR",
|
||||||
"action.addToLibrary.error": "NO HODOR",
|
"action.addToLibrary.error": "NO HODOR",
|
||||||
|
@ -190,123 +173,96 @@
|
||||||
"action.import": "HODOR IN",
|
"action.import": "HODOR IN",
|
||||||
"action.export": "HODOR OUT",
|
"action.export": "HODOR OUT",
|
||||||
"action.showAlbum": "SHOW HODOR HODOR",
|
"action.showAlbum": "SHOW HODOR HODOR",
|
||||||
// Waiting on Core for moving plugin to app.ts
|
|
||||||
"action.tray.minimize": "HODOR TO TRAY",
|
"action.tray.minimize": "HODOR TO TRAY",
|
||||||
"action.tray.quit": "HODOR",
|
"action.tray.quit": "HODOR",
|
||||||
"action.tray.show": "SEE",
|
"action.tray.show": "SEE",
|
||||||
|
|
||||||
// Settings - General (Reserved)
|
|
||||||
"settings.header.general": "HODORAL",
|
"settings.header.general": "HODORAL",
|
||||||
"settings.header.general.description": "HODOR HODORAL HODOR FOR HODOR.",
|
"settings.header.general.description": "HODOR HODORAL HODOR FOR HODOR.",
|
||||||
"settings.option.general.language": "HODOR SPEAKS",
|
"settings.option.general.language": "HODOR SPEAKS",
|
||||||
|
|
||||||
// Language optgroups
|
|
||||||
"settings.option.general.language.main": "REAL HODORS",
|
"settings.option.general.language.main": "REAL HODORS",
|
||||||
"settings.option.general.language.fun": "HODOR HODORS",
|
"settings.option.general.language.fun": "HODOR HODORS",
|
||||||
"settings.option.general.language.unsorted": "NO HODORS",
|
"settings.option.general.language.unsorted": "NO HODORS",
|
||||||
|
|
||||||
// Settings - Audio
|
|
||||||
"settings.header.audio": "HODOR HEARS",
|
"settings.header.audio": "HODOR HEARS",
|
||||||
"settings.header.audio.description": "ADJUST HODOR EARS FOR HODOR HODOR.",
|
"settings.header.audio.description": "ADJUST HODOR EARS FOR HODOR HODOR.",
|
||||||
"settings.option.audio.quality": "HODOR QUALITY", // Dropdown
|
"settings.option.audio.quality": "HODOR QUALITY",
|
||||||
"settings.header.audio.quality.high": "HODOR!!.",
|
"settings.header.audio.quality.high": "HODOR!!.",
|
||||||
"settings.header.audio.quality.low": "hodor.",
|
"settings.header.audio.quality.low": "hodor.",
|
||||||
"settings.header.audio.quality.auto": "HODORMATIC",
|
"settings.header.audio.quality.auto": "HODORMATIC",
|
||||||
"settings.option.audio.seamlessTransition": "SEAMLESS HODOR", // Toggle
|
"settings.option.audio.seamlessTransition": "SEAMLESS HODOR",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "ADVANCED HODOR", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality": "ADVANCED HODOR",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "ENABLING HODOR FUNCTIONALITY WILL HODOR FOR EXTENDED HODOR FEATURES LIKE HODOR NORMALIZATION , HODORIZERS AND HODORS, BUT ON SOME HODOR SYSTEMS THIS HODOR CAUSE HODOR IN HODOR.",
|
"settings.option.audio.enableAdvancedFunctionality.description": "ENABLING HODOR FUNCTIONALITY WILL HODOR FOR EXTENDED HODOR FEATURES LIKE HODOR NORMALIZATION , HODORIZERS AND HODORS, BUT ON SOME HODOR SYSTEMS THIS HODOR CAUSE HODOR IN HODOR.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "HODOR NORMALIZATION", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "HODOR NORMALIZATION",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "NORMALIZES HODOR VOLUME FOR INDIVIDUAL HODORS TO HODOR A MORE HODOR LISTENING HODOR.",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "NORMALIZES HODOR VOLUME FOR INDIVIDUAL HODORS TO HODOR A MORE HODOR LISTENING HODOR.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "HODOR SPATIALIZATION", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "HODOR SPATIALIZATION",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "SPATIALIZE HODOR AND MAKE HODOR MORE 3-HODOR (HODOR: THIS IS NOT HODOR ATMOS)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "SPATIALIZE HODOR AND MAKE HODOR MORE 3-HODOR (HODOR: THIS IS NOT HODOR ATMOS)",
|
||||||
// Settings - Visual
|
|
||||||
"settings.header.visual": "HODOR SEES",
|
"settings.header.visual": "HODOR SEES",
|
||||||
"settings.header.visual.description": "ADJUST HODOR EYES FOR HODOR.",
|
"settings.header.visual.description": "ADJUST HODOR EYES FOR HODOR.",
|
||||||
"settings.option.visual.windowBackgroundStyle": "BACK HODOR STYLE", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "BACK HODOR STYLE",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "NO HODOR",
|
"settings.header.visual.windowBackgroundStyle.none": "NO HODOR",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "HODORWORK",
|
"settings.header.visual.windowBackgroundStyle.artwork": "HODORWORK",
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "HODOR",
|
"settings.header.visual.windowBackgroundStyle.image": "HODOR",
|
||||||
"settings.option.visual.animatedArtwork": "MOVING HODORWORK", // Dropdown
|
"settings.option.visual.animatedArtwork": "MOVING HODORWORK",
|
||||||
"settings.header.visual.animatedArtwork.always": "YES HODOR",
|
"settings.header.visual.animatedArtwork.always": "YES HODOR",
|
||||||
"settings.header.visual.animatedArtwork.limited": "SOME HODOR",
|
"settings.header.visual.animatedArtwork.limited": "SOME HODOR",
|
||||||
"settings.header.visual.animatedArtwork.disable": "NO HODOR",
|
"settings.header.visual.animatedArtwork.disable": "NO HODOR",
|
||||||
"settings.option.visual.animatedArtworkQuality": "MOVING HODOR QUALITY", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "MOVING HODOR QUALITY",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "hodor..",
|
"settings.header.visual.animatedArtworkQuality.low": "hodor..",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "HODOR.",
|
"settings.header.visual.animatedArtworkQuality.medium": "HODOR.",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "HODOR!",
|
"settings.header.visual.animatedArtworkQuality.high": "HODOR!",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "HODOR HODOR!",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "HODOR HODOR!",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "HODOOOOOOOR!!",
|
"settings.header.visual.animatedArtworkQuality.extreme": "HODOOOOOOOR!!",
|
||||||
"settings.option.visual.animatedWindowBackground": "ANIMATED HODOR BACK", // Toggle
|
"settings.option.visual.animatedWindowBackground": "ANIMATED HODOR BACK",
|
||||||
"settings.option.visual.hardwareAcceleration": "HODOR ACCELERATION", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "HODOR ACCELERATION",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "NEED RE HODOR",
|
"settings.option.visual.hardwareAcceleration.description": "NEED RE HODOR",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "HODOR.",
|
"settings.header.visual.hardwareAcceleration.default": "HODOR.",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WEB HODOR!!",
|
"settings.header.visual.hardwareAcceleration.webGPU": "WEB HODOR!!",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.option.visual.showPersonalInfo": "SHOW HODOR NAME?",
|
||||||
"settings.option.visual.showPersonalInfo": "SHOW HODOR NAME?", // Toggle
|
|
||||||
|
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "HODOR READS",
|
"settings.header.lyrics": "HODOR READS",
|
||||||
"settings.header.lyrics.description": "ADJUST THE HODOR TEXT FOR HODOR.",
|
"settings.header.lyrics.description": "ADJUST THE HODOR TEXT FOR HODOR.",
|
||||||
"settings.option.lyrics.enableMusixmatch": "MUSIXMATCH HODOR", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "MUSIXMATCH HODOR",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "HO-DOR SING MODE (MUSIXMATCH HODOR)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "HO-DOR SING MODE (MUSIXMATCH HODOR)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "TRANSLATE HODOR TEXT", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "TRANSLATE HODOR TEXT",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "HODOR YOUTUBE HODOR TEXT FOR HODOR VIDEOS", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "HODOR YOUTUBE HODOR TEXT FOR HODOR VIDEOS",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "HODORTIVITY",
|
"settings.header.connectivity": "HODORTIVITY",
|
||||||
"settings.header.connectivity.description": "ADJUST THE HODORTIVITY FOR HODOR.",
|
"settings.header.connectivity.description": "ADJUST THE HODORTIVITY FOR HODOR.",
|
||||||
"settings.option.connectivity.discordRPC": "DISCORD HODOR", // Dropdown
|
"settings.option.connectivity.discordRPC": "DISCORD HODOR",
|
||||||
"settings.option.connectivity.playbackNotifications": "NOTIFICATION FOR HODOR", // Toggle
|
"settings.option.connectivity.playbackNotifications": "NOTIFICATION FOR HODOR",
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "SEE HODOR AS 'CIDER'",
|
"settings.header.connectivity.discordRPC.cider": "SEE HODOR AS 'CIDER'",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "SEE HODOR AS 'HODOR MUSIC'",
|
"settings.header.connectivity.discordRPC.appleMusic": "SEE HODOR AS 'HODOR MUSIC'",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "HODOR DISCORD ON PAUSE", // Toggle
|
"settings.option.connectivity.discordRPC.clearOnPause": "HODOR DISCORD ON PAUSE",
|
||||||
"settings.option.connectivity.lastfmScrobble": "HODOR.FM SCROBBLING", // Option to Connect
|
"settings.option.connectivity.lastfmScrobble": "HODOR.FM SCROBBLING",
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "HODOR.FM HODOR DELAY (%)",
|
"settings.option.connectivity.lastfmScrobble.delay": "HODOR.FM HODOR DELAY (%)",
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "YES HODOR.FM NOW HODORING",
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "YES HODOR.FM NOW HODORING",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "DELETE HODORING HODORTIST FROM HODOR TITLE (HODOR.FM)",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "DELETE HODORING HODORTIST FROM HODOR TITLE (HODOR.FM)",
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "FILTER MULTI HODOEDR HODOR (HODOR.FM)",
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "FILTER MULTI HODOEDR HODOR (HODOR.FM)",
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "EXPERIMENTAL HODOR",
|
"settings.header.experimental": "EXPERIMENTAL HODOR",
|
||||||
"settings.header.experimental.description": "ADJUST THE EXPERIMENTAL HODOR FOR HODOR.",
|
"settings.header.experimental.description": "ADJUST THE EXPERIMENTAL HODOR FOR HODOR.",
|
||||||
"settings.option.experimental.compactUI": "smol hodor", // Toggle
|
"settings.option.experimental.compactUI": "smol hodor",
|
||||||
"settings.option.experimental.closeButtonBehaviour": "CLOSE HODOR BUTTON",
|
"settings.option.experimental.closeButtonBehaviour": "CLOSE HODOR BUTTON",
|
||||||
"settings.option.experimental.closeButtonBehaviour.quit": "END HODOR",
|
"settings.option.experimental.closeButtonBehaviour.quit": "END HODOR",
|
||||||
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "MINIMIZE HODOR TO HODORBAR",
|
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "MINIMIZE HODOR TO HODORBAR",
|
||||||
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "MINIMIZE HODOR TO HODORAY",
|
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "MINIMIZE HODOR TO HODORAY",
|
||||||
// Refer to term.disabled & term.enabled
|
|
||||||
|
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.notTurnedOn": "HODOR SPATIALIZATION IS HODOR. TO HODOR, PLEASE HODOR IT HODOR.",
|
"spatial.notTurnedOn": "HODOR SPATIALIZATION IS HODOR. TO HODOR, PLEASE HODOR IT HODOR.",
|
||||||
"spatial.spatialProperties" : "SPATIAL HODOR",
|
"spatial.spatialProperties": "SPATIAL HODOR",
|
||||||
"spatial.width" : "HODOR WIDTH",
|
"spatial.width": "HODOR WIDTH",
|
||||||
"spatial.height" : "HODOR HEIGHT",
|
"spatial.height": "HODOR HEIGHT",
|
||||||
"spatial.depth" : "HODOR DEPTH",
|
"spatial.depth": "HODOR DEPTH",
|
||||||
"spatial.gain" : "HODOR POWER",
|
"spatial.gain": "HODOR POWER",
|
||||||
"spatial.roomMaterials" : "ROOM HODORS",
|
"spatial.roomMaterials": "ROOM HODORS",
|
||||||
"spatial.roomDimensions" : "ROOM HODOR SIZE",
|
"spatial.roomDimensions": "ROOM HODOR SIZE",
|
||||||
"spatial.roomPositions" : "ROOM HODOR POSITION",
|
"spatial.roomPositions": "ROOM HODOR POSITION",
|
||||||
"spatial.setDimensions" : "HODOR SIZE",
|
"spatial.setDimensions": "HODOR SIZE",
|
||||||
"spatial.setPositions" : "SET HODOR POSITION",
|
"spatial.setPositions": "SET HODOR POSITION",
|
||||||
"spatial.up" : "UP HODOR",
|
"spatial.up": "UP HODOR",
|
||||||
"spatial.front" : "FRONT HODOR",
|
"spatial.front": "FRONT HODOR",
|
||||||
"spatial.left" : "LEFT HODOR",
|
"spatial.left": "LEFT HODOR",
|
||||||
"spatial.right" : "RIGHT HODOR",
|
"spatial.right": "RIGHT HODOR",
|
||||||
"spatial.back" : "BACK HODOR",
|
"spatial.back": "BACK HODOR",
|
||||||
"spatial.down" : "DOWN HODOR",
|
"spatial.down": "DOWN HODOR",
|
||||||
"spatial.listener" : "HODOR EARS",
|
"spatial.listener": "HODOR EARS",
|
||||||
"spatial.audioSource" : "HODOR PLAYS",
|
"spatial.audioSource": "HODOR PLAYS",
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "NOT HODOR YET",
|
"settings.header.unfinished": "NOT HODOR YET",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "HODOR REMOTE",
|
"remote.web.title": "HODOR REMOTE",
|
||||||
"remote.web.description": "HODOR THE HODOR TO HODOR YOUR HODOR UP WITH THIS HODOR INSTANCE",
|
"remote.web.description": "HODOR THE HODOR TO HODOR YOUR HODOR UP WITH THIS HODOR INSTANCE",
|
||||||
|
|
||||||
//About
|
|
||||||
"about.thanks": "HODOR THANKS TO THE HODOR TEAM AND ALL OF OUR HODORS."
|
"about.thanks": "HODOR THANKS TO THE HODOR TEAM AND ALL OF OUR HODORS."
|
||||||
|
|
||||||
}
|
}
|
413
src/i18n/en_OWO.json
Normal file
|
@ -0,0 +1,413 @@
|
||||||
|
{
|
||||||
|
"i18n.languageName": "Engwish (OwO)",
|
||||||
|
"i18n.languageNameEnglish": "Engwish (OwO)",
|
||||||
|
"i18n.category": "fun",
|
||||||
|
"i18n.authors": "@deerwithacurl @gamingliamstudios",
|
||||||
|
"app.name": "Cidew",
|
||||||
|
"date.format": "${m} ${d}, ${y}",
|
||||||
|
"dialog.cancel": "Cancew",
|
||||||
|
"dialog.ok": "OK",
|
||||||
|
"notification.updatingLibrarySongs": "Updating wibwawy songs...",
|
||||||
|
"notification.updatingLibraryAlbums": "Updating wibwawy awbums...",
|
||||||
|
"notification.updatingLibraryArtists": "Updating wibwawy awtists...",
|
||||||
|
"term.appleInc": "Appwe Inc.",
|
||||||
|
"term.appleMusic": "Appwe Music",
|
||||||
|
"term.applePodcasts": "Appwe Podcasts",
|
||||||
|
"term.itunes": "iTunyes",
|
||||||
|
"term.github": "GitHub",
|
||||||
|
"term.discord": "Discowd",
|
||||||
|
"term.learnMore": "Weawn mowe",
|
||||||
|
"term.accountSettings": "Account Settings",
|
||||||
|
"term.logout": "Wogout",
|
||||||
|
"term.login": "Wog In",
|
||||||
|
"term.about": "About",
|
||||||
|
"term.privateSession": "Pwivate Session",
|
||||||
|
"term.queue": "Queue",
|
||||||
|
"term.lyrics": "Wywics",
|
||||||
|
"term.miniplayer": "MinyiPwayew",
|
||||||
|
"term.history": "Histowy",
|
||||||
|
"term.search": "Seawch",
|
||||||
|
"term.library": "Wibwawy",
|
||||||
|
"term.listenNow": "Wisten Nyow",
|
||||||
|
"term.browse": "Bwowse",
|
||||||
|
"term.radio": "Wadio",
|
||||||
|
"term.recentlyAdded": "Wecentwy Added",
|
||||||
|
"term.songs": "Songs",
|
||||||
|
"term.albums": "Awbums",
|
||||||
|
"term.artists": "Awtists",
|
||||||
|
"term.podcasts": "Podcasts",
|
||||||
|
"term.playlists": "Pwaywists",
|
||||||
|
"term.playlist": "Pwaywist",
|
||||||
|
"term.newPlaylist": "Nyew Pwaywist",
|
||||||
|
"term.newPlaylistFolder": "Nyew Pwaywist Fowdew",
|
||||||
|
"term.createNewPlaylist": "Cweate Nyew Pwaywist",
|
||||||
|
"term.createNewPlaylistFolder": "Cweate Nyew Pwaywist Fowdew",
|
||||||
|
"term.deletePlaylist": "Awe you suwe you want to dewete this pwaywist?",
|
||||||
|
"term.play": "Pway",
|
||||||
|
"term.pause": "Pause",
|
||||||
|
"term.previous": "Pwevious",
|
||||||
|
"term.next": "Nyext",
|
||||||
|
"term.shuffle": "Shuffwe",
|
||||||
|
"term.repeat": "Wepeat",
|
||||||
|
"term.volume": "Vowume",
|
||||||
|
"term.mute": "Mute",
|
||||||
|
"term.unmute": "Unmute",
|
||||||
|
"term.share": "Shawe",
|
||||||
|
"term.share.success": "Copied to cwipboawd",
|
||||||
|
"term.settings": "Settings",
|
||||||
|
"term.seeAll": "See Aww",
|
||||||
|
"term.sortBy": "Sowt By",
|
||||||
|
"term.sortBy.album": "Awbum",
|
||||||
|
"term.sortBy.artist": "Awtist",
|
||||||
|
"term.sortBy.name": "Nyame",
|
||||||
|
"term.sortBy.genre": "Genwe",
|
||||||
|
"term.sortBy.releaseDate": "Wewease Date",
|
||||||
|
"term.sortBy.duration": "Duwation",
|
||||||
|
"term.sortBy.dateAdded": "Date Added",
|
||||||
|
"term.sortOrder": "A-Z",
|
||||||
|
"term.sortOrder.ascending": "Ascending",
|
||||||
|
"term.sortOrder.descending": "Descending",
|
||||||
|
"term.viewAs": "View As",
|
||||||
|
"term.viewAs.coverArt": "Cuvw Awt",
|
||||||
|
"term.viewAs.list": "Wist",
|
||||||
|
"term.size": "Size",
|
||||||
|
"term.size.normal": "Nyowmaw",
|
||||||
|
"term.size.compact": "Compact",
|
||||||
|
"term.enable": "Enyabwe",
|
||||||
|
"term.disable": "Disabwe",
|
||||||
|
"term.enabled": "Enyabwed",
|
||||||
|
"term.disabled": "Disabwed",
|
||||||
|
"term.connect": "Connyect",
|
||||||
|
"term.connecting": "Connyecting",
|
||||||
|
"term.disconnect": "Disconnyect",
|
||||||
|
"term.authed": "Authed",
|
||||||
|
"term.confirm": "Confiwm?",
|
||||||
|
"term.more": "Mowe",
|
||||||
|
"term.less": "Wess",
|
||||||
|
"term.showMore": "Show mowe",
|
||||||
|
"term.showLess": "Show wess",
|
||||||
|
"term.topSongs": "Top Songs",
|
||||||
|
"term.latestReleases": "Watest Weweases",
|
||||||
|
"term.time.added": "Added",
|
||||||
|
"term.time.released": "Weweased",
|
||||||
|
"term.time.updated": "Updated",
|
||||||
|
"term.time.days": "days",
|
||||||
|
"term.time.day": {
|
||||||
|
"one": "day",
|
||||||
|
"other": "days"
|
||||||
|
},
|
||||||
|
"term.time.hours": "houws",
|
||||||
|
"term.time.hour": {
|
||||||
|
"one": "houw",
|
||||||
|
"other": "houws"
|
||||||
|
},
|
||||||
|
"term.time.minutes": "minyutes",
|
||||||
|
"term.time.minute": {
|
||||||
|
"one": "minyute",
|
||||||
|
"other": "minyutes"
|
||||||
|
},
|
||||||
|
"term.time.seconds": "seconds",
|
||||||
|
"term.time.second": {
|
||||||
|
"one": "second",
|
||||||
|
"other": "seconds"
|
||||||
|
},
|
||||||
|
"term.fullscreenView": "Fuwwscween View",
|
||||||
|
"term.defaultView": "Defauwt View",
|
||||||
|
"term.audioSettings": "Audio Settings",
|
||||||
|
"term.audioControls": "Vowume Contwows",
|
||||||
|
"term.clearAll": "Cweaw Aww",
|
||||||
|
"term.recentStations": "Wecent Stations",
|
||||||
|
"term.language": "Wanguage",
|
||||||
|
"term.funLanguages": "Fun",
|
||||||
|
"term.noLyrics": "Woading... / Wywics nyot found./ Instwumentaw.",
|
||||||
|
"term.copyright": "Copywight",
|
||||||
|
"term.rightsReserved": "Aww Wights Wesewved.",
|
||||||
|
"term.sponsor": "Sponsow this pwoject",
|
||||||
|
"term.ciderTeam": "Cidew Team",
|
||||||
|
"term.developer": "Devewopew",
|
||||||
|
"term.socialTeam": "Sociaw Team",
|
||||||
|
"term.socials": "Sociaws",
|
||||||
|
"term.contributors": "Contwibutows",
|
||||||
|
"term.equalizer": "Equawizew",
|
||||||
|
"term.reset": "Weset",
|
||||||
|
"term.tracks": "twacks",
|
||||||
|
"term.track": {
|
||||||
|
"one": "twack",
|
||||||
|
"other": "twacks"
|
||||||
|
},
|
||||||
|
"term.videos": "Videos",
|
||||||
|
"term.menu": "Menyu",
|
||||||
|
"term.check": "Check",
|
||||||
|
"term.aboutArtist": "About {{artistName}}",
|
||||||
|
"term.topResult": "Top Wesuwt",
|
||||||
|
"term.sharedPlaylists": "Shawed Pwaywists",
|
||||||
|
"term.people": "Peopwe",
|
||||||
|
"term.newpreset.name": "Nyew EQ Pweset Nyame",
|
||||||
|
"term.addedpreset": "Added Pweset",
|
||||||
|
"term.deletepreset.warn": "Awe you suwe you want to dewete this pweset?",
|
||||||
|
"term.deletedpreset": "Wemuvd pweset",
|
||||||
|
"term.defaultPresets": "Defauwt Pwesets",
|
||||||
|
"term.userPresets": "Usew Pwesets",
|
||||||
|
"term.requestError": "Thewe was a pwobwem with the wequest.",
|
||||||
|
"term.song.link.generate": "Getting song.wink shawe UWW...",
|
||||||
|
"term.musicVideos": "Music Videos",
|
||||||
|
"term.stations": "Stations",
|
||||||
|
"term.curators": "Cuwatows",
|
||||||
|
"term.appleCurators": "Appwe Cuwatows",
|
||||||
|
"term.radioShows": "Wadio Shows",
|
||||||
|
"term.recordLabels": "Wecowd Wabews",
|
||||||
|
"term.videoExtras": "Video Extwas",
|
||||||
|
"term.top": "Top",
|
||||||
|
"term.version": "Vewsion",
|
||||||
|
"term.noVideos": "Nyo videos found.",
|
||||||
|
"term.plugin": "Pwug-in",
|
||||||
|
"term.pluginMenu": "Pwug-in Menyu",
|
||||||
|
"term.pluginMenu.none": "Nyo intewactive pwugins",
|
||||||
|
"term.replay": "Wepway",
|
||||||
|
"term.uniqueAlbums": "Unyique Awbums",
|
||||||
|
"term.uniqueArtists": "Unyique Awtists",
|
||||||
|
"term.uniqueSongs": "Unyique Songs",
|
||||||
|
"term.topArtists": "Top Awtists",
|
||||||
|
"term.listenedTo": "Wistenyed to:",
|
||||||
|
"term.times": "times",
|
||||||
|
"term.topAlbums": "Top Awbums",
|
||||||
|
"term.plays": "Pways",
|
||||||
|
"term.topGenres": "Top Genwes",
|
||||||
|
"term.confirmLogout": "Awe you suwe you want to wogout?",
|
||||||
|
"home.title": "Home",
|
||||||
|
"home.recentlyPlayed": "Wecentwy Pwayed",
|
||||||
|
"home.recentlyAdded": "Wecentwy Added",
|
||||||
|
"home.artistsFeed": "Youw Awtists Feed",
|
||||||
|
"home.artistsFeed.noArtist": "Fowwow some awtists to see theiw watest weweases",
|
||||||
|
"home.madeForYou": "Made Fow You",
|
||||||
|
"home.friendsListeningTo": "Fwiends Wistenying To",
|
||||||
|
"home.followedArtists": "Fowwowed Awtists",
|
||||||
|
"error.appleMusicSubRequired": "Appwe Music wequiwes a subscwiption.",
|
||||||
|
"error.connectionError": "Thewe was a pwobwem connyecting to Appwe Music.",
|
||||||
|
"error.noResults": "Nyo Wesuwts.",
|
||||||
|
"error.noResults.description": "Twy a nyew seawch.",
|
||||||
|
"podcast.followOnCider": "Fowwow On Cidew",
|
||||||
|
"podcast.followedOnCider": "Fowwowing On Cidew",
|
||||||
|
"podcast.subscribeOnItunes": "Subscwibe On iTunyes",
|
||||||
|
"podcast.subscribedOnItunes": "Subscwibed On iTunyes",
|
||||||
|
"podcast.itunesStore": "iTunyes Stowe",
|
||||||
|
"podcast.episodes": "Episodes",
|
||||||
|
"podcast.playEpisode": "Pway Episode",
|
||||||
|
"podcast.website": "Podcast Website",
|
||||||
|
"action.addToLibrary": "Add to Wibwawy",
|
||||||
|
"action.addToLibrary.success": "Added to Wibwawy",
|
||||||
|
"action.addToLibrary.error": "Ewwow Adding to Wibwawy",
|
||||||
|
"action.removeFromLibrary": "Wemuv fwom Wibwawy",
|
||||||
|
"action.removeFromLibrary.success": "Wemuvd fwom Wibwawy",
|
||||||
|
"action.addToQueue": "Add to Queue",
|
||||||
|
"action.addToQueue.success": "Added to Queue",
|
||||||
|
"action.addToQueue.error": "Ewwow Adding to Queue",
|
||||||
|
"action.removeFromQueue": "Wemuv fwom Queue",
|
||||||
|
"action.removeFromQueue.success": "Wemuvd fwom Queue",
|
||||||
|
"action.removeFromQueue.error": "Ewwow Wemoving fwom Queue",
|
||||||
|
"action.createPlaylist": "Cweate a Nyew Pwaywist",
|
||||||
|
"action.addToPlaylist": "Add to Pwaywist",
|
||||||
|
"action.removeFromPlaylist": "Wemuv fwom Pwaywist",
|
||||||
|
"action.addToFavorites": "Add to Favowites",
|
||||||
|
"action.follow": "Fowwow",
|
||||||
|
"action.follow.success": "Fowwowed",
|
||||||
|
"action.follow.error": "Ewwow Fowwowing",
|
||||||
|
"action.unfollow": "Unfowwow",
|
||||||
|
"action.unfollow.success": "Unfowwowed",
|
||||||
|
"action.unfollow.error": "Ewwow Unfowwowing",
|
||||||
|
"action.playNext": "Pway Nyext",
|
||||||
|
"action.playLater": "Pway Watew",
|
||||||
|
"action.startRadio": "Stawt Wadio",
|
||||||
|
"action.goToArtist": "Go to Awtist",
|
||||||
|
"action.goToAlbum": "Go to Awbum",
|
||||||
|
"action.showInPlaylist": "Show in Pwaywist",
|
||||||
|
"action.showInAppleMusic": "Show in Appwe Music",
|
||||||
|
"action.moveToTop": "Muv out of Fowdew",
|
||||||
|
"action.share": "Shawe",
|
||||||
|
"action.rename": "Wenyame",
|
||||||
|
"action.love": "Wuv",
|
||||||
|
"action.unlove": "Unwuv",
|
||||||
|
"action.dislike": "Diswike",
|
||||||
|
"action.undoDislike": "Undo diswike",
|
||||||
|
"action.showWebRemoteQR": "Web Wemote",
|
||||||
|
"action.playTracksNext": "Pway ${app.selectedMediaItems.length} twacks nyext",
|
||||||
|
"action.playTracksLater": "Pway ${app.selectedMediaItems.length} twacks watew",
|
||||||
|
"action.removeTracks": "Wemuv ${self.selectedItems.length} twacks fwom queue",
|
||||||
|
"action.import": "Impowt",
|
||||||
|
"action.export": "Expowt",
|
||||||
|
"action.showAlbum": "Show Compwete Awbum",
|
||||||
|
"action.tray.minimize": "Minyimize to Tway",
|
||||||
|
"action.tray.quit": "Quit",
|
||||||
|
"action.tray.show": "Show",
|
||||||
|
"action.update": "Update",
|
||||||
|
"action.install": "Instaww",
|
||||||
|
"action.copy": "Copy",
|
||||||
|
"action.newpreset": "Nyew Pweset...",
|
||||||
|
"action.deletepreset": "Dewete Pweset",
|
||||||
|
"action.open": "Open",
|
||||||
|
"action.relaunch.confirm": "Do you want to wewaunch Cidew?",
|
||||||
|
"settings.header.general": "Genyewaw",
|
||||||
|
"settings.header.general.description": "Adjust the genyewaw settings fow Cidew.",
|
||||||
|
"settings.option.general.language": "Wanguage",
|
||||||
|
"settings.option.general.resumebehavior": "Wesume behaviow",
|
||||||
|
"settings.option.general.resumebehavior.description": "Wesume behaviow affects how Cidew wiww wesume youw session when you wetuwn to the app.",
|
||||||
|
"settings.option.general.resumebehavior.locally": "Wocawwy",
|
||||||
|
"settings.option.general.resumebehavior.locally.description": "Cidew wiww wesume youw wast session on this machinye.",
|
||||||
|
"settings.option.general.resumebehavior.history": "Histowy",
|
||||||
|
"settings.option.general.resumebehavior.history.description": "Cidew wiww queue the wast song fwom youw uvwaww Appwe Music histowy, acwoss devices.",
|
||||||
|
"settings.option.general.language.main": "Wanguages",
|
||||||
|
"settings.option.general.language.fun": "Fun Wanguages",
|
||||||
|
"settings.option.general.language.unsorted": "Unsowted",
|
||||||
|
"settings.option.general.updateCider": "Update Cidew",
|
||||||
|
"settings.option.general.updateCider.branch": "Cidew Update Bwanch",
|
||||||
|
"settings.option.general.updateCider.branch.description": "Sewect the bwanch to update Cidew to",
|
||||||
|
"settings.option.general.updateCider.branch.main": "Stabwe",
|
||||||
|
"settings.option.general.updateCider.branch.develop": "Devewopment",
|
||||||
|
"settings.notyf.updateCider.update-not-available": "Nyo update avaiwabwe",
|
||||||
|
"settings.notyf.updateCider.update-downloaded": "Update has been downwoaded, westawt to appwy",
|
||||||
|
"settings.notyf.updateCider.update-error": "Ewwow updating Cidew",
|
||||||
|
"settings.notyf.updateCider.update-timeout": "Update timed out",
|
||||||
|
"settings.header.audio": "Audio",
|
||||||
|
"settings.header.audio.description": "Adjust the audio settings fow Cidew.",
|
||||||
|
"settings.option.audio.volumeStep": "Vowume Step",
|
||||||
|
"settings.option.audio.maxVolume": "Max Vowume",
|
||||||
|
"settings.option.audio.quality": "Audio Quawity",
|
||||||
|
"settings.header.audio.quality.hireslossless": "Hi-Wes Wosswess",
|
||||||
|
"settings.header.audio.quality.hireslossless.description": "up to 24-bit/192 kHz",
|
||||||
|
"settings.header.audio.quality.lossless": "Wosswess",
|
||||||
|
"settings.header.audio.quality.lossless.description": "up to 24-bit/48 kHz",
|
||||||
|
"settings.header.audio.quality.high": "High",
|
||||||
|
"settings.header.audio.quality.high.description": "256 kbps",
|
||||||
|
"settings.header.audio.quality.standard": "Standawd",
|
||||||
|
"settings.header.audio.quality.standard.description": "64 kbps",
|
||||||
|
"settings.option.audio.seamlessTransition": "Seamwess Audio Twansition",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality": "Enyabwe Advanced Functionyawity",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.description": "Enyabwing AudioContext functionyawity wiww awwow fow extended audio featuwes wike Audio Nyowmawization, Equawizews and Visuawizews - howevew on some systems this may cause stuttewing in audio twacks.",
|
||||||
|
"settings.option.audio.audioLab": "Cidew Audio Wab",
|
||||||
|
"settings.option.audio.audioLab.description": "An assowtment of in-house devewoped audio effects fow Cidew.",
|
||||||
|
"settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionyawity) is wequiwed to enyabwe Cidew Audio Wabowatowy.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Anyawog Wawmth",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Simuwates the anyawog wawmth modewwed aftew the Kowg Nyutube 6P1",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Anyawog Wawmth intensity",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "Changes the intensity of the Anyawog Wawmth Moduwe pwocessing.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Wawm",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cidew Adwenyawinye Pwocessow\u2122\ufe0f",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes evewything sound both wichew and mowe wivewy.",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP is nyot compatibwe with Spatiawization. Pwease disabwe Spatiawization to continyue.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Stwength",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the stwength of the pwocessing donye to the audio. (Aggwessive may yiewd undesiwabwe wesuwts)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standawd",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggwessive",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Nyowmawization",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Nyowmawizes peak vowume fow individuaw twacks to cweate a mowe unyifowm wistenying expewience.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatiawization",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatiawize audio and make audio mowe 3-dimensionyaw (nyote: This is nyot Dowby Atmos)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cidew Tunyed Spatiawization",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description": "Pwe-tunyed Spatiawizing Effect, disabwes the customizabwe settings of Audio Spatiawization. Spatiawization must be enyabwed as a pwewequisite.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile": "Cidew Spatiawization Pwofiwe",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description": "Changes the Tunying Pwofiwe of the Spatiawization. (Wequiwes App Westawt)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard": "Standawd",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile": "Audiophiwe",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Spatiawization is nyot compatibwe with CAP. Pwease disabwe CAP to continyue.",
|
||||||
|
"settings.header.visual": "Visuaw",
|
||||||
|
"settings.header.visual.description": "Adjust the visuaw settings fow Cidew.",
|
||||||
|
"settings.option.visual.windowBackgroundStyle": "Window Backgwound Stywe",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.none": "Nyonye",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.artwork": "Awtwowk",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.image": "Image",
|
||||||
|
"settings.option.visual.animatedArtwork": "Anyimated Awtwowk",
|
||||||
|
"settings.header.visual.animatedArtwork.always": "Awways",
|
||||||
|
"settings.header.visual.animatedArtwork.limited": "Wimited to pages and speciaw entwies",
|
||||||
|
"settings.header.visual.animatedArtwork.disable": "Disabwe evewywhewe",
|
||||||
|
"settings.option.visual.animatedArtworkQuality": "Anyimated Awtwowk Quawity",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.low": "Wow",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.medium": "Medium",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.high": "High",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Vewy High",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.extreme": "Extweme",
|
||||||
|
"settings.option.visual.animatedWindowBackground": "Anyimated Window Backgwound",
|
||||||
|
"settings.option.visual.hardwareAcceleration": "Hawdwawe Accewewation",
|
||||||
|
"settings.option.visual.hardwareAcceleration.description": "Wequiwes wewaunch",
|
||||||
|
"settings.header.visual.hardwareAcceleration.default": "Defauwt",
|
||||||
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
|
"settings.header.visual.theme": "Theme",
|
||||||
|
"settings.option.visual.theme.github.download": "Instaww fwom GitHub UWW",
|
||||||
|
"settings.option.visual.theme.github.explore": "Expwowe GitHub Themes",
|
||||||
|
"settings.header.visual.theme.github.page": "Themes fwom GitHub",
|
||||||
|
"settings.option.visual.theme.github.install.confirm": "Awe you suwe you want to instaww {{ repo }}?",
|
||||||
|
"settings.prompt.visual.theme.github.URL": "Entew the UWW of the theme you want to instaww",
|
||||||
|
"settings.notyf.visual.theme.install.success": "Theme instawwed successfuwwy",
|
||||||
|
"settings.notyf.visual.theme.install.error": "Theme instawwation faiwed",
|
||||||
|
"settings.header.visual.plugin": "Pwugin",
|
||||||
|
"settings.option.visual.plugin.github.download": "Instaww fwom GitHub UWW",
|
||||||
|
"settings.option.visual.plugin.github.explore": "Expwowe GitHub Pwugins",
|
||||||
|
"settings.header.visual.plugin.github.page": "Pwugins fwom GitHub",
|
||||||
|
"settings.option.visual.plugin.github.install.confirm": "Awe you suwe you want to instaww {{ repo }}?",
|
||||||
|
"settings.prompt.visual.plugin.github.URL": "Entew the UWW of the pwugin you want to instaww",
|
||||||
|
"settings.prompt.visual.plugin.github.success": "Pwugin instawwed successfuwwy, Pwess OK to wewaunch Cidew",
|
||||||
|
"settings.notyf.visual.plugin.install.success": "Pwugin instawwed successfuwwy",
|
||||||
|
"settings.notyf.visual.plugin.install.error": "Pwugin instawwation faiwed",
|
||||||
|
"settings.option.visual.theme.default": "Cidew",
|
||||||
|
"settings.option.visual.theme.dark": "Dawk",
|
||||||
|
"settings.option.visual.showPersonalInfo": "Show Pewsonyaw Info",
|
||||||
|
"settings.header.window": "Window",
|
||||||
|
"settings.header.window.description": "Adjust the window settings fow Cidew.",
|
||||||
|
"settings.option.window.openOnStartup": "Open Cidew on Stawtup",
|
||||||
|
"settings.option.window.openOnStartup.hidden": "Open Hidden",
|
||||||
|
"settings.header.lyrics": "Wywics",
|
||||||
|
"settings.header.lyrics.description": "Adjust the wywics settings fow Cidew.",
|
||||||
|
"settings.option.lyrics.enableMusixmatch": "Enyabwe Musixmatch Wywics",
|
||||||
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Enyabwe Kawaoke Mode (Musixmatch onwy)",
|
||||||
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch Twanswation Pwefewwed Wanguage",
|
||||||
|
"settings.option.lyrics.enableYoutubeLyrics": "Enyabwe Youtube Wywics fow Music Videos",
|
||||||
|
"settings.header.connectivity": "Connyectivity",
|
||||||
|
"settings.header.connectivity.description": "Adjust the connyectivity settings fow Cidew.",
|
||||||
|
"settings.option.connectivity.discordRPC": "Discowd Wich Pwesence",
|
||||||
|
"settings.option.connectivity.playbackNotifications": "Pwayback Nyotifications",
|
||||||
|
"settings.header.connectivity.discordRPC.cider": "Dispway as 'Cidew'",
|
||||||
|
"settings.header.connectivity.discordRPC.appleMusic": "Dispway as 'Appwe Music'",
|
||||||
|
"settings.option.connectivity.discordRPC.clearOnPause": "Cweaw Discowd Wich Pwesence on Pause",
|
||||||
|
"settings.option.connectivity.lastfmScrobble": "Wast.fm Scwobbwing",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.delay": "Wast.fm Scwobbwe Deway (%)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Enyabwe Wast.fm Nyow Pwaying",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Wemuv featuwing awtists fwom song titwe (Wast.fm)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Fiwtew wooped twack (Wast.fm)",
|
||||||
|
"settings.header.debug": "Debug",
|
||||||
|
"settings.option.debug.copy_log": "Copy wogs to cwipboawd",
|
||||||
|
"settings.option.debug.openAppData": "Open Cidew Fowdew",
|
||||||
|
"settings.header.experimental": "Expewimentaw",
|
||||||
|
"settings.header.experimental.description": "Adjust the expewimentaw settings fow Cidew.",
|
||||||
|
"settings.option.experimental.unknownPlugin": "Unknyown Souwces",
|
||||||
|
"settings.option.experimental.unknownPlugin.description": "Awwow instawwation of pwugins fwom wepos othew than the Cidew Pwugin Wepositowy",
|
||||||
|
"settings.option.experimental.compactUI": "Compact UI",
|
||||||
|
"settings.option.window.close_button_hide": "Cwose Button Shouwd Hide the Appwication",
|
||||||
|
"settings.option.experimental.inline_playlists": "Inwinye Pwaywists and Awbums",
|
||||||
|
"settings.option.advanced.playlistTrackMapping": "Pwaywist Twack Mapping",
|
||||||
|
"settings.option.advanced.playlistTrackMapping.description": "Enyabwes deep scannying of pwaywists to detewminye which twacks awe in which pwaywists. Pwaywist cache buiwd times can incwease signyificantwy.",
|
||||||
|
"settings.option.visual.transparent": "Twanspawent fwame",
|
||||||
|
"settings.option.visual.transparent.description": "Twanspawent fwame (nyeeds Theme Suppowt , wequiwes wewaunch)",
|
||||||
|
"spatial.notTurnedOn": "Audio Spatiawization is disabwed. To use, pwease enyabwe it fiwst.",
|
||||||
|
"spatial.spatialProperties": "Spatiaw Pwopewties",
|
||||||
|
"spatial.width": "Width",
|
||||||
|
"spatial.height": "Height",
|
||||||
|
"spatial.depth": "Depth",
|
||||||
|
"spatial.gain": "Gain",
|
||||||
|
"spatial.roomMaterials": "Woom Matewiaws",
|
||||||
|
"spatial.roomDimensions": "Woom Dimensions",
|
||||||
|
"spatial.roomPositions": "Woom Positions",
|
||||||
|
"spatial.setDimensions": "Set Dimensions",
|
||||||
|
"spatial.setPositions": "Set Positions",
|
||||||
|
"spatial.up": "Up",
|
||||||
|
"spatial.front": "Fwont",
|
||||||
|
"spatial.left": "Weft",
|
||||||
|
"spatial.right": "Wight",
|
||||||
|
"spatial.back": "Back",
|
||||||
|
"spatial.down": "Down",
|
||||||
|
"spatial.listener": "Wistenyew",
|
||||||
|
"spatial.audioSource": "Audio Souwce",
|
||||||
|
"settings.header.unfinished": "Unfinyished",
|
||||||
|
"remote.web.title": "Cidew Wemote",
|
||||||
|
"remote.web.description": "Scan the QW code to paiw youw phonye up with this Cidew instance",
|
||||||
|
"about.thanks": "Majow thanks to the Cidew Cowwective Team and aww of ouw contwibutows."
|
||||||
|
}
|
|
@ -1,347 +0,0 @@
|
||||||
{ // Base File
|
|
||||||
// i18n Info
|
|
||||||
"i18n.languageName": "Engwish (OwO)", // name of language in native language
|
|
||||||
"i18n.languageNameEnglish": "Engwish (OwO)", // name of language in English
|
|
||||||
"i18n.category": "fun", // main = real language, fun = fun community languages
|
|
||||||
"i18n.authors": "@deerwithacurl @gamingliamstudios", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cidew",
|
|
||||||
|
|
||||||
"date.format": "${m} ${d}, ${y}",
|
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "Nu",
|
|
||||||
"dialog.ok": "Oki",
|
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "Updating wibwawy songs...",
|
|
||||||
"notification.updatingLibraryAlbums": "Updating wibwawy awbums...",
|
|
||||||
"notification.updatingLibraryArtists": "Updating wibwawy awtists...",
|
|
||||||
|
|
||||||
// Terms
|
|
||||||
"term.appleInc": "Appwe Inc.",
|
|
||||||
"term.appleMusic": "Appwe Mewsic",
|
|
||||||
"term.applePodcasts": "Appwe Pawdcasts",
|
|
||||||
"term.itunes": "iTuwunes",
|
|
||||||
"term.github": "GitHuwub",
|
|
||||||
"term.discord": "Discowd",
|
|
||||||
"term.learnMore": "Weawn moar",
|
|
||||||
"term.accountSettings": "Accownt Settings",
|
|
||||||
"term.logout": "Wogout",
|
|
||||||
"term.login": "Wogin",
|
|
||||||
"term.about": "Abowt",
|
|
||||||
"term.privateSession": "Pwivate Session OwO",
|
|
||||||
"term.queue": "Quwue",
|
|
||||||
"term.search": "Seawch",
|
|
||||||
"term.library": "Wibwawy",
|
|
||||||
"term.listenNow": "Wisten Nao",
|
|
||||||
"term.browse": "Bwowse",
|
|
||||||
"term.radio": "Wadio",
|
|
||||||
"term.recentlyAdded": "Wecentwy Added",
|
|
||||||
"term.songs": "Sawngs",
|
|
||||||
"term.albums": "Awbums",
|
|
||||||
"term.artists": "Awtists",
|
|
||||||
"term.podcasts": "Pawdcasts",
|
|
||||||
"term.playlists": "Pwaywists",
|
|
||||||
"term.playlist": "Pwaywist",
|
|
||||||
"term.newPlaylist": "Nyew Pwaywist",
|
|
||||||
"term.newPlaylistFolder": "New Pwaywist Fowdew",
|
|
||||||
"term.createNewPlaylist": "Cweate New Pwaywist",
|
|
||||||
"term.createNewPlaylistFolder": "Cweate New Pwaywist Fowdew",
|
|
||||||
"term.deletePlaylist": "Awe chu suwe chu wan to dewete dis pwaywist?",
|
|
||||||
"term.play": "Pway",
|
|
||||||
"term.pause": "Pawse",
|
|
||||||
"term.previous": "Pwevious",
|
|
||||||
"term.next": "Next",
|
|
||||||
"term.shuffle": "Shuffwe",
|
|
||||||
"term.repeat": "Wepeat",
|
|
||||||
"term.volume": "Vowume",
|
|
||||||
"term.mute": "Muwute",
|
|
||||||
"term.unmute": "Unmuwute",
|
|
||||||
"term.share": "Shawe",
|
|
||||||
"term.share.success": "Copied to cwipboawd",
|
|
||||||
"term.settings": "Settings",
|
|
||||||
"term.seeAll": "See Aww",
|
|
||||||
"term.sortBy": "Sowt By",
|
|
||||||
"term.sortBy.album": "Awbum",
|
|
||||||
"term.sortBy.artist": "Awtist",
|
|
||||||
"term.sortBy.name": "Name",
|
|
||||||
"term.sortBy.genre": "Genwe",
|
|
||||||
"term.sortBy.releaseDate": "Wewease Date",
|
|
||||||
"term.sortBy.duration": "Duwation",
|
|
||||||
"term.sortOrder": "A-Z",
|
|
||||||
"term.sortOrder.ascending": "Ascending",
|
|
||||||
"term.sortOrder.descending": "Descending",
|
|
||||||
"term.viewAs": "View As",
|
|
||||||
"term.viewAs.coverArt": "Covew Awt",
|
|
||||||
"term.viewAs.list": "Wist",
|
|
||||||
"term.size": "Size",
|
|
||||||
"term.size.normal": "Nowmaw",
|
|
||||||
"term.size.compact": "Wittwe",
|
|
||||||
"term.enable": "Enabwe",
|
|
||||||
"term.disable": "Disabwe",
|
|
||||||
"term.enabled": "Enabwed",
|
|
||||||
"term.disabled": "Disabwed",
|
|
||||||
"term.connect": "Connect",
|
|
||||||
"term.connecting": "Connecting",
|
|
||||||
"term.disconnect": "Disconnect",
|
|
||||||
"term.authed": "Authed",
|
|
||||||
"term.confirm": "Confiwm?",
|
|
||||||
"term.more": "Moar",
|
|
||||||
"term.less": "Wess",
|
|
||||||
"term.showMore": "Show moar",
|
|
||||||
"term.showLess": "Show wess",
|
|
||||||
"term.topSongs": "Top Songs",
|
|
||||||
"term.latestReleases": "Watest Weweases",
|
|
||||||
"term.time.added": "Added",
|
|
||||||
"term.time.released": "Weweased",
|
|
||||||
"term.time.updated": "Updated",
|
|
||||||
"term.time.hours": "houws",
|
|
||||||
"term.time.hour": "houw",
|
|
||||||
"term.time.minutes": "minuwtes",
|
|
||||||
"term.time.minute": "minuwte",
|
|
||||||
"term.time.seconds": "seconds",
|
|
||||||
"term.time.second": "second",
|
|
||||||
"term.fullscreenView": "Fuwwwscween View",
|
|
||||||
"term.defaultView": "Defauwt View",
|
|
||||||
"term.audioSettings": "Audiowo Settings",
|
|
||||||
"term.clearAll": "Cweaw Aww",
|
|
||||||
"term.recentStations": "Wecent Stations",
|
|
||||||
"term.language": "Wanguage",
|
|
||||||
"term.funLanguages": "Fun",
|
|
||||||
"term.noLyrics": "Woading... / Wywics not found./ Instwumentaw.",
|
|
||||||
"term.copyright": "Copywight",
|
|
||||||
"term.rightsReserved": "All Wights Wesewved.",
|
|
||||||
"term.sponsor": "Sponsow dis pwoject",
|
|
||||||
"term.ciderTeam": "Cidew Team",
|
|
||||||
"term.developer": "Devewopew",
|
|
||||||
"term.socialTeam": "Sociaw Team",
|
|
||||||
"term.socials": "Sociaws",
|
|
||||||
"term.contributors": "Contwibutows",
|
|
||||||
"term.equalizer": "Equawizew",
|
|
||||||
"term.reset": "Weset",
|
|
||||||
"term.tracks": "twacks", // Assume x amount of tracks. e.g. 50 tracks
|
|
||||||
"term.videos": "Videowos",
|
|
||||||
"term.menu": "Menuwu",
|
|
||||||
"term.check": "Check",
|
|
||||||
"term.aboutArtist": "About {{artistName}}", // e.g. 'About Doja Cat'
|
|
||||||
"term.topResult": "Top Wesuwt", // Search Results
|
|
||||||
"term.sharedPlaylists": "Shawed Pwaywists", // Search Results
|
|
||||||
"term.people": "Peopwe", // Search Results
|
|
||||||
"term.newpreset.name": "New EQ Pweset Name", // Equalizer Preset
|
|
||||||
"term.addedpreset": "Added Pweset",
|
|
||||||
"term.deletepreset.warn": "Awe chu suwe chu want to dewete dis pweset?",
|
|
||||||
"term.deletedpreset": "Wemoved pweset",
|
|
||||||
"term.musicVideos": "Music Videowos", // Search page friendlyTypes
|
|
||||||
"term.stations": "Stations",
|
|
||||||
"term.curators": "Cuwatows",
|
|
||||||
"term.appleCurators": "Appwe Cuwatows",
|
|
||||||
"term.radioShows": "Wadio Shows",
|
|
||||||
"term.recordLabels": "Wecowd Wabews",
|
|
||||||
"term.videoExtras": "Videowo Extwas",
|
|
||||||
"term.top": "Top",
|
|
||||||
|
|
||||||
// Home
|
|
||||||
"home.title": "Home",
|
|
||||||
"home.recentlyPlayed": "Wecentwy Pwayed",
|
|
||||||
"home.recentlyAdded": "Wecentwy Added",
|
|
||||||
"home.artistsFeed": "Youw Awtists Feed",
|
|
||||||
"home.artistsFeed.noArtist": "Fowwow some awtists fiwst and theiw watest weleases wiww be here",
|
|
||||||
"home.madeForYou": "Made Fow Chu",
|
|
||||||
"home.friendsListeningTo": "Fwiends Wistening To",
|
|
||||||
"home.followedArtists": "Fowwowed Awtists",
|
|
||||||
|
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "Appwe Music wequiwes a subscwiption.",
|
|
||||||
"error.connectionError": "Thewe was a pwobwem connecting to Appwe Mewsic.",
|
|
||||||
"error.noResults": "No Wesuwts.",
|
|
||||||
"error.noResults.description": "Twy a new seawch.",
|
|
||||||
|
|
||||||
// Podcasts
|
|
||||||
"podcast.followOnCider": "Fowwow On Cidew",
|
|
||||||
"podcast.followedOnCider": "Fowwowing On Cidew",
|
|
||||||
"podcast.subscribeOnItunes": "Subscwibe On iTuwunes",
|
|
||||||
"podcast.subscribedOnItunes": "Subscwibed On iTuwunes",
|
|
||||||
"podcast.itunesStore": "iTuwunes Stowe",
|
|
||||||
"podcast.episodes": "Episowodes",
|
|
||||||
"podcast.playEpisode": "Pway Episowode",
|
|
||||||
"podcast.website": "Pawdcast Website",
|
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "Add to Wibwawy",
|
|
||||||
"action.addToLibrary.success": "Added to Wibwawy",
|
|
||||||
"action.addToLibrary.error": "Ewwow Adding to Wibwawy",
|
|
||||||
"action.removeFromLibrary": "Wemove fwom Wibwawy",
|
|
||||||
"action.removeFromLibrary.success": "Wemoved fwom Wibwawy",
|
|
||||||
"action.addToQueue": "Add to Quwue",
|
|
||||||
"action.addToQueue.success": "Added to Quwue",
|
|
||||||
"action.addToQueue.error": "Ewwow Adding to Quwue",
|
|
||||||
"action.removeFromQueue": "Wemove fwom Quwue",
|
|
||||||
"action.removeFromQueue.success": "Wemoved fwom Quwue",
|
|
||||||
"action.removeFromQueue.error": "Ewwow Wemoving fwom Quwue",
|
|
||||||
"action.createPlaylist": "Cweate a New Pwaywist",
|
|
||||||
"action.addToPlaylist": "Add to Pwaywist",
|
|
||||||
"action.removeFromPlaylist": "Wemove fwom Pwaywist",
|
|
||||||
"action.addToFavorites": "Add to Favowites",
|
|
||||||
"action.follow": "Fowwow",
|
|
||||||
"action.follow.success": "Fowwowed",
|
|
||||||
"action.follow.error": "Ewwow Fowwowing",
|
|
||||||
"action.unfollow": "Unfowwow",
|
|
||||||
"action.unfollow.success": "Unfowwowed",
|
|
||||||
"action.unfollow.error": "Ewwow Unfowwowing",
|
|
||||||
"action.playNext": "Pway Next",
|
|
||||||
"action.playLater": "Pway Watew",
|
|
||||||
"action.startRadio": "Stawt Wadio",
|
|
||||||
"action.goToArtist": "Go to Awtist",
|
|
||||||
"action.goToAlbum": "Go to Awbum",
|
|
||||||
"action.moveToTop": "Move to top",
|
|
||||||
"action.share": "Shawe",
|
|
||||||
"action.rename": "Wename",
|
|
||||||
"action.love": "Wuv",
|
|
||||||
"action.unlove": "Unwuv",
|
|
||||||
"action.dislike": "Diswike",
|
|
||||||
"action.undoDislike": "Undo diswike",
|
|
||||||
"action.showWebRemoteQR": "Web Wiimote",
|
|
||||||
"action.playTracksNext": "Pway ${app.selectedMediaItems.length} twacks next",
|
|
||||||
"action.playTracksLater": "Pway ${app.selectedMediaItems.length} twacks latew",
|
|
||||||
"action.removeTracks": "Wemove ${self.selectedItems.length} twacks fwom quwue",
|
|
||||||
"action.import": "Impowt",
|
|
||||||
"action.export": "Expowt",
|
|
||||||
"action.showAlbum": "Show Compwete Awbum",
|
|
||||||
"action.tray.minimize": "Minimize to Tway",
|
|
||||||
"action.tray.quit": "Quit",
|
|
||||||
"action.tray.show": "Show",
|
|
||||||
"action.update": "Update",
|
|
||||||
"action.newpreset": "New Pweset...", // Equalizer Preset
|
|
||||||
"action.deletepreset": "Dewete Pweset",
|
|
||||||
|
|
||||||
// Settings - General
|
|
||||||
"settings.header.general": "Genewaw",
|
|
||||||
"settings.header.general.description": "Adjust the genewaw settings fow Cidew.",
|
|
||||||
"settings.option.general.language": "Wanguage",
|
|
||||||
|
|
||||||
// Language optgroups
|
|
||||||
"settings.option.general.language.main": "Wanguages",
|
|
||||||
"settings.option.general.language.fun": "Fun Wanguages",
|
|
||||||
"settings.option.general.language.unsorted": "Unsowted",
|
|
||||||
|
|
||||||
// Update Cider
|
|
||||||
"settings.option.general.updateCider": "Update Cidew", // Button
|
|
||||||
"settings.option.general.updateCider.branch": "Cidew Update Bwanch", // Dropdown
|
|
||||||
"settings.option.general.updateCider.branch.description": "Sewect the bwanch to uwpdate Cidew to",
|
|
||||||
"settings.option.general.updateCider.branch.main": "Stabwe",
|
|
||||||
"settings.option.general.updateCider.branch.develop": "Devewopment",
|
|
||||||
|
|
||||||
// Settings - Audio
|
|
||||||
"settings.header.audio": "Audiowo",
|
|
||||||
"settings.header.audio.description": "Adjust the audiowo settings fow Cidew.",
|
|
||||||
"settings.option.audio.quality": "Audiowo Quawity", // Dropdown
|
|
||||||
"settings.header.audio.quality.hireslossless": "Hi-res losswess",
|
|
||||||
"settings.header.audio.quality.hireslossless.description": "(uwp to 24-bit/192 khz)",
|
|
||||||
"settings.header.audio.quality.lossless": "Losswess",
|
|
||||||
"settings.header.audio.quality.lossless.description": "(uwp to 24-bit/48 khz)",
|
|
||||||
"settings.header.audio.quality.high": "High",
|
|
||||||
"settings.header.audio.quality.low": "Low", // keeping as low because confusion with the word wow
|
|
||||||
"settings.header.audio.quality.auto": "Autowo",
|
|
||||||
"settings.option.audio.seamlessTransition": "Seamwess Audiowo Twansition", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "Enabwe Advanced Functionawity", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "Enabwing AudiowoContext functionawity wiww awwow fow extended audiowo featuwes wike Audiowo Nowmawization, Equalizews and Visuawizews, howevew on some systems dis may cause stuttewing in audiowo twacks.",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cidew Adwenawine Pwocessow™️", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacouwstic enhancements that makes evewything souwnd both wichew and mowe wivewy. | Designed by Maikiwi",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Stwength", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the stwength of the pwocessing done to the auwdio. (Aggwessive may yiewd uwndesiwabwe wesuwwts)",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standawd",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggwessive",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audiowo Nowmawization", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Nowmawizes peak vowume fow individuaw twacks to cweate a moar unifowm wistening expewience.",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audiowo Spatiawization", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatiawize audiowo and make audiowo moar 3-dimensionaw (note: Dis is not Dowby Atmos)",
|
|
||||||
|
|
||||||
// Settings - Visual
|
|
||||||
"settings.header.visual": "Visuaw",
|
|
||||||
"settings.header.visual.description": "Adjust the visuaw settings fow Cidew.",
|
|
||||||
"settings.option.visual.windowBackgroundStyle": "Window Backgwound Stywe", // Toggle
|
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "None",
|
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "Awtwowk",
|
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "Image",
|
|
||||||
"settings.option.visual.animatedArtwork": "Animated Awtwowk", // Dropdown
|
|
||||||
"settings.header.visual.animatedArtwork.always": "Awways",
|
|
||||||
"settings.header.visual.animatedArtwork.limited": "Wimited to pages and speciaw entwies",
|
|
||||||
"settings.header.visual.animatedArtwork.disable": "Disabwe evewywhewe",
|
|
||||||
"settings.option.visual.animatedArtworkQuality": "Animated Awtwowk Quawity", // Dropdown
|
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "Low",
|
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "Medium",
|
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "High",
|
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "Vewy High",
|
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "Extweme",
|
|
||||||
"settings.option.visual.animatedWindowBackground": "Animated Window Backgwound", // Toggle
|
|
||||||
"settings.option.visual.hardwareAcceleration": "Hawdwawe Accewewation", // Dropdown
|
|
||||||
"settings.option.visual.hardwareAcceleration.description": "Wequiwes wewaunch",
|
|
||||||
"settings.header.visual.hardwareAcceleration.default": "Defauwt",
|
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.option.visual.showPersonalInfo": "Show Pewsonaw Info", // Toggle
|
|
||||||
|
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "Wywics",
|
|
||||||
"settings.header.lyrics.description": "Adjust the wywics settings fow Cidew.",
|
|
||||||
"settings.option.lyrics.enableMusixmatch": "Enabwe Musixmatch Wywics", // Toggle
|
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "Enabwe Kawaoke Mode (Musixmatch onwy)", // Toggle
|
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch Twanswation Pwefewwed Wanguage", // Dropdown
|
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "Enabwe YouTube Wywics fow Mewsic Videowos", // Toggle
|
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "Connectivity",
|
|
||||||
"settings.header.connectivity.description": "Adjust the connectivity settings fow Cidew.",
|
|
||||||
"settings.option.connectivity.discordRPC": "Discowd Wich Pwesence", // Dropdown
|
|
||||||
"settings.option.connectivity.playbackNotifications": "Pwayback Notifications", // Toggle
|
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "Disway as 'Cider'",
|
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "Dispway as 'Apple Music'",
|
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "Cweaw Discowd Wich Pwesence on Paws", // Toggle
|
|
||||||
"settings.option.connectivity.lastfmScrobble": "Wast.fm Scwobbwing", // Option to Connect
|
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "Wast.fm Scwobble Deway (%)",
|
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Enabwe Wast.fm Nao Pwaying",
|
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Wemove featuwing awtists fwom song titwe (Wast.fm)",
|
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "Fiwtew wooped twack (Wast.fm)",
|
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "Expewimentaw",
|
|
||||||
"settings.header.experimental.description": "Adjust the expewimentaw settings fow Cidew.",
|
|
||||||
"settings.option.experimental.compactUI": "Wittwe UI", // Toggle
|
|
||||||
"settings.option.experimental.close_button_hide": "Cwose Button Shouwd Hide the Appwication",
|
|
||||||
|
|
||||||
// Refer to term.disabled & term.enabled
|
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.notTurnedOn": "Audiowo Spatiawization is disabwed. To use, pwease enabwe it fiwst.",
|
|
||||||
"spatial.spatialProperties": "Spatiaw Pwopewties",
|
|
||||||
"spatial.width": "Width",
|
|
||||||
"spatial.height": "Height",
|
|
||||||
"spatial.depth": "Depth",
|
|
||||||
"spatial.gain": "Gain",
|
|
||||||
"spatial.roomMaterials": "Woom Matewiaws",
|
|
||||||
"spatial.roomDimensions": "Woom Dimensions",
|
|
||||||
"spatial.roomPositions": "Woom Positions",
|
|
||||||
"spatial.setDimensions": "Set Dimensions",
|
|
||||||
"spatial.setPositions": "Set Positions",
|
|
||||||
"spatial.up": "Up",
|
|
||||||
"spatial.front": "Fwont",
|
|
||||||
"spatial.left": "Weft",
|
|
||||||
"spatial.right": "Wight",
|
|
||||||
"spatial.back": "Back",
|
|
||||||
"spatial.down": "Down",
|
|
||||||
"spatial.listener": "Wistenew",
|
|
||||||
"spatial.audioSource": "Audiowo Souwce",
|
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "Unfinished",
|
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "Cidew Wiimote",
|
|
||||||
"remote.web.description": "Scan da QR code to paiw chur phone up with dis Cidew instance",
|
|
||||||
|
|
||||||
// About
|
|
||||||
"about.thanks": "Majow tanks to da Cidew Cowwective Team and aww of ouw contwibutows."
|
|
||||||
}
|
|
|
@ -1,25 +1,15 @@
|
||||||
{ // Base File
|
{
|
||||||
// i18n Info
|
"i18n.languageName": "piss",
|
||||||
"i18n.languageName": "piss", // name of language in native language
|
"i18n.languageNameEnglish": "English (piss)",
|
||||||
"i18n.languageNameEnglish": "English (piss)", // name of language in English
|
"i18n.category": "fun",
|
||||||
"i18n.category": "fun", // main = real language, fun = fun community languages
|
"i18n.authors": "@SoNothingMC @saboooor",
|
||||||
"i18n.authors": "@SoNothingMC @saboooor", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "piss",
|
"app.name": "piss",
|
||||||
|
"date.format": "${y}-${m}-${d}",
|
||||||
"date.format": "${y}-${m}-${d}", // ISO 8601 for the win!
|
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "no piss",
|
"dialog.cancel": "no piss",
|
||||||
"dialog.ok": "yes piss",
|
"dialog.ok": "yes piss",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "pisssing all over your songs",
|
"notification.updatingLibrarySongs": "pisssing all over your songs",
|
||||||
"notification.updatingLibraryAlbums": "pissing all over your albums",
|
"notification.updatingLibraryAlbums": "pissing all over your albums",
|
||||||
"notification.updatingLibraryArtists": "pissing all over your idols",
|
"notification.updatingLibraryArtists": "pissing all over your idols",
|
||||||
|
|
||||||
// Terms
|
|
||||||
"term.appleInc": "piss Inc.",
|
"term.appleInc": "piss Inc.",
|
||||||
"term.appleMusic": "piss music",
|
"term.appleMusic": "piss music",
|
||||||
"term.applePodcasts": "piss podcasts",
|
"term.applePodcasts": "piss podcasts",
|
||||||
|
@ -40,7 +30,7 @@
|
||||||
"term.browse": "find piss",
|
"term.browse": "find piss",
|
||||||
"term.radio": "piss everywhere",
|
"term.radio": "piss everywhere",
|
||||||
"term.recentlyAdded": "recently obtained piss",
|
"term.recentlyAdded": "recently obtained piss",
|
||||||
"term.songs": "piss list", // not to be confused with pisslist (playlist)
|
"term.songs": "piss list",
|
||||||
"term.albums": "piss collection",
|
"term.albums": "piss collection",
|
||||||
"term.artists": "pissers",
|
"term.artists": "pissers",
|
||||||
"term.podcasts": "pisscasts",
|
"term.podcasts": "pisscasts",
|
||||||
|
@ -69,14 +59,15 @@
|
||||||
"term.sortBy.artist": "pissers",
|
"term.sortBy.artist": "pissers",
|
||||||
"term.sortBy.name": "piss name",
|
"term.sortBy.name": "piss name",
|
||||||
"term.sortBy.genre": "way to piss",
|
"term.sortBy.genre": "way to piss",
|
||||||
"term.sortBy.releaseDate": "pissed date",
|
"term.sortBy.releaseDate": "repissed date",
|
||||||
"term.sortBy.duration": "piss duration",
|
"term.sortBy.duration": "piss duration",
|
||||||
|
"term.sortBy.dateAdded": "obtained date",
|
||||||
"term.sortOrder": "piss-PISS",
|
"term.sortOrder": "piss-PISS",
|
||||||
"term.sortOrder.ascending": "pissing upwards",
|
"term.sortOrder.ascending": "pissing upwards",
|
||||||
"term.sortOrder.descending": "pissing downwards",
|
"term.sortOrder.descending": "pissing downwards",
|
||||||
"term.viewAs": "piss as",
|
"term.viewAs": "piss as",
|
||||||
"term.viewAs.coverArt": "piss art",
|
"term.viewAs.coverArt": "piss art",
|
||||||
"term.viewAs.list": "piss list", // not to be confused with pisslist (playlist)
|
"term.viewAs.list": "piss list",
|
||||||
"term.size": "piss size",
|
"term.size": "piss size",
|
||||||
"term.size.normal": "normal piss",
|
"term.size.normal": "normal piss",
|
||||||
"term.size.compact": "compact piss",
|
"term.size.compact": "compact piss",
|
||||||
|
@ -94,10 +85,10 @@
|
||||||
"term.showMore": "more piss",
|
"term.showMore": "more piss",
|
||||||
"term.showLess": "less piss",
|
"term.showLess": "less piss",
|
||||||
"term.topSongs": "top piss",
|
"term.topSongs": "top piss",
|
||||||
"term.latestReleases": "latest piss collection",
|
"term.latestReleases": "latest piss",
|
||||||
"term.time.added": "pissed",
|
"term.time.added": "obtained",
|
||||||
"term.time.released": "pissed",
|
"term.time.released": "repissed",
|
||||||
"term.time.updated": "pissed",
|
"term.time.updated": "pissdated",
|
||||||
"term.time.hours": "hours",
|
"term.time.hours": "hours",
|
||||||
"term.time.hour": "hour",
|
"term.time.hour": "hour",
|
||||||
"term.time.minutes": "minutes",
|
"term.time.minutes": "minutes",
|
||||||
|
@ -122,28 +113,34 @@
|
||||||
"term.contributors": "more pisseneers",
|
"term.contributors": "more pisseneers",
|
||||||
"term.equalizer": "advanced piss configuration",
|
"term.equalizer": "advanced piss configuration",
|
||||||
"term.reset": "repiss",
|
"term.reset": "repiss",
|
||||||
"term.tracks": "pisses", // Assume x amount of tracks. e.g. 50 tracks
|
"term.track": {
|
||||||
|
"one": "piss",
|
||||||
|
"other": "pisses"
|
||||||
|
},
|
||||||
"term.videos": "piss videos",
|
"term.videos": "piss videos",
|
||||||
"term.menu": "piss menu",
|
"term.menu": "piss menu",
|
||||||
"term.check": "piss!",
|
"term.check": "piss!",
|
||||||
"term.aboutArtist": "about pisser {{artistName}}", // e.g. 'About Doja Cat'
|
"term.aboutArtist": "about pisser {{artistName}}",
|
||||||
"term.topResult": "top piss", // Search Results
|
"term.topResult": "top piss",
|
||||||
"term.sharedPlaylists": "shared pisslists", // Search Results
|
"term.sharedPlaylists": "shared pisslists",
|
||||||
"term.people": "pissers", // Search Results
|
"term.people": "pissers",
|
||||||
"term.newpreset.name": "new advanced piss prepiss name", // Equalizer Preset
|
"term.newpreset.name": "new advanced piss prepiss name",
|
||||||
"term.addedpreset": "pissed prepiss",
|
"term.addedpreset": "obtained prepiss",
|
||||||
"term.deletepreset.warn": "are you sure you want to unpiss this prepiss?",
|
"term.deletepreset.warn": "are you sure you want to obliterate this prepiss?",
|
||||||
"term.deletedpreset": "unpissed prepiss",
|
"term.deletedpreset": "obliterated prepiss",
|
||||||
"term.musicVideos": "piss music videos", // Search page friendlyTypes
|
"term.defaultPresets": "default prepisses",
|
||||||
"term.stations": "pisses",
|
"term.userPresets": "your prepisses",
|
||||||
|
"term.requestError": "the request got pissed on",
|
||||||
|
"term.song.link.generate": "pissing on piss.link…",
|
||||||
|
"term.musicVideos": "piss videos",
|
||||||
|
"term.stations": "piss stations",
|
||||||
"term.curators": "pissators",
|
"term.curators": "pissators",
|
||||||
"term.appleCurators": "piss pissators",
|
"term.appleCurators": "piss pissators",
|
||||||
"term.radioShows": "shows that piss everywhere",
|
"term.radioShows": "shows that piss everywhere",
|
||||||
"term.recordLabels": "piss labels",
|
"term.recordLabels": "piss labels",
|
||||||
"term.videoExtras": "extra piss videos",
|
"term.videoExtras": "extra piss videos",
|
||||||
"term.top": "topiss",
|
"term.top": "topiss",
|
||||||
|
"term.version": "pission",
|
||||||
// Home
|
|
||||||
"home.title": "piss central",
|
"home.title": "piss central",
|
||||||
"home.recentlyPlayed": "recently pissed on",
|
"home.recentlyPlayed": "recently pissed on",
|
||||||
"home.recentlyAdded": "recently obtained piss",
|
"home.recentlyAdded": "recently obtained piss",
|
||||||
|
@ -152,14 +149,10 @@
|
||||||
"home.madeForYou": "pissed for you",
|
"home.madeForYou": "pissed for you",
|
||||||
"home.friendsListeningTo": "friends pissing to",
|
"home.friendsListeningTo": "friends pissing to",
|
||||||
"home.followedArtists": "followed pissers",
|
"home.followedArtists": "followed pissers",
|
||||||
|
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "piss music requires, like y'know, an actual piss music subscription to actually use.",
|
"error.appleMusicSubRequired": "piss music requires, like y'know, an actual piss music subscription to actually use.",
|
||||||
"error.connectionError": "oh, piss.",
|
"error.connectionError": "oh, piss.",
|
||||||
"error.noResults": "no piss found",
|
"error.noResults": "no piss found",
|
||||||
"error.noResults.description": "try pissing somewhere else (or press Enter/Return to search)",
|
"error.noResults.description": "try pissing somewhere else (or press Enter/Return to search)",
|
||||||
|
|
||||||
// Podcasts
|
|
||||||
"podcast.followOnCider": "piss on Cider",
|
"podcast.followOnCider": "piss on Cider",
|
||||||
"podcast.followedOnCider": "pissed on Cider",
|
"podcast.followedOnCider": "pissed on Cider",
|
||||||
"podcast.subscribeOnItunes": "piss on iPiss",
|
"podcast.subscribeOnItunes": "piss on iPiss",
|
||||||
|
@ -168,13 +161,11 @@
|
||||||
"podcast.episodes": "pisses",
|
"podcast.episodes": "pisses",
|
||||||
"podcast.playEpisode": "play piss",
|
"podcast.playEpisode": "play piss",
|
||||||
"podcast.website": "pisscast site",
|
"podcast.website": "pisscast site",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "obtain piss",
|
"action.addToLibrary": "obtain piss",
|
||||||
"action.addToLibrary.success": "piss obtained",
|
"action.addToLibrary.success": "piss obtained",
|
||||||
"action.addToLibrary.error": "error obtaining piss",
|
"action.addToLibrary.error": "error obtaining piss",
|
||||||
"action.removeFromLibrary": "dump piss",
|
"action.removeFromLibrary": "unobtain piss",
|
||||||
"action.removeFromLibrary.success": "piss dumped",
|
"action.removeFromLibrary.success": "piss unobtained",
|
||||||
"action.addToQueue": "add to toilet",
|
"action.addToQueue": "add to toilet",
|
||||||
"action.addToQueue.success": "added to toilet",
|
"action.addToQueue.success": "added to toilet",
|
||||||
"action.addToQueue.error": "error adding to toilet",
|
"action.addToQueue.error": "error adding to toilet",
|
||||||
|
@ -215,108 +206,98 @@
|
||||||
"action.tray.show": "piss back",
|
"action.tray.show": "piss back",
|
||||||
"action.update": "piss!",
|
"action.update": "piss!",
|
||||||
"action.copy": "copiss",
|
"action.copy": "copiss",
|
||||||
"action.newpreset": "new prepiss...", // Equalizer Preset
|
"action.newpreset": "new prepiss…",
|
||||||
"action.deletepreset": "unpiss prepiss",
|
"action.deletepreset": "obliterate prepiss",
|
||||||
|
|
||||||
// Settings - General
|
|
||||||
"settings.header.general": "general",
|
"settings.header.general": "general",
|
||||||
"settings.header.general.description": "the dumping place for settings when there are no other places to put them into",
|
"settings.header.general.description": "the dumping place for settings when there are no other places to put them into",
|
||||||
"settings.option.general.language": "piss around the world",
|
"settings.option.general.language": "piss around the world",
|
||||||
|
|
||||||
// Language optgroups
|
|
||||||
"settings.option.general.language.main": "actaul human languages",
|
"settings.option.general.language.main": "actaul human languages",
|
||||||
"settings.option.general.language.fun": "piss languages",
|
"settings.option.general.language.fun": "piss languages",
|
||||||
"settings.option.general.language.unsorted": "???? who put this here",
|
"settings.option.general.language.unsorted": "???? who put this here",
|
||||||
|
"settings.option.general.updateCider": "piss on cider",
|
||||||
// Update Cider
|
"settings.option.general.updateCider.branch": "where to piss on cider",
|
||||||
"settings.option.general.updateCider": "piss on cider", // Button
|
"settings.option.general.updateCider.branch.description": "there are two toilets, where do you want to piss?",
|
||||||
|
"settings.option.general.updateCider.branch.main": "smooth pissing experience",
|
||||||
// Settings - Audio
|
"settings.option.general.updateCider.branch.develop": "cutting-edge piss development",
|
||||||
"settings.header.audio": "piss sounds",
|
"settings.header.audio": "piss sounds",
|
||||||
"settings.header.audio.description": "change how your piss sounds",
|
"settings.header.audio.description": "change how your piss sounds",
|
||||||
"settings.option.audio.quality": "piss quality", // Dropdown
|
"settings.option.audio.quality": "piss quality",
|
||||||
"settings.header.audio.quality.hireslossless": "ungodly piss",
|
"settings.header.audio.quality.hireslossless": "ungodly piss",
|
||||||
"settings.header.audio.quality.hireslossless.description": "(up to 24-pisses/192 piss hertz)",
|
"settings.header.audio.quality.hireslossless.description": "up to 24-piss/192 pissHz",
|
||||||
"settings.header.audio.quality.lossless": "colorful piss",
|
"settings.header.audio.quality.lossless": "colorful piss",
|
||||||
"settings.header.audio.quality.lossless.description": "(up to 24-pisses/48 piss hertz)",
|
"settings.header.audio.quality.lossless.description": "up to 24-piss/48 pissHz",
|
||||||
"settings.header.audio.quality.enhanced": "enhanced piss",
|
"settings.header.audio.quality.enhanced": "business class piss",
|
||||||
"settings.header.audio.quality.high": "nice piss",
|
"settings.header.audio.quality.high": "nice piss",
|
||||||
"settings.header.audio.quality.low": "piss with blood",
|
"settings.header.audio.quality.high.description": "256 kpiss",
|
||||||
"settings.header.audio.quality.auto": "automatic piss",
|
"settings.header.audio.quality.standard": "piss with blood",
|
||||||
"settings.option.audio.seamlessTransition": "seamless piss-to-piss transition", // Toggle
|
"settings.header.audio.quality.standard.description": "64 kpiss",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "cool piss tricks", // Toggle
|
"settings.option.audio.seamlessTransition": "seamless piss-to-piss transition",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality": "cool piss tricks",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "enabling the AudioContext thingy allows you to do cool stuffs, however on some systems your song may stutter",
|
"settings.option.audio.enableAdvancedFunctionality.description": "enabling the AudioContext thingy allows you to do cool stuffs, however on some systems your song may stutter",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "clear piss™️", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Audio Pissifier™️",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "makes your bladder go overboard and makes your piss crisp and clear.",
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "makes your bladder go overboard and makes your piss crisp and clear",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "piss normaliztion", // Toggle
|
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "pissifier dont go well with 3d piss. turn it off and try again.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "pissifier strength",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "tune your bladder (blood may appear with turbo strength)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "normal piss",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "turbo piss",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "piss normaliztion",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "protect your eardrums from overly loud/slient pisses",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "protect your eardrums from overly loud/slient pisses",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "3D piss", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "3D piss",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "this aint the dolby atmos you are looking for but its still pretty crazy so check it out",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "this aint the dolby atmos you are looking for but its still pretty crazy so check it out",
|
||||||
|
|
||||||
// Settings - Visual
|
|
||||||
"settings.header.visual": "piss appearance",
|
"settings.header.visual": "piss appearance",
|
||||||
"settings.header.visual.description": "change how your piss looks",
|
"settings.header.visual.description": "change how your piss looks",
|
||||||
"settings.option.visual.windowBackgroundStyle": "background piss", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "background piss",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "no piss",
|
"settings.header.visual.windowBackgroundStyle.none": "no piss",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "piss art",
|
"settings.header.visual.windowBackgroundStyle.artwork": "piss art",
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "piss image",
|
"settings.header.visual.windowBackgroundStyle.image": "piss image",
|
||||||
"settings.option.visual.animatedArtwork": "moving piss art", // Dropdown
|
"settings.option.visual.animatedArtwork": "moving piss art",
|
||||||
"settings.header.visual.animatedArtwork.always": "yes piss",
|
"settings.header.visual.animatedArtwork.always": "yes piss",
|
||||||
"settings.header.visual.animatedArtwork.limited": "only piss pages and special pisses",
|
"settings.header.visual.animatedArtwork.limited": "only piss pages and special pisses",
|
||||||
"settings.header.visual.animatedArtwork.disable": "no piss",
|
"settings.header.visual.animatedArtwork.disable": "no piss",
|
||||||
"settings.option.visual.animatedArtworkQuality": "moving piss art quality", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "moving piss art quality",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "piss with blood",
|
"settings.header.visual.animatedArtworkQuality.low": "piss with blood",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "okay piss",
|
"settings.header.visual.animatedArtworkQuality.medium": "okay piss",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "nice piss",
|
"settings.header.visual.animatedArtworkQuality.high": "nice piss",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "good piss",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "good piss",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "literally 4k piss",
|
"settings.header.visual.animatedArtworkQuality.extreme": "literally 4k piss",
|
||||||
"settings.option.visual.animatedWindowBackground": "moving background piss", // Toggle
|
"settings.option.visual.animatedWindowBackground": "moving background piss",
|
||||||
"settings.option.visual.hardwareAcceleration": "make Cider piss faster", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "make Cider piss faster",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "you need to relaunch Cider",
|
"settings.option.visual.hardwareAcceleration.description": "you need to relaunch Cider",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "default piss",
|
"settings.header.visual.hardwareAcceleration.default": "default piss",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebPISS",
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebPISS",
|
||||||
"settings.header.visual.theme": "colored piss",
|
"settings.header.visual.theme": "colored piss",
|
||||||
|
"settings.option.visual.theme.github.download": "piss from PissHub URL",
|
||||||
// Settings - Visual - Theme name
|
"settings.prompt.visual.theme.github.URL": "piss on the URL for your colorful piss",
|
||||||
"settings.option.visual.theme.default": "regular piss",
|
"settings.notyf.visual.theme.install.success": "colored piss obtained",
|
||||||
|
"settings.notyf.visual.theme.install.error": "colored piss got pissed on…",
|
||||||
|
"settings.option.visual.theme.default": "same old piss",
|
||||||
"settings.option.visual.theme.dark": "black piss",
|
"settings.option.visual.theme.dark": "black piss",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.option.visual.showPersonalInfo": "show yourself to the pissiverse",
|
||||||
"settings.option.visual.showPersonalInfo": "show yourself to the pissiverse", // Toggle
|
|
||||||
|
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "piss lyrics",
|
"settings.header.lyrics": "piss lyrics",
|
||||||
"settings.header.lyrics.description": "change how your piss speaks to you",
|
"settings.header.lyrics.description": "change how your piss speaks to you",
|
||||||
"settings.option.lyrics.enableMusixmatch": "Musixpiss piss lyrics", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "Musixpiss piss lyrics",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "pissraoke mode (Musixpiss only)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "pissraoke mode (Musixpiss only)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "language for Musixpiss translations", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "language for Musixpiss translations",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "PissTube subtitles for piss videos", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "PissTube subtitles for piss videos",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "pisser-to-pisser connections",
|
"settings.header.connectivity": "pisser-to-pisser connections",
|
||||||
"settings.header.connectivity.description": "change how Cider piss on other people, including you",
|
"settings.header.connectivity.description": "change how Cider piss on other people, including you",
|
||||||
"settings.option.connectivity.discordRPC": "Pisscord rich pissence", // Dropdown
|
"settings.option.connectivity.discordRPC": "Pisscord rich pissence",
|
||||||
"settings.option.connectivity.playbackNotifications": "toilet notifications", // Toggle
|
"settings.option.connectivity.playbackNotifications": "toilet notifications",
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "piss as 'Cider'",
|
"settings.header.connectivity.discordRPC.cider": "piss as 'Cider'",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "piss as 'piss music'",
|
"settings.header.connectivity.discordRPC.appleMusic": "piss as 'piss music'",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "flush Pisscord rich pissence when holding your piss", // Toggle
|
"settings.option.connectivity.discordRPC.clearOnPause": "flush Pisscord rich pissence when holding your piss",
|
||||||
"settings.option.connectivity.lastfmScrobble": "Piss.fm scrobbling", // Option to Connect
|
"settings.option.connectivity.lastfmScrobble": "Piss.fm scrobbling",
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "Piss.fm scrobble delay (%)",
|
"settings.option.connectivity.lastfmScrobble.delay": "Piss.fm scrobble delay (%)",
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "push now playing data to Piss.fm",
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "push now playing data to Piss.fm",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "remove featured pissers from piss names (Piss.fm)",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "dump featured pissers from piss names (Piss.fm)",
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "filter same piss (Piss.fm)",
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "filter same piss (Piss.fm)",
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "piss lab",
|
"settings.header.experimental": "piss lab",
|
||||||
"settings.header.experimental.description": "mitochondria is the powerhouse of the cell",
|
"settings.header.experimental.description": "mitochondria is the powerhouse of the cell",
|
||||||
"settings.option.experimental.compactUI": "compact piss", // Toggle
|
"settings.option.experimental.compactUI": "compact piss",
|
||||||
"settings.option.experimental.close_button_hide": "play hide-and-seek when clicking close button",
|
"settings.option.window.close_button_hide": "play hide-and-seek when clicking close button",
|
||||||
"settings.option.experimental.copy_log": "copy sewage to pissboard",
|
"settings.option.experimental.copy_log": "copy sewage to pissboard",
|
||||||
"settings.option.experimental.inline_playlists": "inpiss pisslists and piss collections",
|
"settings.option.experimental.inline_playlists": "inpiss pisslists and piss collections",
|
||||||
|
|
||||||
// Refer to term.disabled & term.enabled
|
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.notTurnedOn": "3D piss is not on. turn it on lol",
|
"spatial.notTurnedOn": "3D piss is not on. turn it on lol",
|
||||||
"spatial.spatialProperties": "3D properties",
|
"spatial.spatialProperties": "3D properties",
|
||||||
"spatial.width": "longness",
|
"spatial.width": "longness",
|
||||||
|
@ -336,14 +317,8 @@
|
||||||
"spatial.down": "the piss on the floor",
|
"spatial.down": "the piss on the floor",
|
||||||
"spatial.listener": "you",
|
"spatial.listener": "you",
|
||||||
"spatial.audioSource": "piss source",
|
"spatial.audioSource": "piss source",
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "DLC piss",
|
"settings.header.unfinished": "DLC piss",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "piss remote",
|
"remote.web.title": "piss remote",
|
||||||
"remote.web.description": "piss on your phone camera to connect to Cider.",
|
"remote.web.description": "piss on your phone camera to pair with Cider.",
|
||||||
|
|
||||||
// About
|
|
||||||
"about.thanks": "thanks to the Cider Collective team and all the pisseneers putting this together"
|
"about.thanks": "thanks to the Cider Collective team and all the pisseneers putting this together"
|
||||||
}
|
}
|
319
src/i18n/en_QUK.json
Normal file
|
@ -0,0 +1,319 @@
|
||||||
|
{
|
||||||
|
"i18n.languageName": "Language of the Quacks",
|
||||||
|
"i18n.languageNameEnglish": "Language of the Quacks",
|
||||||
|
"i18n.category": "fun",
|
||||||
|
"i18n.authors": "@quacksire",
|
||||||
|
"app.name": "Cider",
|
||||||
|
"date.format": "${m} ${d}, ${y}",
|
||||||
|
"dialog.cancel": "Cancel",
|
||||||
|
"dialog.ok": "OK",
|
||||||
|
"notification.updatingLibrarySongs": "Quacking library songs...",
|
||||||
|
"notification.updatingLibraryAlbums": "Quacking library albums...",
|
||||||
|
"notification.updatingLibraryArtists": "Quacking library artists...",
|
||||||
|
"term.appleInc": "Apple Inc.",
|
||||||
|
"term.appleMusic": "Apple Music",
|
||||||
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
"term.itunes": "iTunes",
|
||||||
|
"term.github": "GitHub",
|
||||||
|
"term.discord": "Discord",
|
||||||
|
"term.learnMore": "Quack more",
|
||||||
|
"term.accountSettings": "Account Settings",
|
||||||
|
"term.logout": "Quackout",
|
||||||
|
"term.login": "Quack In",
|
||||||
|
"term.about": "About",
|
||||||
|
"term.privateSession": "Private Session",
|
||||||
|
"term.queue": "Queue",
|
||||||
|
"term.history": "History",
|
||||||
|
"term.search": "Search",
|
||||||
|
"term.library": "Library",
|
||||||
|
"term.listenNow": "Listen Now",
|
||||||
|
"term.browse": "Quack",
|
||||||
|
"term.radio": "Radio",
|
||||||
|
"term.recentlyAdded": "Recently Quacked",
|
||||||
|
"term.songs": "Songs",
|
||||||
|
"term.albums": "Albums",
|
||||||
|
"term.artists": "Artists",
|
||||||
|
"term.podcasts": "Podcasts",
|
||||||
|
"term.playlists": "Playlists",
|
||||||
|
"term.playlist": "Playlist",
|
||||||
|
"term.newPlaylist": "New Playlist",
|
||||||
|
"term.newPlaylistFolder": "New Playlist Folder",
|
||||||
|
"term.createNewPlaylist": "Quack New Playlist",
|
||||||
|
"term.createNewPlaylistFolder": "Quack New Playlist Folder",
|
||||||
|
"term.deletePlaylist": "Are you sure you want to quack this playlist?",
|
||||||
|
"term.play": "Play",
|
||||||
|
"term.pause": "Pause",
|
||||||
|
"term.previous": "Previous",
|
||||||
|
"term.next": "Next",
|
||||||
|
"term.shuffle": "Shuffle",
|
||||||
|
"term.repeat": "Repeat",
|
||||||
|
"term.volume": "Volume",
|
||||||
|
"term.mute": "Quack",
|
||||||
|
"term.unmute": "Unquack",
|
||||||
|
"term.share": "Quack",
|
||||||
|
"term.share.success": "Quacked to clipboard",
|
||||||
|
"term.settings": "Settings",
|
||||||
|
"term.seeAll": "Quack All",
|
||||||
|
"term.sortBy": "Quack By",
|
||||||
|
"term.sortBy.album": "Album",
|
||||||
|
"term.sortBy.artist": "Artist",
|
||||||
|
"term.sortBy.name": "Name",
|
||||||
|
"term.sortBy.genre": "Genre",
|
||||||
|
"term.sortBy.releaseDate": "Release Date",
|
||||||
|
"term.sortBy.duration": "Duration",
|
||||||
|
"term.sortBy.dateAdded": "Date Quacked",
|
||||||
|
"term.sortOrder": "A-Z",
|
||||||
|
"term.sortOrder.ascending": "Ascending",
|
||||||
|
"term.sortOrder.descending": "Descending",
|
||||||
|
"term.viewAs": "Quack As",
|
||||||
|
"term.viewAs.coverArt": "Cover Art",
|
||||||
|
"term.viewAs.list": "List",
|
||||||
|
"term.size": "Size",
|
||||||
|
"term.size.normal": "Normal",
|
||||||
|
"term.size.compact": "Compact",
|
||||||
|
"term.enable": "Enable",
|
||||||
|
"term.disable": "Disable",
|
||||||
|
"term.enabled": "Enabled",
|
||||||
|
"term.disabled": "Disabled",
|
||||||
|
"term.connect": "Connect",
|
||||||
|
"term.connecting": "Quacking",
|
||||||
|
"term.disconnect": "Disconnect",
|
||||||
|
"term.authed": "Authed",
|
||||||
|
"term.confirm": "You a duck?",
|
||||||
|
"term.more": "More",
|
||||||
|
"term.less": "Less",
|
||||||
|
"term.showMore": "Quack more",
|
||||||
|
"term.showLess": "Quack less",
|
||||||
|
"term.topSongs": "Top Songs",
|
||||||
|
"term.latestReleases": "Latest Releases",
|
||||||
|
"term.time.added": "Quacked",
|
||||||
|
"term.time.released": "Quacked",
|
||||||
|
"term.time.updated": "Quacked",
|
||||||
|
"term.time.hours": "hours",
|
||||||
|
"term.time.hour": "hour",
|
||||||
|
"term.time.minutes": "minutes",
|
||||||
|
"term.time.minute": "minute",
|
||||||
|
"term.time.seconds": "seconds",
|
||||||
|
"term.time.second": "second",
|
||||||
|
"term.fullscreenView": "Fullscreen View",
|
||||||
|
"term.defaultView": "Default View",
|
||||||
|
"term.audioSettings": "Audio Settings",
|
||||||
|
"term.clearAll": "Clear All",
|
||||||
|
"term.recentStations": "Recent Stations",
|
||||||
|
"term.language": "Language",
|
||||||
|
"term.funLanguages": "Fun",
|
||||||
|
"term.noLyrics": "Quacking... / Lyrics not found./ Instrumental.",
|
||||||
|
"term.copyright": "Copyright",
|
||||||
|
"term.rightsReserved": "All Rights Reserved.",
|
||||||
|
"term.sponsor": "Sponsor this project",
|
||||||
|
"term.ciderTeam": "Cider Team",
|
||||||
|
"term.developer": "Developer",
|
||||||
|
"term.socialTeam": "Social Team",
|
||||||
|
"term.socials": "Socials",
|
||||||
|
"term.contributors": "Contributors",
|
||||||
|
"term.equalizer": "Equalizer",
|
||||||
|
"term.reset": "Reset",
|
||||||
|
"term.track": {
|
||||||
|
"one": "duck",
|
||||||
|
"other": "ducks"
|
||||||
|
},
|
||||||
|
"term.tracks": "tracks",
|
||||||
|
"term.videos": "Videos",
|
||||||
|
"term.menu": "Menu",
|
||||||
|
"term.check": "Quack",
|
||||||
|
"term.aboutArtist": "About {{artistName}}",
|
||||||
|
"term.topResult": "Top Result",
|
||||||
|
"term.sharedPlaylists": "Shared Playlists",
|
||||||
|
"term.people": "People",
|
||||||
|
"term.newpreset.name": "New EQ Preset Name",
|
||||||
|
"term.addedpreset": "Quacked Preset",
|
||||||
|
"term.deletepreset.warn": "Are you sure you want to delete this preset?",
|
||||||
|
"term.deletedpreset": "Quacked preset",
|
||||||
|
"term.requestError": "There was a problem with the request.",
|
||||||
|
"term.song.link.generate": "Quacking song.link share URL...",
|
||||||
|
"term.musicVideos": "Music Videos",
|
||||||
|
"term.stations": "Stations",
|
||||||
|
"term.curators": "Curators",
|
||||||
|
"term.appleCurators": "Apple Curators",
|
||||||
|
"term.radioShows": "Radio Shows",
|
||||||
|
"term.recordLabels": "Record Labels",
|
||||||
|
"term.videoExtras": "Video Extras",
|
||||||
|
"term.top": "Top",
|
||||||
|
"term.version": "Version",
|
||||||
|
"home.title": "Home",
|
||||||
|
"home.recentlyPlayed": "Recently Quacked",
|
||||||
|
"home.recentlyAdded": "Recently Quacked",
|
||||||
|
"home.artistsFeed": "Your Artists Feed",
|
||||||
|
"home.artistsFeed.noArtist": "Follow some artists first and their latest releases will be here",
|
||||||
|
"home.madeForYou": "Made For You",
|
||||||
|
"home.friendsListeningTo": "Friends Quacking To",
|
||||||
|
"home.followedArtists": "Quacked Artists",
|
||||||
|
"error.appleMusicSubRequired": "Apple Music requires a subscription.",
|
||||||
|
"error.connectionError": "There was a problem quacking to Apple Music.",
|
||||||
|
"error.noResults": "No Results.",
|
||||||
|
"error.noResults.description": "Try a new duck.",
|
||||||
|
"podcast.followOnCider": "Quack On Cider",
|
||||||
|
"podcast.followedOnCider": "Quacking On Cider",
|
||||||
|
"podcast.subscribeOnItunes": "Quack On iTunes",
|
||||||
|
"podcast.subscribedOnItunes": "Quacked On iTunes",
|
||||||
|
"podcast.itunesStore": "iTunes Store",
|
||||||
|
"podcast.episodes": "Episodes",
|
||||||
|
"podcast.playEpisode": "Quack Episode",
|
||||||
|
"podcast.website": "Podcast Website",
|
||||||
|
"action.addToLibrary": "Quack to Library",
|
||||||
|
"action.addToLibrary.success": "Quacked to Library",
|
||||||
|
"action.addToLibrary.error": "Error Adding to Library",
|
||||||
|
"action.removeFromLibrary": "Quack from Library",
|
||||||
|
"action.removeFromLibrary.success": "Quacked from Library",
|
||||||
|
"action.addToQueue": "Quack to Queue",
|
||||||
|
"action.addToQueue.success": "Quacked to Queue",
|
||||||
|
"action.addToQueue.error": "Error Quacking to Queue",
|
||||||
|
"action.removeFromQueue": "Quack from Queue",
|
||||||
|
"action.removeFromQueue.success": "Quacked from Queue",
|
||||||
|
"action.removeFromQueue.error": "Error Removing from Queue",
|
||||||
|
"action.createPlaylist": "Create a New Playlist",
|
||||||
|
"action.addToPlaylist": "Quack to Playlist",
|
||||||
|
"action.removeFromPlaylist": "Quack from Playlist",
|
||||||
|
"action.addToFavorites": "Quack to Favorites",
|
||||||
|
"action.follow": "Quack",
|
||||||
|
"action.follow.success": "Quacked",
|
||||||
|
"action.follow.error": "Error Quacking",
|
||||||
|
"action.unfollow": "Unquack",
|
||||||
|
"action.unfollow.success": "Unquacked",
|
||||||
|
"action.unfollow.error": "Error Unquacking",
|
||||||
|
"action.playNext": "Quack Next",
|
||||||
|
"action.playLater": "Quack Later",
|
||||||
|
"action.startRadio": "Quack Radio",
|
||||||
|
"action.goToArtist": "Quack to Artist",
|
||||||
|
"action.goToAlbum": "Quack to Album",
|
||||||
|
"action.moveToTop": "Quack to top",
|
||||||
|
"action.share": "Quack",
|
||||||
|
"action.rename": "Quack",
|
||||||
|
"action.love": "Quack",
|
||||||
|
"action.unlove": "Unquack",
|
||||||
|
"action.dislike": "Disquack",
|
||||||
|
"action.undoDislike": "Unquack disquack",
|
||||||
|
"action.showWebRemoteQR": "Web Remote",
|
||||||
|
"action.playTracksNext": "Quack ${app.selectedMediaItems.length} tracks next",
|
||||||
|
"action.playTracksLater": "Quack ${app.selectedMediaItems.length} tracks later",
|
||||||
|
"action.removeTracks": "Quack ${self.selectedItems.length} tracks from queue",
|
||||||
|
"action.import": "Import",
|
||||||
|
"action.export": "Export",
|
||||||
|
"action.showAlbum": "Quack Complete Album",
|
||||||
|
"action.tray.minimize": "Quackmize to Tray",
|
||||||
|
"action.tray.quit": "Die",
|
||||||
|
"action.tray.show": "Alive Me",
|
||||||
|
"action.update": "gib new quackys",
|
||||||
|
"action.copy": "Quack",
|
||||||
|
"action.newpreset": "New Quackset...",
|
||||||
|
"action.deletepreset": "Delete Quackset",
|
||||||
|
"settings.header.general": "General",
|
||||||
|
"settings.header.general.description": "Adjust the general settings for Cider.",
|
||||||
|
"settings.option.general.language": "Language",
|
||||||
|
"settings.option.general.language.main": "Languages",
|
||||||
|
"settings.option.general.language.fun": "Fun Languages",
|
||||||
|
"settings.option.general.language.unsorted": "Unsorted",
|
||||||
|
"settings.option.general.updateCider": "Update Cider",
|
||||||
|
"settings.option.general.updateCider.branch": "Cider Update Branch",
|
||||||
|
"settings.option.general.updateCider.branch.description": "Select the branch to update Cider to",
|
||||||
|
"settings.option.general.updateCider.branch.main": "Stable",
|
||||||
|
"settings.option.general.updateCider.branch.develop": "Development",
|
||||||
|
"settings.header.audio": "Audio",
|
||||||
|
"settings.header.audio.description": "Adjust the audio settings for Cider.",
|
||||||
|
"settings.option.audio.quality": "Audio Quality",
|
||||||
|
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
|
||||||
|
"settings.header.audio.quality.hireslossless.description": "up to 24-bit/192 kHz",
|
||||||
|
"settings.header.audio.quality.lossless": "Lossless",
|
||||||
|
"settings.header.audio.quality.lossless.description": "up to 24-bit/48 kHz",
|
||||||
|
"settings.header.audio.quality.high": "High",
|
||||||
|
"settings.header.audio.quality.high.description": "256 kbps",
|
||||||
|
"settings.header.audio.quality.standard": "Standard",
|
||||||
|
"settings.header.audio.quality.standard.description": "64 kbps",
|
||||||
|
"settings.option.audio.seamlessTransition": "Seamless Audio Transition",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality": "Enable Advanced Functionality",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalization , Equalizers and Visualizers, however on some systems this may cause stuttering in audio tracks.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively.",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP is not compatible with Spatialization. Please disable Spatialization to continue.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standard",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggressive",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Normalization",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizes peak volume for individual tracks to create a more uniform listening experience.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Spatialization is not compatible with CAP. Please disable CAP to continue.",
|
||||||
|
"settings.header.visual": "Visual",
|
||||||
|
"settings.header.visual.description": "Adjust the visual settings for Cider.",
|
||||||
|
"settings.option.visual.windowBackgroundStyle": "Window Background Style",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.none": "None",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.artwork": "Artwork",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.image": "Image",
|
||||||
|
"settings.option.visual.animatedArtwork": "Animated Artwork",
|
||||||
|
"settings.header.visual.animatedArtwork.always": "Always",
|
||||||
|
"settings.header.visual.animatedArtwork.limited": "Limited to pages and special entries",
|
||||||
|
"settings.header.visual.animatedArtwork.disable": "Disable everywhere",
|
||||||
|
"settings.option.visual.animatedArtworkQuality": "Animated Artwork Quality",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.low": "Low",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.medium": "Medium",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.high": "High",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Very High",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.extreme": "Extreme",
|
||||||
|
"settings.option.visual.animatedWindowBackground": "Animated Window Background",
|
||||||
|
"settings.option.visual.hardwareAcceleration": "Hardware Acceleration",
|
||||||
|
"settings.option.visual.hardwareAcceleration.description": "Requires relaunch",
|
||||||
|
"settings.header.visual.hardwareAcceleration.default": "Default",
|
||||||
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
|
"settings.header.visual.theme": "Theme",
|
||||||
|
"settings.option.visual.theme.default": "Cider",
|
||||||
|
"settings.option.visual.theme.dark": "Dark",
|
||||||
|
"settings.option.visual.showPersonalInfo": "Show Personal Info",
|
||||||
|
"settings.header.lyrics": "Lyrics",
|
||||||
|
"settings.header.lyrics.description": "Adjust the lyrics settings for Cider.",
|
||||||
|
"settings.option.lyrics.enableMusixmatch": "Enable Musixmatch Lyrics",
|
||||||
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Enable Karaoke Mode (Musixmatch only)",
|
||||||
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch Translation Preferred Language",
|
||||||
|
"settings.option.lyrics.enableYoutubeLyrics": "Enable Youtube Lyrics for Music Videos",
|
||||||
|
"settings.header.connectivity": "Connectivity",
|
||||||
|
"settings.header.connectivity.description": "Adjust the connectivity settings for Cider.",
|
||||||
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
|
"settings.option.connectivity.playbackNotifications": "Playback Notifications",
|
||||||
|
"settings.header.connectivity.discordRPC.cider": "Display as 'Cider'",
|
||||||
|
"settings.header.connectivity.discordRPC.appleMusic": "Display as 'Apple Music'",
|
||||||
|
"settings.option.connectivity.discordRPC.clearOnPause": "Clear Discord Rich Presence on Pause",
|
||||||
|
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Scrobble Delay (%)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Enable Last.fm Now Playing",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (Last.fm)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filter looped track (Last.fm)",
|
||||||
|
"settings.header.experimental": "Experimental",
|
||||||
|
"settings.header.experimental.description": "Adjust the experimental settings for Cider.",
|
||||||
|
"settings.option.experimental.compactUI": "Compact UI",
|
||||||
|
"settings.option.window.close_button_hide": "Close Button Should Hide the Application",
|
||||||
|
"settings.option.experimental.copy_log": "Copy logs to clipboard",
|
||||||
|
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
|
||||||
|
"spatial.notTurnedOn": "Audio Spatialization is disabled. To use, please enable it first.",
|
||||||
|
"spatial.spatialProperties": "Spatial Properties",
|
||||||
|
"spatial.width": "Width",
|
||||||
|
"spatial.height": "Height",
|
||||||
|
"spatial.depth": "Depth",
|
||||||
|
"spatial.gain": "Gain",
|
||||||
|
"spatial.roomMaterials": "Room Materials",
|
||||||
|
"spatial.roomDimensions": "Room Dimensions",
|
||||||
|
"spatial.roomPositions": "Room Positions",
|
||||||
|
"spatial.setDimensions": "Set Dimensions",
|
||||||
|
"spatial.setPositions": "Set Positions",
|
||||||
|
"spatial.up": "Up",
|
||||||
|
"spatial.front": "Front",
|
||||||
|
"spatial.left": "Left",
|
||||||
|
"spatial.right": "Right",
|
||||||
|
"spatial.back": "Back",
|
||||||
|
"spatial.down": "Down",
|
||||||
|
"spatial.listener": "Listener",
|
||||||
|
"spatial.audioSource": "Audio Source",
|
||||||
|
"settings.header.unfinished": "Unfinished",
|
||||||
|
"remote.web.title": "Cider Remote",
|
||||||
|
"remote.web.description": "Scan the QR code to pair your phone up with this Cider instance",
|
||||||
|
"about.thanks": "Major thanks to the Cider Collective Team and all of our contributors. Translation file made by @quacksire"
|
||||||
|
}
|
|
@ -1,25 +1,15 @@
|
||||||
{
|
{
|
||||||
// i18n Info
|
"i18n.languageName": "┤ᖋ|:ᖋᔮᒣ╎ᔮ ᖋ|:i!⍑ᖋᕊᒷᒣ",
|
||||||
"i18n.languageName": "┤ᖋ|:ᖋᔮᒣ╎ᔮ ᖋ|:i!⍑ᖋᕊᒷᒣ", // name of language in native language
|
"i18n.languageNameEnglish": "Galactic Alphabet",
|
||||||
"i18n.languageNameEnglish": "Galactic Alphabet", // name of language in English
|
"i18n.category": "fun",
|
||||||
"i18n.category": "fun", // main = real language, fun = fun community languages
|
"i18n.authors": "@kyw504100",
|
||||||
"i18n.authors": "@kyw504100", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "ᔮ╎↸ᒷ∷",
|
"app.name": "ᔮ╎↸ᒷ∷",
|
||||||
|
|
||||||
"date.format": "${m} ${d}, ${y}",
|
"date.format": "${m} ${d}, ${y}",
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "ᔮᖋリᔮᒷ|:",
|
"dialog.cancel": "ᔮᖋリᔮᒷ|:",
|
||||||
"dialog.ok": "ᒍ·ǀ·",
|
"dialog.ok": "ᒍ·ǀ·",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "⚍i!↸ᖋᒣ╎リ┤ |:╎ᕊ∷ᖋ∷॥ ϟᒍリ┤ϟ...",
|
"notification.updatingLibrarySongs": "⚍i!↸ᖋᒣ╎リ┤ |:╎ᕊ∷ᖋ∷॥ ϟᒍリ┤ϟ...",
|
||||||
"notification.updatingLibraryAlbums": "⚍i!↸ᖋᒣ╎リ┤ |:╎ᕊ∷ᖋ∷॥ ᖋ|:ᕊ⚍ᒲϟ...",
|
"notification.updatingLibraryAlbums": "⚍i!↸ᖋᒣ╎リ┤ |:╎ᕊ∷ᖋ∷॥ ᖋ|:ᕊ⚍ᒲϟ...",
|
||||||
"notification.updatingLibraryArtists": "⚍i!↸ᖋᒣ╎リ┤ |:╎ᕊ∷ᖋ∷॥ ᖋ∷ᒣ╎ϟᒣϟ...",
|
"notification.updatingLibraryArtists": "⚍i!↸ᖋᒣ╎リ┤ |:╎ᕊ∷ᖋ∷॥ ᖋ∷ᒣ╎ϟᒣϟ...",
|
||||||
|
|
||||||
// Terms
|
|
||||||
"term.appleInc": "ᖋi!i!|:ᒷ ╎リᔮ.",
|
"term.appleInc": "ᖋi!i!|:ᒷ ╎リᔮ.",
|
||||||
"term.appleMusic": "ᖋi!i!|:ᒷ ᒲ⚍ϟ╎ᔮ",
|
"term.appleMusic": "ᖋi!i!|:ᒷ ᒲ⚍ϟ╎ᔮ",
|
||||||
"term.applePodcasts": "ᖋi!i!|:ᒷ i!ᒍ↸ᔮᖋϟᒣϟ",
|
"term.applePodcasts": "ᖋi!i!|:ᒷ i!ᒍ↸ᔮᖋϟᒣϟ",
|
||||||
|
@ -29,11 +19,10 @@
|
||||||
"term.learnMore": "|:ᒷᖋ∷リ ᒲᒍ∷ᒷ",
|
"term.learnMore": "|:ᒷᖋ∷リ ᒲᒍ∷ᒷ",
|
||||||
"term.accountSettings": "ᖋᔮᔮᒍ⚍リᒣ ϟᒷᒣᒣ╎リ┤ϟ",
|
"term.accountSettings": "ᖋᔮᔮᒍ⚍リᒣ ϟᒷᒣᒣ╎リ┤ϟ",
|
||||||
"term.logout": "|:ᒍ┤ᒍ⚍ᒣ",
|
"term.logout": "|:ᒍ┤ᒍ⚍ᒣ",
|
||||||
"term.login": "|:ᒍ┤ ╎リ",
|
"term.login": "|:ᒍ┤╎リ",
|
||||||
"term.about": "ᖋᕊᒍ⚍ᒣ",
|
"term.about": "ᖋᕊᒍ⚍ᒣ",
|
||||||
"term.privateSession": "I!∷╎⍊ᖋᒣᒷ ϟᒷϟϟ╎ᒍリ",
|
"term.privateSession": "I!∷╎⍊ᖋᒣᒷ ϟᒷϟϟ╎ᒍリ",
|
||||||
"term.queue": "ᑑ⚍ᒷ⚍ᒷ",
|
"term.queue": "ᑑ⚍ᒷ⚍ᒷ",
|
||||||
"term.history": "⍑╎ϟᒣᒍ∷॥",
|
|
||||||
"term.search": "ϟᒷᖋ∷ᔮ⍑",
|
"term.search": "ϟᒷᖋ∷ᔮ⍑",
|
||||||
"term.library": "|:╎ᕊ∷ᖋ∷॥",
|
"term.library": "|:╎ᕊ∷ᖋ∷॥",
|
||||||
"term.listenNow": "|:╎ϟᒣᒷリ",
|
"term.listenNow": "|:╎ϟᒣᒷリ",
|
||||||
|
@ -46,11 +35,6 @@
|
||||||
"term.podcasts": "I!ᒍ↸ᔮᖋϟᒣϟ",
|
"term.podcasts": "I!ᒍ↸ᔮᖋϟᒣϟ",
|
||||||
"term.playlists": "i!|:ᖋ॥|:╎ϟᒣϟ",
|
"term.playlists": "i!|:ᖋ॥|:╎ϟᒣϟ",
|
||||||
"term.playlist": "i!|:ᖋ॥|:╎ϟᒣ",
|
"term.playlist": "i!|:ᖋ॥|:╎ϟᒣ",
|
||||||
"term.newPlaylist": "リᒷ∴ i!|:ᖋ॥|:╎ϟᒣ",
|
|
||||||
"term.newPlaylistFolder": "リᒷ∴ i!|:ᖋ॥|:╎ϟᒣ ⎓ᒍ|:↸ᒷ∷",
|
|
||||||
"term.createNewPlaylist": "ᔮ∷ᒷᖋᒣᒷ リᒷ∴ i!|:ᖋ॥|:╎ϟᒣ",
|
|
||||||
"term.createNewPlaylistFolder": "ᔮ∷ᒷᖋᒣᒷ リᒷ∴ i!|:ᖋ॥|:╎ϟᒣ ⎓ᒍ|:↸ᒷ∷",
|
|
||||||
"term.deletePlaylist": "ᖋ∷ᒷ ॥ᒍ⚍ ϟ⚍∷ᒷ ॥ᒍ⚍ ∴ᖋリᒣ ᒣᒍ ↸ᒷ|:ᒷᒣᒷ ᒣ⍑╎ϟ i!|:ᖋ॥|:╎ϟᒣ?",
|
|
||||||
"term.play": "i!|:ᖋ॥",
|
"term.play": "i!|:ᖋ॥",
|
||||||
"term.pause": "I!ᖋ⚍ϟᒷ",
|
"term.pause": "I!ᖋ⚍ϟᒷ",
|
||||||
"term.previous": "I!∷ᒷ⍊╎ᒍ⚍ϟ",
|
"term.previous": "I!∷ᒷ⍊╎ᒍ⚍ϟ",
|
||||||
|
@ -61,7 +45,6 @@
|
||||||
"term.mute": "ᒲ⚍ᒣᒷ",
|
"term.mute": "ᒲ⚍ᒣᒷ",
|
||||||
"term.unmute": "⚍リᒲ⚍ᒣᒷ",
|
"term.unmute": "⚍リᒲ⚍ᒣᒷ",
|
||||||
"term.share": "ϟ⍑ᖋ∷ᒷ",
|
"term.share": "ϟ⍑ᖋ∷ᒷ",
|
||||||
"term.share.success": "ᔮᒍi!╎ᒷ↸ ᒣᒍ ᔮ|:╎i!ᕊᒍᖋ∷↸",
|
|
||||||
"term.settings": "ϟᒷᒣᒣ╎リ┤ϟ",
|
"term.settings": "ϟᒷᒣᒣ╎リ┤ϟ",
|
||||||
"term.seeAll": "ϟᒷᒷ ᖋ|:|:",
|
"term.seeAll": "ϟᒷᒷ ᖋ|:|:",
|
||||||
"term.sortBy": "ϟᒍ∷ᒣ ᕊ॥",
|
"term.sortBy": "ϟᒍ∷ᒣ ᕊ॥",
|
||||||
|
@ -71,6 +54,7 @@
|
||||||
"term.sortBy.genre": "┤ᒷリ∷ᒷ",
|
"term.sortBy.genre": "┤ᒷリ∷ᒷ",
|
||||||
"term.sortBy.releaseDate": "∷ᒷ|:ᒷᖋϟᒷ ↸ᖋᒣᒷ",
|
"term.sortBy.releaseDate": "∷ᒷ|:ᒷᖋϟᒷ ↸ᖋᒣᒷ",
|
||||||
"term.sortBy.duration": "↸⚍∷ᖋᒣ╎ᒍリ",
|
"term.sortBy.duration": "↸⚍∷ᖋᒣ╎ᒍリ",
|
||||||
|
"term.sortBy.dateAdded": "↸ᖋᒣᒷ ᖋ↸↸ᒷ↸",
|
||||||
"term.sortOrder": "ᖋ-∩",
|
"term.sortOrder": "ᖋ-∩",
|
||||||
"term.sortOrder.ascending": "ᖋϟᔮᒷリ↸╎リ┤",
|
"term.sortOrder.ascending": "ᖋϟᔮᒷリ↸╎リ┤",
|
||||||
"term.sortOrder.descending": "↸ᒷϟᔮᒷリ↸╎リ┤",
|
"term.sortOrder.descending": "↸ᒷϟᔮᒷリ↸╎リ┤",
|
||||||
|
@ -122,19 +106,23 @@
|
||||||
"term.contributors": "ᔮᒍリᒣ∷╎ᕊ⚍ᒣᒍ∷ϟ",
|
"term.contributors": "ᔮᒍリᒣ∷╎ᕊ⚍ᒣᒍ∷ϟ",
|
||||||
"term.equalizer": "ᒷᑑ⚍ᖋ|:╎∩ᒷ∷",
|
"term.equalizer": "ᒷᑑ⚍ᖋ|:╎∩ᒷ∷",
|
||||||
"term.reset": "∷ᒷϟᒷᒣ",
|
"term.reset": "∷ᒷϟᒷᒣ",
|
||||||
"term.tracks": "ᒣ∷ᖋᔮ·ǀ·ϟ", // Assume x amount of tracks. e.g. 50 tracks
|
"term.tracks": "ᒣ∷ᖋᔮ·ǀ·ϟ",
|
||||||
"term.videos": "⍊╎↸ᒷᒍ",
|
"term.videos": "⍊╎↸ᒷᒍ",
|
||||||
"term.menu": "ᒲᒷ⚍リ",
|
"term.menu": "ᒲᒷ⚍リ",
|
||||||
"term.check": "ᔮ⍑ᒷᔮ·ǀ·",
|
"term.check": "ᔮ⍑ᒷᔮ·ǀ·",
|
||||||
"term.aboutArtist": "ᖋᕊᒍ⚍ᒣ {{artistName}}", // e.g. 'About Doja Cat'
|
"term.aboutArtist": "ᖋᕊᒍ⚍ᒣ {{artistName}}",
|
||||||
"term.topResult": "ᒣᒍi! ∷ᒷϟ⚍|:ᒣ", // Search Results
|
"term.topResult": "ᒣᒍi! ∷ᒷϟ⚍|:ᒣ",
|
||||||
"term.sharedPlaylists": "ϟ⍑ᖋ∷ᒷ↸ i!|:ᖋ॥|:╎ϟᒣϟ", // Search Results
|
"term.sharedPlaylists": "ϟ⍑ᖋ∷ᒷ↸ i!|:ᖋ॥|:╎ϟᒣϟ",
|
||||||
"term.people": "i!ᒷᒍi!|:ᒷ", // Search Results
|
"term.people": "i!ᒷᒍi!|:ᒷ",
|
||||||
"term.newpreset.name": "リᒷ∴ ᒷᑑ i!∷ᒷϟᒷᒣ リᖋᒲᒷ", // Equalizer Preset
|
"term.newpreset.name": "リᒷ∴ ᒷᑑ i!∷ᒷϟᒷᒣ リᖋᒲᒷ",
|
||||||
"term.addedpreset": "ᖋ↸↸ᒷ↸ i!∷ᒷϟᒷᒣ",
|
"term.addedpreset": "ᖋ↸↸ᒷ↸ i!∷ᒷϟᒷᒣ",
|
||||||
"term.deletepreset.warn": "ᖋ∷ᒷ ॥ᒍ⚍ ϟ⚍∷ᒷ ॥ᒍ⚍ ∴ᖋリᒣ ᒣᒍ ↸ᒷ|:ᒷᒣᒷ ᒣ⍑╎ϟ i!∷ᒷϟᒷᒣ?",
|
"term.deletepreset.warn": "ᖋ∷ᒷ ॥ᒍ⚍ ϟ⚍∷ᒷ ॥ᒍ⚍ ∴ᖋリᒣ ᒣᒍ ↸ᒷ|:ᒷᒣᒷ ᒣ⍑╎ϟ i!∷ᒷϟᒷᒣ?",
|
||||||
"term.deletedpreset": "∷ᒷᒲᒍ⍊ᒷ↸ i!∷ᒷϟᒷᒣ",
|
"term.deletedpreset": "∷ᒷᒲᒍ⍊ᒷ↸ i!∷ᒷϟᒷᒣ",
|
||||||
"term.musicVideos": "ᒲ⚍ϟ╎ᔮ ⍊╎↸ᒷᒍϟ", // Search page friendlyTypes
|
"term.defaultPresets": "↸ᒷ⎓ᖋ⚍|:ᒣ i!∷ᒷϟᒷᒣϟ",
|
||||||
|
"term.userPresets": "⚍ϟᒷ∷ i!∷ᒷϟᒷᒣϟ",
|
||||||
|
"term.requestError": "ᒣ⍑ᒷ∷ᒷ ∴ᖋϟ ᖋ i!∷ᒍᕊ|:ᒷᒲ ∴╎ᒣ⍑ ᒣ⍑ᒷ ∷ᒷᑑ⚍ᒷϟᒣ.",
|
||||||
|
"term.song.link.generate": "┤ᒷᒣᒣ╎リ┤ ϟᒍリ┤.|:╎リ·ǀ· ϟ⍑ᖋ∷ᒷ ⚍∷|:...",
|
||||||
|
"term.musicVideos": "ᒲ⚍ϟ╎ᔮ ⍊╎↸ᒷᒍϟ",
|
||||||
"term.stations": "ϟᒣᖋᒣ╎ᒍリϟ",
|
"term.stations": "ϟᒣᖋᒣ╎ᒍリϟ",
|
||||||
"term.curators": "ᔮ⚍∷ᖋᒣᒍ∷ϟ",
|
"term.curators": "ᔮ⚍∷ᖋᒣᒍ∷ϟ",
|
||||||
"term.appleCurators": "ᖋi!i!|:ᒷ ᔮ⚍∷ᖋᒣᒍ∷ϟ",
|
"term.appleCurators": "ᖋi!i!|:ᒷ ᔮ⚍∷ᖋᒣᒍ∷ϟ",
|
||||||
|
@ -142,8 +130,7 @@
|
||||||
"term.recordLabels": "∷ᒷᔮᒍ∷↸ |:ᖋᕊᒷ|:ϟ",
|
"term.recordLabels": "∷ᒷᔮᒍ∷↸ |:ᖋᕊᒷ|:ϟ",
|
||||||
"term.videoExtras": "⍊╎↸ᒷᒍ ᒷ/ᒣ∷ᖋϟ",
|
"term.videoExtras": "⍊╎↸ᒷᒍ ᒷ/ᒣ∷ᖋϟ",
|
||||||
"term.top": "ᒣᒍi!",
|
"term.top": "ᒣᒍi!",
|
||||||
|
"term.version": "⍊ᒷ∷ϟ╎ᒍリ",
|
||||||
// Home
|
|
||||||
"home.title": "⍑ᒍᒲᒷ",
|
"home.title": "⍑ᒍᒲᒷ",
|
||||||
"home.recentlyPlayed": "∷ᒷᔮᒷリᒣ|:॥ i!|:ᖋ॥ᒷ↸",
|
"home.recentlyPlayed": "∷ᒷᔮᒷリᒣ|:॥ i!|:ᖋ॥ᒷ↸",
|
||||||
"home.recentlyAdded": "∷ᒷᔮᒷリᒣ|:॥ ᖋ↸↸ᒷ↸",
|
"home.recentlyAdded": "∷ᒷᔮᒷリᒣ|:॥ ᖋ↸↸ᒷ↸",
|
||||||
|
@ -152,14 +139,10 @@
|
||||||
"home.madeForYou": "ᒲᖋ↸ᒷ ⎓ᒍ∷ ॥ᒍ⚍",
|
"home.madeForYou": "ᒲᖋ↸ᒷ ⎓ᒍ∷ ॥ᒍ⚍",
|
||||||
"home.friendsListeningTo": "⎓∷╎ᒷリ↸ϟ |:╎ϟᒣᒷリ╎リ┤ ᒣᒍ",
|
"home.friendsListeningTo": "⎓∷╎ᒷリ↸ϟ |:╎ϟᒣᒷリ╎リ┤ ᒣᒍ",
|
||||||
"home.followedArtists": "⎓ᒍ|:|:ᒍ∴ᒷ↸ ᖋ∷ᒣ╎ϟᒣϟ",
|
"home.followedArtists": "⎓ᒍ|:|:ᒍ∴ᒷ↸ ᖋ∷ᒣ╎ϟᒣϟ",
|
||||||
|
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "ᖋi!i!|:ᒷ ᒲ⚍ϟ╎ᔮ ∷ᒷᑑ⚍╎∷ᒷϟ ᖋ ϟ⚍ᕊϟᔮ∷╎i!ᒣ╎ᒍリ.",
|
"error.appleMusicSubRequired": "ᖋi!i!|:ᒷ ᒲ⚍ϟ╎ᔮ ∷ᒷᑑ⚍╎∷ᒷϟ ᖋ ϟ⚍ᕊϟᔮ∷╎i!ᒣ╎ᒍリ.",
|
||||||
"error.connectionError": "ᒣ⍑ᒷ∷ᒷ ∴ᖋϟ ᖋ i!∷ᒍᕊ|:ᒷᒲ ᔮᒍリリᒷᔮᒣ╎リ┤ ᒣᒍ ᖋi!i!|:ᒷ ᒲ⚍ϟ╎ᔮ.",
|
"error.connectionError": "ᒣ⍑ᒷ∷ᒷ ∴ᖋϟ ᖋ i!∷ᒍᕊ|:ᒷᒲ ᔮᒍリリᒷᔮᒣ╎リ┤ ᒣᒍ ᖋi!i!|:ᒷ ᒲ⚍ϟ╎ᔮ.",
|
||||||
"error.noResults": "リᒍ ∷ᒷϟ⚍|:ᒣϟ.",
|
"error.noResults": "リᒍ ∷ᒷϟ⚍|:ᒣϟ.",
|
||||||
"error.noResults.description": "ᒣ∷॥ ᖋ リᒷ∴ ϟᒷᖋ∷ᔮ⍑.",
|
"error.noResults.description": "ᒣ∷॥ ᖋ リᒷ∴ ϟᒷᖋ∷ᔮ⍑.",
|
||||||
|
|
||||||
// Podcasts
|
|
||||||
"podcast.followOnCider": "⎓ᒍ|:|:ᒍ∴ ᒍリ ᔮ╎↸ᒷ∷",
|
"podcast.followOnCider": "⎓ᒍ|:|:ᒍ∴ ᒍリ ᔮ╎↸ᒷ∷",
|
||||||
"podcast.followedOnCider": "⎓ᒍ|:|:ᒍ∴╎リ┤ ᒍリ ᔮ╎↸ᒷ∷",
|
"podcast.followedOnCider": "⎓ᒍ|:|:ᒍ∴╎リ┤ ᒍリ ᔮ╎↸ᒷ∷",
|
||||||
"podcast.subscribeOnItunes": "ϟ⚍ᕊϟᔮ∷╎ᕊᒷ ᒍリ ╎ᒣ⚍リᒷϟ",
|
"podcast.subscribeOnItunes": "ϟ⚍ᕊϟᔮ∷╎ᕊᒷ ᒍリ ╎ᒣ⚍リᒷϟ",
|
||||||
|
@ -168,8 +151,6 @@
|
||||||
"podcast.episodes": "ᒷi!╎ϟᒍ↸ᒷϟ",
|
"podcast.episodes": "ᒷi!╎ϟᒍ↸ᒷϟ",
|
||||||
"podcast.playEpisode": "i!|:ᖋ॥ ᒷi!╎ϟᒍ↸ᒷ",
|
"podcast.playEpisode": "i!|:ᖋ॥ ᒷi!╎ϟᒍ↸ᒷ",
|
||||||
"podcast.website": "I!ᒍ↸ᔮᖋϟᒣ ∴ᒷᕊϟ╎ᒣᒷ",
|
"podcast.website": "I!ᒍ↸ᔮᖋϟᒣ ∴ᒷᕊϟ╎ᒣᒷ",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "ᖋ↸↸ ᒣᒍ |:╎ᕊ∷ᖋ∷॥",
|
"action.addToLibrary": "ᖋ↸↸ ᒣᒍ |:╎ᕊ∷ᖋ∷॥",
|
||||||
"action.addToLibrary.success": "ᖋ↸↸ᒷ↸ ᒣᒍ |:╎ᕊ∷ᖋ∷॥",
|
"action.addToLibrary.success": "ᖋ↸↸ᒷ↸ ᒣᒍ |:╎ᕊ∷ᖋ∷॥",
|
||||||
"action.addToLibrary.error": "ᒷ∷∷ᒍ∷ ᖋ↸↸╎リ┤ ᒣᒍ |:╎ᕊ∷ᖋ∷॥",
|
"action.addToLibrary.error": "ᒷ∷∷ᒍ∷ ᖋ↸↸╎リ┤ ᒣᒍ |:╎ᕊ∷ᖋ∷॥",
|
||||||
|
@ -215,107 +196,98 @@
|
||||||
"action.tray.show": "ϟ⍑ᒍ∴",
|
"action.tray.show": "ϟ⍑ᒍ∴",
|
||||||
"action.update": "⚍i!↸ᖋᒣᒷ",
|
"action.update": "⚍i!↸ᖋᒣᒷ",
|
||||||
"action.copy": "ᔮᒍi!॥",
|
"action.copy": "ᔮᒍi!॥",
|
||||||
"action.newpreset": "リᒷ∴ i!∷ᒷϟᒷᒣ...", // Equalizer Preset
|
"action.newpreset": "リᒷ∴ i!∷ᒷϟᒷᒣ...",
|
||||||
"action.deletepreset": "↸ᒷ|:ᒷᒣᒷ i!∷ᒷϟᒷᒣ",
|
"action.deletepreset": "↸ᒷ|:ᒷᒣᒷ i!∷ᒷϟᒷᒣ",
|
||||||
|
|
||||||
// Settings - General
|
|
||||||
"settings.header.general": "┤ᒷリᒷ∷ᖋ|:",
|
"settings.header.general": "┤ᒷリᒷ∷ᖋ|:",
|
||||||
"settings.header.general.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ┤ᒷリᒷ∷ᖋ|: ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
|
"settings.header.general.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ┤ᒷリᒷ∷ᖋ|: ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
|
||||||
"settings.option.general.language": "|:ᖋリ┤⚍ᖋ┤ᒷ",
|
"settings.option.general.language": "|:ᖋリ┤⚍ᖋ┤ᒷ",
|
||||||
|
|
||||||
// Language optgroups
|
|
||||||
"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": "⚍リϟᒍ∷ᒣᒷ↸",
|
||||||
|
|
||||||
// Update Cider
|
|
||||||
"settings.option.general.updateCider": "⚍i!↸ᖋᒣᒷ ᔮ╎↸ᒷ∷",
|
"settings.option.general.updateCider": "⚍i!↸ᖋᒣᒷ ᔮ╎↸ᒷ∷",
|
||||||
|
"settings.option.general.updateCider.branch": "ᔮ╎↸ᒷ∷ ⚍i!↸ᖋᒣᒷ ᕊ∷ᖋリᔮ⍑",
|
||||||
// Settings - Audio
|
"settings.option.general.updateCider.branch.description": "ϟᒷ|:ᒷᔮᒣ ᒣ⍑ᒷ ᕊ∷ᖋリᔮ⍑ ᒣᒍ ⚍i!↸ᖋᒣᒷ ᔮ╎↸ᒷ∷ ᒣᒍ",
|
||||||
|
"settings.option.general.updateCider.branch.main": "ϟᒣᖋᕊ|:ᒷ",
|
||||||
|
"settings.option.general.updateCider.branch.develop": "↸ᒷ⍊ᒷ|:ᒍi!ᒲᒷリᒣ",
|
||||||
"settings.header.audio": "ᖋ⚍↸╎ᒍ",
|
"settings.header.audio": "ᖋ⚍↸╎ᒍ",
|
||||||
"settings.header.audio.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ᖋ⚍↸╎ᒍ ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
|
"settings.header.audio.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ᖋ⚍↸╎ᒍ ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
|
||||||
"settings.option.audio.quality": "ᖋ⚍↸╎ᒍ ᑑ⚍ᖋ|:╎ᒣ॥", // Dropdown
|
"settings.option.audio.quality": "ᖋ⚍↸╎ᒍ ᑑ⚍ᖋ|:╎ᒣ॥",
|
||||||
"settings.header.audio.quality.hireslossless": "⍑╎-∷ᒷϟ |:ᒍϟϟ|:ᒷϟϟ",
|
"settings.header.audio.quality.hireslossless": "⍑╎-∷ᒷϟ |:ᒍϟϟ|:ᒷϟϟ",
|
||||||
"settings.header.audio.quality.hireslossless.description": "(⚍i! ᒣᒍ 24-ᕊ╎ᒣ/192 ·ǀ·⍑∩)",
|
"settings.header.audio.quality.hireslossless.description": "(⚍i! ᒣᒍ 24-ᕊ╎ᒣ/192 ·ǀ·⍑∩)",
|
||||||
"settings.header.audio.quality.lossless": "|:ᒍϟϟ|:ᒷϟϟ",
|
"settings.header.audio.quality.lossless": "|:ᒍϟϟ|:ᒷϟϟ",
|
||||||
"settings.header.audio.quality.lossless.description": "(⚍i! ᒣᒍ 24-ᕊ╎ᒣ/48 ·ǀ·⍑∩)",
|
"settings.header.audio.quality.lossless.description": "(⚍i! ᒣᒍ 24-ᕊ╎ᒣ/48 ·ǀ·⍑∩)",
|
||||||
"settings.header.audio.quality.high": "⍑╎┤⍑",
|
"settings.header.audio.quality.high": "⍑╎┤⍑",
|
||||||
"settings.header.audio.quality.low": "|:ᒍ∴",
|
"settings.header.audio.quality.high.description": "256 ·ǀ·ᕊi!ϟ",
|
||||||
"settings.header.audio.quality.auto": "ᖋ⚍ᒣᒍ",
|
"settings.header.audio.quality.standard": "ϟᒣᖋリ↸ᖋ∷↸",
|
||||||
"settings.option.audio.seamlessTransition": "ϟᒷᖋᒲ|:ᒷϟϟ ᖋ⚍↸╎ᒍ ᒣ∷ᖋリϟ╎ᒣ╎ᒍリ", // Toggle
|
"settings.header.audio.quality.standard.description": "64 ·ǀ·ᕊi!ϟ",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "ᒷリᖋᕊ|:ᒷ ᖋ↸⍊ᖋリᔮᒷ↸ ⎓⚍リᔮᒣ╎ᒍリᖋ|:╎ᒣ॥", // Toggle
|
"settings.option.audio.seamlessTransition": "ϟᒷᖋᒲ|:ᒷϟϟ ᖋ⚍↸╎ᒍ ᒣ∷ᖋリϟ╎ᒣ╎ᒍリ",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality": "ᒷリᖋᕊ|:ᒷ ᖋ↸⍊ᖋリᔮᒷ↸ ⎓⚍リᔮᒣ╎ᒍリᖋ|:╎ᒣ॥",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "ᒷリᖋᕊ|:╎リ┤ ᖋ⚍↸╎ᒍᔮᒍリᒣᒷ/ᒣ ⎓⚍リᔮᒣ╎ᒍリᖋ|:╎ᒣ॥ ∴╎|:|: ᖋ|:|:ᒍ∴ ⎓ᒍ∷ ᒷ/ᒣᒷリ↸ᒷ↸ ᖋ⚍↸╎ᒍ ⎓ᒷᖋᒣ⚍∷ᒷϟ |:╎·ǀ·ᒷ ᖋ⚍↸╎ᒍ リᒍ∷ᒲᖋ|:╎∩ᖋᒣ╎ᒍリ , ᒷᑑ⚍ᖋ|:╎∩ᒷ∷ϟ ᖋリ↸ ⍊╎ϟ⚍ᖋ|:╎∩ᒷ∷ϟ, ⍑ᒍ∴ᒷ⍊ᒷ∷ ᒍリ ϟᒍᒲᒷ ϟ॥ϟᒣᒷᒲϟ ᒣ⍑╎ϟ ᒲᖋ॥ ᔮᖋ⚍ϟᒷ ϟᒣ⚍ᒣᒣᒷ∷╎リ┤ ╎リ ᖋ⚍↸╎ᒍ ᒣ∷ᖋᔮ·ǀ·ϟ.",
|
"settings.option.audio.enableAdvancedFunctionality.description": "ᒷリᖋᕊ|:╎リ┤ ᖋ⚍↸╎ᒍᔮᒍリᒣᒷ/ᒣ ⎓⚍リᔮᒣ╎ᒍリᖋ|:╎ᒣ॥ ∴╎|:|: ᖋ|:|:ᒍ∴ ⎓ᒍ∷ ᒷ/ᒣᒷリ↸ᒷ↸ ᖋ⚍↸╎ᒍ ⎓ᒷᖋᒣ⚍∷ᒷϟ |:╎·ǀ·ᒷ ᖋ⚍↸╎ᒍ リᒍ∷ᒲᖋ|:╎∩ᖋᒣ╎ᒍリ , ᒷᑑ⚍ᖋ|:╎∩ᒷ∷ϟ ᖋリ↸ ⍊╎ϟ⚍ᖋ|:╎∩ᒷ∷ϟ, ⍑ᒍ∴ᒷ⍊ᒷ∷ ᒍリ ϟᒍᒲᒷ ϟ॥ϟᒣᒷᒲϟ ᒣ⍑╎ϟ ᒲᖋ॥ ᔮᖋ⚍ϟᒷ ϟᒣ⚍ᒣᒣᒷ∷╎リ┤ ╎リ ᖋ⚍↸╎ᒍ ᒣ∷ᖋᔮ·ǀ·ϟ.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.decryptLLPW": "↸ᒷᔮ∷॥i!ᒣ |:ᒍϟϟ|:ᒷϟϟ i!|:ᖋ॥ᕊᖋᔮ·ǀ· ∴ᒍ∷·ǀ·⎓|:ᒍ∴", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "ᔮ╎↸ᒷ∷ ᖋ↸∷ᒷリᖋ|:╎リᒷ i!∷ᒍᔮᒷϟϟᒍ∷™️",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.decryptLLPW.description": "ᒷリᖋᕊ|:ᒷϟ ᒣ⍑ᒷ ᖋᕊ╎|:╎ᒣ॥ ⎓ᒍ∷ ᔮ╎↸ᒷ∷ ᒣᒍ ↸ᒷᔮ∷॥i!ᒣ |:ᒍϟϟ|:ᒷϟϟ ᖋ⚍↸╎ᒍ ⎓╎|:ᒷϟ. ᖋ ᒲ╎リᒍ∷ i!ᒷ∷⎓ᒍ∷ᒲᖋリᔮᒷ ⍑╎ᒣ ∴╎|:|: ᒍᔮᔮ⚍∷.",
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "i!ϟ॥ᔮ⍑ᒍᖋᔮᒍ⚍ϟᒣ╎ᔮ ᒷリ⍑ᖋリᔮᒷᒲᒷリᒣϟ ᒣ⍑ᖋᒣ ᒲᖋ·ǀ·ᒷϟ ᒷ⍊ᒷ∷॥ᒣ⍑╎リ┤ ϟᒍ⚍リ↸ ᕊᒍᒣ⍑ ∷╎ᔮ⍑ᒷ∷ ᖋリ↸ ᒲᒍ∷ᒷ |:╎⍊ᒷ|:॥ | ↸ᒷϟ╎┤リᒷ↸ ᕊ॥ ᒲᖋ╎·ǀ·╎∴╎.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "ᖋ⚍↸╎ᒍ リᒍ∷ᒲᖋ|:╎∩ᖋᒣ╎ᒍリ", // Toggle
|
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "ᔮᖋi! ╎ϟ リᒍᒣ ᔮᒍᒲi!ᖋᒣ╎ᕊ|:ᒷ ∴╎ᒣ⍑ ϟi!ᖋᒣ╎ᖋ|:╎∩ᖋᒣ╎ᒍリ. i!|:ᒷᖋϟᒷ ↸╎ϟᖋᕊ|:ᒷ ϟi!ᖋᒣ╎ᖋ|:╎∩ᖋᒣ╎ᒍリ ᒣᒍ ᔮᒍリᒣ╎リ⚍ᒷ.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "ᔮᖋi! ϟᒣ∷ᒷリ┤ᒣ⍑",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "ᔮ⍑ᖋリ┤ᒷϟ ᒣ⍑ᒷ ϟᒣ∷ᒷリ┤ᒣ⍑ ᒍ⎓ ᒣ⍑ᒷ i!∷ᒍᔮᒷϟϟ╎リ┤ ↸ᒍリᒷ ᒣᒍ ᒣ⍑ᒷ ᖋ⚍↸╎ᒍ. (ᖋ┤┤∷ᒷϟϟ╎⍊ᒷ ᒲᖋ॥ ॥╎ᒷ|:↸ ⚍リ↸ᒷϟ╎∷ᖋᕊ|:ᒷ ∷ᒷϟ⚍|:ᒣϟ)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "ϟᒣᖋリ↸ᖋ∷↸",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "ᖋ┤┤∷ᒷϟϟ╎⍊ᒷ",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "ᖋ⚍↸╎ᒍ リᒍ∷ᒲᖋ|:╎∩ᖋᒣ╎ᒍリ",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "リᒍ∷ᒲᖋ|:╎∩ᒷϟ i!ᒷᖋ·ǀ· ⍊ᒍ|:⚍ᒲᒷ ⎓ᒍ∷ ╎リ↸╎⍊╎↸⚍ᖋ|: ᒣ∷ᖋᔮ·ǀ·ϟ ᒣᒍ ᔮ∷ᒷᖋᒣᒷ ᖋ ᒲᒍ∷ᒷ ⚍リ╎⎓ᒍ∷ᒲ |:╎ϟᒣᒷリ╎リ┤ ᒷ/i!ᒷ∷╎ᒷリᔮᒷ.",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "リᒍ∷ᒲᖋ|:╎∩ᒷϟ i!ᒷᖋ·ǀ· ⍊ᒍ|:⚍ᒲᒷ ⎓ᒍ∷ ╎リ↸╎⍊╎↸⚍ᖋ|: ᒣ∷ᖋᔮ·ǀ·ϟ ᒣᒍ ᔮ∷ᒷᖋᒣᒷ ᖋ ᒲᒍ∷ᒷ ⚍リ╎⎓ᒍ∷ᒲ |:╎ϟᒣᒷリ╎リ┤ ᒷ/i!ᒷ∷╎ᒷリᔮᒷ.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "ᖋ⚍↸╎ᒍ ϟi!ᖋᒣ╎ᖋ|:╎∩ᖋᒣ╎ᒍリ", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "ᖋ⚍↸╎ᒍ ϟi!ᖋᒣ╎ᖋ|:╎∩ᖋᒣ╎ᒍリ",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "ϟi!ᖋᒣ╎ᖋ|:╎∩ᒷ ᖋ⚍↸╎ᒍ ᖋリ↸ ᒲᖋ·ǀ·ᒷ ᖋ⚍↸╎ᒍ ᒲᒍ∷ᒷ 3-↸╎ᒲᒷリϟ╎ᒍリᖋ|: (リᒍᒣᒷ: ᒣ⍑╎ϟ ╎ϟ リᒍᒣ ↸ᒍ|:ᕊ॥ ᖋᒣᒲᒍϟ)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "ϟi!ᖋᒣ╎ᖋ|:╎∩ᒷ ᖋ⚍↸╎ᒍ ᖋリ↸ ᒲᖋ·ǀ·ᒷ ᖋ⚍↸╎ᒍ ᒲᒍ∷ᒷ 3-↸╎ᒲᒷリϟ╎ᒍリᖋ|: (リᒍᒣᒷ: ᒣ⍑╎ϟ ╎ϟ リᒍᒣ ↸ᒍ|:ᕊ॥ ᖋᒣᒲᒍϟ)",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "ϟi!ᖋᒣ╎ᖋ|:╎∩ᖋᒣ╎ᒍリ ╎ϟ リᒍᒣ ᔮᒍᒲi!ᖋᒣ╎ᕊ|:ᒷ ∴╎ᒣ⍑ ᔮᖋi!. i!|:ᒷᖋϟᒷ ↸╎ϟᖋᕊ|:ᒷ ᔮᖋi! ᒣᒍ ᔮᒍリᒣ╎リ⚍ᒷ.",
|
||||||
// Settings - Visual
|
|
||||||
"settings.header.visual": "⍊╎ϟ⚍ᖋ|:",
|
"settings.header.visual": "⍊╎ϟ⚍ᖋ|:",
|
||||||
"settings.header.visual.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ⍊╎ϟ⚍ᖋ| ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
|
"settings.header.visual.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ⍊╎ϟ⚍ᖋ| ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
|
||||||
"settings.option.visual.windowBackgroundStyle": "∴╎リ↸ᒍ∴ ᕊᖋᔮ·ǀ·┤∷ᒍ⚍リ↸ ϟᒣ॥|:ᒷ", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "∴╎リ↸ᒍ∴ ᕊᖋᔮ·ǀ·┤∷ᒍ⚍リ↸ ϟᒣ॥|:ᒷ",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "リᒍリᒷ",
|
"settings.header.visual.windowBackgroundStyle.none": "リᒍリᒷ",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "ᖋ∷ᒣ∴ᒍ∷·ǀ·",
|
"settings.header.visual.windowBackgroundStyle.artwork": "ᖋ∷ᒣ∴ᒍ∷·ǀ·",
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "╎ᒲᖋ┤ᒷ",
|
"settings.header.visual.windowBackgroundStyle.image": "╎ᒲᖋ┤ᒷ",
|
||||||
"settings.option.visual.animatedArtwork": "ᖋリ╎ᒲᖋᒣᒷ↸ ᖋ∷ᒣ∴ᒍ∷·ǀ·", // Dropdown
|
"settings.option.visual.animatedArtwork": "ᖋリ╎ᒲᖋᒣᒷ↸ ᖋ∷ᒣ∴ᒍ∷·ǀ·",
|
||||||
"settings.header.visual.animatedArtwork.always": "ᖋ|:∴ᖋ॥ϟ",
|
"settings.header.visual.animatedArtwork.always": "ᖋ|:∴ᖋ॥ϟ",
|
||||||
"settings.header.visual.animatedArtwork.limited": "|:╎ᒲ╎ᒣᒷ↸ ᒣᒍ i!ᖋ┤ᒷϟ ᖋリ↸ ϟi!ᒷᔮ╎ᖋ|: ᒷリᒣ∷╎ᒷϟ",
|
"settings.header.visual.animatedArtwork.limited": "|:╎ᒲ╎ᒣᒷ↸ ᒣᒍ i!ᖋ┤ᒷϟ ᖋリ↸ ϟi!ᒷᔮ╎ᖋ|: ᒷリᒣ∷╎ᒷϟ",
|
||||||
"settings.header.visual.animatedArtwork.disable": "↸╎ϟᖋᕊ|:ᒷ ᒷ⍊ᒷ∷॥∴⍑ᒷ∷ᒷ",
|
"settings.header.visual.animatedArtwork.disable": "↸╎ϟᖋᕊ|:ᒷ ᒷ⍊ᒷ∷॥∴⍑ᒷ∷ᒷ",
|
||||||
"settings.option.visual.animatedArtworkQuality": "ᖋリ╎ᒲᖋᒣᒷ↸ ᖋ∷ᒣ∴ᒍ∷·ǀ· ᑑ⚍ᖋ|:╎ᒣ॥", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "ᖋリ╎ᒲᖋᒣᒷ↸ ᖋ∷ᒣ∴ᒍ∷·ǀ· ᑑ⚍ᖋ|:╎ᒣ॥",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "|:ᒍ∴",
|
"settings.header.visual.animatedArtworkQuality.low": "|:ᒍ∴",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "ᒲᒷ↸╎⚍ᒲ",
|
"settings.header.visual.animatedArtworkQuality.medium": "ᒲᒷ↸╎⚍ᒲ",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "⍑╎┤⍑",
|
"settings.header.visual.animatedArtworkQuality.high": "⍑╎┤⍑",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "⍊ᒷ∷॥ ⍑╎┤⍑",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "⍊ᒷ∷॥ ⍑╎┤⍑",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "ᒷ/ᒣ∷ᒷᒲᒷ",
|
"settings.header.visual.animatedArtworkQuality.extreme": "ᒷ/ᒣ∷ᒷᒲᒷ",
|
||||||
"settings.option.visual.animatedWindowBackground": "ᖋリ╎ᒲᖋᒣᒷ↸ ∴╎リ↸ᒍ∴ ᕊᖋᔮ·ǀ·┤∷ᒍ⚍リ↸", // Toggle
|
"settings.option.visual.animatedWindowBackground": "ᖋリ╎ᒲᖋᒣᒷ↸ ∴╎リ↸ᒍ∴ ᕊᖋᔮ·ǀ·┤∷ᒍ⚍リ↸",
|
||||||
"settings.option.visual.hardwareAcceleration": "⍑ᖋ∷↸∴ᖋ∷ᒷ ᖋᔮᔮᒷ|:ᒷ∷ᖋᒣ╎ᒍリ", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "⍑ᖋ∷↸∴ᖋ∷ᒷ ᖋᔮᔮᒷ|:ᒷ∷ᖋᒣ╎ᒍリ",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "∷ᒷᑑ⚍╎∷ᒷϟ ∷ᒷ|:ᖋ⚍リᔮ⍑",
|
"settings.option.visual.hardwareAcceleration.description": "∷ᒷᑑ⚍╎∷ᒷϟ ∷ᒷ|:ᖋ⚍リᔮ⍑",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "↸ᒷ⎓ᖋ⚍|:ᒣ",
|
"settings.header.visual.hardwareAcceleration.default": "↸ᒷ⎓ᖋ⚍|:ᒣ",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "∴ᒷᕊ┤i!⚍",
|
"settings.header.visual.hardwareAcceleration.webGPU": "∴ᒷᕊ┤i!⚍",
|
||||||
"settings.header.visual.theme": "ᒣ⍑ᒷᒲᒷ",
|
"settings.header.visual.theme": "ᒣ⍑ᒷᒲᒷ",
|
||||||
|
"settings.option.visual.theme.github.download": "╎リϟᒣᖋ|:|: ⎓∷ᒍᒲ ┤╎ᒣ⍑⚍ᕊ ⚍∷|:",
|
||||||
// Settings - Visual - Theme name
|
"settings.prompt.visual.theme.github.URL": "ᒷリᒣᒷ∷ ᒣ⍑ᒷ ⚍∷|: ᒍ⎓ ᒣ⍑ᒷ ᒣ⍑ᒷᒲᒷ ॥ᒍ⚍ ∴ᖋリᒣ ᒣᒍ ╎リϟᒣᖋ|:|:",
|
||||||
|
"settings.notyf.visual.theme.install.success": "ᒣ⍑ᒷᒲᒷ ╎リϟᒣᖋ|:|:ᒷ↸ ϟ⚍ᔮᔮᒷϟϟ⎓⚍|:|:॥",
|
||||||
|
"settings.notyf.visual.theme.install.error": "ᒣ⍑ᒷᒲᒷ ╎リϟᒣᖋ|:|:ᖋᒣ╎ᒍリ ⎓ᖋ╎|:ᒷ↸",
|
||||||
"settings.option.visual.theme.default": "ᔮ╎↸ᒷ∷",
|
"settings.option.visual.theme.default": "ᔮ╎↸ᒷ∷",
|
||||||
"settings.option.visual.theme.dark": "↸ᖋ∷·ǀ·",
|
"settings.option.visual.theme.dark": "↸ᖋ∷·ǀ·",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.option.visual.showPersonalInfo": "ϟ⍑ᒍ∴ i!ᒷ∷ϟᒍリᖋ|: ╎リ⎓ᒍ",
|
||||||
"settings.option.visual.showPersonalInfo": "ϟ⍑ᒍ∴ i!ᒷ∷ϟᒍリᖋ|: ╎リ⎓ᒍ", // Toggle
|
|
||||||
|
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "|:॥∷╎ᔮϟ",
|
"settings.header.lyrics": "|:॥∷╎ᔮϟ",
|
||||||
"settings.header.lyrics.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ |:॥∷╎ᔮϟ ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
|
"settings.header.lyrics.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ |:॥∷╎ᔮϟ ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
|
||||||
"settings.option.lyrics.enableMusixmatch": "ᒷリᖋᕊ|:ᒷ ᒲ⚍ϟ╎̇/ᒲᖋᒣᔮ⍑ |:॥∷╎ᔮϟ", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "ᒷリᖋᕊ|:ᒷ ᒲ⚍ϟ╎̇/ᒲᖋᒣᔮ⍑ |:॥∷╎ᔮϟ",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "ᒷリᖋᕊ|:ᒷ ·ǀ·ᖋ∷ᖋᒍ·ǀ·ᒷ ᒲᒍ↸ᒷ (ᒲ⚍ϟ╎̇/ᒲᖋᒣᔮ⍑ ᒍリ|:॥)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "ᒷリᖋᕊ|:ᒷ ·ǀ·ᖋ∷ᖋᒍ·ǀ·ᒷ ᒲᒍ↸ᒷ (ᒲ⚍ϟ╎̇/ᒲᖋᒣᔮ⍑ ᒍリ|:॥)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "ᒲ⚍ϟ╎̇/ᒲᖋᒣᔮ⍑ ᒣ∷ᖋリϟ|:ᖋᒣ╎ᒍリ i!∷ᒷ⎓ᒷ∷∷ᒷ↸ |:ᖋリ┤⚍ᖋ┤ᒷ", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "ᒲ⚍ϟ╎̇/ᒲᖋᒣᔮ⍑ ᒣ∷ᖋリϟ|:ᖋᒣ╎ᒍリ i!∷ᒷ⎓ᒷ∷∷ᒷ↸ |:ᖋリ┤⚍ᖋ┤ᒷ",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "ᒷリᖋᕊ|:ᒷ ॥ᒍ⚍ᒣ⚍ᕊᒷ |:॥∷╎ᔮϟ ⎓ᒍ∷ ᒲ⚍ϟ╎ᔮ ⍊╎↸ᒷᒍϟ", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "ᒷリᖋᕊ|:ᒷ ॥ᒍ⚍ᒣ⚍ᕊᒷ |:॥∷╎ᔮϟ ⎓ᒍ∷ ᒲ⚍ϟ╎ᔮ ⍊╎↸ᒷᒍϟ",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "ᔮᒍリリᒷᔮᒣ╎⍊╎ᒣ॥",
|
"settings.header.connectivity": "ᔮᒍリリᒷᔮᒣ╎⍊╎ᒣ॥",
|
||||||
"settings.header.connectivity.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ᔮᒍリリᒷᔮᒣ╎⍊╎ᒣ॥ ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
|
"settings.header.connectivity.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ᔮᒍリリᒷᔮᒣ╎⍊╎ᒣ॥ ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
|
||||||
"settings.option.connectivity.discordRPC": "↸╎ϟᔮᒍ∷↸ ∷╎ᔮ⍑ i!∷ᒷϟᒷリᔮᒷ", // Dropdown
|
"settings.option.connectivity.discordRPC": "↸╎ϟᔮᒍ∷↸ ∷╎ᔮ⍑ i!∷ᒷϟᒷリᔮᒷ",
|
||||||
"settings.option.connectivity.playbackNotifications": "i!|:ᖋ॥ᕊᖋᔮ·ǀ· リᒍᒣ╎⎓╎ᔮᖋᒣ╎ᒍリϟ", // Toggle
|
"settings.option.connectivity.playbackNotifications": "i!|:ᖋ॥ᕊᖋᔮ·ǀ· リᒍᒣ╎⎓╎ᔮᖋᒣ╎ᒍリϟ",
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "↸╎ϟi!|:ᖋ॥ ᖋϟ 'ᔮ╎↸ᒷ∷'",
|
"settings.header.connectivity.discordRPC.cider": "↸╎ϟi!|:ᖋ॥ ᖋϟ 'ᔮ╎↸ᒷ∷'",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "↸╎ϟi!|:ᖋ॥ ᖋϟ 'ᖋi!i!|:ᒷ ᒲ⚍ϟ╎ᔮ'",
|
"settings.header.connectivity.discordRPC.appleMusic": "↸╎ϟi!|:ᖋ॥ ᖋϟ 'ᖋi!i!|:ᒷ ᒲ⚍ϟ╎ᔮ'",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "ᔮ|:ᒷᖋ∷ ↸╎ϟᔮᒍ∷↸ ∷╎ᔮ⍑ i!∷ᒷϟᒷリᔮᒷ ᒍリ i!ᖋ⚍ϟᒷ", // Toggle
|
"settings.option.connectivity.discordRPC.clearOnPause": "ᔮ|:ᒷᖋ∷ ↸╎ϟᔮᒍ∷↸ ∷╎ᔮ⍑ i!∷ᒷϟᒷリᔮᒷ ᒍリ i!ᖋ⚍ϟᒷ",
|
||||||
"settings.option.connectivity.lastfmScrobble": "|:ᖋϟᒣ.⎓ᒲ ϟᔮ∷ᒍᕊᕊ|:╎リ┤", // Option to Connect
|
"settings.option.connectivity.lastfmScrobble": "|:ᖋϟᒣ.⎓ᒲ ϟᔮ∷ᒍᕊᕊ|:╎リ┤",
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "|:ᖋϟᒣ.⎓ᒲ ϟᔮ∷ᒍᕊᕊ|:ᒷ ↸ᒷ|:ᖋ॥ (%)",
|
"settings.option.connectivity.lastfmScrobble.delay": "|:ᖋϟᒣ.⎓ᒲ ϟᔮ∷ᒍᕊᕊ|:ᒷ ↸ᒷ|:ᖋ॥ (%)",
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "ᒷリᖋᕊ|:ᒷ |:ᖋϟᒣ.⎓ᒲ リᒍ∴ i!|:ᖋ॥╎リ┤",
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "ᒷリᖋᕊ|:ᒷ |:ᖋϟᒣ.⎓ᒲ リᒍ∴ i!|:ᖋ॥╎リ┤",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "∷ᒷᒲᒍ⍊ᒷ ⎓ᒷᖋᒣ⚍∷╎リ┤ ᖋ∷ᒣ╎ϟᒣϟ ⎓∷ᒍᒲ ϟᒍリ┤ ᒣ╎ᒣ|:ᒷ (|:ᖋϟᒣ.⎓ᒲ)",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "∷ᒷᒲᒍ⍊ᒷ ⎓ᒷᖋᒣ⚍∷╎リ┤ ᖋ∷ᒣ╎ϟᒣϟ ⎓∷ᒍᒲ ϟᒍリ┤ ᒣ╎ᒣ|:ᒷ (|:ᖋϟᒣ.⎓ᒲ)",
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "⎓╎|:ᒣᒷ∷ |:ᒍᒍi!ᒷ↸ ᒣ∷ᖋᔮ·ǀ· (|:ᖋϟᒣ.⎓ᒲ)",
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "⎓╎|:ᒣᒷ∷ |:ᒍᒍi!ᒷ↸ ᒣ∷ᖋᔮ·ǀ· (|:ᖋϟᒣ.⎓ᒲ)",
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "ᒷ/i!ᒷ∷╎ᒲᒷリᒣᖋ|:",
|
"settings.header.experimental": "ᒷ/i!ᒷ∷╎ᒲᒷリᒣᖋ|:",
|
||||||
"settings.header.experimental.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ᒷ/i!ᒷ∷╎ᒲᒷリᒣᖋ|: ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
|
"settings.header.experimental.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ᒷ/i!ᒷ∷╎ᒲᒷリᒣᖋ|: ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
|
||||||
"settings.option.experimental.compactUI": "ᔮᒍᒲi!ᖋᔮᒣ ⚍╎", // Toggle
|
"settings.option.experimental.compactUI": "ᔮᒍᒲi!ᖋᔮᒣ ⚍╎",
|
||||||
"settings.option.experimental.close_button_hide": "ᔮ|:ᒍϟᒷ ᕊ⚍ᒣᒣᒍリ ϟ⍑ᒍ⚍|:↸ ⍑╎↸ᒷ ᒣ⍑ᒷ ᖋi!i!|:╎ᔮᖋᒣ╎ᒍリ",
|
"settings.option.window.close_button_hide": "ᔮ|:ᒍϟᒷ ᕊ⚍ᒣᒣᒍリ ϟ⍑ᒍ⚍|:↸ ⍑╎↸ᒷ ᒣ⍑ᒷ ᖋi!i!|:╎ᔮᖋᒣ╎ᒍリ",
|
||||||
"settings.option.experimental.copy_log": "ᔮᒍi!॥ |:ᒍ┤ϟ ᒣᒍ ᔮ|:╎i!ᕊᒍᖋ∷↸",
|
"settings.option.experimental.copy_log": "ᔮᒍi!॥ |:ᒍ┤ϟ ᒣᒍ ᔮ|:╎i!ᕊᒍᖋ∷↸",
|
||||||
"settings.option.experimental.inline_playlists": "╎リ|:╎リᒷ i!|:ᖋ॥|:╎ϟᒣϟ ᖋリ↸ ᖋ|:ᕊ⚍ᒲϟ",
|
"settings.option.experimental.inline_playlists": "╎リ|:╎リᒷ i!|:ᖋ॥|:╎ϟᒣϟ ᖋリ↸ ᖋ|:ᕊ⚍ᒲϟ",
|
||||||
|
|
||||||
// Refer to term.disabled & term.enabled
|
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.notTurnedOn": "ᖋ⚍↸╎ᒍ ϟi!ᖋᒣ╎ᖋ|:╎∩ᖋᒣ╎ᒍリ ╎ϟ ↸╎ϟᖋᕊ|:ᒷ↸. ᒣᒍ ⚍ϟᒷ, i!|:ᒷᖋϟᒷ ᒷリᖋᕊ|:ᒷ ╎ᒣ ⎓╎∷ϟᒣ.",
|
"spatial.notTurnedOn": "ᖋ⚍↸╎ᒍ ϟi!ᖋᒣ╎ᖋ|:╎∩ᖋᒣ╎ᒍリ ╎ϟ ↸╎ϟᖋᕊ|:ᒷ↸. ᒣᒍ ⚍ϟᒷ, i!|:ᒷᖋϟᒷ ᒷリᖋᕊ|:ᒷ ╎ᒣ ⎓╎∷ϟᒣ.",
|
||||||
"spatial.spatialProperties": "ϟi!ᖋᒣ╎ᖋ|: i!∷ᒍi!ᒷ∷ᒣ╎ᒷϟ",
|
"spatial.spatialProperties": "ϟi!ᖋᒣ╎ᖋ|: i!∷ᒍi!ᒷ∷ᒣ╎ᒷϟ",
|
||||||
"spatial.width": "∴╎↸ᒣ⍑",
|
"spatial.width": "∴╎↸ᒣ⍑",
|
||||||
|
@ -335,14 +307,8 @@
|
||||||
"spatial.down": "↸ᒍ∴リ",
|
"spatial.down": "↸ᒍ∴リ",
|
||||||
"spatial.listener": "|:╎ϟᒣᒷリᒷ∷",
|
"spatial.listener": "|:╎ϟᒣᒷリᒷ∷",
|
||||||
"spatial.audioSource": "ᖋ⚍↸╎ᒍ ϟᒍ⚍∷ᔮᒷ",
|
"spatial.audioSource": "ᖋ⚍↸╎ᒍ ϟᒍ⚍∷ᔮᒷ",
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "⚍リ⎓╎リ╎ϟ⍑ᒷ↸",
|
"settings.header.unfinished": "⚍リ⎓╎リ╎ϟ⍑ᒷ↸",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "ᔮ╎↸ᒷ∷ ∷ᒷᒲᒍᒣᒷ",
|
"remote.web.title": "ᔮ╎↸ᒷ∷ ∷ᒷᒲᒍᒣᒷ",
|
||||||
"remote.web.description": "ϟᔮᖋリ ᒣ⍑ᒷ ᑑ∷ ᔮᒍ↸ᒷ ᒣᒍ i!ᖋ╎∷ ॥ᒍ⚍∷ i!⍑ᒍリᒷ ⚍i! ∴╎ᒣ⍑ ᒣ⍑╎ϟ ᔮ╎↸ᒷ∷ ╎リϟᒣᖋリᔮᒷ",
|
"remote.web.description": "ϟᔮᖋリ ᒣ⍑ᒷ ᑑ∷ ᔮᒍ↸ᒷ ᒣᒍ i!ᖋ╎∷ ॥ᒍ⚍∷ i!⍑ᒍリᒷ ⚍i! ∴╎ᒣ⍑ ᒣ⍑╎ϟ ᔮ╎↸ᒷ∷ ╎リϟᒣᖋリᔮᒷ",
|
||||||
|
|
||||||
// About
|
|
||||||
"about.thanks": "ᒲᖋ⋮ᒍ∷ ᒣ⍑ᖋリ·ǀ·ϟ ᒣᒍ ᒣ⍑ᒷ ᔮ╎↸ᒷ∷ ᔮᒍ|:|:ᒷᔮᒣ╎⍊ᒷ ᒣᒷᖋᒲ ᖋリ↸ ᖋ|:|: ᒍ⎓ ᒍ⚍∷ ᔮᒍリᒣ∷╎ᕊ⚍ᒣᒍ∷ϟ."
|
"about.thanks": "ᒲᖋ⋮ᒍ∷ ᒣ⍑ᖋリ·ǀ·ϟ ᒣᒍ ᒣ⍑ᒷ ᔮ╎↸ᒷ∷ ᔮᒍ|:|:ᒷᔮᒣ╎⍊ᒷ ᒣᒷᖋᒲ ᖋリ↸ ᖋ|:|: ᒍ⎓ ᒍ⚍∷ ᔮᒍリᒣ∷╎ᕊ⚍ᒣᒍ∷ϟ."
|
||||||
}
|
}
|
415
src/i18n/en_US.json
Normal file
|
@ -0,0 +1,415 @@
|
||||||
|
{
|
||||||
|
"i18n.languageName": "English (US)",
|
||||||
|
"i18n.languageNameEnglish": "English (US)",
|
||||||
|
"i18n.category": "main",
|
||||||
|
"i18n.authors": "@maikirakiwi @kyw504100 @nosh118",
|
||||||
|
"app.name": "Cider",
|
||||||
|
"date.format": "${m} ${d}, ${y}",
|
||||||
|
"dialog.cancel": "Cancel",
|
||||||
|
"dialog.ok": "OK",
|
||||||
|
"notification.updatingLibrarySongs": "Updating library songs...",
|
||||||
|
"notification.updatingLibraryAlbums": "Updating library albums...",
|
||||||
|
"notification.updatingLibraryArtists": "Updating library artists...",
|
||||||
|
"term.appleInc": "Apple Inc.",
|
||||||
|
"term.appleMusic": "Apple Music",
|
||||||
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
"term.itunes": "iTunes",
|
||||||
|
"term.github": "GitHub",
|
||||||
|
"term.discord": "Discord",
|
||||||
|
"term.learnMore": "Learn more",
|
||||||
|
"term.accountSettings": "Account Settings",
|
||||||
|
"term.logout": "Logout",
|
||||||
|
"term.login": "Log In",
|
||||||
|
"term.about": "About",
|
||||||
|
"term.privateSession": "Private Session",
|
||||||
|
"term.queue": "Queue",
|
||||||
|
"term.lyrics": "Lyrics",
|
||||||
|
"term.miniplayer": "MiniPlayer",
|
||||||
|
"term.history": "History",
|
||||||
|
"term.search": "Search",
|
||||||
|
"term.library": "Library",
|
||||||
|
"term.listenNow": "Listen Now",
|
||||||
|
"term.browse": "Browse",
|
||||||
|
"term.radio": "Radio",
|
||||||
|
"term.recentlyAdded": "Recently Added",
|
||||||
|
"term.songs": "Songs",
|
||||||
|
"term.albums": "Albums",
|
||||||
|
"term.artists": "Artists",
|
||||||
|
"term.podcasts": "Podcasts",
|
||||||
|
"term.playlists": "Playlists",
|
||||||
|
"term.playlist": "Playlist",
|
||||||
|
"term.newPlaylist": "New Playlist",
|
||||||
|
"term.newPlaylistFolder": "New Playlist Folder",
|
||||||
|
"term.createNewPlaylist": "Create New Playlist",
|
||||||
|
"term.createNewPlaylistFolder": "Create New Playlist Folder",
|
||||||
|
"term.deletePlaylist": "Are you sure you want to delete this playlist?",
|
||||||
|
"term.play": "Play",
|
||||||
|
"term.pause": "Pause",
|
||||||
|
"term.previous": "Previous",
|
||||||
|
"term.next": "Next",
|
||||||
|
"term.shuffle": "Shuffle",
|
||||||
|
"term.repeat": "Repeat",
|
||||||
|
"term.volume": "Volume",
|
||||||
|
"term.mute": "Mute",
|
||||||
|
"term.unmute": "Unmute",
|
||||||
|
"term.share": "Share",
|
||||||
|
"term.share.success": "Copied to clipboard",
|
||||||
|
"term.settings": "Settings",
|
||||||
|
"term.seeAll": "See All",
|
||||||
|
"term.sortBy": "Sort By",
|
||||||
|
"term.sortBy.album": "Album",
|
||||||
|
"term.sortBy.artist": "Artist",
|
||||||
|
"term.sortBy.name": "Name",
|
||||||
|
"term.sortBy.genre": "Genre",
|
||||||
|
"term.sortBy.releaseDate": "Release Date",
|
||||||
|
"term.sortBy.duration": "Duration",
|
||||||
|
"term.sortBy.dateAdded": "Date Added",
|
||||||
|
"term.sortOrder": "A-Z",
|
||||||
|
"term.sortOrder.ascending": "Ascending",
|
||||||
|
"term.sortOrder.descending": "Descending",
|
||||||
|
"term.viewAs": "View As",
|
||||||
|
"term.viewAs.coverArt": "Cover Art",
|
||||||
|
"term.viewAs.list": "List",
|
||||||
|
"term.size": "Size",
|
||||||
|
"term.size.normal": "Normal",
|
||||||
|
"term.size.compact": "Compact",
|
||||||
|
"term.enable": "Enable",
|
||||||
|
"term.disable": "Disable",
|
||||||
|
"term.enabled": "Enabled",
|
||||||
|
"term.disabled": "Disabled",
|
||||||
|
"term.connect": "Connect",
|
||||||
|
"term.connecting": "Connecting",
|
||||||
|
"term.disconnect": "Disconnect",
|
||||||
|
"term.authed": "Authed",
|
||||||
|
"term.confirm": "Confirm?",
|
||||||
|
"term.more": "More",
|
||||||
|
"term.less": "Less",
|
||||||
|
"term.showMore": "Show more",
|
||||||
|
"term.showLess": "Show less",
|
||||||
|
"term.topSongs": "Top Songs",
|
||||||
|
"term.latestReleases": "Latest Releases",
|
||||||
|
"term.time.added": "Added",
|
||||||
|
"term.time.released": "Released",
|
||||||
|
"term.time.updated": "Updated",
|
||||||
|
"term.time.days": "days",
|
||||||
|
"term.time.day": {
|
||||||
|
"one": "day",
|
||||||
|
"other": "days"
|
||||||
|
},
|
||||||
|
"term.time.hours": "hours",
|
||||||
|
"term.time.hour": {
|
||||||
|
"one": "hour",
|
||||||
|
"other": "hours"
|
||||||
|
},
|
||||||
|
"term.time.minutes": "minutes",
|
||||||
|
"term.time.minute": {
|
||||||
|
"one": "minute",
|
||||||
|
"other": "minutes"
|
||||||
|
},
|
||||||
|
"term.time.seconds": "seconds",
|
||||||
|
"term.time.second": {
|
||||||
|
"one": "second",
|
||||||
|
"other": "seconds"
|
||||||
|
},
|
||||||
|
"term.fullscreenView": "Fullscreen View",
|
||||||
|
"term.defaultView": "Default View",
|
||||||
|
"term.audioSettings": "Audio Settings",
|
||||||
|
"term.audioControls": "Volume Controls",
|
||||||
|
"term.clearAll": "Clear All",
|
||||||
|
"term.recentStations": "Recent Stations",
|
||||||
|
"term.language": "Language",
|
||||||
|
"term.funLanguages": "Fun",
|
||||||
|
"term.noLyrics": "Loading... / Lyrics not found./ Instrumental.",
|
||||||
|
"term.copyright": "Copyright",
|
||||||
|
"term.rightsReserved": "All Rights Reserved.",
|
||||||
|
"term.sponsor": "Sponsor this project",
|
||||||
|
"term.ciderTeam": "Cider Team",
|
||||||
|
"term.developer": "Developer",
|
||||||
|
"term.socialTeam": "Social Team",
|
||||||
|
"term.socials": "Socials",
|
||||||
|
"term.contributors": "Contributors",
|
||||||
|
"term.equalizer": "Equalizer",
|
||||||
|
"term.reset": "Reset",
|
||||||
|
"term.tracks": "tracks",
|
||||||
|
"term.track": {
|
||||||
|
"one" : "track",
|
||||||
|
"other" : "tracks"
|
||||||
|
},
|
||||||
|
"term.videos": "Videos",
|
||||||
|
"term.menu": "Menu",
|
||||||
|
"term.check": "Check",
|
||||||
|
"term.aboutArtist": "About {{artistName}}",
|
||||||
|
"term.topResult": "Top Result",
|
||||||
|
"term.sharedPlaylists": "Shared Playlists",
|
||||||
|
"term.people": "People",
|
||||||
|
"term.newpreset.name": "New EQ Preset Name",
|
||||||
|
"term.addedpreset": "Added Preset",
|
||||||
|
"term.deletepreset.warn": "Are you sure you want to delete this preset?",
|
||||||
|
"term.deletedpreset": "Removed preset",
|
||||||
|
"term.defaultPresets": "Default Presets",
|
||||||
|
"term.userPresets": "User Presets",
|
||||||
|
"term.requestError": "There was a problem with the request.",
|
||||||
|
"term.song.link.generate": "Getting song.link share URL...",
|
||||||
|
"term.musicVideos": "Music Videos",
|
||||||
|
"term.stations": "Stations",
|
||||||
|
"term.curators": "Curators",
|
||||||
|
"term.appleCurators": "Apple Curators",
|
||||||
|
"term.radioShows": "Radio Shows",
|
||||||
|
"term.recordLabels": "Record Labels",
|
||||||
|
"term.videoExtras": "Video Extras",
|
||||||
|
"term.top": "Top",
|
||||||
|
"term.version": "Version",
|
||||||
|
"term.noVideos": "No videos found.",
|
||||||
|
"term.plugin": "Plug-in",
|
||||||
|
"term.pluginMenu": "Plug-in Menu",
|
||||||
|
"term.pluginMenu.none": "No interactive plugins",
|
||||||
|
"term.replay": "Replay",
|
||||||
|
"term.uniqueAlbums": "Unique Albums",
|
||||||
|
"term.uniqueArtists": "Unique Artists",
|
||||||
|
"term.uniqueSongs": "Unique Songs",
|
||||||
|
"term.topArtists": "Top Artists",
|
||||||
|
"term.listenedTo": "Listened to:",
|
||||||
|
"term.times": "times",
|
||||||
|
"term.topAlbums": "Top Albums",
|
||||||
|
"term.plays": "Plays",
|
||||||
|
"term.topGenres": "Top Genres",
|
||||||
|
"term.confirmLogout": "Are you sure you want to logout?",
|
||||||
|
"term.creditDesignedBy": "Designed by ${authorUsername}",
|
||||||
|
"home.title": "Home",
|
||||||
|
"home.recentlyPlayed": "Recently Played",
|
||||||
|
"home.recentlyAdded": "Recently Added",
|
||||||
|
"home.artistsFeed": "Your Artists Feed",
|
||||||
|
"home.artistsFeed.noArtist": "Follow some artists to see their latest releases",
|
||||||
|
"home.madeForYou": "Made For You",
|
||||||
|
"home.friendsListeningTo": "Friends Listening To",
|
||||||
|
"home.followedArtists": "Followed Artists",
|
||||||
|
"error.appleMusicSubRequired": "Apple Music requires a subscription.",
|
||||||
|
"error.connectionError": "There was a problem connecting to Apple Music.",
|
||||||
|
"error.noResults": "No Results.",
|
||||||
|
"error.noResults.description": "Try a new search.",
|
||||||
|
"podcast.followOnCider": "Follow On Cider",
|
||||||
|
"podcast.followedOnCider": "Following On Cider",
|
||||||
|
"podcast.subscribeOnItunes": "Subscribe On iTunes",
|
||||||
|
"podcast.subscribedOnItunes": "Subscribed On iTunes",
|
||||||
|
"podcast.itunesStore": "iTunes Store",
|
||||||
|
"podcast.episodes": "Episodes",
|
||||||
|
"podcast.playEpisode": "Play Episode",
|
||||||
|
"podcast.website": "Podcast Website",
|
||||||
|
"action.addToLibrary": "Add to Library",
|
||||||
|
"action.addToLibrary.success": "Added to Library",
|
||||||
|
"action.addToLibrary.error": "Error Adding to Library",
|
||||||
|
"action.removeFromLibrary": "Remove from Library",
|
||||||
|
"action.removeFromLibrary.success": "Removed from Library",
|
||||||
|
"action.addToQueue": "Add to Queue",
|
||||||
|
"action.addToQueue.success": "Added to Queue",
|
||||||
|
"action.addToQueue.error": "Error Adding to Queue",
|
||||||
|
"action.removeFromQueue": "Remove from Queue",
|
||||||
|
"action.removeFromQueue.success": "Removed from Queue",
|
||||||
|
"action.removeFromQueue.error": "Error Removing from Queue",
|
||||||
|
"action.createPlaylist": "Create a New Playlist",
|
||||||
|
"action.addToPlaylist": "Add to Playlist",
|
||||||
|
"action.removeFromPlaylist": "Remove from Playlist",
|
||||||
|
"action.addToFavorites": "Add to Favorites",
|
||||||
|
"action.follow": "Follow",
|
||||||
|
"action.follow.success": "Followed",
|
||||||
|
"action.follow.error": "Error Following",
|
||||||
|
"action.unfollow": "Unfollow",
|
||||||
|
"action.unfollow.success": "Unfollowed",
|
||||||
|
"action.unfollow.error": "Error Unfollowing",
|
||||||
|
"action.playNext": "Play Next",
|
||||||
|
"action.playLater": "Play Later",
|
||||||
|
"action.startRadio": "Start Radio",
|
||||||
|
"action.goToArtist": "Go to Artist",
|
||||||
|
"action.goToAlbum": "Go to Album",
|
||||||
|
"action.showInPlaylist": "Show in Playlist",
|
||||||
|
"action.showInAppleMusic": "Show in Apple Music",
|
||||||
|
"action.moveToTop": "Move out of Folder",
|
||||||
|
"action.share": "Share",
|
||||||
|
"action.rename": "Rename",
|
||||||
|
"action.love": "Love",
|
||||||
|
"action.unlove": "Unlove",
|
||||||
|
"action.dislike": "Dislike",
|
||||||
|
"action.undoDislike": "Undo dislike",
|
||||||
|
"action.showWebRemoteQR": "Web Remote",
|
||||||
|
"action.playTracksNext": "Play ${app.selectedMediaItems.length} tracks next",
|
||||||
|
"action.playTracksLater": "Play ${app.selectedMediaItems.length} tracks later",
|
||||||
|
"action.removeTracks": "Remove ${self.selectedItems.length} tracks from queue",
|
||||||
|
"action.import": "Import",
|
||||||
|
"action.export": "Export",
|
||||||
|
"action.showAlbum": "Show Complete Album",
|
||||||
|
"action.tray.minimize": "Minimize to Tray",
|
||||||
|
"action.tray.quit": "Quit",
|
||||||
|
"action.tray.show": "Show",
|
||||||
|
"action.update": "Update",
|
||||||
|
"action.install": "Install",
|
||||||
|
"action.copy": "Copy",
|
||||||
|
"action.newpreset": "New Preset...",
|
||||||
|
"action.deletepreset": "Delete Preset",
|
||||||
|
"action.open": "Open",
|
||||||
|
"action.relaunch.confirm": "Do you want to relaunch Cider?",
|
||||||
|
"settings.header.general": "General",
|
||||||
|
"settings.header.general.description": "Adjust the general settings for Cider.",
|
||||||
|
"settings.option.general.language": "Language",
|
||||||
|
"settings.option.general.resumebehavior": "Resume behavior",
|
||||||
|
"settings.option.general.resumebehavior.description": "Resume behavior affects how Cider will resume your session when you return to the app.",
|
||||||
|
"settings.option.general.resumebehavior.locally": "Locally",
|
||||||
|
"settings.option.general.resumebehavior.locally.description": "Cider will resume your last session on this machine.",
|
||||||
|
"settings.option.general.resumebehavior.history": "History",
|
||||||
|
"settings.option.general.resumebehavior.history.description": "Cider will queue the last song from your overall Apple Music history, across devices.",
|
||||||
|
"settings.option.general.language.main": "Languages",
|
||||||
|
"settings.option.general.language.fun": "Fun Languages",
|
||||||
|
"settings.option.general.language.unsorted": "Unsorted",
|
||||||
|
"settings.option.general.updateCider": "Update Cider",
|
||||||
|
"settings.option.general.updateCider.branch": "Cider Update Branch",
|
||||||
|
"settings.option.general.updateCider.branch.description": "Select the branch to update Cider to",
|
||||||
|
"settings.option.general.updateCider.branch.main": "Stable",
|
||||||
|
"settings.option.general.updateCider.branch.develop": "Development",
|
||||||
|
"settings.notyf.updateCider.update-not-available": "No update available",
|
||||||
|
"settings.notyf.updateCider.update-downloaded": "Update has been downloaded, restart to apply",
|
||||||
|
"settings.notyf.updateCider.update-error": "Error updating Cider",
|
||||||
|
"settings.notyf.updateCider.update-timeout": "Update timed out",
|
||||||
|
"settings.header.audio": "Audio",
|
||||||
|
"settings.header.audio.description": "Adjust the audio settings for Cider.",
|
||||||
|
"settings.option.audio.volumeStep": "Volume Step",
|
||||||
|
"settings.option.audio.maxVolume": "Max Volume",
|
||||||
|
"settings.option.audio.quality": "Audio Quality",
|
||||||
|
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
|
||||||
|
"settings.header.audio.quality.hireslossless.description": "up to 24-bit/192 kHz",
|
||||||
|
"settings.header.audio.quality.lossless": "Lossless",
|
||||||
|
"settings.header.audio.quality.lossless.description": "up to 24-bit/48 kHz",
|
||||||
|
"settings.header.audio.quality.high": "High",
|
||||||
|
"settings.header.audio.quality.high.description": "256 kbps",
|
||||||
|
"settings.header.audio.quality.standard": "Standard",
|
||||||
|
"settings.header.audio.quality.standard.description": "64 kbps",
|
||||||
|
"settings.option.audio.seamlessTransition": "Seamless Audio Transition",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality": "Enable Advanced Functionality",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalization, Equalizers and Visualizers - however on some systems this may cause stuttering in audio tracks.",
|
||||||
|
"settings.option.audio.audioLab": "Cider Audio Lab",
|
||||||
|
"settings.option.audio.audioLab.description": "An assortment of in-house developed audio effects for Cider.",
|
||||||
|
"settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionality) is required to enable Cider Audio Laboratory.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Analog Warmth",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Simulates the analog warmth modelled after the Korg Nutube 6P1",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Analog Warmth intensity",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "Changes the intensity of the Analog Warmth Module processing.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Warm",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively.",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP is not compatible with Spatialization. Please disable Spatialization to continue.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standard",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggressive",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Normalization",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizes peak volume for individual tracks to create a more uniform listening experience.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.disabled": "Managed by Audio Lab",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cider Tuned Spatialization",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description": "Pre-tuned Spatializing Effect, disables the customizable settings of Audio Spatialization. Spatialization must be enabled as a prerequisite.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile": "Cider Spatialization Profile",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description": "Changes the Tuning Profile of the Spatialization. (Requires App Restart)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard": "Standard",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile": "Audiophile",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Spatialization is not compatible with CAP. Please disable CAP to continue.",
|
||||||
|
"settings.header.visual": "Visual",
|
||||||
|
"settings.header.visual.description": "Adjust the visual settings for Cider.",
|
||||||
|
"settings.option.visual.windowBackgroundStyle": "Window Background Style",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.none": "None",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.artwork": "Artwork",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.image": "Image",
|
||||||
|
"settings.option.visual.animatedArtwork": "Animated Artwork",
|
||||||
|
"settings.header.visual.animatedArtwork.always": "Always",
|
||||||
|
"settings.header.visual.animatedArtwork.limited": "Limited to pages and special entries",
|
||||||
|
"settings.header.visual.animatedArtwork.disable": "Disable everywhere",
|
||||||
|
"settings.option.visual.animatedArtworkQuality": "Animated Artwork Quality",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.low": "Low",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.medium": "Medium",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.high": "High",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Very High",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.extreme": "Extreme",
|
||||||
|
"settings.option.visual.animatedWindowBackground": "Animated Window Background",
|
||||||
|
"settings.option.visual.hardwareAcceleration": "Hardware Acceleration",
|
||||||
|
"settings.option.visual.hardwareAcceleration.description": "Requires relaunch",
|
||||||
|
"settings.header.visual.hardwareAcceleration.default": "Default",
|
||||||
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
|
"settings.header.visual.theme": "Theme",
|
||||||
|
"settings.option.visual.theme.github.download": "Install from GitHub URL",
|
||||||
|
"settings.option.visual.theme.github.explore": "Explore GitHub Themes",
|
||||||
|
"settings.header.visual.theme.github.page": "Themes from GitHub",
|
||||||
|
"settings.option.visual.theme.github.install.confirm": "Are you sure you want to install {{ repo }}?",
|
||||||
|
"settings.prompt.visual.theme.github.URL": "Enter the URL of the theme you want to install",
|
||||||
|
"settings.notyf.visual.theme.install.success": "Theme installed successfully",
|
||||||
|
"settings.notyf.visual.theme.install.error": "Theme installation failed",
|
||||||
|
"settings.header.visual.plugin": "Plugin",
|
||||||
|
"settings.option.visual.plugin.github.download": "Install from GitHub URL",
|
||||||
|
"settings.option.visual.plugin.github.explore": "Explore GitHub Plugins",
|
||||||
|
"settings.header.visual.plugin.github.page": "Plugins from GitHub",
|
||||||
|
"settings.option.visual.plugin.github.install.confirm": "Are you sure you want to install {{ repo }}?",
|
||||||
|
"settings.prompt.visual.plugin.github.URL": "Enter the URL of the plugin you want to install",
|
||||||
|
"settings.prompt.visual.plugin.github.success": "Plugin installed successfully, Press OK to relaunch Cider",
|
||||||
|
"settings.notyf.visual.plugin.install.success": "Plugin installed successfully",
|
||||||
|
"settings.notyf.visual.plugin.install.error": "Plugin installation failed",
|
||||||
|
"settings.option.visual.theme.default": "Cider",
|
||||||
|
"settings.option.visual.theme.dark": "Dark",
|
||||||
|
"settings.option.visual.showPersonalInfo": "Show Personal Info",
|
||||||
|
"settings.header.window": "Window",
|
||||||
|
"settings.header.window.description": "Adjust the window settings for Cider.",
|
||||||
|
"settings.option.window.openOnStartup": "Open Cider on Startup",
|
||||||
|
"settings.option.window.openOnStartup.hidden": "Open Hidden",
|
||||||
|
"settings.header.lyrics": "Lyrics",
|
||||||
|
"settings.header.lyrics.description": "Adjust the lyrics settings for Cider.",
|
||||||
|
"settings.option.lyrics.enableMusixmatch": "Enable Musixmatch Lyrics",
|
||||||
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Enable Karaoke Mode (Musixmatch only)",
|
||||||
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch Translation Preferred Language",
|
||||||
|
"settings.option.lyrics.enableYoutubeLyrics": "Enable Youtube Lyrics for Music Videos",
|
||||||
|
"settings.header.connectivity": "Connectivity",
|
||||||
|
"settings.header.connectivity.description": "Adjust the connectivity settings for Cider.",
|
||||||
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
|
"settings.option.connectivity.playbackNotifications": "Playback Notifications",
|
||||||
|
"settings.header.connectivity.discordRPC.cider": "Display as 'Cider'",
|
||||||
|
"settings.header.connectivity.discordRPC.appleMusic": "Display as 'Apple Music'",
|
||||||
|
"settings.option.connectivity.discordRPC.clearOnPause": "Clear Discord Rich Presence on Pause",
|
||||||
|
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Scrobble Delay (%)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Enable Last.fm Now Playing",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (Last.fm)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filter looped track (Last.fm)",
|
||||||
|
"settings.header.debug": "Debug",
|
||||||
|
"settings.option.debug.copy_log": "Copy logs to clipboard",
|
||||||
|
"settings.option.debug.openAppData": "Open Cider Folder",
|
||||||
|
"settings.header.experimental": "Experimental",
|
||||||
|
"settings.header.experimental.description": "Adjust the experimental settings for Cider.",
|
||||||
|
"settings.option.experimental.unknownPlugin": "Unknown Sources",
|
||||||
|
"settings.option.experimental.unknownPlugin.description": "Allow installation of plugins from repos other than the Cider Plugin Repository",
|
||||||
|
"settings.option.experimental.compactUI": "Compact UI",
|
||||||
|
"settings.option.window.close_button_hide": "Close Button Should Hide the Application",
|
||||||
|
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
|
||||||
|
"settings.option.advanced.playlistTrackMapping": "Playlist Track Mapping",
|
||||||
|
"settings.option.advanced.playlistTrackMapping.description": "Enables deep scanning of playlists to determine which tracks are in which playlists. Playlist cache build times can increase significantly.",
|
||||||
|
"settings.option.visual.transparent": "Transparent frame",
|
||||||
|
"settings.option.visual.transparent.description": "Transparent frame (needs Theme Support , requires relaunch)",
|
||||||
|
"spatial.notTurnedOn": "Audio Spatialization is disabled. To use, please enable it first.",
|
||||||
|
"spatial.spatialProperties": "Spatial Properties",
|
||||||
|
"spatial.width": "Width",
|
||||||
|
"spatial.height": "Height",
|
||||||
|
"spatial.depth": "Depth",
|
||||||
|
"spatial.gain": "Gain",
|
||||||
|
"spatial.roomMaterials": "Room Materials",
|
||||||
|
"spatial.roomDimensions": "Room Dimensions",
|
||||||
|
"spatial.roomPositions": "Room Positions",
|
||||||
|
"spatial.setDimensions": "Set Dimensions",
|
||||||
|
"spatial.setPositions": "Set Positions",
|
||||||
|
"spatial.up": "Up",
|
||||||
|
"spatial.front": "Front",
|
||||||
|
"spatial.left": "Left",
|
||||||
|
"spatial.right": "Right",
|
||||||
|
"spatial.back": "Back",
|
||||||
|
"spatial.down": "Down",
|
||||||
|
"spatial.listener": "Listener",
|
||||||
|
"spatial.audioSource": "Audio Source",
|
||||||
|
"settings.header.unfinished": "Unfinished",
|
||||||
|
"remote.web.title": "Cider Remote",
|
||||||
|
"remote.web.description": "Scan the QR code to pair your phone up with this Cider instance",
|
||||||
|
"about.thanks": "Major thanks to the Cider Collective Team and all of our contributors."
|
||||||
|
}
|
|
@ -1,25 +1,15 @@
|
||||||
{ // Base File
|
{
|
||||||
// i18n Info
|
"i18n.languageName": "Español (ES)",
|
||||||
"i18n.languageName": "Español (ES)", // name of language in native language
|
"i18n.languageNameEnglish": "Spanish (Spain)",
|
||||||
"i18n.languageNameEnglish": "Spanish (Spain)", // name of language in English
|
"i18n.category": "main",
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
"i18n.authors": "@j.fl220",
|
||||||
"i18n.authors": "@j.fl220", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
"app.name": "Cider",
|
||||||
|
|
||||||
"date.format": "${d} ${m}, ${y}",
|
"date.format": "${d} ${m}, ${y}",
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "Cancelar",
|
"dialog.cancel": "Cancelar",
|
||||||
"dialog.ok": "Aceptar",
|
"dialog.ok": "Aceptar",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "Actualizando canciones de la biblioteca...",
|
"notification.updatingLibrarySongs": "Actualizando canciones de la biblioteca...",
|
||||||
"notification.updatingLibraryAlbums": "Actualizando álbumes de la biblioteca...",
|
"notification.updatingLibraryAlbums": "Actualizando álbumes de la biblioteca...",
|
||||||
"notification.updatingLibraryArtists": "Actualizando biblioteca de artistas...",
|
"notification.updatingLibraryArtists": "Actualizando biblioteca de artistas...",
|
||||||
|
|
||||||
// Terms
|
|
||||||
"term.appleInc": "Apple Inc.",
|
"term.appleInc": "Apple Inc.",
|
||||||
"term.appleMusic": "Apple Music",
|
"term.appleMusic": "Apple Music",
|
||||||
"term.applePodcasts": "Apple Podcasts",
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
@ -120,13 +110,11 @@
|
||||||
"term.contributors": "Contribuidores",
|
"term.contributors": "Contribuidores",
|
||||||
"term.equalizer": "Equalizador",
|
"term.equalizer": "Equalizador",
|
||||||
"term.reset": "Resetear",
|
"term.reset": "Resetear",
|
||||||
"term.tracks": "canciones", // Assume x amount of tracks. e.g. 50 tracks
|
"term.tracks": "canciones",
|
||||||
"term.videos": "Vídeos",
|
"term.videos": "Vídeos",
|
||||||
"term.menu": "Menú",
|
"term.menu": "Menú",
|
||||||
"term.check": "Comprobar",
|
"term.check": "Comprobar",
|
||||||
"term.aboutArtist": "Más sobre {{artistName}}", // e.g. 'About Doja Cat'
|
"term.aboutArtist": "Más sobre {{artistName}}",
|
||||||
|
|
||||||
// Home
|
|
||||||
"home.title": "Inicio",
|
"home.title": "Inicio",
|
||||||
"home.recentlyPlayed": "Reproducciones recientes",
|
"home.recentlyPlayed": "Reproducciones recientes",
|
||||||
"home.recentlyAdded": "Añadido recientemente",
|
"home.recentlyAdded": "Añadido recientemente",
|
||||||
|
@ -135,14 +123,10 @@
|
||||||
"home.madeForYou": "Hecho para ti",
|
"home.madeForYou": "Hecho para ti",
|
||||||
"home.friendsListeningTo": "Tus amigos están escuchando",
|
"home.friendsListeningTo": "Tus amigos están escuchando",
|
||||||
"home.followedArtists": "Artistas que sigues",
|
"home.followedArtists": "Artistas que sigues",
|
||||||
|
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "Apple Music necesita una suscripción.",
|
"error.appleMusicSubRequired": "Apple Music necesita una suscripción.",
|
||||||
"error.connectionError": "Ha habido un problema al conectar con Apple Music.",
|
"error.connectionError": "Ha habido un problema al conectar con Apple Music.",
|
||||||
"error.noResults": "Sin resultados",
|
"error.noResults": "Sin resultados",
|
||||||
"error.noResults.description": "Intenta otra búsqueda.",
|
"error.noResults.description": "Intenta otra búsqueda.",
|
||||||
|
|
||||||
// Podcasts
|
|
||||||
"podcast.followOnCider": "Seguir en Cider",
|
"podcast.followOnCider": "Seguir en Cider",
|
||||||
"podcast.followedOnCider": "Siguiendo en Cider",
|
"podcast.followedOnCider": "Siguiendo en Cider",
|
||||||
"podcast.subscribeOnItunes": "Suscribirse en iTunes",
|
"podcast.subscribeOnItunes": "Suscribirse en iTunes",
|
||||||
|
@ -151,8 +135,6 @@
|
||||||
"podcast.episodes": "Episodios",
|
"podcast.episodes": "Episodios",
|
||||||
"podcast.playEpisode": "Iniciar Episodio",
|
"podcast.playEpisode": "Iniciar Episodio",
|
||||||
"podcast.website": "Pagina del podcast",
|
"podcast.website": "Pagina del podcast",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "Añadir a la biblioteca",
|
"action.addToLibrary": "Añadir a la biblioteca",
|
||||||
"action.addToLibrary.success": "Añadido a la biblioteca",
|
"action.addToLibrary.success": "Añadido a la biblioteca",
|
||||||
"action.addToLibrary.error": "Error al añadir a la biblioteca",
|
"action.addToLibrary.error": "Error al añadir a la biblioteca",
|
||||||
|
@ -197,92 +179,70 @@
|
||||||
"action.tray.quit": "Salir",
|
"action.tray.quit": "Salir",
|
||||||
"action.tray.show": "Abrir",
|
"action.tray.show": "Abrir",
|
||||||
"action.update": "Actualizar",
|
"action.update": "Actualizar",
|
||||||
|
|
||||||
// Settings - General
|
|
||||||
"settings.header.general": "General",
|
"settings.header.general": "General",
|
||||||
"settings.header.general.description": "Ajustes generales de Cider.",
|
"settings.header.general.description": "Ajustes generales de Cider.",
|
||||||
"settings.option.general.language": "Idioma",
|
"settings.option.general.language": "Idioma",
|
||||||
|
|
||||||
// Language optgroups
|
|
||||||
"settings.option.general.language.main": "Idiomas",
|
"settings.option.general.language.main": "Idiomas",
|
||||||
"settings.option.general.language.fun": "Idiomas divertidos",
|
"settings.option.general.language.fun": "Idiomas divertidos",
|
||||||
"settings.option.general.language.unsorted": "Sin clasificar",
|
"settings.option.general.language.unsorted": "Sin clasificar",
|
||||||
|
"settings.option.general.updateCider": "Actualizar Cider",
|
||||||
// Update Cider
|
|
||||||
"settings.option.general.updateCider": "Actualizar Cider", // Button
|
|
||||||
|
|
||||||
// Settings - Audio
|
|
||||||
"settings.header.audio": "Audio",
|
"settings.header.audio": "Audio",
|
||||||
"settings.header.audio.description": "Ajustes del audio de Cider.",
|
"settings.header.audio.description": "Ajustes del audio de Cider.",
|
||||||
"settings.option.audio.quality": "Calidad de audio", // Dropdown
|
"settings.option.audio.quality": "Calidad de audio",
|
||||||
"settings.header.audio.quality.high": "Alto",
|
"settings.header.audio.quality.high": "Alto",
|
||||||
"settings.header.audio.quality.low": "Bajo",
|
"settings.header.audio.quality.low": "Bajo",
|
||||||
"settings.header.audio.quality.auto": "Auto",
|
"settings.header.audio.quality.auto": "Auto",
|
||||||
"settings.option.audio.seamlessTransition": "Transición de audio perfecta", // Toggle
|
"settings.option.audio.seamlessTransition": "Transición de audio perfecta",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "Activar funciones avanzadas", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality": "Activar funciones avanzadas",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "Habilitar la funcionalidad de AudioContext permitirá funciones de audio extendidas como Normalización de audio, Ecualizadores y Visualizadores; sin embargo, en algunos sistemas esto puede causar interrupciones en las canciones.",
|
"settings.option.audio.enableAdvancedFunctionality.description": "Habilitar la funcionalidad de AudioContext permitirá funciones de audio extendidas como Normalización de audio, Ecualizadores y Visualizadores; sin embargo, en algunos sistemas esto puede causar interrupciones en las canciones.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalizar volumen", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalizar volumen",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normaliza los picos altos de canciones para hacer la experiencia de escucha mejor.",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normaliza los picos altos de canciones para hacer la experiencia de escucha mejor.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Espacialización del audio", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Espacialización del audio",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Espacializa más el audio y conviértelo más 3-dimensional (nota: Esto no es Dolby Atmos)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Espacializa más el audio y conviértelo más 3-dimensional (nota: Esto no es Dolby Atmos)",
|
||||||
|
|
||||||
// Settings - Visual
|
|
||||||
"settings.header.visual": "Visual",
|
"settings.header.visual": "Visual",
|
||||||
"settings.header.visual.description": "Ajustes visuales para Cider.",
|
"settings.header.visual.description": "Ajustes visuales para Cider.",
|
||||||
"settings.option.visual.windowBackgroundStyle": "Estilo del fondo de la ventana", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "Estilo del fondo de la ventana",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "Nada",
|
"settings.header.visual.windowBackgroundStyle.none": "Nada",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "Carátula",
|
"settings.header.visual.windowBackgroundStyle.artwork": "Carátula",
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "Imagen",
|
"settings.header.visual.windowBackgroundStyle.image": "Imagen",
|
||||||
"settings.option.visual.animatedArtwork": "Carátula animada", // Dropdown
|
"settings.option.visual.animatedArtwork": "Carátula animada",
|
||||||
"settings.header.visual.animatedArtwork.always": "Habilitar siempre",
|
"settings.header.visual.animatedArtwork.always": "Habilitar siempre",
|
||||||
"settings.header.visual.animatedArtwork.limited": "Limitado a algunas páginas",
|
"settings.header.visual.animatedArtwork.limited": "Limitado a algunas páginas",
|
||||||
"settings.header.visual.animatedArtwork.disable": "Deshabilitar en todas partes",
|
"settings.header.visual.animatedArtwork.disable": "Deshabilitar en todas partes",
|
||||||
"settings.option.visual.animatedArtworkQuality": "Calidad de la carátula animada", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "Calidad de la carátula animada",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "Bajo",
|
"settings.header.visual.animatedArtworkQuality.low": "Bajo",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "Medio",
|
"settings.header.visual.animatedArtworkQuality.medium": "Medio",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "Alto",
|
"settings.header.visual.animatedArtworkQuality.high": "Alto",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "Muy alto",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Muy alto",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "Extrema",
|
"settings.header.visual.animatedArtworkQuality.extreme": "Extrema",
|
||||||
"settings.option.visual.animatedWindowBackground": "Fondo de la ventana animado", // Toggle
|
"settings.option.visual.animatedWindowBackground": "Fondo de la ventana animado",
|
||||||
"settings.option.visual.hardwareAcceleration": "Aceleración del hardware", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "Aceleración del hardware",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "La app requiere reinicio",
|
"settings.option.visual.hardwareAcceleration.description": "La app requiere reinicio",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "Por defecto",
|
"settings.header.visual.hardwareAcceleration.default": "Por defecto",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.option.visual.showPersonalInfo": "Mostrar información personal",
|
||||||
"settings.option.visual.showPersonalInfo": "Mostrar información personal", // Toggle
|
|
||||||
|
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "Letras",
|
"settings.header.lyrics": "Letras",
|
||||||
"settings.header.lyrics.description": "Ajuste las letras para Cider",
|
"settings.header.lyrics.description": "Ajuste las letras para Cider",
|
||||||
"settings.option.lyrics.enableMusixmatch": "Habilitar las letras de Musixmatch", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "Habilitar las letras de Musixmatch",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "Habilita el modo Karaoke (solo con Musixmatch)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Habilita el modo Karaoke (solo con Musixmatch)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Idioma de traducción por defecto en Musixmatch", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Idioma de traducción por defecto en Musixmatch",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "Habilitar las letras de Youtube para los videos con música", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "Habilitar las letras de Youtube para los videos con música",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "Conectividad",
|
"settings.header.connectivity": "Conectividad",
|
||||||
"settings.header.connectivity.description": "Ajusta la conectividad para Cider.",
|
"settings.header.connectivity.description": "Ajusta la conectividad para Cider.",
|
||||||
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
"settings.option.connectivity.playbackNotifications": "Notificaciones de reproducción", // Toggle
|
"settings.option.connectivity.playbackNotifications": "Notificaciones de reproducción",
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "Mostrar como 'Cider'",
|
"settings.header.connectivity.discordRPC.cider": "Mostrar como 'Cider'",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "Mostrar como 'Apple Music'",
|
"settings.header.connectivity.discordRPC.appleMusic": "Mostrar como 'Apple Music'",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "Quitar Discord Rich Presence en pausa", // Toggle
|
"settings.option.connectivity.discordRPC.clearOnPause": "Quitar Discord Rich Presence en pausa",
|
||||||
"settings.option.connectivity.lastfmScrobble": "Scrobbling Last.fm", // Option to Connect
|
"settings.option.connectivity.lastfmScrobble": "Scrobbling Last.fm",
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "Delay del Scrobbling en Last.fm (%)",
|
"settings.option.connectivity.lastfmScrobble.delay": "Delay del Scrobbling en Last.fm (%)",
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Habilitar 'Escuchando ahora' en Last.fm",
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Habilitar 'Escuchando ahora' en Last.fm",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Eliminar artistas destacados del título de la canción (Last.fm)",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Eliminar artistas destacados del título de la canción (Last.fm)",
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrar pista en bucle (Last.fm)",
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrar pista en bucle (Last.fm)",
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "En pruebas",
|
"settings.header.experimental": "En pruebas",
|
||||||
"settings.header.experimental.description": "Ajustes en pruebas para Cider.",
|
"settings.header.experimental.description": "Ajustes en pruebas para Cider.",
|
||||||
"settings.option.experimental.compactUI": "Interfaz de usuario compacto", // Toggle
|
"settings.option.experimental.compactUI": "Interfaz de usuario compacto",
|
||||||
"settings.option.experimental.close_button_hide": "El botón de cerrar minimizará la aplicación en la bandeja",
|
"settings.option.window.close_button_hide": "El botón de cerrar minimizará la aplicación en la bandeja",
|
||||||
|
|
||||||
// Refer to term.disabled & term.enabled
|
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.notTurnedOn": "La espacialización del audio esta desactivada. Para usarlo primero actívelo.",
|
"spatial.notTurnedOn": "La espacialización del audio esta desactivada. Para usarlo primero actívelo.",
|
||||||
"spatial.spatialProperties": "Propiedades espaciales",
|
"spatial.spatialProperties": "Propiedades espaciales",
|
||||||
"spatial.width": "Ancho",
|
"spatial.width": "Ancho",
|
||||||
|
@ -302,15 +262,9 @@
|
||||||
"spatial.down": "Abajo",
|
"spatial.down": "Abajo",
|
||||||
"spatial.listener": "Oyente",
|
"spatial.listener": "Oyente",
|
||||||
"spatial.audioSource": "Salida del audio",
|
"spatial.audioSource": "Salida del audio",
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "Sin acabar",
|
"settings.header.unfinished": "Sin acabar",
|
||||||
"settings.header.unfinished.description": "Ajustes siendo testeados, no están acabados.",
|
"settings.header.unfinished.description": "Ajustes siendo testeados, no están acabados.",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "Cider Remoto",
|
"remote.web.title": "Cider Remoto",
|
||||||
"remote.web.description": "Escanee el código QR para emparejar su teléfono con su cliente de Cider",
|
"remote.web.description": "Escanee el código QR para emparejar su teléfono con su cliente de Cider",
|
||||||
|
|
||||||
// About
|
|
||||||
"about.thanks": "Muchísimas gracias al equipo de Cider Collective y también a todos nuestros contribuidores."
|
"about.thanks": "Muchísimas gracias al equipo de Cider Collective y también a todos nuestros contribuidores."
|
||||||
}
|
}
|
|
@ -1,25 +1,15 @@
|
||||||
{ // Base File
|
{
|
||||||
|
"i18n.languageName": "Français (CA)",
|
||||||
// i18n Info
|
"i18n.languageNameEnglish": "French (CA)",
|
||||||
"i18n.languageName": "Français (CA)", // name of language in native language
|
"i18n.category": "main",
|
||||||
"i18n.languageNameEnglish": "French (CA)", // name of language in English
|
"i18n.authors": "brock#7527",
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
|
||||||
"i18n.authors": "brock#7527", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
"app.name": "Cider",
|
||||||
|
|
||||||
"date.format": "${m} ${d}, ${y}",
|
"date.format": "${m} ${d}, ${y}",
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "Annuler",
|
"dialog.cancel": "Annuler",
|
||||||
"dialog.ok": "D'accord",
|
"dialog.ok": "D'accord",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "Rafraîchir des chansons...",
|
"notification.updatingLibrarySongs": "Rafraîchir des chansons...",
|
||||||
"notification.updatingLibraryAlbums": "Rafraîchir des albums...",
|
"notification.updatingLibraryAlbums": "Rafraîchir des albums...",
|
||||||
"notification.updatingLibraryArtists": "Rafraîchir des artistes...",
|
"notification.updatingLibraryArtists": "Rafraîchir des artistes...",
|
||||||
// Terms
|
|
||||||
"term.appleInc": "Apple Inc.",
|
"term.appleInc": "Apple Inc.",
|
||||||
"term.appleMusic": "Apple Music",
|
"term.appleMusic": "Apple Music",
|
||||||
"term.applePodcasts": "Apple Podcasts",
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
@ -86,7 +76,7 @@
|
||||||
"term.less": "De moins",
|
"term.less": "De moins",
|
||||||
"term.showMore": "Voir plus",
|
"term.showMore": "Voir plus",
|
||||||
"term.showLess": "Voir moins",
|
"term.showLess": "Voir moins",
|
||||||
"term.topSongs" : "Meilleures chansons",
|
"term.topSongs": "Meilleures chansons",
|
||||||
"term.latestReleases": "Nouvelles sorties",
|
"term.latestReleases": "Nouvelles sorties",
|
||||||
"term.time.added": "Ajouté",
|
"term.time.added": "Ajouté",
|
||||||
"term.time.released": "Publié",
|
"term.time.released": "Publié",
|
||||||
|
@ -114,12 +104,10 @@
|
||||||
"term.contributors": "Contributeurs",
|
"term.contributors": "Contributeurs",
|
||||||
"term.equalizer": "Égaliseur",
|
"term.equalizer": "Égaliseur",
|
||||||
"term.reset": "Réinitialiser",
|
"term.reset": "Réinitialiser",
|
||||||
"term.tracks": "chansons", // Assume x amount of tracks. e.g. 50 tracks
|
"term.tracks": "chansons",
|
||||||
"term.videos": "Vidéos",
|
"term.videos": "Vidéos",
|
||||||
"term.menu": "Menu",
|
"term.menu": "Menu",
|
||||||
"action.showAlbum": "Afficher l'album complet",
|
"action.showAlbum": "Afficher l'album complet",
|
||||||
|
|
||||||
// Home
|
|
||||||
"home.title": "Maison",
|
"home.title": "Maison",
|
||||||
"home.recentlyPlayed": "Joué récemment",
|
"home.recentlyPlayed": "Joué récemment",
|
||||||
"home.recentlyAdded": "Ajouté récemment",
|
"home.recentlyAdded": "Ajouté récemment",
|
||||||
|
@ -128,13 +116,10 @@
|
||||||
"home.madeForYou": "Creér pour toi",
|
"home.madeForYou": "Creér pour toi",
|
||||||
"home.friendsListeningTo": "Amis écoutant",
|
"home.friendsListeningTo": "Amis écoutant",
|
||||||
"home.followedArtists": "Artistes suivis",
|
"home.followedArtists": "Artistes suivis",
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "Apple Music nécessite un abonnement.",
|
"error.appleMusicSubRequired": "Apple Music nécessite un abonnement.",
|
||||||
"error.connectionError": "Un problème est survenu lors de la connexion à Apple Music.",
|
"error.connectionError": "Un problème est survenu lors de la connexion à Apple Music.",
|
||||||
"error.noResults": "Pas de resultats.",
|
"error.noResults": "Pas de resultats.",
|
||||||
"error.noResults.description": "Essayez une nouvelle recherche.",
|
"error.noResults.description": "Essayez une nouvelle recherche.",
|
||||||
|
|
||||||
//Podcasts
|
|
||||||
"podcast.followOnCider": "Suivez sur Cider",
|
"podcast.followOnCider": "Suivez sur Cider",
|
||||||
"podcast.followedOnCider": "Suivi sur Cider",
|
"podcast.followedOnCider": "Suivi sur Cider",
|
||||||
"podcast.subscribeOnItunes": "S'abonner sur iTunes",
|
"podcast.subscribeOnItunes": "S'abonner sur iTunes",
|
||||||
|
@ -143,8 +128,6 @@
|
||||||
"podcast.episodes": "Épisodes",
|
"podcast.episodes": "Épisodes",
|
||||||
"podcast.playEpisode": "Lire l'épisode",
|
"podcast.playEpisode": "Lire l'épisode",
|
||||||
"podcast.website": "Site web du Podcast",
|
"podcast.website": "Site web du Podcast",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "Ajouter à biblio",
|
"action.addToLibrary": "Ajouter à biblio",
|
||||||
"action.addToLibrary.success": "Ajouté à biblio",
|
"action.addToLibrary.success": "Ajouté à biblio",
|
||||||
"action.addToLibrary.error": "Erreur lors de l'ajout à biblio",
|
"action.addToLibrary.error": "Erreur lors de l'ajout à biblio",
|
||||||
|
@ -183,117 +166,92 @@
|
||||||
"action.removeTracks": "Remove ${self.selectedItems.length} tracks from queue",
|
"action.removeTracks": "Remove ${self.selectedItems.length} tracks from queue",
|
||||||
"action.import": "Importer",
|
"action.import": "Importer",
|
||||||
"action.export": "Exporter",
|
"action.export": "Exporter",
|
||||||
|
|
||||||
// Settings - General
|
|
||||||
"settings.header.general": "Réglages généraux",
|
"settings.header.general": "Réglages généraux",
|
||||||
"settings.header.general.description": "Réglez les réglages généraux de Cider.",
|
"settings.header.general.description": "Réglez les réglages généraux de Cider.",
|
||||||
"settings.option.general.language": "Langue",
|
"settings.option.general.language": "Langue",
|
||||||
|
|
||||||
// Language optgroups
|
|
||||||
"settings.option.general.language.main": "Langue",
|
"settings.option.general.language.main": "Langue",
|
||||||
"settings.option.general.language.fun": "Langues amusantes",
|
"settings.option.general.language.fun": "Langues amusantes",
|
||||||
"settings.option.general.language.unsorted": "Non trié",
|
"settings.option.general.language.unsorted": "Non trié",
|
||||||
|
|
||||||
// Settings - Audio
|
|
||||||
"settings.header.audio": "Audio",
|
"settings.header.audio": "Audio",
|
||||||
"settings.header.audio.description": "Réglez les réglages audio de Cider.",
|
"settings.header.audio.description": "Réglez les réglages audio de Cider.",
|
||||||
"settings.option.audio.quality": "Qualité audio", // Dropdown
|
"settings.option.audio.quality": "Qualité audio",
|
||||||
"settings.header.audio.quality.high": "Haut",
|
"settings.header.audio.quality.high": "Haut",
|
||||||
"settings.header.audio.quality.low": "Bas",
|
"settings.header.audio.quality.low": "Bas",
|
||||||
"settings.header.audio.quality.auto": "Auto",
|
"settings.header.audio.quality.auto": "Auto",
|
||||||
"settings.option.audio.seamlessTransition": "Transition audio fluide", // Toggle
|
"settings.option.audio.seamlessTransition": "Transition audio fluide",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "Activer la fonctionnalité avancée", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality": "Activer la fonctionnalité avancée",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "L'activation de la fonctionnalité AudioContext permettra des fonctionnalités audio étendues telles que la normalisation audio, les égaliseurs et les visualiseurs, mais sur certains systèmes, cela peut provoquer des saccades dans les chansons audio.",
|
"settings.option.audio.enableAdvancedFunctionality.description": "L'activation de la fonctionnalité AudioContext permettra des fonctionnalités audio étendues telles que la normalisation audio, les égaliseurs et les visualiseurs, mais sur certains systèmes, cela peut provoquer des saccades dans les chansons audio.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalisation audio", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalisation audio",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalise le volume maximal des pistes individuelles pour créer une expérience d'écoute plus uniforme.",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalise le volume maximal des pistes individuelles pour créer une expérience d'écoute plus uniforme.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialisez l'audio et rendez l'audio plus tridimensionnel (remarque: il ne s'agit pas de Dolby Atmos)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialisez l'audio et rendez l'audio plus tridimensionnel (remarque: il ne s'agit pas de Dolby Atmos)",
|
||||||
// Settings - Visual
|
|
||||||
"settings.header.visual": "Visuel",
|
"settings.header.visual": "Visuel",
|
||||||
"settings.header.visual.description": "Ajustez les réglages visuels de Cider.",
|
"settings.header.visual.description": "Ajustez les réglages visuels de Cider.",
|
||||||
"settings.option.visual.windowBackgroundStyle": "Style d'arrière-plan de la window", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "Style d'arrière-plan de la window",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "Rien",
|
"settings.header.visual.windowBackgroundStyle.none": "Rien",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "Ouvrages d'art",
|
"settings.header.visual.windowBackgroundStyle.artwork": "Ouvrages d'art",
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "Image",
|
"settings.header.visual.windowBackgroundStyle.image": "Image",
|
||||||
"settings.option.visual.animatedArtwork": "Oeuvre animée", // Dropdown
|
"settings.option.visual.animatedArtwork": "Oeuvre animée",
|
||||||
"settings.header.visual.animatedArtwork.always": "Toujours",
|
"settings.header.visual.animatedArtwork.always": "Toujours",
|
||||||
"settings.header.visual.animatedArtwork.limited": "Limité aux pages et aux entrées spéciales",
|
"settings.header.visual.animatedArtwork.limited": "Limité aux pages et aux entrées spéciales",
|
||||||
"settings.header.visual.animatedArtwork.disable": "Désactiver partout",
|
"settings.header.visual.animatedArtwork.disable": "Désactiver partout",
|
||||||
"settings.option.visual.animatedArtworkQuality": "Qualité des illustrations animées", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "Qualité des illustrations animées",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "Bas",
|
"settings.header.visual.animatedArtworkQuality.low": "Bas",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "Moyen",
|
"settings.header.visual.animatedArtworkQuality.medium": "Moyen",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "Haut",
|
"settings.header.visual.animatedArtworkQuality.high": "Haut",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "Très haut",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Très haut",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "Extrême",
|
"settings.header.visual.animatedArtworkQuality.extreme": "Extrême",
|
||||||
"settings.option.visual.animatedWindowBackground": "Fond de window animé", // Toggle
|
"settings.option.visual.animatedWindowBackground": "Fond de window animé",
|
||||||
"settings.option.visual.hardwareAcceleration": "Accélération matérielle", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "Accélération matérielle",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "Nécessite une relance",
|
"settings.option.visual.hardwareAcceleration.description": "Nécessite une relance",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "Défaut",
|
"settings.header.visual.hardwareAcceleration.default": "Défaut",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.option.visual.showPersonalInfo": "Afficher les informations personnelles",
|
||||||
"settings.option.visual.showPersonalInfo": "Afficher les informations personnelles", // Toggle
|
|
||||||
|
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "Paroles",
|
"settings.header.lyrics": "Paroles",
|
||||||
"settings.header.lyrics.description": "Ajustez les réglages des paroles de Cider.",
|
"settings.header.lyrics.description": "Ajustez les réglages des paroles de Cider.",
|
||||||
"settings.option.lyrics.enableMusixmatch": "Activer les paroles de Musixmatch", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "Activer les paroles de Musixmatch",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "Activer le mode karaoké (Musixmatch uniquement)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Activer le mode karaoké (Musixmatch uniquement)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Traduction Musixmatch langue préférée", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Traduction Musixmatch langue préférée",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "Activer les paroles Youtube pour les clips vidéo", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "Activer les paroles Youtube pour les clips vidéo",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "Connectivité",
|
"settings.header.connectivity": "Connectivité",
|
||||||
"settings.header.connectivity.description": "Ajustez les réglages de connectivité pour Cider.",
|
"settings.header.connectivity.description": "Ajustez les réglages de connectivité pour Cider.",
|
||||||
"settings.option.connectivity.discordRPC": "Discord Riche Présence", // Dropdown
|
"settings.option.connectivity.discordRPC": "Discord Riche Présence",
|
||||||
"settings.option.connectivity.playbackNotifications": "Notifications de lecture", // Toggle
|
"settings.option.connectivity.playbackNotifications": "Notifications de lecture",
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "Afficher comme 'Cider'",
|
"settings.header.connectivity.discordRPC.cider": "Afficher comme 'Cider'",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "Afficher comme 'Apple Music'",
|
"settings.header.connectivity.discordRPC.appleMusic": "Afficher comme 'Apple Music'",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "Effacer la Discord Riche Présence en pause", // Toggle
|
"settings.option.connectivity.discordRPC.clearOnPause": "Effacer la Discord Riche Présence en pause",
|
||||||
"settings.option.connectivity.lastfmScrobble": "Scrobbling LastFM", // Option to Connect
|
"settings.option.connectivity.lastfmScrobble": "Scrobbling LastFM",
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "Délai de scrobble LastFM (%)",
|
"settings.option.connectivity.lastfmScrobble.delay": "Délai de scrobble LastFM (%)",
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Activer LastFM en jouer maitenant",
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Activer LastFM en jouer maitenant",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Supprimer les artistes en vedette du titre de la chanson (LastFM)",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Supprimer les artistes en vedette du titre de la chanson (LastFM)",
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrer la chanson en boucle (LastFM)",
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrer la chanson en boucle (LastFM)",
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "Expérimental",
|
"settings.header.experimental": "Expérimental",
|
||||||
"settings.header.experimental.description": "Ajustez les réglages expérimentaux pour Cider.",
|
"settings.header.experimental.description": "Ajustez les réglages expérimentaux pour Cider.",
|
||||||
"settings.option.experimental.compactUI": "UI Compact", // Toggle
|
"settings.option.experimental.compactUI": "UI Compact",
|
||||||
"settings.option.experimental.closeButtonBehaviour": "Comportement du bouton de fermeture",
|
"settings.option.experimental.closeButtonBehaviour": "Comportement du bouton de fermeture",
|
||||||
"settings.option.experimental.closeButtonBehaviour.quit": "Quitter Cider",
|
"settings.option.experimental.closeButtonBehaviour.quit": "Quitter Cider",
|
||||||
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "Réduire à la barre des tâches",
|
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "Réduire à la barre des tâches",
|
||||||
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "Réduire dans le bac",
|
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "Réduire dans le bac",
|
||||||
// Refer to term.disabled & term.enabled
|
"spatial.spatialProperties": "Propriétés spatiales",
|
||||||
|
"spatial.width": "Largeur",
|
||||||
// Spatialization Menu
|
"spatial.height": "Hauteur",
|
||||||
"spatial.spatialProperties" : "Propriétés spatiales",
|
"spatial.depth": "Profondeur",
|
||||||
"spatial.width" : "Largeur",
|
"spatial.gain": "Gagner",
|
||||||
"spatial.height" : "Hauteur",
|
"spatial.roomMaterials": "Matériaux de la chambre",
|
||||||
"spatial.depth" : "Profondeur",
|
"spatial.roomDimensions": "Dimensions de la chambre",
|
||||||
"spatial.gain" : "Gagner",
|
"spatial.roomPositions": "Positions de la chambre",
|
||||||
"spatial.roomMaterials" : "Matériaux de la chambre",
|
"spatial.setDimensions": "Définir les cotes",
|
||||||
"spatial.roomDimensions" : "Dimensions de la chambre",
|
"spatial.setPositions": "Définir les positions",
|
||||||
"spatial.roomPositions" : "Positions de la chambre",
|
"spatial.up": "Haut",
|
||||||
"spatial.setDimensions" : "Définir les cotes",
|
"spatial.front": "Avant",
|
||||||
"spatial.setPositions" : "Définir les positions",
|
"spatial.left": "Gauche",
|
||||||
"spatial.up" : "Haut",
|
"spatial.right": "Droite",
|
||||||
"spatial.front" : "Avant",
|
"spatial.back": "Arrière",
|
||||||
"spatial.left" : "Gauche",
|
"spatial.down": "Bas",
|
||||||
"spatial.right" : "Droite",
|
"spatial.listener": "Auditeur",
|
||||||
"spatial.back" : "Arrière",
|
"spatial.audioSource": "Source audio",
|
||||||
"spatial.down" : "Bas",
|
|
||||||
"spatial.listener" : "Auditeur",
|
|
||||||
"spatial.audioSource" : "Source audio",
|
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "Inachevée",
|
"settings.header.unfinished": "Inachevée",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "Cider Remote",
|
"remote.web.title": "Cider Remote",
|
||||||
"remote.web.description": "Scannez le code QR pour coupler votre téléphone avec cette instance Cider",
|
"remote.web.description": "Scannez le code QR pour coupler votre téléphone avec cette instance Cider",
|
||||||
|
|
||||||
// About
|
|
||||||
"about.thanks": "Un grand merci à l'équipe de Cider Collective et à tous nos contributeurs."
|
"about.thanks": "Un grand merci à l'équipe de Cider Collective et à tous nos contributeurs."
|
||||||
}
|
}
|
301
src/i18n/fr_FR.json
Normal file
|
@ -0,0 +1,301 @@
|
||||||
|
{
|
||||||
|
"i18n.languageName": "Français",
|
||||||
|
"i18n.languageNameEnglish": "French",
|
||||||
|
"i18n.category": "main",
|
||||||
|
"i18n.authors": "@ErwanGit",
|
||||||
|
"app.name": "Cider",
|
||||||
|
"date.format": "${d} ${m} ${y}",
|
||||||
|
"dialog.cancel": "Annuler",
|
||||||
|
"dialog.ok": "OK",
|
||||||
|
"notification.updatingLibrarySongs": "Mise à jour des chansons de la bibliothèque...",
|
||||||
|
"notification.updatingLibraryAlbums": "Mise à jour des albums de la bibliothèque...",
|
||||||
|
"notification.updatingLibraryArtists": "Mise à jour des artistes de la bibliothèque...",
|
||||||
|
"term.appleInc": "Apple Inc.",
|
||||||
|
"term.appleMusic": "Apple Music",
|
||||||
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
"term.itunes": "iTunes",
|
||||||
|
"term.github": "GitHub",
|
||||||
|
"term.discord": "Discord",
|
||||||
|
"term.learnMore": "En savoir plus",
|
||||||
|
"term.accountSettings": "Paramètres du compte",
|
||||||
|
"term.logout": "Déconnexion",
|
||||||
|
"term.login": "Connexion",
|
||||||
|
"term.about": "À propos",
|
||||||
|
"term.privateSession": "Session privée",
|
||||||
|
"term.queue": "File d'attente",
|
||||||
|
"term.history": "Historique",
|
||||||
|
"term.search": "Recherche",
|
||||||
|
"term.library": "Bibliothèque",
|
||||||
|
"term.listenNow": "Écoutez maintenant",
|
||||||
|
"term.browse": "Explorer",
|
||||||
|
"term.radio": "Radio",
|
||||||
|
"term.recentlyAdded": "Ajouté récemment",
|
||||||
|
"term.songs": "Musiques",
|
||||||
|
"term.albums": "Albums",
|
||||||
|
"term.artists": "Artistes",
|
||||||
|
"term.podcasts": "Podcasts",
|
||||||
|
"term.playlists": "Playlists",
|
||||||
|
"term.playlist": "Playlist",
|
||||||
|
"term.newPlaylist": "Nouvelle Playlist",
|
||||||
|
"term.newPlaylistFolder": "Nouveau dossier de playlist",
|
||||||
|
"term.createNewPlaylist": "Créer une nouvelle playlist",
|
||||||
|
"term.createNewPlaylistFolder": "Create New Playlist Folder",
|
||||||
|
"term.deletePlaylist": "Êtes-vous sûr de vouloir supprimer cette playlist ?",
|
||||||
|
"term.play": "Lecture",
|
||||||
|
"term.pause": "Pause",
|
||||||
|
"term.previous": "Précédent",
|
||||||
|
"term.next": "Suivant",
|
||||||
|
"term.shuffle": "Aléatoire",
|
||||||
|
"term.repeat": "Répéter",
|
||||||
|
"term.volume": "Volume",
|
||||||
|
"term.mute": "Rendre muet",
|
||||||
|
"term.unmute": "Ne plus rendre muet",
|
||||||
|
"term.share": "Partager",
|
||||||
|
"term.settings": "Paramètres",
|
||||||
|
"term.share.success": "Copié dans le presse-papier",
|
||||||
|
"term.seeAll": "Voir tout",
|
||||||
|
"term.sortBy": "Trier par",
|
||||||
|
"term.sortBy.album": "Album",
|
||||||
|
"term.sortBy.artist": "Artiste",
|
||||||
|
"term.sortBy.name": "Nom",
|
||||||
|
"term.sortBy.genre": "Genre",
|
||||||
|
"term.sortBy.releaseDate": "Date de sortie",
|
||||||
|
"term.sortBy.duration": "Durée",
|
||||||
|
"term.sortOrder": "A-Z",
|
||||||
|
"term.sortOrder.ascending": "Ascendant",
|
||||||
|
"term.sortOrder.descending": "Descendant",
|
||||||
|
"term.viewAs": "Voir comme",
|
||||||
|
"term.viewAs.coverArt": "Pochette d'album",
|
||||||
|
"term.viewAs.list": "Liste",
|
||||||
|
"term.size": "Taille",
|
||||||
|
"term.size.normal": "Normal",
|
||||||
|
"term.size.compact": "Compacte",
|
||||||
|
"term.enable": "Activer",
|
||||||
|
"term.disable": "Désactiver",
|
||||||
|
"term.enabled": "Activé",
|
||||||
|
"term.disabled": "Désactivé",
|
||||||
|
"term.connect": "Connecter",
|
||||||
|
"term.connecting": "Connexion",
|
||||||
|
"term.disconnect": "Déconnexion",
|
||||||
|
"term.authed": "Authentifié",
|
||||||
|
"term.confirm": "Confirmer ?",
|
||||||
|
"term.more": "Plus",
|
||||||
|
"term.less": "Moins",
|
||||||
|
"term.showMore": "Afficher plus",
|
||||||
|
"term.showLess": "Afficher moins",
|
||||||
|
"term.topSongs": "Meilleurs titres",
|
||||||
|
"term.latestReleases": "Dernières sorties",
|
||||||
|
"term.time.added": "Ajouté",
|
||||||
|
"term.time.released": "Publié",
|
||||||
|
"term.time.updated": "Mis à jour",
|
||||||
|
"term.time.hours": "heures",
|
||||||
|
"term.time.hour": "heure",
|
||||||
|
"term.time.minutes": "minutes",
|
||||||
|
"term.time.minute": "minute",
|
||||||
|
"term.time.seconds": "secondes",
|
||||||
|
"term.time.second": "seconde",
|
||||||
|
"term.fullscreenView": "Vue plein écran",
|
||||||
|
"term.defaultView": "Vue par défaut",
|
||||||
|
"term.spacializedAudioSetting": "Paramètres audio spatialisés",
|
||||||
|
"term.clearAll": "Tout effacer",
|
||||||
|
"term.recentStations": "Stations récentes",
|
||||||
|
"term.language": "Langue",
|
||||||
|
"term.funLanguages": "Amusant",
|
||||||
|
"term.noLyrics": "Chargement... / Paroles non trouvé./ Instrumental.",
|
||||||
|
"term.copyright": "Copyright",
|
||||||
|
"term.rightsReserved": "Tous droits réservés.",
|
||||||
|
"term.sponsor": "Soutenez ce projet",
|
||||||
|
"term.ciderTeam": "Équipe Cider",
|
||||||
|
"term.developer": "Développeur",
|
||||||
|
"term.socialTeam": "Équipe de communication",
|
||||||
|
"term.socials": "Réseaux sociaux",
|
||||||
|
"term.contributors": "Contributeurs",
|
||||||
|
"term.equalizer": "Égaliseur",
|
||||||
|
"term.reset": "Réinitialiser",
|
||||||
|
"term.tracks": "musiques",
|
||||||
|
"term.videos": "Vidéos",
|
||||||
|
"term.menu": "Menu",
|
||||||
|
"term.check": "Vérifier",
|
||||||
|
"term.aboutArtist": "À propos de {{artistName}}",
|
||||||
|
"term.topResult": "Meilleurs résultats",
|
||||||
|
"term.sharedPlaylists": "Playlists partagées",
|
||||||
|
"term.people": "Personnes",
|
||||||
|
"term.newpreset.name": "Nouveau nom du préréglage de l'égaliseur",
|
||||||
|
"term.addedpreset": "Ajout d'un préréglage",
|
||||||
|
"term.deletepreset.warn": "Êtes-vous sûr de vouloir supprimer ce préréglage ?",
|
||||||
|
"term.deletedpreset": "Suppression d'un préréglage",
|
||||||
|
"term.musicVideos": "Vidéos musicales",
|
||||||
|
"term.stations": "Stations",
|
||||||
|
"term.curators": "Curateurs",
|
||||||
|
"term.appleCurators": "Curateurs Apple",
|
||||||
|
"term.radioShows": "Émissions de radio",
|
||||||
|
"term.recordLabels": "Labels de disques",
|
||||||
|
"term.videoExtras": "Vidéos bonus",
|
||||||
|
"term.top": "Top",
|
||||||
|
"home.title": "Accueil",
|
||||||
|
"home.recentlyPlayed": "Joué récemment",
|
||||||
|
"home.recentlyAdded": "Récemment ajouté",
|
||||||
|
"home.artistsFeed": "Votre file d'artistes",
|
||||||
|
"home.artistsFeed.noArtist": "Suivez d'abord certains artistes et leurs dernières sorties seront ici",
|
||||||
|
"home.madeForYou": "Fait pour vous",
|
||||||
|
"home.friendsListeningTo": "Vos amis écoutent",
|
||||||
|
"home.followedArtists": "Artistes suivis",
|
||||||
|
"error.appleMusicSubRequired": "Apple Music nécessite un abonnement.",
|
||||||
|
"error.connectionError": "Il y a eu un problème de connexion à Apple Music.",
|
||||||
|
"error.noResults": "Aucun résultat.",
|
||||||
|
"error.noResults.description": "Essayez une nouvelle recherche.",
|
||||||
|
"podcast.followOnCider": "Suivre sur Cider",
|
||||||
|
"podcast.followedOnCider": "Suivi sur Cider",
|
||||||
|
"podcast.subscribeOnItunes": "Suivre sur iTunes",
|
||||||
|
"podcast.subscribedOnItunes": "Suivi sur iTunes",
|
||||||
|
"podcast.itunesStore": "iTunes Store",
|
||||||
|
"podcast.episodes": "Épisodes",
|
||||||
|
"podcast.playEpisode": "Lire l'épisode",
|
||||||
|
"podcast.website": "Site du podcast",
|
||||||
|
"action.addToLibrary": "Ajouter à la bibliothèque",
|
||||||
|
"action.addToLibrary.success": "Ajouté à la bibliothèque",
|
||||||
|
"action.addToLibrary.error": "Erreur lors de l'ajout à la bibliothèque",
|
||||||
|
"action.removeFromLibrary": "Retirer de la bibliothèque",
|
||||||
|
"action.removeFromLibrary.success": "Retiré de la bibliothèque",
|
||||||
|
"action.addToQueue": "Ajouter à la file d'attente",
|
||||||
|
"action.addToQueue.success": "Ajouté à la file d'attente",
|
||||||
|
"action.addToQueue.error": "Erreur lors de l'ajout à la file d'attente",
|
||||||
|
"action.removeFromQueue": "Retirer de la file d'attente",
|
||||||
|
"action.removeFromQueue.success": "Retiré de la file d'attente",
|
||||||
|
"action.removeFromQueue.error": "Erreur lors du retrait de la file d'attente",
|
||||||
|
"action.createPlaylist": "Créer une nouvelle playlist",
|
||||||
|
"action.addToPlaylist": "Ajouter à une playlist",
|
||||||
|
"action.removeFromPlaylist": "Retirer de la playlist",
|
||||||
|
"action.addToFavorites": "Ajouter aux favoris",
|
||||||
|
"action.follow": "Suivre",
|
||||||
|
"action.follow.success": "Suivi",
|
||||||
|
"action.follow.error": "Erreur lors de l'abonnement",
|
||||||
|
"action.unfollow": "Se désabonner",
|
||||||
|
"action.unfollow.success": "Désabonné",
|
||||||
|
"action.unfollow.error": "Erreur lors du désabonnement",
|
||||||
|
"action.playNext": "Jouer après",
|
||||||
|
"action.playLater": "Jouer plus tard",
|
||||||
|
"action.startRadio": "Lancer la radio",
|
||||||
|
"action.goToArtist": "Aller à l'artiste",
|
||||||
|
"action.goToAlbum": "Aller à l'album",
|
||||||
|
"action.moveToTop": "Haut de page",
|
||||||
|
"action.share": "Partager",
|
||||||
|
"action.rename": "Renommer",
|
||||||
|
"action.love": "Aimer",
|
||||||
|
"action.unlove": "Ne plus aimer",
|
||||||
|
"action.dislike": "Je n'aime pas",
|
||||||
|
"action.undoDislike": "Je n'aime plus",
|
||||||
|
"action.showWebRemoteQR": "Afficher le QR Code de la télécommande à distance",
|
||||||
|
"action.playTracksNext": "Jouer ${app.selectedMediaItems.length} musiques après",
|
||||||
|
"action.playTracksLater": "Jouer ${app.selectedMediaItems.length} musiques plus tard",
|
||||||
|
"action.removeTracks": "Retirer ${self.selectedItems.length} musiques de la file d'attente",
|
||||||
|
"action.import": "Importer",
|
||||||
|
"action.export": "Exporter",
|
||||||
|
"action.showAlbum": "Afficher l'album complet",
|
||||||
|
"action.tray.minimize": "Réduire dans la barre d'outils",
|
||||||
|
"action.tray.quit": "Quitter",
|
||||||
|
"action.tray.show": "Afficher",
|
||||||
|
"action.update": "Mettre à jour",
|
||||||
|
"action.copy": "Copier",
|
||||||
|
"action.newpreset": "Nouveau préréglage...",
|
||||||
|
"action.deletepreset": "Supprimer le préréglage",
|
||||||
|
"settings.header.general": "Général",
|
||||||
|
"settings.header.general.description": "Ajuster les paramètres généraux de Cider.",
|
||||||
|
"settings.option.general.language": "Langue",
|
||||||
|
"settings.option.general.language.main": "Langues",
|
||||||
|
"settings.option.general.language.fun": "Langues amusantes",
|
||||||
|
"settings.option.general.language.unsorted": "Non trié",
|
||||||
|
"settings.option.general.updateCider": "Mettre à jour Cider",
|
||||||
|
"settings.header.audio": "Audio",
|
||||||
|
"settings.header.audio.description": "Ajuster les paramètres audio de Cider.",
|
||||||
|
"settings.option.audio.quality": "Qualité Audio",
|
||||||
|
"settings.header.audio.quality.hireslossless": "Lossless haute qualité (Hi-Res)",
|
||||||
|
"settings.header.audio.quality.hireslossless.description": "(jusqu'à 24 bits/192 kHz)",
|
||||||
|
"settings.header.audio.quality.lossless": "Lossless",
|
||||||
|
"settings.header.audio.quality.lossless.description": "(jusqu'à 24 bits/48 kHz)",
|
||||||
|
"settings.header.audio.quality.enhanced": "Amélioré",
|
||||||
|
"settings.header.audio.quality.high": "Élevée",
|
||||||
|
"settings.header.audio.quality.low": "Faible",
|
||||||
|
"settings.header.audio.quality.auto": "Automatique",
|
||||||
|
"settings.option.audio.seamlessTransition": "Fondu audio transparent",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality": "Activer les fonctions avancées",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.description": "L'activation de la fonctionnalité AudioContext permet d'utiliser des fonctions audio étendues telles que la normalisation du son, les égaliseurs et les visualiseurs. Toutefois, sur certains systèmes, cela peut provoquer des bégaiements dans les pistes audio.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Moteur de traitement psycho-acoustique Cider",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Un processus de traitement qui fait croire à votre cerveau que les fichiers sont de meilleure qualité.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalisation du son",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalise le volume maximal des pistes individuelles pour créer une expérience d'écoute plus uniforme.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spatialisation audio",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialiser l'audio et rendre l'audio plus tridimensionnel (note: Ce n'est pas Dolby Atmos)",
|
||||||
|
"settings.header.visual": "Visuel",
|
||||||
|
"settings.header.visual.description": "Ajuster les paramètres visuels de Cider.",
|
||||||
|
"settings.option.visual.windowBackgroundStyle": "Style d'arrière-plan de la fenêtre",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.none": "Aucun",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.artwork": "Pochette d'album",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.image": "Image",
|
||||||
|
"settings.option.visual.animatedArtwork": "Pochette d'album animée",
|
||||||
|
"settings.header.visual.animatedArtwork.always": "Toujours",
|
||||||
|
"settings.header.visual.animatedArtwork.limited": "Limité aux pages et aux entrées spéciales",
|
||||||
|
"settings.header.visual.animatedArtwork.disable": "Désactiver partout",
|
||||||
|
"settings.option.visual.animatedArtworkQuality": "Qualité de la pochette d'album animée",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.low": "Faible",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.medium": "Moyen",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.high": "Élevée",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Très élevée",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.extreme": "Extrême",
|
||||||
|
"settings.option.visual.animatedWindowBackground": "Arrière-plan de fenêtre animé",
|
||||||
|
"settings.option.visual.hardwareAcceleration": "Accélération matérielle",
|
||||||
|
"settings.option.visual.hardwareAcceleration.description": "Nécessite un relancement",
|
||||||
|
"settings.header.visual.hardwareAcceleration.default": "Défaut",
|
||||||
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
|
"settings.header.visual.theme": "Thème",
|
||||||
|
"settings.option.visual.theme.default": "Cider",
|
||||||
|
"settings.option.visual.theme.dark": "Sombre",
|
||||||
|
"settings.option.visual.showPersonalInfo": "Afficher vos informations personnelles",
|
||||||
|
"settings.header.lyrics": "Paroles",
|
||||||
|
"settings.header.lyrics.description": "Ajuster les paramètres des paroles pour Cider.",
|
||||||
|
"settings.option.lyrics.enableMusixmatch": "Activer les paroles Musixmatch",
|
||||||
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Activer le mode karaoké (Musixmatch seulement)",
|
||||||
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Langue préférée pour les traductions Musixmatch",
|
||||||
|
"settings.option.lyrics.enableYoutubeLyrics": "Activer les paroles YouTube pour les vidéos de musique",
|
||||||
|
"settings.header.connectivity": "Connectivité",
|
||||||
|
"settings.header.connectivity.description": "Ajuster les paramètres de connectivité de Cider.",
|
||||||
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
|
"settings.option.connectivity.playbackNotifications": "Notifications de lecture",
|
||||||
|
"settings.header.connectivity.discordRPC.cider": "Afficher comme 'Cider'",
|
||||||
|
"settings.header.connectivity.discordRPC.appleMusic": "Afficher comme 'Apple Music'",
|
||||||
|
"settings.option.connectivity.discordRPC.clearOnPause": "Désactiver le Discord Rich Presence quand la musique est en pause",
|
||||||
|
"settings.option.connectivity.lastfmScrobble": "Scrobble LastFM",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.delay": "Délai de Scrobble LastFM (%)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Activer la lecture en cours sur LastFM",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Supprimer les artistes en vedette du titre de la chanson (LastFM)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrer les titres en boucle (LastFM)",
|
||||||
|
"settings.header.experimental": "Expérimental",
|
||||||
|
"settings.header.experimental.description": "Ajuster les paramètres expérimentaux de Cider.",
|
||||||
|
"settings.option.experimental.compactUI": "Interface utilisateur compacte",
|
||||||
|
"settings.option.window.close_button_hide": "Le bouton de fermeture doit masquer l'application",
|
||||||
|
"settings.option.experimental.copy_log": "Copier les logs dans le presse-papier",
|
||||||
|
"settings.option.experimental.inline_playlists": "Playlists et albums en ligne",
|
||||||
|
"spatial.notTurnedOn": "La spatialisation audio est désactivée. Pour l'utiliser, vous devez d'abord l'activer.",
|
||||||
|
"spatial.spatialProperties": "Propriétés spatiales",
|
||||||
|
"spatial.width": "Largeur",
|
||||||
|
"spatial.height": "Hauteur",
|
||||||
|
"spatial.depth": "Profondeur",
|
||||||
|
"spatial.gain": "Gain",
|
||||||
|
"spatial.roomMaterials": "Matériaux de la pièce",
|
||||||
|
"spatial.roomDimensions": "Dimensions de la pièce",
|
||||||
|
"spatial.roomPositions": "Positions de la pièce",
|
||||||
|
"spatial.setDimensions": "Définir les dimensions",
|
||||||
|
"spatial.setPositions": "Définir les positions",
|
||||||
|
"spatial.up": "Haut",
|
||||||
|
"spatial.front": "Avant",
|
||||||
|
"spatial.left": "Gauche",
|
||||||
|
"spatial.right": "Droite",
|
||||||
|
"spatial.back": "Retour",
|
||||||
|
"spatial.down": "Bas",
|
||||||
|
"spatial.listener": "Auditeur",
|
||||||
|
"spatial.audioSource": "Source Audio",
|
||||||
|
"settings.header.unfinished": "Inachevée",
|
||||||
|
"remote.web.title": "Cider à distance",
|
||||||
|
"remote.web.description": "Scanner le QR code pour associer votre téléphone avec cette instance Cider",
|
||||||
|
"about.thanks": "Un grand merci à l'équipe de la Cider Collective et à tous nos contributeurs."
|
||||||
|
}
|
|
@ -1,349 +0,0 @@
|
||||||
{ // Base File
|
|
||||||
// i18n Info
|
|
||||||
"i18n.languageName": "Français", // name of language in native language
|
|
||||||
"i18n.languageNameEnglish": "French", // name of language in English
|
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
|
||||||
"i18n.authors": "@ErwanGit", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
|
||||||
|
|
||||||
"date.format": "${d} ${m} ${y}",
|
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "Annuler",
|
|
||||||
"dialog.ok": "OK",
|
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "Mise à jour des chansons de la bibliothèque...",
|
|
||||||
"notification.updatingLibraryAlbums": "Mise à jour des albums de la bibliothèque...",
|
|
||||||
"notification.updatingLibraryArtists": "Mise à jour des artistes de la bibliothèque...",
|
|
||||||
|
|
||||||
// Terms
|
|
||||||
"term.appleInc": "Apple Inc.",
|
|
||||||
"term.appleMusic": "Apple Music",
|
|
||||||
"term.applePodcasts": "Apple Podcasts",
|
|
||||||
"term.itunes": "iTunes",
|
|
||||||
"term.github": "GitHub",
|
|
||||||
"term.discord": "Discord",
|
|
||||||
"term.learnMore": "En savoir plus",
|
|
||||||
"term.accountSettings": "Paramètres du compte",
|
|
||||||
"term.logout": "Déconnexion",
|
|
||||||
"term.login": "Connexion",
|
|
||||||
"term.about": "À propos",
|
|
||||||
"term.privateSession": "Session privée",
|
|
||||||
"term.queue": "File d'attente",
|
|
||||||
"term.history": "Historique",
|
|
||||||
"term.search": "Recherche",
|
|
||||||
"term.library": "Bibliothèque",
|
|
||||||
"term.listenNow": "Écoutez maintenant",
|
|
||||||
"term.browse": "Explorer",
|
|
||||||
"term.radio": "Radio",
|
|
||||||
"term.recentlyAdded": "Ajouté récemment",
|
|
||||||
"term.songs": "Musiques",
|
|
||||||
"term.albums": "Albums",
|
|
||||||
"term.artists": "Artistes",
|
|
||||||
"term.podcasts": "Podcasts",
|
|
||||||
"term.playlists": "Playlists",
|
|
||||||
"term.playlist": "Playlist",
|
|
||||||
"term.newPlaylist": "Nouvelle Playlist",
|
|
||||||
"term.newPlaylistFolder": "Nouveau dossier de playlist",
|
|
||||||
"term.createNewPlaylist": "Créer une nouvelle playlist",
|
|
||||||
"term.createNewPlaylistFolder": "Create New Playlist Folder",
|
|
||||||
"term.deletePlaylist": "Êtes-vous sûr de vouloir supprimer cette playlist ?",
|
|
||||||
"term.play": "Lecture",
|
|
||||||
"term.pause": "Pause",
|
|
||||||
"term.previous": "Précédent",
|
|
||||||
"term.next": "Suivant",
|
|
||||||
"term.shuffle": "Aléatoire",
|
|
||||||
"term.repeat": "Répéter",
|
|
||||||
"term.volume": "Volume",
|
|
||||||
"term.mute": "Rendre muet",
|
|
||||||
"term.unmute": "Ne plus rendre muet",
|
|
||||||
"term.share": "Partager",
|
|
||||||
"term.settings": "Paramètres",
|
|
||||||
"term.share.success": "Copié dans le presse-papier",
|
|
||||||
"term.seeAll": "Voir tout",
|
|
||||||
"term.sortBy": "Trier par",
|
|
||||||
"term.sortBy.album": "Album",
|
|
||||||
"term.sortBy.artist": "Artiste",
|
|
||||||
"term.sortBy.name": "Nom",
|
|
||||||
"term.sortBy.genre": "Genre",
|
|
||||||
"term.sortBy.releaseDate": "Date de sortie",
|
|
||||||
"term.sortBy.duration": "Durée",
|
|
||||||
"term.sortOrder": "A-Z",
|
|
||||||
"term.sortOrder.ascending": "Ascendant",
|
|
||||||
"term.sortOrder.descending": "Descendant",
|
|
||||||
"term.viewAs": "Voir comme",
|
|
||||||
"term.viewAs.coverArt": "Pochette d'album",
|
|
||||||
"term.viewAs.list": "Liste",
|
|
||||||
"term.size": "Taille",
|
|
||||||
"term.size.normal": "Normal",
|
|
||||||
"term.size.compact": "Compacte",
|
|
||||||
"term.enable": "Activer",
|
|
||||||
"term.disable": "Désactiver",
|
|
||||||
"term.enabled": "Activé",
|
|
||||||
"term.disabled": "Désactivé",
|
|
||||||
"term.connect": "Connecter",
|
|
||||||
"term.connecting": "Connexion",
|
|
||||||
"term.disconnect": "Déconnexion",
|
|
||||||
"term.authed": "Authentifié",
|
|
||||||
"term.confirm": "Confirmer ?",
|
|
||||||
"term.more": "Plus",
|
|
||||||
"term.less": "Moins",
|
|
||||||
"term.showMore": "Afficher plus",
|
|
||||||
"term.showLess": "Afficher moins",
|
|
||||||
"term.topSongs": "Meilleurs titres",
|
|
||||||
"term.latestReleases": "Dernières sorties",
|
|
||||||
"term.time.added": "Ajouté",
|
|
||||||
"term.time.released": "Publié",
|
|
||||||
"term.time.updated": "Mis à jour",
|
|
||||||
"term.time.hours": "heures",
|
|
||||||
"term.time.hour": "heure",
|
|
||||||
"term.time.minutes": "minutes",
|
|
||||||
"term.time.minute": "minute",
|
|
||||||
"term.time.seconds": "secondes",
|
|
||||||
"term.time.second": "seconde",
|
|
||||||
"term.fullscreenView": "Vue plein écran",
|
|
||||||
"term.defaultView": "Vue par défaut",
|
|
||||||
"term.spacializedAudioSetting": "Paramètres audio spatialisés",
|
|
||||||
"term.clearAll": "Tout effacer",
|
|
||||||
"term.recentStations": "Stations récentes",
|
|
||||||
"term.language": "Langue",
|
|
||||||
"term.funLanguages": "Amusant",
|
|
||||||
"term.noLyrics": "Chargement... / Paroles non trouvé./ Instrumental.",
|
|
||||||
"term.copyright": "Copyright",
|
|
||||||
"term.rightsReserved": "Tous droits réservés.",
|
|
||||||
"term.sponsor": "Soutenez ce projet",
|
|
||||||
"term.ciderTeam": "Équipe Cider",
|
|
||||||
"term.developer": "Développeur",
|
|
||||||
"term.socialTeam": "Équipe de communication",
|
|
||||||
"term.socials": "Réseaux sociaux",
|
|
||||||
"term.contributors": "Contributeurs",
|
|
||||||
"term.equalizer": "Égaliseur",
|
|
||||||
"term.reset": "Réinitialiser",
|
|
||||||
"term.tracks": "musiques", // Assume x amount of tracks. e.g. 50 tracks
|
|
||||||
"term.videos": "Vidéos",
|
|
||||||
"term.menu": "Menu",
|
|
||||||
"term.check": "Vérifier",
|
|
||||||
"term.aboutArtist": "À propos de {{artistName}}", // e.g. 'About Doja Cat'
|
|
||||||
"term.topResult": "Meilleurs résultats", // Search Results
|
|
||||||
"term.sharedPlaylists": "Playlists partagées", // Search Results
|
|
||||||
"term.people": "Personnes", // Search Results
|
|
||||||
"term.newpreset.name": "Nouveau nom du préréglage de l'égaliseur", // Equalizer Preset
|
|
||||||
"term.addedpreset": "Ajout d'un préréglage",
|
|
||||||
"term.deletepreset.warn": "Êtes-vous sûr de vouloir supprimer ce préréglage ?",
|
|
||||||
"term.deletedpreset": "Suppression d'un préréglage",
|
|
||||||
"term.musicVideos": "Vidéos musicales", // Search page friendlyTypes
|
|
||||||
"term.stations": "Stations",
|
|
||||||
"term.curators": "Curateurs",
|
|
||||||
"term.appleCurators": "Curateurs Apple",
|
|
||||||
"term.radioShows": "Émissions de radio",
|
|
||||||
"term.recordLabels": "Labels de disques",
|
|
||||||
"term.videoExtras": "Vidéos bonus",
|
|
||||||
"term.top": "Top",
|
|
||||||
|
|
||||||
// Home
|
|
||||||
"home.title": "Accueil",
|
|
||||||
"home.recentlyPlayed": "Joué récemment",
|
|
||||||
"home.recentlyAdded": "Récemment ajouté",
|
|
||||||
"home.artistsFeed": "Votre file d'artistes",
|
|
||||||
"home.artistsFeed.noArtist": "Suivez d'abord certains artistes et leurs dernières sorties seront ici",
|
|
||||||
"home.madeForYou": "Fait pour vous",
|
|
||||||
"home.friendsListeningTo": "Vos amis écoutent",
|
|
||||||
"home.followedArtists": "Artistes suivis",
|
|
||||||
|
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "Apple Music nécessite un abonnement.",
|
|
||||||
"error.connectionError": "Il y a eu un problème de connexion à Apple Music.",
|
|
||||||
"error.noResults": "Aucun résultat.",
|
|
||||||
"error.noResults.description": "Essayez une nouvelle recherche.",
|
|
||||||
|
|
||||||
// Podcasts
|
|
||||||
"podcast.followOnCider": "Suivre sur Cider",
|
|
||||||
"podcast.followedOnCider": "Suivi sur Cider",
|
|
||||||
"podcast.subscribeOnItunes": "Suivre sur iTunes",
|
|
||||||
"podcast.subscribedOnItunes": "Suivi sur iTunes",
|
|
||||||
"podcast.itunesStore": "iTunes Store",
|
|
||||||
"podcast.episodes": "Épisodes",
|
|
||||||
"podcast.playEpisode": "Lire l'épisode",
|
|
||||||
"podcast.website": "Site du podcast",
|
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "Ajouter à la bibliothèque",
|
|
||||||
"action.addToLibrary.success": "Ajouté à la bibliothèque",
|
|
||||||
"action.addToLibrary.error": "Erreur lors de l'ajout à la bibliothèque",
|
|
||||||
"action.removeFromLibrary": "Retirer de la bibliothèque",
|
|
||||||
"action.removeFromLibrary.success": "Retiré de la bibliothèque",
|
|
||||||
"action.addToQueue": "Ajouter à la file d'attente",
|
|
||||||
"action.addToQueue.success": "Ajouté à la file d'attente",
|
|
||||||
"action.addToQueue.error": "Erreur lors de l'ajout à la file d'attente",
|
|
||||||
"action.removeFromQueue": "Retirer de la file d'attente",
|
|
||||||
"action.removeFromQueue.success": "Retiré de la file d'attente",
|
|
||||||
"action.removeFromQueue.error": "Erreur lors du retrait de la file d'attente",
|
|
||||||
"action.createPlaylist": "Créer une nouvelle playlist",
|
|
||||||
"action.addToPlaylist": "Ajouter à une playlist",
|
|
||||||
"action.removeFromPlaylist": "Retirer de la playlist",
|
|
||||||
"action.addToFavorites": "Ajouter aux favoris",
|
|
||||||
"action.follow": "Suivre",
|
|
||||||
"action.follow.success": "Suivi",
|
|
||||||
"action.follow.error": "Erreur lors de l'abonnement",
|
|
||||||
"action.unfollow": "Se désabonner",
|
|
||||||
"action.unfollow.success": "Désabonné",
|
|
||||||
"action.unfollow.error": "Erreur lors du désabonnement",
|
|
||||||
"action.playNext": "Jouer après",
|
|
||||||
"action.playLater": "Jouer plus tard",
|
|
||||||
"action.startRadio": "Lancer la radio",
|
|
||||||
"action.goToArtist": "Aller à l'artiste",
|
|
||||||
"action.goToAlbum": "Aller à l'album",
|
|
||||||
"action.moveToTop": "Haut de page",
|
|
||||||
"action.share": "Partager",
|
|
||||||
"action.rename": "Renommer",
|
|
||||||
"action.love": "Aimer",
|
|
||||||
"action.unlove": "Ne plus aimer",
|
|
||||||
"action.dislike": "Je n'aime pas",
|
|
||||||
"action.undoDislike": "Je n'aime plus",
|
|
||||||
"action.showWebRemoteQR": "Afficher le QR Code de la télécommande à distance",
|
|
||||||
"action.playTracksNext": "Jouer ${app.selectedMediaItems.length} musiques après",
|
|
||||||
"action.playTracksLater": "Jouer ${app.selectedMediaItems.length} musiques plus tard",
|
|
||||||
"action.removeTracks": "Retirer ${self.selectedItems.length} musiques de la file d'attente",
|
|
||||||
"action.import": "Importer",
|
|
||||||
"action.export": "Exporter",
|
|
||||||
"action.showAlbum": "Afficher l'album complet",
|
|
||||||
"action.tray.minimize": "Réduire dans la barre d'outils",
|
|
||||||
"action.tray.quit": "Quitter",
|
|
||||||
"action.tray.show": "Afficher",
|
|
||||||
"action.update": "Mettre à jour",
|
|
||||||
"action.copy": "Copier",
|
|
||||||
"action.newpreset": "Nouveau préréglage...", // Equalizer Preset
|
|
||||||
"action.deletepreset": "Supprimer le préréglage",
|
|
||||||
|
|
||||||
// Settings - General
|
|
||||||
"settings.header.general": "Général",
|
|
||||||
"settings.header.general.description": "Ajuster les paramètres généraux de Cider.",
|
|
||||||
"settings.option.general.language": "Langue",
|
|
||||||
|
|
||||||
// Language optgroups
|
|
||||||
"settings.option.general.language.main": "Langues",
|
|
||||||
"settings.option.general.language.fun": "Langues amusantes",
|
|
||||||
"settings.option.general.language.unsorted": "Non trié",
|
|
||||||
|
|
||||||
// Update Cider
|
|
||||||
"settings.option.general.updateCider": "Mettre à jour Cider", // Button
|
|
||||||
|
|
||||||
// Settings - Audio
|
|
||||||
"settings.header.audio": "Audio",
|
|
||||||
"settings.header.audio.description": "Ajuster les paramètres audio de Cider.",
|
|
||||||
"settings.option.audio.quality": "Qualité Audio", // Dropdown
|
|
||||||
"settings.header.audio.quality.hireslossless": "Lossless haute qualité (Hi-Res)",
|
|
||||||
"settings.header.audio.quality.hireslossless.description": "(jusqu'à 24 bits/192 kHz)",
|
|
||||||
"settings.header.audio.quality.lossless": "Lossless",
|
|
||||||
"settings.header.audio.quality.lossless.description": "(jusqu'à 24 bits/48 kHz)",
|
|
||||||
"settings.header.audio.quality.enhanced": "Amélioré",
|
|
||||||
"settings.header.audio.quality.high": "Élevée",
|
|
||||||
"settings.header.audio.quality.low": "Faible",
|
|
||||||
"settings.header.audio.quality.auto": "Automatique",
|
|
||||||
"settings.option.audio.seamlessTransition": "Fondu audio transparent", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "Activer les fonctions avancées", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "L'activation de la fonctionnalité AudioContext permet d'utiliser des fonctions audio étendues telles que la normalisation du son, les égaliseurs et les visualiseurs. Toutefois, sur certains systèmes, cela peut provoquer des bégaiements dans les pistes audio.",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Moteur de traitement psycho-acoustique Cider", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Un processus de traitement qui fait croire à votre cerveau que les fichiers sont de meilleure qualité.",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalisation du son", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalise le volume maximal des pistes individuelles pour créer une expérience d'écoute plus uniforme.",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spatialisation audio", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialiser l'audio et rendre l'audio plus tridimensionnel (note: Ce n'est pas Dolby Atmos)",
|
|
||||||
|
|
||||||
// Settings - Visual
|
|
||||||
"settings.header.visual": "Visuel",
|
|
||||||
"settings.header.visual.description": "Ajuster les paramètres visuels de Cider.",
|
|
||||||
"settings.option.visual.windowBackgroundStyle": "Style d'arrière-plan de la fenêtre", // Toggle
|
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "Aucun",
|
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "Pochette d'album",
|
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "Image",
|
|
||||||
"settings.option.visual.animatedArtwork": "Pochette d'album animée", // Dropdown
|
|
||||||
"settings.header.visual.animatedArtwork.always": "Toujours",
|
|
||||||
"settings.header.visual.animatedArtwork.limited": "Limité aux pages et aux entrées spéciales",
|
|
||||||
"settings.header.visual.animatedArtwork.disable": "Désactiver partout",
|
|
||||||
"settings.option.visual.animatedArtworkQuality": "Qualité de la pochette d'album animée", // Dropdown
|
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "Faible",
|
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "Moyen",
|
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "Élevée",
|
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "Très élevée",
|
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "Extrême",
|
|
||||||
"settings.option.visual.animatedWindowBackground": "Arrière-plan de fenêtre animé", // Toggle
|
|
||||||
"settings.option.visual.hardwareAcceleration": "Accélération matérielle", // Dropdown
|
|
||||||
"settings.option.visual.hardwareAcceleration.description": "Nécessite un relancement",
|
|
||||||
"settings.header.visual.hardwareAcceleration.default": "Défaut",
|
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
|
||||||
"settings.header.visual.theme": "Thème",
|
|
||||||
|
|
||||||
// Settings - Visual - Theme name
|
|
||||||
"settings.option.visual.theme.default": "Cider",
|
|
||||||
"settings.option.visual.theme.dark": "Sombre",
|
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.option.visual.showPersonalInfo": "Afficher vos informations personnelles", // Toggle
|
|
||||||
|
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "Paroles",
|
|
||||||
"settings.header.lyrics.description": "Ajuster les paramètres des paroles pour Cider.",
|
|
||||||
"settings.option.lyrics.enableMusixmatch": "Activer les paroles Musixmatch", // Toggle
|
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "Activer le mode karaoké (Musixmatch seulement)", // Toggle
|
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Langue préférée pour les traductions Musixmatch", // Dropdown
|
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "Activer les paroles YouTube pour les vidéos de musique", // Toggle
|
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "Connectivité",
|
|
||||||
"settings.header.connectivity.description": "Ajuster les paramètres de connectivité de Cider.",
|
|
||||||
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
|
|
||||||
"settings.option.connectivity.playbackNotifications": "Notifications de lecture", // Toggle
|
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "Afficher comme 'Cider'",
|
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "Afficher comme 'Apple Music'",
|
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "Désactiver le Discord Rich Presence quand la musique est en pause", // Toggle
|
|
||||||
"settings.option.connectivity.lastfmScrobble": "Scrobble LastFM", // Option to Connect
|
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "Délai de Scrobble LastFM (%)",
|
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Activer la lecture en cours sur LastFM",
|
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Supprimer les artistes en vedette du titre de la chanson (LastFM)",
|
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrer les titres en boucle (LastFM)",
|
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "Expérimental",
|
|
||||||
"settings.header.experimental.description": "Ajuster les paramètres expérimentaux de Cider.",
|
|
||||||
"settings.option.experimental.compactUI": "Interface utilisateur compacte", // Toggle
|
|
||||||
"settings.option.experimental.close_button_hide": "Le bouton de fermeture doit masquer l'application",
|
|
||||||
"settings.option.experimental.copy_log": "Copier les logs dans le presse-papier",
|
|
||||||
"settings.option.experimental.inline_playlists": "Playlists et albums en ligne",
|
|
||||||
|
|
||||||
// Refer to term.disabled & term.enabled
|
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.notTurnedOn": "La spatialisation audio est désactivée. Pour l'utiliser, vous devez d'abord l'activer.",
|
|
||||||
"spatial.spatialProperties": "Propriétés spatiales",
|
|
||||||
"spatial.width": "Largeur",
|
|
||||||
"spatial.height": "Hauteur",
|
|
||||||
"spatial.depth": "Profondeur",
|
|
||||||
"spatial.gain": "Gain",
|
|
||||||
"spatial.roomMaterials": "Matériaux de la pièce",
|
|
||||||
"spatial.roomDimensions": "Dimensions de la pièce",
|
|
||||||
"spatial.roomPositions": "Positions de la pièce",
|
|
||||||
"spatial.setDimensions": "Définir les dimensions",
|
|
||||||
"spatial.setPositions": "Définir les positions",
|
|
||||||
"spatial.up": "Haut",
|
|
||||||
"spatial.front": "Avant",
|
|
||||||
"spatial.left": "Gauche",
|
|
||||||
"spatial.right": "Droite",
|
|
||||||
"spatial.back": "Retour",
|
|
||||||
"spatial.down": "Bas",
|
|
||||||
"spatial.listener": "Auditeur",
|
|
||||||
"spatial.audioSource": "Source Audio",
|
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "Inachevée",
|
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "Cider à distance",
|
|
||||||
"remote.web.description": "Scanner le QR code pour associer votre téléphone avec cette instance Cider",
|
|
||||||
|
|
||||||
// About
|
|
||||||
"about.thanks": "Un grand merci à l'équipe de la Cider Collective et à tous nos contributeurs."
|
|
||||||
}
|
|
|
@ -1,98 +1,88 @@
|
||||||
{ // Base File
|
{
|
||||||
// i18n Info
|
"i18n.languageName": "हिन्दी",
|
||||||
"i18n.languageName": "English (US)", // name of language in native language
|
"i18n.languageNameEnglish": "Hindi",
|
||||||
"i18n.languageNameEnglish": "English (US)", // name of language in English
|
"i18n.category": "main",
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
"i18n.authors": "@maikirakiwi @vringster",
|
||||||
"i18n.authors": "@maikirakiwi", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
"app.name": "Cider",
|
||||||
|
|
||||||
"date.format": "${m} ${d}, ${y}",
|
"date.format": "${m} ${d}, ${y}",
|
||||||
|
"dialog.cancel": "रोकें",
|
||||||
// Dialogs
|
"dialog.ok": "ठीक है",
|
||||||
"dialog.cancel": "Cancel",
|
"notification.updatingLibrarySongs": "अपडेटिंग लाइब्रेरी के गाने...",
|
||||||
"dialog.ok": "OK",
|
"notification.updatingLibraryAlbums": "अपडेटिंग लाइब्रेरी के एल्बम...",
|
||||||
|
"notification.updatingLibraryArtists": "अपडेटिंग लाइब्रेरी के कलाकार...",
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "Updating library songs...",
|
|
||||||
"notification.updatingLibraryAlbums": "Updating library albums...",
|
|
||||||
"notification.updatingLibraryArtists": "Updating library artists...",
|
|
||||||
|
|
||||||
// Terms
|
|
||||||
"term.appleInc": "Apple Inc.",
|
"term.appleInc": "Apple Inc.",
|
||||||
"term.appleMusic": "Apple Music",
|
"term.appleMusic": "Apple Music",
|
||||||
"term.applePodcasts": "Apple Podcasts",
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
"term.itunes": "iTunes",
|
"term.itunes": "iTunes",
|
||||||
"term.github": "GitHub",
|
"term.github": "GitHub",
|
||||||
"term.discord": "Discord",
|
"term.discord": "Discord",
|
||||||
"term.learnMore": "Learn more",
|
"term.learnMore": "और जानिए",
|
||||||
"term.accountSettings": "Account Settings",
|
"term.accountSettings": "खाता सेटिंग्स",
|
||||||
"term.logout": "Logout",
|
"term.logout": "लॉग आऊट",
|
||||||
"term.login": "Log In",
|
"term.login": "लॉग इन",
|
||||||
"term.about": "About",
|
"term.about": "के बारे में",
|
||||||
"term.privateSession": "Private Session",
|
"term.privateSession": "गुप्त सैशन",
|
||||||
"term.queue": "Queue",
|
"term.queue": "कतार",
|
||||||
"term.history": "History",
|
"term.history": "हिस्टरी",
|
||||||
"term.search": "Search",
|
"term.search": "खोज करें",
|
||||||
"term.library": "Library",
|
"term.library": "लाइब्रेरी",
|
||||||
"term.listenNow": "Listen Now",
|
"term.listenNow": "अभी सुनियें",
|
||||||
"term.browse": "Browse",
|
"term.browse": "ब्राउज़",
|
||||||
"term.radio": "Radio",
|
"term.radio": "रेडियो",
|
||||||
"term.recentlyAdded": "Recently Added",
|
"term.recentlyAdded": "हाल ही में जोड़ें हुए",
|
||||||
"term.songs": "Songs",
|
"term.songs": "गाने",
|
||||||
"term.albums": "Albums",
|
"term.albums": "एल्बम",
|
||||||
"term.artists": "Artists",
|
"term.artists": "कलाकार",
|
||||||
"term.podcasts": "Podcasts",
|
"term.podcasts": "पॉडकास्टस",
|
||||||
"term.playlists": "Playlists",
|
"term.playlists": "प्लेलिस्ट्स",
|
||||||
"term.playlist": "Playlist",
|
"term.playlist": "प्लेलिस्ट",
|
||||||
"term.newPlaylist": "New Playlist",
|
"term.newPlaylist": "नई प्लेलिस्ट्स",
|
||||||
"term.newPlaylistFolder": "New Playlist Folder",
|
"term.newPlaylistFolder": "नई प्लेलिस्ट्स फ़ोल्डर",
|
||||||
"term.createNewPlaylist": "Create New Playlist",
|
"term.createNewPlaylist": "नई प्लेलिस्ट्स बनाएं",
|
||||||
"term.createNewPlaylistFolder": "Create New Playlist Folder",
|
"term.createNewPlaylistFolder": "नई प्लेलिस्ट्स फ़ोल्डर बनाएं",
|
||||||
"term.deletePlaylist": "Are you sure you want to delete this playlist?",
|
"term.deletePlaylist": "क्या आप वाकई इस प्लेलिस्ट को हटाना चाहते हैं",
|
||||||
"term.play": "Play",
|
"term.play": "प्ले",
|
||||||
"term.pause": "Pause",
|
"term.pause": "ठहराव",
|
||||||
"term.previous": "Previous",
|
"term.previous": "पिछले",
|
||||||
"term.next": "Next",
|
"term.next": "अगले",
|
||||||
"term.shuffle": "Shuffle",
|
"term.shuffle": "शफल",
|
||||||
"term.repeat": "Repeat",
|
"term.repeat": "रिपीट",
|
||||||
"term.volume": "Volume",
|
"term.volume": "वॉल्यूम",
|
||||||
"term.mute": "Mute",
|
"term.mute": "म्यूट",
|
||||||
"term.unmute": "Unmute",
|
"term.unmute": "अनम्यूट",
|
||||||
"term.share": "Share",
|
"term.share": "शेयर",
|
||||||
"term.share.success": "Copied to clipboard",
|
"term.share.success": "क्लिपबोर्ड में कॉपीड",
|
||||||
"term.settings": "Settings",
|
"term.settings": "सेटिंग्स",
|
||||||
"term.seeAll": "See All",
|
"term.seeAll": "सभी देखें",
|
||||||
"term.sortBy": "Sort By",
|
"term.sortBy": "सॉर्ट बाये",
|
||||||
"term.sortBy.album": "Album",
|
"term.sortBy.album": "एल्बम",
|
||||||
"term.sortBy.artist": "Artist",
|
"term.sortBy.artist": "कलाकार",
|
||||||
"term.sortBy.name": "Name",
|
"term.sortBy.name": "नाम",
|
||||||
"term.sortBy.genre": "Genre",
|
"term.sortBy.genre": "शैली",
|
||||||
"term.sortBy.releaseDate": "Release Date",
|
"term.sortBy.releaseDate": "रिलीज़ की तारीख",
|
||||||
"term.sortBy.duration": "Duration",
|
"term.sortBy.duration": "लंबाई",
|
||||||
"term.sortOrder": "A-Z",
|
"term.sortOrder": "ए-ज़ी",
|
||||||
"term.sortOrder.ascending": "Ascending",
|
"term.sortOrder.ascending": "असेंडिंग",
|
||||||
"term.sortOrder.descending": "Descending",
|
"term.sortOrder.descending": "डिसेंडिंग",
|
||||||
"term.viewAs": "View As",
|
"term.viewAs": "वियू ऐस",
|
||||||
"term.viewAs.coverArt": "Cover Art",
|
"term.viewAs.coverArt": "कवर आर्ट",
|
||||||
"term.viewAs.list": "List",
|
"term.viewAs.list": "सूची",
|
||||||
"term.size": "Size",
|
"term.size": "साइज़",
|
||||||
"term.size.normal": "Normal",
|
"term.size.normal": "साधारण",
|
||||||
"term.size.compact": "Compact",
|
"term.size.compact": "पिचका हुआ",
|
||||||
"term.enable": "Enable",
|
"term.enable": "खोलें",
|
||||||
"term.disable": "Disable",
|
"term.disable": "बंद",
|
||||||
"term.enabled": "Enabled",
|
"term.enabled": "खोला हुआ",
|
||||||
"term.disabled": "Disabled",
|
"term.disabled": "बंद हुआ हुआ",
|
||||||
"term.connect": "Connect",
|
"term.connect": "कनेक्ट",
|
||||||
"term.connecting": "Connecting",
|
"term.connecting": "कनेक्टिंग",
|
||||||
"term.disconnect": "Disconnect",
|
"term.disconnect": "डिसकनेक्ट",
|
||||||
"term.authed": "Authed",
|
"term.authed": "प्रमाणित",
|
||||||
"term.confirm": "Confirm?",
|
"term.confirm": "पक्का?",
|
||||||
"term.more": "More",
|
"term.more": "ज़्यादा",
|
||||||
"term.less": "Less",
|
"term.less": "कम",
|
||||||
"term.showMore": "Show more",
|
"term.showMore": "दिखाएं ज़्यादा",
|
||||||
"term.showLess": "Show less",
|
"term.showLess": "दिखाएं कम",
|
||||||
"term.topSongs": "Top Songs",
|
"term.topSongs": "Top Songs",
|
||||||
"term.latestReleases": "Latest Releases",
|
"term.latestReleases": "Latest Releases",
|
||||||
"term.time.added": "Added",
|
"term.time.added": "Added",
|
||||||
|
@ -122,19 +112,19 @@
|
||||||
"term.contributors": "Contributors",
|
"term.contributors": "Contributors",
|
||||||
"term.equalizer": "Equalizer",
|
"term.equalizer": "Equalizer",
|
||||||
"term.reset": "Reset",
|
"term.reset": "Reset",
|
||||||
"term.tracks": "tracks", // Assume x amount of tracks. e.g. 50 tracks
|
"term.tracks": "tracks",
|
||||||
"term.videos": "Videos",
|
"term.videos": "Videos",
|
||||||
"term.menu": "Menu",
|
"term.menu": "Menu",
|
||||||
"term.check": "Check",
|
"term.check": "Check",
|
||||||
"term.aboutArtist": "About {{artistName}}", // e.g. 'About Doja Cat'
|
"term.aboutArtist": "About {{artistName}}",
|
||||||
"term.topResult": "Top Result", // Search Results
|
"term.topResult": "Top Result",
|
||||||
"term.sharedPlaylists": "Shared Playlists", // Search Results
|
"term.sharedPlaylists": "Shared Playlists",
|
||||||
"term.people": "People", // Search Results
|
"term.people": "People",
|
||||||
"term.newpreset.name": "New EQ Preset Name", // Equalizer Preset
|
"term.newpreset.name": "नई EQ Preset Name",
|
||||||
"term.addedpreset": "Added Preset",
|
"term.addedpreset": "Added Preset",
|
||||||
"term.deletepreset.warn": "Are you sure you want to delete this preset?",
|
"term.deletepreset.warn": "Are you sure you want to delete this preset?",
|
||||||
"term.deletedpreset": "Removed preset",
|
"term.deletedpreset": "Removed preset",
|
||||||
"term.musicVideos": "Music Videos", // Search page friendlyTypes
|
"term.musicVideos": "Music Videos",
|
||||||
"term.stations": "Stations",
|
"term.stations": "Stations",
|
||||||
"term.curators": "Curators",
|
"term.curators": "Curators",
|
||||||
"term.appleCurators": "Apple Curators",
|
"term.appleCurators": "Apple Curators",
|
||||||
|
@ -142,8 +132,6 @@
|
||||||
"term.recordLabels": "Record Labels",
|
"term.recordLabels": "Record Labels",
|
||||||
"term.videoExtras": "Video Extras",
|
"term.videoExtras": "Video Extras",
|
||||||
"term.top": "Top",
|
"term.top": "Top",
|
||||||
|
|
||||||
// Home
|
|
||||||
"home.title": "Home",
|
"home.title": "Home",
|
||||||
"home.recentlyPlayed": "Recently Played",
|
"home.recentlyPlayed": "Recently Played",
|
||||||
"home.recentlyAdded": "Recently Added",
|
"home.recentlyAdded": "Recently Added",
|
||||||
|
@ -152,14 +140,10 @@
|
||||||
"home.madeForYou": "Made For You",
|
"home.madeForYou": "Made For You",
|
||||||
"home.friendsListeningTo": "Friends Listening To",
|
"home.friendsListeningTo": "Friends Listening To",
|
||||||
"home.followedArtists": "Followed Artists",
|
"home.followedArtists": "Followed Artists",
|
||||||
|
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "Apple Music requires a subscription.",
|
"error.appleMusicSubRequired": "Apple Music requires a subscription.",
|
||||||
"error.connectionError": "There was a problem connecting to Apple Music.",
|
"error.connectionError": "There was a problem connecting to Apple Music.",
|
||||||
"error.noResults": "No Results.",
|
"error.noResults": "No Results.",
|
||||||
"error.noResults.description": "Try a new search.",
|
"error.noResults.description": "Try a नई search.",
|
||||||
|
|
||||||
// Podcasts
|
|
||||||
"podcast.followOnCider": "Follow On Cider",
|
"podcast.followOnCider": "Follow On Cider",
|
||||||
"podcast.followedOnCider": "Following On Cider",
|
"podcast.followedOnCider": "Following On Cider",
|
||||||
"podcast.subscribeOnItunes": "Subscribe On iTunes",
|
"podcast.subscribeOnItunes": "Subscribe On iTunes",
|
||||||
|
@ -168,8 +152,6 @@
|
||||||
"podcast.episodes": "Episodes",
|
"podcast.episodes": "Episodes",
|
||||||
"podcast.playEpisode": "Play Episode",
|
"podcast.playEpisode": "Play Episode",
|
||||||
"podcast.website": "Podcast Website",
|
"podcast.website": "Podcast Website",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "Add to Library",
|
"action.addToLibrary": "Add to Library",
|
||||||
"action.addToLibrary.success": "Added to Library",
|
"action.addToLibrary.success": "Added to Library",
|
||||||
"action.addToLibrary.error": "Error Adding to Library",
|
"action.addToLibrary.error": "Error Adding to Library",
|
||||||
|
@ -181,7 +163,7 @@
|
||||||
"action.removeFromQueue": "Remove from Queue",
|
"action.removeFromQueue": "Remove from Queue",
|
||||||
"action.removeFromQueue.success": "Removed from Queue",
|
"action.removeFromQueue.success": "Removed from Queue",
|
||||||
"action.removeFromQueue.error": "Error Removing from Queue",
|
"action.removeFromQueue.error": "Error Removing from Queue",
|
||||||
"action.createPlaylist": "Create a New Playlist",
|
"action.createPlaylist": "बनाएं a नई Playlist",
|
||||||
"action.addToPlaylist": "Add to Playlist",
|
"action.addToPlaylist": "Add to Playlist",
|
||||||
"action.removeFromPlaylist": "Remove from Playlist",
|
"action.removeFromPlaylist": "Remove from Playlist",
|
||||||
"action.addToFavorites": "Add to Favorites",
|
"action.addToFavorites": "Add to Favorites",
|
||||||
|
@ -209,36 +191,28 @@
|
||||||
"action.removeTracks": "Remove ${self.selectedItems.length} tracks from queue",
|
"action.removeTracks": "Remove ${self.selectedItems.length} tracks from queue",
|
||||||
"action.import": "Import",
|
"action.import": "Import",
|
||||||
"action.export": "Export",
|
"action.export": "Export",
|
||||||
"action.showAlbum": "Show Complete Album",
|
"action.showAlbum": "दिखाएं Complete Album",
|
||||||
"action.tray.minimize": "Minimize to Tray",
|
"action.tray.minimize": "Minimize to Tray",
|
||||||
"action.tray.quit": "Quit",
|
"action.tray.quit": "Quit",
|
||||||
"action.tray.show": "Show",
|
"action.tray.show": "दिखाएं",
|
||||||
"action.update": "Update",
|
"action.update": "Update",
|
||||||
"action.copy": "Copy",
|
"action.copy": "Copy",
|
||||||
"action.newpreset": "New Preset...", // Equalizer Preset
|
"action.newpreset": "नई Preset...",
|
||||||
"action.deletepreset": "Delete Preset",
|
"action.deletepreset": "Delete Preset",
|
||||||
|
|
||||||
// Settings - General
|
|
||||||
"settings.header.general": "General",
|
"settings.header.general": "General",
|
||||||
"settings.header.general.description": "Adjust the general settings for Cider.",
|
"settings.header.general.description": "Adjust the general settings for Cider.",
|
||||||
"settings.option.general.language": "Language",
|
"settings.option.general.language": "Language",
|
||||||
|
|
||||||
// Language optgroups
|
|
||||||
"settings.option.general.language.main": "Languages",
|
"settings.option.general.language.main": "Languages",
|
||||||
"settings.option.general.language.fun": "Fun Languages",
|
"settings.option.general.language.fun": "Fun Languages",
|
||||||
"settings.option.general.language.unsorted": "Unsorted",
|
"settings.option.general.language.unsorted": "Unsorted",
|
||||||
|
"settings.option.general.updateCider": "Update Cider",
|
||||||
// Update Cider
|
"settings.option.general.updateCider.branch": "Cider Update Branch",
|
||||||
"settings.option.general.updateCider": "Update Cider", // Button. Refer to term.check for the check button
|
|
||||||
"settings.option.general.updateCider.branch": "Cider Update Branch", // Dropdown
|
|
||||||
"settings.option.general.updateCider.branch.description": "Select the branch to update Cider to",
|
"settings.option.general.updateCider.branch.description": "Select the branch to update Cider to",
|
||||||
"settings.option.general.updateCider.branch.main": "Stable",
|
"settings.option.general.updateCider.branch.main": "Stable",
|
||||||
"settings.option.general.updateCider.branch.develop": "Development",
|
"settings.option.general.updateCider.branch.develop": "Development",
|
||||||
|
|
||||||
// Settings - Audio
|
|
||||||
"settings.header.audio": "Audio",
|
"settings.header.audio": "Audio",
|
||||||
"settings.header.audio.description": "Adjust the audio settings for Cider.",
|
"settings.header.audio.description": "Adjust the audio settings for Cider.",
|
||||||
"settings.option.audio.quality": "Audio Quality", // Dropdown
|
"settings.option.audio.quality": "Audio Quality",
|
||||||
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
|
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
|
||||||
"settings.header.audio.quality.hireslossless.description": "up to 24-bit/192 kHz",
|
"settings.header.audio.quality.hireslossless.description": "up to 24-bit/192 kHz",
|
||||||
"settings.header.audio.quality.lossless": "Lossless",
|
"settings.header.audio.quality.lossless": "Lossless",
|
||||||
|
@ -247,84 +221,68 @@
|
||||||
"settings.header.audio.quality.high.description": "256 kbps",
|
"settings.header.audio.quality.high.description": "256 kbps",
|
||||||
"settings.header.audio.quality.standard": "Standard",
|
"settings.header.audio.quality.standard": "Standard",
|
||||||
"settings.header.audio.quality.standard.description": "64 kbps",
|
"settings.header.audio.quality.standard.description": "64 kbps",
|
||||||
"settings.option.audio.seamlessTransition": "Seamless Audio Transition", // Toggle
|
"settings.option.audio.seamlessTransition": "Seamless Audio Transition",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "Enable Advanced Functionality", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality": "Enable Advanced Functionality",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalization , Equalizers and Visualizers, however on some systems this may cause stuttering in audio tracks.",
|
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalization , Equalizers and Visualizers, however on some systems this may cause stuttering in audio tracks.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively | Designed by Maikiwi.",
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)",
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standard",
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standard",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggressive",
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggressive",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Normalization", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Normalization",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizes peak volume for individual tracks to create a more uniform listening experience.",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizes peak volume for individual tracks to create a more uniform listening experience.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)",
|
||||||
|
|
||||||
// Settings - Visual
|
|
||||||
"settings.header.visual": "Visual",
|
"settings.header.visual": "Visual",
|
||||||
"settings.header.visual.description": "Adjust the visual settings for Cider.",
|
"settings.header.visual.description": "Adjust the visual settings for Cider.",
|
||||||
"settings.option.visual.windowBackgroundStyle": "Window Background Style", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "Window Background Style",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "None",
|
"settings.header.visual.windowBackgroundStyle.none": "None",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "Artwork",
|
"settings.header.visual.windowBackgroundStyle.artwork": "Artwork",
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "Image",
|
"settings.header.visual.windowBackgroundStyle.image": "Image",
|
||||||
"settings.option.visual.animatedArtwork": "Animated Artwork", // Dropdown
|
"settings.option.visual.animatedArtwork": "Animated Artwork",
|
||||||
"settings.header.visual.animatedArtwork.always": "Always",
|
"settings.header.visual.animatedArtwork.always": "Always",
|
||||||
"settings.header.visual.animatedArtwork.limited": "Limited to pages and special entries",
|
"settings.header.visual.animatedArtwork.limited": "Limited to pages and special entries",
|
||||||
"settings.header.visual.animatedArtwork.disable": "Disable everywhere",
|
"settings.header.visual.animatedArtwork.disable": "Disable everywhere",
|
||||||
"settings.option.visual.animatedArtworkQuality": "Animated Artwork Quality", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "Animated Artwork Quality",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "Low",
|
"settings.header.visual.animatedArtworkQuality.low": "Low",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "Medium",
|
"settings.header.visual.animatedArtworkQuality.medium": "Medium",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "High",
|
"settings.header.visual.animatedArtworkQuality.high": "High",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "Very High",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Very High",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "Extreme",
|
"settings.header.visual.animatedArtworkQuality.extreme": "Extreme",
|
||||||
"settings.option.visual.animatedWindowBackground": "Animated Window Background", // Toggle
|
"settings.option.visual.animatedWindowBackground": "Animated Window Background",
|
||||||
"settings.option.visual.hardwareAcceleration": "Hardware Acceleration", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "Hardware Acceleration",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "Requires relaunch",
|
"settings.option.visual.hardwareAcceleration.description": "Requires relaunch",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "Default",
|
"settings.header.visual.hardwareAcceleration.default": "Default",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
"settings.header.visual.theme": "Theme",
|
"settings.header.visual.theme": "Theme",
|
||||||
|
|
||||||
// Settings - Visual - Theme name
|
|
||||||
"settings.option.visual.theme.default": "Cider",
|
"settings.option.visual.theme.default": "Cider",
|
||||||
"settings.option.visual.theme.dark": "Dark",
|
"settings.option.visual.theme.dark": "Dark",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.option.visual.showPersonalInfo": "दिखाएं Personal Info",
|
||||||
"settings.option.visual.showPersonalInfo": "Show Personal Info", // Toggle
|
|
||||||
|
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "Lyrics",
|
"settings.header.lyrics": "Lyrics",
|
||||||
"settings.header.lyrics.description": "Adjust the lyrics settings for Cider.",
|
"settings.header.lyrics.description": "Adjust the lyrics settings for Cider.",
|
||||||
"settings.option.lyrics.enableMusixmatch": "Enable Musixmatch Lyrics", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "Enable Musixmatch Lyrics",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "Enable Karaoke Mode (Musixmatch only)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Enable Karaoke Mode (Musixmatch only)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch Translation Preferred Language", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch Translation Preferred Language",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "Enable Youtube Lyrics for Music Videos", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "Enable Youtube Lyrics for Music Videos",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "Connectivity",
|
"settings.header.connectivity": "Connectivity",
|
||||||
"settings.header.connectivity.description": "Adjust the connectivity settings for Cider.",
|
"settings.header.connectivity.description": "Adjust the connectivity settings for Cider.",
|
||||||
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
"settings.option.connectivity.playbackNotifications": "Playback Notifications", // Toggle
|
"settings.option.connectivity.playbackNotifications": "Playback Notifications",
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "Display as 'Cider'",
|
"settings.header.connectivity.discordRPC.cider": "Display as 'Cider'",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "Display as 'Apple Music'",
|
"settings.header.connectivity.discordRPC.appleMusic": "Display as 'Apple Music'",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "Clear Discord Rich Presence on Pause", // Toggle
|
"settings.option.connectivity.discordRPC.clearOnPause": "Clear Discord Rich Presence on Pause",
|
||||||
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling", // Option to Connect
|
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling",
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Scrobble Delay (%)",
|
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Scrobble Delay (%)",
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Enable Last.fm Now Playing",
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Enable Last.fm Now Playing",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (Last.fm)",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (Last.fm)",
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filter looped track (Last.fm)",
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filter looped track (Last.fm)",
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "Experimental",
|
"settings.header.experimental": "Experimental",
|
||||||
"settings.header.experimental.description": "Adjust the experimental settings for Cider.",
|
"settings.header.experimental.description": "Adjust the experimental settings for Cider.",
|
||||||
"settings.option.experimental.compactUI": "Compact UI", // Toggle
|
"settings.option.experimental.compactUI": "Compact UI",
|
||||||
"settings.option.experimental.close_button_hide": "Close Button Should Hide the Application",
|
"settings.option.window.close_button_hide": "Close Button Should Hide the Application",
|
||||||
"settings.option.experimental.copy_log": "Copy logs to clipboard",
|
"settings.option.experimental.copy_log": "Copy logs to clipboard",
|
||||||
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
|
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
|
||||||
|
|
||||||
// Refer to term.disabled & term.enabled
|
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.notTurnedOn": "Audio Spatialization is disabled. To use, please enable it first.",
|
"spatial.notTurnedOn": "Audio Spatialization is disabled. To use, please enable it first.",
|
||||||
"spatial.spatialProperties": "Spatial Properties",
|
"spatial.spatialProperties": "Spatial Properties",
|
||||||
"spatial.width": "Width",
|
"spatial.width": "Width",
|
||||||
|
@ -344,14 +302,8 @@
|
||||||
"spatial.down": "Down",
|
"spatial.down": "Down",
|
||||||
"spatial.listener": "Listener",
|
"spatial.listener": "Listener",
|
||||||
"spatial.audioSource": "Audio Source",
|
"spatial.audioSource": "Audio Source",
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "Unfinished",
|
"settings.header.unfinished": "Unfinished",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"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",
|
||||||
|
|
||||||
// About
|
|
||||||
"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."
|
||||||
}
|
}
|
|
@ -1,25 +1,15 @@
|
||||||
{ // Base File
|
{
|
||||||
// i18n Info
|
"i18n.languageName": "Magyar",
|
||||||
"i18n.languageName": "Magyar", // name of language in native language
|
"i18n.languageNameEnglish": "Hungarian",
|
||||||
"i18n.languageNameEnglish": "Hungarian", // name of language in English
|
"i18n.category": "main",
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
"i18n.authors": "@Greenoliv @Amaru @BenjaminStonawski",
|
||||||
"i18n.authors": "@Greenoliv @Amaru @BenjaminStonawski", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
"app.name": "Cider",
|
||||||
|
|
||||||
"date.format": "${m} ${d}, ${y}",
|
"date.format": "${m} ${d}, ${y}",
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "Mégsem",
|
"dialog.cancel": "Mégsem",
|
||||||
"dialog.ok": "OK",
|
"dialog.ok": "OK",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "Zenekönyvtár frissítése...",
|
"notification.updatingLibrarySongs": "Zenekönyvtár frissítése...",
|
||||||
"notification.updatingLibraryAlbums": "Albumok frissítése...",
|
"notification.updatingLibraryAlbums": "Albumok frissítése...",
|
||||||
"notification.updatingLibraryArtists": "Előadók frissítése...",
|
"notification.updatingLibraryArtists": "Előadók frissítése...",
|
||||||
|
|
||||||
// Terms
|
|
||||||
"term.appleInc": "Apple Inc.",
|
"term.appleInc": "Apple Inc.",
|
||||||
"term.appleMusic": "Apple Music",
|
"term.appleMusic": "Apple Music",
|
||||||
"term.applePodcasts": "Apple Podcastok",
|
"term.applePodcasts": "Apple Podcastok",
|
||||||
|
@ -33,6 +23,7 @@
|
||||||
"term.about": "Névjegy",
|
"term.about": "Névjegy",
|
||||||
"term.privateSession": "Privát hallgatás",
|
"term.privateSession": "Privát hallgatás",
|
||||||
"term.queue": "Várólista",
|
"term.queue": "Várólista",
|
||||||
|
"term.history": "Előzmények",
|
||||||
"term.search": "Keresés",
|
"term.search": "Keresés",
|
||||||
"term.library": "Könyvtár",
|
"term.library": "Könyvtár",
|
||||||
"term.listenNow": "Hallgatás most",
|
"term.listenNow": "Hallgatás most",
|
||||||
|
@ -70,6 +61,7 @@
|
||||||
"term.sortBy.genre": "Műfaj",
|
"term.sortBy.genre": "Műfaj",
|
||||||
"term.sortBy.releaseDate": "Kiadás dátuma",
|
"term.sortBy.releaseDate": "Kiadás dátuma",
|
||||||
"term.sortBy.duration": "Időtartam",
|
"term.sortBy.duration": "Időtartam",
|
||||||
|
"term.sortBy.dateAdded": "Hozzáadás dátuma",
|
||||||
"term.sortOrder": "A-Z",
|
"term.sortOrder": "A-Z",
|
||||||
"term.sortOrder.ascending": "Növekvő",
|
"term.sortOrder.ascending": "Növekvő",
|
||||||
"term.sortOrder.descending": "Csökkenő",
|
"term.sortOrder.descending": "Csökkenő",
|
||||||
|
@ -105,7 +97,8 @@
|
||||||
"term.time.second": "másodperc",
|
"term.time.second": "másodperc",
|
||||||
"term.fullscreenView": "Teljes képernyős mód",
|
"term.fullscreenView": "Teljes képernyős mód",
|
||||||
"term.defaultView": "Alapértelmezett nézet",
|
"term.defaultView": "Alapértelmezett nézet",
|
||||||
"term.spacializedAudioSetting": "Térbeli hang",
|
"term.audioSettings": "Hangbeállítások",
|
||||||
|
"term.audioControls": "Hangerő beállítás",
|
||||||
"term.clearAll": "Összes törlése",
|
"term.clearAll": "Összes törlése",
|
||||||
"term.recentStations": "Nemrég játszott",
|
"term.recentStations": "Nemrég játszott",
|
||||||
"term.language": "Nyelv",
|
"term.language": "Nyelv",
|
||||||
|
@ -121,28 +114,45 @@
|
||||||
"term.contributors": "Hozzájárulók",
|
"term.contributors": "Hozzájárulók",
|
||||||
"term.equalizer": "Hangszínszabályozó",
|
"term.equalizer": "Hangszínszabályozó",
|
||||||
"term.reset": "Visszaállítás",
|
"term.reset": "Visszaállítás",
|
||||||
"term.tracks": "zeneszám", // Assume x amount of tracks. e.g. 50 tracks
|
"term.tracks": "zeneszám",
|
||||||
"term.videos": "Videók",
|
"term.videos": "Videók",
|
||||||
"term.menu": "Menü",
|
"term.menu": "Menü",
|
||||||
"term.check": "Ellenőrzés",
|
"term.check": "Ellenőrzés",
|
||||||
"term.aboutArtist": "About {{artistName}}", // e.g. 'About Doja Cat'
|
"term.aboutArtist": "About {{artistName}}",
|
||||||
"term.topResult": "Legjobb találatok", // Search Results
|
"term.topResult": "Legjobb találatok",
|
||||||
"term.sharedPlaylists": "Megosztott lejátszási listák", // Search Results
|
"term.sharedPlaylists": "Megosztott lejátszási listák",
|
||||||
"term.people": "Profilok", // Search Results
|
"term.people": "Profilok",
|
||||||
"term.newpreset.name": "New EQ Preset Name", // Equalizer Preset
|
"term.newpreset.name": "Új EQ előbeállítás név",
|
||||||
"term.addedpreset": "Preset hozzáadva",
|
"term.addedpreset": "Előbeállítás hozzáadva",
|
||||||
"term.deletepreset.warn": "Are you sure you want to delete this preset?",
|
"term.deletepreset.warn": "Biztos törölni szeretnéd ezt az előbeállítást?",
|
||||||
"term.deletedpreset": "Preset törölve",
|
"term.deletedpreset": "Előbeállítás törölve",
|
||||||
"term.musicVideos": "Videóklipek", // Search page friendlyTypes
|
"term.defaultPresets": "Alap előbeállítások",
|
||||||
|
"term.userPresets": "Felhasználói beállítások",
|
||||||
|
"term.requestError": "Hiba történt a lekérés közben.",
|
||||||
|
"term.song.link.generate": "song.link URL lekérése...",
|
||||||
|
"term.musicVideos": "Videóklipek",
|
||||||
"term.stations": "Állomások",
|
"term.stations": "Állomások",
|
||||||
"term.curators": "Curators",
|
"term.curators": "Kurátorok",
|
||||||
"term.appleCurators": "Apple Curators",
|
"term.appleCurators": "Apple Kurátorok",
|
||||||
"term.radioShows": "Radio Shows",
|
"term.radioShows": "Rádióadások",
|
||||||
"term.recordLabels": "Record Labels",
|
"term.recordLabels": "Record Labels",
|
||||||
"term.videoExtras": "Videóextrák",
|
"term.videoExtras": "Videóextrák",
|
||||||
"term.top": "Top",
|
"term.top": "Top",
|
||||||
|
"term.version": "Verzió",
|
||||||
// Home
|
"term.noVideos": "Nincs találat.",
|
||||||
|
"term.plugin": "Plug-in",
|
||||||
|
"term.pluginMenu": "Plug-in Menü",
|
||||||
|
"term.replay": "Replay",
|
||||||
|
"term.uniqueAlbums": "Unique Albums",
|
||||||
|
"term.uniqueArtists": "Unique Artists",
|
||||||
|
"term.uniqueSongs": "Unique Songs",
|
||||||
|
"term.topArtists": "Top Artists",
|
||||||
|
"term.listenedTo": "Listened to:",
|
||||||
|
"term.times": "alkalom",
|
||||||
|
"term.topAlbums": "Top Albums",
|
||||||
|
"term.plays": "Plays",
|
||||||
|
"term.topGenres": "Top Genres",
|
||||||
|
"term.confirmLogout": "Biztosan ki szeretnél jelentkezni?",
|
||||||
"home.title": "Kezdőlap",
|
"home.title": "Kezdőlap",
|
||||||
"home.recentlyPlayed": "Nemrég játszott",
|
"home.recentlyPlayed": "Nemrég játszott",
|
||||||
"home.recentlyAdded": "Nemrég hozzáadott",
|
"home.recentlyAdded": "Nemrég hozzáadott",
|
||||||
|
@ -151,14 +161,10 @@
|
||||||
"home.madeForYou": "Személyre szabva",
|
"home.madeForYou": "Személyre szabva",
|
||||||
"home.friendsListeningTo": "A barátaid épp ezt hallgatják",
|
"home.friendsListeningTo": "A barátaid épp ezt hallgatják",
|
||||||
"home.followedArtists": "Követett előadók",
|
"home.followedArtists": "Követett előadók",
|
||||||
|
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "Apple Music előfizetés szükséges.",
|
"error.appleMusicSubRequired": "Apple Music előfizetés szükséges.",
|
||||||
"error.connectionError": "Hiba történt az Apple Musichoz való csatlakozás közben.",
|
"error.connectionError": "Hiba történt az Apple Musichoz való csatlakozás közben.",
|
||||||
"error.noResults": "Nincs találat",
|
"error.noResults": "Nincs találat",
|
||||||
"error.noResults.description": "Próbálkozzon új kereséssel",
|
"error.noResults.description": "Próbálkozzon új kereséssel",
|
||||||
|
|
||||||
// Podcasts
|
|
||||||
"podcast.followOnCider": "Követés a Cideren",
|
"podcast.followOnCider": "Követés a Cideren",
|
||||||
"podcast.followedOnCider": "Követve a Cideren",
|
"podcast.followedOnCider": "Követve a Cideren",
|
||||||
"podcast.subscribeOnItunes": "Feliratkozás az iTunesban",
|
"podcast.subscribeOnItunes": "Feliratkozás az iTunesban",
|
||||||
|
@ -167,8 +173,6 @@
|
||||||
"podcast.episodes": "Epizódok",
|
"podcast.episodes": "Epizódok",
|
||||||
"podcast.playEpisode": "Epizód lejátszása",
|
"podcast.playEpisode": "Epizód lejátszása",
|
||||||
"podcast.website": "Podcast weboldala",
|
"podcast.website": "Podcast weboldala",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "Hozzáadás a Könyvtárhoz",
|
"action.addToLibrary": "Hozzáadás a Könyvtárhoz",
|
||||||
"action.addToLibrary.success": "Hozzáadva a Könyvtárhoz",
|
"action.addToLibrary.success": "Hozzáadva a Könyvtárhoz",
|
||||||
"action.addToLibrary.error": "Hiba a hozzáadáskor.",
|
"action.addToLibrary.error": "Hiba a hozzáadáskor.",
|
||||||
|
@ -202,7 +206,7 @@
|
||||||
"action.unlove": "Mégsem szeretem",
|
"action.unlove": "Mégsem szeretem",
|
||||||
"action.dislike": "Kevesebb ilyen javasolása",
|
"action.dislike": "Kevesebb ilyen javasolása",
|
||||||
"action.undoDislike": "A Kevesebb ilyen javasolása visszavonása",
|
"action.undoDislike": "A Kevesebb ilyen javasolása visszavonása",
|
||||||
"action.showWebRemoteQR": "Távirányító QR kód",
|
"action.showWebRemoteQR": "Távirányító",
|
||||||
"action.playTracksNext": "${app.selectedMediaItems.length} zenék lejátszása következőnek",
|
"action.playTracksNext": "${app.selectedMediaItems.length} zenék lejátszása következőnek",
|
||||||
"action.playTracksLater": "${app.selectedMediaItems.length} zenék lejátszása később",
|
"action.playTracksLater": "${app.selectedMediaItems.length} zenék lejátszása később",
|
||||||
"action.removeTracks": "${self.selectedItems.length} zenék eltávolítása a várólistáról",
|
"action.removeTracks": "${self.selectedItems.length} zenék eltávolítása a várólistáról",
|
||||||
|
@ -213,27 +217,33 @@
|
||||||
"action.tray.quit": "Kilépés",
|
"action.tray.quit": "Kilépés",
|
||||||
"action.tray.show": "Megjelenítés",
|
"action.tray.show": "Megjelenítés",
|
||||||
"action.update": "Frissítés",
|
"action.update": "Frissítés",
|
||||||
|
"action.install": "Telepítés",
|
||||||
"action.copy": "Másolás",
|
"action.copy": "Másolás",
|
||||||
"action.newpreset": "Új Preset...", // Equalizer Preset
|
"action.newpreset": "Új Preset...",
|
||||||
"action.deletepreset": "Preset törlése",
|
"action.deletepreset": "Preset törlése",
|
||||||
|
"action.open": "Megnyitás",
|
||||||
// Settings - General
|
|
||||||
"settings.header.general": "Általános",
|
"settings.header.general": "Általános",
|
||||||
"settings.header.general.description": "A Cider általános beállításainak módosítása.",
|
"settings.header.general.description": "A Cider általános beállításainak módosítása.",
|
||||||
"settings.option.general.language": "Nyelv",
|
"settings.option.general.language": "Nyelv",
|
||||||
|
"settings.option.general.resumebehavior": "Resume behavior",
|
||||||
// Language optgroups
|
"settings.option.general.resumebehavior.description": "Resume behavior affects how Cider will resume your session when you return to the app.",
|
||||||
|
"settings.option.general.resumebehavior.locally": "Locally",
|
||||||
|
"settings.option.general.resumebehavior.locally.description": "Cider will resume your last session on this machine.",
|
||||||
|
"settings.option.general.resumebehavior.history": "History",
|
||||||
|
"settings.option.general.resumebehavior.history.description": "Cider will queue the last song from your overall Apple Music history, across devices.",
|
||||||
"settings.option.general.language.main": "Nyelvek",
|
"settings.option.general.language.main": "Nyelvek",
|
||||||
"settings.option.general.language.fun": "Fantázianyelvek",
|
"settings.option.general.language.fun": "Fantázianyelvek",
|
||||||
"settings.option.general.language.unsorted": "Azonosítatlan",
|
"settings.option.general.language.unsorted": "Azonosítatlan",
|
||||||
|
"settings.option.general.updateCider": "Cider frissítése",
|
||||||
// Update Cider
|
"settings.option.general.updateCider.branch": "Verzió kiválasztása",
|
||||||
"settings.option.general.updateCider": "A Cider frissítése", // Button
|
"settings.option.general.updateCider.branch.description": "Válaszd ki a Cider melyik verziójára szeretnél frissíteni",
|
||||||
|
"settings.option.general.updateCider.branch.main": "Normál",
|
||||||
// Settings - Audio
|
"settings.option.general.updateCider.branch.develop": "Fejlesztői",
|
||||||
"settings.header.audio": "Hang",
|
"settings.header.audio": "Hang",
|
||||||
"settings.header.audio.description": "A Cider hangbeállításainak módosítása.",
|
"settings.header.audio.description": "A Cider hangbeállításainak módosítása.",
|
||||||
"settings.option.audio.quality": "Hangminőség", // Dropdown
|
"settings.option.audio.volumeStep": "Hangerő lépték",
|
||||||
|
"settings.option.audio.maxVolume": "Maximum hangerő",
|
||||||
|
"settings.option.audio.quality": "Hangminőség",
|
||||||
"settings.header.audio.quality.hireslossless": "Nagy felbontású veszteségmentes",
|
"settings.header.audio.quality.hireslossless": "Nagy felbontású veszteségmentes",
|
||||||
"settings.header.audio.quality.hireslossless.description": "max. 24-bit/192 kHz sebességen",
|
"settings.header.audio.quality.hireslossless.description": "max. 24-bit/192 kHz sebességen",
|
||||||
"settings.header.audio.quality.lossless": "Veszteségmentes",
|
"settings.header.audio.quality.lossless": "Veszteségmentes",
|
||||||
|
@ -242,84 +252,96 @@
|
||||||
"settings.header.audio.quality.high.description": "256 kbps",
|
"settings.header.audio.quality.high.description": "256 kbps",
|
||||||
"settings.header.audio.quality.standard": "Standard",
|
"settings.header.audio.quality.standard": "Standard",
|
||||||
"settings.header.audio.quality.standard.description": "64 kbps",
|
"settings.header.audio.quality.standard.description": "64 kbps",
|
||||||
"settings.option.audio.seamlessTransition": "Szünetmentes lejátszás", // Toggle
|
"settings.option.audio.seamlessTransition": "Szünetmentes lejátszás",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "Haladó funkcionalitás engedélyezése", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality": "Haladó funkcionalitás engedélyezése",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "Az AudioContext funkció engedélyezése lehetővé teszi a fejlettebb hangfunkciókat, például a Normalizásást, az Equalizereket és a Visualizer funkciókat, azonban egyes számítógépeken ez akadozást okozhat a hangsávokban.",
|
"settings.option.audio.enableAdvancedFunctionality.description": "Az AudioContext funkció engedélyezése lehetővé teszi a fejlettebb hangfunkciókat, például a Normalizásást, az Equalizereket és a Visualizer funkciókat, azonban egyes számítógépeken ez akadozást okozhat a hangsávokban.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️", // Toggle
|
"settings.option.audio.audioLab": "Cider Audio Lab",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Pszichoakusztikus Módosítások amik minden hangot felerősítenek és ütősebbé tesznek | Készítette Maikiwi",
|
"settings.option.audio.audioLab.description": "An assortment of in-house developed audio effects for Cider.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Erősség", // Toggle
|
"settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionality) is required to enable Cider Audio Laboratory.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Analog Warmth",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Simulates the analog warmth modelled after the Korg Nutube 6P1",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Analog Warmth intensity",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "Changes the intensity of the Analog Warmth Module processing.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Warm",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Pszichoakusztikus Módosítások amik minden hangot felerősítenek és ütősebbé tesznek",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "A CAP nem kompatibilis a Térbeli Hanggal. Kapcsold ki a Térbeli Hangot a folytatáshoz.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Erősség",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Megváltoztatja a hangra végzett feldolgozás erősségét. (Az Agresszív mód nemkívánatos eredményeket hozhat!)",
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Megváltoztatja a hangra végzett feldolgozás erősségét. (Az Agresszív mód nemkívánatos eredményeket hozhat!)",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Szokásos",
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Szokásos",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Agresszív",
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Agresszív",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalizálás", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalizálás",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizálja az egyes zeneszámok hangosabb részeit, hogy egységesebb hallgatási élményt hozzon létre.",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizálja az egyes zeneszámok hangosabb részeit, hogy egységesebb hallgatási élményt hozzon létre.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Térbeli hang", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Térbeli hang",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Térbeli hang és a hang háromdimenziósabbá tétele (Ez nem összekeverendő a Dolby Atmos-szal!)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Térbeli hang és a hang háromdimenziósabbá tétele (Ez nem összekeverendő a Dolby Atmos-szal!)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cider Tuned Spatialization",
|
||||||
// Settings - Visual
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description": "Pre-tuned Spatializing Effect, disables the customizable settings of Audio Spatialization. Spatialization must be enabled as a prerequisite.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile": "Cider Spatialization Profile",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description": "Changes the Tuning Profile of the Spatialization. (Requires App Restart)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard": "Standard",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile": "Audiophile",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "A Térbeli Hang nem kompatibilis a CAP-pal. Kapcsold ki a CAP-ot a folytatáshoz.",
|
||||||
"settings.header.visual": "Vizuális",
|
"settings.header.visual": "Vizuális",
|
||||||
"settings.header.visual.description": "A Cider vizuális beállításainak módosítása.",
|
"settings.header.visual.description": "A Cider vizuális beállításainak módosítása.",
|
||||||
"settings.option.visual.windowBackgroundStyle": "Ablak háttér stílusa", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "Ablakháttér stílusa",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "Sehol",
|
"settings.header.visual.windowBackgroundStyle.none": "Sehol",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "Borító",
|
"settings.header.visual.windowBackgroundStyle.artwork": "Borító",
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "Kép",
|
"settings.header.visual.windowBackgroundStyle.image": "Kép",
|
||||||
"settings.option.visual.animatedArtwork": "Animált borító", // Dropdown
|
"settings.option.visual.animatedArtwork": "Animált borító",
|
||||||
"settings.header.visual.animatedArtwork.always": "Mindig",
|
"settings.header.visual.animatedArtwork.always": "Mindig",
|
||||||
"settings.header.visual.animatedArtwork.limited": "Oldalakra és speciális bejegyzésekre korlátozva.",
|
"settings.header.visual.animatedArtwork.limited": "Oldalakra és speciális bejegyzésekre korlátozva.",
|
||||||
"settings.header.visual.animatedArtwork.disable": "Kikapcsolás mindenhol",
|
"settings.header.visual.animatedArtwork.disable": "Kikapcsolás mindenhol",
|
||||||
"settings.option.visual.animatedArtworkQuality": "Animált borító minősége", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "Animált borító minősége",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "Alacsony",
|
"settings.header.visual.animatedArtworkQuality.low": "Alacsony",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "Közepes",
|
"settings.header.visual.animatedArtworkQuality.medium": "Közepes",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "Magas",
|
"settings.header.visual.animatedArtworkQuality.high": "Magas",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "Nagyon magas",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Nagyon magas",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "Extrém",
|
"settings.header.visual.animatedArtworkQuality.extreme": "Extrém",
|
||||||
"settings.option.visual.animatedWindowBackground": "Animált ablakháttér", // Toggle
|
"settings.option.visual.animatedWindowBackground": "Animált ablakháttér",
|
||||||
"settings.option.visual.hardwareAcceleration": "Hardveres gyorsítás", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "Hardveres gyorsítás",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "Újraindítás szükséges",
|
"settings.option.visual.hardwareAcceleration.description": "Újraindítás szükséges",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "Alap",
|
"settings.header.visual.hardwareAcceleration.default": "Alap",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
"settings.header.visual.theme": "Téma",
|
"settings.header.visual.theme": "Téma",
|
||||||
|
"settings.option.visual.theme.github.download": "Telepítés GitHub URL-ről",
|
||||||
// Settings - Visual - Theme name
|
"settings.option.visual.theme.github.explore": "Témaáruház",
|
||||||
|
"settings.header.visual.theme.github.page": "Témák a GitHub-ról",
|
||||||
|
"settings.option.visual.theme.github.install.confirm": "Biztos, hogy szeretnéd telepíteni a(z) {{ repo }} témát?",
|
||||||
|
"settings.prompt.visual.theme.github.URL": "Add meg a telepítendő téma URL-jét",
|
||||||
|
"settings.notyf.visual.theme.install.success": "Téma sikeresen telepítve",
|
||||||
|
"settings.notyf.visual.theme.install.error": "Sikertelen volt a téma telepítése",
|
||||||
"settings.option.visual.theme.default": "Cider",
|
"settings.option.visual.theme.default": "Cider",
|
||||||
"settings.option.visual.theme.dark": "Sötét",
|
"settings.option.visual.theme.dark": "Sötét",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.option.visual.showPersonalInfo": "Személyes adatok mutatása",
|
||||||
"settings.option.visual.showPersonalInfo": "Személyes adatok mutatása", // Toggle
|
|
||||||
|
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "Dalszöveg",
|
"settings.header.lyrics": "Dalszöveg",
|
||||||
"settings.header.lyrics.description": "A Cider dalszöveg beállításainak módosítása.",
|
"settings.header.lyrics.description": "A Cider dalszöveg beállításainak módosítása.",
|
||||||
"settings.option.lyrics.enableMusixmatch": "MusixMatch dalszövegek engedélyezése", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "MusixMatch dalszövegek engedélyezése",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "Karaoke mód bekapcsolása (Csak MusixMatch)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Karaoke mód bekapcsolása (Csak MusixMatch)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "MusixMatch fordítás nyelve", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "MusixMatch fordítás nyelve",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "YouTube dalszövegek engedélyezése a zenei videóknál", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "YouTube dalszövegek engedélyezése a zenei videóknál",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "Csatlakozások",
|
"settings.header.connectivity": "Csatlakozások",
|
||||||
"settings.header.connectivity.description": "A Cider csatlakozás beállításainak módosítása.",
|
"settings.header.connectivity.description": "A Cider csatlakozás beállításainak módosítása.",
|
||||||
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
"settings.option.connectivity.playbackNotifications": "Lejátszás értesítések", // Toggle
|
"settings.option.connectivity.playbackNotifications": "Lejátszás értesítések",
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "Megjelenítés 'Cider'-ként",
|
"settings.header.connectivity.discordRPC.cider": "Megjelenítés 'Cider'-ként",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "Megjelenítés 'Apple Music'-ként",
|
"settings.header.connectivity.discordRPC.appleMusic": "Megjelenítés 'Apple Music'-ként",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "Discord Rich Presence törlése megállításnál", // Toggle
|
"settings.option.connectivity.discordRPC.clearOnPause": "Discord Rich Presence törlése megállításnál",
|
||||||
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling", // Option to Connect
|
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling",
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble Késleltetés (%)",
|
"settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble Késleltetés (%)",
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "LastFM Now Playing engedélyezése",
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "LastFM Now Playing engedélyezése",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (LastFM)",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (LastFM)",
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "Loopolt zeneszám szűrése (LastFM)",
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Loopolt zeneszám szűrése (LastFM)",
|
||||||
// Refer to term.connect for the connect button
|
"settings.header.debug": "Hibakeresés",
|
||||||
|
"settings.option.debug.copy_log": "Napló másolása a vágólapra",
|
||||||
// Settings - Experimental
|
"settings.option.debug.openAppData": "Cider mappa megnyitása",
|
||||||
"settings.header.experimental": "Kísérleti",
|
"settings.header.experimental": "Kísérleti",
|
||||||
"settings.header.experimental.description": "A Cider kísérleti beállításainak módosítása.",
|
"settings.header.experimental.description": "A Cider kísérleti beállításainak módosítása.",
|
||||||
"settings.option.experimental.compactUI": "Kompakt UI", // Toggle
|
"settings.option.experimental.unknownPlugin": "Unknown Sources",
|
||||||
"settings.option.experimental.close_button_hide": "A bezárás gomb rejtse el az alkalmazást",
|
"settings.option.experimental.unknownPlugin.description": "Allow installion of plugins from repos other than the Cider Plugin Repository",
|
||||||
"settings.option.experimental.copy_log": "Napló másolása a vágólapra",
|
"settings.option.experimental.compactUI": "Kompakt felület",
|
||||||
|
"settings.option.window.close_button_hide": "A bezárás gomb rejtse el az alkalmazást",
|
||||||
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
|
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
|
||||||
|
|
||||||
// Refer to term.disabled & term.enabled
|
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.notTurnedOn": "A térbeli hangzás ki van kapcsolva, használatához kapcsolja be.",
|
"spatial.notTurnedOn": "A térbeli hangzás ki van kapcsolva, használatához kapcsolja be.",
|
||||||
"spatial.spatialProperties": "Térbeli hang",
|
"spatial.spatialProperties": "Térbeli hang",
|
||||||
"spatial.width": "Szélesség",
|
"spatial.width": "Szélesség",
|
||||||
|
@ -339,14 +361,8 @@
|
||||||
"spatial.down": "Lent",
|
"spatial.down": "Lent",
|
||||||
"spatial.listener": "Hallgató",
|
"spatial.listener": "Hallgató",
|
||||||
"spatial.audioSource": "Hangforrás",
|
"spatial.audioSource": "Hangforrás",
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "Befejezetlen",
|
"settings.header.unfinished": "Befejezetlen",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "Cider Remote",
|
"remote.web.title": "Cider Remote",
|
||||||
"remote.web.description": "Olvasd be ezt a QR-kódot a telefonoddal, hogy tudd vezérelni a lejátszót.",
|
"remote.web.description": "Olvasd be ezt a QR-kódot a telefonoddal, hogy tudd vezérelni a lejátszót.",
|
||||||
|
|
||||||
// About
|
|
||||||
"about.thanks": "Köszönet a Cider Collective csapatának és minden hozzájárulónak."
|
"about.thanks": "Köszönet a Cider Collective csapatának és minden hozzájárulónak."
|
||||||
}
|
}
|
309
src/i18n/in_ID.json
Normal file
|
@ -0,0 +1,309 @@
|
||||||
|
{
|
||||||
|
"i18n.languageName": "Bahasa Indonesia",
|
||||||
|
"i18n.languageNameEnglish": "Indonesian",
|
||||||
|
"i18n.category": "main",
|
||||||
|
"i18n.authors": "@crystalshower",
|
||||||
|
"app.name": "Cider",
|
||||||
|
"date.format": "${d} ${m}, ${y}",
|
||||||
|
"dialog.cancel": "Batal",
|
||||||
|
"dialog.ok": "OK",
|
||||||
|
"notification.updatingLibrarySongs": "Memperbarui Pustaka lagu...",
|
||||||
|
"notification.updatingLibraryAlbums": "Memperbarui Pustaka album...",
|
||||||
|
"notification.updatingLibraryArtists": "Memperbarui Pustaka artis...",
|
||||||
|
"term.appleInc": "Apple Inc.",
|
||||||
|
"term.appleMusic": "Apple Music",
|
||||||
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
"term.itunes": "iTunes",
|
||||||
|
"term.github": "GitHub",
|
||||||
|
"term.discord": "Discord",
|
||||||
|
"term.learnMore": "Pelajari lebih lanjut",
|
||||||
|
"term.accountSettings": "Pengaturan Akun",
|
||||||
|
"term.logout": "Keluar",
|
||||||
|
"term.login": "Masuk",
|
||||||
|
"term.about": "Tentang",
|
||||||
|
"term.privateSession": "Sesi Pribadi",
|
||||||
|
"term.queue": "Antrian",
|
||||||
|
"term.history": "Riwayat",
|
||||||
|
"term.search": "Cari",
|
||||||
|
"term.library": "Pustaka",
|
||||||
|
"term.listenNow": "Dengarkan Sekarang",
|
||||||
|
"term.browse": "Telusuri",
|
||||||
|
"term.radio": "Radio",
|
||||||
|
"term.recentlyAdded": "Baru Ditambahkan",
|
||||||
|
"term.songs": "Lagu",
|
||||||
|
"term.albums": "Album",
|
||||||
|
"term.artists": "Artis",
|
||||||
|
"term.podcasts": "Podcasts",
|
||||||
|
"term.playlists": "Playlist",
|
||||||
|
"term.playlist": "Playlist",
|
||||||
|
"term.newPlaylist": "Playlist Baru",
|
||||||
|
"term.newPlaylistFolder": "Folder Playlist Baru",
|
||||||
|
"term.createNewPlaylist": "Buat Playlist Baru",
|
||||||
|
"term.createNewPlaylistFolder": "Buat Folder Playlist Baru",
|
||||||
|
"term.deletePlaylist": "Yakin ingin menghapus playlist ini?",
|
||||||
|
"term.play": "Mainkan",
|
||||||
|
"term.pause": "Jeda",
|
||||||
|
"term.previous": "Sebelumnya",
|
||||||
|
"term.next": "Selanjutnya",
|
||||||
|
"term.shuffle": "Acak",
|
||||||
|
"term.repeat": "Ulangi",
|
||||||
|
"term.volume": "Volume",
|
||||||
|
"term.mute": "Bisu",
|
||||||
|
"term.unmute": "Bunyikan",
|
||||||
|
"term.share": "Bagikan",
|
||||||
|
"term.share.success": "Disalin ke clipboard",
|
||||||
|
"term.settings": "Pengaturan",
|
||||||
|
"term.seeAll": "Lihat Semua",
|
||||||
|
"term.sortBy": "Urutkan Berdasarkan",
|
||||||
|
"term.sortBy.album": "Album",
|
||||||
|
"term.sortBy.artist": "Artis",
|
||||||
|
"term.sortBy.name": "Nama",
|
||||||
|
"term.sortBy.genre": "Genre",
|
||||||
|
"term.sortBy.releaseDate": "Tanggal Rilis",
|
||||||
|
"term.sortBy.duration": "Durasi",
|
||||||
|
"term.sortOrder": "A-Z",
|
||||||
|
"term.sortOrder.ascending": "Terkecil",
|
||||||
|
"term.sortOrder.descending": "Terbesar",
|
||||||
|
"term.viewAs": "Lihat Sebagai",
|
||||||
|
"term.viewAs.coverArt": "Cover Art",
|
||||||
|
"term.viewAs.list": "Daftar",
|
||||||
|
"term.size": "Ukuran",
|
||||||
|
"term.size.normal": "Normal",
|
||||||
|
"term.size.compact": "Kompak",
|
||||||
|
"term.enable": "Aktifkan",
|
||||||
|
"term.disable": "Nonaktifkan",
|
||||||
|
"term.enabled": "Diaktifkan",
|
||||||
|
"term.disabled": "Dinonaktikan",
|
||||||
|
"term.connect": "Sambungkan",
|
||||||
|
"term.connecting": "Menyambungkan",
|
||||||
|
"term.disconnect": "Terputus",
|
||||||
|
"term.authed": "Diotentikasi",
|
||||||
|
"term.confirm": "Konfirmasi?",
|
||||||
|
"term.more": "Selebihnya",
|
||||||
|
"term.less": "Lebih Sedikit",
|
||||||
|
"term.showMore": "Tampilkan lebih banyak",
|
||||||
|
"term.showLess": "Tampilkan lebih sedikit",
|
||||||
|
"term.topSongs": "Lagu Teratas",
|
||||||
|
"term.latestReleases": "Rilis Terbaru",
|
||||||
|
"term.time.added": "Ditambahkan",
|
||||||
|
"term.time.released": "Dirilis",
|
||||||
|
"term.time.updated": "Diperbarui",
|
||||||
|
"term.time.hours": "jam",
|
||||||
|
"term.time.hour": "jam",
|
||||||
|
"term.time.minutes": "menit",
|
||||||
|
"term.time.minute": "menit",
|
||||||
|
"term.time.seconds": "detik",
|
||||||
|
"term.time.second": "detik",
|
||||||
|
"term.fullscreenView": "Mode Layar Penuh",
|
||||||
|
"term.defaultView": "Mode Default",
|
||||||
|
"term.audioSettings": "Pengaturan Audio",
|
||||||
|
"term.clearAll": "Bersihkan Semua",
|
||||||
|
"term.recentStations": "Stasiun Terbaru",
|
||||||
|
"term.language": "Bahasa",
|
||||||
|
"term.funLanguages": "Senang-senang",
|
||||||
|
"term.noLyrics": "Memuat... / Lirik tidak ditermukan./ Instrumental.",
|
||||||
|
"term.copyright": "Hak cipta",
|
||||||
|
"term.rightsReserved": "Hak cipta dilindungi Undang-undang.",
|
||||||
|
"term.sponsor": "Sponsori proyek ini",
|
||||||
|
"term.ciderTeam": "Cider Team",
|
||||||
|
"term.developer": "Pengembang",
|
||||||
|
"term.socialTeam": "Social Team",
|
||||||
|
"term.socials": "Sosial",
|
||||||
|
"term.contributors": "Kontributor",
|
||||||
|
"term.equalizer": "Equalizer",
|
||||||
|
"term.reset": "Atur Ulang",
|
||||||
|
"term.tracks": "lagu",
|
||||||
|
"term.videos": "Video",
|
||||||
|
"term.menu": "Menu",
|
||||||
|
"term.check": "Cek",
|
||||||
|
"term.aboutArtist": "Tentang {{artistName}}",
|
||||||
|
"term.topResult": "Hasil Teratas",
|
||||||
|
"term.sharedPlaylists": "Playlist yang dibagikan",
|
||||||
|
"term.people": "Orang",
|
||||||
|
"term.newpreset.name": "Nama Preset EQ Baru",
|
||||||
|
"term.addedpreset": "Preset Ditambahkan",
|
||||||
|
"term.deletepreset.warn": "Yakin ingin menghapus preset ini?",
|
||||||
|
"term.deletedpreset": "Preset dihapus",
|
||||||
|
"term.musicVideos": "Video Musik",
|
||||||
|
"term.stations": "Stasiun",
|
||||||
|
"term.curators": "Kurator",
|
||||||
|
"term.appleCurators": "Kurator Apple",
|
||||||
|
"term.radioShows": "Acara Radio",
|
||||||
|
"term.recordLabels": "Label Rekaman",
|
||||||
|
"term.videoExtras": "Bonus Video",
|
||||||
|
"term.top": "Atas",
|
||||||
|
"home.title": "Beranda",
|
||||||
|
"home.recentlyPlayed": "Baru Dimainkan",
|
||||||
|
"home.recentlyAdded": "Baru Ditambahkan",
|
||||||
|
"home.artistsFeed": "Feed Artis Anda",
|
||||||
|
"home.artistsFeed.noArtist": "Ikuti beberapa artis terlebih dahulu dan rilisan terbaru mereka akan ada di sini",
|
||||||
|
"home.madeForYou": "Dibuat Untuk Kamu",
|
||||||
|
"home.friendsListeningTo": "Teman Sedang Mendengarkan",
|
||||||
|
"home.followedArtists": "Artis Diikuti",
|
||||||
|
"error.appleMusicSubRequired": "Apple Music memerlukan langganan.",
|
||||||
|
"error.connectionError": "Terjadi masalah saat menyambungkan ke Apple Music.",
|
||||||
|
"error.noResults": "Tidak ada hasil.",
|
||||||
|
"error.noResults.description": "Coba pencarian baru.",
|
||||||
|
"podcast.followOnCider": "Ikuti Di Cider",
|
||||||
|
"podcast.followedOnCider": "Mengikuti Di Cider",
|
||||||
|
"podcast.subscribeOnItunes": "Langganan Di iTunes",
|
||||||
|
"podcast.subscribedOnItunes": "Berlangganan Di iTunes",
|
||||||
|
"podcast.itunesStore": "iTunes Store",
|
||||||
|
"podcast.episodes": "Episode",
|
||||||
|
"podcast.playEpisode": "Mainkan Episode",
|
||||||
|
"podcast.website": "Website Podcast",
|
||||||
|
"action.addToLibrary": "Tambahkan ke Pustaka",
|
||||||
|
"action.addToLibrary.success": "Ditambahkan ke Pustaka",
|
||||||
|
"action.addToLibrary.error": "Terjadi Kesalahan Saat Menambahkan Pustaka",
|
||||||
|
"action.removeFromLibrary": "Hapus dari Pustaka",
|
||||||
|
"action.removeFromLibrary.success": "Dihapus dari Pustaka",
|
||||||
|
"action.addToQueue": "Tambahkan ke Antrian",
|
||||||
|
"action.addToQueue.success": "Ditambahkan ke Antrian",
|
||||||
|
"action.addToQueue.error": "Terjadi Kesalahan Saat Menambahkan ke Antrean",
|
||||||
|
"action.removeFromQueue": "Hapus dari Antrian",
|
||||||
|
"action.removeFromQueue.success": "Dihapus dari Antrian",
|
||||||
|
"action.removeFromQueue.error": "Terjadi Kesalahan Saat Menghapus Antrian",
|
||||||
|
"action.createPlaylist": "Buat Playlist Baru",
|
||||||
|
"action.addToPlaylist": "Tambahkan ke Playlist",
|
||||||
|
"action.removeFromPlaylist": "Hapus dari Playlist",
|
||||||
|
"action.addToFavorites": "Tambahkan ke Favorit",
|
||||||
|
"action.follow": "Ikuti",
|
||||||
|
"action.follow.success": "Diikuti",
|
||||||
|
"action.follow.error": "Kesalahan Dalam Mengikuti",
|
||||||
|
"action.unfollow": "Berhenti Mengikuti",
|
||||||
|
"action.unfollow.success": "Sudah Tidak Mengikuti",
|
||||||
|
"action.unfollow.error": "Terjadi Kesalahan Saat Berhenti Mengikuti",
|
||||||
|
"action.playNext": "Mainkan Selanjutnya",
|
||||||
|
"action.playLater": "Mainkan Nanti",
|
||||||
|
"action.startRadio": "Mulai Radio",
|
||||||
|
"action.goToArtist": "Lihat Halaman Artis",
|
||||||
|
"action.goToAlbum": "Lihat Halaman Album",
|
||||||
|
"action.moveToTop": "Pindah ke Atas",
|
||||||
|
"action.share": "Bagikan",
|
||||||
|
"action.rename": "Ubah Nama",
|
||||||
|
"action.love": "Suka",
|
||||||
|
"action.unlove": "Batal Suka",
|
||||||
|
"action.dislike": "Tidak Suka",
|
||||||
|
"action.undoDislike": "Batalkan Tidak Suka",
|
||||||
|
"action.showWebRemoteQR": "Remot Web",
|
||||||
|
"action.playTracksNext": "Mainkan ${app.selectedMediaItems.length} lagu selanjutnya",
|
||||||
|
"action.playTracksLater": "Mainkan ${app.selectedMediaItems.length} lagu nanti",
|
||||||
|
"action.removeTracks": "Hapus ${self.selectedItems.length} lagu dari antrian",
|
||||||
|
"action.import": "Impor",
|
||||||
|
"action.export": "Ekspor",
|
||||||
|
"action.showAlbum": "Tampilkan Album Sepenuhnya",
|
||||||
|
"action.tray.minimize": "Sembunyikan ke Tray",
|
||||||
|
"action.tray.quit": "Keluar",
|
||||||
|
"action.tray.show": "Tampilkan",
|
||||||
|
"action.update": "Perbarui",
|
||||||
|
"action.copy": "Salin",
|
||||||
|
"action.newpreset": "Preset Baru...",
|
||||||
|
"action.deletepreset": "Hapus Preset",
|
||||||
|
"settings.header.general": "Umum",
|
||||||
|
"settings.header.general.description": "Sesuaikan pengaturan umum untuk Cider.",
|
||||||
|
"settings.option.general.language": "Bahasa",
|
||||||
|
"settings.option.general.language.main": "Bahasa",
|
||||||
|
"settings.option.general.language.fun": "Bahasa Candaan",
|
||||||
|
"settings.option.general.language.unsorted": "Tidak disortir",
|
||||||
|
"settings.option.general.updateCider": "Perbarui Cider",
|
||||||
|
"settings.option.general.updateCider.branch": "Branch Pembaruan Cider",
|
||||||
|
"settings.option.general.updateCider.branch.description": "Pilih branch untuk memperbarui Cider",
|
||||||
|
"settings.option.general.updateCider.branch.main": "Stable",
|
||||||
|
"settings.option.general.updateCider.branch.develop": "Development",
|
||||||
|
"settings.header.audio": "Audio",
|
||||||
|
"settings.header.audio.description": "Sesuaikan pengaturan audio untuk Cider.",
|
||||||
|
"settings.option.audio.quality": "Kualitas Audio",
|
||||||
|
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
|
||||||
|
"settings.header.audio.quality.hireslossless.description": "sampai dari 24-bit/192 kHz",
|
||||||
|
"settings.header.audio.quality.lossless": "Lossless",
|
||||||
|
"settings.header.audio.quality.lossless.description": "sampai dari 24-bit/48 kHz",
|
||||||
|
"settings.header.audio.quality.high": "Tinggi",
|
||||||
|
"settings.header.audio.quality.high.description": "256 kbps",
|
||||||
|
"settings.header.audio.quality.standard": "Standar",
|
||||||
|
"settings.header.audio.quality.standard.description": "64 kbps",
|
||||||
|
"settings.option.audio.seamlessTransition": "Transisi Audio Mulus",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality": "Aktifkan Fungsi Lanjutan",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.description": "Mengaktifkan fungsionalitas AudioContext memungkinkan fitur audio lanjutan seperti Normalisasi Audio, Equalizer dan Visualizer. Namun pada beberapa perangkat dapat menyebabkan tersendatnya audio.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Peningkatan Psikoakustik yang membuat semuanya terdengar lebih jelas dan lebih hidup.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Kekuatan CAP",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Mengubah kekuatan pemrosesan yang dilakukan pada audio. (Agresif dapat menghasilkan hasil yang tidak diinginkan)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standar",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Agresif",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalisasi Audio",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Menormalkan puncak volume untuk masing-masing lagu demi menciptakan pengalaman mendengarkan yang lebih seragam.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spasialisasi Audio",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Atur ruang audio dan buat audio lebih 3 dimensi (NB: Bukan Dolby Atmos)",
|
||||||
|
"settings.header.visual": "Visual",
|
||||||
|
"settings.header.visual.description": "Sesuaikan pengaturan visual untuk Cider.",
|
||||||
|
"settings.option.visual.windowBackgroundStyle": "Gaya Latar Belakang Jendela",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.none": "Tidak Ada",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.artwork": "Artwork",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.image": "Gambar",
|
||||||
|
"settings.option.visual.animatedArtwork": "Artwork Bergerak",
|
||||||
|
"settings.header.visual.animatedArtwork.always": "Selalu",
|
||||||
|
"settings.header.visual.animatedArtwork.limited": "Terbatas untuk halaman dan entri khusus",
|
||||||
|
"settings.header.visual.animatedArtwork.disable": "Matikan di semua tempat",
|
||||||
|
"settings.option.visual.animatedArtworkQuality": "Kualitas Artwork Bergerak",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.low": "Rendah",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.medium": "Medium",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.high": "Tinggi",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Sangat Tinggi",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.extreme": "Paling Tinggi",
|
||||||
|
"settings.option.visual.animatedWindowBackground": "Jendela Latar Belakang Bergerak",
|
||||||
|
"settings.option.visual.hardwareAcceleration": "Akselerasi Perangkat Keras (HW Acceleration)",
|
||||||
|
"settings.option.visual.hardwareAcceleration.description": "Membutuhkan dibuka ulang",
|
||||||
|
"settings.header.visual.hardwareAcceleration.default": "Default",
|
||||||
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
|
"settings.header.visual.theme": "Tema",
|
||||||
|
"settings.option.visual.theme.default": "Cider",
|
||||||
|
"settings.option.visual.theme.dark": "Gelap",
|
||||||
|
"settings.option.visual.showPersonalInfo": "Tampilkan Info Pribadi",
|
||||||
|
"settings.header.lyrics": "Lyrics",
|
||||||
|
"settings.header.lyrics.description": "Sesuaikan pengaturan lirik untuk Cider.",
|
||||||
|
"settings.option.lyrics.enableMusixmatch": "Aktifkan Lirik Musixmatch",
|
||||||
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Aktifkan Mode Karaoke (khusus Musixmatch)",
|
||||||
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Bahasa Terjemahan Musixmatch",
|
||||||
|
"settings.option.lyrics.enableYoutubeLyrics": "Aktifkan Lirik Youtube untuk Video Musik",
|
||||||
|
"settings.header.connectivity": "Konektivitas",
|
||||||
|
"settings.header.connectivity.description": "Sesuaikan pengaturan konektivitas untuk Cider.",
|
||||||
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
|
"settings.option.connectivity.playbackNotifications": "Pemberitahuan Pemutaran",
|
||||||
|
"settings.header.connectivity.discordRPC.cider": "Tampilkan sebagai 'Cider'",
|
||||||
|
"settings.header.connectivity.discordRPC.appleMusic": "Tampilkan sebagai 'Apple Music'",
|
||||||
|
"settings.option.connectivity.discordRPC.clearOnPause": "Sembunyikan Discord Rich Presence saat dijeda",
|
||||||
|
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.delay": "Delay Last.fm Scrobble (%)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Aktifkan Last.fm Now Playing",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Hapus featuring artist dari judul lagu (Last.fm)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filter lagu yang diulang (Last.fm)",
|
||||||
|
"settings.header.experimental": "Eksperimental",
|
||||||
|
"settings.header.experimental.description": "Sesuaikan pengaturan eksperimental untuk Cider.",
|
||||||
|
"settings.option.experimental.compactUI": "UI Kompak",
|
||||||
|
"settings.option.window.close_button_hide": "Tombol Tutup Menyembunyikan Aplikasi",
|
||||||
|
"settings.option.experimental.copy_log": "Salin log ke clipboard",
|
||||||
|
"settings.option.experimental.inline_playlists": "Playlist dan Album Sebaris",
|
||||||
|
"spatial.notTurnedOn": "Spasialisasi Audio dinonaktifkan. Untuk menggunakan, aktifkan terlebih dahulu.",
|
||||||
|
"spatial.spatialProperties": "Spatial Properties",
|
||||||
|
"spatial.width": "Lebar",
|
||||||
|
"spatial.height": "Tinggi",
|
||||||
|
"spatial.depth": "Kedalaman",
|
||||||
|
"spatial.gain": "Gain",
|
||||||
|
"spatial.roomMaterials": "Bahan Ruangan",
|
||||||
|
"spatial.roomDimensions": "Dimensi Ruangan",
|
||||||
|
"spatial.roomPositions": "Posisi Ruangan",
|
||||||
|
"spatial.setDimensions": "Atur Dimensi",
|
||||||
|
"spatial.setPositions": "Atur Posisi",
|
||||||
|
"spatial.up": "Atas",
|
||||||
|
"spatial.front": "Depan",
|
||||||
|
"spatial.left": "Kiri",
|
||||||
|
"spatial.right": "Kanan",
|
||||||
|
"spatial.back": "Belakang",
|
||||||
|
"spatial.down": "Bawah",
|
||||||
|
"spatial.listener": "Pendegar",
|
||||||
|
"spatial.audioSource": "Sumber Audio",
|
||||||
|
"settings.header.unfinished": "Belum Diselesaikan",
|
||||||
|
"remote.web.title": "Remote Cider",
|
||||||
|
"remote.web.description": "Pindai kode QR untuk memasangkan ponsel Anda dengan Cider.",
|
||||||
|
"about.thanks": "Terima kasih yang sebesar-besarnya kepada Cider Collective Team dan semua kontributor kami."
|
||||||
|
}
|
|
@ -1,25 +1,15 @@
|
||||||
{ // Base File
|
{
|
||||||
|
"i18n.languageName": "Italiano",
|
||||||
// i18n Info
|
"i18n.languageNameEnglish": "Italian",
|
||||||
"i18n.languageName": "Italiano", // name of language in native language
|
"i18n.category": "main",
|
||||||
"i18n.languageNameEnglish": "Italian", // name of language in English
|
"i18n.authors": "ConnectedR",
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
|
||||||
"i18n.authors": "ConnectedR", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
"app.name": "Cider",
|
||||||
|
|
||||||
"date.format": "${d} ${m}, ${y}",
|
"date.format": "${d} ${m}, ${y}",
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "Annulla",
|
"dialog.cancel": "Annulla",
|
||||||
"dialog.ok": "OK",
|
"dialog.ok": "OK",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "Aggiornamento raccolta brani...",
|
"notification.updatingLibrarySongs": "Aggiornamento raccolta brani...",
|
||||||
"notification.updatingLibraryAlbums": "Aggornamento raccolta album...",
|
"notification.updatingLibraryAlbums": "Aggornamento raccolta album...",
|
||||||
"notification.updatingLibraryArtists": "Aggiornamento raccolta artisti...",
|
"notification.updatingLibraryArtists": "Aggiornamento raccolta artisti...",
|
||||||
// Terms
|
|
||||||
"term.appleInc": "Apple Inc.",
|
"term.appleInc": "Apple Inc.",
|
||||||
"term.appleMusic": "Apple Music",
|
"term.appleMusic": "Apple Music",
|
||||||
"term.applePodcasts": "Apple Podcasts",
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
@ -91,7 +81,7 @@
|
||||||
"term.less": "Meno",
|
"term.less": "Meno",
|
||||||
"term.showMore": "Mostra altro",
|
"term.showMore": "Mostra altro",
|
||||||
"term.showLess": "Mostra menu",
|
"term.showLess": "Mostra menu",
|
||||||
"term.topSongs" : "Brani top",
|
"term.topSongs": "Brani top",
|
||||||
"term.latestReleases": "Uscite Recenti",
|
"term.latestReleases": "Uscite Recenti",
|
||||||
"term.time.added": "Aggiunto",
|
"term.time.added": "Aggiunto",
|
||||||
"term.time.released": "Rilasciato",
|
"term.time.released": "Rilasciato",
|
||||||
|
@ -120,12 +110,10 @@
|
||||||
"term.contributors": "Contribuenti",
|
"term.contributors": "Contribuenti",
|
||||||
"term.equalizer": "Equalizzatore",
|
"term.equalizer": "Equalizzatore",
|
||||||
"term.reset": "Reset",
|
"term.reset": "Reset",
|
||||||
"term.tracks": "brani", // Assume x amount of tracks. e.g. 50 tracks
|
"term.tracks": "brani",
|
||||||
"term.videos": "Video",
|
"term.videos": "Video",
|
||||||
"term.menu": "Menu",
|
"term.menu": "Menu",
|
||||||
"term.check": "Controllo",
|
"term.check": "Controllo",
|
||||||
|
|
||||||
// Home
|
|
||||||
"home.title": "Casa",
|
"home.title": "Casa",
|
||||||
"home.recentlyPlayed": "Ascoltato di recente",
|
"home.recentlyPlayed": "Ascoltato di recente",
|
||||||
"home.recentlyAdded": "Aggiunto di recente",
|
"home.recentlyAdded": "Aggiunto di recente",
|
||||||
|
@ -134,13 +122,10 @@
|
||||||
"home.madeForYou": "Per Te",
|
"home.madeForYou": "Per Te",
|
||||||
"home.friendsListeningTo": "Ascoltato da Amici",
|
"home.friendsListeningTo": "Ascoltato da Amici",
|
||||||
"home.followedArtists": "Artisti Seguiti",
|
"home.followedArtists": "Artisti Seguiti",
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "Apple Music ha bisogno di un abbonamento.",
|
"error.appleMusicSubRequired": "Apple Music ha bisogno di un abbonamento.",
|
||||||
"error.connectionError": "C'è stato un problema nella connessione a Apple Music.",
|
"error.connectionError": "C'è stato un problema nella connessione a Apple Music.",
|
||||||
"error.noResults": "Nessun risultato.",
|
"error.noResults": "Nessun risultato.",
|
||||||
"error.noResults.description": "Prova un'altra ricerca.",
|
"error.noResults.description": "Prova un'altra ricerca.",
|
||||||
|
|
||||||
//Podcasts
|
|
||||||
"podcast.followOnCider": "Segui in Cider",
|
"podcast.followOnCider": "Segui in Cider",
|
||||||
"podcast.followedOnCider": "Seguiti in Cider",
|
"podcast.followedOnCider": "Seguiti in Cider",
|
||||||
"podcast.subscribeOnItunes": "Iscriviti in iTunes",
|
"podcast.subscribeOnItunes": "Iscriviti in iTunes",
|
||||||
|
@ -149,8 +134,6 @@
|
||||||
"podcast.episodes": "Episodi",
|
"podcast.episodes": "Episodi",
|
||||||
"podcast.playEpisode": "Ascolta Episodio",
|
"podcast.playEpisode": "Ascolta Episodio",
|
||||||
"podcast.website": "Sito Podcast",
|
"podcast.website": "Sito Podcast",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "Aggiungi a Raccolta",
|
"action.addToLibrary": "Aggiungi a Raccolta",
|
||||||
"action.addToLibrary.success": "Aggiunto a Raccolta",
|
"action.addToLibrary.success": "Aggiunto a Raccolta",
|
||||||
"action.addToLibrary.error": "Errore ad Aggiungere a Raccolta",
|
"action.addToLibrary.error": "Errore ad Aggiungere a Raccolta",
|
||||||
|
@ -191,122 +174,96 @@
|
||||||
"action.import": "Importa",
|
"action.import": "Importa",
|
||||||
"action.export": "Esporta",
|
"action.export": "Esporta",
|
||||||
"action.showAlbum": "Mostra Album Intero",
|
"action.showAlbum": "Mostra Album Intero",
|
||||||
// Waiting on Core for moving plugin to app.ts
|
|
||||||
"action.tray.minimize": "Minimizza nel tray",
|
"action.tray.minimize": "Minimizza nel tray",
|
||||||
"action.tray.quit": "Chiudi",
|
"action.tray.quit": "Chiudi",
|
||||||
"action.tray.show": "Mostra",
|
"action.tray.show": "Mostra",
|
||||||
|
|
||||||
// Settings - General
|
|
||||||
"settings.header.general": "Generale",
|
"settings.header.general": "Generale",
|
||||||
"settings.header.general.description": "Cambia le impostazioni generali di Cider.",
|
"settings.header.general.description": "Cambia le impostazioni generali di Cider.",
|
||||||
"settings.option.general.language": "Lingua",
|
"settings.option.general.language": "Lingua",
|
||||||
|
|
||||||
// Language optgroups
|
|
||||||
"settings.option.general.language.main": "Lingue",
|
"settings.option.general.language.main": "Lingue",
|
||||||
"settings.option.general.language.fun": "Lingue da Scherzo",
|
"settings.option.general.language.fun": "Lingue da Scherzo",
|
||||||
"settings.option.general.language.unsorted": "Non ordinato",
|
"settings.option.general.language.unsorted": "Non ordinato",
|
||||||
|
|
||||||
// Settings - Audio
|
|
||||||
"settings.header.audio": "Audio",
|
"settings.header.audio": "Audio",
|
||||||
"settings.header.audio.description": "Cambia le impostazioni di audio di Cider.",
|
"settings.header.audio.description": "Cambia le impostazioni di audio di Cider.",
|
||||||
"settings.option.audio.quality": "Qualità di audio", // Dropdown
|
"settings.option.audio.quality": "Qualità di audio",
|
||||||
"settings.header.audio.quality.high": "Alta",
|
"settings.header.audio.quality.high": "Alta",
|
||||||
"settings.header.audio.quality.low": "Bassa",
|
"settings.header.audio.quality.low": "Bassa",
|
||||||
"settings.header.audio.quality.auto": "Automatica",
|
"settings.header.audio.quality.auto": "Automatica",
|
||||||
"settings.option.audio.seamlessTransition": "Transizioni Audio Immediate", // Toggle
|
"settings.option.audio.seamlessTransition": "Transizioni Audio Immediate",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "Attiva funzionalità avanzata", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality": "Attiva funzionalità avanzata",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "Attiva AudioContext per funzionalià audio avanzata Normalizzazione Audio, Equalizzatori and Visualizzatori, però su alcuni sistemi potrebbero causare lag nei brani.",
|
"settings.option.audio.enableAdvancedFunctionality.description": "Attiva AudioContext per funzionalià audio avanzata Normalizzazione Audio, Equalizzatori and Visualizzatori, però su alcuni sistemi potrebbero causare lag nei brani.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalizzazione Audio", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalizzazione Audio",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizza il volume massimo nei brani per un'esperienza d'ascolto più uniforme.",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizza il volume massimo nei brani per un'esperienza d'ascolto più uniforme.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spazializzazione Audio", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spazializzazione Audio",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spazializza l'audio per dare un effetto più tridimensionale (nota: questo non è Dolby Atmos)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spazializza l'audio per dare un effetto più tridimensionale (nota: questo non è Dolby Atmos)",
|
||||||
// Settings - Visual
|
|
||||||
"settings.header.visual": "Visuale",
|
"settings.header.visual": "Visuale",
|
||||||
"settings.header.visual.description": "Cambia le impostazioni visuali per Cider.",
|
"settings.header.visual.description": "Cambia le impostazioni visuali per Cider.",
|
||||||
"settings.option.visual.windowBackgroundStyle": "Stile Sfondo Finestra", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "Stile Sfondo Finestra",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "Nessuno",
|
"settings.header.visual.windowBackgroundStyle.none": "Nessuno",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "Copertina",
|
"settings.header.visual.windowBackgroundStyle.artwork": "Copertina",
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "Immagine",
|
"settings.header.visual.windowBackgroundStyle.image": "Immagine",
|
||||||
"settings.option.visual.animatedArtwork": "Copertina Animata", // Dropdown
|
"settings.option.visual.animatedArtwork": "Copertina Animata",
|
||||||
"settings.header.visual.animatedArtwork.always": "Sempre",
|
"settings.header.visual.animatedArtwork.always": "Sempre",
|
||||||
"settings.header.visual.animatedArtwork.limited": "Limita ad alcune pagine",
|
"settings.header.visual.animatedArtwork.limited": "Limita ad alcune pagine",
|
||||||
"settings.header.visual.animatedArtwork.disable": "Disattiva dappertutto",
|
"settings.header.visual.animatedArtwork.disable": "Disattiva dappertutto",
|
||||||
"settings.option.visual.animatedArtworkQuality": "Qualità Copertina Animata", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "Qualità Copertina Animata",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "Bassa",
|
"settings.header.visual.animatedArtworkQuality.low": "Bassa",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "Media",
|
"settings.header.visual.animatedArtworkQuality.medium": "Media",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "Alta",
|
"settings.header.visual.animatedArtworkQuality.high": "Alta",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "Molto Alta",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Molto Alta",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "Estrema",
|
"settings.header.visual.animatedArtworkQuality.extreme": "Estrema",
|
||||||
"settings.option.visual.animatedWindowBackground": "Sfondo Finestra Animato", // Toggle
|
"settings.option.visual.animatedWindowBackground": "Sfondo Finestra Animato",
|
||||||
"settings.option.visual.hardwareAcceleration": "Accelerazione Hardware", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "Accelerazione Hardware",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "Richiede riavvio del'app",
|
"settings.option.visual.hardwareAcceleration.description": "Richiede riavvio del'app",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "Normale",
|
"settings.header.visual.hardwareAcceleration.default": "Normale",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.option.visual.showPersonalInfo": "Mostra Informazione Personale",
|
||||||
"settings.option.visual.showPersonalInfo": "Mostra Informazione Personale", // Toggle
|
|
||||||
|
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "Testi",
|
"settings.header.lyrics": "Testi",
|
||||||
"settings.header.lyrics.description": "Aggiusta le impostazioni dei testi per Cider.",
|
"settings.header.lyrics.description": "Aggiusta le impostazioni dei testi per Cider.",
|
||||||
"settings.option.lyrics.enableMusixmatch": "Attiva Testi Musixmatch", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "Attiva Testi Musixmatch",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "Attiva Modalità Karaoke (solo Musixmatch)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Attiva Modalità Karaoke (solo Musixmatch)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Lingua di Traduzione MusixMatch Preferita", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Lingua di Traduzione MusixMatch Preferita",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "Attiva Testi da YouTube Per i Video ", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "Attiva Testi da YouTube Per i Video ",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "Connectività",
|
"settings.header.connectivity": "Connectività",
|
||||||
"settings.header.connectivity.description": "Cambia le impostazioni di connettività per Cider.",
|
"settings.header.connectivity.description": "Cambia le impostazioni di connettività per Cider.",
|
||||||
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
"settings.option.connectivity.playbackNotifications": "Notifiche di Riproduzione", // Toggle
|
"settings.option.connectivity.playbackNotifications": "Notifiche di Riproduzione",
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "Mostra come 'Cider'",
|
"settings.header.connectivity.discordRPC.cider": "Mostra come 'Cider'",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "Mostra come 'Apple Music'",
|
"settings.header.connectivity.discordRPC.appleMusic": "Mostra come 'Apple Music'",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "Pausare Disattiva la Rich Presence", // Toggle
|
"settings.option.connectivity.discordRPC.clearOnPause": "Pausare Disattiva la Rich Presence",
|
||||||
"settings.option.connectivity.lastfmScrobble": "Scrobbling LastFM", // Option to Connect
|
"settings.option.connectivity.lastfmScrobble": "Scrobbling LastFM",
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "Ritardo di Scrobbling LastFM (%)",
|
"settings.option.connectivity.lastfmScrobble.delay": "Ritardo di Scrobbling LastFM (%)",
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Attiva Now Playing in LastFM",
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Attiva Now Playing in LastFM",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Rimouvi Artisti Extra dal Titolo del Brano (LastFM)",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Rimouvi Artisti Extra dal Titolo del Brano (LastFM)",
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtra Brani Ripetuti (LastFM)",
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtra Brani Ripetuti (LastFM)",
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "Sperimentale",
|
"settings.header.experimental": "Sperimentale",
|
||||||
"settings.header.experimental.description": "Cambia impostazioni sperimentali per Cider.",
|
"settings.header.experimental.description": "Cambia impostazioni sperimentali per Cider.",
|
||||||
"settings.option.experimental.compactUI": "Interfaccia Compatta", // Toggle
|
"settings.option.experimental.compactUI": "Interfaccia Compatta",
|
||||||
"settings.option.experimental.closeButtonBehaviour": "Comportamento Tasto Chiudi",
|
"settings.option.experimental.closeButtonBehaviour": "Comportamento Tasto Chiudi",
|
||||||
"settings.option.experimental.closeButtonBehaviour.quit": "Chiudi Cider",
|
"settings.option.experimental.closeButtonBehaviour.quit": "Chiudi Cider",
|
||||||
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "Minimizza",
|
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "Minimizza",
|
||||||
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "Minimizza Nel Tray",
|
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "Minimizza Nel Tray",
|
||||||
// Refer to term.disabled & term.enabled
|
|
||||||
|
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.notTurnedOn": "Spazializzazione Audio è disattivata. Attivala prima.",
|
"spatial.notTurnedOn": "Spazializzazione Audio è disattivata. Attivala prima.",
|
||||||
"spatial.spatialProperties" : "Proprietà Spaziali",
|
"spatial.spatialProperties": "Proprietà Spaziali",
|
||||||
"spatial.width" : "Larghezza",
|
"spatial.width": "Larghezza",
|
||||||
"spatial.height" : "Altezza",
|
"spatial.height": "Altezza",
|
||||||
"spatial.depth" : "Profondità",
|
"spatial.depth": "Profondità",
|
||||||
"spatial.gain" : "Guadagno",
|
"spatial.gain": "Guadagno",
|
||||||
"spatial.roomMaterials" : "Materiali Stanza",
|
"spatial.roomMaterials": "Materiali Stanza",
|
||||||
"spatial.roomDimensions" : "Dimensioni Stanza",
|
"spatial.roomDimensions": "Dimensioni Stanza",
|
||||||
"spatial.roomPositions" : "Posizioni Stanza",
|
"spatial.roomPositions": "Posizioni Stanza",
|
||||||
"spatial.setDimensions" : "Imposta Dimensioni",
|
"spatial.setDimensions": "Imposta Dimensioni",
|
||||||
"spatial.setPositions" : "Imposta Posizioni",
|
"spatial.setPositions": "Imposta Posizioni",
|
||||||
"spatial.up" : "Sopra",
|
"spatial.up": "Sopra",
|
||||||
"spatial.front" : "In fronte",
|
"spatial.front": "In fronte",
|
||||||
"spatial.left" : "Sinistra",
|
"spatial.left": "Sinistra",
|
||||||
"spatial.right" : "Destra",
|
"spatial.right": "Destra",
|
||||||
"spatial.back" : "Dietro",
|
"spatial.back": "Dietro",
|
||||||
"spatial.down" : "Sotto",
|
"spatial.down": "Sotto",
|
||||||
"spatial.listener" : "Utente",
|
"spatial.listener": "Utente",
|
||||||
"spatial.audioSource" : "Fonte Audio",
|
"spatial.audioSource": "Fonte Audio",
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "Incompleto",
|
"settings.header.unfinished": "Incompleto",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "Telecomando Cider",
|
"remote.web.title": "Telecomando Cider",
|
||||||
"remote.web.description": "Leggi il codice QR per connettere il tuo telefono con questa istanza di Cider",
|
"remote.web.description": "Leggi il codice QR per connettere il tuo telefono con questa istanza di Cider",
|
||||||
|
|
||||||
// About
|
|
||||||
"about.thanks": "Grazie mille alla Team di Cider Collective e tutti i nostri contribuenti."
|
"about.thanks": "Grazie mille alla Team di Cider Collective e tutti i nostri contribuenti."
|
||||||
}
|
}
|
|
@ -1,30 +1,20 @@
|
||||||
{
|
{
|
||||||
// i18n Info
|
"i18n.languageName": "日本語",
|
||||||
"i18n.languageName": "日本語", // name of language in native language
|
"i18n.languageNameEnglish": "Japanese",
|
||||||
"i18n.languageNameEnglish": "Japanese", // name of language in English
|
"i18n.category": "main",
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
"i18n.authors": "@maikirakiwi",
|
||||||
"i18n.authors": "@maikirakiwi", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
"app.name": "Cider",
|
||||||
|
|
||||||
"date.format": "${y}年${m}月${d}日",
|
"date.format": "${y}年${m}月${d}日",
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "キャンセル",
|
"dialog.cancel": "キャンセル",
|
||||||
"dialog.ok": "OK",
|
"dialog.ok": "OK",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "ライブラリの更新中...",
|
"notification.updatingLibrarySongs": "ライブラリの更新中...",
|
||||||
"notification.updatingLibraryAlbums": "ライブラリの更新中...",
|
"notification.updatingLibraryAlbums": "ライブラリの更新中...",
|
||||||
"notification.updatingLibraryArtists": "ライブラリの更新中...",
|
"notification.updatingLibraryArtists": "ライブラリの更新中...",
|
||||||
|
"term.appleMusic": "Apple Music",
|
||||||
// Terms
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
"term.appleMusic": "Apple Music", // Follows brand term
|
"term.itunes": "iTunes",
|
||||||
"term.applePodcasts": "Apple Podcasts", // Follows brand term
|
"term.github": "GitHub",
|
||||||
"term.itunes": "iTunes", // Follows brand term
|
"term.discord": "Discord",
|
||||||
"term.github": "GitHub", // Follows brand term
|
|
||||||
"term.discord": "Discord", // Follows brand term
|
|
||||||
"term.learnMore": "詳しい情報",
|
"term.learnMore": "詳しい情報",
|
||||||
"term.accountSettings": "アカウント設定",
|
"term.accountSettings": "アカウント設定",
|
||||||
"term.logout": "サインアウト",
|
"term.logout": "サインアウト",
|
||||||
|
@ -63,6 +53,7 @@
|
||||||
"term.sortBy.genre": "ジャンル",
|
"term.sortBy.genre": "ジャンル",
|
||||||
"term.sortBy.releaseDate": "配信開始日",
|
"term.sortBy.releaseDate": "配信開始日",
|
||||||
"term.sortBy.duration": "時間",
|
"term.sortBy.duration": "時間",
|
||||||
|
"term.sortBy.dateAdded": "追加日",
|
||||||
"term.sortOrder": "並べ替え",
|
"term.sortOrder": "並べ替え",
|
||||||
"term.sortOrder.ascending": "昇順",
|
"term.sortOrder.ascending": "昇順",
|
||||||
"term.sortOrder.descending": "降順",
|
"term.sortOrder.descending": "降順",
|
||||||
|
@ -105,7 +96,7 @@
|
||||||
"term.language": "言語",
|
"term.language": "言語",
|
||||||
"term.noLyrics": "ローディング。。 / 歌詞が見つからない / 器楽曲.",
|
"term.noLyrics": "ローディング。。 / 歌詞が見つからない / 器楽曲.",
|
||||||
"term.copyright": "著作権",
|
"term.copyright": "著作権",
|
||||||
"term.rightsReserved": "All Rights Reserved.", // Translation does not exist in Japanese
|
"term.rightsReserved": "All Rights Reserved.",
|
||||||
"term.sponsor": "スポンサーになりましょう",
|
"term.sponsor": "スポンサーになりましょう",
|
||||||
"term.ciderTeam": "Cider チーム",
|
"term.ciderTeam": "Cider チーム",
|
||||||
"term.developer": "開発者",
|
"term.developer": "開発者",
|
||||||
|
@ -113,13 +104,16 @@
|
||||||
"term.contributors": "貢献者",
|
"term.contributors": "貢献者",
|
||||||
"term.equalizer": "イコライザー",
|
"term.equalizer": "イコライザー",
|
||||||
"term.reset": "リセット",
|
"term.reset": "リセット",
|
||||||
"term.tracks": "曲", // Assume x amount of tracks. e.g. 50 tracks
|
"term.track": {
|
||||||
|
"one": "曲",
|
||||||
|
"other": "曲"
|
||||||
|
},
|
||||||
|
"term.tracks": "曲",
|
||||||
"term.videos": "ビデオ",
|
"term.videos": "ビデオ",
|
||||||
"term.menu": "メニュー",
|
"term.menu": "メニュー",
|
||||||
"term.check": "確認",
|
"term.check": "確認",
|
||||||
"term.aboutArtist": "{{artistName}}について", // e.g. 'About Doja Cat'
|
"term.aboutArtist": "{{artistName}}について",
|
||||||
|
"term.version": "バージョン",
|
||||||
// Home
|
|
||||||
"home.title": "ホーム",
|
"home.title": "ホーム",
|
||||||
"home.recentlyPlayed": "最近の再生",
|
"home.recentlyPlayed": "最近の再生",
|
||||||
"home.recentlyAdded": "最近追加した項目",
|
"home.recentlyAdded": "最近追加した項目",
|
||||||
|
@ -128,14 +122,10 @@
|
||||||
"home.madeForYou": "あなたにおすすめ",
|
"home.madeForYou": "あなたにおすすめ",
|
||||||
"home.friendsListeningTo": "友達が聴いている",
|
"home.friendsListeningTo": "友達が聴いている",
|
||||||
"home.followedArtists": "フォローしているアーティスト",
|
"home.followedArtists": "フォローしているアーティスト",
|
||||||
|
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "Apple Musicのサブスクリプションが必要です。",
|
"error.appleMusicSubRequired": "Apple Musicのサブスクリプションが必要です。",
|
||||||
"error.connectionError": "Apple Musicに接続できません。",
|
"error.connectionError": "Apple Musicに接続できません。",
|
||||||
"error.noResults": "見つかりませんでした",
|
"error.noResults": "見つかりませんでした",
|
||||||
"error.noResults.description": "もう一度お試しください。",
|
"error.noResults.description": "もう一度お試しください。",
|
||||||
|
|
||||||
//Podcasts
|
|
||||||
"podcast.followOnCider": "Ciderでフォロー",
|
"podcast.followOnCider": "Ciderでフォロー",
|
||||||
"podcast.followedOnCider": "フォロー中",
|
"podcast.followedOnCider": "フォロー中",
|
||||||
"podcast.subscribeOnItunes": "iTunesで購読",
|
"podcast.subscribeOnItunes": "iTunesで購読",
|
||||||
|
@ -144,8 +134,6 @@
|
||||||
"podcast.episodes": "番組",
|
"podcast.episodes": "番組",
|
||||||
"podcast.playEpisode": "再生",
|
"podcast.playEpisode": "再生",
|
||||||
"podcast.website": "Podcast ウェブ",
|
"podcast.website": "Podcast ウェブ",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "ライブラリに追加",
|
"action.addToLibrary": "ライブラリに追加",
|
||||||
"action.addToLibrary.success": "ライブラリに追加されました",
|
"action.addToLibrary.success": "ライブラリに追加されました",
|
||||||
"action.addToLibrary.error": "ライブラリへの追加に失敗しました",
|
"action.addToLibrary.error": "ライブラリへの追加に失敗しました",
|
||||||
|
@ -190,13 +178,19 @@
|
||||||
"action.tray.show": "表示",
|
"action.tray.show": "表示",
|
||||||
"action.update": "アップデート",
|
"action.update": "アップデート",
|
||||||
"action.copy": "コピー",
|
"action.copy": "コピー",
|
||||||
"action.newpreset": "ニュープリセット", // Equalizer Preset
|
"action.newpreset": "ニュープリセット",
|
||||||
"action.deletepreset": "プリセットを削除", // Equalizer Preset
|
"action.deletepreset": "プリセットを削除",
|
||||||
|
"settings.header.general": "一般",
|
||||||
// Settings - Audio
|
"settings.header.general.description": "Ciderの一般設定",
|
||||||
|
"settings.option.general.language.main": "メイン",
|
||||||
|
"settings.option.general.language.fun": "荒らし",
|
||||||
|
"settings.option.general.language.unsorted": "未分類",
|
||||||
|
"settings.option.general.updateCider": "Cider 更新",
|
||||||
"settings.header.audio": "オーディオ",
|
"settings.header.audio": "オーディオ",
|
||||||
"settings.header.audio.description": "Ciderのオーディオ設定",
|
"settings.header.audio.description": "Ciderのオーディオ設定",
|
||||||
"settings.option.audio.quality": "音質", // Dropdown
|
"settings.option.audio.volumeStep": "音量調整のステップ",
|
||||||
|
"settings.option.audio.maxVolume": "最大音量",
|
||||||
|
"settings.option.audio.quality": "音質",
|
||||||
"settings.header.audio.quality.hireslossless": "ハイレゾロスレス",
|
"settings.header.audio.quality.hireslossless": "ハイレゾロスレス",
|
||||||
"settings.header.audio.quality.hireslossless.description": "(最大解像度 24 ビット/192 kHz)",
|
"settings.header.audio.quality.hireslossless.description": "(最大解像度 24 ビット/192 kHz)",
|
||||||
"settings.header.audio.quality.lossless": "ロスレス",
|
"settings.header.audio.quality.lossless": "ロスレス",
|
||||||
|
@ -205,81 +199,65 @@
|
||||||
"settings.header.audio.quality.high": "高品質",
|
"settings.header.audio.quality.high": "高品質",
|
||||||
"settings.header.audio.quality.standard": "高効率",
|
"settings.header.audio.quality.standard": "高効率",
|
||||||
"settings.header.audio.quality.auto": "自動",
|
"settings.header.audio.quality.auto": "自動",
|
||||||
"settings.option.audio.seamlessTransition": "曲間なしで再生", // Toggle
|
"settings.option.audio.seamlessTransition": "曲間なしで再生",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "先進的な機能", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality": "先進的な機能",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "AudioContext 機能を有効にすると、オーディオノーマライズ、空間オーディオ、イコライザーなどの機能を使用できますが、音が途切れるかもしれません。", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.description": "AudioContext 機能を有効にすると、オーディオノーマライズ、空間オーディオ、イコライザーなどの機能を使用できますが、音が途切れるかもしれません。",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider AEP™️", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "圧縮音源を高解像度に処理することによって、ロスレス相当の音質に向上させます。", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "圧縮音源を高解像度に処理することによって、ロスレス相当の音質に向上させます。",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "AEPの強さ", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAPの強さ",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)",
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)",
|
||||||
"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": "オーディオノーマライズ", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "オーディオノーマライズ",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "さまざまな曲の音量を均一にし、より整った音を楽しめるようにする機能です。",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "さまざまな曲の音量を均一にし、より整った音を楽しめるようにする機能です。",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "オーディオ空間化", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "オーディオ空間化",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "オーディオを空間に分散させる機能です。 (ドルビーアトモスではありません)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "オーディオを空間に分散させる機能です。 (ドルビーアトモスではありません)",
|
||||||
|
|
||||||
// Settings - Visual
|
|
||||||
"settings.header.visual": "ビジュアル",
|
"settings.header.visual": "ビジュアル",
|
||||||
"settings.header.visual.description": "Ciderのビジュアル設定",
|
"settings.header.visual.description": "Ciderのビジュアル設定",
|
||||||
"settings.option.visual.windowBackgroundStyle": "アプリウインドウの背景スタイル", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "アプリウインドウの背景スタイル",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "なし",
|
"settings.header.visual.windowBackgroundStyle.none": "なし",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "アートワーク",
|
"settings.header.visual.windowBackgroundStyle.artwork": "アートワーク",
|
||||||
"settings.option.visual.animatedArtwork": "アニメーションアートワーク", // Dropdown
|
"settings.option.visual.animatedArtwork": "アニメーションアートワーク",
|
||||||
"settings.header.visual.animatedArtwork.always": "常に表示",
|
"settings.header.visual.animatedArtwork.always": "常に表示",
|
||||||
"settings.header.visual.animatedArtwork.limited": "アーティストページのみ表示",
|
"settings.header.visual.animatedArtwork.limited": "アーティストページのみ表示",
|
||||||
"settings.header.visual.animatedArtwork.disable": "オフ",
|
"settings.header.visual.animatedArtwork.disable": "オフ",
|
||||||
"settings.option.visual.animatedArtworkQuality": "アニメーションアートワークの品質", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "アニメーションアートワークの品質",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "低",
|
"settings.header.visual.animatedArtworkQuality.low": "低",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "中",
|
"settings.header.visual.animatedArtworkQuality.medium": "中",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "高",
|
"settings.header.visual.animatedArtworkQuality.high": "高",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "超高",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "超高",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "最高",
|
"settings.header.visual.animatedArtworkQuality.extreme": "最高",
|
||||||
"settings.option.visual.animatedWindowBackground": "アプリウィンドウの背景をアニメーション化", // Toggle
|
"settings.option.visual.animatedWindowBackground": "アプリウィンドウの背景をアニメーション化",
|
||||||
"settings.option.visual.hardwareAcceleration": "ハードウェア アクセラレーション", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "ハードウェア アクセラレーション",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "アプリを再起動する必要があります",
|
"settings.option.visual.hardwareAcceleration.description": "アプリを再起動する必要があります",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "既定",
|
"settings.header.visual.hardwareAcceleration.default": "既定",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.header.visual.theme": "テーマ",
|
||||||
"settings.option.visual.showPersonalInfo": "プロフィールを表示", // Toggle
|
"settings.option.visual.theme.default": "Cider",
|
||||||
|
"settings.option.visual.theme.dark": "ダーク",
|
||||||
// Settings - General (Reserved)
|
"settings.option.visual.showPersonalInfo": "プロフィールを表示",
|
||||||
"settings.header.general": "一般",
|
|
||||||
"settings.header.general.description": "Ciderの一般設定",
|
|
||||||
|
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "歌詞",
|
"settings.header.lyrics": "歌詞",
|
||||||
"settings.header.lyrics.description": "歌詞の表示設定",
|
"settings.header.lyrics.description": "歌詞の表示設定",
|
||||||
"settings.option.lyrics.enableMusixmatch": "Musixmatchで歌詞を表示する", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "Musixmatchで歌詞を表示する",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "カラオケモードを有効にする (Musixmatchのみ)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "カラオケモードを有効にする (Musixmatchのみ)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "歌詞の優先言語", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "歌詞の優先言語",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "YouTubeの歌詞をミュージックビデオに使用する", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "YouTubeの歌詞をミュージックビデオに使用する",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "アプリと連携",
|
"settings.header.connectivity": "アプリと連携",
|
||||||
"settings.header.connectivity.description": "Ciderの連携設定",
|
"settings.header.connectivity.description": "Ciderの連携設定",
|
||||||
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "'Cider' を表示する",
|
"settings.header.connectivity.discordRPC.cider": "'Cider' を表示する",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "'Apple Music' を表示する",
|
"settings.header.connectivity.discordRPC.appleMusic": "'Apple Music' を表示する",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "一時停止時にDiscord Rich Presenceをクリアする", // Toggle
|
"settings.option.connectivity.discordRPC.clearOnPause": "一時停止時にDiscord Rich Presenceをクリアする",
|
||||||
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling", // Option to Connect
|
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling",
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble Delay (%)",
|
"settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble Delay (%)",
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Enable LastFM Now Playing",
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Enable LastFM Now Playing",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (LastFM)",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (LastFM)",
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - General - Update Cider
|
|
||||||
"settings.option.general.updateCider": "Cider 更新", // Button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "試験的な機能",
|
"settings.header.experimental": "試験的な機能",
|
||||||
"settings.header.experimental.description": "開発中の実験的な機能は不完全で不安定である可能性があります",
|
"settings.header.experimental.description": "開発中の実験的な機能は不完全で不安定である可能性があります",
|
||||||
"settings.option.experimental.compactUI": "コンパクトインターフェース", // Toggle
|
"settings.option.experimental.compactUI": "コンパクトインターフェース",
|
||||||
"settings.option.experimental.close_button_hide": "「閉じる」ボタンでアプリを隠します", // Dropdown
|
"settings.option.window.close_button_hide": "「閉じる」ボタンでアプリを隠します",
|
||||||
|
"settings.option.experimental.copy_log": "ログをコピーする",
|
||||||
// Refer to term.disabled & term.enabled
|
"settings.option.experimental.inline_playlists": "プレイリストをインラインで表示",
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.spatialProperties": "空間化のプロパティ",
|
"spatial.spatialProperties": "空間化のプロパティ",
|
||||||
"spatial.width": "幅",
|
"spatial.width": "幅",
|
||||||
"spatial.height": "高さ",
|
"spatial.height": "高さ",
|
||||||
|
@ -298,14 +276,8 @@
|
||||||
"spatial.down": "下",
|
"spatial.down": "下",
|
||||||
"spatial.listener": "リスナー",
|
"spatial.listener": "リスナー",
|
||||||
"spatial.audioSource": "音源",
|
"spatial.audioSource": "音源",
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "未完成",
|
"settings.header.unfinished": "未完成",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "Cider リモート",
|
"remote.web.title": "Cider リモート",
|
||||||
"remote.web.description": "QRコードを使用して、Ciderとスマートフォンをペアリングする",
|
"remote.web.description": "QRコードを使用して、Ciderとスマートフォンをペアリングする",
|
||||||
|
|
||||||
//About
|
|
||||||
"about.thanks": "Cider Collective とご協力いただいた貢献者様に感謝申し上げます。"
|
"about.thanks": "Cider Collective とご協力いただいた貢献者様に感謝申し上げます。"
|
||||||
}
|
}
|
395
src/i18n/ko_KR.json
Normal file
|
@ -0,0 +1,395 @@
|
||||||
|
{
|
||||||
|
"i18n.languageName": "한국어 (KR)",
|
||||||
|
"i18n.languageNameEnglish": "Korean (KR)",
|
||||||
|
"i18n.category": "main",
|
||||||
|
"i18n.authors": "@Hazealign @iodes",
|
||||||
|
"app.name": "Cider",
|
||||||
|
"date.format": "${y}. ${m}. ${d}",
|
||||||
|
"dialog.cancel": "취소",
|
||||||
|
"dialog.ok": "확인",
|
||||||
|
"notification.updatingLibrarySongs": "라이브러리 노래 업데이트 중...",
|
||||||
|
"notification.updatingLibraryAlbums": "라이브러리 앨범 업데이트 중...",
|
||||||
|
"notification.updatingLibraryArtists": "라이브러리 아티스트 업데이트 중...",
|
||||||
|
"term.appleInc": "Apple Inc.",
|
||||||
|
"term.appleMusic": "Apple Music",
|
||||||
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
"term.itunes": "iTunes",
|
||||||
|
"term.github": "GitHub",
|
||||||
|
"term.discord": "Discord",
|
||||||
|
"term.learnMore": "더 알아보기",
|
||||||
|
"term.accountSettings": "계정 설정",
|
||||||
|
"term.logout": "로그아웃",
|
||||||
|
"term.login": "로그인",
|
||||||
|
"term.about": "정보",
|
||||||
|
"term.privateSession": "개인 세션",
|
||||||
|
"term.queue": "대기열",
|
||||||
|
"term.history": "기록",
|
||||||
|
"term.search": "검색",
|
||||||
|
"term.library": "라이브러리",
|
||||||
|
"term.listenNow": "지금 듣기",
|
||||||
|
"term.browse": "둘러보기",
|
||||||
|
"term.radio": "라디오",
|
||||||
|
"term.recentlyAdded": "최근 추가된 항목",
|
||||||
|
"term.songs": "노래",
|
||||||
|
"term.albums": "앨범",
|
||||||
|
"term.artists": "아티스트",
|
||||||
|
"term.podcasts": "팟캐스트",
|
||||||
|
"term.playlists": "플레이리스트",
|
||||||
|
"term.playlist": "플레이리스트",
|
||||||
|
"term.newPlaylist": "새로운 플레이리스트",
|
||||||
|
"term.newPlaylistFolder": "새로운 플레이리스트 폴더",
|
||||||
|
"term.createNewPlaylist": "새로운 플레이리스트 만들기",
|
||||||
|
"term.createNewPlaylistFolder": "새로운 플레이리스트 폴더 만들기",
|
||||||
|
"term.deletePlaylist": "정말 플레이리스트를 삭제하시겠습니까?",
|
||||||
|
"term.play": "재생",
|
||||||
|
"term.pause": "일시 정지",
|
||||||
|
"term.previous": "이전",
|
||||||
|
"term.next": "다음",
|
||||||
|
"term.shuffle": "셔플",
|
||||||
|
"term.repeat": "반복",
|
||||||
|
"term.volume": "볼륨",
|
||||||
|
"term.mute": "음소거",
|
||||||
|
"term.unmute": "음소거 해제",
|
||||||
|
"term.share": "공유",
|
||||||
|
"term.share.success": "클립보드에 복사됨",
|
||||||
|
"term.settings": "설정",
|
||||||
|
"term.seeAll": "모두 보기",
|
||||||
|
"term.sortBy": "정렬 방식",
|
||||||
|
"term.sortBy.album": "앨범",
|
||||||
|
"term.sortBy.artist": "아티스트",
|
||||||
|
"term.sortBy.name": "이름",
|
||||||
|
"term.sortBy.genre": "장르",
|
||||||
|
"term.sortBy.releaseDate": "출시일",
|
||||||
|
"term.sortBy.duration": "재생시간",
|
||||||
|
"term.sortBy.dateAdded": "추가된 날짜",
|
||||||
|
"term.sortOrder": "ㄱ-ㅎ",
|
||||||
|
"term.sortOrder.ascending": "오름차순",
|
||||||
|
"term.sortOrder.descending": "내림차순",
|
||||||
|
"term.viewAs": "표시 방식",
|
||||||
|
"term.viewAs.coverArt": "커버아트",
|
||||||
|
"term.viewAs.list": "목록",
|
||||||
|
"term.size": "크기",
|
||||||
|
"term.size.normal": "일반",
|
||||||
|
"term.size.compact": "간단히",
|
||||||
|
"term.enable": "활성화",
|
||||||
|
"term.disable": "비활성화",
|
||||||
|
"term.enabled": "활성화",
|
||||||
|
"term.disabled": "비활성화",
|
||||||
|
"term.connect": "연결",
|
||||||
|
"term.connecting": "연결 중",
|
||||||
|
"term.disconnect": "연결 끊김",
|
||||||
|
"term.authed": "인증됨",
|
||||||
|
"term.confirm": "승인하시겠습니까?",
|
||||||
|
"term.more": "더",
|
||||||
|
"term.less": "적게",
|
||||||
|
"term.showMore": "더 보기",
|
||||||
|
"term.showLess": "적게 보기",
|
||||||
|
"term.topSongs" : "인기곡",
|
||||||
|
"term.latestReleases": "최신곡",
|
||||||
|
"term.time.added": "추가",
|
||||||
|
"term.time.released": "발매일",
|
||||||
|
"term.time.updated": "업데이트일",
|
||||||
|
"term.time.days": "일",
|
||||||
|
"term.time.day": "일",
|
||||||
|
"term.time.hours": "시간",
|
||||||
|
"term.time.hour": "시간",
|
||||||
|
"term.time.minutes": "분",
|
||||||
|
"term.time.minute": "분",
|
||||||
|
"term.time.seconds": "초",
|
||||||
|
"term.time.second": "초",
|
||||||
|
"term.fullscreenView": "전체 화면",
|
||||||
|
"term.defaultView": "기본 화면",
|
||||||
|
"term.audioSettings": "오디오 설정",
|
||||||
|
"term.audioControls": "볼륨 제어",
|
||||||
|
"term.clearAll": "비우기",
|
||||||
|
"term.recentStations": "최근 스테이션",
|
||||||
|
"term.language": "언어",
|
||||||
|
"term.funLanguages": "재미있는",
|
||||||
|
"term.noLyrics": "불러오는 중... / 가사를 찾을 수 없습니다./ 연주곡",
|
||||||
|
"term.copyright": "Copyright",
|
||||||
|
"term.rightsReserved": "All Rights Reserved.",
|
||||||
|
"term.sponsor": "프로젝트 후원하기",
|
||||||
|
"term.ciderTeam": "Cider 팀",
|
||||||
|
"term.developer": "개발자",
|
||||||
|
"term.socialTeam": "소셜 팀",
|
||||||
|
"term.socials": "소셜",
|
||||||
|
"term.contributors": "기여자",
|
||||||
|
"term.equalizer": "이퀄라이저",
|
||||||
|
"term.reset": "초기화",
|
||||||
|
"term.tracks": "트랙",
|
||||||
|
"term.track": {
|
||||||
|
"one" : "트랙",
|
||||||
|
"other" : "트랙"
|
||||||
|
},
|
||||||
|
"term.videos": "비디오",
|
||||||
|
"term.menu": "메뉴",
|
||||||
|
"term.check": "확인",
|
||||||
|
"term.aboutArtist": "{{artistName}}에 대하여",
|
||||||
|
"term.topResult": "상위 결과",
|
||||||
|
"term.sharedPlaylists": "공유 플레이리스트",
|
||||||
|
"term.people": "프로필",
|
||||||
|
"term.newpreset.name": "새 이퀄라이저 프리셋",
|
||||||
|
"term.addedpreset": "추가된 프리셋",
|
||||||
|
"term.deletepreset.warn": "정말로 프리셋을 삭제하시겠습니까?",
|
||||||
|
"term.deletedpreset": "프리셋 삭제",
|
||||||
|
"term.defaultPresets": "기본 프리셋",
|
||||||
|
"term.userPresets": "사용자 프리셋",
|
||||||
|
"term.requestError": "요청에 문제가 있습니다.",
|
||||||
|
"term.song.link.generate": "song.link 공유 URL 가져오는 중...",
|
||||||
|
"term.musicVideos": "뮤직 비디오",
|
||||||
|
"term.stations": "스테이션",
|
||||||
|
"term.curators": "큐레이터",
|
||||||
|
"term.appleCurators": "애플 큐레이터",
|
||||||
|
"term.radioShows": "라디오 쇼",
|
||||||
|
"term.recordLabels": "레코드 레이블",
|
||||||
|
"term.videoExtras": "추가 비디오",
|
||||||
|
"term.top": "상위",
|
||||||
|
"term.version": "버전",
|
||||||
|
"term.noVideos": "발견된 비디오가 없습니다.",
|
||||||
|
"term.plugin": "플러그인",
|
||||||
|
"term.pluginMenu": "플러그인 메뉴",
|
||||||
|
"term.pluginMenu.none": "대화형 플러그인이 없습니다.",
|
||||||
|
"term.replay": "리플레이",
|
||||||
|
"term.uniqueAlbums": "고유한 앨범",
|
||||||
|
"term.uniqueArtists": "고유한 아티스트",
|
||||||
|
"term.uniqueSongs": "고유한 노래",
|
||||||
|
"term.topArtists": "상위 아티스트",
|
||||||
|
"term.listenedTo": "감상:",
|
||||||
|
"term.times": "번",
|
||||||
|
"term.topAlbums": "상위 앨범",
|
||||||
|
"term.plays": "재생",
|
||||||
|
"term.topGenres": "상위 장르",
|
||||||
|
"term.confirmLogout": "정말로 로그아웃하시겠습니까?",
|
||||||
|
"home.title": "홈",
|
||||||
|
"home.recentlyPlayed": "최근 재생된 항목",
|
||||||
|
"home.recentlyAdded": "최근 추가된 항목",
|
||||||
|
"home.artistsFeed": "내 아티스트 피드",
|
||||||
|
"home.artistsFeed.noArtist": "아티스트를 팔로우하면 최근 발매곡이 표시됩니다.",
|
||||||
|
"home.madeForYou": "나만을 위한 추천",
|
||||||
|
"home.friendsListeningTo": "친구들이 듣는",
|
||||||
|
"home.followedArtists": "팔로우한 아티스트",
|
||||||
|
"error.appleMusicSubRequired": "Apple Music은 구독을 필요로 합니다.",
|
||||||
|
"error.connectionError": "Apple Music에 연결하지 못했습니다.",
|
||||||
|
"error.noResults": "결과 없음",
|
||||||
|
"error.noResults.description": "다시 시도해주세요.",
|
||||||
|
"podcast.followOnCider": "Cider에서 팔로우하기",
|
||||||
|
"podcast.followedOnCider": "팔로우 중",
|
||||||
|
"podcast.subscribeOnItunes": "iTunes에서 구독",
|
||||||
|
"podcast.subscribedOnItunes": "구독 중",
|
||||||
|
"podcast.itunesStore": "iTunes 스토어",
|
||||||
|
"podcast.episodes": "방송",
|
||||||
|
"podcast.playEpisode": "재생",
|
||||||
|
"podcast.website": "팟캐스트 사이트",
|
||||||
|
"action.addToLibrary": "보관함에 추가",
|
||||||
|
"action.addToLibrary.success": "보관함에 추가됨",
|
||||||
|
"action.addToLibrary.error": "보관함에 추가 실패",
|
||||||
|
"action.removeFromLibrary": "보관함에서 삭제",
|
||||||
|
"action.removeFromLibrary.success": "보관함에서 삭제됨",
|
||||||
|
"action.addToQueue": "대기열에 추가",
|
||||||
|
"action.addToQueue.success": "대기열에 추가됨",
|
||||||
|
"action.addToQueue.error": "대기열에 추가 실패",
|
||||||
|
"action.removeFromQueue": "대기열에서 삭제",
|
||||||
|
"action.removeFromQueue.success": "대기열에서 삭제됨",
|
||||||
|
"action.removeFromQueue.error": "대기열에서 삭제 실패",
|
||||||
|
"action.createPlaylist": "새로운 플레이리스트",
|
||||||
|
"action.addToPlaylist": "플레이리스트에 추가...",
|
||||||
|
"action.removeFromPlaylist": "플레이리스트에서 삭제",
|
||||||
|
"action.addToFavorites": "선호항목에 추가",
|
||||||
|
"action.follow": "팔로우",
|
||||||
|
"action.follow.success": "팔로우됨",
|
||||||
|
"action.follow.error": "팔로우 실패",
|
||||||
|
"action.unfollow": "언팔로우",
|
||||||
|
"action.unfollow.success": "언팔로우됨",
|
||||||
|
"action.unfollow.error": "언팔로우 실패",
|
||||||
|
"action.playNext": "바로 다음에 재생",
|
||||||
|
"action.playLater": "맨 나중에 재생",
|
||||||
|
"action.startRadio": "스테이션 생성",
|
||||||
|
"action.goToArtist": "아티스트 보기",
|
||||||
|
"action.goToAlbum": "앨범 보기",
|
||||||
|
"action.showInPlaylist": "플레이리스트에서 보기",
|
||||||
|
"action.showInAppleMusic": "Apple Music에서 보기",
|
||||||
|
"action.moveToTop": "맨 위로 이동",
|
||||||
|
"action.share": "공유",
|
||||||
|
"action.rename": "이름 편집하기",
|
||||||
|
"action.love": "좋아요",
|
||||||
|
"action.unlove": "좋아요 취소",
|
||||||
|
"action.dislike": "비슷한 항목의 제안 줄이기",
|
||||||
|
"action.undoDislike": "비슷한 항목의 제안 줄이기 실행 취소",
|
||||||
|
"action.showWebRemoteQR": "웹 리모트",
|
||||||
|
"action.playTracksNext": "${app.selectedMediaItems.length} 바로 다음에 재생",
|
||||||
|
"action.playTracksLater": "${app.selectedMediaItems.length} 맨 나중에 재생",
|
||||||
|
"action.removeTracks": "${self.selectedItems.length} 대기열에서 삭제",
|
||||||
|
"action.import": "가져오기",
|
||||||
|
"action.export": "내보내기",
|
||||||
|
"action.showAlbum": "전체 앨범 보기",
|
||||||
|
"action.tray.minimize": "트레이로 최소화",
|
||||||
|
"action.tray.quit": "종료",
|
||||||
|
"action.tray.show": "표시",
|
||||||
|
"action.update": "업데이트",
|
||||||
|
"action.install": "설치",
|
||||||
|
"action.copy": "복사",
|
||||||
|
"action.newpreset": "새 프리셋",
|
||||||
|
"action.deletepreset": "프리셋 삭제",
|
||||||
|
"action.open": "열기",
|
||||||
|
"action.relaunch.confirm": "Cider를 다시 시작하시겠습니까?",
|
||||||
|
"settings.header.general": "일반",
|
||||||
|
"settings.header.general.description": "Cider의 일반 기능을 설정합니다.",
|
||||||
|
"settings.option.general.language": "언어",
|
||||||
|
"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.fun": "재미를 위한 언어",
|
||||||
|
"settings.option.general.language.unsorted": "미분류",
|
||||||
|
"settings.option.general.updateCider": "Cider 업데이트",
|
||||||
|
"settings.option.general.updateCider.branch": "Cider 업데이트 브랜치",
|
||||||
|
"settings.option.general.updateCider.branch.description": "Cider를 업데이트할 브랜치 선택",
|
||||||
|
"settings.option.general.updateCider.branch.main": "안정적인 버전",
|
||||||
|
"settings.option.general.updateCider.branch.develop": "개발 버전",
|
||||||
|
"settings.notyf.updateCider.update-not-available": "업데이트 없음",
|
||||||
|
"settings.notyf.updateCider.update-downloaded": "업데이트가 다운로드되었습니다. 적용하려면 다시 시작하세요.",
|
||||||
|
"settings.notyf.updateCider.update-error": "Cider 업데이트 오류",
|
||||||
|
"settings.notyf.updateCider.update-timeout": "업데이트 시간 초과",
|
||||||
|
"settings.header.audio": "오디오",
|
||||||
|
"settings.header.audio.description": "Cider의 오디오 기능을 설정합니다.",
|
||||||
|
"settings.option.audio.volumeStep": "볼륨 단계",
|
||||||
|
"settings.option.audio.maxVolume": "최대 볼륨",
|
||||||
|
"settings.option.audio.quality": "오디오 음질",
|
||||||
|
"settings.header.audio.quality.hireslossless": "고해상도 무손실",
|
||||||
|
"settings.header.audio.quality.hireslossless.description": "최대 24비트/192 kHz",
|
||||||
|
"settings.header.audio.quality.lossless": "무손실",
|
||||||
|
"settings.header.audio.quality.lossless.description": "최대 24비트/48 kHz",
|
||||||
|
"settings.header.audio.quality.high": "고품질",
|
||||||
|
"settings.header.audio.quality.high.description": "256 kbps",
|
||||||
|
"settings.header.audio.quality.standard": "표준",
|
||||||
|
"settings.header.audio.quality.standard.description": "64 kbps",
|
||||||
|
"settings.option.audio.seamlessTransition": "크로스페이드 기능",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality": "고급 기능 활성화",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.description": "AudioContext 기능을 사용하도록 설정하면 오디오 노멀라이즈, 이퀄라이저 및 비주얼라이저와 같은 확장된 오디오 기능을 사용할 수 있지만 일부 시스템에서는 오디오 끊김이 발생할 수 있습니다.",
|
||||||
|
"settings.option.audio.audioLab": "Cider 오디오 실험실",
|
||||||
|
"settings.option.audio.audioLab.description": "Cider를 위해 자체 개발한 다양한 오디오 효과입니다.",
|
||||||
|
"settings.warn.audioLab.withoutAF": "Cider 오디오 실험실을 활성화하려면 AudioContext(고급 기능)가 필요합니다.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmth": "아날로그 따뜻함",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Korg Nutube 6P1을 모델로 한 아날로그 따뜻함을 시뮬레이션합니다.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "아날로그 따뜻함 강도",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "아날로그 따뜻함 모듈의 강도를 변경합니다.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "부드러움",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "따뜻함",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "모든 소리를 더욱 풍부하고 생생하게 만드는 음향 심리학적 향상입니다.",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP는 공간화와 호환되지 않습니다. 계속하려면 공간화를 비활성화하십시오.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP 강도",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "오디오 처리 강도를 변경합니다. (적극적으로 설정 시 바람직하지 않은 결과를 초래할 수 있습니다.)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "표준",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "적극적",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "오디오 노멀라이즈",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "개별 트랙의 최대 볼륨을 노멀라이즈하여 보다 균일한 청취 경험을 제공합니다.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "오디오 공간화",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "오디오를 공간화하고 더욱 삼차원적으로 만들어줍니다. (참고: 이 기능은 Dolby Atmos가 아닙니다.)",
|
||||||
|
"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.description": "Cider의 시각 기능을 설정합니다.",
|
||||||
|
"settings.option.visual.windowBackgroundStyle": "창 배경 스타일",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.none": "없음",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.artwork": "앨범 표지",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.image": "이미지",
|
||||||
|
"settings.option.visual.animatedArtwork": "움직이는 앨범 표지",
|
||||||
|
"settings.header.visual.animatedArtwork.always": "항상 활성화",
|
||||||
|
"settings.header.visual.animatedArtwork.limited": "페이지 및 특정 화면으로 제한",
|
||||||
|
"settings.header.visual.animatedArtwork.disable": "모든 곳에서 비활성화",
|
||||||
|
"settings.option.visual.animatedArtworkQuality": "움직이는 앨범 표지 화질",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.low": "낮음",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.medium": "중간",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.high": "높음",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "매우 높음",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.extreme": "최상",
|
||||||
|
"settings.option.visual.animatedWindowBackground": "움직이는 창 배경",
|
||||||
|
"settings.option.visual.hardwareAcceleration": "하드웨어 가속",
|
||||||
|
"settings.option.visual.hardwareAcceleration.description": "재시작 필요",
|
||||||
|
"settings.header.visual.hardwareAcceleration.default": "기본",
|
||||||
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
|
"settings.header.visual.theme": "테마",
|
||||||
|
"settings.option.visual.theme.github.download": "GitHub URL에서 설치",
|
||||||
|
"settings.option.visual.theme.github.explore": "GitHub 테마 살펴보기",
|
||||||
|
"settings.header.visual.theme.github.page": "GitHub의 테마",
|
||||||
|
"settings.option.visual.theme.github.install.confirm": "{{ repo }}을(를) 설치하시겠습니까?",
|
||||||
|
"settings.prompt.visual.theme.github.URL": "설치하려는 테마의 URL 입력",
|
||||||
|
"settings.notyf.visual.theme.install.success": "테마가 성공적으로 설치되었습니다.",
|
||||||
|
"settings.notyf.visual.theme.install.error": "테마 설치에 실패하였습니다.",
|
||||||
|
"settings.header.visual.plugin": "플러그인",
|
||||||
|
"settings.option.visual.plugin.github.download": "GitHub URL에서 설치",
|
||||||
|
"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": "설치하려는 플러그인의 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": "Cider",
|
||||||
|
"settings.option.visual.theme.dark": "Dark",
|
||||||
|
"settings.option.visual.showPersonalInfo": "개인 정보 보기",
|
||||||
|
"settings.header.lyrics": "가사",
|
||||||
|
"settings.header.lyrics.description": "Cider의 가사 기능을 설정합니다.",
|
||||||
|
"settings.option.lyrics.enableMusixmatch": "Musixmatch 가사 활성화",
|
||||||
|
"settings.option.lyrics.enableMusixmatchKaraoke": "노래방 모드 활성화 (Musixmatch만 가능)",
|
||||||
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 번역 선호 언어",
|
||||||
|
"settings.option.lyrics.enableYoutubeLyrics": "뮤직 비디오에 대한 YouTube 자막 활성화",
|
||||||
|
"settings.header.connectivity": "연동",
|
||||||
|
"settings.header.connectivity.description": "Cider의 연동 기능을 설정합니다.",
|
||||||
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
|
"settings.option.connectivity.playbackNotifications": "재생 알림",
|
||||||
|
"settings.header.connectivity.discordRPC.cider": "'Cider'로 표시하기",
|
||||||
|
"settings.header.connectivity.discordRPC.appleMusic": "'Apple Music'으로 표시하기",
|
||||||
|
"settings.option.connectivity.discordRPC.clearOnPause": "일시 정지 시 Discord Rich Presence을 끄기",
|
||||||
|
"settings.option.connectivity.lastfmScrobble": "Last.fm 스크로블링",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm 스크로블 딜레이 (%)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Last.fm 지금 재생 중 기능 활성화",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "곡 제목에서 피쳐링 아티스트 제외 (Last.fm)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "반복되는 트랙 필터링 (Last.fm)",
|
||||||
|
"settings.header.debug": "디버그",
|
||||||
|
"settings.option.debug.copy_log": "클립보드에 로그 복사",
|
||||||
|
"settings.option.debug.openAppData": "Cider 폴더 열기",
|
||||||
|
"settings.header.experimental": "실험실",
|
||||||
|
"settings.header.experimental.description": "Cider의 실험적 기능을 설정합니다.",
|
||||||
|
"settings.option.experimental.unknownPlugin": "알 수 없는 출처",
|
||||||
|
"settings.option.experimental.unknownPlugin.description": "Cider 플러그인 저장소 이외의 저장소에서 플러그인 설치 허용",
|
||||||
|
"settings.option.experimental.compactUI": "간결한 사용자 인터페이스",
|
||||||
|
"settings.option.experimental.close_button_hide": "닫기 버튼으로 애플리케이션 숨기기",
|
||||||
|
"settings.option.experimental.inline_playlists": "인라인 플레이리스트 및 앨범",
|
||||||
|
"settings.option.advanced.playlistTrackMapping": "플레이리스트 트랙 매핑",
|
||||||
|
"settings.option.advanced.playlistTrackMapping.description": "플레이리스트를 자세히 스캔하여 어떤 트랙이 어떤 플레이리스트에 있는지 확인합니다. 플레이리스트 캐시 빌드 시간이 크게 늘어날 수 있습니다.",
|
||||||
|
"settings.option.visual.transparent": "투명 프레임",
|
||||||
|
"settings.option.visual.transparent.description": "투명 프레임 (테마 지원 필요, 재실행 필요)",
|
||||||
|
"spatial.notTurnedOn": "오디오 공간화가 비활성화되었습니다. 사용하려면 먼저 활성화하십시오.",
|
||||||
|
"spatial.spatialProperties": "공간 설정",
|
||||||
|
"spatial.width": "길이",
|
||||||
|
"spatial.height": "높이",
|
||||||
|
"spatial.depth": "깊이",
|
||||||
|
"spatial.gain": "게인",
|
||||||
|
"spatial.roomMaterials": "방 재질",
|
||||||
|
"spatial.roomDimensions": "방 차원",
|
||||||
|
"spatial.roomPositions": "방 위치",
|
||||||
|
"spatial.setDimensions": "차원 설정",
|
||||||
|
"spatial.setPositions": "위치 설정",
|
||||||
|
"spatial.up": "위",
|
||||||
|
"spatial.front": "앞",
|
||||||
|
"spatial.left": "왼쪽",
|
||||||
|
"spatial.right": "오른쪽",
|
||||||
|
"spatial.back": "뒤",
|
||||||
|
"spatial.down": "아래",
|
||||||
|
"spatial.listener": "청취자",
|
||||||
|
"spatial.audioSource": "오디오 소스",
|
||||||
|
"settings.header.unfinished": "미완성",
|
||||||
|
"remote.web.title": "Cider 리모트",
|
||||||
|
"remote.web.description": "QR 코드를 스캔해서 Cider와 스마트폰 연결하기",
|
||||||
|
"about.thanks": "Cider Collective Team과 모든 기여자들에게 깊은 감사를 드립니다."
|
||||||
|
}
|
|
@ -1,342 +0,0 @@
|
||||||
{ // Base File
|
|
||||||
// i18n Info
|
|
||||||
"i18n.languageName": "한국어 (KR)", // name of language in native language
|
|
||||||
"i18n.languageNameEnglish": "Korean (KR)", // name of language in English
|
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
|
||||||
"i18n.authors": "@Hazealign", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
|
||||||
|
|
||||||
"date.format": "${y}. ${m}. ${d}",
|
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "취소",
|
|
||||||
"dialog.ok": "확인",
|
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "라이브러리의 노래를 업데이트하는 중입니다...",
|
|
||||||
"notification.updatingLibraryAlbums": "라이브러리의 앨범을 업데이트하는 중입니다...",
|
|
||||||
"notification.updatingLibraryArtists": "라이브러리의 아티스트를 업데이트하는 중입니다...",
|
|
||||||
|
|
||||||
// Terms
|
|
||||||
"term.appleInc": "Apple Inc.", // Follows brand term
|
|
||||||
"term.appleMusic": "Apple Music", // Follows brand term
|
|
||||||
"term.applePodcasts": "Apple Podcasts", // Follows brand term
|
|
||||||
"term.itunes": "iTunes", // Follows brand term
|
|
||||||
"term.github": "GitHub", // Follows brand term
|
|
||||||
"term.discord": "Discord", // Follows brand term
|
|
||||||
"term.learnMore": "더 알아보기",
|
|
||||||
"term.accountSettings": "계정 설정",
|
|
||||||
"term.logout": "로그아웃",
|
|
||||||
"term.login": "로그인",
|
|
||||||
"term.about": "정보",
|
|
||||||
"term.privateSession": "개인 세션",
|
|
||||||
"term.queue": "대기열",
|
|
||||||
"term.history": "청취 기록",
|
|
||||||
"term.search": "검색",
|
|
||||||
"term.library": "보관함",
|
|
||||||
"term.listenNow": "지금 듣기",
|
|
||||||
"term.browse": "둘러보기",
|
|
||||||
"term.radio": "라디오",
|
|
||||||
"term.recentlyAdded": "최근 추가된 항목",
|
|
||||||
"term.songs": "노래",
|
|
||||||
"term.albums": "앨범",
|
|
||||||
"term.artists": "아티스트",
|
|
||||||
"term.podcasts": "팟캐스트",
|
|
||||||
"term.playlists": "재생 목록",
|
|
||||||
"term.playlist": "재생 목록",
|
|
||||||
"term.newPlaylist": "새 재생 목록",
|
|
||||||
"term.newPlaylistFolder": "새 재생 목록 폴더",
|
|
||||||
"term.createNewPlaylist": "새 재생 목록 만들기",
|
|
||||||
"term.createNewPlaylistFolder": "새 재생 목록 폴더 만들기",
|
|
||||||
"term.deletePlaylist": "정말로 이 재생 목록을 삭제하시겠습니까?",
|
|
||||||
"term.play": "재생",
|
|
||||||
"term.pause": "일시 정지",
|
|
||||||
"term.previous": "이전",
|
|
||||||
"term.next": "다음",
|
|
||||||
"term.shuffle": "셔플",
|
|
||||||
"term.repeat": "반복",
|
|
||||||
"term.volume": "볼륨",
|
|
||||||
"term.mute": "음소거",
|
|
||||||
"term.unmute": "음소거 해제",
|
|
||||||
"term.share": "공유",
|
|
||||||
"term.share.success": "클립보드에 복사됨",
|
|
||||||
"term.settings": "설정",
|
|
||||||
"term.seeAll": "모두 보기",
|
|
||||||
"term.sortBy": "정렬",
|
|
||||||
"term.sortBy.album": "앨범명",
|
|
||||||
"term.sortBy.artist": "아티스트 이름",
|
|
||||||
"term.sortBy.name": "제목",
|
|
||||||
"term.sortBy.genre": "장르",
|
|
||||||
"term.sortBy.releaseDate": "발매일",
|
|
||||||
"term.sortBy.duration": "길이",
|
|
||||||
"term.sortOrder": "A-Z",
|
|
||||||
"term.sortOrder.ascending": "오름차순",
|
|
||||||
"term.sortOrder.descending": "내림차순",
|
|
||||||
"term.viewAs": "표시",
|
|
||||||
"term.viewAs.coverArt": "커버 아트",
|
|
||||||
"term.viewAs.list": "리스트",
|
|
||||||
"term.size": "크기",
|
|
||||||
"term.size.normal": "표준",
|
|
||||||
"term.size.compact": "컴팩트",
|
|
||||||
"term.enable": "켜기",
|
|
||||||
"term.disable": "끄기",
|
|
||||||
"term.enabled": "켜짐",
|
|
||||||
"term.disabled": "꺼짐",
|
|
||||||
"term.connect": "연결",
|
|
||||||
"term.connecting": "연결 중",
|
|
||||||
"term.disconnect": "연결 해제",
|
|
||||||
"term.authed": "인증됨",
|
|
||||||
"term.confirm": "진행하시겠습니까?",
|
|
||||||
"term.more": "추가",
|
|
||||||
"term.less": "줄이기",
|
|
||||||
"term.showMore": "더 보기",
|
|
||||||
"term.showLess": "덜 보기",
|
|
||||||
"term.topSongs": "많이 듣는 노래",
|
|
||||||
"term.latestReleases": "최근 발매된 노래",
|
|
||||||
"term.time.added": "추가됨",
|
|
||||||
"term.time.released": "발매됨",
|
|
||||||
"term.time.updated": "업데이트됨",
|
|
||||||
"term.time.hours": "시간",
|
|
||||||
"term.time.hour": "시간",
|
|
||||||
"term.time.minutes": "분",
|
|
||||||
"term.time.minute": "분",
|
|
||||||
"term.time.seconds": "초",
|
|
||||||
"term.time.second": "초",
|
|
||||||
"term.fullscreenView": "전체 화면 보기",
|
|
||||||
"term.defaultView": "윈도우 보기",
|
|
||||||
"term.audioSettings": "오디오 설정",
|
|
||||||
"term.clearAll": "모두 지우기",
|
|
||||||
"term.recentStations": "최근 스테이션",
|
|
||||||
"term.language": "언어",
|
|
||||||
"term.funLanguages": "재미를 위한 언어",
|
|
||||||
"term.noLyrics": "로딩 중... / 가사를 찾지 못했습니다. / Instrumental 곡일 수 있습니다.",
|
|
||||||
"term.copyright": "저작권",
|
|
||||||
"term.rightsReserved": "All Rights Reserved.",
|
|
||||||
"term.sponsor": "이 프로젝트를 후원하기",
|
|
||||||
"term.ciderTeam": "Cider 팀",
|
|
||||||
"term.developer": "개발자",
|
|
||||||
"term.socialTeam": "소셜 팀",
|
|
||||||
"term.socials": "소셜",
|
|
||||||
"term.contributors": "기여자",
|
|
||||||
"term.equalizer": "이퀄라이저",
|
|
||||||
"term.reset": "초기화",
|
|
||||||
"term.tracks": "곡", // Assume x amount of tracks. e.g. 50 tracks
|
|
||||||
"term.videos": "비디오",
|
|
||||||
"term.menu": "메뉴",
|
|
||||||
"term.check": "확인",
|
|
||||||
"term.aboutArtist": "{{artistName}}에 대하여", // e.g. 'About Doja Cat'
|
|
||||||
"term.topResult": "Top Result", // Search Results
|
|
||||||
"term.sharedPlaylists": "공유 플레이리스트", // Search Results
|
|
||||||
"term.people": "프로필", // Search Results
|
|
||||||
"term.newpreset.name": "새 이퀄라이저 프리셋", // Equalizer Preset
|
|
||||||
"term.addedpreset": "추가된 프리셋",
|
|
||||||
"term.deletepreset.warn": "정말로 프리셋을 삭제하시겠습니까?",
|
|
||||||
"term.deletedpreset": "프리셋 삭제",
|
|
||||||
"term.musicVideos": "뮤직 비디오", // Search page friendlyTypes
|
|
||||||
"term.stations": "스테이션",
|
|
||||||
"term.curators": "큐레이터",
|
|
||||||
"term.appleCurators": "애플 큐레이터",
|
|
||||||
"term.radioShows": "라디오 쇼",
|
|
||||||
"term.recordLabels": "레코드 레이블",
|
|
||||||
"term.videoExtras": "추가 비디오",
|
|
||||||
"term.top": "Top",
|
|
||||||
|
|
||||||
// Home
|
|
||||||
"home.title": "홈",
|
|
||||||
"home.recentlyPlayed": "최근 재생한 항목",
|
|
||||||
"home.recentlyAdded": "최근 추가된 항목",
|
|
||||||
"home.artistsFeed": "아티스트 피드",
|
|
||||||
"home.artistsFeed.noArtist": "좋아하는 아티스트를 팔로우해보세요.",
|
|
||||||
"home.madeForYou": "나만을 위한 추천",
|
|
||||||
"home.friendsListeningTo": "친구가 듣는 음악",
|
|
||||||
"home.followedArtists": "팔로우한 아티스트",
|
|
||||||
|
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "Apple Music은 구독을 필요로 합니다.",
|
|
||||||
"error.connectionError": "Apple Music에 연결하지 못했습니다.",
|
|
||||||
"error.noResults": "결과 없음",
|
|
||||||
"error.noResults.description": "다시 시도해주세요.",
|
|
||||||
|
|
||||||
// Podcasts
|
|
||||||
"podcast.followOnCider": "Cider에서 팔로우하기",
|
|
||||||
"podcast.followedOnCider": "팔로우 중",
|
|
||||||
"podcast.subscribeOnItunes": "iTunes에서 구독",
|
|
||||||
"podcast.subscribedOnItunes": "구독 중",
|
|
||||||
"podcast.itunesStore": "iTunes Store",
|
|
||||||
"podcast.episodes": "방송",
|
|
||||||
"podcast.playEpisode": "재생",
|
|
||||||
"podcast.website": "팟캐스트 사이트",
|
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "보관함에 추가",
|
|
||||||
"action.addToLibrary.success": "보관함에 추가됨",
|
|
||||||
"action.addToLibrary.error": "보관함에 추가하는데 실패함",
|
|
||||||
"action.removeFromLibrary": "보관함에서 삭제",
|
|
||||||
"action.removeFromLibrary.success": "보관함에서 삭제됨",
|
|
||||||
"action.addToQueue": "대기열에 추가",
|
|
||||||
"action.addToQueue.success": "대기열에 추가됨",
|
|
||||||
"action.addToQueue.error": "대기열에 추가하는데 실패함",
|
|
||||||
"action.removeFromQueue": "대기열에서 삭제",
|
|
||||||
"action.removeFromQueue.success": "대기열에서 삭제됨",
|
|
||||||
"action.removeFromQueue.error": "대기열에서 삭제하는데 실패함",
|
|
||||||
"action.createPlaylist": "새 재생 목록 만들기",
|
|
||||||
"action.addToPlaylist": "재생 목록에 추가",
|
|
||||||
"action.removeFromPlaylist": "재생 목록에서 삭제",
|
|
||||||
"action.addToFavorites": "즐겨찾기에 추가",
|
|
||||||
"action.follow": "팔로우",
|
|
||||||
"action.follow.success": "팔로우 중",
|
|
||||||
"action.follow.error": "팔로우 실패",
|
|
||||||
"action.unfollow": "언팔로우",
|
|
||||||
"action.unfollow.success": "언팔로우됨",
|
|
||||||
"action.unfollow.error": "언팔로우 실패",
|
|
||||||
"action.playNext": "바로 다음에 재생",
|
|
||||||
"action.playLater": "맨 나중에 재생",
|
|
||||||
"action.startRadio": "스테이션 생성",
|
|
||||||
"action.goToArtist": "아티스트 보기",
|
|
||||||
"action.goToAlbum": "앨범 보기",
|
|
||||||
"action.moveToTop": "위로 가기",
|
|
||||||
"action.share": "공유",
|
|
||||||
"action.rename": "편집",
|
|
||||||
"action.love": "좋아요",
|
|
||||||
"action.unlove": "좋아요 취소",
|
|
||||||
"action.dislike": "싫어요",
|
|
||||||
"action.undoDislike": "싫어요 취소",
|
|
||||||
"action.showWebRemoteQR": "웹 리모트",
|
|
||||||
"action.playTracksNext": "다음 ${app.selectedMediaItems.length}곡 재생",
|
|
||||||
"action.playTracksLater": "나중에 ${app.selectedMediaItems.length}곡 재생",
|
|
||||||
"action.removeTracks": "${self.selectedItems.length}곡을 대기열에서 삭제",
|
|
||||||
"action.import": "불러오기",
|
|
||||||
"action.export": "내보내기",
|
|
||||||
"action.showAlbum": "전체 앨범 보기",
|
|
||||||
"action.tray.minimize": "트레이에 최소화",
|
|
||||||
"action.tray.quit": "종료",
|
|
||||||
"action.tray.show": "보기",
|
|
||||||
"action.update": "업데이트",
|
|
||||||
"action.copy": "복사",
|
|
||||||
"action.newpreset": "새 프리셋", // Equalizer Preset
|
|
||||||
"action.deletepreset": "프리셋 삭제",
|
|
||||||
|
|
||||||
// Settings - General
|
|
||||||
"settings.header.general": "일반",
|
|
||||||
"settings.header.general.description": "Cider의 일반 기능을 설정합니다.",
|
|
||||||
"settings.option.general.language": "언어",
|
|
||||||
|
|
||||||
// Language optgroups
|
|
||||||
"settings.option.general.language.main": "언어",
|
|
||||||
"settings.option.general.language.fun": "재미를 위한 언어",
|
|
||||||
"settings.option.general.language.unsorted": "미분류",
|
|
||||||
|
|
||||||
// Update Cider
|
|
||||||
"settings.option.general.updateCider": "Cider 업데이트", // Button
|
|
||||||
|
|
||||||
// Settings - Audio
|
|
||||||
"settings.header.audio": "오디오",
|
|
||||||
"settings.header.audio.description": "Cider의 오디오 기능을 설정합니다.",
|
|
||||||
"settings.option.audio.quality": "오디오 음질", // Dropdown
|
|
||||||
"settings.header.audio.quality.high": "고품질",
|
|
||||||
"settings.header.audio.quality.low": "낮음",
|
|
||||||
"settings.header.audio.quality.auto": "자동",
|
|
||||||
"settings.option.audio.seamlessTransition": "크로스페이드 기능", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "추가 기능 설정", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "AudioContext 기능을 활성화하여 오디오 정규화, 이퀄라이저, 비쥬얼라이저 등의 기능을 쓸 수 있게 해줍니다. 일부 시스템에서는 오디오가 끊길 수 있습니다.",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "오디오 정규화", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "개별 트랙의 최대 볼륨을 정규화하여 보다 균일한 청취 경험을 제공합니다.",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "오디오 공간화", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "오디오를 공간화하고 더욱 3차원적으로 만들어줍니다. (참고: 이 기능은 Dolby Atmos가 아닙니다.)",
|
|
||||||
|
|
||||||
// Settings - Visual
|
|
||||||
"settings.header.visual": "시각",
|
|
||||||
"settings.header.visual.description": "Cider의 시각 기능을 설정합니다.",
|
|
||||||
"settings.option.visual.windowBackgroundStyle": "윈도우 배경 스타일", // Toggle
|
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "없음",
|
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "앨범 아트",
|
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "이미지",
|
|
||||||
"settings.option.visual.animatedArtwork": "애니메이션 앨범 표지", // Dropdown
|
|
||||||
"settings.header.visual.animatedArtwork.always": "항상 활성화",
|
|
||||||
"settings.header.visual.animatedArtwork.limited": "페이지나 특정 화면에서만 활성화",
|
|
||||||
"settings.header.visual.animatedArtwork.disable": "항상 비활성화",
|
|
||||||
"settings.option.visual.animatedArtworkQuality": "애니메이션 앨범 표지 화질", // Dropdown
|
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "낮음",
|
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "중간",
|
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "높음",
|
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "매우 높음",
|
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "최상",
|
|
||||||
"settings.option.visual.animatedWindowBackground": "움직이는 윈도우 배경", // Toggle
|
|
||||||
"settings.option.visual.hardwareAcceleration": "하드웨어 가속", // Dropdown
|
|
||||||
"settings.option.visual.hardwareAcceleration.description": "재시작을 필요로 합니다.",
|
|
||||||
"settings.header.visual.hardwareAcceleration.default": "기본",
|
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
|
||||||
"settings.header.visual.theme": "테마",
|
|
||||||
|
|
||||||
// Settings - Visual - Theme name
|
|
||||||
"settings.option.visual.theme.default": "Cider",
|
|
||||||
"settings.option.visual.theme.dark": "다크",
|
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.option.visual.showPersonalInfo": "개인 정보 보기", // Toggle
|
|
||||||
|
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "가사",
|
|
||||||
"settings.header.lyrics.description": "Cider의 가사 기능을 설정합니다.",
|
|
||||||
"settings.option.lyrics.enableMusixmatch": "Musixmatch 가사 활성화", // Toggle
|
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "노래방 모드 활성화 (Musixmatch만 가능)", // Toggle
|
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 번역 선호 언어", // Dropdown
|
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "뮤직 비디오에 대한 유튜브 자막 활성화", // Toggle
|
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "연동",
|
|
||||||
"settings.header.connectivity.description": "Cider의 연동 기능을 설정합니다.",
|
|
||||||
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
|
|
||||||
"settings.option.connectivity.playbackNotifications": "재생 알림", // Toggle
|
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "'Cider'로 표시하기",
|
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "'Apple Music'으로 표시하기",
|
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "일시 정지 시 Discord Rich Presence을 끄기", // Toggle
|
|
||||||
"settings.option.connectivity.lastfmScrobble": "Last.fm 스크로블링", // Option to Connect
|
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm 스크로블 딜레이 (%)",
|
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Last.fm Now Playing 기능 활성화",
|
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "곡 제목에서 피쳐링 아티스트를 제외하기 (Last.fm)",
|
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "루프 트랙을 필터하기 (Last.fm)",
|
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "실험실",
|
|
||||||
"settings.header.experimental.description": "Cider의 실험적 기능을 설정합니다.",
|
|
||||||
"settings.option.experimental.compactUI": "컴팩트 UI", // Toggle
|
|
||||||
"settings.option.experimental.close_button_hide": "닫기 버튼이 애플리케이션을 가릴 것입니다",
|
|
||||||
"settings.option.experimental.copy_log": "로그를 클립보드에 복사하기",
|
|
||||||
"settings.option.experimental.inline_playlists": "인라인 플레이리스트 및 앨범",
|
|
||||||
|
|
||||||
// Refer to term.disabled & term.enabled
|
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.notTurnedOn": "오디오 공간화가 비활성화되어있습니다. 사용하기 전에 먼저 활성화해주세요.",
|
|
||||||
"spatial.spatialProperties": "공간 설정",
|
|
||||||
"spatial.width": "길이",
|
|
||||||
"spatial.height": "높이",
|
|
||||||
"spatial.depth": "깊이",
|
|
||||||
"spatial.gain": "출력",
|
|
||||||
"spatial.roomMaterials": "방 재질",
|
|
||||||
"spatial.roomDimensions": "방 차원",
|
|
||||||
"spatial.roomPositions": "방 위치",
|
|
||||||
"spatial.setDimensions": "차원 설정",
|
|
||||||
"spatial.setPositions": "위치 설정",
|
|
||||||
"spatial.up": "위",
|
|
||||||
"spatial.front": "앞",
|
|
||||||
"spatial.left": "좌",
|
|
||||||
"spatial.right": "우",
|
|
||||||
"spatial.back": "뒤",
|
|
||||||
"spatial.down": "아래",
|
|
||||||
"spatial.listener": "사용자",
|
|
||||||
"spatial.audioSource": "오디오 소스",
|
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "미완성",
|
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "Cider 리모트",
|
|
||||||
"remote.web.description": "QR 코드를 스캔해서 Cider와 스마트폰을 연결하기",
|
|
||||||
|
|
||||||
// About
|
|
||||||
"about.thanks": "Cider Collective Team과 모든 기여자들에게 감사합니다."
|
|
||||||
}
|
|
306
src/i18n/pt_BR.json
Normal file
|
@ -0,0 +1,306 @@
|
||||||
|
{
|
||||||
|
"i18n.languageName": "Português (brasileiro)",
|
||||||
|
"i18n.languageNameEnglish": "Portuguese (Brazil)",
|
||||||
|
"i18n.category": "main",
|
||||||
|
"i18n.authors": "",
|
||||||
|
"app.name": "Cider",
|
||||||
|
"date.format": "${d} ${m}, ${y}",
|
||||||
|
"dialog.cancel": "Cancelar",
|
||||||
|
"dialog.ok": "OK",
|
||||||
|
"notification.updatingLibrarySongs": "Atualizando músicas na biblioteca...",
|
||||||
|
"notification.updatingLibraryAlbums": "Atualizando albuns na biblioteca...",
|
||||||
|
"notification.updatingLibraryArtists": "Atualizando artistas na biblioteca...",
|
||||||
|
"notification.connectionError": "Houve um problema a se conectar no Apple Music",
|
||||||
|
"term.appleMusic": "Apple Music",
|
||||||
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
"term.itunes": "iTunes",
|
||||||
|
"term.github": "GitHub",
|
||||||
|
"term.discord": "Discord",
|
||||||
|
"term.learnMore": "Saiba Mais",
|
||||||
|
"term.accountSettings": "Definições da Conta",
|
||||||
|
"term.logout": "Sair",
|
||||||
|
"term.login": "Entrar",
|
||||||
|
"term.about": "Sobre",
|
||||||
|
"term.privateSession": "Sessão Privada",
|
||||||
|
"term.queue": "Fila",
|
||||||
|
"term.search": "Procurar",
|
||||||
|
"term.library": "Biblioteca",
|
||||||
|
"term.listenNow": "Ouça Agora",
|
||||||
|
"term.browse": "Explorar",
|
||||||
|
"term.radio": "Radio",
|
||||||
|
"term.recentlyAdded": "Adicionado Recentemente",
|
||||||
|
"term.songs": "Músicas",
|
||||||
|
"term.albums": "Albuns",
|
||||||
|
"term.artists": "Artistas",
|
||||||
|
"term.podcasts": "Podcasts",
|
||||||
|
"term.playlists": "Playlists",
|
||||||
|
"term.playlist": "Playlist",
|
||||||
|
"term.play": "Tocar",
|
||||||
|
"term.pause": "Pausar",
|
||||||
|
"term.previous": "Anterior",
|
||||||
|
"term.next": "Próximo",
|
||||||
|
"term.shuffle": "Aleatório",
|
||||||
|
"term.repeat": "Repetir",
|
||||||
|
"term.volume": "Volume",
|
||||||
|
"term.mute": "Mudo",
|
||||||
|
"term.unmute": "Tirar o Mudo",
|
||||||
|
"term.share": "Compartilhar",
|
||||||
|
"term.settings": "Definições",
|
||||||
|
"term.seeAll": "Ver Tudo",
|
||||||
|
"term.sortBy": "Organizar Por",
|
||||||
|
"term.sortBy.album": "Album",
|
||||||
|
"term.sortBy.artist": "Artista",
|
||||||
|
"term.sortBy.name": "Nome",
|
||||||
|
"term.sortBy.genre": "Genero",
|
||||||
|
"term.sortBy.releaseDate": "Data de Lançamento",
|
||||||
|
"term.sortBy.duration": "Duração",
|
||||||
|
"term.sortOrder": "A-Z",
|
||||||
|
"term.sortOrder.ascending": "Ascendente",
|
||||||
|
"term.sortOrder.descending": "Descendente",
|
||||||
|
"term.viewAs": "Ver Como",
|
||||||
|
"term.viewAs.coverArt": "Capa",
|
||||||
|
"term.viewAs.list": "Lista",
|
||||||
|
"term.size": "Tamanho",
|
||||||
|
"term.size.normal": "Normal",
|
||||||
|
"term.size.compact": "Compacto",
|
||||||
|
"term.enable": "Ativar",
|
||||||
|
"term.disable": "Desativar",
|
||||||
|
"term.enabled": "Ativado",
|
||||||
|
"term.disabled": "Desativado",
|
||||||
|
"term.connect": "Conectar",
|
||||||
|
"term.disconnect": "Desconectar",
|
||||||
|
"term.connecting": "Conectando",
|
||||||
|
"term.confirm": "Confirmar?",
|
||||||
|
"term.more": "Mais",
|
||||||
|
"term.less": "Menos",
|
||||||
|
"term.showMore": "Mostrar Mais",
|
||||||
|
"term.showLess": "Mostrar Menos",
|
||||||
|
"term.topSongs": "Top de Músicas",
|
||||||
|
"term.latestReleases": "Ultimos Lançamentos",
|
||||||
|
"term.time.added": "Adicionado",
|
||||||
|
"term.time.released": "Lançado",
|
||||||
|
"term.time.updated": "Atualizado",
|
||||||
|
"term.fullscreenView": "Visualização em Tela Cheia",
|
||||||
|
"term.defaultView": "Visualização Normal",
|
||||||
|
"term.spacializedAudioSetting": "Definições de Audio Espacial",
|
||||||
|
"term.clearAll": "Limpar Tudo",
|
||||||
|
"term.language": "Idioma",
|
||||||
|
"term.recentStations": "Estações Recentes",
|
||||||
|
"term.funLanguages": "Fun",
|
||||||
|
"term.noLyrics": "Carregando... / Letras não achadas./ Instrumental.",
|
||||||
|
"term.copyright": "Copyright",
|
||||||
|
"term.rightsReserved": "Todos direitos reservados.",
|
||||||
|
"term.sponsor": "Patrocine esse projeto",
|
||||||
|
"term.ciderTeam": "Time Cider",
|
||||||
|
"term.developer": "Desenvolvedor",
|
||||||
|
"term.socialTeam": "Time social",
|
||||||
|
"term.socials": "Redes Sociais",
|
||||||
|
"term.contributors": "Contribuidores",
|
||||||
|
"term.equalizer": "Equalizador",
|
||||||
|
"term.reset": "Resetar",
|
||||||
|
"term.tracks": "músicas",
|
||||||
|
"term.videos": "Vídeos",
|
||||||
|
"term.menu": "Menu",
|
||||||
|
"term.check": "Checark",
|
||||||
|
"term.aboutArtist": "Sobre {{artistName}}",
|
||||||
|
"term.topResult": "Melhor resultado",
|
||||||
|
"term.sharedPlaylists": "Playlists compartilhadas",
|
||||||
|
"term.people": "Pessoas",
|
||||||
|
"term.newpreset.name": "Nova predefinição para o equalizador",
|
||||||
|
"term.addedpreset": "Predefinição adicionada",
|
||||||
|
"term.deletepreset.warn": "Certeza que quer apagar essa predefinição?",
|
||||||
|
"term.deletedpreset": "Predefinição removida",
|
||||||
|
"term.defaultPresets": "predefinições padrão",
|
||||||
|
"term.userPresets": "Predefinições do usuário",
|
||||||
|
"term.requestError": "There was a problem with the request.",
|
||||||
|
"term.song.link.generate": "Gerando URL do song.link...",
|
||||||
|
"term.musicVideos": "Vídeos",
|
||||||
|
"term.stations": "Estações",
|
||||||
|
"term.curators": "Curadores",
|
||||||
|
"term.appleCurators": "Curadores da Apple",
|
||||||
|
"term.radioShows": "Shows de Radio",
|
||||||
|
"term.recordLabels": "Gravadoras",
|
||||||
|
"term.videoExtras": "Extras",
|
||||||
|
"term.top": "Top",
|
||||||
|
"term.version": "Versão",
|
||||||
|
"term.noVideos": "Vídeos não encontrados.",
|
||||||
|
"home.title": "Inicio",
|
||||||
|
"home.recentlyPlayed": "Tocado Recentemente",
|
||||||
|
"home.recentlyAdded": "Adicionado Recentemente",
|
||||||
|
"home.artistsFeed": "Novidades dos seus Artistas",
|
||||||
|
"home.madeForYou": "Feito para Você",
|
||||||
|
"home.friendsListeningTo": "Amigos Ouvindo",
|
||||||
|
"home.followedArtists": "Artistas Seguidos",
|
||||||
|
"home.artistsFeed.noArtist": "Siga uns artistas e o seus ultimos lançamentos aparecerão aqui",
|
||||||
|
"error.appleMusicSubRequired": "Necessário uma assinatura Apple Music.",
|
||||||
|
"error.connectionError": "Aconteceu um problema ao conectar ao Apple Music.",
|
||||||
|
"error.noResults": "Sem resultados.",
|
||||||
|
"error.noResults.description": "Tente uma nova busca.",
|
||||||
|
"podcast.followOnCider": "Seguir no Cider",
|
||||||
|
"podcast.followedOnCider": "Seguindo no Cider",
|
||||||
|
"podcast.subscribeOnItunes": "Inscrever-se no iTunes",
|
||||||
|
"podcast.subscribedOnItunes": "Inscrito no iTunes",
|
||||||
|
"podcast.itunesStore": "iTunes Store",
|
||||||
|
"podcast.episodes": "Episodios",
|
||||||
|
"podcast.playEpisode": "Reproduzir episódio",
|
||||||
|
"podcast.website": "Website do Podcast",
|
||||||
|
"action.addToLibrary": "Adicionar à Biblioteca",
|
||||||
|
"action.addToLibrary.success": "Adicionado à Biblioteca",
|
||||||
|
"action.addToLibrary.error": "Erro ao Adicionar na Biblioteca",
|
||||||
|
"action.removeFromLibrary": "Remover da Biblioteca",
|
||||||
|
"action.removeFromLibrary.success": "Removido da Biblioteca",
|
||||||
|
"action.addToQueue": "Adicionar à Fila",
|
||||||
|
"action.addToQueue.success": "Adicionado à Fila",
|
||||||
|
"action.addToQueue.error": "Erro ao Adicionar à Fila",
|
||||||
|
"action.removeFromQueue": "Remover da Fila",
|
||||||
|
"action.removeFromQueue.success": "Removido da Fila",
|
||||||
|
"action.removeFromQueue.error": "Erro ao Remover da Fila",
|
||||||
|
"action.addToPlaylist": "Adicionar à Lista de Reprodução",
|
||||||
|
"action.removeFromPlaylist": "Remover da Lista de Reprodução",
|
||||||
|
"action.addToFavorites": "Adicionar aos Favoritos",
|
||||||
|
"action.follow": "Seguir",
|
||||||
|
"action.follow.success": "A Seguir",
|
||||||
|
"action.follow.error": "Erro ao Seguir",
|
||||||
|
"action.unfollow": "Deixar de Seguir",
|
||||||
|
"action.unfollow.success": "Deixou de Seguir",
|
||||||
|
"action.unfollow.error": "Erro ao Deixar de Seguir",
|
||||||
|
"action.playNext": "Reproduzir a Seguir",
|
||||||
|
"action.playLater": "Reproduzir por Ultimo",
|
||||||
|
"action.startRadio": "Começar Radio",
|
||||||
|
"action.goToArtist": "Ir para o Artista",
|
||||||
|
"action.goToAlbum": "Ir para o Album",
|
||||||
|
"action.moveToTop": "Mover para cima",
|
||||||
|
"action.share": "Compartilhar",
|
||||||
|
"action.rename": "Renomear",
|
||||||
|
"action.love": "Gostar",
|
||||||
|
"action.unlove": "Deixar de Gostar",
|
||||||
|
"action.dislike": "Não Gostar",
|
||||||
|
"action.undoDislike": "Deixar de Não Gostar",
|
||||||
|
"action.showWebRemoteQR": "Mostrar o QR para Página Remota",
|
||||||
|
"action.playTracksNext": "Reproduzir ${app.selectedMediaItems.length} músicas a seguir",
|
||||||
|
"action.playTracksLater": "Reproduzir ${app.selectedMediaItems.length} músicas depois",
|
||||||
|
"action.removeTracks": "Remover ${self.selectedItems.length} músicas da fila",
|
||||||
|
"action.import": "Importar",
|
||||||
|
"action.export": "Exportar",
|
||||||
|
"action.showAlbum": "Mostrar album completo",
|
||||||
|
"action.tray.minimize": "Minimize to Tray",
|
||||||
|
"action.tray.quit": "Sair",
|
||||||
|
"action.tray.show": "Mostrar",
|
||||||
|
"action.update": "Atualizar",
|
||||||
|
"action.copy": "Copiar",
|
||||||
|
"action.newpreset": "Nova predefinição...",
|
||||||
|
"action.deletepreset": "Apagar predefinição",
|
||||||
|
"action.open": "Abrir",
|
||||||
|
"settings.header.general": "Principal",
|
||||||
|
"settings.header.general.description": "Ajustar as definiçoes principais no Cider.",
|
||||||
|
"settings.option.general.language": "Idioma",
|
||||||
|
"settings.option.general.language.main": "Idiomas",
|
||||||
|
"settings.option.general.language.fun": "Idiomas divertidos",
|
||||||
|
"settings.option.general.language.unsorted": "Sem categoria",
|
||||||
|
"settings.option.general.updateCider": "Atualizar o Cider",
|
||||||
|
"settings.option.general.updateCider.branch": "Cider Update Branch",
|
||||||
|
"settings.option.general.updateCider.branch.description": "Escolha a versão do Cider para atualizar",
|
||||||
|
"settings.option.general.updateCider.branch.main": "Estável",
|
||||||
|
"settings.option.general.updateCider.branch.develop": "Em desenvolvimeno",
|
||||||
|
"settings.header.audio": "Áudio",
|
||||||
|
"settings.header.audio.description": "Ajustar as configurações de áudio no Cider.",
|
||||||
|
"settings.option.audio.volumeStep": "Incrementos",
|
||||||
|
"settings.option.audio.maxVolume": "Volume máximo",
|
||||||
|
"settings.option.audio.quality": "Qualidade de Áudio",
|
||||||
|
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
|
||||||
|
"settings.header.audio.quality.hireslossless.description": "até 24-bit/192 kHz",
|
||||||
|
"settings.header.audio.quality.lossless": "Lossless",
|
||||||
|
"settings.header.audio.quality.lossless.description": "até 24-bit/48 kHz",
|
||||||
|
"settings.header.audio.quality.high": "Alta",
|
||||||
|
"settings.header.audio.quality.high.description": "256 kbps",
|
||||||
|
"settings.header.audio.quality.standard": "Padrão",
|
||||||
|
"settings.header.audio.quality.standard.description": "64 kbps",
|
||||||
|
"settings.option.audio.seamlessTransition": "Transição de audio ...",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality": "Ativar configurações avancadas",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.description": "Habilitar a funcionalidade AudioContext permitirá recursos de áudio estendidos, como Normalização de Áudio , Equalizadores e Visualizadores. No entanto, em alguns sistemas, isso pode causar travamentos nas faixas de áudio.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Melhoras psicoacusticas que fazem com que tudo soe mais vivo.",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP não é compativel com Áudio Espacial. Por favor, desative-o para continuar.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Potência do CAP",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Muda a potência do processamento feito no áudio. (a função Agressiva pode levar a resultados não desejados.)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Padrão",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Agressiva",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalização de Áudio",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normaliza o volume alto para faixas individuais para criar uma experiência de audição mais uniforme.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Áudio Espacial",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Espacialize o áudio e torne o áudio mais tridimensional (nota: isto não é Dolby Atmos)",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Áudio Espacial não é compativel com o CAP. Por favor desative-o.",
|
||||||
|
"settings.header.visual": "Visual",
|
||||||
|
"settings.header.visual.description": "Ajustar as configurações visuais do Cider.",
|
||||||
|
"settings.option.visual.windowBackgroundStyle": "Estilo do fundo da janela",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.none": "Nenhum",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.artwork": "Capa",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.image": "Imagem",
|
||||||
|
"settings.option.visual.animatedArtwork": "Capa animada",
|
||||||
|
"settings.header.visual.animatedArtwork.always": "Sempre",
|
||||||
|
"settings.header.visual.animatedArtwork.limited": "Limitado a páginas e entradas especiais",
|
||||||
|
"settings.header.visual.animatedArtwork.disable": "Desativar",
|
||||||
|
"settings.option.visual.animatedArtworkQuality": "Qualidade da capa animada",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.low": "Baixa",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.medium": "Media",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.high": "Alta",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Muito Alta",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.extreme": "Altissima",
|
||||||
|
"settings.option.visual.animatedWindowBackground": "Fundo animado",
|
||||||
|
"settings.option.visual.hardwareAcceleration": "Aceleração de Hardware",
|
||||||
|
"settings.option.visual.hardwareAcceleration.description": "Necessário reabrir o Cider",
|
||||||
|
"settings.header.visual.hardwareAcceleration.default": "Padrão",
|
||||||
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
|
"settings.header.visual.theme": "Tema",
|
||||||
|
"settings.option.visual.theme.github.download": "Instalar pelo URL do GitHub",
|
||||||
|
"settings.option.visual.theme.github.explore": "Explorar temas no GitHub",
|
||||||
|
"settings.option.visual.theme.github.install.confirm": "Tem certeza que quer instalar {{ repo }}?",
|
||||||
|
"settings.prompt.visual.theme.github.URL": "Insira o URL do tema que deseja instalar",
|
||||||
|
"settings.notyf.visual.theme.install.success": "Tema instalado com sucesso",
|
||||||
|
"settings.notyf.visual.theme.install.error": "A instalação do tema falhou",
|
||||||
|
"settings.option.visual.showPersonalInfo": "Mostrar Informaçoes Pessoais",
|
||||||
|
"settings.header.lyrics": "Letras",
|
||||||
|
"settings.header.lyrics.description": "Ajustar as definições das letras no Cider.",
|
||||||
|
"settings.option.lyrics.enableMusixmatch": "Ativar Letras do Musixmatch",
|
||||||
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Ativar Modo Karaoke (só para Musixmatch)",
|
||||||
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Idioma Preferido para Tradução Musixmatch",
|
||||||
|
"settings.option.lyrics.enableYoutubeLyrics": "Ativar letras do Youtube para videos musicais",
|
||||||
|
"settings.header.connectivity": "Conectividade",
|
||||||
|
"settings.header.connectivity.description": "Ajustar as definições de conectividade no Cider.",
|
||||||
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
|
"settings.header.connectivity.discordRPC.cider": "Mostrar como 'Cider'",
|
||||||
|
"settings.header.connectivity.discordRPC.appleMusic": "Mostrar como 'Apple Music'",
|
||||||
|
"settings.option.connectivity.discordRPC.clearOnPause": "Apagar Discord Rich Presence quando estiver pausado",
|
||||||
|
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.delay": "Atraso dos Scrobbles do LastFM (%)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Ativar LastFM Now Playing",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remover artistas de colaboração do nome da música (LastFM)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrar músicas repitidas (Last.fm)",
|
||||||
|
"settings.header.debug": "Debug",
|
||||||
|
"settings.option.debug.copy_log": "Copiar logs",
|
||||||
|
"settings.option.debug.openAppData": "Abrir a pasta do Cider",
|
||||||
|
"settings.header.experimental": "Experimental",
|
||||||
|
"settings.header.experimental.description": "Ajustar as definições experimental no Cider.",
|
||||||
|
"settings.option.experimental.compactUI": "UI Compacto",
|
||||||
|
"settings.option.window.close_button_hide": "Fechar apenas esconde o Cider",
|
||||||
|
"spatial.spatialProperties": "Propriedades do Espacial",
|
||||||
|
"spatial.width": "Largura",
|
||||||
|
"spatial.height": "Altura",
|
||||||
|
"spatial.depth": "Profundidade",
|
||||||
|
"spatial.roomMaterials": "Materiais da Sala",
|
||||||
|
"spatial.roomDimensions": "Dimensões da Sala",
|
||||||
|
"spatial.roomPositions": "Posições da Sala",
|
||||||
|
"spatial.setDimensions": "Definir Dimensões",
|
||||||
|
"spatial.setPositions": "Definir Posições",
|
||||||
|
"spatial.up": "Acima",
|
||||||
|
"spatial.front": "Frente",
|
||||||
|
"spatial.left": "Esquerda",
|
||||||
|
"spatial.right": "Direita",
|
||||||
|
"spatial.back": "Atrás",
|
||||||
|
"spatial.down": "Abaixo",
|
||||||
|
"spatial.listener": "Ouvinte",
|
||||||
|
"spatial.audioSource": "Fonte de Audio",
|
||||||
|
"settings.header.unfinished": "Inacabado",
|
||||||
|
"remote.web.title": "Cider Remoto",
|
||||||
|
"remote.web.description": "Digitalize o código QR para emparelhar seu telefone com esta instância Cider"
|
||||||
|
}
|
|
@ -1,244 +0,0 @@
|
||||||
{ // Base File
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
|
||||||
|
|
||||||
"date.format": "${d} ${m}, ${y}",
|
|
||||||
|
|
||||||
// i18n Info
|
|
||||||
"i18n.languageName": "Português ( brasileiro )", // name of language in native language
|
|
||||||
"i18n.languageNameEnglish": "Portuguese (Brazil)", // name of language in English
|
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
|
||||||
"i18n.authors": "", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "Cancelar",
|
|
||||||
"dialog.ok": "OK",
|
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "Atualizando músicas na biblioteca...",
|
|
||||||
"notification.updatingLibraryAlbums": "Atualizando albuns na biblioteca...",
|
|
||||||
"notification.updatingLibraryArtists": "Atualizando artistas na biblioteca...",
|
|
||||||
"notification.connectionError": "Houve um problema a se conectar no Apple Music",
|
|
||||||
|
|
||||||
// Terms
|
|
||||||
"term.appleMusic": "Apple Music",
|
|
||||||
"term.applePodcasts": "Apple Podcasts",
|
|
||||||
"term.itunes": "iTunes",
|
|
||||||
"term.github": "GitHub",
|
|
||||||
"term.discord": "Discord",
|
|
||||||
"term.learnMore": "Saiba Mais",
|
|
||||||
"term.accountSettings": "Definições da Conta",
|
|
||||||
"term.logout": "Sair",
|
|
||||||
"term.login": "Entrar",
|
|
||||||
"term.about": "Sobre",
|
|
||||||
"term.privateSession": "Sessão Privada",
|
|
||||||
"term.queue": "Fila",
|
|
||||||
"term.search": "Procurar",
|
|
||||||
"term.library": "Biblioteca",
|
|
||||||
"term.listenNow": "Ouça Agora",
|
|
||||||
"term.browse": "Explorar",
|
|
||||||
"term.radio": "Radio",
|
|
||||||
"term.recentlyAdded": "Adicionado Recentemente",
|
|
||||||
"term.songs": "Músicas",
|
|
||||||
"term.albums": "Albuns",
|
|
||||||
"term.artists": "Artistas",
|
|
||||||
"term.podcasts": "Podcasts",
|
|
||||||
"term.playlists": "Listas de Reprodução",
|
|
||||||
"term.playlist": "Lista de Reprodução",
|
|
||||||
"term.play": "Tocar",
|
|
||||||
"term.pause": "Pausar",
|
|
||||||
"term.previous": "Anterior",
|
|
||||||
"term.next": "Próximo",
|
|
||||||
"term.shuffle": "Aleatório",
|
|
||||||
"term.repeat": "Repetir",
|
|
||||||
"term.volume": "Volume",
|
|
||||||
"term.mute": "Mudo",
|
|
||||||
"term.unmute": "Tirar o Mudo",
|
|
||||||
"term.share": "Partilhar",
|
|
||||||
"term.settings": "Definições",
|
|
||||||
"term.seeAll": "Ver Tudo",
|
|
||||||
"term.sortBy": "Organizar Por",
|
|
||||||
"term.sortBy.album": "Album",
|
|
||||||
"term.sortBy.artist": "Artista",
|
|
||||||
"term.sortBy.name": "Nome",
|
|
||||||
"term.sortBy.genre": "Genero",
|
|
||||||
"term.sortBy.releaseDate": "Data de Lançamento",
|
|
||||||
"term.sortBy.duration": "Duração",
|
|
||||||
"term.sortOrder": "A-Z",
|
|
||||||
"term.sortOrder.ascending": "Ascendente",
|
|
||||||
"term.sortOrder.descending": "Descendente",
|
|
||||||
"term.viewAs": "Ver Como",
|
|
||||||
"term.viewAs.coverArt": "Capa",
|
|
||||||
"term.viewAs.list": "Lista",
|
|
||||||
"term.size": "Tamanho",
|
|
||||||
"term.size.normal": "Normal",
|
|
||||||
"term.size.compact": "Compacto",
|
|
||||||
"term.enable": "Ativar",
|
|
||||||
"term.disable": "Desativar",
|
|
||||||
"term.enabled": "Ativado",
|
|
||||||
"term.disabled": "Desativado",
|
|
||||||
"term.connect": "Conectar",
|
|
||||||
"term.disconnect": "Desconectar",
|
|
||||||
"term.connecting": "Conectando",
|
|
||||||
"term.confirm": "Confirmar ?",
|
|
||||||
"term.more": "Mais",
|
|
||||||
"term.less": "Menos",
|
|
||||||
"term.showMore": "Mostrar Mais",
|
|
||||||
"term.showLess": "Mostrar Menos",
|
|
||||||
"term.topSongs" : "Top de Músicas",
|
|
||||||
"term.latestReleases": "Ultimos Lançamentos",
|
|
||||||
"term.time.added": "Adicionado",
|
|
||||||
"term.time.released": "Lançado",
|
|
||||||
"term.time.updated": "Atualizado",
|
|
||||||
"term.fullscreenView": "Visualização em Tela Cheia",
|
|
||||||
"term.defaultView": "Visualização Normal",
|
|
||||||
"term.spacializedAudioSetting": "Definições de Audio Espacial",
|
|
||||||
"term.clearAll": "Limpar Tudo",
|
|
||||||
"term.language": "Idioma",
|
|
||||||
"term.recentStations": "Estações Recentes",
|
|
||||||
|
|
||||||
// Home
|
|
||||||
"home.title": "Inicio",
|
|
||||||
"home.recentlyPlayed": "Tocado Recentemente",
|
|
||||||
"home.recentlyAdded": "Adicionado Recentemente",
|
|
||||||
"home.artistsFeed": "Novidades dos seus Artistas",
|
|
||||||
"home.madeForYou": "Feito para Você",
|
|
||||||
"home.friendsListeningTo": "Amigos Ouvindo",
|
|
||||||
"home.followedArtists": "Artistas Seguidos",
|
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "Necessário uma assinatura Apple Music.",
|
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "Adicionar à Biblioteca",
|
|
||||||
"action.addToLibrary.success": "Adicionado à Biblioteca",
|
|
||||||
"action.addToLibrary.error": "Erro ao Adicionar na Biblioteca",
|
|
||||||
"action.removeFromLibrary": "Remover da Biblioteca",
|
|
||||||
"action.removeFromLibrary.success": "Removido da Biblioteca",
|
|
||||||
"action.addToQueue": "Adicionar à Fila",
|
|
||||||
"action.addToQueue.success": "Adicionado à Fila",
|
|
||||||
"action.addToQueue.error": "Erro ao Adicionar à Fila",
|
|
||||||
"action.removeFromQueue": "Remover da Fila",
|
|
||||||
"action.removeFromQueue.success": "Removido da Fila",
|
|
||||||
"action.removeFromQueue.error": "Erro ao Remover da Fila",
|
|
||||||
"action.addToPlaylist": "Adicionar à Lista de Reprodução",
|
|
||||||
"action.removeFromPlaylist": "Remover da Lista de Reprodução",
|
|
||||||
"action.addToFavorites": "Adicionar aos Favoritos",
|
|
||||||
"action.follow": "Seguir",
|
|
||||||
"action.follow.success": "A Seguir",
|
|
||||||
"action.follow.error": "Erro ao Seguir",
|
|
||||||
"action.unfollow": "Deixar de Seguir",
|
|
||||||
"action.unfollow.success": "Deixou de Seguir",
|
|
||||||
"action.unfollow.error": "Erro ao Deixar de Seguir",
|
|
||||||
"action.playNext": "Tocar Proximo",
|
|
||||||
"action.playLater": "Tocar por Ultimo",
|
|
||||||
"action.startRadio": "Começar Radio",
|
|
||||||
"action.goToArtist": "Ir para o Artista",
|
|
||||||
"action.goToAlbum": "Ir para o Album",
|
|
||||||
"action.moveToTop": "Mover para cima",
|
|
||||||
"action.share": "Partilhar",
|
|
||||||
"action.rename": "Mudar o Nome",
|
|
||||||
"action.love": "Gostar",
|
|
||||||
"action.unlove": "Deixar de Gostar",
|
|
||||||
"action.dislike": "Não Gostar",
|
|
||||||
"action.undoDislike": "Deixar de Não Gostar",
|
|
||||||
"action.showWebRemoteQR": "Mostrar o QR para Página Remota",
|
|
||||||
// Settings - Audio
|
|
||||||
"settings.header.audio": "Audio",
|
|
||||||
"settings.header.audio.description": "Ajustar as definições de audio no Cider.",
|
|
||||||
"settings.option.audio.quality": "Qualidade do Audio", // Dropdown
|
|
||||||
"settings.header.audio.quality.high": "Alta",
|
|
||||||
"settings.header.audio.quality.low": "Baixa",
|
|
||||||
"settings.header.audio.quality.auto": "Automatico",
|
|
||||||
"settings.option.audio.seamlessTransition": "Transição de Áudio Perfeita", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "Ativar Funcionabilidades Avançadas", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "Habilitar a funcionalidade AudioContext permitirá recursos de áudio estendidos, como Normalização de Áudio , Equalizadores e Visualizadores. No entanto, em alguns sistemas, isso pode causar travamentos nas faixas de áudio.",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalização de Audio", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normaliza o volume alto para faixas individuais para criar uma experiência de audição mais uniforme.",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Espacial", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Espacialize o áudio e torne o áudio mais tridimensional (nota: isto não é Dolby Atmos)",
|
|
||||||
// Settings - Visual
|
|
||||||
"settings.header.visual": "Visual",
|
|
||||||
"settings.header.visual.description": "Ajustar as Definições de Visual do Cider.",
|
|
||||||
"settings.option.visual.windowBackgroundStyle": "Estilo do Fundo da Janela", // Toggle
|
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "Nenhum",
|
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "Capa",
|
|
||||||
"settings.option.visual.animatedArtwork": "Capa Animada", // Dropdown
|
|
||||||
"settings.header.visual.animatedArtwork.always": "Sempre",
|
|
||||||
"settings.header.visual.animatedArtwork.limited": "Limitado a páginas e entradas especiais",
|
|
||||||
"settings.header.visual.animatedArtwork.disable": "Desativar em Tudo",
|
|
||||||
"settings.option.visual.animatedArtworkQuality": "Qualidade da Capa Animada", // Dropdown
|
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "Baixa",
|
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "Media",
|
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "Alta",
|
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "Muito Alta",
|
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "Extrema",
|
|
||||||
"settings.option.visual.animatedWindowBackground": "Fundo de Janela Animado", // Toggle
|
|
||||||
"settings.option.visual.hardwareAcceleration": "Acelaração no Hardware", // Dropdown
|
|
||||||
"settings.option.visual.hardwareAcceleration.description": "Necessário reiniciar a aplicação",
|
|
||||||
"settings.header.visual.hardwareAcceleration.default": "Normal",
|
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
|
||||||
|
|
||||||
|
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.option.visual.showPersonalInfo": "Mostrar Informaçoes Pessoais", // Toggle
|
|
||||||
// Settings - General (Reserved)
|
|
||||||
"settings.header.general": "Principal",
|
|
||||||
"settings.header.general.description": "Ajustar as definiçoes principais no Cider.",
|
|
||||||
|
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "Letras",
|
|
||||||
"settings.header.lyrics.description": "Ajustar as definições das letras no Cider.",
|
|
||||||
"settings.option.lyrics.enableMusixmatch": "Ativar Letras do Musixmatch", // Toggle
|
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "Ativar Modo Karaoke (só para Musixmatch)", // Toggle
|
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Idioma Preferido para Tradução Musixmatch", // Dropdown
|
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "Ativar letras do Youtube para videos musicais", // Toggle
|
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "Conectividade",
|
|
||||||
"settings.header.connectivity.description": "Ajustar as definições de conectividade no Cider.",
|
|
||||||
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
|
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "Mostrar como 'Cider'",
|
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "Mostrar como 'Apple Music'",
|
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "Apagar Discord Rich Presence quando estiver pausado", // Toggle
|
|
||||||
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling", // Option to Connect
|
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "Atraso dos Scrobbles do LastFM (%)",
|
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Ativar LastFM Now Playing",
|
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remover artistas de colaboração do nome da música (LastFM)",
|
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "Experimental",
|
|
||||||
"settings.header.experimental.description": "Ajustar as definições experimental no Cider.",
|
|
||||||
"settings.option.experimental.compactUI": "UI Compacto", // Toggle
|
|
||||||
// Refer to term.disabled & term.enabled
|
|
||||||
|
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.spatialProperties" : "Propriedades do Espacial",
|
|
||||||
"spatial.width" : "Largura",
|
|
||||||
"spatial.height" : "Altura",
|
|
||||||
"spatial.depth" : "Profundidade",
|
|
||||||
"spatial.roomMaterials" : "Materiais da Sala",
|
|
||||||
"spatial.roomDimensions" : "Dimensões da Sala",
|
|
||||||
"spatial.roomPositions" : "Posições da Sala",
|
|
||||||
"spatial.setDimensions" : "Definir Dimensões",
|
|
||||||
"spatial.setPositions" : "Definir Posições",
|
|
||||||
"spatial.up" : "Acima",
|
|
||||||
"spatial.front" : "Frente",
|
|
||||||
"spatial.left" : "Esquerda",
|
|
||||||
"spatial.right" : "Direita",
|
|
||||||
"spatial.back" : "Atrás",
|
|
||||||
"spatial.down" : "Abaixo",
|
|
||||||
"spatial.listener" : "Ouvinte",
|
|
||||||
"spatial.audioSource" : "Fonte de Audio",
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "Inacabado",
|
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "Cider Remoto",
|
|
||||||
"remote.web.description": "Digitalize o código QR para emparelhar seu telefone com esta instância Cider"
|
|
||||||
}
|
|
270
src/i18n/ro_RO.json
Normal file
|
@ -0,0 +1,270 @@
|
||||||
|
{
|
||||||
|
"i18n.languageName": "Română",
|
||||||
|
"i18n.languageNameEnglish": "Romanian",
|
||||||
|
"i18n.category": "main",
|
||||||
|
"i18n.authors": "@SubZeroNexii georgechrc",
|
||||||
|
"app.name": "Cider",
|
||||||
|
|
||||||
|
"date.format": "${d} ${m}, ${y}",
|
||||||
|
"dialog.cancel": "Anulare",
|
||||||
|
"dialog.ok": "OK",
|
||||||
|
"notification.updatingLibrarySongs": "Actualizare bibliotecă muzică...",
|
||||||
|
"notification.updatingLibraryAlbums": "Actualizare bibliotecă albume...",
|
||||||
|
"notification.updatingLibraryArtists": "Actualizare bibliotecă artiști...",
|
||||||
|
"term.appleInc": "Apple Inc.",
|
||||||
|
"term.appleMusic": "Apple Music",
|
||||||
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
"term.itunes": "iTunes",
|
||||||
|
"term.github": "GitHub",
|
||||||
|
"term.discord": "Discord",
|
||||||
|
"term.learnMore": "Află mai multe",
|
||||||
|
"term.accountSettings": "Setări cont",
|
||||||
|
"term.logout": "Deconectare",
|
||||||
|
"term.login": "Autentificare",
|
||||||
|
"term.about": "Despre",
|
||||||
|
"term.privateSession": "Sesiune Privată",
|
||||||
|
"term.queue": "în Coadă",
|
||||||
|
"term.search": "Căutare",
|
||||||
|
"term.library": "Bibliotecă",
|
||||||
|
"term.listenNow": "Ascultă acum",
|
||||||
|
"term.browse": "Navigați",
|
||||||
|
"term.radio": "Radio",
|
||||||
|
"term.recentlyAdded": "Recent Adăugate",
|
||||||
|
"term.songs": "Muzică",
|
||||||
|
"term.albums": "Albume",
|
||||||
|
"term.artists": "Artiști",
|
||||||
|
"term.podcasts": "Podcast-uri",
|
||||||
|
"term.playlists": "Playlist-uri",
|
||||||
|
"term.playlist": "Playlist",
|
||||||
|
"term.newPlaylist": "Playlist Nou",
|
||||||
|
"term.newPlaylistFolder": "Dosar Playlist Nou",
|
||||||
|
"term.createNewPlaylist": "Creează un Playlist Nou",
|
||||||
|
"term.createNewPlaylistFolder": "Creează un Dosar Playlist Nou",
|
||||||
|
"term.deletePlaylist": "Sunteți siguri că vreți să ștergeți acest Playlist?",
|
||||||
|
"term.play": "Redă",
|
||||||
|
"term.pause": "Pauză",
|
||||||
|
"term.previous": "Înapoi",
|
||||||
|
"term.next": "Înainte",
|
||||||
|
"term.shuffle": "Aleator",
|
||||||
|
"term.repeat": "Repetă",
|
||||||
|
"term.volume": "Volum",
|
||||||
|
"term.mute": "Fară sunet",
|
||||||
|
"term.unmute": "Activare sunet",
|
||||||
|
"term.share": "Partajează",
|
||||||
|
"term.settings": "Setări",
|
||||||
|
"term.seeAll": "Vedeți tot",
|
||||||
|
"term.sortBy": "Sortare după",
|
||||||
|
"term.sortBy.album": "Album",
|
||||||
|
"term.sortBy.artist": "Artist",
|
||||||
|
"term.sortBy.name": "Nume",
|
||||||
|
"term.sortBy.genre": "Gen",
|
||||||
|
"term.sortBy.releaseDate": "Data Lansării",
|
||||||
|
"term.sortBy.duration": "Durată",
|
||||||
|
"term.sortOrder": "A-Z",
|
||||||
|
"term.sortOrder.ascending": "Ascendent",
|
||||||
|
"term.sortOrder.descending": "Descendent",
|
||||||
|
"term.viewAs": "Vizualizare ca",
|
||||||
|
"term.viewAs.coverArt": "Artă Copertă",
|
||||||
|
"term.viewAs.list": "Listă",
|
||||||
|
"term.size": "Mărime",
|
||||||
|
"term.size.normal": "Normal",
|
||||||
|
"term.size.compact": "Compact",
|
||||||
|
"term.enable": "Activare",
|
||||||
|
"term.disable": "Dezactivare",
|
||||||
|
"term.enabled": "Activat",
|
||||||
|
"term.disabled": "Dezactivat",
|
||||||
|
"term.connect": "Conectare",
|
||||||
|
"term.connecting": "Se conectează",
|
||||||
|
"term.disconnect": "Deconectare",
|
||||||
|
"term.authed": "Autentificat",
|
||||||
|
"term.confirm": "Confirmați ?",
|
||||||
|
"term.more": "Mai mult",
|
||||||
|
"term.less": "Mai puțin",
|
||||||
|
"term.showMore": "Arată mai mult",
|
||||||
|
"term.showLess": "Arată mai puțin",
|
||||||
|
"term.topSongs" : "Top Muzică",
|
||||||
|
"term.latestReleases": "Ultimele Lansări",
|
||||||
|
"term.time.added": "Adăugate",
|
||||||
|
"term.time.released": "Lansate",
|
||||||
|
"term.time.updated": "Actualizate",
|
||||||
|
"term.time.hours": "ore",
|
||||||
|
"term.time.hour": "oră",
|
||||||
|
"term.time.minutes": "minute",
|
||||||
|
"term.time.minute": "minut",
|
||||||
|
"term.time.seconds": "secunde",
|
||||||
|
"term.time.second": "secundă",
|
||||||
|
"term.fullscreenView": "Vizualizare Ecran Complet",
|
||||||
|
"term.defaultView": "Vizualizare Standard",
|
||||||
|
"term.audioSettings": "Setări Audio",
|
||||||
|
"term.clearAll": "Ștergere toate",
|
||||||
|
"term.recentStations": "Stații Recente",
|
||||||
|
"term.language": "Limbă",
|
||||||
|
"term.funLanguages": "Amuzament",
|
||||||
|
"term.noLyrics": "Incărcare... / Versurile nu au fost găsite./ Instrumental.",
|
||||||
|
"term.copyright": "Copyright",
|
||||||
|
"term.rightsReserved": "Toate drepturile rezervate.",
|
||||||
|
"term.sponsor": "Sponsorizați acest proiect",
|
||||||
|
"term.ciderTeam": "Echipa Cider",
|
||||||
|
"term.developer": "Dezvoltatori",
|
||||||
|
"term.socialTeam": "Echipa de relații publice",
|
||||||
|
"term.socials": "Rețele Sociale",
|
||||||
|
"term.contributors": "Contribuitori",
|
||||||
|
"term.equalizer": "Egalizator",
|
||||||
|
"term.reset": "Reset",
|
||||||
|
"term.tracks": "melodii",
|
||||||
|
"term.videos": "Videoclipuri",
|
||||||
|
"term.menu": "Meniu",
|
||||||
|
"term.check": "Verificare",
|
||||||
|
"term.aboutArtist": "Despre {{artistName}}",
|
||||||
|
"term.updateCider": "Actualizare Cider",
|
||||||
|
"home.title": "Acasă",
|
||||||
|
"home.recentlyPlayed": "Asculate Recent",
|
||||||
|
"home.recentlyAdded": "Adăugate Recent",
|
||||||
|
"home.artistsFeed": "Fluxul Artiștilor tăi",
|
||||||
|
"home.artistsFeed.noArtist": "Urmărește prima oară cațiva artiști și ultimele lor lansări vor apărea aici",
|
||||||
|
"home.madeForYou": "Pentru tine",
|
||||||
|
"home.friendsListeningTo": "Prietenii tăi ascultă",
|
||||||
|
"home.followedArtists": "Artiști Urmăriți",
|
||||||
|
"error.appleMusicSubRequired": "Apple Music necesită un abonament.",
|
||||||
|
"error.connectionError": "A apărut o problemă în conectarea la Apple Music.",
|
||||||
|
"error.noResults": "Nici un rezultat.",
|
||||||
|
"error.noResults.description": "încearcă o nouă căutare.",
|
||||||
|
"podcast.followOnCider": "Urmărește pe Cider",
|
||||||
|
"podcast.followedOnCider": "Urmărit pe Cider",
|
||||||
|
"podcast.subscribeOnItunes": "Abonează-te pe iTunes",
|
||||||
|
"podcast.subscribedOnItunes": "Abonat pe iTunes",
|
||||||
|
"podcast.itunesStore": "Magazin iTunes",
|
||||||
|
"podcast.episodes": "Episoade",
|
||||||
|
"podcast.playEpisode": "Începe Episodul",
|
||||||
|
"podcast.website": "Pagină Podcast",
|
||||||
|
"action.addToLibrary": "Adaugă în Librărie",
|
||||||
|
"action.addToLibrary.success": "Adăugat în Librărie",
|
||||||
|
"action.addToLibrary.error": "Eroare la adăugarea în Librărie",
|
||||||
|
"action.removeFromLibrary": "Ștergere din Librărie",
|
||||||
|
"action.removeFromLibrary.success": "Șters din Librărie",
|
||||||
|
"action.addToQueue": "Adăugare la Coadă",
|
||||||
|
"action.addToQueue.success": "Adăugat la Coadă",
|
||||||
|
"action.addToQueue.error": "Eroare adăugare la Coadă",
|
||||||
|
"action.removeFromQueue": "Ștergere din Coadă",
|
||||||
|
"action.removeFromQueue.success": "Șters din Coadă",
|
||||||
|
"action.removeFromQueue.error": "Eroare Ștergere din Coadă",
|
||||||
|
"action.createPlaylist": "Creează un nou Playlist",
|
||||||
|
"action.addToPlaylist": "Adaugă la Playlist",
|
||||||
|
"action.removeFromPlaylist": "Ștergere din Playlist",
|
||||||
|
"action.addToFavorites": "Adaugă la Favorite",
|
||||||
|
"action.follow": "Urmărește",
|
||||||
|
"action.follow.success": "Urmărit",
|
||||||
|
"action.follow.error": "Eroare Urmărire",
|
||||||
|
"action.unfollow": "Nu mai urmăriți",
|
||||||
|
"action.unfollow.success": "Urmărire încetată",
|
||||||
|
"action.unfollow.error": "Eroare încetare Urmărire",
|
||||||
|
"action.playNext": "Ascultă în Continuare",
|
||||||
|
"action.playLater": "Ascultă Mai Târziu",
|
||||||
|
"action.startRadio": "Pornește Radio",
|
||||||
|
"action.goToArtist": "Du-te la Artist",
|
||||||
|
"action.goToAlbum": "Du-te la Album",
|
||||||
|
"action.moveToTop": "Mută în vârf",
|
||||||
|
"action.share": "Partajează",
|
||||||
|
"action.rename": "Redenumire",
|
||||||
|
"action.love": "Apreciază",
|
||||||
|
"action.unlove": "Elimină Apreciere",
|
||||||
|
"action.dislike": "Dislike",
|
||||||
|
"action.undoDislike": "Elimină dislike",
|
||||||
|
"action.showWebRemoteQR": "Telecomandă Web",
|
||||||
|
"action.playTracksNext": "Redă ${app.selectedMediaItems.length} de melodii în continuare",
|
||||||
|
"action.playTracksLater": "Redă ${app.selectedMediaItems.length} de melodii mai târziu",
|
||||||
|
"action.removeTracks": "Șterge ${self.selectedItems.length} de melodii din Coadă",
|
||||||
|
"action.import": "Import",
|
||||||
|
"action.export": "Export",
|
||||||
|
"action.showAlbum": "Arată Albumul Complet",
|
||||||
|
"action.tray.minimize": "Minimizează în Tray",
|
||||||
|
"action.tray.quit": "Ieșire",
|
||||||
|
"action.tray.show": "Arată",
|
||||||
|
"action.update": "Actualizează",
|
||||||
|
"settings.header.general": "General",
|
||||||
|
"settings.header.general.description": "Ajustează setările generale pentru Cider.",
|
||||||
|
"settings.option.general.language": "Limbă",
|
||||||
|
"settings.option.general.language.main": "Limbi",
|
||||||
|
"settings.option.general.language.fun": "Amuzant",
|
||||||
|
"settings.option.general.language.unsorted": "Nesortate",
|
||||||
|
"settings.header.audio": "Audio",
|
||||||
|
"settings.header.audio.description": "Ajustează setările audio pentru Cider.",
|
||||||
|
"settings.option.audio.quality": "Calitate Audio",
|
||||||
|
"settings.header.audio.quality.high": "Ridicată",
|
||||||
|
"settings.header.audio.quality.low": "Redusă",
|
||||||
|
"settings.header.audio.quality.auto": "Auto",
|
||||||
|
"settings.option.audio.seamlessTransition": "Tranziție Audio Neîntreruptă",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality": "Activează Funcționalitate Avansată",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.description": "Pornirea funcționalității AudioContext va permite folosirea funcțiilor audio avansate precum Normalizare Volum , Egalizator și Vizualizator, dar pe unele sisteme poate cauza probleme precum întreruperi în redare.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalizare Volum",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizează volumul maxim al melodiilor pentru a genera o experiență audio optimă.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spațializare Audio",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spațializează sunetul și face sunetul 3-dimensional (notă: Nu este Dolby Atmos)",
|
||||||
|
"settings.header.visual": "Vizual",
|
||||||
|
"settings.header.visual.description": "Ajustează setările vizuale pentru Cider.",
|
||||||
|
"settings.option.visual.windowBackgroundStyle": "Stil Fundal Fereastră",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.none": "Niciunul",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.artwork": "Copertă Melodie",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.image": "Imagine",
|
||||||
|
"settings.option.visual.animatedArtwork": "Copertă Animată",
|
||||||
|
"settings.header.visual.animatedArtwork.always": "Întotdeauna",
|
||||||
|
"settings.header.visual.animatedArtwork.limited": "Limitat la pagini și Albume speciale",
|
||||||
|
"settings.header.visual.animatedArtwork.disable": "Dezactivează peste tot",
|
||||||
|
"settings.option.visual.animatedArtworkQuality": "Calitate Copertă Animată",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.low": "Redusă",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.medium": "Medie",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.high": "Ridicată",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Foarte Ridicată",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.extreme": "Extremă",
|
||||||
|
"settings.option.visual.animatedWindowBackground": "Fundal Fereastră Animat",
|
||||||
|
"settings.option.visual.hardwareAcceleration": "Accelerare Hardware",
|
||||||
|
"settings.option.visual.hardwareAcceleration.description": "Necesită Repornire",
|
||||||
|
"settings.header.visual.hardwareAcceleration.default": "Implitcit",
|
||||||
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
|
"settings.option.visual.showPersonalInfo": "Arată informații personale",
|
||||||
|
"settings.header.lyrics": "Versuri",
|
||||||
|
"settings.header.lyrics.description": "Ajustează setările versurilor pentru Cider.",
|
||||||
|
"settings.option.lyrics.enableMusixmatch": "Activează Versuri Musixmatch",
|
||||||
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Activează Mod Karaoke (numai Musixmatch)",
|
||||||
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Limbă Preferată Traducere Musixmatch",
|
||||||
|
"settings.option.lyrics.enableYoutubeLyrics": "Activează Versuri Youtube pentru Videoclipuri Muzică",
|
||||||
|
"settings.header.connectivity": "Conectivitate",
|
||||||
|
"settings.header.connectivity.description": "Ajustează setările de conectivitate pentru Cider.",
|
||||||
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
|
"settings.option.connectivity.playbackNotifications": "Notificări Redare",
|
||||||
|
"settings.header.connectivity.discordRPC.cider": "Afișează ca 'Cider'",
|
||||||
|
"settings.header.connectivity.discordRPC.appleMusic": "Afișează ca 'Apple Music'",
|
||||||
|
"settings.option.connectivity.discordRPC.clearOnPause": "Curăță Discord Rich Presence la Pauză",
|
||||||
|
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Scrobble Delay (%)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Activează Last.fm Now Playing",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Ștergeți artiștii invitat din titlul melodiei (Last.fm)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrează melodii repetate (Last.fm)",
|
||||||
|
"settings.header.experimental": "Experimental",
|
||||||
|
"settings.header.experimental.description": "Ajustează setările experimentale pentru Cider.",
|
||||||
|
"settings.option.experimental.compactUI": "UI Compact",
|
||||||
|
"settings.option.window.close_button_hide": "Butonul de închidere ar trebui să ascundă aplicația",
|
||||||
|
"spatial.notTurnedOn": "Spațializarea Audio este dezactivată. Pentru a folosi opțiunea aceasta, activați-o mai întâi.",
|
||||||
|
"spatial.spatialProperties": "Proprietăți Spațiale",
|
||||||
|
"spatial.width": "Lățime",
|
||||||
|
"spatial.height": "Înălțime",
|
||||||
|
"spatial.depth": "Adâncime",
|
||||||
|
"spatial.gain": "Gain",
|
||||||
|
"spatial.roomMaterials": "Materiale Cameră",
|
||||||
|
"spatial.roomDimensions": "Dimensiuni Cameră",
|
||||||
|
"spatial.roomPositions": "Poziții Cameră",
|
||||||
|
"spatial.setDimensions": "Setează Dimensiunile",
|
||||||
|
"spatial.setPositions": "Setează Pozițiile",
|
||||||
|
"spatial.up": "Sus",
|
||||||
|
"spatial.front": "În Față",
|
||||||
|
"spatial.left": "Stânga",
|
||||||
|
"spatial.right": "Dreapta",
|
||||||
|
"spatial.back": "În Spate",
|
||||||
|
"spatial.down": "Jos",
|
||||||
|
"spatial.listener": "Ascultător",
|
||||||
|
"spatial.audioSource": "Sursă Audio",
|
||||||
|
"settings.header.unfinished": "Neterminat",
|
||||||
|
"remote.web.title": "Telecomandă Cider",
|
||||||
|
"remote.web.description": "Scanează codul QR pentru a împerechea telefonul tău cu această instanță Cider",
|
||||||
|
"about.thanks": "Multe Mulțumiri Echipei Colectiv Cider și a tuturor contribuitorilor."
|
||||||
|
}
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
// i18n Info
|
|
||||||
"i18n.languageName": "Română", // name of language in native language
|
|
||||||
"i18n.languageNameEnglish": "Romanian", // name of language in English
|
|
||||||
"i18n.category": "main", // main = real language, fun = fun community
|
|
||||||
"i18n.authors": "georgechrc, ", // Authors, if you contribute to this
|
|
||||||
//file feel free to add your name seperated with a space
|
|
||||||
"date.format": "${d} ${m}, ${y}",
|
|
||||||
// translations
|
|
||||||
"term.equalizer": "Egalizator",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "Pornirea funcționalităților AudioContext va permite folosirea funcțiilor audio avansate precum Normalizare Volum , Egalizator și Vizualizator, pe unele sisteme mai slabe poate cauza probleme precum întreruperi în redare.",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalizare Volum", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizează volumul maxim al melodiilor pentru a genera o experiență audio optimă.",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spațializare Sunet", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Efect de spațializare tri-dimensională a sunetului(Atenție, nu e Dolby Atmos!)",
|
|
||||||
"spatial.notTurnedOn": "Spațializarea Sunetului e dezactivată, pentru a o utiliza pornește-o."
|
|
||||||
}
|
|
343
src/i18n/ru_RU.json
Normal file
|
@ -0,0 +1,343 @@
|
||||||
|
{
|
||||||
|
"i18n.languageName": "Русский (RU)",
|
||||||
|
"i18n.languageNameEnglish": "Russian (RU)",
|
||||||
|
"i18n.category": "main",
|
||||||
|
"i18n.authors": "@h0ckerman",
|
||||||
|
"app.name": "Cider",
|
||||||
|
"date.format": "${d} ${m}, ${y}",
|
||||||
|
"dialog.cancel": "Отмена",
|
||||||
|
"dialog.ok": "OK",
|
||||||
|
"notification.updatingLibrarySongs": "Обновление медиатеки песен...",
|
||||||
|
"notification.updatingLibraryAlbums": "Обновление медиатеки альбомов...",
|
||||||
|
"notification.updatingLibraryArtists": "Обновление медиатеки артистов...",
|
||||||
|
"term.appleInc": "Apple Inc.",
|
||||||
|
"term.appleMusic": "Apple Music",
|
||||||
|
"term.applePodcasts": "Подкасты Apple",
|
||||||
|
"term.itunes": "iTunes",
|
||||||
|
"term.github": "GitHub",
|
||||||
|
"term.discord": "Discord",
|
||||||
|
"term.learnMore": "Узнать больше",
|
||||||
|
"term.accountSettings": "Настройки аккаунта",
|
||||||
|
"term.logout": "Выйти",
|
||||||
|
"term.login": "Войти",
|
||||||
|
"term.about": "О Cider",
|
||||||
|
"term.privateSession": "Частная сессия",
|
||||||
|
"term.queue": "Очередь",
|
||||||
|
"term.history": "История",
|
||||||
|
"term.search": "Поиск",
|
||||||
|
"term.library": "Медиатека",
|
||||||
|
"term.listenNow": "Слушайте сейчас",
|
||||||
|
"term.browse": "Обзор",
|
||||||
|
"term.radio": "Радио",
|
||||||
|
"term.recentlyAdded": "Недавно добавлено",
|
||||||
|
"term.songs": "Песни",
|
||||||
|
"term.albums": "Альбомы",
|
||||||
|
"term.artists": "Артисты",
|
||||||
|
"term.podcasts": "Подкасты",
|
||||||
|
"term.playlists": "Плейлисты",
|
||||||
|
"term.playlist": "Плейлист",
|
||||||
|
"term.newPlaylist": "Новый Плейлист",
|
||||||
|
"term.newPlaylistFolder": "Новая Папка Плейлиста",
|
||||||
|
"term.createNewPlaylist": "Создать новый плейлист",
|
||||||
|
"term.createNewPlaylistFolder": "Создать новую папку",
|
||||||
|
"term.deletePlaylist": "Вы уверены, что хотите удалить плейлист?",
|
||||||
|
"term.play": "Воспроизвести",
|
||||||
|
"term.pause": "Пауза",
|
||||||
|
"term.previous": "Предыдущий",
|
||||||
|
"term.next": "Следующий",
|
||||||
|
"term.shuffle": "Перемешать",
|
||||||
|
"term.repeat": "Повторять",
|
||||||
|
"term.volume": "Громкость",
|
||||||
|
"term.mute": "Заглушить",
|
||||||
|
"term.unmute": "Включить звук",
|
||||||
|
"term.share": "Поделиться",
|
||||||
|
"term.share.success": "Скопировано в буфер обмена",
|
||||||
|
"term.settings": "Настройки",
|
||||||
|
"term.seeAll": "Смотреть все",
|
||||||
|
"term.sortBy": "Сортировать по",
|
||||||
|
"term.sortBy.album": "Альбом",
|
||||||
|
"term.sortBy.artist": "Артист",
|
||||||
|
"term.sortBy.name": "Имя",
|
||||||
|
"term.sortBy.genre": "Жанр",
|
||||||
|
"term.sortBy.releaseDate": "Дата выхода",
|
||||||
|
"term.sortBy.duration": "Длительность",
|
||||||
|
"term.sortBy.dateAdded": "Дата добавления",
|
||||||
|
"term.sortOrder": "А-Я",
|
||||||
|
"term.sortOrder.ascending": "По возрастанию",
|
||||||
|
"term.sortOrder.descending": "По убыванию",
|
||||||
|
"term.viewAs": "Показывать",
|
||||||
|
"term.viewAs.coverArt": "Обложки",
|
||||||
|
"term.viewAs.list": "Список",
|
||||||
|
"term.size": "Размер",
|
||||||
|
"term.size.normal": "Обычный",
|
||||||
|
"term.size.compact": "Компактный",
|
||||||
|
"term.enable": "Включить",
|
||||||
|
"term.disable": "Выключить",
|
||||||
|
"term.enabled": "Включено",
|
||||||
|
"term.disabled": "Выключено",
|
||||||
|
"term.connect": "Подключить",
|
||||||
|
"term.connecting": "Подключение",
|
||||||
|
"term.disconnect": "Отключить",
|
||||||
|
"term.authed": "Авторизовано",
|
||||||
|
"term.confirm": "Подтвердить?",
|
||||||
|
"term.more": "Больше",
|
||||||
|
"term.less": "Меньше",
|
||||||
|
"term.showMore": "Показать больше",
|
||||||
|
"term.showLess": "Показать меньше",
|
||||||
|
"term.topSongs": "Лучшие песни",
|
||||||
|
"term.latestReleases": "Последние релизы",
|
||||||
|
"term.time.added": "Добавлено",
|
||||||
|
"term.time.released": "Релиз: ",
|
||||||
|
"term.time.updated": "Обновлено",
|
||||||
|
"term.time.hour": {
|
||||||
|
"one": "час",
|
||||||
|
"few": "часа",
|
||||||
|
"other": "часов"
|
||||||
|
},
|
||||||
|
"term.time.minute": {
|
||||||
|
"one": "минута",
|
||||||
|
"few": "минуты",
|
||||||
|
"other": "минут"
|
||||||
|
},
|
||||||
|
"term.time.second": {
|
||||||
|
"one": "секунд",
|
||||||
|
"few": "секунды",
|
||||||
|
"other": "секунд"
|
||||||
|
},
|
||||||
|
"term.fullscreenView": "Полноэкранное отображение",
|
||||||
|
"term.defaultView": "Стандартное отображение",
|
||||||
|
"term.audioSettings": "Настройки звука",
|
||||||
|
"term.audioControls": "Настройка громкости",
|
||||||
|
"term.clearAll": "Очистить",
|
||||||
|
"term.recentStations": "Вы недавно слушали",
|
||||||
|
"term.language": "Язык",
|
||||||
|
"term.funLanguages": "Забавные",
|
||||||
|
"term.noLyrics": "Текст песни не найден.",
|
||||||
|
"term.copyright": "Авторское право",
|
||||||
|
"term.rightsReserved": "Все права защищены.",
|
||||||
|
"term.sponsor": "Поддержать проект",
|
||||||
|
"term.ciderTeam": "Команда Cider",
|
||||||
|
"term.developer": "Разработчик",
|
||||||
|
"term.socialTeam": "Социальная команда",
|
||||||
|
"term.socials": "Социальные сети",
|
||||||
|
"term.contributors": "Внесли вклад",
|
||||||
|
"term.equalizer": "Эквалайзер",
|
||||||
|
"term.reset": "Сбросить",
|
||||||
|
"term.tracks": {
|
||||||
|
"one": "песня",
|
||||||
|
"few": "песни",
|
||||||
|
"other": "песен"
|
||||||
|
},
|
||||||
|
"term.videos": "Видео",
|
||||||
|
"term.menu": "Меню",
|
||||||
|
"term.check": "Проверить",
|
||||||
|
"term.aboutArtist": "О {{artistName}}",
|
||||||
|
"term.topResult": "Топ результатов",
|
||||||
|
"term.sharedPlaylists": "Общие плейлисты",
|
||||||
|
"term.people": "Люди",
|
||||||
|
"term.newpreset.name": "Название нового пресета эквалайзера",
|
||||||
|
"term.addedpreset": "Пресет добавлен",
|
||||||
|
"term.deletepreset.warn": "Вы уверены, что хотите удалить пресет?",
|
||||||
|
"term.deletedpreset": "Пресет удален",
|
||||||
|
"term.defaultPresets": "Предустановки по умолчанию",
|
||||||
|
"term.userPresets": "Предустановки пользователя",
|
||||||
|
"term.requestError": "Возникла проблема с запросом.",
|
||||||
|
"term.song.link.generate": "Получение ссылки с song.link...",
|
||||||
|
"term.musicVideos": "Музыкальные видео",
|
||||||
|
"term.stations": "Станции",
|
||||||
|
"term.curators": "Кураторы",
|
||||||
|
"term.appleCurators": "Кураторы Apple",
|
||||||
|
"term.radioShows": "Радиошоу",
|
||||||
|
"term.recordLabels": "Лейблы звукозаписи",
|
||||||
|
"term.videoExtras": "Ещё",
|
||||||
|
"term.top": "Top",
|
||||||
|
"term.version": "Версия",
|
||||||
|
"term.noVideos": "Видео не найдено.",
|
||||||
|
"home.title": "Главная",
|
||||||
|
"home.recentlyPlayed": "Недавно прослушанные",
|
||||||
|
"home.recentlyAdded": "Недавно добавленные",
|
||||||
|
"home.artistsFeed": "Лента исполнителей",
|
||||||
|
"home.artistsFeed.noArtist": "Подпишитесь на некоторых артистов, и их последние релизы будут здесь",
|
||||||
|
"home.madeForYou": "Специально для вас",
|
||||||
|
"home.friendsListeningTo": "Что слушают друзья",
|
||||||
|
"home.followedArtists": "Отслеживаемые артисты",
|
||||||
|
"error.appleMusicSubRequired": "Для прослушивания Apple Music требуется подписка.",
|
||||||
|
"error.connectionError": "Возникла проблема с подключением к Apple Music.",
|
||||||
|
"error.noResults": "Нет результатов.",
|
||||||
|
"error.noResults.description": "Попробуйте ещё раз.",
|
||||||
|
"podcast.followOnCider": "Отслеживать в Cider",
|
||||||
|
"podcast.followedOnCider": "Отслеживаемые в Cider",
|
||||||
|
"podcast.subscribeOnItunes": "Подписаться в iTunes",
|
||||||
|
"podcast.subscribedOnItunes": "Подписан в iTunes",
|
||||||
|
"podcast.itunesStore": "iTunes Store",
|
||||||
|
"podcast.episodes": "Выпуски радиошоу",
|
||||||
|
"podcast.playEpisode": "Воспроизвести",
|
||||||
|
"podcast.website": "Веб-сайт",
|
||||||
|
"action.addToLibrary": "Добавить в медиатеку",
|
||||||
|
"action.addToLibrary.success": "Добавлено в медиатеку",
|
||||||
|
"action.addToLibrary.error": "Ошибка Добавления в медиатику",
|
||||||
|
"action.removeFromLibrary": "Убрать из медиатеки",
|
||||||
|
"action.removeFromLibrary.success": "Удалено из медиатеки",
|
||||||
|
"action.addToQueue": "Воспроизвести далее",
|
||||||
|
"action.addToQueue.success": "Добавлено в очередь",
|
||||||
|
"action.addToQueue.error": "Ошибка добавления в очередь",
|
||||||
|
"action.removeFromQueue": "Убрать из очереди",
|
||||||
|
"action.removeFromQueue.success": "Удалено из очереди",
|
||||||
|
"action.removeFromQueue.error": "Ошибка удаления из очереди",
|
||||||
|
"action.createPlaylist": "Создать новый плейлист",
|
||||||
|
"action.addToPlaylist": "Добавить в плейлист",
|
||||||
|
"action.removeFromPlaylist": "Удалить из плейлиста",
|
||||||
|
"action.addToFavorites": "Добавить в избранное",
|
||||||
|
"action.follow": "Отслеживать",
|
||||||
|
"action.follow.success": "В отслеживаемых",
|
||||||
|
"action.follow.error": "Ошибка отслеживания",
|
||||||
|
"action.unfollow": "Отписаться",
|
||||||
|
"action.unfollow.success": "Отписан",
|
||||||
|
"action.unfollow.error": "Ошибка отписки",
|
||||||
|
"action.playNext": "Воспроизвести далее",
|
||||||
|
"action.playLater": "Воспроизвести позже",
|
||||||
|
"action.startRadio": "Создать станцию",
|
||||||
|
"action.goToArtist": "Перейти к артисту",
|
||||||
|
"action.goToAlbum": "Перейти к альбому",
|
||||||
|
"action.moveToTop": "Переместить наверх",
|
||||||
|
"action.share": "Поделиться",
|
||||||
|
"action.rename": "Переименовать",
|
||||||
|
"action.love": "Нравится",
|
||||||
|
"action.unlove": "Больше не нравится",
|
||||||
|
"action.dislike": "Меньше подобных рекомендаций",
|
||||||
|
"action.undoDislike": "Вернуть подобные рекомендации",
|
||||||
|
"action.showWebRemoteQR": "Веб-интерфейс",
|
||||||
|
"action.playTracksNext": "Воспроизвести ${app.selectedMediaItems.length} песен следующими",
|
||||||
|
"action.playTracksLater": "Воспроизвести ${app.selectedMediaItems.length} песен позже",
|
||||||
|
"action.removeTracks": "Удалить ${self.selectedItems.length} песен из очереди",
|
||||||
|
"action.import": "Импорт",
|
||||||
|
"action.export": "Экспорт",
|
||||||
|
"action.showAlbum": "Показать весь альбом",
|
||||||
|
"action.tray.minimize": "Свернуть в трей",
|
||||||
|
"action.tray.quit": "Выйти",
|
||||||
|
"action.tray.show": "Показать",
|
||||||
|
"action.update": "Обновить",
|
||||||
|
"action.copy": "Скопировать",
|
||||||
|
"action.newpreset": "Новый пресет...",
|
||||||
|
"action.deletepreset": "Удалить пресет",
|
||||||
|
"action.open": "Открыть",
|
||||||
|
"settings.header.general": "Общие",
|
||||||
|
"settings.header.general.description": "Настройка общих параметров Cider.",
|
||||||
|
"settings.option.general.language": "Язык",
|
||||||
|
"settings.option.general.language.main": "Языки",
|
||||||
|
"settings.option.general.language.fun": "Забавные языки",
|
||||||
|
"settings.option.general.language.unsorted": "Неотсортированные",
|
||||||
|
"settings.option.general.updateCider": "Обновить Cider",
|
||||||
|
"settings.option.general.updateCider.branch": "Ветка обновления Cider",
|
||||||
|
"settings.option.general.updateCider.branch.description": "Выберите ветку обновления Cider",
|
||||||
|
"settings.option.general.updateCider.branch.main": "Стабильная",
|
||||||
|
"settings.option.general.updateCider.branch.develop": "Нестабильная",
|
||||||
|
"settings.header.audio": "Звук",
|
||||||
|
"settings.header.audio.description": "Настройка звука Cider.",
|
||||||
|
"settings.option.audio.volumeStep": "Шаг громкости",
|
||||||
|
"settings.option.audio.maxVolume": "Максимальная громкость",
|
||||||
|
"settings.option.audio.quality": "Качество звука",
|
||||||
|
"settings.header.audio.quality.hireslossless": "Высокое разрешение, без потерь",
|
||||||
|
"settings.header.audio.quality.hireslossless.description": "ALAC до 24 бит/192 кГц",
|
||||||
|
"settings.header.audio.quality.lossless": "Без потерь",
|
||||||
|
"settings.header.audio.quality.lossless.description": "ALAC до 24 бит/48 кГц",
|
||||||
|
"settings.header.audio.quality.high": "Высокое качество",
|
||||||
|
"settings.header.audio.quality.high.description": "AAC 256 кб/с",
|
||||||
|
"settings.header.audio.quality.standard": "Высокая эффективность",
|
||||||
|
"settings.header.audio.quality.standard.description": "НЕ-ААС для экономии трафика(64 кб/с)",
|
||||||
|
"settings.option.audio.seamlessTransition": "Плавный переход между песнями",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality": "Включить расширенный функционал",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.description": "Включение функции AudioContext позволит использовать расширенные функции звука, такие как нормализация звука, эквалайзеры и визуализаторы, однако в некоторых системах это может вызвать заикание звуковых дорожек.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Психоакустические улучшения, благодаря которым все звучит богаче и живее.",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP не совместим с пространственным звучанием. Пожалуйста, отключите пространственное звучание, чтобы продолжить.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Режим CAP",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Изменяет режим обработки звука. (Режим агрессии может привести к нежелаемым результатам)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Стандартный",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Агрессивный",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Нормализация звука",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Нормализует пиковую громкость для отдельных треков, чтобы создать более однородное впечатление от прослушивания.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Пространственное звучание",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Пространственное аудио; сделать звук более трехмерным (примечание: это не Dolby Atmos)",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Пространственная обработка несовместима с CAP. Пожалуйста, отключите CAP, чтобы продолжить.",
|
||||||
|
"settings.header.visual": "Внешний вид",
|
||||||
|
"settings.header.visual.description": "Настройка внешнего вида Cider.",
|
||||||
|
"settings.option.visual.windowBackgroundStyle": "Стиль фона Cider",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.none": "Отсутствует",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.artwork": "Обложка",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.image": "Изображение",
|
||||||
|
"settings.option.visual.animatedArtwork": "Анимированная обложка",
|
||||||
|
"settings.header.visual.animatedArtwork.always": "Всегда",
|
||||||
|
"settings.header.visual.animatedArtwork.limited": "Ограничено специальными страницами",
|
||||||
|
"settings.header.visual.animatedArtwork.disable": "Выключено везде",
|
||||||
|
"settings.option.visual.animatedArtworkQuality": "Качество анимированной обложки",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.low": "Низкое",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.medium": "Среднее",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.high": "Высокое",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Очень высокое",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.extreme": "Наивысшее",
|
||||||
|
"settings.option.visual.animatedWindowBackground": "Анимированный фон окна Cider",
|
||||||
|
"settings.option.visual.hardwareAcceleration": "Аппаратное ускорение",
|
||||||
|
"settings.option.visual.hardwareAcceleration.description": "Требует перезагрузки приложения",
|
||||||
|
"settings.header.visual.hardwareAcceleration.default": "По умолчанию",
|
||||||
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
|
"settings.header.visual.theme": "Тема",
|
||||||
|
"settings.option.visual.theme.github.download": "Установить с GitHub",
|
||||||
|
"settings.option.visual.theme.github.explore": "Исследовать темы с GitHub",
|
||||||
|
"settings.option.visual.theme.github.install.confirm": "Вы уверены, что хотите установить {{ repo }}?",
|
||||||
|
"settings.prompt.visual.theme.github.URL": "Введите URL темы, которую хотите установить",
|
||||||
|
"settings.notyf.visual.theme.install.success": "Тема успешно установлена",
|
||||||
|
"settings.notyf.visual.theme.install.error": "Не удалось установить тему",
|
||||||
|
"settings.option.visual.theme.default": "Cider",
|
||||||
|
"settings.option.visual.theme.dark": "Тёмная",
|
||||||
|
"settings.option.visual.showPersonalInfo": "Показать личную информацию",
|
||||||
|
"settings.header.lyrics": "Текст песни",
|
||||||
|
"settings.header.lyrics.description": "Настройка текста песен.",
|
||||||
|
"settings.option.lyrics.enableMusixmatch": "Получать текст песен из Musixmatch",
|
||||||
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Включить режим караоке (только с Musixmatch)",
|
||||||
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Предпочтительный язык перевода Musixmatch",
|
||||||
|
"settings.option.lyrics.enableYoutubeLyrics": "Включить Youtube Lyrics для музыкальных клипов",
|
||||||
|
"settings.header.connectivity": "Прочее",
|
||||||
|
"settings.header.connectivity.description": "Настройка прочих параметров Cider.",
|
||||||
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
|
"settings.option.connectivity.playbackNotifications": "Уведомления о воспроизведении",
|
||||||
|
"settings.header.connectivity.discordRPC.cider": "Отображать как 'Cider'",
|
||||||
|
"settings.header.connectivity.discordRPC.appleMusic": "Отображать как 'Apple Music'",
|
||||||
|
"settings.option.connectivity.discordRPC.clearOnPause": "Отключать Discord Rich Presence на паузе",
|
||||||
|
"settings.option.connectivity.lastfmScrobble": "Last.fm cкробблинг",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.delay": "Частота скробблинга Last.fm (%)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Включить Last.fm Сейчас играет",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Удалять фит-исполнителей из названия песни (Last.fm)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Фильтровать зацикленный трек (Last.fm)",
|
||||||
|
"settings.header.debug": "Debug",
|
||||||
|
"settings.option.debug.copy_log": "Копировать логи в буфер обмена",
|
||||||
|
"settings.option.debug.openAppData": "Открыть папку Cider",
|
||||||
|
"settings.header.experimental": "Экспериментальные",
|
||||||
|
"settings.header.experimental.description": "Настройка экспериментальных функций Cider.",
|
||||||
|
"settings.option.experimental.compactUI": "Компактный интерфейс",
|
||||||
|
"settings.option.window.close_button_hide": "Кнопка «Закрыть» скрывает приложение",
|
||||||
|
"settings.option.experimental.inline_playlists": "Встроенные плейлисты и альбомы",
|
||||||
|
"spatial.notTurnedOn": "Пространственное аудио отключено. Чтобы использовать, сначала включите его.",
|
||||||
|
"spatial.spatialProperties": "Настройка пространственного аудио",
|
||||||
|
"spatial.width": "Ширина",
|
||||||
|
"spatial.height": "Высота",
|
||||||
|
"spatial.depth": "Глубина",
|
||||||
|
"spatial.gain": "Усиление",
|
||||||
|
"spatial.roomMaterials": "Материалы комнаты",
|
||||||
|
"spatial.roomDimensions": "Размеры комнаты",
|
||||||
|
"spatial.roomPositions": "Позиции комнаты",
|
||||||
|
"spatial.setDimensions": "Установить размеры",
|
||||||
|
"spatial.setPositions": "Установить позиции",
|
||||||
|
"spatial.up": "Сверху",
|
||||||
|
"spatial.front": "Спереди",
|
||||||
|
"spatial.left": "Слева",
|
||||||
|
"spatial.right": "Справа",
|
||||||
|
"spatial.back": "Сзади",
|
||||||
|
"spatial.down": "Снизу",
|
||||||
|
"spatial.listener": "Слушатель",
|
||||||
|
"spatial.audioSource": "Источник звука",
|
||||||
|
"settings.header.unfinished": "Не завершено",
|
||||||
|
"remote.web.title": "Веб-интерфейс",
|
||||||
|
"remote.web.description": "Отсканируйте QR-код, чтобы подключить телефон к Cider Remote",
|
||||||
|
"about.thanks": "Большое спасибо команде Cider Collective и всем нашим вкладчикам."
|
||||||
|
}
|
|
@ -1,25 +1,15 @@
|
||||||
{ // Base File
|
{
|
||||||
|
"i18n.languageName": "Slovenčina (SK)",
|
||||||
// i18n Info
|
"i18n.languageNameEnglish": "Slovak (SK)",
|
||||||
"i18n.languageName": "Slovenčina (SK)", // name of language in native language
|
"i18n.category": "main",
|
||||||
"i18n.languageNameEnglish": "Slovak (SK)", // name of language in English
|
"i18n.authors": "@jurosic-JurajJanosik",
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
|
||||||
"i18n.authors": "@jurosic", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
"app.name": "Cider",
|
||||||
|
|
||||||
"date.format": "${d} ${m}, ${y}",
|
"date.format": "${d} ${m}, ${y}",
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "Zrušit",
|
"dialog.cancel": "Zrušit",
|
||||||
"dialog.ok": "OK",
|
"dialog.ok": "OK",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "Aktualizujem pesničky v knižnici...",
|
"notification.updatingLibrarySongs": "Aktualizujem pesničky v knižnici...",
|
||||||
"notification.updatingLibraryAlbums": "Aktualizujem albumy v knižnici...",
|
"notification.updatingLibraryAlbums": "Aktualizujem albumy v knižnici...",
|
||||||
"notification.updatingLibraryArtists": "Aktualizujem tvorcov v knižnici...",
|
"notification.updatingLibraryArtists": "Aktualizujem tvorcov v knižnici...",
|
||||||
// Terms
|
|
||||||
"term.appleInc": "Apple Inc.",
|
"term.appleInc": "Apple Inc.",
|
||||||
"term.appleMusic": "Apple Music",
|
"term.appleMusic": "Apple Music",
|
||||||
"term.applePodcasts": "Apple Podcasts",
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
@ -31,7 +21,7 @@
|
||||||
"term.logout": "Odhlásiť",
|
"term.logout": "Odhlásiť",
|
||||||
"term.login": "Prihlásiť",
|
"term.login": "Prihlásiť",
|
||||||
"term.about": "About",
|
"term.about": "About",
|
||||||
"term.privateSession": "Osobný Session",
|
"term.privateSession": "Skuromn Počúvanie",
|
||||||
"term.queue": "Poradie",
|
"term.queue": "Poradie",
|
||||||
"term.search": "Vyhládavať",
|
"term.search": "Vyhládavať",
|
||||||
"term.library": "Knižnica",
|
"term.library": "Knižnica",
|
||||||
|
@ -76,8 +66,8 @@
|
||||||
"term.viewAs.coverArt": "Náhľadovka",
|
"term.viewAs.coverArt": "Náhľadovka",
|
||||||
"term.viewAs.list": "List",
|
"term.viewAs.list": "List",
|
||||||
"term.size": "Velkosť",
|
"term.size": "Velkosť",
|
||||||
"term.size.normal": "Normal",
|
"term.size.normal": "Normálny",
|
||||||
"term.size.compact": "Compact",
|
"term.size.compact": "Kompaktný",
|
||||||
"term.enable": "Zapnúť",
|
"term.enable": "Zapnúť",
|
||||||
"term.disable": "Vypnúť",
|
"term.disable": "Vypnúť",
|
||||||
"term.enabled": "Zapnuté",
|
"term.enabled": "Zapnuté",
|
||||||
|
@ -91,7 +81,7 @@
|
||||||
"term.less": "Menej",
|
"term.less": "Menej",
|
||||||
"term.showMore": "Ukázať viac",
|
"term.showMore": "Ukázať viac",
|
||||||
"term.showLess": "Ukázať menej",
|
"term.showLess": "Ukázať menej",
|
||||||
"term.topSongs" : "Top Pesničky",
|
"term.topSongs": "Top Pesničky",
|
||||||
"term.latestReleases": "Najnovšie vydania",
|
"term.latestReleases": "Najnovšie vydania",
|
||||||
"term.time.added": "Pridané",
|
"term.time.added": "Pridané",
|
||||||
"term.time.released": "Vydané",
|
"term.time.released": "Vydané",
|
||||||
|
@ -120,14 +110,11 @@
|
||||||
"term.contributors": "Contributors",
|
"term.contributors": "Contributors",
|
||||||
"term.equalizer": "Equalizer",
|
"term.equalizer": "Equalizer",
|
||||||
"term.reset": "Resetovať",
|
"term.reset": "Resetovať",
|
||||||
"term.tracks": "pesničiek", // Assume x amount of tracks. e.g. 50 tracks
|
"term.tracks": "pesničiek",
|
||||||
"term.videos": "Videá",
|
"term.videos": "Videá",
|
||||||
"term.menu": "Menu",
|
"term.menu": "Menu",
|
||||||
"term.check": "Skontrolovať",
|
"term.check": "Skontrolovať",
|
||||||
"term.aboutArtist": "Viac o {{artistName}}", // e.g. 'About Doja Cat'
|
"term.aboutArtist": "Viac o {{artistName}}",
|
||||||
"term.updateCider": "Aktualizovať Cider",
|
|
||||||
|
|
||||||
// Home
|
|
||||||
"home.title": "Domov",
|
"home.title": "Domov",
|
||||||
"home.recentlyPlayed": "Nedávno Prehrané",
|
"home.recentlyPlayed": "Nedávno Prehrané",
|
||||||
"home.recentlyAdded": "Nedávno Pridané",
|
"home.recentlyAdded": "Nedávno Pridané",
|
||||||
|
@ -136,13 +123,10 @@
|
||||||
"home.madeForYou": "Robené Pre Teba",
|
"home.madeForYou": "Robené Pre Teba",
|
||||||
"home.friendsListeningTo": "Kamaráti počúvajú",
|
"home.friendsListeningTo": "Kamaráti počúvajú",
|
||||||
"home.followedArtists": "Sledovaný Tvorcovia",
|
"home.followedArtists": "Sledovaný Tvorcovia",
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "Apple Music potrebuje subscription.",
|
"error.appleMusicSubRequired": "Apple Music potrebuje subscription.",
|
||||||
"error.connectionError": "Pri pripojovaní ku Apple Music sa vyskytol problém",
|
"error.connectionError": "Pri pripojovaní ku Apple Music sa vyskytol problém",
|
||||||
"error.noResults": "Žiadne výsledky",
|
"error.noResults": "Žiadne výsledky",
|
||||||
"error.noResults.description": "Skús nové vyhľádavanie",
|
"error.noResults.description": "Skús nové vyhľádavanie",
|
||||||
|
|
||||||
//Podcasts
|
|
||||||
"podcast.followOnCider": "Sleduj na Cider",
|
"podcast.followOnCider": "Sleduj na Cider",
|
||||||
"podcast.followedOnCider": "Sledované na Cider",
|
"podcast.followedOnCider": "Sledované na Cider",
|
||||||
"podcast.subscribeOnItunes": "Odoberaj na iTunes",
|
"podcast.subscribeOnItunes": "Odoberaj na iTunes",
|
||||||
|
@ -151,8 +135,6 @@
|
||||||
"podcast.episodes": "Epizódy",
|
"podcast.episodes": "Epizódy",
|
||||||
"podcast.playEpisode": "Prehraj Epizódu",
|
"podcast.playEpisode": "Prehraj Epizódu",
|
||||||
"podcast.website": "Stránka Podcastu",
|
"podcast.website": "Stránka Podcastu",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "Pridaj do Knižnice",
|
"action.addToLibrary": "Pridaj do Knižnice",
|
||||||
"action.addToLibrary.success": "Pridané do Knižnice",
|
"action.addToLibrary.success": "Pridané do Knižnice",
|
||||||
"action.addToLibrary.error": "Pri pridávani do Knižnice sa vzskytol problém",
|
"action.addToLibrary.error": "Pri pridávani do Knižnice sa vzskytol problém",
|
||||||
|
@ -197,88 +179,77 @@
|
||||||
"action.tray.quit": "Odísť",
|
"action.tray.quit": "Odísť",
|
||||||
"action.tray.show": "Ukázať",
|
"action.tray.show": "Ukázať",
|
||||||
"action.update": "Aktualizovať",
|
"action.update": "Aktualizovať",
|
||||||
|
"settings.header.general": "Všeobecné",
|
||||||
// Settings - General
|
|
||||||
"settings.header.general": "všeobecné",
|
|
||||||
"settings.header.general.description": "Zmeniť všeobecné nastavenia pre Cider.",
|
"settings.header.general.description": "Zmeniť všeobecné nastavenia pre Cider.",
|
||||||
"settings.option.general.language": "Jazyk",
|
"settings.option.general.language": "Jazyk",
|
||||||
|
|
||||||
// Language optgroups
|
|
||||||
"settings.option.general.language.main": "Jazyky",
|
"settings.option.general.language.main": "Jazyky",
|
||||||
"settings.option.general.language.fun": "Zábanve Jazyky",
|
"settings.option.general.language.fun": "Zábanve Jazyky",
|
||||||
"settings.option.general.language.unsorted": "Nepotriedené",
|
"settings.option.general.language.unsorted": "Nepotriedené",
|
||||||
|
"settings.option.general.updateCider": "Aktualizovať Cider",
|
||||||
// Settings - Audio
|
|
||||||
"settings.header.audio": "Zvuk",
|
"settings.header.audio": "Zvuk",
|
||||||
"settings.header.audio.description": "Zmeniť nastavenia zvuku pre Cider.",
|
"settings.header.audio.description": "Zmeniť nastavenia zvuku pre Cider.",
|
||||||
"settings.option.audio.quality": "Kvalita zvuku", // Dropdown
|
"settings.option.audio.quality": "Kvalita zvuku",
|
||||||
"settings.header.audio.quality.high": "Vysoká",
|
"settings.header.audio.quality.high": "Vysoká",
|
||||||
"settings.header.audio.quality.low": "Nizká",
|
"settings.header.audio.quality.low": "Nizká",
|
||||||
"settings.header.audio.quality.auto": "Automatické",
|
"settings.header.audio.quality.auto": "Automatické",
|
||||||
"settings.option.audio.seamlessTransition": "Hladký Prevod Zvuku", // Toggle
|
"settings.option.audio.seamlessTransition": "Hladký Prevod Zvuku",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "Zapnút Pokročilé Nastavenia Zvuku", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality": "Zapnút Pokročilé Nastavenia Zvuku",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "Zapnutie AudioContext funkcionality dovolí rozšírené funkcie zvuku ako Zvuková Normalizávia , Equalizéry a Visualízery, ale na niektorých systémoch to može spôsobiť problémy so zvukom.",
|
"settings.option.audio.enableAdvancedFunctionality.description": "Zapnutie AudioContext funkcionality dovolí rozšírené funkcie zvuku ako Zvuková Normalizávia , Equalizéry a Visualízery, ale na niektorých systémoch to može spôsobiť problémy so zvukom.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalízacia Zvuku", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoakustické Vylepšenia ktoré urobia zvuk viac bohatý a živý.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Sila",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Zmení silu CAP (Agresívná môže spôsobiť nežiadané výsledky)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Štandardná",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Agresívná",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalízacia Zvuku",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizuje silu zvuku v pesničkách pre hľadší počúvací zážitok",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizuje silu zvuku v pesničkách pre hľadší počúvací zážitok",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Priestorový Zvuk", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Priestorový Zvuk",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Priestorový zvuk urobí zvuk 3-dimenzionálny (poznámka: Toto nie je Dolby Atmos)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Priestorový zvuk urobí zvuk 3-dimenzionálny (poznámka: Toto nie je Dolby Atmos)",
|
||||||
// Settings - Visual
|
|
||||||
"settings.header.visual": "Visuálne",
|
"settings.header.visual": "Visuálne",
|
||||||
"settings.header.visual.description": "Zmenit Visuálne nastavenia pre Cider.",
|
"settings.header.visual.description": "Zmenit Visuálne nastavenia pre Cider.",
|
||||||
"settings.option.visual.windowBackgroundStyle": "Štýl pozadia okna", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "Štýl pozadia okna",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "Žiadne",
|
"settings.header.visual.windowBackgroundStyle.none": "Žiadne",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "Náhľadovka",
|
"settings.header.visual.windowBackgroundStyle.artwork": "Náhľadovka",
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "Obrátok",
|
"settings.header.visual.windowBackgroundStyle.image": "Obrátok",
|
||||||
"settings.option.visual.animatedArtwork": "Animované Náhľadovky", // Dropdown
|
"settings.option.visual.animatedArtwork": "Animované Náhľadovky",
|
||||||
"settings.header.visual.animatedArtwork.always": "Vždy",
|
"settings.header.visual.animatedArtwork.always": "Vždy",
|
||||||
"settings.header.visual.animatedArtwork.limited": "Limitované pre stránky a špecialne vydania",
|
"settings.header.visual.animatedArtwork.limited": "Limitované pre stránky a špecialne vydania",
|
||||||
"settings.header.visual.animatedArtwork.disable": "Vypnuť Všade",
|
"settings.header.visual.animatedArtwork.disable": "Vypnuť Všade",
|
||||||
"settings.option.visual.animatedArtworkQuality": "Kvalita Animovanej Náhľadovky", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "Kvalita Animovanej Náhľadovky",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "Nízka",
|
"settings.header.visual.animatedArtworkQuality.low": "Nízka",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "Stredná",
|
"settings.header.visual.animatedArtworkQuality.medium": "Stredná",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "Vysoká",
|
"settings.header.visual.animatedArtworkQuality.high": "Vysoká",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "Veľmi Vysoká",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Veľmi Vysoká",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "Extrémna",
|
"settings.header.visual.animatedArtworkQuality.extreme": "Extrémna",
|
||||||
"settings.option.visual.animatedWindowBackground": "Pozadie Animováneho Okna", // Toggle
|
"settings.option.visual.animatedWindowBackground": "Pozadie Animováneho Okna",
|
||||||
"settings.option.visual.hardwareAcceleration": "Hardvérova Akcelerácia", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "Hardvérova Akcelerácia",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "Vyžaduje Reštart",
|
"settings.option.visual.hardwareAcceleration.description": "Vyžaduje Reštart",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "Predvoľba",
|
"settings.header.visual.hardwareAcceleration.default": "Predvoľba",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.header.visual.theme": "Theme",
|
||||||
"settings.option.visual.showPersonalInfo": "Zobraziť osobné informácie", // Toggle
|
"settings.option.visual.theme.default": "Cider",
|
||||||
|
"settings.option.visual.theme.dark": "Dark",
|
||||||
// Settings - Lyrics
|
"settings.option.visual.showPersonalInfo": "Zobraziť osobné informácie",
|
||||||
"settings.header.lyrics": "Text",
|
"settings.header.lyrics": "Text",
|
||||||
"settings.header.lyrics.description": "Zmenit nastavenia textu pre Cider.",
|
"settings.header.lyrics.description": "Zmenit nastavenia textu pre Cider.",
|
||||||
"settings.option.lyrics.enableMusixmatch": "Zapnúť Musixmatch Texty", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "Zapnúť Musixmatch Texty",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "Zapnúť Karaoke Režim (Iba pre Musixmatch)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Zapnúť Karaoke Režim (Iba pre Musixmatch)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Predvolený jazyk pre Musixmatch prekladanie", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Predvolený jazyk pre Musixmatch prekladanie",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "Zapnúť Youtube Lyrics pre videá", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "Zapnúť Youtube Lyrics pre videá",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "Konektivita",
|
"settings.header.connectivity": "Konektivita",
|
||||||
"settings.header.connectivity.description": "Zmeniť nastavenia konektivity pre Cider.",
|
"settings.header.connectivity.description": "Zmeniť nastavenia konektivity pre Cider.",
|
||||||
"settings.option.connectivity.discordRPC": "Zobraziť status v Discord", // Dropdown
|
"settings.option.connectivity.discordRPC": "Zobraziť status v Discord",
|
||||||
"settings.option.connectivity.playbackNotifications": "Notifikácie", // Toggle
|
"settings.option.connectivity.playbackNotifications": "Notifikácie",
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "Zobraziť ako 'Cider'",
|
"settings.header.connectivity.discordRPC.cider": "Zobraziť ako 'Cider'",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "Zobraziť ako 'Apple Music'",
|
"settings.header.connectivity.discordRPC.appleMusic": "Zobraziť ako 'Apple Music'",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "Vypnút Discord status pri Pauze", // Toggle
|
"settings.option.connectivity.discordRPC.clearOnPause": "Vypnút Discord status pri Pauze",
|
||||||
"settings.option.connectivity.lastfmScrobble": "Last.fm zaznamenanie počúvanej hudby", // Option to Connect
|
"settings.option.connectivity.lastfmScrobble": "Last.fm zaznamenanie počúvanej hudby",
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Oneskorenie (%)",
|
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Oneskorenie (%)",
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Zapnúť Last.fm Now Playing",
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Zapnúť Last.fm Now Playing",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Odstrániť tvorcov z počúvanej pesničky (Last.fm)",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Odstrániť tvorcov z počúvanej pesničky (Last.fm)",
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrovať loopované pesničky (Last.fm)",
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrovať loopované pesničky (Last.fm)",
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "Experimentálne",
|
"settings.header.experimental": "Experimentálne",
|
||||||
"settings.header.experimental.description": "Zmeniť experimentálne nastavenia pre Cider.",
|
"settings.header.experimental.description": "Zmeniť experimentálne nastavenia pre Cider.",
|
||||||
"settings.option.experimental.compactUI": "Compact UI", // Toggle
|
|
||||||
"settings.option.experimental.close_button_hide": "Zatvoriť by malo skriť aplikáciu",
|
|
||||||
// Refer to term.disabled & term.enabled
|
|
||||||
|
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.notTurnedOn": "Priestorový Zvuk je vypnutý. Prosím najprv ho zapnite.",
|
"spatial.notTurnedOn": "Priestorový Zvuk je vypnutý. Prosím najprv ho zapnite.",
|
||||||
"spatial.spatialProperties": "Špeciálne Nastavenia",
|
"spatial.spatialProperties": "Špeciálne Nastavenia",
|
||||||
"spatial.width": "Šírka",
|
"spatial.width": "Šírka",
|
||||||
|
@ -298,14 +269,8 @@
|
||||||
"spatial.down": "Dole",
|
"spatial.down": "Dole",
|
||||||
"spatial.listener": "Listener",
|
"spatial.listener": "Listener",
|
||||||
"spatial.audioSource": "Zdroj zvuku",
|
"spatial.audioSource": "Zdroj zvuku",
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "Nedokončené",
|
"settings.header.unfinished": "Nedokončené",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "Cider Remote",
|
"remote.web.title": "Cider Remote",
|
||||||
"remote.web.description": "Naskenujte QR kód aby ste si spárovali telefón s touto Cider session",
|
"remote.web.description": "Naskenujte QR kód aby ste si spárovali telefón s touto Cider session",
|
||||||
|
|
||||||
// About
|
|
||||||
"about.thanks": "Ďakujeme Cider Tímu, Komunite a Kontribútorom, bez vás by to nebolo možné."
|
"about.thanks": "Ďakujeme Cider Tímu, Komunite a Kontribútorom, bez vás by to nebolo možné."
|
||||||
}
|
}
|
425
src/i18n/source/en_US.json
Normal file
|
@ -0,0 +1,425 @@
|
||||||
|
{
|
||||||
|
"i18n.languageName": "English (US)",
|
||||||
|
"i18n.languageNameEnglish": "English (US)",
|
||||||
|
"i18n.category": "main",
|
||||||
|
"i18n.authors": "@maikirakiwi @kyw504100 @nosh118",
|
||||||
|
"app.name": "Cider",
|
||||||
|
"date.format": "${m} ${d}, ${y}",
|
||||||
|
"dialog.cancel": "Cancel",
|
||||||
|
"dialog.ok": "OK",
|
||||||
|
"notification.updatingLibrarySongs": "Updating library songs...",
|
||||||
|
"notification.updatingLibraryAlbums": "Updating library albums...",
|
||||||
|
"notification.updatingLibraryArtists": "Updating library artists...",
|
||||||
|
"term.appleInc": "Apple Inc.",
|
||||||
|
"term.appleMusic": "Apple Music",
|
||||||
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
"term.itunes": "iTunes",
|
||||||
|
"term.github": "GitHub",
|
||||||
|
"term.discord": "Discord",
|
||||||
|
"term.learnMore": "Learn more",
|
||||||
|
"term.accountSettings": "Account Settings",
|
||||||
|
"term.logout": "Logout",
|
||||||
|
"term.login": "Log In",
|
||||||
|
"term.about": "About",
|
||||||
|
"term.privateSession": "Private Session",
|
||||||
|
"term.queue": "Queue",
|
||||||
|
"term.lyrics": "Lyrics",
|
||||||
|
"term.miniplayer": "MiniPlayer",
|
||||||
|
"term.history": "History",
|
||||||
|
"term.search": "Search",
|
||||||
|
"term.library": "Library",
|
||||||
|
"term.listenNow": "Listen Now",
|
||||||
|
"term.browse": "Browse",
|
||||||
|
"term.radio": "Radio",
|
||||||
|
"term.recentlyAdded": "Recently Added",
|
||||||
|
"term.songs": "Songs",
|
||||||
|
"term.albums": "Albums",
|
||||||
|
"term.artists": "Artists",
|
||||||
|
"term.podcasts": "Podcasts",
|
||||||
|
"term.playlists": "Playlists",
|
||||||
|
"term.playlist": "Playlist",
|
||||||
|
"term.newPlaylist": "New Playlist",
|
||||||
|
"term.newPlaylistFolder": "New Playlist Folder",
|
||||||
|
"term.createNewPlaylist": "Create New Playlist",
|
||||||
|
"term.createNewPlaylistFolder": "Create New Playlist Folder",
|
||||||
|
"term.deletePlaylist": "Are you sure you want to delete this playlist?",
|
||||||
|
"term.play": "Play",
|
||||||
|
"term.pause": "Pause",
|
||||||
|
"term.previous": "Previous",
|
||||||
|
"term.next": "Next",
|
||||||
|
"term.shuffle": "Shuffle",
|
||||||
|
"term.repeat": "Repeat",
|
||||||
|
"term.volume": "Volume",
|
||||||
|
"term.mute": "Mute",
|
||||||
|
"term.unmute": "Unmute",
|
||||||
|
"term.share": "Share",
|
||||||
|
"term.share.success": "Copied to clipboard",
|
||||||
|
"term.settings": "Settings",
|
||||||
|
"term.seeAll": "See All",
|
||||||
|
"term.sortBy": "Sort By",
|
||||||
|
"term.sortBy.album": "Album",
|
||||||
|
"term.sortBy.artist": "Artist",
|
||||||
|
"term.sortBy.name": "Name",
|
||||||
|
"term.sortBy.genre": "Genre",
|
||||||
|
"term.sortBy.releaseDate": "Release Date",
|
||||||
|
"term.sortBy.duration": "Duration",
|
||||||
|
"term.sortBy.dateAdded": "Date Added",
|
||||||
|
"term.sortOrder": "A-Z",
|
||||||
|
"term.sortOrder.ascending": "Ascending",
|
||||||
|
"term.sortOrder.descending": "Descending",
|
||||||
|
"term.viewAs": "View As",
|
||||||
|
"term.viewAs.coverArt": "Cover Art",
|
||||||
|
"term.viewAs.list": "List",
|
||||||
|
"term.size": "Size",
|
||||||
|
"term.size.normal": "Normal",
|
||||||
|
"term.size.compact": "Compact",
|
||||||
|
"term.enable": "Enable",
|
||||||
|
"term.disable": "Disable",
|
||||||
|
"term.enabled": "Enabled",
|
||||||
|
"term.disabled": "Disabled",
|
||||||
|
"term.connect": "Connect",
|
||||||
|
"term.connecting": "Connecting",
|
||||||
|
"term.disconnect": "Disconnect",
|
||||||
|
"term.authed": "Authed",
|
||||||
|
"term.confirm": "Confirm?",
|
||||||
|
"term.more": "More",
|
||||||
|
"term.less": "Less",
|
||||||
|
"term.showMore": "Show more",
|
||||||
|
"term.showLess": "Show less",
|
||||||
|
"term.topSongs": "Top Songs",
|
||||||
|
"term.latestReleases": "Latest Releases",
|
||||||
|
"term.time.added": "Added",
|
||||||
|
"term.time.released": "Released",
|
||||||
|
"term.time.updated": "Updated",
|
||||||
|
"term.time.days": "days",
|
||||||
|
"term.time.day": {
|
||||||
|
"one": "day",
|
||||||
|
"other": "days"
|
||||||
|
},
|
||||||
|
"term.time.hours": "hours",
|
||||||
|
"term.time.hour": {
|
||||||
|
"one": "hour",
|
||||||
|
"other": "hours"
|
||||||
|
},
|
||||||
|
"term.time.minutes": "minutes",
|
||||||
|
"term.time.minute": {
|
||||||
|
"one": "minute",
|
||||||
|
"other": "minutes"
|
||||||
|
},
|
||||||
|
"term.time.seconds": "seconds",
|
||||||
|
"term.time.second": {
|
||||||
|
"one": "second",
|
||||||
|
"other": "seconds"
|
||||||
|
},
|
||||||
|
"term.fullscreenView": "Fullscreen View",
|
||||||
|
"term.defaultView": "Default View",
|
||||||
|
"term.audioSettings": "Audio Settings",
|
||||||
|
"term.audioControls": "Volume Controls",
|
||||||
|
"term.clearAll": "Clear All",
|
||||||
|
"term.recentStations": "Recent Stations",
|
||||||
|
"term.language": "Language",
|
||||||
|
"term.funLanguages": "Fun",
|
||||||
|
"term.noLyrics": "Loading... / Lyrics not found./ Instrumental.",
|
||||||
|
"term.copyright": "Copyright",
|
||||||
|
"term.rightsReserved": "All Rights Reserved.",
|
||||||
|
"term.sponsor": "Sponsor this project",
|
||||||
|
"term.ciderTeam": "Cider Team",
|
||||||
|
"term.developer": "Developer",
|
||||||
|
"term.socialTeam": "Social Team",
|
||||||
|
"term.socials": "Socials",
|
||||||
|
"term.contributors": "Contributors",
|
||||||
|
"term.equalizer": "Equalizer",
|
||||||
|
"term.reset": "Reset",
|
||||||
|
"term.tracks": "tracks",
|
||||||
|
"term.track": {
|
||||||
|
"one" : "track",
|
||||||
|
"other" : "tracks"
|
||||||
|
},
|
||||||
|
"term.videos": "Videos",
|
||||||
|
"term.menu": "Menu",
|
||||||
|
"term.check": "Check",
|
||||||
|
"term.aboutArtist": "About {{artistName}}",
|
||||||
|
"term.topResult": "Top Result",
|
||||||
|
"term.sharedPlaylists": "Shared Playlists",
|
||||||
|
"term.people": "People",
|
||||||
|
"term.newpreset.name": "New EQ Preset Name",
|
||||||
|
"term.addedpreset": "Added Preset",
|
||||||
|
"term.deletepreset.warn": "Are you sure you want to delete this preset?",
|
||||||
|
"term.deletedpreset": "Removed preset",
|
||||||
|
"term.defaultPresets": "Default Presets",
|
||||||
|
"term.userPresets": "User Presets",
|
||||||
|
"term.requestError": "There was a problem with the request.",
|
||||||
|
"term.song.link.generate": "Getting song.link share URL...",
|
||||||
|
"term.musicVideos": "Music Videos",
|
||||||
|
"term.stations": "Stations",
|
||||||
|
"term.curators": "Curators",
|
||||||
|
"term.appleCurators": "Apple Curators",
|
||||||
|
"term.radioShows": "Radio Shows",
|
||||||
|
"term.recordLabels": "Record Labels",
|
||||||
|
"term.videoExtras": "Video Extras",
|
||||||
|
"term.top": "Top",
|
||||||
|
"term.version": "Version",
|
||||||
|
"term.noVideos": "No videos found.",
|
||||||
|
"term.plugin": "Plug-in",
|
||||||
|
"term.pluginMenu": "Plug-in Menu",
|
||||||
|
"term.pluginMenu.none": "No interactive plugins",
|
||||||
|
"term.replay": "Replay",
|
||||||
|
"term.uniqueAlbums": "Unique Albums",
|
||||||
|
"term.uniqueArtists": "Unique Artists",
|
||||||
|
"term.uniqueSongs": "Unique Songs",
|
||||||
|
"term.topArtists": "Top Artists",
|
||||||
|
"term.listenedTo": "Listened to:",
|
||||||
|
"term.times": "times",
|
||||||
|
"term.topAlbums": "Top Albums",
|
||||||
|
"term.plays": "Plays",
|
||||||
|
"term.topGenres": "Top Genres",
|
||||||
|
"term.confirmLogout": "Are you sure you want to logout?",
|
||||||
|
"term.creditDesignedBy": "Designed by ${authorUsername}",
|
||||||
|
"home.title": "Home",
|
||||||
|
"home.recentlyPlayed": "Recently Played",
|
||||||
|
"home.recentlyAdded": "Recently Added",
|
||||||
|
"home.artistsFeed": "Your Artists Feed",
|
||||||
|
"home.artistsFeed.noArtist": "Follow some artists to see their latest releases",
|
||||||
|
"home.madeForYou": "Made For You",
|
||||||
|
"home.friendsListeningTo": "Friends Listening To",
|
||||||
|
"home.followedArtists": "Followed Artists",
|
||||||
|
"error.appleMusicSubRequired": "Apple Music requires a subscription.",
|
||||||
|
"error.connectionError": "There was a problem connecting to Apple Music.",
|
||||||
|
"error.noResults": "No Results.",
|
||||||
|
"error.noResults.description": "Try a new search.",
|
||||||
|
"podcast.followOnCider": "Follow On Cider",
|
||||||
|
"podcast.followedOnCider": "Following On Cider",
|
||||||
|
"podcast.subscribeOnItunes": "Subscribe On iTunes",
|
||||||
|
"podcast.subscribedOnItunes": "Subscribed On iTunes",
|
||||||
|
"podcast.itunesStore": "iTunes Store",
|
||||||
|
"podcast.episodes": "Episodes",
|
||||||
|
"podcast.playEpisode": "Play Episode",
|
||||||
|
"podcast.website": "Podcast Website",
|
||||||
|
"action.addToLibrary": "Add to Library",
|
||||||
|
"action.addToLibrary.success": "Added to Library",
|
||||||
|
"action.addToLibrary.error": "Error Adding to Library",
|
||||||
|
"action.removeFromLibrary": "Remove from Library",
|
||||||
|
"action.removeFromLibrary.success": "Removed from Library",
|
||||||
|
"action.addToQueue": "Add to Queue",
|
||||||
|
"action.addToQueue.success": "Added to Queue",
|
||||||
|
"action.addToQueue.error": "Error Adding to Queue",
|
||||||
|
"action.removeFromQueue": "Remove from Queue",
|
||||||
|
"action.removeFromQueue.success": "Removed from Queue",
|
||||||
|
"action.removeFromQueue.error": "Error Removing from Queue",
|
||||||
|
"action.createPlaylist": "Create a New Playlist",
|
||||||
|
"action.addToPlaylist": "Add to Playlist",
|
||||||
|
"action.removeFromPlaylist": "Remove from Playlist",
|
||||||
|
"action.addToFavorites": "Add to Favorites",
|
||||||
|
"action.follow": "Follow",
|
||||||
|
"action.follow.success": "Followed",
|
||||||
|
"action.follow.error": "Error Following",
|
||||||
|
"action.unfollow": "Unfollow",
|
||||||
|
"action.unfollow.success": "Unfollowed",
|
||||||
|
"action.unfollow.error": "Error Unfollowing",
|
||||||
|
"action.playNext": "Play Next",
|
||||||
|
"action.playLater": "Play Later",
|
||||||
|
"action.startRadio": "Start Radio",
|
||||||
|
"action.goToArtist": "Go to Artist",
|
||||||
|
"action.goToAlbum": "Go to Album",
|
||||||
|
"action.showInPlaylist": "Show in Playlist",
|
||||||
|
"action.showInAppleMusic": "Show in Apple Music",
|
||||||
|
"action.moveToTop": "Move out of Folder",
|
||||||
|
"action.share": "Share",
|
||||||
|
"action.rename": "Rename",
|
||||||
|
"action.love": "Love",
|
||||||
|
"action.unlove": "Unlove",
|
||||||
|
"action.dislike": "Dislike",
|
||||||
|
"action.undoDislike": "Undo dislike",
|
||||||
|
"action.showWebRemoteQR": "Web Remote",
|
||||||
|
"action.playTracksNext": "Play ${app.selectedMediaItems.length} tracks next",
|
||||||
|
"action.playTracksLater": "Play ${app.selectedMediaItems.length} tracks later",
|
||||||
|
"action.removeTracks": "Remove ${self.selectedItems.length} tracks from queue",
|
||||||
|
"action.import": "Import",
|
||||||
|
"action.export": "Export",
|
||||||
|
"action.showAlbum": "Show Complete Album",
|
||||||
|
"action.tray.minimize": "Minimize to Tray",
|
||||||
|
"action.tray.quit": "Quit",
|
||||||
|
"action.tray.show": "Show",
|
||||||
|
"action.update": "Update",
|
||||||
|
"action.install": "Install",
|
||||||
|
"action.copy": "Copy",
|
||||||
|
"action.newpreset": "New Preset...",
|
||||||
|
"action.deletepreset": "Delete Preset",
|
||||||
|
"action.open": "Open",
|
||||||
|
"action.relaunch.confirm": "Do you want to relaunch Cider?",
|
||||||
|
"settings.header.general": "General",
|
||||||
|
"settings.header.general.description": "Adjust the general settings for Cider.",
|
||||||
|
"settings.option.general.language": "Language",
|
||||||
|
"settings.option.general.resumebehavior": "Resume behavior",
|
||||||
|
"settings.option.general.resumebehavior.description": "Resume behavior affects how Cider will resume your session when you return to the app.",
|
||||||
|
"settings.option.general.resumebehavior.locally": "Locally",
|
||||||
|
"settings.option.general.resumebehavior.locally.description": "Cider will resume your last session on this machine.",
|
||||||
|
"settings.option.general.resumebehavior.history": "History",
|
||||||
|
"settings.option.general.resumebehavior.history.description": "Cider will queue the last song from your overall Apple Music history, across devices.",
|
||||||
|
"settings.option.general.language.main": "Languages",
|
||||||
|
"settings.option.general.language.fun": "Fun Languages",
|
||||||
|
"settings.option.general.language.unsorted": "Unsorted",
|
||||||
|
"settings.option.general.updateCider": "Update Cider",
|
||||||
|
"settings.option.general.updateCider.branch": "Cider Update Branch",
|
||||||
|
"settings.option.general.updateCider.branch.description": "Select the branch to update Cider to",
|
||||||
|
"settings.option.general.updateCider.branch.main": "Stable",
|
||||||
|
"settings.option.general.updateCider.branch.develop": "Development",
|
||||||
|
"settings.notyf.updateCider.update-not-available": "No update available",
|
||||||
|
"settings.notyf.updateCider.update-downloaded": "Update has been downloaded, restart to apply",
|
||||||
|
"settings.notyf.updateCider.update-error": "Error updating Cider",
|
||||||
|
"settings.notyf.updateCider.update-timeout": "Update timed out",
|
||||||
|
"settings.header.audio": "Audio",
|
||||||
|
"settings.header.audio.description": "Adjust the audio settings for Cider.",
|
||||||
|
"settings.option.audio.volumeStep": "Volume Step",
|
||||||
|
"settings.option.audio.maxVolume": "Max Volume",
|
||||||
|
"settings.option.audio.quality": "Audio Quality",
|
||||||
|
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
|
||||||
|
"settings.header.audio.quality.hireslossless.description": "up to 24-bit/192 kHz",
|
||||||
|
"settings.header.audio.quality.lossless": "Lossless",
|
||||||
|
"settings.header.audio.quality.lossless.description": "up to 24-bit/48 kHz",
|
||||||
|
"settings.header.audio.quality.high": "High",
|
||||||
|
"settings.header.audio.quality.high.description": "256 kbps",
|
||||||
|
"settings.header.audio.quality.standard": "Standard",
|
||||||
|
"settings.header.audio.quality.standard.description": "64 kbps",
|
||||||
|
"settings.option.audio.seamlessTransition": "Seamless Audio Transition",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality": "Enable Advanced Functionality",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalization, Equalizers and Visualizers - however on some systems this may cause stuttering in audio tracks.",
|
||||||
|
"settings.option.audio.audioLab": "Cider Audio Lab",
|
||||||
|
"settings.option.audio.audioLab.description": "An assortment of in-house developed audio effects for Cider.",
|
||||||
|
"settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionality) is required to enable Cider Audio Laboratory.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Analog Warmth",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Simulates the analog warmth modelled after the Korg Nutube 6P1",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Analog Warmth intensity",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "Changes the intensity of the Analog Warmth Module processing.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Warm",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively.",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP is not compatible with Spatialization. Please disable Spatialization to continue.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standard",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggressive",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Normalization",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizes peak volume for individual tracks to create a more uniform listening experience.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.disabled": "Managed by Audio Lab",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cider Tuned Spatialization",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description": "Pre-tuned Spatializing Effect, disables the customizable settings of Audio Spatialization. Spatialization must be enabled as a prerequisite.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile": "Cider Spatialization Profile",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description": "Changes the Tuning Profile of the Spatialization. (Requires App Restart)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard": "Standard",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile": "Audiophile",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Spatialization is not compatible with CAP. Please disable CAP to continue.",
|
||||||
|
"settings.header.visual": "Visual",
|
||||||
|
"settings.header.visual.description": "Adjust the visual settings for Cider.",
|
||||||
|
"settings.option.visual.windowBackgroundStyle": "Window Background Style",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.none": "None",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.artwork": "Artwork",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.image": "Image",
|
||||||
|
"settings.option.visual.animatedArtwork": "Animated Artwork",
|
||||||
|
"settings.header.visual.animatedArtwork.always": "Always",
|
||||||
|
"settings.header.visual.animatedArtwork.limited": "Limited to pages and special entries",
|
||||||
|
"settings.header.visual.animatedArtwork.disable": "Disable everywhere",
|
||||||
|
"settings.option.visual.animatedArtworkQuality": "Animated Artwork Quality",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.low": "Low",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.medium": "Medium",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.high": "High",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Very High",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.extreme": "Extreme",
|
||||||
|
"settings.option.visual.animatedWindowBackground": "Animated Window Background",
|
||||||
|
"settings.option.visual.hardwareAcceleration": "Hardware Acceleration",
|
||||||
|
"settings.option.visual.hardwareAcceleration.description": "Requires relaunch",
|
||||||
|
"settings.header.visual.hardwareAcceleration.default": "Default",
|
||||||
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
|
"settings.header.visual.theme": "Theme",
|
||||||
|
"settings.option.visual.theme.github.download": "Install from GitHub URL",
|
||||||
|
"settings.option.visual.theme.github.explore": "Explore GitHub Themes",
|
||||||
|
"settings.header.visual.theme.github.page": "Themes from GitHub",
|
||||||
|
"settings.option.visual.theme.github.install.confirm": "Are you sure you want to install {{ repo }}?",
|
||||||
|
"settings.prompt.visual.theme.github.URL": "Enter the URL of the theme you want to install",
|
||||||
|
"settings.notyf.visual.theme.install.success": "Theme installed successfully",
|
||||||
|
"settings.notyf.visual.theme.install.error": "Theme installation failed",
|
||||||
|
"settings.header.visual.plugin": "Plugin",
|
||||||
|
"settings.option.visual.plugin.github.download": "Install from GitHub URL",
|
||||||
|
"settings.option.visual.plugin.github.explore": "Explore GitHub Plugins",
|
||||||
|
"settings.header.visual.plugin.github.page": "Plugins from GitHub",
|
||||||
|
"settings.option.visual.plugin.github.install.confirm": "Are you sure you want to install {{ repo }}?",
|
||||||
|
"settings.prompt.visual.plugin.github.URL": "Enter the URL of the plugin you want to install",
|
||||||
|
"settings.prompt.visual.plugin.github.success": "Plugin installed successfully, Press OK to relaunch Cider",
|
||||||
|
"settings.notyf.visual.plugin.install.success": "Plugin installed successfully",
|
||||||
|
"settings.notyf.visual.plugin.install.error": "Plugin installation failed",
|
||||||
|
"settings.option.visual.theme.default": "Cider",
|
||||||
|
"settings.option.visual.theme.dark": "Dark",
|
||||||
|
"settings.option.visual.showPersonalInfo": "Show Personal Info",
|
||||||
|
"settings.header.window": "Window",
|
||||||
|
"settings.header.window.description": "Adjust the window settings for Cider.",
|
||||||
|
"settings.option.window.openOnStartup": "Open Cider on Startup",
|
||||||
|
"settings.option.window.openOnStartup.hidden": "Open Hidden",
|
||||||
|
"settings.header.lyrics": "Lyrics",
|
||||||
|
"settings.header.lyrics.description": "Adjust the lyrics settings for Cider.",
|
||||||
|
"settings.option.lyrics.enableMusixmatch": "Enable Musixmatch Lyrics",
|
||||||
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Enable Karaoke Mode (Musixmatch only)",
|
||||||
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch Translation Preferred Language",
|
||||||
|
"settings.option.lyrics.enableYoutubeLyrics": "Enable Youtube Lyrics for Music Videos",
|
||||||
|
"settings.header.connectivity": "Connectivity",
|
||||||
|
"settings.header.connectivity.description": "Adjust the connectivity settings for Cider.",
|
||||||
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
|
"settings.option.connectivity.playbackNotifications": "Playback Notifications",
|
||||||
|
"settings.header.connectivity.discordRPC.cider": "Display as 'Cider'",
|
||||||
|
"settings.header.connectivity.discordRPC.appleMusic": "Display as 'Apple Music'",
|
||||||
|
"settings.option.connectivity.discordRPC.clearOnPause": "Clear Discord Rich Presence on Pause",
|
||||||
|
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Scrobble Delay (%)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Enable Last.fm Now Playing",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (Last.fm)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filter looped track (Last.fm)",
|
||||||
|
"settings.header.debug": "Debug",
|
||||||
|
"settings.option.debug.copy_log": "Copy logs to clipboard",
|
||||||
|
"settings.option.debug.openAppData": "Open Cider Folder",
|
||||||
|
"settings.header.experimental": "Experimental",
|
||||||
|
"settings.header.experimental.description": "Adjust the experimental settings for Cider.",
|
||||||
|
"settings.option.experimental.unknownPlugin": "Unknown Sources",
|
||||||
|
"settings.option.experimental.unknownPlugin.description": "Allow installation of plugins from repos other than the Cider Plugin Repository",
|
||||||
|
"settings.option.experimental.compactUI": "Compact UI",
|
||||||
|
"settings.option.window.close_button_hide": "Close Button Should Hide the Application",
|
||||||
|
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
|
||||||
|
"settings.option.advanced.playlistTrackMapping": "Playlist Track Mapping",
|
||||||
|
"settings.option.advanced.playlistTrackMapping.description": "Enables deep scanning of playlists to determine which tracks are in which playlists. Playlist cache build times can increase significantly.",
|
||||||
|
"settings.option.visual.transparent": "Transparent frame",
|
||||||
|
"settings.option.visual.transparent.description": "Transparent frame (needs Theme Support , requires relaunch)",
|
||||||
|
"spatial.notTurnedOn": "Audio Spatialization is disabled. To use, please enable it first.",
|
||||||
|
"spatial.spatialProperties": "Spatial Properties",
|
||||||
|
"spatial.width": "Width",
|
||||||
|
"spatial.height": "Height",
|
||||||
|
"spatial.depth": "Depth",
|
||||||
|
"spatial.gain": "Gain",
|
||||||
|
"spatial.roomMaterials": "Room Materials",
|
||||||
|
"spatial.roomDimensions": "Room Dimensions",
|
||||||
|
"spatial.roomPositions": "Room Positions",
|
||||||
|
"spatial.setDimensions": "Set Dimensions",
|
||||||
|
"spatial.setPositions": "Set Positions",
|
||||||
|
"spatial.up": "Up",
|
||||||
|
"spatial.front": "Front",
|
||||||
|
"spatial.left": "Left",
|
||||||
|
"spatial.right": "Right",
|
||||||
|
"spatial.back": "Back",
|
||||||
|
"spatial.down": "Down",
|
||||||
|
"spatial.listener": "Listener",
|
||||||
|
"spatial.audioSource": "Audio Source",
|
||||||
|
"settings.header.unfinished": "Unfinished",
|
||||||
|
"remote.web.title": "Cider Remote",
|
||||||
|
"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."
|
||||||
|
}
|
|
@ -1,25 +1,15 @@
|
||||||
{ // Base File
|
{
|
||||||
// i18n Info
|
"i18n.languageName": "Svenska (SE)",
|
||||||
"i18n.languageName": "Svenska (SE)", // name of language in native language
|
"i18n.languageNameEnglish": "Swedish (SE)",
|
||||||
"i18n.languageNameEnglish": "Swedish (SE)", // name of language in English
|
"i18n.category": "main",
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
"i18n.authors": "@thisismemeboi",
|
||||||
"i18n.authors": "@thisismemeboi", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
"app.name": "Cider",
|
||||||
|
|
||||||
"date.format": "${d} ${m}, ${y}",
|
"date.format": "${d} ${m}, ${y}",
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "Avbryt",
|
"dialog.cancel": "Avbryt",
|
||||||
"dialog.ok": "OK",
|
"dialog.ok": "OK",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "Uppdaterar låtar i biblioteket...",
|
"notification.updatingLibrarySongs": "Uppdaterar låtar i biblioteket...",
|
||||||
"notification.updatingLibraryAlbums": "Uppdaterar album i biblioteket...",
|
"notification.updatingLibraryAlbums": "Uppdaterar album i biblioteket...",
|
||||||
"notification.updatingLibraryArtists": "Uppdaterar artister i biblioteket...",
|
"notification.updatingLibraryArtists": "Uppdaterar artister i biblioteket...",
|
||||||
|
|
||||||
// Terms
|
|
||||||
"term.appleInc": "Apple Inc.",
|
"term.appleInc": "Apple Inc.",
|
||||||
"term.appleMusic": "Apple Music",
|
"term.appleMusic": "Apple Music",
|
||||||
"term.applePodcasts": "Apple Podcasts",
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
@ -120,13 +110,11 @@
|
||||||
"term.contributors": "Bidrag",
|
"term.contributors": "Bidrag",
|
||||||
"term.equalizer": "EQ",
|
"term.equalizer": "EQ",
|
||||||
"term.reset": "Återställ",
|
"term.reset": "Återställ",
|
||||||
"term.tracks": "låtar", // Assume x amount of tracks. e.g. 50 tracks
|
"term.tracks": "låtar",
|
||||||
"term.videos": "Videor",
|
"term.videos": "Videor",
|
||||||
"term.menu": "Meny",
|
"term.menu": "Meny",
|
||||||
"term.check": "Sök efter uppdateringar",
|
"term.check": "Sök efter uppdateringar",
|
||||||
"term.aboutArtist": "Om {{artistName}}", // e.g. 'About Doja Cat'
|
"term.aboutArtist": "Om {{artistName}}",
|
||||||
|
|
||||||
// Home
|
|
||||||
"home.title": "Hem",
|
"home.title": "Hem",
|
||||||
"home.recentlyPlayed": "Senast spelade",
|
"home.recentlyPlayed": "Senast spelade",
|
||||||
"home.recentlyAdded": "Senast tillagda",
|
"home.recentlyAdded": "Senast tillagda",
|
||||||
|
@ -135,14 +123,10 @@
|
||||||
"home.madeForYou": "Skapat för dig",
|
"home.madeForYou": "Skapat för dig",
|
||||||
"home.friendsListeningTo": "Vänner lyssnar på",
|
"home.friendsListeningTo": "Vänner lyssnar på",
|
||||||
"home.followedArtists": "Följda artister",
|
"home.followedArtists": "Följda artister",
|
||||||
|
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "Apple Music kräver en prenumeration.",
|
"error.appleMusicSubRequired": "Apple Music kräver en prenumeration.",
|
||||||
"error.connectionError": "Ojdå. Det gick inte att ansluta till Apple Music.",
|
"error.connectionError": "Ojdå. Det gick inte att ansluta till Apple Music.",
|
||||||
"error.noResults": "Inga träffar.",
|
"error.noResults": "Inga träffar.",
|
||||||
"error.noResults.description": "Prova en ny sökning.",
|
"error.noResults.description": "Prova en ny sökning.",
|
||||||
|
|
||||||
// Podcasts
|
|
||||||
"podcast.followOnCider": "Följ på Cider",
|
"podcast.followOnCider": "Följ på Cider",
|
||||||
"podcast.followedOnCider": "Följer på Cider",
|
"podcast.followedOnCider": "Följer på Cider",
|
||||||
"podcast.subscribeOnItunes": "Följ på iTunes",
|
"podcast.subscribeOnItunes": "Följ på iTunes",
|
||||||
|
@ -151,8 +135,6 @@
|
||||||
"podcast.episodes": "Avsnitt",
|
"podcast.episodes": "Avsnitt",
|
||||||
"podcast.playEpisode": "Spela avsnitt",
|
"podcast.playEpisode": "Spela avsnitt",
|
||||||
"podcast.website": "Öppna webbsida",
|
"podcast.website": "Öppna webbsida",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "Lägg till i bibliotek",
|
"action.addToLibrary": "Lägg till i bibliotek",
|
||||||
"action.addToLibrary.success": "Tillagd i biblioteket",
|
"action.addToLibrary.success": "Tillagd i biblioteket",
|
||||||
"action.addToLibrary.error": "Kunde inte lägga till i biblioteket",
|
"action.addToLibrary.error": "Kunde inte lägga till i biblioteket",
|
||||||
|
@ -197,92 +179,70 @@
|
||||||
"action.tray.quit": "Avsluta",
|
"action.tray.quit": "Avsluta",
|
||||||
"action.tray.show": "Visa Cider",
|
"action.tray.show": "Visa Cider",
|
||||||
"action.update": "Uppdatera",
|
"action.update": "Uppdatera",
|
||||||
|
|
||||||
// Settings - General
|
|
||||||
"settings.header.general": "Allmänt",
|
"settings.header.general": "Allmänt",
|
||||||
"settings.header.general.description": "Ändra Ciders allmänna inställningar.",
|
"settings.header.general.description": "Ändra Ciders allmänna inställningar.",
|
||||||
"settings.option.general.language": "Språk",
|
"settings.option.general.language": "Språk",
|
||||||
|
|
||||||
// Language optgroups
|
|
||||||
"settings.option.general.language.main": "Språk",
|
"settings.option.general.language.main": "Språk",
|
||||||
"settings.option.general.language.fun": "Roliga språk",
|
"settings.option.general.language.fun": "Roliga språk",
|
||||||
"settings.option.general.language.unsorted": "Osorterade",
|
"settings.option.general.language.unsorted": "Osorterade",
|
||||||
|
"settings.option.general.updateCider": "Uppdatera Cider",
|
||||||
// Update Cider
|
|
||||||
"settings.option.general.updateCider": "Uppdatera Cider", // Button
|
|
||||||
|
|
||||||
// Settings - Audio
|
|
||||||
"settings.header.audio": "Ljud",
|
"settings.header.audio": "Ljud",
|
||||||
"settings.header.audio.description": "Ändra Ciders ljudinställningar.",
|
"settings.header.audio.description": "Ändra Ciders ljudinställningar.",
|
||||||
"settings.option.audio.quality": "Ljudkvalitet", // Dropdown
|
"settings.option.audio.quality": "Ljudkvalitet",
|
||||||
"settings.header.audio.quality.high": "Hög",
|
"settings.header.audio.quality.high": "Hög",
|
||||||
"settings.header.audio.quality.low": "Låg",
|
"settings.header.audio.quality.low": "Låg",
|
||||||
"settings.header.audio.quality.auto": "Automatisk",
|
"settings.header.audio.quality.auto": "Automatisk",
|
||||||
"settings.option.audio.seamlessTransition": "Sömlösa ljudövergångar", // Toggle
|
"settings.option.audio.seamlessTransition": "Sömlösa ljudövergångar",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "Aktivera avancerade ljudfunktioner", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality": "Aktivera avancerade ljudfunktioner",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "Om du aktiverar avancerade ljudfunktioner kommer funktioner som ljudnormalisering, EQ och virtualisering aktiveras, men på några system kan detta orsaka ljudproblem.",
|
"settings.option.audio.enableAdvancedFunctionality.description": "Om du aktiverar avancerade ljudfunktioner kommer funktioner som ljudnormalisering, EQ och virtualisering aktiveras, men på några system kan detta orsaka ljudproblem.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Ljudnormalisering", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Ljudnormalisering",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normaliserar höga ljudnivåer för att förbättra ljudkvaliteten.",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normaliserar höga ljudnivåer för att förbättra ljudkvaliteten.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spiralljud", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spiralljud",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Gör ljudet mer 3D (Ej Dolby Atmos)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Gör ljudet mer 3D (Ej Dolby Atmos)",
|
||||||
|
|
||||||
// Settings - Visual
|
|
||||||
"settings.header.visual": "Visuellt",
|
"settings.header.visual": "Visuellt",
|
||||||
"settings.header.visual.description": "Ändra Ciders visuella inställningar.",
|
"settings.header.visual.description": "Ändra Ciders visuella inställningar.",
|
||||||
"settings.option.visual.windowBackgroundStyle": "Stil för bakgrunden", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "Stil för bakgrunden",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "Ingen",
|
"settings.header.visual.windowBackgroundStyle.none": "Ingen",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "Från omslagsbilden",
|
"settings.header.visual.windowBackgroundStyle.artwork": "Från omslagsbilden",
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "Bild",
|
"settings.header.visual.windowBackgroundStyle.image": "Bild",
|
||||||
"settings.option.visual.animatedArtwork": "Animerad omslagsbild", // Dropdown
|
"settings.option.visual.animatedArtwork": "Animerad omslagsbild",
|
||||||
"settings.header.visual.animatedArtwork.always": "Alltid",
|
"settings.header.visual.animatedArtwork.always": "Alltid",
|
||||||
"settings.header.visual.animatedArtwork.limited": "Endast på sidor där det behövs",
|
"settings.header.visual.animatedArtwork.limited": "Endast på sidor där det behövs",
|
||||||
"settings.header.visual.animatedArtwork.disable": "Aldrig",
|
"settings.header.visual.animatedArtwork.disable": "Aldrig",
|
||||||
"settings.option.visual.animatedArtworkQuality": "Kvalitet för animerad omslagsbild", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "Kvalitet för animerad omslagsbild",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "Låg",
|
"settings.header.visual.animatedArtworkQuality.low": "Låg",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "Standard",
|
"settings.header.visual.animatedArtworkQuality.medium": "Standard",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "Hög",
|
"settings.header.visual.animatedArtworkQuality.high": "Hög",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "Väldigt hög",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Väldigt hög",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "Okomprimerat",
|
"settings.header.visual.animatedArtworkQuality.extreme": "Okomprimerat",
|
||||||
"settings.option.visual.animatedWindowBackground": "Animerad fönsterbakgrund", // Toggle
|
"settings.option.visual.animatedWindowBackground": "Animerad fönsterbakgrund",
|
||||||
"settings.option.visual.hardwareAcceleration": "Hårdvaruacceleration", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "Hårdvaruacceleration",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "kräver omstart",
|
"settings.option.visual.hardwareAcceleration.description": "kräver omstart",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "Standard",
|
"settings.header.visual.hardwareAcceleration.default": "Standard",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.option.visual.showPersonalInfo": "Visa personlig information",
|
||||||
"settings.option.visual.showPersonalInfo": "Visa personlig information", // Toggle
|
|
||||||
|
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "Låttext",
|
"settings.header.lyrics": "Låttext",
|
||||||
"settings.header.lyrics.description": "Ändra Ciders låttextsinställningar.",
|
"settings.header.lyrics.description": "Ändra Ciders låttextsinställningar.",
|
||||||
"settings.option.lyrics.enableMusixmatch": "Använd Musixmatch istället för Apple Lyrics", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "Använd Musixmatch istället för Apple Lyrics",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "Aktivera karaokeläge (Endast Musixmatch)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Aktivera karaokeläge (Endast Musixmatch)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Språk för låttextsöversättning (Endast Musixmatch)", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Språk för låttextsöversättning (Endast Musixmatch)",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "Använd YouTube Lyrcis för videor", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "Använd YouTube Lyrcis för videor",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "Anslutning",
|
"settings.header.connectivity": "Anslutning",
|
||||||
"settings.header.connectivity.description": "Ändra Ciders anslutningsinställningar.",
|
"settings.header.connectivity.description": "Ändra Ciders anslutningsinställningar.",
|
||||||
"settings.option.connectivity.discordRPC": "Discord integration (discordRPC)", // Dropdown
|
"settings.option.connectivity.discordRPC": "Discord integration (discordRPC)",
|
||||||
"settings.option.connectivity.playbackNotifications": "Uppspelningsnotiser", // Toggle
|
"settings.option.connectivity.playbackNotifications": "Uppspelningsnotiser",
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "På, visa som 'Cider'",
|
"settings.header.connectivity.discordRPC.cider": "På, visa som 'Cider'",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "På, visa som 'Apple Music'",
|
"settings.header.connectivity.discordRPC.appleMusic": "På, visa som 'Apple Music'",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "Rensa Discord notiser från Cider när du pausar", // Toggle
|
"settings.option.connectivity.discordRPC.clearOnPause": "Rensa Discord notiser från Cider när du pausar",
|
||||||
"settings.option.connectivity.lastfmScrobble": "Last.fm integration", // Option to Connect
|
"settings.option.connectivity.lastfmScrobble": "Last.fm integration",
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm fördröjning i %",
|
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm fördröjning i %",
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Visa vad som spelas nu i Last.fm",
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Visa vad som spelas nu i Last.fm",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Visa inte extraartister i Last.fm",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Visa inte extraartister i Last.fm",
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrera bort loopade låtar i Last.fm",
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrera bort loopade låtar i Last.fm",
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "Experimentellt",
|
"settings.header.experimental": "Experimentellt",
|
||||||
"settings.header.experimental.description": "Ändra Ciders experimentella inställningar.",
|
"settings.header.experimental.description": "Ändra Ciders experimentella inställningar.",
|
||||||
"settings.option.experimental.compactUI": "Kompakt gränssnitt", // Toggle
|
"settings.option.experimental.compactUI": "Kompakt gränssnitt",
|
||||||
"settings.option.experimental.close_button_hide": "Stängknappen gömmer Cider istället",
|
"settings.option.window.close_button_hide": "Stängknappen gömmer Cider istället",
|
||||||
|
|
||||||
// Refer to term.disabled & term.enabled
|
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.notTurnedOn": "Spiralljud är av. Akrtivera det först.",
|
"spatial.notTurnedOn": "Spiralljud är av. Akrtivera det först.",
|
||||||
"spatial.spatialProperties": "Spiralljudsintällningar",
|
"spatial.spatialProperties": "Spiralljudsintällningar",
|
||||||
"spatial.width": "Bredd",
|
"spatial.width": "Bredd",
|
||||||
|
@ -302,14 +262,8 @@
|
||||||
"spatial.down": "Ner",
|
"spatial.down": "Ner",
|
||||||
"spatial.listener": "Lyssnare",
|
"spatial.listener": "Lyssnare",
|
||||||
"spatial.audioSource": "Ljudkälla",
|
"spatial.audioSource": "Ljudkälla",
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "Ej tillgängligt",
|
"settings.header.unfinished": "Ej tillgängligt",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "Cider fjärrkontroll",
|
"remote.web.title": "Cider fjärrkontroll",
|
||||||
"remote.web.description": "Skanna QR koden för att ansluta din telefon till Cider.",
|
"remote.web.description": "Skanna QR koden för att ansluta din telefon till Cider.",
|
||||||
|
|
||||||
// About
|
|
||||||
"about.thanks": "Stort tack till Ciders Collective Team och alla som har bidragit!"
|
"about.thanks": "Stort tack till Ciders Collective Team och alla som har bidragit!"
|
||||||
}
|
}
|
|
@ -1,25 +1,15 @@
|
||||||
{
|
{
|
||||||
// i18n Info
|
"i18n.languageName": "Türkçe",
|
||||||
"i18n.languageName": "Türkçe", // name of language in native language
|
"i18n.languageNameEnglish": "Turkish",
|
||||||
"i18n.languageNameEnglish": "Turkish", // name of language in English
|
"i18n.category": "main",
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
"i18n.authors": "@gms10ur",
|
||||||
"i18n.authors": "@gms10ur", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
"app.name": "Cider",
|
||||||
|
|
||||||
"date.format": "${d} ${m}, ${y}",
|
"date.format": "${d} ${m}, ${y}",
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "İptal",
|
"dialog.cancel": "İptal",
|
||||||
"dialog.ok": "Tamam",
|
"dialog.ok": "Tamam",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "Arşiv'deki şarkılar alınıyor...",
|
"notification.updatingLibrarySongs": "Arşiv'deki şarkılar alınıyor...",
|
||||||
"notification.updatingLibraryAlbums": "Arşiv'deki albümler alınıyor...",
|
"notification.updatingLibraryAlbums": "Arşiv'deki albümler alınıyor...",
|
||||||
"notification.updatingLibraryArtists": "Arşiv'deki sanatçılar alınıyor...",
|
"notification.updatingLibraryArtists": "Arşiv'deki sanatçılar alınıyor...",
|
||||||
|
|
||||||
// Terms
|
|
||||||
"term.appleInc": "Apple",
|
"term.appleInc": "Apple",
|
||||||
"term.appleMusic": "Apple Music",
|
"term.appleMusic": "Apple Music",
|
||||||
"term.applePodcasts": "Apple Podcasts",
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
@ -91,7 +81,7 @@
|
||||||
"term.less": "Daha Az",
|
"term.less": "Daha Az",
|
||||||
"term.showMore": "Daha Fazla Göster",
|
"term.showMore": "Daha Fazla Göster",
|
||||||
"term.showLess": "Daha Az Göster",
|
"term.showLess": "Daha Az Göster",
|
||||||
"term.topSongs" : "Popüler Parçalar",
|
"term.topSongs": "Popüler Parçalar",
|
||||||
"term.latestReleases": "Yeni Çıkan",
|
"term.latestReleases": "Yeni Çıkan",
|
||||||
"term.time.added": "Şu tarihte eklendi: ",
|
"term.time.added": "Şu tarihte eklendi: ",
|
||||||
"term.time.released": "Şu tarihte yayınalndı: ",
|
"term.time.released": "Şu tarihte yayınalndı: ",
|
||||||
|
@ -115,7 +105,7 @@
|
||||||
"term.contributors": "Katkıda Bulunanlar",
|
"term.contributors": "Katkıda Bulunanlar",
|
||||||
"term.equalizer": "Ekolayzer",
|
"term.equalizer": "Ekolayzer",
|
||||||
"term.reset": "Sıfırla",
|
"term.reset": "Sıfırla",
|
||||||
"term.tracks": "adet şarkı", // Assume x amount of tracks. e.g. 50 tracks
|
"term.tracks": "adet şarkı",
|
||||||
"term.time.hours": "saat",
|
"term.time.hours": "saat",
|
||||||
"term.time.hour": "saat",
|
"term.time.hour": "saat",
|
||||||
"term.time.minutes": "dakika",
|
"term.time.minutes": "dakika",
|
||||||
|
@ -125,17 +115,17 @@
|
||||||
"term.videos": "Video Klipler",
|
"term.videos": "Video Klipler",
|
||||||
"term.menu": "Menü",
|
"term.menu": "Menü",
|
||||||
"term.check": "Şimdi Kontrol Et",
|
"term.check": "Şimdi Kontrol Et",
|
||||||
"term.aboutArtist": "About {{artistName}}", // e.g. 'About Doja Cat'
|
"term.aboutArtist": "About {{artistName}}",
|
||||||
"term.updateCider": "Güncellemeleri Denetle",
|
"term.updateCider": "Güncellemeleri Denetle",
|
||||||
"term.share.success": "Panoya Kopyalandı",
|
"term.share.success": "Panoya Kopyalandı",
|
||||||
"term.topResult": "En İyi Sonuç", // Search Results
|
"term.topResult": "En İyi Sonuç",
|
||||||
"term.sharedPlaylists": "Paylaşılan Listeler", // Search Results
|
"term.sharedPlaylists": "Paylaşılan Listeler",
|
||||||
"term.people": "Kişiler", // Search Results
|
"term.people": "Kişiler",
|
||||||
"term.newpreset.name": "Yeni Önayar İsmi", // Equalizer Preset
|
"term.newpreset.name": "Yeni Önayar İsmi",
|
||||||
"term.addedpreset": "Önayar Kaydedildi",
|
"term.addedpreset": "Önayar Kaydedildi",
|
||||||
"term.deletepreset.warn": "Bu önayarı silmek istediğinize emin misiniz?",
|
"term.deletepreset.warn": "Bu önayarı silmek istediğinize emin misiniz?",
|
||||||
"term.deletedpreset": "Önayar Silindi",
|
"term.deletedpreset": "Önayar Silindi",
|
||||||
"term.musicVideos": "Video Klipler", // Search page friendlyTypes
|
"term.musicVideos": "Video Klipler",
|
||||||
"term.stations": "İstasyonlar",
|
"term.stations": "İstasyonlar",
|
||||||
"term.curators": "Editörler",
|
"term.curators": "Editörler",
|
||||||
"term.appleCurators": "Apple Editörleri",
|
"term.appleCurators": "Apple Editörleri",
|
||||||
|
@ -143,8 +133,6 @@
|
||||||
"term.recordLabels": "Kayıt Stüdyoları",
|
"term.recordLabels": "Kayıt Stüdyoları",
|
||||||
"term.videoExtras": "Ekstra Videolar",
|
"term.videoExtras": "Ekstra Videolar",
|
||||||
"term.top": "En İyi",
|
"term.top": "En İyi",
|
||||||
|
|
||||||
// Home
|
|
||||||
"home.title": "Ana Sayfa",
|
"home.title": "Ana Sayfa",
|
||||||
"home.recentlyPlayed": "Son Oynatılanlar",
|
"home.recentlyPlayed": "Son Oynatılanlar",
|
||||||
"home.recentlyAdded": "Son Eklenenler",
|
"home.recentlyAdded": "Son Eklenenler",
|
||||||
|
@ -153,14 +141,10 @@
|
||||||
"home.madeForYou": "Sadece Size Özel",
|
"home.madeForYou": "Sadece Size Özel",
|
||||||
"home.friendsListeningTo": "Arkadaşlarınızın Dinledikleri",
|
"home.friendsListeningTo": "Arkadaşlarınızın Dinledikleri",
|
||||||
"home.followedArtists": "Takip Edilen Sanatçılar",
|
"home.followedArtists": "Takip Edilen Sanatçılar",
|
||||||
|
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "Apple Müzik, aktif bir abonelik gerektirir.",
|
"error.appleMusicSubRequired": "Apple Müzik, aktif bir abonelik gerektirir.",
|
||||||
"error.connectionError": "Apple Müzik ile bağlantı kurulamadı.",
|
"error.connectionError": "Apple Müzik ile bağlantı kurulamadı.",
|
||||||
"error.noResults": "Hiç sonuç yok",
|
"error.noResults": "Hiç sonuç yok",
|
||||||
"error.noResults.description": "Tekrar deneyin.",
|
"error.noResults.description": "Tekrar deneyin.",
|
||||||
|
|
||||||
//Podcasts
|
|
||||||
"podcast.followOnCider": "Cider'de Takip Et",
|
"podcast.followOnCider": "Cider'de Takip Et",
|
||||||
"podcast.followedOnCider": "Cider'de Takip Ediliyor",
|
"podcast.followedOnCider": "Cider'de Takip Ediliyor",
|
||||||
"podcast.subscribeOnItunes": "itunes'de Abone Ol",
|
"podcast.subscribeOnItunes": "itunes'de Abone Ol",
|
||||||
|
@ -169,8 +153,6 @@
|
||||||
"podcast.episodes": "Bölümler",
|
"podcast.episodes": "Bölümler",
|
||||||
"podcast.playEpisode": "Bölümü Oynat",
|
"podcast.playEpisode": "Bölümü Oynat",
|
||||||
"podcast.website": "Web Sayfası",
|
"podcast.website": "Web Sayfası",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "Arşiv'e Ekle",
|
"action.addToLibrary": "Arşiv'e Ekle",
|
||||||
"action.addToLibrary.success": "Arşiv'e Eklendi",
|
"action.addToLibrary.success": "Arşiv'e Eklendi",
|
||||||
"action.addToLibrary.error": "Arşiv'e Eklenemedi",
|
"action.addToLibrary.error": "Arşiv'e Eklenemedi",
|
||||||
|
@ -216,30 +198,22 @@
|
||||||
"action.tray.show": "Göster",
|
"action.tray.show": "Göster",
|
||||||
"action.update": "Güncelle",
|
"action.update": "Güncelle",
|
||||||
"action.copy": "Kopyala",
|
"action.copy": "Kopyala",
|
||||||
"action.newpreset": "Yeni Önayar...", // Equalizer Preset
|
"action.newpreset": "Yeni Önayar...",
|
||||||
"action.deletepreset": "Önayarı Sil",
|
"action.deletepreset": "Önayarı Sil",
|
||||||
|
|
||||||
// Settings - General
|
|
||||||
"settings.header.general": "Genel Ayarlar",
|
"settings.header.general": "Genel Ayarlar",
|
||||||
"settings.header.general.description": "Genel ayarları buradan düzenleyin.",
|
"settings.header.general.description": "Genel ayarları buradan düzenleyin.",
|
||||||
"settings.option.general.language": "Dil Seçeneği",
|
"settings.option.general.language": "Dil Seçeneği",
|
||||||
|
|
||||||
// Language optgroups
|
|
||||||
"settings.option.general.language.main": "Gerçek Diller",
|
"settings.option.general.language.main": "Gerçek Diller",
|
||||||
"settings.option.general.language.fun": "Mizahi Diller",
|
"settings.option.general.language.fun": "Mizahi Diller",
|
||||||
"settings.option.general.language.unsorted": "Henüz Tamamlanmamış Diller",
|
"settings.option.general.language.unsorted": "Henüz Tamamlanmamış Diller",
|
||||||
|
"settings.option.general.updateCider": "Güncellemeleri Kontrol Et",
|
||||||
// Update Cider
|
"settings.option.general.updateCider.branch": "Seçilen GitHub Versiyonu",
|
||||||
"settings.option.general.updateCider": "Güncellemeleri Kontrol Et", // Button. Refer to term.check for the check button
|
|
||||||
"settings.option.general.updateCider.branch": "Seçilen GitHub Versiyonu", // Dropdown
|
|
||||||
"settings.option.general.updateCider.branch.description": "Cider'in hangi versiyonuna güncelleneceğini seçin",
|
"settings.option.general.updateCider.branch.description": "Cider'in hangi versiyonuna güncelleneceğini seçin",
|
||||||
"settings.option.general.updateCider.branch.main": "Stabil",
|
"settings.option.general.updateCider.branch.main": "Stabil",
|
||||||
"settings.option.general.updateCider.branch.develop": "Deneysel",
|
"settings.option.general.updateCider.branch.develop": "Deneysel",
|
||||||
|
|
||||||
// Settings - Audio
|
|
||||||
"settings.header.audio": "Çalma / Oynatma",
|
"settings.header.audio": "Çalma / Oynatma",
|
||||||
"settings.header.audio.description": "Cider'in sizin için en iyi dinleme deneyimini sağlayabilmesi için ses ayarlarınızı yapın.",
|
"settings.header.audio.description": "Cider'in sizin için en iyi dinleme deneyimini sağlayabilmesi için ses ayarlarınızı yapın.",
|
||||||
"settings.option.audio.quality": "Ses Kalitesi", // Dropdown
|
"settings.option.audio.quality": "Ses Kalitesi",
|
||||||
"settings.header.audio.quality.hireslossless": "Yüksek Çözünürlüklü Kayıpsız",
|
"settings.header.audio.quality.hireslossless": "Yüksek Çözünürlüklü Kayıpsız",
|
||||||
"settings.header.audio.quality.hireslossless.description": "24-bit/192 kHz'e kadar",
|
"settings.header.audio.quality.hireslossless.description": "24-bit/192 kHz'e kadar",
|
||||||
"settings.header.audio.quality.lossless": "Kayıpsız",
|
"settings.header.audio.quality.lossless": "Kayıpsız",
|
||||||
|
@ -249,109 +223,89 @@
|
||||||
"settings.header.audio.quality.standard": "Standart",
|
"settings.header.audio.quality.standard": "Standart",
|
||||||
"settings.header.audio.quality.standard.description": "64 kbps",
|
"settings.header.audio.quality.standard.description": "64 kbps",
|
||||||
"settings.header.audio.quality.auto": "Otomatik",
|
"settings.header.audio.quality.auto": "Otomatik",
|
||||||
"settings.option.audio.seamlessTransition": "Kesintisiz Ses Geçişi", // Toggle
|
"settings.option.audio.seamlessTransition": "Kesintisiz Ses Geçişi",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "Gelişmiş Ses Deneyimi", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality": "Gelişmiş Ses Deneyimi",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "Gelişmiş ses deneyiminin etkinleştirilmesi, Ses Normalleştirme, Ekolayzer ve Görselleştirici gibi genişletilmiş ses özelliklerine izin verir, ancak bu durum bazı sistemlerde seste bozulmalara neden olabilir.",
|
"settings.option.audio.enableAdvancedFunctionality.description": "Gelişmiş ses deneyiminin etkinleştirilmesi, Ses Normalleştirme, Ekolayzer ve Görselleştirici gibi genişletilmiş ses özelliklerine izin verir, ancak bu durum bazı sistemlerde seste bozulmalara neden olabilir.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Ses Normalleştirme", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenalin Prosesörü™️",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Ses normalleştirme alçak ve yüksek sesli şarkıları dengeler ve daha düzgün bir dinleme deneyimi sağlar.",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Uzamsal Ses", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Sesi uzamsallaştırın ve sesi daha 3 boyutlu hale getirin (not: Bu Dolby Atmos değildir)",
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenalin Prosesörü™️", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Müziğin hem daha zengin hem de daha canlı duyulmasını sağlayan Psikoakustik Geliştirme Sistemi | Maikiwi tarafından tasarlanmıştır.",
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Müziğin hem daha zengin hem de daha canlı duyulmasını sağlayan Psikoakustik Geliştirme Sistemi | Maikiwi tarafından tasarlanmıştır.",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Kuvveti", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Kuvveti",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Sese yapılan işlemin gücünü değiştirir. (Agresif istenmeyen sonuçlar doğurabilir)",
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Sese yapılan işlemin gücünü değiştirir. (Agresif istenmeyen sonuçlar doğurabilir)",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standart",
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standart",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Agresif",
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Agresif",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Ses Normalleştirme",
|
||||||
// Settings - Visual
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Ses normalleştirme alçak ve yüksek sesli şarkıları dengeler ve daha düzgün bir dinleme deneyimi sağlar.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Uzamsal Ses",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Sesi uzamsallaştırın ve sesi daha 3 boyutlu hale getirin (not: Bu Dolby Atmos değildir)",
|
||||||
"settings.header.visual": "Görünüm",
|
"settings.header.visual": "Görünüm",
|
||||||
"settings.header.visual.description": "Cider'in nasıl gözükmesini istediğinizi ayarlayın",
|
"settings.header.visual.description": "Cider'in nasıl gözükmesini istediğinizi ayarlayın",
|
||||||
"settings.option.visual.windowBackgroundStyle": "Uygulama Arka Plan Stili", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "Uygulama Arka Plan Stili",
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "Görsel",
|
"settings.header.visual.windowBackgroundStyle.image": "Görsel",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "Karanlık",
|
"settings.header.visual.windowBackgroundStyle.none": "Karanlık",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "Albüm Kapağı",
|
"settings.header.visual.windowBackgroundStyle.artwork": "Albüm Kapağı",
|
||||||
"settings.option.visual.animatedArtwork": "Hareketli Albüm Kapakları", // Dropdown
|
"settings.option.visual.animatedArtwork": "Hareketli Albüm Kapakları",
|
||||||
"settings.header.visual.animatedArtwork.always": "Her Zaman Açık",
|
"settings.header.visual.animatedArtwork.always": "Her Zaman Açık",
|
||||||
"settings.header.visual.animatedArtwork.limited": "Bazı Sayfalara ve Özel Bölgelerle Sınırlı",
|
"settings.header.visual.animatedArtwork.limited": "Bazı Sayfalara ve Özel Bölgelerle Sınırlı",
|
||||||
"settings.header.visual.animatedArtwork.disable": "Her Zaman Kapalı",
|
"settings.header.visual.animatedArtwork.disable": "Her Zaman Kapalı",
|
||||||
"settings.option.visual.animatedArtworkQuality": "Hareketli Albüm Kapağı Kalitesi", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "Hareketli Albüm Kapağı Kalitesi",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "Düşük",
|
"settings.header.visual.animatedArtworkQuality.low": "Düşük",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "Orta",
|
"settings.header.visual.animatedArtworkQuality.medium": "Orta",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "Yüksek",
|
"settings.header.visual.animatedArtworkQuality.high": "Yüksek",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "Daha Yüksek",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Daha Yüksek",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "Ekstrem",
|
"settings.header.visual.animatedArtworkQuality.extreme": "Ekstrem",
|
||||||
"settings.option.visual.animatedWindowBackground": "Hareketli Uygulama Arka Planı", // Toggle
|
"settings.option.visual.animatedWindowBackground": "Hareketli Uygulama Arka Planı",
|
||||||
"settings.option.visual.hardwareAcceleration": "Donanım Hızlandırması", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "Donanım Hızlandırması",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "Etki etmesi için uygulamayı yeniden başlatmak gerekir.",
|
"settings.option.visual.hardwareAcceleration.description": "Etki etmesi için uygulamayı yeniden başlatmak gerekir.",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "Varsayılan",
|
"settings.header.visual.hardwareAcceleration.default": "Varsayılan",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "Gelişmiş",
|
"settings.header.visual.hardwareAcceleration.webGPU": "Gelişmiş",
|
||||||
"settings.option.visual.showPersonalInfo": "Kullanıcı Adımı Göster", // Toggle
|
|
||||||
"settings.header.visual.theme": "Tema",
|
"settings.header.visual.theme": "Tema",
|
||||||
|
|
||||||
// Settings - Visual - Theme name
|
|
||||||
"settings.option.visual.theme.default": "Cider",
|
"settings.option.visual.theme.default": "Cider",
|
||||||
"settings.option.visual.theme.dark": "Karanlık",
|
"settings.option.visual.theme.dark": "Karanlık",
|
||||||
|
"settings.option.visual.showPersonalInfo": "Kullanıcı Adımı Göster",
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "Şarkı Sözleri",
|
"settings.header.lyrics": "Şarkı Sözleri",
|
||||||
"settings.header.lyrics.description": "Cider'in şarkı sözlerini nasıl görüntülemesini istediğini buradan ayarlayın.",
|
"settings.header.lyrics.description": "Cider'in şarkı sözlerini nasıl görüntülemesini istediğini buradan ayarlayın.",
|
||||||
"settings.option.lyrics.enableMusixmatch": "Musixmatch Kullan", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "Musixmatch Kullan",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "Karaoke Modunu Etkinleştir (Sadece Musixmatch)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Karaoke Modunu Etkinleştir (Sadece Musixmatch)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch için Otomatik Çeviri Dili", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch için Otomatik Çeviri Dili",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "Müzik Videoları için Şarkı Sözünü YouTube'dan Al", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "Müzik Videoları için Şarkı Sözünü YouTube'dan Al",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "Diğer Servisler",
|
"settings.header.connectivity": "Diğer Servisler",
|
||||||
"settings.header.connectivity.description": "Cider'i diğer servislere bağlayarak deneyiminizi zenginleştirin.",
|
"settings.header.connectivity.description": "Cider'i diğer servislere bağlayarak deneyiminizi zenginleştirin.",
|
||||||
"settings.option.connectivity.discordRPC": "Ne Dinlediğimi Discord'da Göster", // Dropdown
|
"settings.option.connectivity.discordRPC": "Ne Dinlediğimi Discord'da Göster",
|
||||||
"settings.option.connectivity.playbackNotifications": "Oynatılan değiştiğinde bildirim göster", // Toggle
|
"settings.option.connectivity.playbackNotifications": "Oynatılan değiştiğinde bildirim göster",
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "'Cider' Olarak",
|
"settings.header.connectivity.discordRPC.cider": "'Cider' Olarak",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "'Apple Music' Olarak",
|
"settings.header.connectivity.discordRPC.appleMusic": "'Apple Music' Olarak",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "Duraklatıldığında Discord'da Gösterme", // Toggle
|
"settings.option.connectivity.discordRPC.clearOnPause": "Duraklatıldığında Discord'da Gösterme",
|
||||||
"settings.option.connectivity.lastfmScrobble": "LastFM Bağlantısı", // Option to Connect
|
"settings.option.connectivity.lastfmScrobble": "LastFM Bağlantısı",
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobblalma Yüzdesi (%)",
|
"settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobblalma Yüzdesi (%)",
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Şimdi çalan şarkıyı LastFM'de göster",
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Şimdi çalan şarkıyı LastFM'de göster",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Albüm sanatçısını Scrobbledan kaldır(LastFM)",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Albüm sanatçısını Scrobbledan kaldır(LastFM)",
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "Tekrar edilen şarkıyı filtrele (LastFM)",
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Tekrar edilen şarkıyı filtrele (LastFM)",
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "Deneysel",
|
"settings.header.experimental": "Deneysel",
|
||||||
"settings.header.experimental.description": "Cider'deki deneysel özelliklere erişim sağlayın. (Not: Bazı özellikler düzgün çalışmayabilir.)",
|
"settings.header.experimental.description": "Cider'deki deneysel özelliklere erişim sağlayın. (Not: Bazı özellikler düzgün çalışmayabilir.)",
|
||||||
"settings.option.experimental.compactUI": "Kompakt Arayüz", // Toggle
|
"settings.option.experimental.compactUI": "Kompakt Arayüz",
|
||||||
"settings.option.experimental.close_button_hide": "Kapatma Düğmesi Cider'i Küçültür",
|
"settings.option.window.close_button_hide": "Kapatma Düğmesi Cider'i Küçültür",
|
||||||
"settings.option.experimental.copy_log": "Günlüğü Panoya Kopyala",
|
"settings.option.experimental.copy_log": "Günlüğü Panoya Kopyala",
|
||||||
"settings.option.experimental.inline_playlists": "Listeleri ve Albümleri Açılır Pencere İle göster",
|
"settings.option.experimental.inline_playlists": "Listeleri ve Albümleri Açılır Pencere İle göster",
|
||||||
|
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.notTurnedOn": "Uzamsal ses devre dışı. Kullanabilmek için lütfen önce etkinleştirin.",
|
"spatial.notTurnedOn": "Uzamsal ses devre dışı. Kullanabilmek için lütfen önce etkinleştirin.",
|
||||||
"spatial.spatialProperties" : "Uzamsal Özellikler",
|
"spatial.spatialProperties": "Uzamsal Özellikler",
|
||||||
"spatial.width" : "Genişlik",
|
"spatial.width": "Genişlik",
|
||||||
"spatial.height" : "Yükseklik",
|
"spatial.height": "Yükseklik",
|
||||||
"spatial.depth" : "Derinlik",
|
"spatial.depth": "Derinlik",
|
||||||
"spatial.roomMaterials" : "Oda Materyalleri",
|
"spatial.gain": "Kazanç",
|
||||||
"spatial.roomDimensions" : "Oda Ölçüleri",
|
"spatial.roomMaterials": "Oda Materyalleri",
|
||||||
"spatial.roomPositions" : "Oda Pozisyonu",
|
"spatial.roomDimensions": "Oda Ölçüleri",
|
||||||
"spatial.setDimensions" : "Ölçüleri Ayarla",
|
"spatial.roomPositions": "Oda Pozisyonu",
|
||||||
"spatial.setPositions" : "Pozisyonu Ayarla",
|
"spatial.setDimensions": "Ölçüleri Ayarla",
|
||||||
"spatial.up" : "Üst",
|
"spatial.setPositions": "Pozisyonu Ayarla",
|
||||||
"spatial.front" : "Ön",
|
"spatial.up": "Üst",
|
||||||
"spatial.left" : "Sol",
|
"spatial.front": "Ön",
|
||||||
"spatial.right" : "Sağ",
|
"spatial.left": "Sol",
|
||||||
"spatial.back" : "Arka",
|
"spatial.right": "Sağ",
|
||||||
"spatial.down" : "Aşağı",
|
"spatial.back": "Arka",
|
||||||
"spatial.listener" : "Dinleyici",
|
"spatial.down": "Aşağı",
|
||||||
"spatial.audioSource" : "Ses Kaynağı",
|
"spatial.listener": "Dinleyici",
|
||||||
"spatial.gain" : "Kazanç",
|
"spatial.audioSource": "Ses Kaynağı",
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "Geliştirme Aşamasında",
|
"settings.header.unfinished": "Geliştirme Aşamasında",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "Cider'e Bağlan",
|
"remote.web.title": "Cider'e Bağlan",
|
||||||
"remote.web.description": "Telefonunuzu Bu Cider Oturumuyla Eşleştirmek için QR Kodunu Tarayın",
|
"remote.web.description": "Telefonunuzu Bu Cider Oturumuyla Eşleştirmek için QR Kodunu Tarayın",
|
||||||
|
|
||||||
//About
|
|
||||||
"about.thanks": "Cider Collective Ekibine ve tüm katkıda bulunanlara çok teşekkür ederiz."
|
"about.thanks": "Cider Collective Ekibine ve tüm katkıda bulunanlara çok teşekkür ederiz."
|
||||||
}
|
}
|
314
src/i18n/vi_VN.json
Normal file
|
@ -0,0 +1,314 @@
|
||||||
|
{
|
||||||
|
"i18n.languageName": "Tiếng Việt",
|
||||||
|
"i18n.languageNameEnglish": "Vietnamese",
|
||||||
|
"i18n.category": "main",
|
||||||
|
"i18n.authors": "@vapormusic",
|
||||||
|
"app.name": "Cider",
|
||||||
|
"date.format": "${d} ${m}, ${y}",
|
||||||
|
"dialog.cancel": "Cancel",
|
||||||
|
"dialog.ok": "OK",
|
||||||
|
"notification.updatingLibrarySongs": "Cập nhật bài hát trong thư viện...",
|
||||||
|
"notification.updatingLibraryAlbums": "Cập nhật album trong thư viện...",
|
||||||
|
"notification.updatingLibraryArtists": "Cập nhật ca sĩ trong thư viện...",
|
||||||
|
"term.appleInc": "Apple Inc.",
|
||||||
|
"term.appleMusic": "Apple Music",
|
||||||
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
"term.itunes": "iTunes",
|
||||||
|
"term.github": "GitHub",
|
||||||
|
"term.discord": "Discord",
|
||||||
|
"term.learnMore": "Tìm hiểu thêm",
|
||||||
|
"term.accountSettings": "Cài đặt tài khoản",
|
||||||
|
"term.logout": "Đăng xuất",
|
||||||
|
"term.login": "Đăng nhập",
|
||||||
|
"term.about": "Giới thiệu",
|
||||||
|
"term.privateSession": "Phiên dùng riêng tư",
|
||||||
|
"term.queue": "Hàng đợi",
|
||||||
|
"term.history": "Lịch sử",
|
||||||
|
"term.search": "Tìm kiếm",
|
||||||
|
"term.library": "Thư viện",
|
||||||
|
"term.listenNow": "Nghe ngay",
|
||||||
|
"term.browse": "Khám phá",
|
||||||
|
"term.radio": "Radio",
|
||||||
|
"term.recentlyAdded": "Vừa được thêm",
|
||||||
|
"term.songs": "Bài hát",
|
||||||
|
"term.albums": "Album",
|
||||||
|
"term.artists": "Nghệ sĩ",
|
||||||
|
"term.podcasts": "Podcast",
|
||||||
|
"term.playlists": "Playlist",
|
||||||
|
"term.playlist": "Playlist",
|
||||||
|
"term.newPlaylist": "Playlist mới",
|
||||||
|
"term.newPlaylistFolder": "Cụm playlist mới",
|
||||||
|
"term.createNewPlaylist": "Tạo playlist",
|
||||||
|
"term.createNewPlaylistFolder": "Tạo cụm playlist",
|
||||||
|
"term.deletePlaylist": "Bạn có muốn xoá playlist này?",
|
||||||
|
"term.play": "Phát",
|
||||||
|
"term.pause": "Dừng",
|
||||||
|
"term.previous": "Trước đó",
|
||||||
|
"term.next": "Tiếp theo",
|
||||||
|
"term.shuffle": "Xáo trộn",
|
||||||
|
"term.repeat": "Lặp",
|
||||||
|
"term.volume": "Âm lượng",
|
||||||
|
"term.mute": "Tắt tiếng",
|
||||||
|
"term.unmute": "Huỷ tắt tiếng",
|
||||||
|
"term.share": "Chia sẻ",
|
||||||
|
"term.share.success": "Đã lưu vào bộ nhớ tạm",
|
||||||
|
"term.settings": "Cài đặt",
|
||||||
|
"term.seeAll": "Xem tất cả",
|
||||||
|
"term.sortBy": "Xếp theo",
|
||||||
|
"term.sortBy.album": "Album",
|
||||||
|
"term.sortBy.artist": "Nghệ sĩ",
|
||||||
|
"term.sortBy.name": "Tên",
|
||||||
|
"term.sortBy.genre": "Dòng nhạc",
|
||||||
|
"term.sortBy.releaseDate": "Ngày phát hành",
|
||||||
|
"term.sortBy.duration": "Thời lượng",
|
||||||
|
"term.sortBy.dateAdded": "Ngày thêm vào",
|
||||||
|
"term.sortOrder": "A-Z",
|
||||||
|
"term.sortOrder.ascending": "Tăng dần",
|
||||||
|
"term.sortOrder.descending": "Giảm dần",
|
||||||
|
"term.viewAs": "Xem theo kiểu",
|
||||||
|
"term.viewAs.coverArt": "Ảnh bìa",
|
||||||
|
"term.viewAs.list": "Danh sách",
|
||||||
|
"term.size": "Cỡ",
|
||||||
|
"term.size.normal": "Vừa",
|
||||||
|
"term.size.compact": "Thu gọn",
|
||||||
|
"term.enable": "Bật",
|
||||||
|
"term.disable": "Tắt",
|
||||||
|
"term.enabled": "Đã bật",
|
||||||
|
"term.disabled": "Đã tắt",
|
||||||
|
"term.connect": "Kết nối",
|
||||||
|
"term.connecting": "Đang kết nối",
|
||||||
|
"term.disconnect": "Dừng kết nối",
|
||||||
|
"term.authed": "Đã đăng nhập",
|
||||||
|
"term.confirm": "Bạn có chăc không?",
|
||||||
|
"term.more": "Thêm",
|
||||||
|
"term.less": "Ít hơn",
|
||||||
|
"term.showMore": "Hiện thêm",
|
||||||
|
"term.showLess": "Hiện ít hơn",
|
||||||
|
"term.topSongs": "Các bài hát nổi bật",
|
||||||
|
"term.latestReleases": "Mới nhất",
|
||||||
|
"term.time.added": "Thêm vào ngày",
|
||||||
|
"term.time.released": "Phát hành vào ngày",
|
||||||
|
"term.time.updated": "Cập nhật vào ngày",
|
||||||
|
"term.time.hours": "giờ",
|
||||||
|
"term.time.hour": "giờ",
|
||||||
|
"term.time.minutes": "phút",
|
||||||
|
"term.time.minute": "phút",
|
||||||
|
"term.time.seconds": "giây",
|
||||||
|
"term.time.second": "giây",
|
||||||
|
"term.fullscreenView": "Xem toàn màn hình",
|
||||||
|
"term.defaultView": "Xem gốc",
|
||||||
|
"term.audioSettings": "Cài đặt âm thanh",
|
||||||
|
"term.clearAll": "Xoá tất cả",
|
||||||
|
"term.recentStations": "Các đài gần đây",
|
||||||
|
"term.language": "Ngôn ngữ",
|
||||||
|
"term.funLanguages": "Vui vẻ",
|
||||||
|
"term.noLyrics": "Đang tìm... / Không có lời bài hát.",
|
||||||
|
"term.copyright": "Bản quyền",
|
||||||
|
"term.rightsReserved": "Mọi quyền thuộc về các chủ sở hữu.",
|
||||||
|
"term.sponsor": "Tài trợ cho dự án này",
|
||||||
|
"term.ciderTeam": "Cider Team",
|
||||||
|
"term.developer": "Lập trình viên",
|
||||||
|
"term.socialTeam": "Social Team",
|
||||||
|
"term.socials": "PR",
|
||||||
|
"term.contributors": "Các đóng góp viên",
|
||||||
|
"term.equalizer": "EQ",
|
||||||
|
"term.reset": "Đặt về mặc định",
|
||||||
|
"term.tracks": "bài",
|
||||||
|
"term.videos": "Video",
|
||||||
|
"term.menu": "Menu",
|
||||||
|
"term.check": "Kiểm tra",
|
||||||
|
"term.aboutArtist": "Về {{artistName}}",
|
||||||
|
"term.topResult": "Kết quả gần nhất",
|
||||||
|
"term.sharedPlaylists": "Playlist được chia sẻ",
|
||||||
|
"term.people": "Người dùng",
|
||||||
|
"term.newpreset.name": "Tạo thiét lập EQ",
|
||||||
|
"term.addedpreset": "Các thiét lập EQ đã được thêm",
|
||||||
|
"term.deletepreset.warn": "Bạn có muốn xoá thiết lập này?",
|
||||||
|
"term.deletedpreset": "Thiết lập đã bị xoá",
|
||||||
|
"term.requestError": "Có vấn đề khi thực hiện yêu cầu.",
|
||||||
|
"term.song.link.generate": "Tìm URL danh mục trên song.link ...",
|
||||||
|
"term.musicVideos": "Video ca nhạc",
|
||||||
|
"term.stations": "Các đài",
|
||||||
|
"term.curators": "Nhà tuyển chọn",
|
||||||
|
"term.appleCurators": "Tuyển chọn từ Apple",
|
||||||
|
"term.radioShows": "Các chương trình radio",
|
||||||
|
"term.recordLabels": "Nhà phát hành âm nhạc",
|
||||||
|
"term.videoExtras": "Video khác",
|
||||||
|
"term.top": "Top",
|
||||||
|
"home.title": "Chính",
|
||||||
|
"home.recentlyPlayed": "Mới phát",
|
||||||
|
"home.recentlyAdded": "Mới thêm vào",
|
||||||
|
"home.artistsFeed": "Theo dõi",
|
||||||
|
"home.artistsFeed.noArtist": "Theo dõi các nhạc sĩ mà bạn yêu thích và nhận thông báo khi có bài hát mới.",
|
||||||
|
"home.madeForYou": "Dành cho bạn",
|
||||||
|
"home.friendsListeningTo": "Bạn bè đang nghe",
|
||||||
|
"home.followedArtists": "Các nghệ sĩ đang theo dõi",
|
||||||
|
"error.appleMusicSubRequired": "Apple Music yêu cầu bạn đăng kí.",
|
||||||
|
"error.connectionError": "Có vấn đề kết nối tới Apple Music.",
|
||||||
|
"error.noResults": "Không có kết quả.",
|
||||||
|
"error.noResults.description": "Hãy thử tìm kiếm bẳng từ khoá khác.",
|
||||||
|
"podcast.followOnCider": "Theo dõi trên Cider",
|
||||||
|
"podcast.followedOnCider": "Đang theo dõi trên Cider",
|
||||||
|
"podcast.subscribeOnItunes": "Theo dõi trên iTunes",
|
||||||
|
"podcast.subscribedOnItunes": "Đang theo dõi trên iTunes",
|
||||||
|
"podcast.itunesStore": "Cửa hàng iTunes",
|
||||||
|
"podcast.episodes": "Các tập",
|
||||||
|
"podcast.playEpisode": "Phát",
|
||||||
|
"podcast.website": "Trang chủ",
|
||||||
|
"action.addToLibrary": "Thêm vào thư viện",
|
||||||
|
"action.addToLibrary.success": "Đã thêm vào thư viện",
|
||||||
|
"action.addToLibrary.error": "Có lỗi khi thêm vào thư viện",
|
||||||
|
"action.removeFromLibrary": "Xoá khỏi thư viện",
|
||||||
|
"action.removeFromLibrary.success": "Đã xoá khỏi thư viện",
|
||||||
|
"action.addToQueue": "Thêm vào hàng đợi",
|
||||||
|
"action.addToQueue.success": "Đã thêm vào hàng đợi",
|
||||||
|
"action.addToQueue.error": "Có lỗi khi thêm vào hàng đợi",
|
||||||
|
"action.removeFromQueue": "Xoá khỏi hàng đợi",
|
||||||
|
"action.removeFromQueue.success": "Đã xoá khỏi hàng đợi",
|
||||||
|
"action.removeFromQueue.error": "Có lỗi khi xoá khỏi hàng đợi",
|
||||||
|
"action.createPlaylist": "Tạo playlist",
|
||||||
|
"action.addToPlaylist": "Thêm vào playlist",
|
||||||
|
"action.removeFromPlaylist": "Xoá khỏi playlist",
|
||||||
|
"action.addToFavorites": "Thêm vào Yêu thích",
|
||||||
|
"action.follow": "Theo dõi",
|
||||||
|
"action.follow.success": "Đã theo dõi",
|
||||||
|
"action.follow.error": "Có lỗi khi theo dõi",
|
||||||
|
"action.unfollow": "Ngừng theo dõi",
|
||||||
|
"action.unfollow.success": "Đã ngừng theo dõi",
|
||||||
|
"action.unfollow.error": "Có lỗi khi ngừng theo dõi",
|
||||||
|
"action.playNext": "Phát tiếp theo",
|
||||||
|
"action.playLater": "Phát cuối cùng",
|
||||||
|
"action.startRadio": "Tạo đài phát",
|
||||||
|
"action.goToArtist": "Đi đến nghệ sĩ",
|
||||||
|
"action.goToAlbum": "Đi đến album",
|
||||||
|
"action.moveToTop": "Đưa lên đầu",
|
||||||
|
"action.share": "Chia sẻ",
|
||||||
|
"action.rename": "Đổi tên",
|
||||||
|
"action.love": "Yêu thích",
|
||||||
|
"action.unlove": "Bỏ yêu thích",
|
||||||
|
"action.dislike": "Không thích",
|
||||||
|
"action.undoDislike": "Bỏ không thích",
|
||||||
|
"action.showWebRemoteQR": "Điều khiển từ xa",
|
||||||
|
"action.playTracksNext": "Phát ${app.selectedMediaItems.length} bài tiếp theo",
|
||||||
|
"action.playTracksLater": "Phát ${app.selectedMediaItems.length} bài cuối cùng",
|
||||||
|
"action.removeTracks": "Bỏ ${self.selectedItems.length} bài khỏi hàng đợi",
|
||||||
|
"action.import": "Nhập",
|
||||||
|
"action.export": "Xuất",
|
||||||
|
"action.showAlbum": "Hiện album đầy đủ",
|
||||||
|
"action.tray.minimize": "Thu nhỏ xuống khay hệ thống",
|
||||||
|
"action.tray.quit": "Thoát",
|
||||||
|
"action.tray.show": "Hiện",
|
||||||
|
"action.update": "Cập nhật",
|
||||||
|
"action.copy": "Sao chép",
|
||||||
|
"action.newpreset": "Thiếp lập mới...",
|
||||||
|
"action.deletepreset": "Xoá thiêt lập",
|
||||||
|
"settings.header.general": "Cài đặt chung",
|
||||||
|
"settings.header.general.description": "Thay đổi các cài đặt chung của Cider.",
|
||||||
|
"settings.option.general.language": "Ngôn ngữ",
|
||||||
|
"settings.option.general.language.main": "Ngôn ngữ chính",
|
||||||
|
"settings.option.general.language.fun": "Ngôn ngữ hư cấu",
|
||||||
|
"settings.option.general.language.unsorted": "Ngôn ngữ khác",
|
||||||
|
"settings.option.general.updateCider": "Cập nhật Cider",
|
||||||
|
"settings.option.general.updateCider.branch": "Nhánh cập nhật",
|
||||||
|
"settings.option.general.updateCider.branch.description": "Chọn nhánh cập nhật của Cider:",
|
||||||
|
"settings.option.general.updateCider.branch.main": "Ổn định",
|
||||||
|
"settings.option.general.updateCider.branch.develop": "Thử nghiệm",
|
||||||
|
"settings.header.audio": "Âm thanh",
|
||||||
|
"settings.header.audio.description": "Thay đổi các cài đặt âm thanh của Cider.",
|
||||||
|
"settings.option.audio.quality": "Chất lượng âm thanh",
|
||||||
|
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
|
||||||
|
"settings.header.audio.quality.hireslossless.description": "lên tới 24-bit/192 kHz",
|
||||||
|
"settings.header.audio.quality.lossless": "Lossless",
|
||||||
|
"settings.header.audio.quality.lossless.description": "lên tới 24-bit/48 kHz",
|
||||||
|
"settings.header.audio.quality.high": "Cao",
|
||||||
|
"settings.header.audio.quality.high.description": "256 kbps",
|
||||||
|
"settings.header.audio.quality.standard": "Tiêu chuẩn",
|
||||||
|
"settings.header.audio.quality.standard.description": "64 kbps",
|
||||||
|
"settings.option.audio.seamlessTransition": "Gapless playback",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality": "Kích hoạt chính năng nâng cao",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.description": "Bật các chức năng nâng cao sẽ kích hoạt các chức năng như EQ, Chuẩn hoá âm lượng hay Visualizer, tuy nhiên có thể sẽ ảnh hưởng tới chất lượng âm thanh",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Các tinh chỉnh về âm thanh giúp cho nhạc của bạn ấm và rõ hơn.",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP không tương thích với Âm thanh đa chiều. Hãy tắt Âm thanh đa chiều để kích hoạt.",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Chỉnh mức độ ảnh hưởng của CAP đến âm thanh. (Chế độ Mạnh có thể ảnh hưởng đến âm thanh của bạn)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Tiêu chuẩn",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Mạnh",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Chuẩn hoá âm lượng",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Đặt cùng mức âm lượng cho mọi bài hát",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Tạo Âm thanh đa chiều ",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Làm cho âm thanh trở nên nhiều chiều hơn (Ghi chú: Đây không phải là Dolby Atmos)",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Âm thanh đa chiều không tương thích với CAP. Hãy tắt CAP để kích hoạt.",
|
||||||
|
"settings.header.visual": "Hiển thị",
|
||||||
|
"settings.header.visual.description": "Thay đổi các cài đặt hiển thị của Cider.",
|
||||||
|
"settings.option.visual.windowBackgroundStyle": "Chế độ ảnh nền",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.none": "Không",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.artwork": "Ảnh bìa",
|
||||||
|
"settings.header.visual.windowBackgroundStyle.image": "Ảnh",
|
||||||
|
"settings.option.visual.animatedArtwork": "Ảnh bìa động",
|
||||||
|
"settings.header.visual.animatedArtwork.always": "Luôn bật",
|
||||||
|
"settings.header.visual.animatedArtwork.limited": "Chỉ hiện ở mốt số trang cá nhân",
|
||||||
|
"settings.header.visual.animatedArtwork.disable": "Tắt",
|
||||||
|
"settings.option.visual.animatedArtworkQuality": "Chất lượng ảnh bìa động",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.low": "Thấp",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.medium": "Trung bình",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.high": "Cao",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "Rất cao",
|
||||||
|
"settings.header.visual.animatedArtworkQuality.extreme": "Rất rất cao",
|
||||||
|
"settings.option.visual.animatedWindowBackground": "Hình nền chuyển động",
|
||||||
|
"settings.option.visual.hardwareAcceleration": "Chế độ Hiển thị",
|
||||||
|
"settings.option.visual.hardwareAcceleration.description": "Yêu cầu restart lại Cider để kích hoạt",
|
||||||
|
"settings.header.visual.hardwareAcceleration.default": "Gốc",
|
||||||
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
|
"settings.header.visual.theme": "Chủ đề",
|
||||||
|
"settings.option.visual.theme.default": "Cider",
|
||||||
|
"settings.option.visual.theme.dark": "Tối hơn",
|
||||||
|
"settings.option.visual.showPersonalInfo": "Hiện thông tin cá nhân",
|
||||||
|
"settings.header.lyrics": "Lời bài hát",
|
||||||
|
"settings.header.lyrics.description": "Thay đổi các cài đặt lời bài hát của Cider.",
|
||||||
|
"settings.option.lyrics.enableMusixmatch": "Dùng lời từ Musixmatch",
|
||||||
|
"settings.option.lyrics.enableMusixmatchKaraoke": "Bật chế độ karaoke (chỉ trên lời từ Musixmatch)",
|
||||||
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Ngôn ngữ dịch của Musixmatch",
|
||||||
|
"settings.option.lyrics.enableYoutubeLyrics": "Dùng lời từ Youtube cho các Video ca nhạc",
|
||||||
|
"settings.header.connectivity": "Kết nối",
|
||||||
|
"settings.header.connectivity.description": "Thay đổi các cài đặt lời kết nối của Cider.",
|
||||||
|
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
|
||||||
|
"settings.option.connectivity.playbackNotifications": "Thông báo chuyển bài",
|
||||||
|
"settings.header.connectivity.discordRPC.cider": "Hiện là 'Cider'",
|
||||||
|
"settings.header.connectivity.discordRPC.appleMusic": "Hiện là 'Apple Music'",
|
||||||
|
"settings.option.connectivity.discordRPC.clearOnPause": "Xoá Discord Rich Presence khi dừng nhạc",
|
||||||
|
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Scrobble Delay (%)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Bật Last.fm Now Playing",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Xoá các nghệ sĩ phối hợp ở tên bài hát (Last.fm)",
|
||||||
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Lọc các bài trùng (Last.fm)",
|
||||||
|
"settings.header.experimental": "Thử nghiệm",
|
||||||
|
"settings.header.experimental.description": "Thay đổi các cài đặt lời thử nghiệm của Cider.",
|
||||||
|
"settings.option.experimental.compactUI": "UI thu gọn",
|
||||||
|
"settings.option.window.close_button_hide": "Nút thoát cửa số sẽ ẩn Cider xuống khay hệ thống",
|
||||||
|
"settings.option.experimental.copy_log": "Sao chép logs ra bộ nhớ tạm",
|
||||||
|
"settings.option.experimental.inline_playlists": "Playlists and Albums hiện nổi lên trên",
|
||||||
|
"spatial.notTurnedOn": "Âm thanh đa chiều chưa được kích hoạt. Hãy kích hoạt nó trước",
|
||||||
|
"spatial.spatialProperties": "Tinh chỉnh cho Âm thanh đa chiều",
|
||||||
|
"spatial.width": "Chiều rộng",
|
||||||
|
"spatial.height": "Chiều cao",
|
||||||
|
"spatial.depth": "Chiều sâu",
|
||||||
|
"spatial.gain": "Gain",
|
||||||
|
"spatial.roomMaterials": "Chất liệu phòng",
|
||||||
|
"spatial.roomDimensions": "Kích thước phòng",
|
||||||
|
"spatial.roomPositions": "Vị trí phòng",
|
||||||
|
"spatial.setDimensions": "Chỉnh kích thước",
|
||||||
|
"spatial.setPositions": "Chỉnh vị trí",
|
||||||
|
"spatial.up": "Trên",
|
||||||
|
"spatial.front": "Trước",
|
||||||
|
"spatial.left": "Trái",
|
||||||
|
"spatial.right": "Phải",
|
||||||
|
"spatial.back": "Sau",
|
||||||
|
"spatial.down": "Dưới",
|
||||||
|
"spatial.listener": "Người nghe",
|
||||||
|
"spatial.audioSource": "Nguồn âm thanh",
|
||||||
|
"settings.header.unfinished": "Chưa hoàn thiện",
|
||||||
|
"remote.web.title": "Điều khiển từ xa của Cider",
|
||||||
|
"remote.web.description": "Quét mã QR để kết nối thiết bị của bạn với Cider",
|
||||||
|
"about.thanks": "Trân trọng cảm ơn Cider Collective Team và tất cả các đóng góp viên của chúng tôi."
|
||||||
|
}
|
|
@ -1,30 +1,21 @@
|
||||||
{
|
{
|
||||||
// i18n Info
|
"i18n.languageName": "简体中文(中国)",
|
||||||
"i18n.languageName": "简体中文(中国)", // name of language in native language
|
"i18n.languageNameEnglish": "Simp. Chinese (China)",
|
||||||
"i18n.languageNameEnglish": "Simp. Chinese (China)", // name of language in English
|
"i18n.category": "main",
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
"i18n.authors": "@maikirakiwi @BillKerman",
|
||||||
"i18n.authors": "@maikirakiwi", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
"app.name": "Cider",
|
||||||
|
|
||||||
"date.format": "${y}年${m}月${d}日",
|
"date.format": "${y}年${m}月${d}日",
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "取消",
|
"dialog.cancel": "取消",
|
||||||
"dialog.ok": "确定",
|
"dialog.ok": "确定",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "正在更新资料库的歌曲信息...",
|
"notification.updatingLibrarySongs": "正在更新资料库的歌曲信息...",
|
||||||
"notification.updatingLibraryAlbums": "正在更新资料库的专辑信息...",
|
"notification.updatingLibraryAlbums": "正在更新资料库的专辑信息...",
|
||||||
"notification.updatingLibraryArtists": "正在更新资料库的艺人信息...",
|
"notification.updatingLibraryArtists": "正在更新资料库的艺人信息...",
|
||||||
|
"term.appleInc": "Apple Inc.",
|
||||||
// Terms
|
"term.appleMusic": "Apple Music",
|
||||||
"term.appleMusic": "Apple Music", // Follows brand term
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
"term.applePodcasts": "Apple Podcasts", // Follows brand term
|
"term.itunes": "iTunes",
|
||||||
"term.itunes": "iTunes", // Follows brand term
|
"term.github": "GitHub",
|
||||||
"term.github": "GitHub", // Follows brand term
|
"term.discord": "Discord",
|
||||||
"term.discord": "Discord", // Follows brand term
|
|
||||||
"term.learnMore": "更多信息",
|
"term.learnMore": "更多信息",
|
||||||
"term.accountSettings": "账户设置",
|
"term.accountSettings": "账户设置",
|
||||||
"term.logout": "登出",
|
"term.logout": "登出",
|
||||||
|
@ -32,6 +23,7 @@
|
||||||
"term.about": "关于",
|
"term.about": "关于",
|
||||||
"term.privateSession": "私人聆听",
|
"term.privateSession": "私人聆听",
|
||||||
"term.queue": "队列",
|
"term.queue": "队列",
|
||||||
|
"term.history": "播放历史",
|
||||||
"term.search": "搜索",
|
"term.search": "搜索",
|
||||||
"term.library": "资料库",
|
"term.library": "资料库",
|
||||||
"term.listenNow": "现在就听",
|
"term.listenNow": "现在就听",
|
||||||
|
@ -44,6 +36,11 @@
|
||||||
"term.podcasts": "播客",
|
"term.podcasts": "播客",
|
||||||
"term.playlists": "播放列表",
|
"term.playlists": "播放列表",
|
||||||
"term.playlist": "播放列表",
|
"term.playlist": "播放列表",
|
||||||
|
"term.newPlaylist": "新播放列表",
|
||||||
|
"term.newPlaylistFolder": "新播放列表文件夹",
|
||||||
|
"term.createNewPlaylist": "新建播放列表",
|
||||||
|
"term.createNewPlaylistFolder": "新建播放列表文件夹",
|
||||||
|
"term.deletePlaylist": "您确定要删除该播放列表吗?",
|
||||||
"term.play": "播放",
|
"term.play": "播放",
|
||||||
"term.pause": "暂停",
|
"term.pause": "暂停",
|
||||||
"term.previous": "上一首",
|
"term.previous": "上一首",
|
||||||
|
@ -54,6 +51,7 @@
|
||||||
"term.mute": "静音",
|
"term.mute": "静音",
|
||||||
"term.unmute": "解除静音",
|
"term.unmute": "解除静音",
|
||||||
"term.share": "分享",
|
"term.share": "分享",
|
||||||
|
"term.share.success": "已复制到剪贴板",
|
||||||
"term.settings": "设置",
|
"term.settings": "设置",
|
||||||
"term.seeAll": "查看全部",
|
"term.seeAll": "查看全部",
|
||||||
"term.sortBy": "排序",
|
"term.sortBy": "排序",
|
||||||
|
@ -103,60 +101,73 @@
|
||||||
"term.clearAll": "清空",
|
"term.clearAll": "清空",
|
||||||
"term.recentStations": "最近播放的频道",
|
"term.recentStations": "最近播放的频道",
|
||||||
"term.language": "语言",
|
"term.language": "语言",
|
||||||
"term.noLyrics": "加载中。。/ 搜索无结果 / 纯音乐",
|
"term.funLanguages": "恶搞",
|
||||||
|
"term.noLyrics": "加载中... / 无搜索结果 / 纯音乐",
|
||||||
"term.copyright": "版权所有",
|
"term.copyright": "版权所有",
|
||||||
"term.rightsReserved": "保留所有权利。",
|
"term.rightsReserved": "保留所有权利。",
|
||||||
"term.sponsor": "赞助",
|
"term.sponsor": "赞助",
|
||||||
"term.ciderTeam": "Cider 团队",
|
"term.ciderTeam": "Cider 团队",
|
||||||
"term.developer": "开发者",
|
"term.developer": "开发者",
|
||||||
"term.socialTeam": "媒体团队",
|
"term.socialTeam": "媒体团队",
|
||||||
|
"term.socials": "媒体",
|
||||||
"term.contributors": "贡献者",
|
"term.contributors": "贡献者",
|
||||||
"term.equalizer": "均衡器",
|
"term.equalizer": "均衡器",
|
||||||
"term.reset": "重置",
|
"term.reset": "重置",
|
||||||
"term.tracks": "首歌曲", // Assume x amount of tracks. e.g. 50 tracks
|
"term.tracks": "首歌曲",
|
||||||
"term.videos": "视频",
|
"term.videos": "视频",
|
||||||
"term.menu": "菜单",
|
"term.menu": "菜单",
|
||||||
"term.check": "检查",
|
"term.check": "检查",
|
||||||
"term.aboutArtist": "关于{{artistName}}", // e.g. 'About Doja Cat'
|
"term.aboutArtist": "关于{{artistName}}",
|
||||||
|
"term.updateCider": "更新 Cider",
|
||||||
// Home
|
"term.topResult": "热门搜索结果",
|
||||||
|
"term.sharedPlaylists": "分享播放列表",
|
||||||
|
"term.people": "个人档案",
|
||||||
|
"term.newpreset.name": "新均衡器预设名",
|
||||||
|
"term.addedpreset": "预设已添加",
|
||||||
|
"term.deletepreset.warn": "你确定要删除此预设吗?",
|
||||||
|
"term.deletedpreset": "预设已删除",
|
||||||
|
"term.defaultPresets": "默认预设",
|
||||||
|
"term.userPresets": "用户预设",
|
||||||
|
"term.requestError": "请求出现一个问题。",
|
||||||
|
"term.song.link.generate": "获取 song.link 共享链接...",
|
||||||
|
"term.musicVideos": "音乐视频",
|
||||||
|
"term.stations": "电台",
|
||||||
|
"term.radioShows": "广播单集",
|
||||||
|
"term.recordLabels": "唱片公司",
|
||||||
|
"term.videoExtras": "视频特辑",
|
||||||
|
"term.version": "版本",
|
||||||
"home.title": "主页",
|
"home.title": "主页",
|
||||||
"home.recentlyPlayed": "最近播放",
|
"home.recentlyPlayed": "最近播放",
|
||||||
"home.recentlyAdded": "最近添加",
|
"home.recentlyAdded": "最近添加",
|
||||||
"home.artistsFeed": "艺人推荐",
|
"home.artistsFeed": "艺人推荐",
|
||||||
"home.artistsFeed.noArtist": "追踪您喜爱的艺人后便可查看他们的最新发行。",
|
"home.artistsFeed.noArtist": "关注您喜爱的艺人后便可查看他们的最新发行歌曲。",
|
||||||
"home.madeForYou": "专属推荐",
|
"home.madeForYou": "专属推荐",
|
||||||
"home.friendsListeningTo": "朋友正在听",
|
"home.friendsListeningTo": "朋友正在听",
|
||||||
"home.followedArtists": "关注的艺人",
|
"home.followedArtists": "关注的艺人",
|
||||||
|
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "需要订阅 Apple Music 以使用 Cider",
|
"error.appleMusicSubRequired": "需要订阅 Apple Music 以使用 Cider",
|
||||||
"error.connectionError": "无法连接到 Apple Music。",
|
"error.connectionError": "无法连接到 Apple Music。",
|
||||||
"error.noResults": "没有结果",
|
"error.noResults": "没有结果。",
|
||||||
"error.noResults.description": "尝试更改搜索条件。",
|
"error.noResults.description": "尝试更改搜索条件。",
|
||||||
|
"podcast.followOnCider": "在 Cider 中关注",
|
||||||
// Podcasts
|
"podcast.followedOnCider": "已关注",
|
||||||
"podcast.followOnCider": "在 Cider 中追踪",
|
|
||||||
"podcast.followedOnCider": "已追踪",
|
|
||||||
"podcast.subscribeOnItunes": "在 iTunes 上订阅",
|
"podcast.subscribeOnItunes": "在 iTunes 上订阅",
|
||||||
"podcast.subscribedOnItunes": "已订阅",
|
"podcast.subscribedOnItunes": "已订阅",
|
||||||
"podcast.itunesStore": "iTunes Store", // Follow brand term
|
"podcast.itunesStore": "iTunes Store",
|
||||||
"podcast.episodes": "单集",
|
"podcast.episodes": "单集",
|
||||||
"podcast.playEpisode": "播放单集",
|
"podcast.playEpisode": "播放单集",
|
||||||
"podcast.website": "Podcast 网站",
|
"podcast.website": "Podcast 网站",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "加入资料库",
|
"action.addToLibrary": "加入资料库",
|
||||||
"action.addToLibrary.success": "成功加入资料库",
|
"action.addToLibrary.success": "成功加入资料库",
|
||||||
"action.addToLibrary.error": "加入资料库的过程发生了错误",
|
"action.addToLibrary.error": "加入资料库的过程发生了错误",
|
||||||
"action.removeFromLibrary": "从资料库中移除",
|
"action.removeFromLibrary": "从资料库中移除",
|
||||||
"action.removeFromLibrary.success": "已从资料库中移除",
|
"action.removeFromLibrary.success": "已从资料库中移除",
|
||||||
"action.addToQueue": "加入队列",
|
"action.addToQueue": "加入待播清单",
|
||||||
"action.addToQueue.success": "成功加入队列",
|
"action.addToQueue.success": "成功加入加入待播清单",
|
||||||
"action.addToQueue.error": "加入队列的过程发生了错误",
|
"action.addToQueue.error": "加入加入待播清单的过程发生了错误",
|
||||||
"action.removeFromQueue": "从队列中移除",
|
"action.removeFromQueue": "从加入待播清单中移除",
|
||||||
"action.removeFromQueue.success": "已从队列中移除",
|
"action.removeFromQueue.success": "已从加入待播清单中移除",
|
||||||
"action.removeFromQueue.error": "从队列中移除的过程发生了错误",
|
"action.removeFromQueue.error": "从加入待播清单中移除的过程发生了错误",
|
||||||
|
"action.createPlaylist": "新建播放列表",
|
||||||
"action.addToPlaylist": "加入播放列表",
|
"action.addToPlaylist": "加入播放列表",
|
||||||
"action.removeFromPlaylist": "从播放列表中移除",
|
"action.removeFromPlaylist": "从播放列表中移除",
|
||||||
"action.addToFavorites": "加至收藏",
|
"action.addToFavorites": "加至收藏",
|
||||||
|
@ -166,7 +177,7 @@
|
||||||
"action.unfollow": "取消关注",
|
"action.unfollow": "取消关注",
|
||||||
"action.unfollow.success": "已取消关注",
|
"action.unfollow.success": "已取消关注",
|
||||||
"action.unfollow.error": "尝试取消关注的过程发生了错误",
|
"action.unfollow.error": "尝试取消关注的过程发生了错误",
|
||||||
"action.playNext": "下一首播放",
|
"action.playNext": "插播",
|
||||||
"action.playLater": "最后播放",
|
"action.playLater": "最后播放",
|
||||||
"action.startRadio": "开始电台",
|
"action.startRadio": "开始电台",
|
||||||
"action.goToArtist": "前往艺人",
|
"action.goToArtist": "前往艺人",
|
||||||
|
@ -177,11 +188,11 @@
|
||||||
"action.love": "喜欢",
|
"action.love": "喜欢",
|
||||||
"action.unlove": "踩",
|
"action.unlove": "踩",
|
||||||
"action.dislike": "减少此类建议",
|
"action.dislike": "减少此类建议",
|
||||||
"action.undoDislike": "增加此类建议",
|
"action.undoDislike": "撤销减少此类建议",
|
||||||
"action.showWebRemoteQR": "显示远程控制的二维码",
|
"action.showWebRemoteQR": "显示远程控制的二维码",
|
||||||
"action.playTracksNext": "插播 ${app.selectedMediaItems.length} 首歌曲",
|
"action.playTracksNext": "插播 ${app.selectedMediaItems.length} 首歌曲",
|
||||||
"action.playTracksLater": "最后播放 ${app.selectedMediaItems.length} 首歌曲",
|
"action.playTracksLater": "最后播放 ${app.selectedMediaItems.length} 首歌曲",
|
||||||
"action.removeTracks": "从队列中移除 ${self.selectedItems.length} 首歌曲",
|
"action.removeTracks": "从待播清单中移除 ${self.selectedItems.length} 首歌曲",
|
||||||
"action.import": "导入",
|
"action.import": "导入",
|
||||||
"action.export": "导出",
|
"action.export": "导出",
|
||||||
"action.showAlbum": "显示专辑",
|
"action.showAlbum": "显示专辑",
|
||||||
|
@ -189,11 +200,23 @@
|
||||||
"action.tray.quit": "退出",
|
"action.tray.quit": "退出",
|
||||||
"action.tray.show": "显示",
|
"action.tray.show": "显示",
|
||||||
"action.update": "更新",
|
"action.update": "更新",
|
||||||
|
"action.copy": "复制",
|
||||||
// Settings - Audio
|
"action.newpreset": "新建预设...",
|
||||||
|
"action.deletepreset": "删除预设",
|
||||||
|
"settings.header.general": "通用",
|
||||||
|
"settings.header.general.description": "调整 Cider 的通用设置",
|
||||||
|
"settings.option.general.language": "语言",
|
||||||
|
"settings.option.general.language.main": "语言",
|
||||||
|
"settings.option.general.language.fun": "恶搞语言",
|
||||||
|
"settings.option.general.language.unsorted": "未分类",
|
||||||
|
"settings.option.general.updateCider": "更新 Cider",
|
||||||
|
"settings.option.general.updateCider.branch": "Cider 更新通道",
|
||||||
|
"settings.option.general.updateCider.branch.description": "选择接受 Cider 更新的通道",
|
||||||
|
"settings.option.general.updateCider.branch.main": "稳定",
|
||||||
|
"settings.option.general.updateCider.branch.develop": "测试",
|
||||||
"settings.header.audio": "音频",
|
"settings.header.audio": "音频",
|
||||||
"settings.header.audio.description": "调整 Cider 的音频设置",
|
"settings.header.audio.description": "调整 Cider 的音频设置",
|
||||||
"settings.option.audio.quality": "音质", // Dropdown
|
"settings.option.audio.quality": "音质",
|
||||||
"settings.header.audio.quality.hireslossless": "高解析度无损",
|
"settings.header.audio.quality.hireslossless": "高解析度无损",
|
||||||
"settings.header.audio.quality.hireslossless.description": "(最高 24 位/192 kHz)",
|
"settings.header.audio.quality.hireslossless.description": "(最高 24 位/192 kHz)",
|
||||||
"settings.header.audio.quality.lossless": "无损",
|
"settings.header.audio.quality.lossless": "无损",
|
||||||
|
@ -202,77 +225,75 @@
|
||||||
"settings.header.audio.quality.high": "高音质",
|
"settings.header.audio.quality.high": "高音质",
|
||||||
"settings.header.audio.quality.standard": "高效率",
|
"settings.header.audio.quality.standard": "高效率",
|
||||||
"settings.header.audio.quality.auto": "自动",
|
"settings.header.audio.quality.auto": "自动",
|
||||||
"settings.option.audio.seamlessTransition": "无缝播放", // Toggle
|
"settings.option.audio.seamlessTransition": "无缝播放",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "进阶功能", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality": "进阶功能",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "启用 AudioContext 将解锁例如音量标准化和音频空间化的功能,但可能会在小部分设备上出现音频上的卡顿。",
|
"settings.option.audio.enableAdvancedFunctionality.description": "启用 AudioContext 将解锁例如音量标准化和音频空间化的功能,但可能会在小部分设备上出现音频上的卡顿。",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 数字增强引擎™️", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 数字增强引擎™️",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "将欺骗您的大脑来感知到近似无损音频的效果。",
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "将欺骗您的大脑来感知到近似无损音频的效果。",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "音量标准化", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "数字增强引擎强度",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "改变音频处理的强度。(激进选项可能产生杂音)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "音量标准化",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "使所感知到的音频响度统一",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "使所感知到的音频响度统一",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "音频空间化", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "音频空间化",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "使所感知到的音频更有立体感 (注: 这不是杜比全景声)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "使所感知到的音频更有立体感 (注: 这不是杜比全景声)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "标准",
|
||||||
// Settings - Visual
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "激进",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "空间音频与数字增强引擎不兼容,请先停用数字增强引擎",
|
||||||
"settings.header.visual": "外观",
|
"settings.header.visual": "外观",
|
||||||
"settings.header.visual.description": "调整 Cider 的外观",
|
"settings.header.visual.description": "调整 Cider 的外观",
|
||||||
"settings.option.visual.windowBackgroundStyle": "窗口背景样式", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "窗口背景样式",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "无",
|
"settings.header.visual.windowBackgroundStyle.none": "无",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "专辑封面",
|
"settings.header.visual.windowBackgroundStyle.artwork": "专辑封面",
|
||||||
"settings.option.visual.animatedArtwork": "动态专辑封面", // Dropdown
|
"settings.header.visual.windowBackgroundStyle.image": "图像",
|
||||||
|
"settings.option.visual.animatedArtwork": "动态专辑封面",
|
||||||
"settings.header.visual.animatedArtwork.always": "总是显示",
|
"settings.header.visual.animatedArtwork.always": "总是显示",
|
||||||
"settings.header.visual.animatedArtwork.limited": "只在艺人页面和专辑封面显示",
|
"settings.header.visual.animatedArtwork.limited": "只在艺人页面和专辑封面显示",
|
||||||
"settings.header.visual.animatedArtwork.disable": "关闭",
|
"settings.header.visual.animatedArtwork.disable": "关闭",
|
||||||
"settings.option.visual.animatedArtworkQuality": "动态专辑封面画质", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "动态专辑封面画质",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "低",
|
"settings.header.visual.animatedArtworkQuality.low": "低",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "中",
|
"settings.header.visual.animatedArtworkQuality.medium": "中",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "高",
|
"settings.header.visual.animatedArtworkQuality.high": "高",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "非常高",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "非常高",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "极高",
|
"settings.header.visual.animatedArtworkQuality.extreme": "极高",
|
||||||
"settings.option.visual.animatedWindowBackground": "动态窗口背景", // Toggle
|
"settings.option.visual.animatedWindowBackground": "动态窗口背景",
|
||||||
"settings.option.visual.hardwareAcceleration": "硬件加速", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "硬件加速",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "需要重启 Cider 才会生效",
|
"settings.option.visual.hardwareAcceleration.description": "需要重启 Cider 才会生效",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "默认",
|
"settings.header.visual.hardwareAcceleration.default": "默认",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.header.visual.theme": "主题",
|
||||||
"settings.option.visual.showPersonalInfo": "显示个人资料", // Toggle
|
"settings.option.visual.theme.github.download": "通过GitHub URL安装",
|
||||||
|
"settings.option.visual.theme.github.explore": "浏览 GitHub 上的主题",
|
||||||
// Settings - General (Reserved)
|
"settings.option.visual.theme.github.install.confirm": "确定要安装 {{ repo }}?",
|
||||||
"settings.header.general": "通用",
|
"settings.prompt.visual.theme.github.URL": "请输入欲安装主题的URL",
|
||||||
"settings.header.general.description": "调整 Cider 的通用设置",
|
"settings.notyf.visual.theme.install.success": "主题安装成功",
|
||||||
|
"settings.notyf.visual.theme.install.error": "主题安装失败",
|
||||||
// Settings - General - Update Cider
|
"settings.option.visual.theme.default": "默认",
|
||||||
"settings.option.general.updateCider": "更新 Cider", // Button
|
"settings.option.visual.theme.dark": "午夜黑",
|
||||||
|
"settings.option.visual.showPersonalInfo": "显示个人资料",
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "歌词",
|
"settings.header.lyrics": "歌词",
|
||||||
"settings.header.lyrics.description": "调整 Cider 的歌词设置",
|
"settings.header.lyrics.description": "调整 Cider 的歌词设置",
|
||||||
"settings.option.lyrics.enableMusixmatch": "启用 Musixmatch 歌词", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "启用 Musixmatch 歌词",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "启用卡拉 OK 模式(仅 Musixmatch)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "启用卡拉 OK 模式(仅 Musixmatch)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌词语言偏好", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌词语言偏好",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "播放 MV 时使用 YouTube 歌词", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "播放 MV 时使用 YouTube 歌词",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "外部连接",
|
"settings.header.connectivity": "外部连接",
|
||||||
"settings.header.connectivity.description": "调整Cider与外部应用的交互设置",
|
"settings.header.connectivity.description": "调整Cider与外部应用的交互设置",
|
||||||
"settings.option.connectivity.discordRPC": "Discord 动态", // Dropdown
|
"settings.option.connectivity.discordRPC": "Discord 动态",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.option.connectivity.playbackNotifications": "歌曲播放通知",
|
||||||
"settings.header.connectivity.discordRPC.cider": "显示正在玩 'Cider'",
|
"settings.header.connectivity.discordRPC.cider": "显示正在使用 'Cider'",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "显示正在玩 'Apple Music'",
|
"settings.header.connectivity.discordRPC.appleMusic": "显示正在使用 'Apple Music'",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "暂停时清除Discord 动态", // Toggle
|
"settings.option.connectivity.discordRPC.clearOnPause": "暂停时清除 Discord 动态",
|
||||||
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling 记录", // Option to Connect
|
"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)",
|
||||||
// Refer to term.connect for the connect button
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "不记录单曲循环 (LastFM)",
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "实验性功能",
|
"settings.header.experimental": "实验性功能",
|
||||||
"settings.header.experimental.description": "调整Cider的实验性功能",
|
"settings.header.experimental.description": "调整 Cider 的实验性功能",
|
||||||
"settings.option.experimental.compactUI": "紧凑型 UI", // Toggle
|
"settings.option.experimental.compactUI": "紧凑型 UI",
|
||||||
"settings.option.experimental.close_button_hide": "点击关闭按钮时仅隐藏窗口",
|
"settings.option.window.close_button_hide": "点击关闭按钮时仅隐藏窗口",
|
||||||
|
"settings.option.experimental.copy_log": "复制日志至剪贴板",
|
||||||
// Refer to term.disabled & term.enabled
|
"spatial.notTurnedOn": "请在设定中开启空间音频。",
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.spatialProperties": "空间属性",
|
"spatial.spatialProperties": "空间属性",
|
||||||
"spatial.width": "宽度",
|
"spatial.width": "宽度",
|
||||||
"spatial.height": "高度",
|
"spatial.height": "高度",
|
||||||
|
@ -291,14 +312,8 @@
|
||||||
"spatial.down": "下",
|
"spatial.down": "下",
|
||||||
"spatial.listener": "您",
|
"spatial.listener": "您",
|
||||||
"spatial.audioSource": "音源",
|
"spatial.audioSource": "音源",
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "未完成",
|
"settings.header.unfinished": "未完成",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "Cider 远程控制",
|
"remote.web.title": "Cider 远程控制",
|
||||||
"remote.web.description": "扫描以下的二维码以控制 Cider",
|
"remote.web.description": "扫描以下的二维码以控制 Cider",
|
||||||
|
|
||||||
//About
|
|
||||||
"about.thanks": "郑重感谢 Cider Collective 以及为这个项目提供支持的贡献者。"
|
"about.thanks": "郑重感谢 Cider Collective 以及为这个项目提供支持的贡献者。"
|
||||||
}
|
}
|
|
@ -1,31 +1,21 @@
|
||||||
{
|
{
|
||||||
// i18n Info
|
"i18n.languageName": "繁體中文(香港)",
|
||||||
"i18n.languageName": "繁體中文(香港)", // name of language in native language
|
"i18n.languageNameEnglish": "Trad. Chinese (Hong Kong)",
|
||||||
"i18n.languageNameEnglish": "Trad. Chinese (Hong Kong)", // name of language in English
|
"i18n.category": "main",
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
"i18n.authors": "@kyw504100 @maikirakiwi @BillKerman",
|
||||||
"i18n.authors": "@kyw504100 @maikirakiwi", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
"app.name": "Cider",
|
||||||
|
|
||||||
"date.format": "${y}年${m}月${d}日",
|
"date.format": "${y}年${m}月${d}日",
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "取消",
|
"dialog.cancel": "取消",
|
||||||
"dialog.ok": "確認",
|
"dialog.ok": "確認",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "正在更新資料庫的歌曲...",
|
"notification.updatingLibrarySongs": "正在更新資料庫的歌曲...",
|
||||||
"notification.updatingLibraryAlbums": "正在更新資料庫的專輯...",
|
"notification.updatingLibraryAlbums": "正在更新資料庫的專輯...",
|
||||||
"notification.updatingLibraryArtists": "正在更新資料庫的藝人...",
|
"notification.updatingLibraryArtists": "正在更新資料庫的藝人...",
|
||||||
|
|
||||||
// Terms
|
|
||||||
"term.appleInc": "Apple Inc.",
|
"term.appleInc": "Apple Inc.",
|
||||||
"term.appleMusic": "Apple Music", // Follows brand term
|
"term.appleMusic": "Apple Music",
|
||||||
"term.applePodcasts": "Apple Podcasts", // Follows brand term
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
"term.itunes": "iTunes", // Follows brand term
|
"term.itunes": "iTunes",
|
||||||
"term.github": "GitHub", // Follows brand term
|
"term.github": "GitHub",
|
||||||
"term.discord": "Discord", // Follows brand term
|
"term.discord": "Discord",
|
||||||
"term.learnMore": "了解更多",
|
"term.learnMore": "了解更多",
|
||||||
"term.accountSettings": "帳號設定",
|
"term.accountSettings": "帳號設定",
|
||||||
"term.logout": "登出",
|
"term.logout": "登出",
|
||||||
|
@ -33,7 +23,6 @@
|
||||||
"term.about": "關於",
|
"term.about": "關於",
|
||||||
"term.privateSession": "私人模式",
|
"term.privateSession": "私人模式",
|
||||||
"term.queue": "待播清單",
|
"term.queue": "待播清單",
|
||||||
"term.history": "歷史紀錄",
|
|
||||||
"term.search": "搜尋",
|
"term.search": "搜尋",
|
||||||
"term.library": "資料庫",
|
"term.library": "資料庫",
|
||||||
"term.listenNow": "立即聆聽",
|
"term.listenNow": "立即聆聽",
|
||||||
|
@ -47,9 +36,9 @@
|
||||||
"term.playlists": "播放列表",
|
"term.playlists": "播放列表",
|
||||||
"term.playlist": "播放列表",
|
"term.playlist": "播放列表",
|
||||||
"term.newPlaylist": "新播放列表",
|
"term.newPlaylist": "新播放列表",
|
||||||
"term.newPlaylistFolder": "新資料夾",
|
"term.newPlaylistFolder": "新播放列表資料夾",
|
||||||
"term.createNewPlaylist": "新增播放列表",
|
"term.createNewPlaylist": "新增播放列表",
|
||||||
"term.createNewPlaylistFolder": "新增資料夾",
|
"term.createNewPlaylistFolder": "新增播放列表資料夾",
|
||||||
"term.deletePlaylist": "你確認要刪除這個播放列表?",
|
"term.deletePlaylist": "你確認要刪除這個播放列表?",
|
||||||
"term.play": "播放",
|
"term.play": "播放",
|
||||||
"term.pause": "暫停",
|
"term.pause": "暫停",
|
||||||
|
@ -61,7 +50,6 @@
|
||||||
"term.mute": "靜音",
|
"term.mute": "靜音",
|
||||||
"term.unmute": "取消靜音",
|
"term.unmute": "取消靜音",
|
||||||
"term.share": "分享",
|
"term.share": "分享",
|
||||||
"term.share.success": "已複製至剪貼簿",
|
|
||||||
"term.settings": "設定",
|
"term.settings": "設定",
|
||||||
"term.seeAll": "顯示全部",
|
"term.seeAll": "顯示全部",
|
||||||
"term.sortBy": "排序",
|
"term.sortBy": "排序",
|
||||||
|
@ -71,6 +59,7 @@
|
||||||
"term.sortBy.genre": "音樂風格",
|
"term.sortBy.genre": "音樂風格",
|
||||||
"term.sortBy.releaseDate": "發行日期",
|
"term.sortBy.releaseDate": "發行日期",
|
||||||
"term.sortBy.duration": "時長",
|
"term.sortBy.duration": "時長",
|
||||||
|
"term.sortBy.dateAdded": "加入日期",
|
||||||
"term.sortOrder": "字母排序",
|
"term.sortOrder": "字母排序",
|
||||||
"term.sortOrder.ascending": "順序",
|
"term.sortOrder.ascending": "順序",
|
||||||
"term.sortOrder.descending": "倒序",
|
"term.sortOrder.descending": "倒序",
|
||||||
|
@ -107,6 +96,7 @@
|
||||||
"term.fullscreenView": "全螢幕檢視",
|
"term.fullscreenView": "全螢幕檢視",
|
||||||
"term.defaultView": "一般檢視",
|
"term.defaultView": "一般檢視",
|
||||||
"term.audioSettings": "音訊設定",
|
"term.audioSettings": "音訊設定",
|
||||||
|
"term.audioControls": "音量控制",
|
||||||
"term.clearAll": "清空",
|
"term.clearAll": "清空",
|
||||||
"term.recentStations": "最近播放的頻道",
|
"term.recentStations": "最近播放的頻道",
|
||||||
"term.language": "語言",
|
"term.language": "語言",
|
||||||
|
@ -122,28 +112,31 @@
|
||||||
"term.contributors": "貢獻者",
|
"term.contributors": "貢獻者",
|
||||||
"term.equalizer": "均衡器",
|
"term.equalizer": "均衡器",
|
||||||
"term.reset": "重設",
|
"term.reset": "重設",
|
||||||
"term.tracks": "首歌曲", // Assume x amount of tracks. e.g. 50 tracks
|
"term.tracks": "首歌曲",
|
||||||
"term.videos": "影片",
|
"term.videos": "影片",
|
||||||
"term.menu": "選項",
|
"term.menu": "選項",
|
||||||
"term.check": "檢查",
|
"term.check": "檢查",
|
||||||
"term.aboutArtist": "關於 {{artistName}}", // e.g. 'About Doja Cat'
|
"term.aboutArtist": "關於 {{artistName}}",
|
||||||
"term.topResult": "熱門搜尋結果", // Search Results
|
"term.topResult": "熱門搜尋結果",
|
||||||
"term.sharedPlaylists": "播放列表", // Search Results
|
"term.sharedPlaylists": "播放列表",
|
||||||
"term.people": "個人檔案", // Search Results
|
"term.people": "個人檔案",
|
||||||
"term.newpreset.name": "新均衡器範本名稱", // Equalizer Preset
|
"term.newpreset.name": "新均衡器範本名稱",
|
||||||
"term.addedpreset": "已新增",
|
"term.addedpreset": "已新增",
|
||||||
"term.deletepreset.warn": "你確認要刪除這個範本?",
|
"term.deletepreset.warn": "你確認要刪除這個範本?",
|
||||||
"term.deletedpreset": "已刪除",
|
"term.deletedpreset": "已刪除",
|
||||||
"term.musicVideos": "MV", // Search page friendlyTypes
|
"term.defaultPresets": "預設範本",
|
||||||
|
"term.userPresets": "自訂範本",
|
||||||
|
"term.requestError": "處理請求時發生錯誤",
|
||||||
|
"term.song.link.generate": "正在生成 song.link 分享連結...",
|
||||||
|
"term.musicVideos": "MV",
|
||||||
"term.stations": "電台",
|
"term.stations": "電台",
|
||||||
//"term.curators": "Curators",
|
|
||||||
//"term.appleCurators": "Apple Curators",
|
|
||||||
"term.radioShows": "廣播單集",
|
"term.radioShows": "廣播單集",
|
||||||
"term.recordLabels": "唱片公司",
|
"term.recordLabels": "唱片公司",
|
||||||
"term.videoExtras": "影片特輯",
|
"term.videoExtras": "影片特輯",
|
||||||
//"term.top": "Top",
|
"term.version": "版本",
|
||||||
|
"term.noVideos": "沒有影片",
|
||||||
// Home
|
"term.plugin": "外掛程式",
|
||||||
|
"term.pluginMenu": "外掛程式選單",
|
||||||
"home.title": "主頁",
|
"home.title": "主頁",
|
||||||
"home.recentlyPlayed": "最近播放",
|
"home.recentlyPlayed": "最近播放",
|
||||||
"home.recentlyAdded": "最近加入",
|
"home.recentlyAdded": "最近加入",
|
||||||
|
@ -152,14 +145,10 @@
|
||||||
"home.madeForYou": "為您推薦",
|
"home.madeForYou": "為您推薦",
|
||||||
"home.friendsListeningTo": "朋友正在聆聽",
|
"home.friendsListeningTo": "朋友正在聆聽",
|
||||||
"home.followedArtists": "追蹤的藝人",
|
"home.followedArtists": "追蹤的藝人",
|
||||||
|
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "需要訂閱Apple Music以使用Cider",
|
"error.appleMusicSubRequired": "需要訂閱Apple Music以使用Cider",
|
||||||
"error.connectionError": "無法連接到 Apple Music。",
|
"error.connectionError": "無法連接到 Apple Music。",
|
||||||
"error.noResults": "沒有結果",
|
"error.noResults": "沒有結果",
|
||||||
"error.noResults.description": "請嘗試新的搜尋內容。",
|
"error.noResults.description": "請嘗試新的搜尋內容。",
|
||||||
|
|
||||||
// Podcasts
|
|
||||||
"podcast.followOnCider": "在Cider上追蹤",
|
"podcast.followOnCider": "在Cider上追蹤",
|
||||||
"podcast.followedOnCider": "已在Cider上追蹤",
|
"podcast.followedOnCider": "已在Cider上追蹤",
|
||||||
"podcast.subscribeOnItunes": "在iTunes上訂閱",
|
"podcast.subscribeOnItunes": "在iTunes上訂閱",
|
||||||
|
@ -168,8 +157,6 @@
|
||||||
"podcast.episodes": "單集",
|
"podcast.episodes": "單集",
|
||||||
"podcast.playEpisode": "播放單集",
|
"podcast.playEpisode": "播放單集",
|
||||||
"podcast.website": "Podcast 網頁",
|
"podcast.website": "Podcast 網頁",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "加入資料庫",
|
"action.addToLibrary": "加入資料庫",
|
||||||
"action.addToLibrary.success": "成功加入資料庫",
|
"action.addToLibrary.success": "成功加入資料庫",
|
||||||
"action.addToLibrary.error": "加入資料庫的過程發生錯誤",
|
"action.addToLibrary.error": "加入資料庫的過程發生錯誤",
|
||||||
|
@ -202,7 +189,7 @@
|
||||||
"action.love": "喜愛",
|
"action.love": "喜愛",
|
||||||
"action.unlove": "取消喜愛",
|
"action.unlove": "取消喜愛",
|
||||||
"action.dislike": "減少此類建議",
|
"action.dislike": "減少此類建議",
|
||||||
"action.undoDislike": "還原減小此類建議",
|
"action.undoDislike": "還原減少此類建議",
|
||||||
"action.showWebRemoteQR": "遙距控制",
|
"action.showWebRemoteQR": "遙距控制",
|
||||||
"action.playTracksNext": "插播 ${app.selectedMediaItems.length} 首歌曲",
|
"action.playTracksNext": "插播 ${app.selectedMediaItems.length} 首歌曲",
|
||||||
"action.playTracksLater": "稍後播放 ${app.selectedMediaItems.length} 首歌曲",
|
"action.playTracksLater": "稍後播放 ${app.selectedMediaItems.length} 首歌曲",
|
||||||
|
@ -215,107 +202,102 @@
|
||||||
"action.tray.show": "顯示",
|
"action.tray.show": "顯示",
|
||||||
"action.update": "更新",
|
"action.update": "更新",
|
||||||
"action.copy": "複製",
|
"action.copy": "複製",
|
||||||
"action.newpreset": "新增範本", //Equallizer preset
|
"action.newpreset": "新增範本",
|
||||||
"action.deletepreset": "刪除範本",
|
"action.deletepreset": "刪除範本",
|
||||||
|
"action.open": "開啟",
|
||||||
// Settings - General
|
|
||||||
"settings.header.general": "一般",
|
"settings.header.general": "一般",
|
||||||
"settings.header.general.description": "調整Cider的一般設定",
|
"settings.header.general.description": "調整Cider的一般設定",
|
||||||
"settings.option.general.language": "語言",
|
"settings.option.general.language": "語言",
|
||||||
|
|
||||||
// Language optgroups
|
|
||||||
"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": "未分類",
|
||||||
|
"settings.option.general.updateCider": "更新 Cider",
|
||||||
// Update Cider
|
"settings.option.general.updateCider.branch": "Cider 更新通道",
|
||||||
"settings.option.general.updateCider": "更新 Cider", // Button
|
"settings.option.general.updateCider.branch.description": "選擇你想要接收來自哪個通道的更新",
|
||||||
|
"settings.option.general.updateCider.branch.main": "穩定",
|
||||||
// Settings - Audio
|
"settings.option.general.updateCider.branch.develop": "測試",
|
||||||
"settings.header.audio": "音訊",
|
"settings.header.audio": "音訊",
|
||||||
"settings.header.audio.description": "調整Cider的音訊設定",
|
"settings.header.audio.description": "調整Cider的音訊設定",
|
||||||
"settings.option.audio.quality": "音訊音質", // Dropdown
|
"settings.option.audio.volumeStep": "音量改變量",
|
||||||
|
"settings.option.audio.maxVolume": "最高音量",
|
||||||
|
"settings.option.audio.quality": "音訊音質",
|
||||||
"settings.header.audio.quality.hireslossless": "高清無損壓縮",
|
"settings.header.audio.quality.hireslossless": "高清無損壓縮",
|
||||||
"settings.header.audio.quality.hireslossless.description": "(高達 24-bit/192 kHz)",
|
"settings.header.audio.quality.hireslossless.description": "(高達 24-bit/192 kHz)",
|
||||||
"settings.header.audio.quality.lossless": "無損壓縮",
|
"settings.header.audio.quality.lossless": "無損壓縮",
|
||||||
"settings.header.audio.quality.lossless.description": "(高達 24-bit/48 kHz)",
|
"settings.header.audio.quality.lossless.description": "(高達 24-bit/48 kHz)",
|
||||||
"settings.header.audio.quality.high": "高素質",
|
"settings.header.audio.quality.high": "高素質",
|
||||||
"settings.header.audio.quality.low": "高效率",
|
"settings.header.audio.quality.standard": "高效率",
|
||||||
"settings.header.audio.quality.auto": "自動",
|
"settings.option.audio.seamlessTransition": "無縫播放",
|
||||||
"settings.option.audio.seamlessTransition": "無縫播放", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality": "進階功能",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "進階功能", // Toggle
|
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "啟用 AudioContext 將解鎖類似音量平衡和均衡器的進階功能。但是會在一些電腦造成音樂卡頓。",
|
"settings.option.audio.enableAdvancedFunctionality.description": "啟用 AudioContext 將解鎖類似音量平衡和均衡器的進階功能。但是會在一些電腦造成音樂卡頓。",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.decryptLLPW": "無損壓縮解碼", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 數碼音訊增強處理™️",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.decryptLLPW.description": "提供 Cider 解碼無損壓縮檔案的能力,但相應地會增加電腦的工作量。",
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "能夠欺騙你的大腦讓你感受到近似無損壓縮的音質。",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "音量平衡", // Toggle
|
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "音訊增強處理不兼容於空間音訊,請先停用空間音訊。",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "數碼音訊增強處理設定",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "將更改音訊處理的激進程度(激進型選項有可能會引起雜訊)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "標準型",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "激進型",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "音量平衡",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "將平衡輕柔和響亮的歌曲,建立更統一的聆聽體驗。",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "將平衡輕柔和響亮的歌曲,建立更統一的聆聽體驗。",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "空間音訊", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "空間音訊",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "將音訊進行空間化處理來製造一個更立體的聆聽體驗(注:此功能不是官方的杜比全景聲)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "將音訊進行空間化處理來製造一個更立體的聆聽體驗(注:此功能不是官方的杜比全景聲)",
|
||||||
|
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "空間音訊不兼容於音訊增強處理,請先停用音訊增強處理。",
|
||||||
// Settings - Visual
|
|
||||||
"settings.header.visual": "外觀",
|
"settings.header.visual": "外觀",
|
||||||
"settings.header.visual.description": "調整Cider的外觀",
|
"settings.header.visual.description": "調整Cider的外觀",
|
||||||
"settings.option.visual.windowBackgroundStyle": "窗口背景樣式", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "窗口背景樣式",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "空白",
|
"settings.header.visual.windowBackgroundStyle.none": "空白",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "專輯封面",
|
"settings.header.visual.windowBackgroundStyle.artwork": "專輯封面",
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "圖片",
|
"settings.header.visual.windowBackgroundStyle.image": "圖片",
|
||||||
"settings.option.visual.animatedArtwork": "動態專輯封面", // Dropdown
|
"settings.option.visual.animatedArtwork": "動態專輯封面",
|
||||||
"settings.header.visual.animatedArtwork.always": "總是顯示",
|
"settings.header.visual.animatedArtwork.always": "總是顯示",
|
||||||
"settings.header.visual.animatedArtwork.limited": "只在藝人頁面和專輯封面顯示",
|
"settings.header.visual.animatedArtwork.limited": "只在藝人頁面和專輯封面顯示",
|
||||||
"settings.header.visual.animatedArtwork.disable": "關閉",
|
"settings.header.visual.animatedArtwork.disable": "關閉",
|
||||||
"settings.option.visual.animatedArtworkQuality": "動態專輯封面品質", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "動態專輯封面品質",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "低",
|
"settings.header.visual.animatedArtworkQuality.low": "低",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "中",
|
"settings.header.visual.animatedArtworkQuality.medium": "中",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "高",
|
"settings.header.visual.animatedArtworkQuality.high": "高",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "非常高",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "非常高",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "極高",
|
"settings.header.visual.animatedArtworkQuality.extreme": "極高",
|
||||||
"settings.option.visual.animatedWindowBackground": "動態窗口背景", // Toggle
|
"settings.option.visual.animatedWindowBackground": "動態窗口背景",
|
||||||
"settings.option.visual.hardwareAcceleration": "硬體加速", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "硬體加速",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "需要重啓 Cider 才能生效",
|
"settings.option.visual.hardwareAcceleration.description": "需要重啓 Cider 才能生效",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "預設",
|
"settings.header.visual.hardwareAcceleration.default": "預設",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
"settings.header.visual.theme": "主題",
|
"settings.header.visual.theme": "主題",
|
||||||
|
"settings.option.visual.theme.github.download": "使用 Github 網址安裝",
|
||||||
// Settings - Visual - Theme name
|
"settings.option.visual.theme.github.explore": "探索更多主題",
|
||||||
|
"settings.option.visual.theme.github.install.confirm": "你確認要安裝 {{ repo }}?",
|
||||||
|
"settings.prompt.visual.theme.github.URL": "請輸入你想要安裝的主題的網址",
|
||||||
|
"settings.notyf.visual.theme.install.success": "成功安裝主題",
|
||||||
|
"settings.notyf.visual.theme.install.error": "主題安裝失敗",
|
||||||
"settings.option.visual.theme.default": "預設",
|
"settings.option.visual.theme.default": "預設",
|
||||||
"settings.option.visual.theme.dark": "午夜暗",
|
"settings.option.visual.theme.dark": "午夜暗",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.option.visual.showPersonalInfo": "顯示個人檔案",
|
||||||
"settings.option.visual.showPersonalInfo": "顯示個人檔案", // Toggle
|
|
||||||
|
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "歌詞",
|
"settings.header.lyrics": "歌詞",
|
||||||
"settings.header.lyrics.description": "調整Cider的歌詞設定",
|
"settings.header.lyrics.description": "調整Cider的歌詞設定",
|
||||||
"settings.option.lyrics.enableMusixmatch": "啟用 Musixmatch 歌詞", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "啟用 Musixmatch 歌詞",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "啟用卡拉OK模式(僅限Musixmatch)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "啟用卡拉OK模式(僅限Musixmatch)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌詞語言偏好", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌詞語言偏好",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "播放 MV 時使用 YouTube 歌詞", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "播放 MV 時使用 YouTube 歌詞",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "外部連結",
|
"settings.header.connectivity": "外部連結",
|
||||||
"settings.header.connectivity.description": "調整Cider與外部的連結",
|
"settings.header.connectivity.description": "調整Cider與外部的連結",
|
||||||
"settings.option.connectivity.discordRPC": "Discord 狀態", // Dropdown
|
"settings.option.connectivity.discordRPC": "Discord 狀態",
|
||||||
"settings.option.connectivity.playbackNotifications": "播放通知", // Toggle
|
"settings.option.connectivity.playbackNotifications": "播放通知",
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "顯示為'Cider'",
|
"settings.header.connectivity.discordRPC.cider": "顯示為'Cider'",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "顯示為'Apple Music'",
|
"settings.header.connectivity.discordRPC.appleMusic": "顯示為'Apple Music'",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "暫停時清除 Discord 狀態", // Toggle
|
"settings.option.connectivity.discordRPC.clearOnPause": "暫停時清除 Discord 狀態",
|
||||||
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling 記錄", // Option to Connect
|
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling 記錄",
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Scrobble 延遲 (%)",
|
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Scrobble 延遲 (%)",
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "啟用 Last.fm 正在播放",
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "啟用 Last.fm 正在播放",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "從歌名中移除藝人推薦 (Last.fm)",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "從歌名中移除客串藝人(Last.fm)",
|
||||||
//"settings.option.connectivity.lastfmScrobble.filterLoop": "Filter looped track (Last.fm)",
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "不記錄單曲循環(Last.fm)",
|
||||||
// Refer to term.connect for the connect button
|
"settings.header.debug": "除錯",
|
||||||
|
"settings.option.debug.copy_log": "複製運行記錄檔至剪貼簿",
|
||||||
// Settings - Experimental
|
"settings.option.debug.openAppData": "開啟 Cider 程式資料夾",
|
||||||
"settings.header.experimental": "實驗性功能",
|
"settings.header.experimental": "實驗性功能",
|
||||||
"settings.header.experimental.description": "調整Cider的實驗性功能",
|
"settings.header.experimental.description": "調整Cider的實驗性功能",
|
||||||
"settings.option.experimental.compactUI": "緊凑型 UI", // Toggle
|
"settings.option.experimental.compactUI": "緊凑型 UI",
|
||||||
"settings.option.experimental.close_button_hide": "以關閉按鈕來隱藏 Cider",
|
"settings.option.window.close_button_hide": "以關閉按鈕來隱藏 Cider",
|
||||||
"settings.option.experimental.copy_log": "複製運行記錄檔至剪貼簿",
|
|
||||||
//"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
|
|
||||||
|
|
||||||
// Refer to term.disabled & term.enabled
|
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.notTurnedOn": "請先在設定中啟用空間音訊。",
|
"spatial.notTurnedOn": "請先在設定中啟用空間音訊。",
|
||||||
"spatial.spatialProperties": "空間音訊屬性",
|
"spatial.spatialProperties": "空間音訊屬性",
|
||||||
"spatial.width": "闊度",
|
"spatial.width": "闊度",
|
||||||
|
@ -335,14 +317,8 @@
|
||||||
"spatial.down": "下方",
|
"spatial.down": "下方",
|
||||||
"spatial.listener": "觀眾",
|
"spatial.listener": "觀眾",
|
||||||
"spatial.audioSource": "音源",
|
"spatial.audioSource": "音源",
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "未完成",
|
"settings.header.unfinished": "未完成",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "遙距控制 Cider",
|
"remote.web.title": "遙距控制 Cider",
|
||||||
"remote.web.description": "掃描以下的二維碼以控制 Cider",
|
"remote.web.description": "掃描以下的二維碼以控制 Cider",
|
||||||
|
|
||||||
// About
|
|
||||||
"about.thanks": "感謝 Cider Collective 以及所有貢獻者所作出的貢獻。"
|
"about.thanks": "感謝 Cider Collective 以及所有貢獻者所作出的貢獻。"
|
||||||
}
|
}
|
|
@ -1,30 +1,20 @@
|
||||||
{
|
{
|
||||||
// i18n Info
|
"i18n.languageName": "繁體中文(台灣)",
|
||||||
"i18n.languageName": "繁體中文(台灣)", // name of language in native language
|
"i18n.languageNameEnglish": "Trad. Chinese (Taiwan)",
|
||||||
"i18n.languageNameEnglish": "Trad. Chinese (Taiwan)", // name of language in English
|
"i18n.category": "main",
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
"i18n.authors": "@maikirakiwi @jay900604 @kyw504100 @BillKerman",
|
||||||
"i18n.authors": "@maikirakiwi @jay900604", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
"app.name": "Cider",
|
||||||
|
|
||||||
"date.format": "${y}年${m}月${d}日",
|
"date.format": "${y}年${m}月${d}日",
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "取消",
|
"dialog.cancel": "取消",
|
||||||
"dialog.ok": "確定",
|
"dialog.ok": "確定",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "正在更新資料庫的歌曲...",
|
"notification.updatingLibrarySongs": "正在更新資料庫的歌曲...",
|
||||||
"notification.updatingLibraryAlbums": "正在更新資料庫的專輯...",
|
"notification.updatingLibraryAlbums": "正在更新資料庫的專輯...",
|
||||||
"notification.updatingLibraryArtists": "正在更新資料庫的藝人...",
|
"notification.updatingLibraryArtists": "正在更新資料庫的藝人...",
|
||||||
|
"term.appleMusic": "Apple Music",
|
||||||
// Terms
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
"term.appleMusic": "Apple Music", // Follows brand term
|
"term.itunes": "iTunes",
|
||||||
"term.applePodcasts": "Apple Podcasts", // Follows brand term
|
"term.github": "GitHub",
|
||||||
"term.itunes": "iTunes", // Follows brand term
|
"term.discord": "Discord",
|
||||||
"term.github": "GitHub", // Follows brand term
|
|
||||||
"term.discord": "Discord", // Follows brand term
|
|
||||||
"term.learnMore": "更多内容",
|
"term.learnMore": "更多内容",
|
||||||
"term.accountSettings": "帳戶設定",
|
"term.accountSettings": "帳戶設定",
|
||||||
"term.logout": "登出",
|
"term.logout": "登出",
|
||||||
|
@ -32,6 +22,7 @@
|
||||||
"term.about": "關於",
|
"term.about": "關於",
|
||||||
"term.privateSession": "私人時段",
|
"term.privateSession": "私人時段",
|
||||||
"term.queue": "待播清單",
|
"term.queue": "待播清單",
|
||||||
|
"term.history": "播放歷史",
|
||||||
"term.search": "搜尋",
|
"term.search": "搜尋",
|
||||||
"term.library": "資料庫",
|
"term.library": "資料庫",
|
||||||
"term.listenNow": "立即聆聽",
|
"term.listenNow": "立即聆聽",
|
||||||
|
@ -44,6 +35,11 @@
|
||||||
"term.podcasts": "Podcasts",
|
"term.podcasts": "Podcasts",
|
||||||
"term.playlists": "播放列表",
|
"term.playlists": "播放列表",
|
||||||
"term.playlist": "播放列表",
|
"term.playlist": "播放列表",
|
||||||
|
"term.newPlaylist": "新播放列表",
|
||||||
|
"term.newPlaylistFolder": "新播放列表資料夾",
|
||||||
|
"term.createNewPlaylist": "新增播放列表",
|
||||||
|
"term.createNewPlaylistFolder": "新增播放列表資料夾",
|
||||||
|
"term.deletePlaylist": "您確定要刪除此播放列表嗎?",
|
||||||
"term.play": "播放",
|
"term.play": "播放",
|
||||||
"term.pause": "暫停",
|
"term.pause": "暫停",
|
||||||
"term.previous": "上一首",
|
"term.previous": "上一首",
|
||||||
|
@ -54,7 +50,7 @@
|
||||||
"term.mute": "靜音",
|
"term.mute": "靜音",
|
||||||
"term.unmute": "取消靜音",
|
"term.unmute": "取消靜音",
|
||||||
"term.share": "分享",
|
"term.share": "分享",
|
||||||
"term.share.success": "已複製至剪貼簿",
|
"term.share.success": "已複製到剪貼簿",
|
||||||
"term.settings": "設定",
|
"term.settings": "設定",
|
||||||
"term.seeAll": "顯示全部",
|
"term.seeAll": "顯示全部",
|
||||||
"term.sortBy": "排序",
|
"term.sortBy": "排序",
|
||||||
|
@ -64,6 +60,7 @@
|
||||||
"term.sortBy.genre": "音樂風格",
|
"term.sortBy.genre": "音樂風格",
|
||||||
"term.sortBy.releaseDate": "發行日期",
|
"term.sortBy.releaseDate": "發行日期",
|
||||||
"term.sortBy.duration": "時長",
|
"term.sortBy.duration": "時長",
|
||||||
|
"term.sortBy.dateAdded": "新增日期",
|
||||||
"term.sortOrder": "字母排序",
|
"term.sortOrder": "字母排序",
|
||||||
"term.sortOrder.ascending": "升序",
|
"term.sortOrder.ascending": "升序",
|
||||||
"term.sortOrder.descending": "降序",
|
"term.sortOrder.descending": "降序",
|
||||||
|
@ -73,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": "斷開",
|
||||||
|
@ -100,11 +97,12 @@
|
||||||
"term.fullscreenView": "全螢幕顯示",
|
"term.fullscreenView": "全螢幕顯示",
|
||||||
"term.defaultView": "預設顯示",
|
"term.defaultView": "預設顯示",
|
||||||
"term.audioSettings": "音訊設定",
|
"term.audioSettings": "音訊設定",
|
||||||
|
"term.audioControls": "音訊控制",
|
||||||
"term.spacializedAudioSetting": "空間音訊設定",
|
"term.spacializedAudioSetting": "空間音訊設定",
|
||||||
"term.clearAll": "清空",
|
"term.clearAll": "清空",
|
||||||
"term.recentStations": "最近收聽的廣播",
|
"term.recentStations": "最近收聽的廣播",
|
||||||
"term.language": "語言",
|
"term.language": "語言",
|
||||||
"term.noLyrics": "正在載入。。/ 無歌詞結果 / 純音樂",
|
"term.noLyrics": "正在載入... / 無歌詞結果 / 純音樂",
|
||||||
"term.copyright": "版權聲明",
|
"term.copyright": "版權聲明",
|
||||||
"term.rightsReserved": "保留所有權利。",
|
"term.rightsReserved": "保留所有權利。",
|
||||||
"term.sponsor": "贊助我們",
|
"term.sponsor": "贊助我們",
|
||||||
|
@ -115,13 +113,18 @@
|
||||||
"term.contributors": "貢獻者",
|
"term.contributors": "貢獻者",
|
||||||
"term.equalizer": "等化器",
|
"term.equalizer": "等化器",
|
||||||
"term.reset": "重設",
|
"term.reset": "重設",
|
||||||
"term.tracks": "首歌曲", // Assume x amount of tracks. e.g. 50 tracks
|
"term.track": {
|
||||||
|
"one": "首歌曲",
|
||||||
|
"other": "首歌曲"
|
||||||
|
},
|
||||||
|
"term.tracks": "首歌曲",
|
||||||
"term.videos": "影片",
|
"term.videos": "影片",
|
||||||
"term.menu": "選單",
|
"term.menu": "選單",
|
||||||
"term.check": "檢查",
|
"term.check": "檢查",
|
||||||
"term.aboutArtist": "關於{{artistName}}", // e.g. 'About Doja Cat'
|
"term.aboutArtist": "關於{{artistName}}",
|
||||||
|
"term.requestError": "請求發生錯誤。",
|
||||||
// Home
|
"term.song.link.generate": "正在取得 song.link 的分享網址...",
|
||||||
|
"term.version": "版本",
|
||||||
"home.title": "首頁",
|
"home.title": "首頁",
|
||||||
"home.recentlyPlayed": "最近播放",
|
"home.recentlyPlayed": "最近播放",
|
||||||
"home.recentlyAdded": "最近加入",
|
"home.recentlyAdded": "最近加入",
|
||||||
|
@ -130,24 +133,18 @@
|
||||||
"home.madeForYou": "為您推薦",
|
"home.madeForYou": "為您推薦",
|
||||||
"home.friendsListeningTo": "朋友正在聆聽",
|
"home.friendsListeningTo": "朋友正在聆聽",
|
||||||
"home.followedArtists": "追蹤的藝人",
|
"home.followedArtists": "追蹤的藝人",
|
||||||
|
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "需要訂閱 Apple Music 以使用 Cider",
|
"error.appleMusicSubRequired": "需要訂閱 Apple Music 以使用 Cider",
|
||||||
"error.connectionError": "無法連接到 Apple Music。",
|
"error.connectionError": "無法連接到 Apple Music。",
|
||||||
"error.noResults": "沒有結果",
|
"error.noResults": "沒有結果",
|
||||||
"error.noResults.description": "嘗試新的搜尋項目。",
|
"error.noResults.description": "嘗試新的搜尋項目。",
|
||||||
|
|
||||||
// Podcasts
|
|
||||||
"podcast.followOnCider": "在 Cider 上追蹤",
|
"podcast.followOnCider": "在 Cider 上追蹤",
|
||||||
"podcast.followedOnCider": "已追蹤",
|
"podcast.followedOnCider": "已追蹤",
|
||||||
"podcast.subscribeOnItunes": "在 iTunes 上訂閱",
|
"podcast.subscribeOnItunes": "在 iTunes 上訂閱",
|
||||||
"podcast.subscribedOnItunes": "已訂閱",
|
"podcast.subscribedOnItunes": "已訂閱",
|
||||||
"podcast.itunesStore": "iTunes Store", // Follows brand term
|
"podcast.itunesStore": "iTunes Store",
|
||||||
"podcast.episodes": "單集",
|
"podcast.episodes": "單集",
|
||||||
"podcast.playEpisode": "播放單集",
|
"podcast.playEpisode": "播放單集",
|
||||||
"podcast.website": "Podcast 網站",
|
"podcast.website": "Podcast 網站",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "加入資料庫",
|
"action.addToLibrary": "加入資料庫",
|
||||||
"action.addToLibrary.success": "成功加入資料庫",
|
"action.addToLibrary.success": "成功加入資料庫",
|
||||||
"action.addToLibrary.error": "加入資料庫的過程發生錯誤",
|
"action.addToLibrary.error": "加入資料庫的過程發生錯誤",
|
||||||
|
@ -192,21 +189,34 @@
|
||||||
"action.tray.show": "顯示",
|
"action.tray.show": "顯示",
|
||||||
"action.update": "更新",
|
"action.update": "更新",
|
||||||
"action.copy": "複製",
|
"action.copy": "複製",
|
||||||
"action.newpreset": "新增預設", // Equalizer Preset
|
"action.newpreset": "新增預設",
|
||||||
"action.deletepreset": "刪除預設", // Equalizer Preset
|
"action.deletepreset": "刪除預設",
|
||||||
|
"action.open": "開啟",
|
||||||
// Language optgroups
|
"settings.header.general": "一般",
|
||||||
|
"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": "未分類",
|
||||||
|
"settings.option.general.updateCider": "更新 Cider",
|
||||||
// Update Cider
|
"settings.option.general.updateCider.branch": "Cider 更新通道",
|
||||||
"settings.option.general.updateCider": "更新 Cider", // Button
|
"settings.option.general.updateCider.branch.description": "選擇您要接收 Cider 軟體更新的通道",
|
||||||
|
"settings.option.general.updateCider.branch.main": "穩定版(建議)",
|
||||||
// Settings - Audio
|
"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.quality": "音訊品質", // Dropdown
|
"settings.option.audio.volumeStep": "音量改變量",
|
||||||
|
"settings.option.audio.maxVolume": "最大音量",
|
||||||
|
"settings.option.audio.quality": "音訊品質",
|
||||||
"settings.header.audio.quality.hireslossless": "高品質無損壓縮",
|
"settings.header.audio.quality.hireslossless": "高品質無損壓縮",
|
||||||
"settings.header.audio.quality.hireslossless.description": "(高達 24-bit/192 kHz)",
|
"settings.header.audio.quality.hireslossless.description": "(高達 24-bit/192 kHz)",
|
||||||
"settings.header.audio.quality.lossless": "無損壓縮",
|
"settings.header.audio.quality.lossless": "無損壓縮",
|
||||||
|
@ -215,114 +225,131 @@
|
||||||
"settings.header.audio.quality.high": "高品質",
|
"settings.header.audio.quality.high": "高品質",
|
||||||
"settings.header.audio.quality.standard": "高效率",
|
"settings.header.audio.quality.standard": "高效率",
|
||||||
"settings.header.audio.quality.auto": "自動",
|
"settings.header.audio.quality.auto": "自動",
|
||||||
"settings.option.audio.seamlessTransition": "無間斷播放", // Toggle
|
"settings.option.audio.seamlessTransition": "無間斷播放",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "進階音訊功能", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality": "進階音訊功能",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "啟用 AudioContext 將開啟類似音訊平衡和等化器的進階設定。但這並不一定適合每部電腦,可能會發生音樂卡頓。",
|
"settings.option.audio.enableAdvancedFunctionality.description": "開啟 AudioContext 將開啟類似音訊平衡和等化器的進階設定。但這並不一定適合每部電腦,可能會發生音樂卡頓。",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 數位增強音訊處理™️", // Toggle
|
"settings.option.audio.audioLab": "Cider 音訊實驗室",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "將欺騙您的大腦讓您感受到近似保真壓縮的音質。| 由 Maikiwi 設計",
|
"settings.option.audio.audioLab.description": "包含由 Cider 開發團隊進行的各種音訊改善功能。",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "數位增強音訊處理設定", // Toggle
|
"settings.warn.audioLab.withoutAF": "使用 Cider 音訊實驗室需要開啟進階音訊功能才能使用。" ,
|
||||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "將更改音訊處理的激進/振奮程度(增強選項有可能會引起雜訊)",
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmth": "模擬溫暖",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "以 Korg Nutube 6P1 為設計的模擬溫暖。",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "改變模擬溫暖模組處理的強度。",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "溫和",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "溫暖",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 數位增強音訊處理™️",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "將欺騙您的大腦讓您感受到近似保真壓縮的音質。",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "數位增強音訊處理設定",
|
||||||
|
"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": "音訊平衡", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "音訊平衡",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "將平衡輕柔和響亮的歌曲,建立更統一舒適的聆聽體驗。",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "將平衡輕柔和響亮的歌曲,建立更統一舒適的聆聽體驗。",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "空間音訊", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "空間音訊",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "將音訊進行空間化處理來製造一個更立體的聆聽體驗(註:此功能不是官方的杜比全景聲)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "將音訊進行空間化處理來製造一個更立體的聆聽體驗(註:此功能不是官方的杜比全景聲)",
|
||||||
|
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cider 空間音訊效果",
|
||||||
// Settings - Visual
|
"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": "視窗背景樣式", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "視窗背景樣式",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "空白",
|
"settings.header.visual.windowBackgroundStyle.none": "空白",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "專輯封面",
|
"settings.header.visual.windowBackgroundStyle.artwork": "專輯封面",
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "圖片",
|
"settings.header.visual.windowBackgroundStyle.image": "圖片",
|
||||||
"settings.option.visual.animatedArtwork": "動態專輯封面", // Dropdown
|
"settings.option.visual.animatedArtwork": "動態專輯封面",
|
||||||
"settings.header.visual.animatedArtwork.always": "總是顯示",
|
"settings.header.visual.animatedArtwork.always": "總是顯示",
|
||||||
"settings.header.visual.animatedArtwork.limited": "只在藝人頁面和專輯封面顯示",
|
"settings.header.visual.animatedArtwork.limited": "只在藝人頁面和專輯封面顯示",
|
||||||
"settings.header.visual.animatedArtwork.disable": "關閉",
|
"settings.header.visual.animatedArtwork.disable": "關閉",
|
||||||
"settings.option.visual.animatedArtworkQuality": "動態專輯封面品質", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "動態專輯封面品質",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "低",
|
"settings.header.visual.animatedArtworkQuality.low": "低",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "中",
|
"settings.header.visual.animatedArtworkQuality.medium": "中",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "高",
|
"settings.header.visual.animatedArtworkQuality.high": "高",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "非常高",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "非常高",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "極高",
|
"settings.header.visual.animatedArtworkQuality.extreme": "極高",
|
||||||
"settings.option.visual.animatedWindowBackground": "動態視窗背景", // Toggle
|
"settings.option.visual.animatedWindowBackground": "動態視窗背景",
|
||||||
"settings.option.visual.hardwareAcceleration": "硬體加速", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "硬體加速",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "需要重新啟動 Cider 才會套用",
|
"settings.option.visual.hardwareAcceleration.description": "需要重新啟動 Cider 才會套用",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "預設",
|
"settings.header.visual.hardwareAcceleration.default": "預設",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
"settings.header.visual.theme": "主題",
|
"settings.header.visual.theme": "主題",
|
||||||
// Settings - Visual - Theme name
|
"settings.option.visual.theme.github.download": "從 GitHub 網址安裝",
|
||||||
"settings.option.visual.theme.default": "Cider",
|
"settings.option.visual.theme.github.explore": "探索 GitHub 上的主題",
|
||||||
"settings.option.visual.theme.dark": "暗黑模式",
|
"settings.prompt.visual.theme.github.URL": "輸入你要安裝的主題網址",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.notyf.visual.theme.install.success": "主題成功安裝",
|
||||||
"settings.option.visual.showPersonalInfo": "顯示個人檔案", // Toggle
|
"settings.notyf.visual.theme.install.error": "主題安裝失敗",
|
||||||
|
"settings.header.visual.plugin": "套件",
|
||||||
// Settings - General (Reserved)
|
"settings.option.visual.plugin.github.download": "從 GitHub 網址安裝",
|
||||||
"settings.header.general": "一般",
|
"settings.option.visual.plugin.github.explore": "探索 GitHub 套件",
|
||||||
"settings.header.general.description": "調整 Cider 的一般設定",
|
"settings.header.visual.plugin.github.page": "來自 GitHub 的套件",
|
||||||
|
"settings.option.visual.plugin.github.install.confirm": "你確定要安裝 {{ repo }}?",
|
||||||
// Settings - Lyrics
|
"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.dark": "午夜黑",
|
||||||
|
"settings.option.visual.showPersonalInfo": "顯示個人檔案",
|
||||||
|
"settings.header.window": "視窗",
|
||||||
|
"settings.header.window.description": "調整 Cider 的視窗設定",
|
||||||
|
"settings.option.window.openOnStartup": "開機時,啟動 Cider ",
|
||||||
|
"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 歌詞", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "開啟 Musixmatch 歌詞",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "啟用K歌模式(僅限Musixmatch)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "開啟K歌模式(僅限Musixmatch)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌詞語言偏好", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌詞語言偏好",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "播放 MV 時使用 YouTube 歌詞", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "播放 MV 時使用 YouTube 歌詞",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "外部連接",
|
"settings.header.connectivity": "外部連接",
|
||||||
"settings.header.connectivity.description": "調整 Cider 與外部的連接",
|
"settings.header.connectivity.description": "調整 Cider 與外部的連接",
|
||||||
"settings.option.connectivity.discordRPC": "Discord 動態", // Dropdown
|
"settings.option.connectivity.discordRPC": "Discord 動態",
|
||||||
"settings.option.connectivity.playbackNotifications": "歌曲播放通知", // Toggle
|
"settings.option.connectivity.playbackNotifications": "歌曲播放通知",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.header.connectivity.discordRPC.cider": "顯示正在使用 'Cider'",
|
||||||
"settings.header.connectivity.discordRPC.cider": "顯示正在玩 'Cider'",
|
"settings.header.connectivity.discordRPC.appleMusic": "顯示正在使用 'Apple Music'",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "顯示正在玩 'Apple Music'",
|
"settings.option.connectivity.discordRPC.clearOnPause": "暫停時清除 Discord 動態",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "暫停時清除 Discord 動態", // Toggle
|
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling 記錄",
|
||||||
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling 記錄", // Option to Connect
|
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble 延遲 (%)",
|
"settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble 延遲 (%)",
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "啟用 LastFM 目前聆聽", // Toggle
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "開啟 LastFM 目前聆聽",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "從歌名中移除藝人推薦 (LastFM)",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "從歌名中移除客串藝人 (LastFM)",
|
||||||
// Refer to term.connect for the connect button
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "不記錄單曲循環 (LastFM)",
|
||||||
|
"settings.header.debug": "除錯",
|
||||||
// Settings - Experimental
|
"settings.option.debug.copy_log": "複製執行紀錄檔至剪貼簿",
|
||||||
|
"settings.option.debug.openAppData": "打開 Cider 資料夾",
|
||||||
"settings.header.experimental": "實驗性功能",
|
"settings.header.experimental": "實驗性功能",
|
||||||
"settings.header.experimental.description": "調整 Cider 的實驗性功能",
|
"settings.header.experimental.description": "調整 Cider 的實驗性功能",
|
||||||
"settings.option.experimental.compactUI": "使用緊密的介面設計", // Toggle
|
"settings.option.experimental.unknownPlugin": "未知來源",
|
||||||
"settings.option.experimental.closeButtonBehaviour": "關閉按鈕操作", // Dropdown
|
"settings.option.experimental.unknownPlugin.description": "允許從 Cider 來源以外的 repo 安裝套件",
|
||||||
"settings.option.experimental.close_button_hide": "關閉按鈕將 Cider 隱藏至系統列",
|
"settings.option.experimental.compactUI": "使用緊密的介面設計",
|
||||||
"settings.option.experimental.copy_log": "複製執行紀錄檔至剪貼簿",
|
"settings.option.experimental.closeButtonBehaviour": "關閉按鈕操作",
|
||||||
|
"settings.option.window.close_button_hide": "關閉按鈕將 Cider 隱藏至系統列",
|
||||||
"settings.option.experimental.inline_playlists": "將播放列表做為行内元素顯示",
|
"settings.option.experimental.inline_playlists": "將播放列表做為行内元素顯示",
|
||||||
|
"settings.option.advanced.playlistTrackMapping": "播放列表追蹤映射",
|
||||||
// Refer to term.disabled & term.enabled
|
"settings.option.advanced.playlistTrackMapping.description": "開啟對播放列表的深度掃描,以確定歌曲在哪些播放列表中。但播放列表快取時間會顯著增加。",
|
||||||
// Spatialization Menu
|
"settings.option.visual.transparent": "透明視窗框架",
|
||||||
"spatial.notTurnedOn": "空間音訊目前是關閉狀態,請先啟用再使用。",
|
"settings.option.visual.transparent.description": "需主題有支援透明框架,且須重新啟動才會套用。",
|
||||||
"spatial.spatialProperties" : "空間音訊屬性設定",
|
"spatial.notTurnedOn": "空間音訊目前是關閉狀態,請先開啟再使用。",
|
||||||
"spatial.width" : "寬度",
|
"spatial.spatialProperties": "空間音訊屬性設定",
|
||||||
"spatial.height" : "高度",
|
"spatial.width": "寬度",
|
||||||
"spatial.depth" : "深度",
|
"spatial.height": "高度",
|
||||||
"spatial.gain" : "增益",
|
"spatial.depth": "深度",
|
||||||
"spatial.roomMaterials" : "空間材質",
|
"spatial.gain": "增益",
|
||||||
"spatial.roomDimensions" : "空間尺寸",
|
"spatial.roomMaterials": "空間材質",
|
||||||
"spatial.roomPositions" : "空間位置",
|
"spatial.roomDimensions": "空間尺寸",
|
||||||
"spatial.setDimensions" : "設定尺寸",
|
"spatial.roomPositions": "空間位置",
|
||||||
"spatial.setPositions" : "套用設定",
|
"spatial.setDimensions": "設定尺寸",
|
||||||
"spatial.up" : "上",
|
"spatial.setPositions": "套用設定",
|
||||||
"spatial.front" : "前",
|
"spatial.up": "上",
|
||||||
"spatial.left" : "左",
|
"spatial.front": "前",
|
||||||
"spatial.right" : "右",
|
"spatial.left": "左",
|
||||||
"spatial.back" : "後",
|
"spatial.right": "右",
|
||||||
"spatial.down" : "下",
|
"spatial.back": "後",
|
||||||
"spatial.listener" : "聽衆",
|
"spatial.down": "下",
|
||||||
"spatial.audioSource" : "音訊來源",
|
"spatial.listener": "聽衆",
|
||||||
|
"spatial.audioSource": "音訊來源",
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "未開發完成的功能",
|
"settings.header.unfinished": "未開發完成的功能",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "Cider 遠端操控",
|
"remote.web.title": "Cider 遠端操控",
|
||||||
"remote.web.description": "掃描以下的行動條碼以操控 Cider",
|
"remote.web.description": "掃描以下 QR Code 即可操控 Cider",
|
||||||
|
|
||||||
//About
|
|
||||||
"about.thanks": "著重感謝 Cider Collective 的成員以及所有為項目付出的貢獻者。"
|
"about.thanks": "著重感謝 Cider Collective 的成員以及所有為項目付出的貢獻者。"
|
||||||
}
|
}
|
|
@ -1,25 +1,15 @@
|
||||||
{
|
{
|
||||||
// i18n Info
|
"i18n.languageName": "廣東話(香港)",
|
||||||
"i18n.languageName": "廣東話(香港)", // name of language in native language
|
"i18n.languageNameEnglish": "Cantonese (Hong Kong)",
|
||||||
"i18n.languageNameEnglish": "Cantonese (Hong Kong)", // name of language in English
|
"i18n.category": "main",
|
||||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
"i18n.authors": "@tszngaiyip @strikesnc",
|
||||||
"i18n.authors": "@tszngaiyip @strikesnc", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
|
||||||
|
|
||||||
// App info
|
|
||||||
"app.name": "Cider",
|
"app.name": "Cider",
|
||||||
|
|
||||||
"date.format": "${y}年${m}月${d}日",
|
"date.format": "${y}年${m}月${d}日",
|
||||||
|
|
||||||
// Dialogs
|
|
||||||
"dialog.cancel": "取消",
|
"dialog.cancel": "取消",
|
||||||
"dialog.ok": "確認",
|
"dialog.ok": "確認",
|
||||||
|
|
||||||
// Notification
|
|
||||||
"notification.updatingLibrarySongs": "更新緊資料庫嘅歌曲...",
|
"notification.updatingLibrarySongs": "更新緊資料庫嘅歌曲...",
|
||||||
"notification.updatingLibraryAlbums": "更新緊資料庫嘅專輯...",
|
"notification.updatingLibraryAlbums": "更新緊資料庫嘅專輯...",
|
||||||
"notification.updatingLibraryArtists": "更新緊資料庫嘅藝人...",
|
"notification.updatingLibraryArtists": "更新緊資料庫嘅藝人...",
|
||||||
|
|
||||||
// Terms
|
|
||||||
"term.appleInc": "Apple Inc.",
|
"term.appleInc": "Apple Inc.",
|
||||||
"term.appleMusic": "Apple Music",
|
"term.appleMusic": "Apple Music",
|
||||||
"term.applePodcasts": "Apple Podcasts",
|
"term.applePodcasts": "Apple Podcasts",
|
||||||
|
@ -122,28 +112,23 @@
|
||||||
"term.contributors": "合作人",
|
"term.contributors": "合作人",
|
||||||
"term.equalizer": "均衡器 (EQ)",
|
"term.equalizer": "均衡器 (EQ)",
|
||||||
"term.reset": "重設",
|
"term.reset": "重設",
|
||||||
"term.tracks": "首歌", // Assume x amount of tracks. e.g. 50 tracks
|
"term.tracks": "首歌",
|
||||||
"term.videos": "影片",
|
"term.videos": "影片",
|
||||||
"term.menu": "選項",
|
"term.menu": "選項",
|
||||||
"term.check": "檢查",
|
"term.check": "檢查",
|
||||||
"term.aboutArtist": "關於 {{artistName}}", // e.g. 'About Doja Cat'
|
"term.aboutArtist": "關於 {{artistName}}",
|
||||||
"term.topResult": "熱門搜尋結果", // Search Results
|
"term.topResult": "熱門搜尋結果",
|
||||||
"term.sharedPlaylists": "播放清單", // Search Results
|
"term.sharedPlaylists": "播放清單",
|
||||||
"term.people": "個人檔案", // Search Results
|
"term.people": "個人檔案",
|
||||||
"term.newpreset.name": "新EQ範本嘅名", // Equalizer Preset
|
"term.newpreset.name": "新EQ範本嘅名",
|
||||||
"term.addedpreset": "新增咗",
|
"term.addedpreset": "新增咗",
|
||||||
"term.deletepreset.warn": "你係咪要刪除呢個範本?",
|
"term.deletepreset.warn": "你係咪要刪除呢個範本?",
|
||||||
"term.deletedpreset": "刪除咗",
|
"term.deletedpreset": "刪除咗",
|
||||||
"term.musicVideos": "MV", // Search page friendlyTypes
|
"term.musicVideos": "MV",
|
||||||
"term.stations": "電台",
|
"term.stations": "電台",
|
||||||
//"term.curators": "Curators",
|
|
||||||
//"term.appleCurators": "Apple Curators",
|
|
||||||
"term.radioShows": "電台單集",
|
"term.radioShows": "電台單集",
|
||||||
"term.recordLabels": "唱片公司",
|
"term.recordLabels": "唱片公司",
|
||||||
"term.videoExtras": "相關嘅片",
|
"term.videoExtras": "相關嘅片",
|
||||||
//"term.top": "Top",
|
|
||||||
|
|
||||||
// Home
|
|
||||||
"home.title": "主頁",
|
"home.title": "主頁",
|
||||||
"home.recentlyPlayed": "呢排播左",
|
"home.recentlyPlayed": "呢排播左",
|
||||||
"home.recentlyAdded": "呢排加嘅",
|
"home.recentlyAdded": "呢排加嘅",
|
||||||
|
@ -152,14 +137,10 @@
|
||||||
"home.madeForYou": "為你而整",
|
"home.madeForYou": "為你而整",
|
||||||
"home.friendsListeningTo": "你啲Friend聽緊",
|
"home.friendsListeningTo": "你啲Friend聽緊",
|
||||||
"home.followedArtists": "Follow左嘅藝人",
|
"home.followedArtists": "Follow左嘅藝人",
|
||||||
|
|
||||||
// Errors
|
|
||||||
"error.appleMusicSubRequired": "需要訂閱Apple Music先可以用Cider。",
|
"error.appleMusicSubRequired": "需要訂閱Apple Music先可以用Cider。",
|
||||||
"error.connectionError": "連接唔到Apple Music。",
|
"error.connectionError": "連接唔到Apple Music。",
|
||||||
"error.noResults": "冇結果。",
|
"error.noResults": "冇結果。",
|
||||||
"error.noResults.description": "重新搵過啦。",
|
"error.noResults.description": "重新搵過啦。",
|
||||||
|
|
||||||
// Podcasts
|
|
||||||
"podcast.followOnCider": "喺Cider上Follow",
|
"podcast.followOnCider": "喺Cider上Follow",
|
||||||
"podcast.followedOnCider": "喺Cider上Follow左",
|
"podcast.followedOnCider": "喺Cider上Follow左",
|
||||||
"podcast.subscribeOnItunes": "喺iTunes上訂閱",
|
"podcast.subscribeOnItunes": "喺iTunes上訂閱",
|
||||||
|
@ -168,8 +149,6 @@
|
||||||
"podcast.episodes": "單集",
|
"podcast.episodes": "單集",
|
||||||
"podcast.playEpisode": "播呢集",
|
"podcast.playEpisode": "播呢集",
|
||||||
"podcast.website": "Podcast 網頁",
|
"podcast.website": "Podcast 網頁",
|
||||||
|
|
||||||
// Actions
|
|
||||||
"action.addToLibrary": "加入資料庫",
|
"action.addToLibrary": "加入資料庫",
|
||||||
"action.addToLibrary.success": "加入咗資料庫",
|
"action.addToLibrary.success": "加入咗資料庫",
|
||||||
"action.addToLibrary.error": "加入唔到資料庫",
|
"action.addToLibrary.error": "加入唔到資料庫",
|
||||||
|
@ -215,101 +194,76 @@
|
||||||
"action.tray.show": "顯示",
|
"action.tray.show": "顯示",
|
||||||
"action.update": "更新",
|
"action.update": "更新",
|
||||||
"action.copy": "複製",
|
"action.copy": "複製",
|
||||||
"action.newpreset": "新增範本", // Equalizer Preset
|
"action.newpreset": "新增範本",
|
||||||
"action.deletepreset": "刪除範本",
|
"action.deletepreset": "刪除範本",
|
||||||
|
|
||||||
// Settings - General
|
|
||||||
"settings.header.general": "一般",
|
"settings.header.general": "一般",
|
||||||
"settings.header.general.description": "調整Cider嘅一般設定",
|
"settings.header.general.description": "調整Cider嘅一般設定",
|
||||||
"settings.option.general.language": "語言",
|
"settings.option.general.language": "語言",
|
||||||
|
|
||||||
// Language optgroups
|
|
||||||
"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": "未分類",
|
||||||
|
"settings.option.general.updateCider": "更新 Cider",
|
||||||
// Update Cider
|
|
||||||
"settings.option.general.updateCider": "更新 Cider", // Button
|
|
||||||
|
|
||||||
// Settings - Audio
|
|
||||||
"settings.header.audio": "音訊",
|
"settings.header.audio": "音訊",
|
||||||
"settings.header.audio.description": "調整Cider嘅音訊設定",
|
"settings.header.audio.description": "調整Cider嘅音訊設定",
|
||||||
"settings.option.audio.quality": "音質", // Dropdown
|
"settings.option.audio.quality": "音質",
|
||||||
"settings.header.audio.quality.high": "質素優先",
|
"settings.header.audio.quality.high": "質素優先",
|
||||||
"settings.header.audio.quality.low": "流暢度優先",
|
"settings.header.audio.quality.low": "流暢度優先",
|
||||||
"settings.header.audio.quality.auto": "自動",
|
"settings.header.audio.quality.auto": "自動",
|
||||||
"settings.option.audio.seamlessTransition": "無縫播放", // Toggle
|
"settings.option.audio.seamlessTransition": "無縫播放",
|
||||||
"settings.option.audio.enableAdvancedFunctionality": "進階功能", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality": "進階功能",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.description": "啟用AudioContext,解鎖類似音量平衡和均衡器嘅進階功能,但係會喺部分電腦造成音樂Lag機。",
|
"settings.option.audio.enableAdvancedFunctionality.description": "啟用AudioContext,解鎖類似音量平衡和均衡器嘅進階功能,但係會喺部分電腦造成音樂Lag機。",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "音量平衡", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "音量平衡",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "平衡輕柔同響亮嘅歌曲,令你有統一嘅聆聽體驗。",
|
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "平衡輕柔同響亮嘅歌曲,令你有統一嘅聆聽體驗。",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "空間音訊", // Toggle
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "空間音訊",
|
||||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "空間化音訊,製造一個更立體嘅聆聽體驗(注意:呢個功能唔係官方嘅杜比全景聲)",
|
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "空間化音訊,製造一個更立體嘅聆聽體驗(注意:呢個功能唔係官方嘅杜比全景聲)",
|
||||||
|
|
||||||
// Settings - Visual
|
|
||||||
"settings.header.visual": "外觀",
|
"settings.header.visual": "外觀",
|
||||||
"settings.header.visual.description": "調整Cider嘅外觀",
|
"settings.header.visual.description": "調整Cider嘅外觀",
|
||||||
"settings.option.visual.windowBackgroundStyle": "視窗背景樣式", // Toggle
|
"settings.option.visual.windowBackgroundStyle": "視窗背景樣式",
|
||||||
"settings.header.visual.windowBackgroundStyle.none": "空白",
|
"settings.header.visual.windowBackgroundStyle.none": "空白",
|
||||||
"settings.header.visual.windowBackgroundStyle.artwork": "專輯封面",
|
"settings.header.visual.windowBackgroundStyle.artwork": "專輯封面",
|
||||||
"settings.header.visual.windowBackgroundStyle.image": "圖片",
|
"settings.header.visual.windowBackgroundStyle.image": "圖片",
|
||||||
"settings.option.visual.animatedArtwork": "動態專輯封面", // Dropdown
|
"settings.option.visual.animatedArtwork": "動態專輯封面",
|
||||||
"settings.header.visual.animatedArtwork.always": "總是顯示",
|
"settings.header.visual.animatedArtwork.always": "總是顯示",
|
||||||
"settings.header.visual.animatedArtwork.limited": "淨係喺藝人頁面同專輯封面顯示",
|
"settings.header.visual.animatedArtwork.limited": "淨係喺藝人頁面同專輯封面顯示",
|
||||||
"settings.header.visual.animatedArtwork.disable": "熄左佢",
|
"settings.header.visual.animatedArtwork.disable": "熄左佢",
|
||||||
"settings.option.visual.animatedArtworkQuality": "動態專輯封面品質", // Dropdown
|
"settings.option.visual.animatedArtworkQuality": "動態專輯封面品質",
|
||||||
"settings.header.visual.animatedArtworkQuality.low": "低",
|
"settings.header.visual.animatedArtworkQuality.low": "低",
|
||||||
"settings.header.visual.animatedArtworkQuality.medium": "中",
|
"settings.header.visual.animatedArtworkQuality.medium": "中",
|
||||||
"settings.header.visual.animatedArtworkQuality.high": "高",
|
"settings.header.visual.animatedArtworkQuality.high": "高",
|
||||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "非常高",
|
"settings.header.visual.animatedArtworkQuality.veryHigh": "非常高",
|
||||||
"settings.header.visual.animatedArtworkQuality.extreme": "極高",
|
"settings.header.visual.animatedArtworkQuality.extreme": "極高",
|
||||||
"settings.option.visual.animatedWindowBackground": "動態視窗背景", // Toggle
|
"settings.option.visual.animatedWindowBackground": "動態視窗背景",
|
||||||
"settings.option.visual.hardwareAcceleration": "硬體加速", // Dropdown
|
"settings.option.visual.hardwareAcceleration": "硬體加速",
|
||||||
"settings.option.visual.hardwareAcceleration.description": "需要重開Cider先會生效",
|
"settings.option.visual.hardwareAcceleration.description": "需要重開Cider先會生效",
|
||||||
"settings.header.visual.hardwareAcceleration.default": "預設",
|
"settings.header.visual.hardwareAcceleration.default": "預設",
|
||||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||||
"settings.header.visual.theme": "主題",
|
"settings.header.visual.theme": "主題",
|
||||||
|
|
||||||
// Settings - Visual - Theme name
|
|
||||||
"settings.option.visual.theme.default": "預設",
|
"settings.option.visual.theme.default": "預設",
|
||||||
"settings.option.visual.theme.dark": "黑色",
|
"settings.option.visual.theme.dark": "黑色",
|
||||||
// Refer to term.disabled for the disabled option
|
"settings.option.visual.showPersonalInfo": "顯示個人檔案",
|
||||||
"settings.option.visual.showPersonalInfo": "顯示個人檔案", // Toggle
|
|
||||||
|
|
||||||
// Settings - Lyrics
|
|
||||||
"settings.header.lyrics": "歌詞",
|
"settings.header.lyrics": "歌詞",
|
||||||
"settings.header.lyrics.description": "調整Cider嘅歌詞設定",
|
"settings.header.lyrics.description": "調整Cider嘅歌詞設定",
|
||||||
"settings.option.lyrics.enableMusixmatch": "啟用 Musixmatch 歌詞", // Toggle
|
"settings.option.lyrics.enableMusixmatch": "啟用 Musixmatch 歌詞",
|
||||||
"settings.option.lyrics.enableMusixmatchKaraoke": "開啟唱K模式(僅限Musixmatch)", // Toggle
|
"settings.option.lyrics.enableMusixmatchKaraoke": "開啟唱K模式(僅限Musixmatch)",
|
||||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌詞語言偏好", // Dropdown
|
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌詞語言偏好",
|
||||||
"settings.option.lyrics.enableYoutubeLyrics": "播放MV嘅時候用YouTube字幕", // Toggle
|
"settings.option.lyrics.enableYoutubeLyrics": "播放MV嘅時候用YouTube字幕",
|
||||||
|
|
||||||
// Settings - Connectivity
|
|
||||||
"settings.header.connectivity": "外部連結",
|
"settings.header.connectivity": "外部連結",
|
||||||
"settings.header.connectivity.description": "調整Cider同外部嘅連結",
|
"settings.header.connectivity.description": "調整Cider同外部嘅連結",
|
||||||
"settings.option.connectivity.discordRPC": "Discord 狀態", // Dropdown
|
"settings.option.connectivity.discordRPC": "Discord 狀態",
|
||||||
"settings.option.connectivity.playbackNotifications": "喺播歌嘅時候通知你", // Toggle
|
"settings.option.connectivity.playbackNotifications": "喺播歌嘅時候通知你",
|
||||||
// Refer to term.disabled for the disabled option
|
|
||||||
"settings.header.connectivity.discordRPC.cider": "顯示為'Cider'",
|
"settings.header.connectivity.discordRPC.cider": "顯示為'Cider'",
|
||||||
"settings.header.connectivity.discordRPC.appleMusic": "顯示為'Apple Music'",
|
"settings.header.connectivity.discordRPC.appleMusic": "顯示為'Apple Music'",
|
||||||
"settings.option.connectivity.discordRPC.clearOnPause": "暫停時清除 Discord 狀態", // Toggle
|
"settings.option.connectivity.discordRPC.clearOnPause": "暫停時清除 Discord 狀態",
|
||||||
"settings.option.connectivity.lastfmScrobble": "Last.FM Scrobbling 記錄", // Option to Connect
|
"settings.option.connectivity.lastfmScrobble": "Last.FM Scrobbling 記錄",
|
||||||
"settings.option.connectivity.lastfmScrobble.delay": "Last.FM Scrobble 延遲 (%)",
|
"settings.option.connectivity.lastfmScrobble.delay": "Last.FM Scrobble 延遲 (%)",
|
||||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "啟用 Last.FM 正在播放",
|
"settings.option.connectivity.lastfmScrobble.nowPlaying": "啟用 Last.FM 正在播放",
|
||||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "從歌名中移除藝人推薦 (Last.FM)",
|
"settings.option.connectivity.lastfmScrobble.removeFeatured": "從歌名中移除藝人推薦 (Last.FM)",
|
||||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filter looped track (Last.FM)",
|
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filter looped track (Last.FM)",
|
||||||
// Refer to term.connect for the connect button
|
|
||||||
|
|
||||||
// Settings - Experimental
|
|
||||||
"settings.header.experimental": "實驗性功能",
|
"settings.header.experimental": "實驗性功能",
|
||||||
"settings.header.experimental.description": "調整Cider嘅實驗性功能",
|
"settings.header.experimental.description": "調整Cider嘅實驗性功能",
|
||||||
"settings.option.experimental.compactUI": "逼啲既 UI", // Toggle
|
"settings.option.experimental.compactUI": "逼啲既 UI",
|
||||||
"settings.option.experimental.close_button_hide": "㩒交叉制嚟隱藏 Cider",
|
"settings.option.window.close_button_hide": "㩒交叉制嚟隱藏 Cider",
|
||||||
"settings.option.experimental.copy_log": "將log複製喺剪貼簿",
|
"settings.option.experimental.copy_log": "將log複製喺剪貼簿",
|
||||||
//"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
|
|
||||||
|
|
||||||
// Refer to term.disabled & term.enabled
|
|
||||||
// Spatialization Menu
|
|
||||||
"spatial.notTurnedOn": "唔該喺設定入面啟用左空間音訊先。",
|
"spatial.notTurnedOn": "唔該喺設定入面啟用左空間音訊先。",
|
||||||
"spatial.spatialProperties": "空間音訊屬性",
|
"spatial.spatialProperties": "空間音訊屬性",
|
||||||
"spatial.width": "幾闊",
|
"spatial.width": "幾闊",
|
||||||
|
@ -329,14 +283,8 @@
|
||||||
"spatial.down": "下面",
|
"spatial.down": "下面",
|
||||||
"spatial.listener": "觀眾",
|
"spatial.listener": "觀眾",
|
||||||
"spatial.audioSource": "音源",
|
"spatial.audioSource": "音源",
|
||||||
|
|
||||||
// Settings - Unfinished
|
|
||||||
"settings.header.unfinished": "未搞掂",
|
"settings.header.unfinished": "未搞掂",
|
||||||
|
|
||||||
// Web Remote
|
|
||||||
"remote.web.title": "遙距控制 Cider",
|
"remote.web.title": "遙距控制 Cider",
|
||||||
"remote.web.description": "Scan 呢個 QR Code 去控制 Cider",
|
"remote.web.description": "Scan 呢個 QR Code 去控制 Cider",
|
||||||
|
|
||||||
// About
|
|
||||||
"about.thanks": "多謝 Cider Collective 同埋所有合作人作出嘅貢獻。"
|
"about.thanks": "多謝 Cider Collective 同埋所有合作人作出嘅貢獻。"
|
||||||
}
|
}
|
|
@ -4,6 +4,12 @@ import * as path from 'path';
|
||||||
import * as log from 'electron-log';
|
import * as log from 'electron-log';
|
||||||
import {utils} from './utils';
|
import {utils} from './utils';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file Creates App instance
|
||||||
|
* @author CiderCollective
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @namespace */
|
||||||
export class AppEvents {
|
export class AppEvents {
|
||||||
private protocols: string[] = [
|
private protocols: string[] = [
|
||||||
"ame",
|
"ame",
|
||||||
|
@ -17,6 +23,7 @@ export class AppEvents {
|
||||||
private tray: any = undefined;
|
private tray: any = undefined;
|
||||||
private i18n: any = undefined;
|
private i18n: any = undefined;
|
||||||
|
|
||||||
|
/** @constructor */
|
||||||
constructor() {
|
constructor() {
|
||||||
this.start();
|
this.start();
|
||||||
}
|
}
|
||||||
|
@ -90,6 +97,7 @@ export class AppEvents {
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
* Protocols
|
* Protocols
|
||||||
**********************************************************************************************************************/
|
**********************************************************************************************************************/
|
||||||
|
/** */
|
||||||
if (process.defaultApp) {
|
if (process.defaultApp) {
|
||||||
if (process.argv.length >= 2) {
|
if (process.argv.length >= 2) {
|
||||||
this.protocols.forEach((protocol: string) => {
|
this.protocols.forEach((protocol: string) => {
|
||||||
|
@ -112,6 +120,8 @@ export class AppEvents {
|
||||||
public ready(plug: any) {
|
public ready(plug: any) {
|
||||||
this.plugin = plug
|
this.plugin = plug
|
||||||
console.log('[AppEvents] App ready');
|
console.log('[AppEvents] App ready');
|
||||||
|
|
||||||
|
AppEvents.setLoginSettings()
|
||||||
}
|
}
|
||||||
|
|
||||||
public bwCreated() {
|
public bwCreated() {
|
||||||
|
@ -123,9 +133,18 @@ export class AppEvents {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if (process.platform === "darwin") {
|
||||||
|
app.setUserActivity('8R23J2835D.com.ciderapp.webremote.play', {
|
||||||
|
title: 'Web Remote',
|
||||||
|
description: 'Connect to your Web Remote',
|
||||||
|
}, "https://webremote.cider.sh")
|
||||||
|
}
|
||||||
|
|
||||||
this.InstanceHandler()
|
this.InstanceHandler()
|
||||||
|
if (process.platform !== "darwin") {
|
||||||
this.InitTray()
|
this.InitTray()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************************************************************
|
/***********************************************************************************************************************
|
||||||
* Private methods
|
* Private methods
|
||||||
|
@ -212,6 +231,7 @@ export class AppEvents {
|
||||||
app.quit()
|
app.quit()
|
||||||
} else if (utils.getWindow()) {
|
} else if (utils.getWindow()) {
|
||||||
if (utils.getWindow().isMinimized()) utils.getWindow().restore()
|
if (utils.getWindow().isMinimized()) utils.getWindow().restore()
|
||||||
|
utils.getWindow().show()
|
||||||
utils.getWindow().focus()
|
utils.getWindow().focus()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -307,10 +327,34 @@ export class AppEvents {
|
||||||
private static initLogging() {
|
private static initLogging() {
|
||||||
log.transports.console.format = '[{h}:{i}:{s}.{ms}] [{level}] {text}';
|
log.transports.console.format = '[{h}:{i}:{s}.{ms}] [{level}] {text}';
|
||||||
Object.assign(console, log.functions);
|
Object.assign(console, log.functions);
|
||||||
|
console.debug = function(...args: any[]) {
|
||||||
|
if (!app.isPackaged) {
|
||||||
|
log.debug(...args)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
ipcMain.on('fetch-log', (_event) => {
|
ipcMain.on('fetch-log', (_event) => {
|
||||||
const data = readFileSync(log.transports.file.getFile().path, {encoding: 'utf8', flag: 'r'});
|
const data = readFileSync(log.transports.file.getFile().path, {encoding: 'utf8', flag: 'r'});
|
||||||
clipboard.writeText(data)
|
clipboard.writeText(data)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set login settings
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
private static setLoginSettings() {
|
||||||
|
if (utils.getStoreValue('general.onStartup.enabled')) {
|
||||||
|
app.setLoginItemSettings({
|
||||||
|
openAtLogin: true,
|
||||||
|
path: app.getPath('exe'),
|
||||||
|
args: [`${utils.getStoreValue('general.onStartup.hidden') ? '--hidden' : ''}`]
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
app.setLoginItemSettings({
|
||||||
|
openAtLogin: false,
|
||||||
|
path: app.getPath('exe')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,22 +4,33 @@ import * as windowStateKeeper from "electron-window-state";
|
||||||
import * as express from "express";
|
import * as express from "express";
|
||||||
import * as getPort from "get-port";
|
import * as getPort from "get-port";
|
||||||
import {search} from "youtube-search-without-api-key";
|
import {search} from "youtube-search-without-api-key";
|
||||||
import {existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync} from "fs";
|
import {existsSync, rmSync, mkdirSync, readdirSync, readFileSync, writeFileSync, statSync} from "fs";
|
||||||
import {Stream} from "stream";
|
import {Stream} from "stream";
|
||||||
import {networkInterfaces} from "os";
|
import {networkInterfaces} from "os";
|
||||||
import * as mm from 'music-metadata';
|
import * as mm from 'music-metadata';
|
||||||
import fetch from 'electron-fetch'
|
import fetch from 'electron-fetch'
|
||||||
import {wsapi} from "./wsapi";
|
import {wsapi} from "./wsapi";
|
||||||
import {jsonc} from "jsonc";
|
|
||||||
import {AppImageUpdater, NsisUpdater} from "electron-updater";
|
|
||||||
import {utils} from './utils';
|
import {utils} from './utils';
|
||||||
|
import {Plugins} from "./plugins";
|
||||||
|
import {watch} from "chokidar";
|
||||||
|
const wallpaper = require('wallpaper');
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
|
import * as AdmZip from "adm-zip";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file Creates the BrowserWindow
|
||||||
|
* @author CiderCollective
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @namespace */
|
||||||
export class BrowserWindow {
|
export class BrowserWindow {
|
||||||
public static win: any | undefined = null;
|
public static win: any | undefined = null;
|
||||||
private devMode: boolean = !app.isPackaged;
|
private devMode: boolean = !app.isPackaged;
|
||||||
|
|
||||||
private audioStream: any = new Stream.PassThrough();
|
private audioStream: any = new Stream.PassThrough();
|
||||||
|
private headerSent: any = false;
|
||||||
|
private chromecastIP: any = [];
|
||||||
private clientPort: number = 0;
|
private clientPort: number = 0;
|
||||||
private remotePort: number = 6942;
|
private remotePort: number = 6942;
|
||||||
private EnvironmentVariables: object = {
|
private EnvironmentVariables: object = {
|
||||||
|
@ -30,6 +41,7 @@ export class BrowserWindow {
|
||||||
"pages/podcasts",
|
"pages/podcasts",
|
||||||
"pages/apple-account-settings",
|
"pages/apple-account-settings",
|
||||||
"pages/library-songs",
|
"pages/library-songs",
|
||||||
|
"pages/library-albums",
|
||||||
"pages/browse",
|
"pages/browse",
|
||||||
"pages/settings",
|
"pages/settings",
|
||||||
"pages/listen_now",
|
"pages/listen_now",
|
||||||
|
@ -44,12 +56,21 @@ export class BrowserWindow {
|
||||||
"pages/search",
|
"pages/search",
|
||||||
"pages/about",
|
"pages/about",
|
||||||
"pages/library-videos",
|
"pages/library-videos",
|
||||||
|
"pages/remote-pair",
|
||||||
|
"pages/themes-github",
|
||||||
|
"pages/plugins-github",
|
||||||
|
"pages/replay",
|
||||||
|
"pages/audiolabs",
|
||||||
|
"pages/zoo",
|
||||||
|
"pages/plugin-renderer",
|
||||||
"components/mediaitem-artwork",
|
"components/mediaitem-artwork",
|
||||||
"components/artwork-material",
|
"components/artwork-material",
|
||||||
"components/menu-panel",
|
"components/menu-panel",
|
||||||
"components/sidebar-playlist",
|
"components/sidebar-playlist",
|
||||||
"components/spatial-properties",
|
"components/spatial-properties",
|
||||||
"components/audio-settings",
|
"components/audio-settings",
|
||||||
|
"components/plugin-menu",
|
||||||
|
"components/audio-controls",
|
||||||
"components/qrcode-modal",
|
"components/qrcode-modal",
|
||||||
"components/equalizer",
|
"components/equalizer",
|
||||||
"components/add-to-playlist",
|
"components/add-to-playlist",
|
||||||
|
@ -66,9 +87,130 @@ export class BrowserWindow {
|
||||||
"components/listennow-child",
|
"components/listennow-child",
|
||||||
"components/mediaitem-mvview-sp",
|
"components/mediaitem-mvview-sp",
|
||||||
"components/animatedartwork-view",
|
"components/animatedartwork-view",
|
||||||
|
"components/listitem-horizontal",
|
||||||
"components/lyrics-view",
|
"components/lyrics-view",
|
||||||
"components/fullscreen",
|
"components/fullscreen",
|
||||||
"components/miniplayer",
|
"components/miniplayer",
|
||||||
|
"components/castmenu",
|
||||||
|
"components/artist-chip",
|
||||||
|
"components/hello-world",
|
||||||
|
],
|
||||||
|
appRoutes: [
|
||||||
|
{
|
||||||
|
page: "plugin-renderer",
|
||||||
|
component: `<plugin-renderer></plugin-renderer>`,
|
||||||
|
condition: "page == 'plugin-renderer'"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
page: "zoo",
|
||||||
|
component: "<cider-zoo></cider-zoo>",
|
||||||
|
condition: "page == 'zoo'"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
page: "podcasts",
|
||||||
|
component: `<apple-podcasts></apple-podcasts>`,
|
||||||
|
condition: `page == 'podcasts'`
|
||||||
|
}, {
|
||||||
|
page: "library-videos",
|
||||||
|
component: `<cider-library-videos></cider-library-videos>`,
|
||||||
|
condition: `page == 'library-videos'`
|
||||||
|
}, {
|
||||||
|
page: "apple-account-settings",
|
||||||
|
component: `<apple-account-settings></apple-account-settings>`,
|
||||||
|
condition: `page == 'apple-account-settings'`
|
||||||
|
}, {
|
||||||
|
page: "about",
|
||||||
|
component: `<about-page></about-page>`,
|
||||||
|
condition: `page == 'about'`
|
||||||
|
}, {
|
||||||
|
page: "cider-artist",
|
||||||
|
component: `<cider-artist :data="artistPage.data"></cider-artist>`,
|
||||||
|
condition: `page == 'artist-page' && artistPage.data.attributes`
|
||||||
|
}, {
|
||||||
|
page: "collection-list",
|
||||||
|
component: `<cider-collection-list :data="collectionList.response" :type="collectionList.type" :title="collectionList.title"></cider-collection-list>`,
|
||||||
|
condition: `page == 'collection-list'`
|
||||||
|
}, {
|
||||||
|
page: "home",
|
||||||
|
component: `<cider-home></cider-home>`,
|
||||||
|
condition: `page == 'home'`
|
||||||
|
}, {
|
||||||
|
page: "artist-feed",
|
||||||
|
component: `<cider-artist-feed></cider-artist-feed>`,
|
||||||
|
condition: `page == 'artist-feed'`
|
||||||
|
}, {
|
||||||
|
page: "playlist-inline",
|
||||||
|
component: `<playlist-inline :data="showingPlaylist"></playlist-inline>`,
|
||||||
|
condition: `modals.showPlaylist`
|
||||||
|
}, {
|
||||||
|
page: "playlist_",
|
||||||
|
component: `<cider-playlist :data="showingPlaylist"></cider-playlist>`,
|
||||||
|
condition: `page.includes('playlist_')`
|
||||||
|
}, {
|
||||||
|
page: "album_",
|
||||||
|
component: `<cider-playlist :data="showingPlaylist"></cider-playlist>`,
|
||||||
|
condition: `page.includes('album_')`
|
||||||
|
}, {
|
||||||
|
page: "recordLabel_",
|
||||||
|
component: `<cider-recordlabel :data="showingPlaylist"></cider-recordlabel>`,
|
||||||
|
condition: `page.includes('recordLabel_')`
|
||||||
|
}, {
|
||||||
|
page: "curator_",
|
||||||
|
component: `<cider-recordlabel :data="showingPlaylist"></cider-recordlabel>`,
|
||||||
|
condition: `page.includes('curator_')`
|
||||||
|
}, {
|
||||||
|
page: "browsepage",
|
||||||
|
component: `<cider-browse :data="browsepage"></cider-browse>`,
|
||||||
|
condition: `page == 'browse'`,
|
||||||
|
onEnter: `getBrowsePage();`
|
||||||
|
}, {
|
||||||
|
page: "listen_now",
|
||||||
|
component: `<cider-listen-now :data="listennow"></cider-listen-now>`,
|
||||||
|
condition: `page == 'listen_now'`,
|
||||||
|
onEnter: `getListenNow()`
|
||||||
|
}, {
|
||||||
|
page: "settings",
|
||||||
|
component: `<cider-settings></cider-settings>`,
|
||||||
|
condition: `page == 'settings'`
|
||||||
|
}, {
|
||||||
|
page: "search",
|
||||||
|
component: `<cider-search :search="search"></cider-search>`,
|
||||||
|
condition: `page == 'search'`
|
||||||
|
}, {
|
||||||
|
page: "library-songs",
|
||||||
|
component: `<cider-library-songs :data="library.songs"></cider-library-songs>`,
|
||||||
|
condition: `page == 'library-songs'`,
|
||||||
|
onEnter: `getLibrarySongsFull()`
|
||||||
|
}, {
|
||||||
|
page: "library-albums",
|
||||||
|
component: `<cider-library-albums :data="library.songs"></cider-library-albums>`,
|
||||||
|
condition: `page == 'library-albums'`,
|
||||||
|
onEnter: `getLibraryAlbumsFull(null, 1); getAlbumSort(); searchLibraryAlbums(1); getLibrarySongsFull() ;searchLibraryAlbums(1);`
|
||||||
|
}, {
|
||||||
|
page: "appleCurator",
|
||||||
|
component: `<cider-applecurator :data="appleCurator"></cider-applecurator>`,
|
||||||
|
condition: `page.includes('appleCurator')`
|
||||||
|
}, {
|
||||||
|
page: "themes-github",
|
||||||
|
component: `<themes-github></themes-github>`,
|
||||||
|
condition: `page == 'themes-github'`
|
||||||
|
}, {
|
||||||
|
page: "plugins-github",
|
||||||
|
component: `<plugins-github></plugins-github>`,
|
||||||
|
condition: `page == 'plugins-github'`
|
||||||
|
}, {
|
||||||
|
page: "remote-pair",
|
||||||
|
component: `<remote-pair></remote-pair>`,
|
||||||
|
condition: `page == 'remote-pair'`
|
||||||
|
}, {
|
||||||
|
page: "audiolabs",
|
||||||
|
component: `<audiolabs-page></audiolabs-page>`,
|
||||||
|
condition: `page == 'audiolabs'`
|
||||||
|
}, {
|
||||||
|
page: "replay",
|
||||||
|
component: `<replay-page></replay-page>`,
|
||||||
|
condition: `page == 'replay'`
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -85,14 +227,12 @@ export class BrowserWindow {
|
||||||
minHeight: 390,
|
minHeight: 390,
|
||||||
frame: false,
|
frame: false,
|
||||||
title: "Cider",
|
title: "Cider",
|
||||||
vibrancy: "fullscreen-ui",
|
|
||||||
transparent: process.platform === "darwin",
|
|
||||||
hasShadow: false,
|
|
||||||
show: false,
|
show: false,
|
||||||
backgroundColor: "#1E1E1E",
|
// backgroundColor: "#1E1E1E",
|
||||||
titleBarStyle: 'hidden',
|
titleBarStyle: 'hidden',
|
||||||
trafficLightPosition: {x: 15, y: 20},
|
trafficLightPosition: {x: 15, y: 20},
|
||||||
webPreferences: {
|
webPreferences: {
|
||||||
|
experimentalFeatures: true,
|
||||||
nodeIntegration: true,
|
nodeIntegration: true,
|
||||||
sandbox: true,
|
sandbox: true,
|
||||||
allowRunningInsecureContent: true,
|
allowRunningInsecureContent: true,
|
||||||
|
@ -105,26 +245,96 @@ export class BrowserWindow {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
StartWatcher(path: string) {
|
||||||
|
const watcher = watch(path, {
|
||||||
|
ignored: /[\/\\]\./,
|
||||||
|
persistent: true
|
||||||
|
});
|
||||||
|
|
||||||
|
function onWatcherReady() {
|
||||||
|
console.info('From here can you check for real changes, the initial scan has been completed.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Declare the listeners of the watcher
|
||||||
|
watcher
|
||||||
|
.on('add', function (path: string) {
|
||||||
|
// console.log('File', path, 'has been added');
|
||||||
|
})
|
||||||
|
.on('addDir', function (path: string) {
|
||||||
|
// console.log('Directory', path, 'has been added');
|
||||||
|
})
|
||||||
|
.on('change', function (path: string) {
|
||||||
|
console.log('File', path, 'has been changed');
|
||||||
|
BrowserWindow.win.webContents.send("theme-update", "")
|
||||||
|
})
|
||||||
|
.on('unlink', function (path: string) {
|
||||||
|
// console.log('File', path, 'has been removed');
|
||||||
|
})
|
||||||
|
.on('unlinkDir', function (path: string) {
|
||||||
|
// console.log('Directory', path, 'has been removed');
|
||||||
|
})
|
||||||
|
.on('error', function (error: string) {
|
||||||
|
// console.log('Error happened', error);
|
||||||
|
})
|
||||||
|
.on('ready', onWatcherReady)
|
||||||
|
.on('raw', function (event: any, path: any, details: any) {
|
||||||
|
// This event should be triggered everytime something happens.
|
||||||
|
// console.log('Raw event info:', event, path, details);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates the browser window
|
* Creates the browser window
|
||||||
|
* @generator
|
||||||
|
* @function createWindow
|
||||||
|
* @yields {object} Electron browser window
|
||||||
*/
|
*/
|
||||||
async createWindow(): Promise<Electron.BrowserWindow> {
|
async createWindow(): Promise<Electron.BrowserWindow> {
|
||||||
this.clientPort = await getPort({port: 9000});
|
this.clientPort = await getPort({port: 9000});
|
||||||
BrowserWindow.verifyFiles();
|
BrowserWindow.verifyFiles();
|
||||||
|
this.StartWatcher(utils.getPath('themes'));
|
||||||
|
|
||||||
// Load the previous state with fallback to defaults
|
// Load the previous state with fallback to defaults
|
||||||
const windowState = windowStateKeeper({
|
const windowState = windowStateKeeper({
|
||||||
defaultWidth: 1024,
|
defaultWidth: 1024,
|
||||||
defaultHeight: 600,
|
defaultHeight: 600,
|
||||||
|
fullScreen: false
|
||||||
});
|
});
|
||||||
this.options.width = windowState.width;
|
this.options.width = windowState.width;
|
||||||
this.options.height = windowState.height;
|
this.options.height = windowState.height;
|
||||||
|
|
||||||
|
switch (process.platform) {
|
||||||
|
default:
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "win32":
|
||||||
|
if (!(utils.getStoreValue('visual.transparent') ?? false)){
|
||||||
|
this.options.backgroundColor = "#1E1E1E";} else {
|
||||||
|
this.options.transparent = true;}
|
||||||
|
break;
|
||||||
|
case "linux":
|
||||||
|
this.options.backgroundColor = "#1E1E1E";
|
||||||
|
this.options.autoHideMenuBar = true
|
||||||
|
this.options.frame = true
|
||||||
|
break;
|
||||||
|
case "darwin":
|
||||||
|
this.options.transparent = true;
|
||||||
|
this.options.vibrancy = "dark";
|
||||||
|
this.options.hasShadow = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// Start the webserver for the browser window to load
|
// Start the webserver for the browser window to load
|
||||||
|
|
||||||
this.startWebServer();
|
this.startWebServer();
|
||||||
|
|
||||||
BrowserWindow.win = new bw(this.options);
|
BrowserWindow.win = new bw(this.options);
|
||||||
|
// cant be built in CI
|
||||||
|
// if (process.platform === "win32" && (utils.getStoreValue('visual.transparent') ?? false)) {
|
||||||
|
// var electronVibrancy = require('electron-vibrancy-updated');
|
||||||
|
// electronVibrancy.SetVibrancy(BrowserWindow.win, 0);
|
||||||
|
|
||||||
|
// }
|
||||||
const ws = new wsapi(BrowserWindow.win)
|
const ws = new wsapi(BrowserWindow.win)
|
||||||
ws.InitWebSockets()
|
ws.InitWebSockets()
|
||||||
// and load the renderer.
|
// and load the renderer.
|
||||||
|
@ -183,7 +393,7 @@ export class BrowserWindow {
|
||||||
console.error('Req not defined')
|
console.error('Req not defined')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (req.url.includes("audio.webm") || (req.headers.host.includes("localhost") && (this.devMode || req.headers["user-agent"].includes("Electron")))) {
|
if (req.url.includes("audio.wav") || (req.headers.host.includes("localhost") && (this.devMode || req.headers["user-agent"].includes("Electron")))) {
|
||||||
next();
|
next();
|
||||||
} else {
|
} else {
|
||||||
res.redirect("https://discord.gg/applemusic");
|
res.redirect("https://discord.gg/applemusic");
|
||||||
|
@ -214,11 +424,11 @@ export class BrowserWindow {
|
||||||
res.send("Stopped")
|
res.send("Stopped")
|
||||||
break;
|
break;
|
||||||
case "next":
|
case "next":
|
||||||
BrowserWindow.win.webContents.executeJavaScript("MusicKit.getInstance().skipToNextItem()")
|
BrowserWindow.win.webContents.executeJavaScript("if (MusicKit.getInstance().queue.nextPlayableItemIndex != -1 && MusicKit.getInstance().queue.nextPlayableItemIndex != null) {MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.nextPlayableItemIndex);}")
|
||||||
res.send("Next")
|
res.send("Next")
|
||||||
break;
|
break;
|
||||||
case "previous":
|
case "previous":
|
||||||
BrowserWindow.win.webContents.executeJavaScript("MusicKit.getInstance().skipToPreviousItem()")
|
BrowserWindow.win.webContents.executeJavaScript("if (MusicKit.getInstance().queue.previousPlayableItemIndex != -1 && MusicKit.getInstance().queue.previousPlayableItemIndex != null) {MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.previousPlayableItemIndex);}")
|
||||||
res.send("Previous")
|
res.send("Previous")
|
||||||
break;
|
break;
|
||||||
default: {
|
default: {
|
||||||
|
@ -228,7 +438,7 @@ export class BrowserWindow {
|
||||||
})
|
})
|
||||||
|
|
||||||
app.get("/themes/:theme", (req, res) => {
|
app.get("/themes/:theme", (req, res) => {
|
||||||
const theme = req.params.theme.toLowerCase();
|
const theme = req.params.theme;
|
||||||
const themePath = join(utils.getPath('srcPath'), "./renderer/themes/", theme);
|
const themePath = join(utils.getPath('srcPath'), "./renderer/themes/", theme);
|
||||||
const userThemePath = join(utils.getPath('themes'), theme);
|
const userThemePath = join(utils.getPath('themes'), theme);
|
||||||
if (existsSync(userThemePath)) {
|
if (existsSync(userThemePath)) {
|
||||||
|
@ -238,19 +448,53 @@ export class BrowserWindow {
|
||||||
} else {
|
} else {
|
||||||
res.send(`// Theme not found - ${userThemePath}`);
|
res.send(`// Theme not found - ${userThemePath}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get("/audio.webm", (req, res) => {
|
app.get("/themes/:theme/*", (req: {params: {theme: string, 0: string}}, res) => {
|
||||||
|
const theme = req.params.theme;
|
||||||
|
const file = req.params[0];
|
||||||
|
const themePath = join(utils.getPath('srcPath'), "./renderer/themes/", theme);
|
||||||
|
const userThemePath = join(utils.getPath('themes'), theme);
|
||||||
|
if (existsSync(userThemePath)) {
|
||||||
|
res.sendFile(join(userThemePath, file));
|
||||||
|
} else if (existsSync(themePath)) {
|
||||||
|
res.sendFile(join(themePath, file));
|
||||||
|
} else {
|
||||||
|
res.send(`// File not found - ${userThemePath}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
app.get("/plugins/:plugin/*", (req: {params: {plugin: string, 0: string}}, res) => {
|
||||||
|
let plugin = req.params.plugin;
|
||||||
|
if(Plugins.getPluginFromMap(plugin)) {
|
||||||
|
plugin = Plugins.getPluginFromMap(plugin)
|
||||||
|
}
|
||||||
|
const file = req.params[0];
|
||||||
|
const pluginPath = join(utils.getPath('plugins'), plugin);
|
||||||
|
console.log(pluginPath)
|
||||||
|
if (existsSync(pluginPath)) {
|
||||||
|
res.sendFile(join(pluginPath, file));
|
||||||
|
} else {
|
||||||
|
res.send(`// Plugin not found - ${pluginPath}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
app.get("/audio.wav", (req, res) => {
|
||||||
try {
|
try {
|
||||||
|
const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
|
||||||
|
if (!this.chromecastIP.includes(ip)) {
|
||||||
|
this.headerSent = false;
|
||||||
|
this.chromecastIP.push(ip)
|
||||||
|
}
|
||||||
req.socket.setTimeout(Number.MAX_SAFE_INTEGER);
|
req.socket.setTimeout(Number.MAX_SAFE_INTEGER);
|
||||||
// CiderBase.requests.push({req: req, res: res});
|
// CiderBase.requests.push({req: req, res: res});
|
||||||
// var pos = CiderBase.requests.length - 1;
|
// var pos = CiderBase.requests.length - 1;
|
||||||
// req.on("close", () => {
|
req.on("close", () => {
|
||||||
// console.info("CLOSED", CiderBase.requests.length);
|
console.log('disconnected')
|
||||||
// requests.splice(pos, 1);
|
this.headerSent = false
|
||||||
// console.info("CLOSED", CiderBase.requests.length);
|
this.chromecastIP = this.chromecastIP.filter((item: any) => item !== ip);
|
||||||
// });
|
});
|
||||||
|
|
||||||
this.audioStream.on("data", (data: any) => {
|
this.audioStream.on("data", (data: any) => {
|
||||||
try {
|
try {
|
||||||
res.write(data);
|
res.write(data);
|
||||||
|
@ -351,32 +595,210 @@ export class BrowserWindow {
|
||||||
/**********************************************************************************************************************
|
/**********************************************************************************************************************
|
||||||
* ipcMain Events
|
* ipcMain Events
|
||||||
****************************************************************************************************************** */
|
****************************************************************************************************************** */
|
||||||
|
|
||||||
|
ipcMain.on("get-wallpaper", async (event) => {
|
||||||
|
const wpPath:string = await wallpaper.get();
|
||||||
|
// get the wallpaper and encode it to base64 then return
|
||||||
|
const wpBase64:string = await readFileSync(wpPath, 'base64')
|
||||||
|
// add the data:image properties
|
||||||
|
const wpData:string = `data:image/png;base64,${wpBase64}`
|
||||||
|
event.returnValue = wpData;
|
||||||
|
})
|
||||||
|
|
||||||
ipcMain.on("cider-platform", (event) => {
|
ipcMain.on("cider-platform", (event) => {
|
||||||
event.returnValue = process.platform;
|
event.returnValue = process.platform;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ipcMain.handle("reinstall-widevine-cdm", ()=>{
|
||||||
|
// remove WidevineCDM from appdata folder
|
||||||
|
const widevineCdmPath = join(app.getPath("userData"), "./WidevineCdm");
|
||||||
|
if(existsSync(widevineCdmPath)) {
|
||||||
|
rmSync(widevineCdmPath, { recursive: true, force: true })
|
||||||
|
}
|
||||||
|
// reinstall WidevineCDM
|
||||||
|
app.relaunch()
|
||||||
|
app.exit()
|
||||||
|
})
|
||||||
|
|
||||||
|
ipcMain.handle("get-github-plugin", async (event, url) => {
|
||||||
|
const returnVal = {
|
||||||
|
success: true,
|
||||||
|
theme: null,
|
||||||
|
message: ""
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if (!existsSync(utils.getPath("plugins"))) {
|
||||||
|
mkdirSync(utils.getPath("plugins"));
|
||||||
|
}
|
||||||
|
if (url.endsWith("/")) url = url.slice(0, -1);
|
||||||
|
let response = await fetch(
|
||||||
|
`${url}/archive/refs/heads/main.zip`
|
||||||
|
);
|
||||||
|
let repo = url.split("/").slice(-2).join("/");
|
||||||
|
let apiRepo = await fetch(
|
||||||
|
`https://api.github.com/repos/${repo}`
|
||||||
|
).then((res) => res.json());
|
||||||
|
console.debug(`REPO ID: ${apiRepo.id}`);
|
||||||
|
// extract the files from the first folder in the zip response
|
||||||
|
let zip = new AdmZip(await response.buffer());
|
||||||
|
let entry = zip.getEntries()[0];
|
||||||
|
if (!existsSync(join(utils.getPath("plugins"), "gh_" + apiRepo.id))) {
|
||||||
|
mkdirSync(join(utils.getPath("plugins"), "gh_" + apiRepo.id));
|
||||||
|
}
|
||||||
|
console.log(join(utils.getPath("plugins"), "gh_" + apiRepo.id))
|
||||||
|
zip.extractEntryTo(entry, join(utils.getPath("plugins"), "gh_" + apiRepo.id), false, true);
|
||||||
|
let commit = await fetch(
|
||||||
|
`https://api.github.com/repos/${repo}/commits`
|
||||||
|
).then((res) => res.json());
|
||||||
|
console.debug(`COMMIT SHA: ${commit[0].sha}`);
|
||||||
|
let theme = JSON.parse(
|
||||||
|
readFileSync(join(utils.getPath("plugins"), "gh_" + apiRepo.id, "package.json"), "utf8")
|
||||||
|
);
|
||||||
|
theme.id = apiRepo.id
|
||||||
|
theme.commit = commit[0].sha
|
||||||
|
writeFileSync(
|
||||||
|
join(utils.getPath("plugins"), "gh_" + apiRepo.id, "package.json"),
|
||||||
|
JSON.stringify(theme, null, 4),
|
||||||
|
"utf8"
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
returnVal.success = false;
|
||||||
|
}
|
||||||
|
BrowserWindow.win.webContents.send("plugin-installed", returnVal);
|
||||||
|
});
|
||||||
|
|
||||||
|
ipcMain.handle("get-github-theme", async (event, url) => {
|
||||||
|
const returnVal = {
|
||||||
|
success: true,
|
||||||
|
theme: null,
|
||||||
|
message: ""
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if (!existsSync(utils.getPath("themes"))) {
|
||||||
|
mkdirSync(utils.getPath("themes"));
|
||||||
|
}
|
||||||
|
if (url.endsWith("/")) url = url.slice(0, -1);
|
||||||
|
let response = await fetch(
|
||||||
|
`${url}/archive/refs/heads/main.zip`
|
||||||
|
);
|
||||||
|
let repo = url.split("/").slice(-2).join("/");
|
||||||
|
let apiRepo = await fetch(
|
||||||
|
`https://api.github.com/repos/${repo}`
|
||||||
|
).then((res) => res.json());
|
||||||
|
console.debug(`REPO ID: ${apiRepo.id}`);
|
||||||
|
// extract the files from the first folder in the zip response
|
||||||
|
let zip = new AdmZip(await response.buffer());
|
||||||
|
let entry = zip.getEntries()[0];
|
||||||
|
if (!existsSync(join(utils.getPath("themes"), "gh_" + apiRepo.id))) {
|
||||||
|
mkdirSync(join(utils.getPath("themes"), "gh_" + apiRepo.id));
|
||||||
|
}
|
||||||
|
console.log(join(utils.getPath("themes"), "gh_" + apiRepo.id))
|
||||||
|
zip.extractEntryTo(entry, join(utils.getPath("themes"), "gh_" + apiRepo.id), false, true);
|
||||||
|
let commit = await fetch(
|
||||||
|
`https://api.github.com/repos/${repo}/commits`
|
||||||
|
).then((res) => res.json());
|
||||||
|
console.debug(`COMMIT SHA: ${commit[0].sha}`);
|
||||||
|
let theme = JSON.parse(
|
||||||
|
readFileSync(join(utils.getPath("themes"), "gh_" + apiRepo.id, "theme.json"), "utf8")
|
||||||
|
);
|
||||||
|
theme.id = apiRepo.id
|
||||||
|
theme.commit = commit[0].sha;
|
||||||
|
writeFileSync(
|
||||||
|
join(utils.getPath("themes"), "gh_" + apiRepo.id, "theme.json"),
|
||||||
|
JSON.stringify(theme, null, 4),
|
||||||
|
"utf8"
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
returnVal.success = false;
|
||||||
|
}
|
||||||
|
BrowserWindow.win.webContents.send("theme-installed", returnVal);
|
||||||
|
});
|
||||||
|
|
||||||
ipcMain.on("get-themes", (event, _key) => {
|
ipcMain.on("get-themes", (event, _key) => {
|
||||||
if (existsSync(utils.getPath("themes"))) {
|
if (existsSync(utils.getPath("themes"))) {
|
||||||
event.returnValue = readdirSync(utils.getPath("themes"));
|
let files = readdirSync(utils.getPath("themes"));
|
||||||
|
let themes = [];
|
||||||
|
for (let file of files) {
|
||||||
|
if (file.endsWith(".less")) {
|
||||||
|
themes.push(file);
|
||||||
|
} else if (statSync(join(utils.getPath("themes"), file)).isDirectory()) {
|
||||||
|
let subFiles = readdirSync(join(utils.getPath("themes"), file));
|
||||||
|
for (let subFile of subFiles) {
|
||||||
|
if (subFile.endsWith(".less")) {
|
||||||
|
themes.push(join(file, subFile));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let themeObjects = [];
|
||||||
|
for (let theme of themes) {
|
||||||
|
let themePath = join(utils.getPath("themes"), theme);
|
||||||
|
let themeName = theme;
|
||||||
|
let themeDescription = "";
|
||||||
|
if (theme.includes("/")) {
|
||||||
|
themeName = theme.split("/")[1];
|
||||||
|
themeDescription = theme.split("/")[0];
|
||||||
|
}
|
||||||
|
if (themePath.endsWith("index.less")) {
|
||||||
|
themePath = themePath.slice(0, -10);
|
||||||
|
}
|
||||||
|
if (existsSync(join(themePath, "theme.json"))) {
|
||||||
|
let themeJson = JSON.parse(readFileSync(join(themePath, "theme.json"), "utf8"));
|
||||||
|
themeObjects.push({
|
||||||
|
name: themeJson.name || themeName,
|
||||||
|
description: themeJson.description || themeDescription,
|
||||||
|
path: themePath,
|
||||||
|
file: theme,
|
||||||
|
github_repo: themeJson.github_repo || "",
|
||||||
|
commit: themeJson.commit || ""
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
themeObjects.push({
|
||||||
|
name: themeName,
|
||||||
|
description: themeDescription,
|
||||||
|
path: themePath,
|
||||||
|
file: theme,
|
||||||
|
github_repo: "",
|
||||||
|
commit: ""
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
event.returnValue = themeObjects;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
event.returnValue = [];
|
event.returnValue = [];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ipcMain.handle("open-path", async (event, path) => {
|
||||||
|
switch(path) {
|
||||||
|
default:
|
||||||
|
case "plugins":
|
||||||
|
shell.openPath(utils.getPath("plugins"));
|
||||||
|
break;
|
||||||
|
case "userdata":
|
||||||
|
shell.openPath(app.getPath("userData"));
|
||||||
|
break;
|
||||||
|
case "themes":
|
||||||
|
shell.openPath(utils.getPath("themes"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
ipcMain.on("get-i18n", (event, key) => {
|
ipcMain.on("get-i18n", (event, key) => {
|
||||||
event.returnValue = utils.getLocale(key);
|
event.returnValue = utils.getLocale(key);
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcMain.on("get-i18n-listing", event => {
|
ipcMain.on("get-i18n-listing", event => {
|
||||||
let i18nFiles = readdirSync(join(__dirname, "../../src/i18n")).filter(file => file.endsWith(".jsonc"));
|
let i18nFiles = readdirSync(join(__dirname, "../../src/i18n")).filter(file => file.endsWith(".json"));
|
||||||
// read all the files and parse them
|
// read all the files and parse them
|
||||||
let i18nListing = []
|
let i18nListing = []
|
||||||
for (let i = 0; i < i18nFiles.length; i++) {
|
for (let i = 0; i < i18nFiles.length; i++) {
|
||||||
const i18n: { [index: string]: Object } = jsonc.parse(readFileSync(join(__dirname, `../../src/i18n/${i18nFiles[i]}`), "utf8"));
|
const i18n: { [index: string]: Object } = JSON.parse(readFileSync(join(__dirname, `../../src/i18n/${i18nFiles[i]}`), "utf8"));
|
||||||
i18nListing.push({
|
i18nListing.push({
|
||||||
"code": i18nFiles[i].replace(".jsonc", ""),
|
"code": i18nFiles[i].replace(".json", ""),
|
||||||
"nameNative": i18n["i18n.languageName"] ?? i18nFiles[i].replace(".jsonc", ""),
|
"nameNative": i18n["i18n.languageName"] ?? i18nFiles[i].replace(".json", ""),
|
||||||
"nameEnglish": i18n["i18n.languageNameEnglish"] ?? i18nFiles[i].replace(".jsonc", ""),
|
"nameEnglish": i18n["i18n.languageNameEnglish"] ?? i18nFiles[i].replace(".json", ""),
|
||||||
"category": i18n["i18n.category"] ?? "",
|
"category": i18n["i18n.category"] ?? "",
|
||||||
"authors": i18n["i18n.authors"] ?? ""
|
"authors": i18n["i18n.authors"] ?? ""
|
||||||
})
|
})
|
||||||
|
@ -392,79 +814,22 @@ export class BrowserWindow {
|
||||||
event.returnValue = this.devMode;
|
event.returnValue = this.devMode;
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcMain.on("put-library-songs", (_event, arg) => {
|
ipcMain.handle("put-cache", (_event, arg) => {
|
||||||
writeFileSync(
|
writeFileSync(
|
||||||
join(utils.getPath('ciderCache'), "library-songs.json"),
|
join(utils.getPath('ciderCache'), `${arg.file}.json`),
|
||||||
JSON.stringify(arg)
|
arg.data
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcMain.on("put-library-artists", (_event, arg) => {
|
ipcMain.on("get-cache", (event, arg) => {
|
||||||
writeFileSync(
|
let read = ""
|
||||||
join(utils.getPath('ciderCache'), "library-artists.json"),
|
if (existsSync(join(utils.getPath('ciderCache'), `${arg}.json`))) {
|
||||||
JSON.stringify(arg)
|
read = readFileSync(
|
||||||
);
|
join(utils.getPath('ciderCache'), `${arg}.json`),
|
||||||
});
|
|
||||||
|
|
||||||
ipcMain.on("put-library-albums", (_event, arg) => {
|
|
||||||
writeFileSync(
|
|
||||||
join(utils.getPath('ciderCache'), "library-albums.json"),
|
|
||||||
JSON.stringify(arg)
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
ipcMain.on("put-library-playlists", (_event, arg) => {
|
|
||||||
writeFileSync(
|
|
||||||
join(utils.getPath('ciderCache'), "library-playlists.json"),
|
|
||||||
JSON.stringify(arg)
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
ipcMain.on("put-library-recentlyAdded", (_event, arg) => {
|
|
||||||
writeFileSync(
|
|
||||||
join(utils.getPath('ciderCache'), "library-recentlyAdded.json"),
|
|
||||||
JSON.stringify(arg)
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
ipcMain.on("get-library-songs", (event) => {
|
|
||||||
let librarySongs = readFileSync(
|
|
||||||
join(utils.getPath('ciderCache'), "library-songs.json"),
|
|
||||||
"utf8"
|
"utf8"
|
||||||
);
|
);
|
||||||
event.returnValue = JSON.parse(librarySongs);
|
}
|
||||||
});
|
event.returnValue = read;
|
||||||
|
|
||||||
ipcMain.on("get-library-artists", (event) => {
|
|
||||||
let libraryArtists = readFileSync(
|
|
||||||
join(utils.getPath('ciderCache'), "library-artists.json"),
|
|
||||||
"utf8"
|
|
||||||
);
|
|
||||||
event.returnValue = JSON.parse(libraryArtists);
|
|
||||||
});
|
|
||||||
|
|
||||||
ipcMain.on("get-library-albums", (event) => {
|
|
||||||
let libraryAlbums = readFileSync(
|
|
||||||
join(utils.getPath('ciderCache'), "library-albums.json"),
|
|
||||||
"utf8"
|
|
||||||
);
|
|
||||||
event.returnValue = JSON.parse(libraryAlbums);
|
|
||||||
});
|
|
||||||
|
|
||||||
ipcMain.on("get-library-playlists", (event) => {
|
|
||||||
let libraryPlaylists = readFileSync(
|
|
||||||
join(utils.getPath('ciderCache'), "library-playlists.json"),
|
|
||||||
"utf8"
|
|
||||||
);
|
|
||||||
event.returnValue = JSON.parse(libraryPlaylists);
|
|
||||||
});
|
|
||||||
|
|
||||||
ipcMain.on("get-library-recentlyAdded", (event) => {
|
|
||||||
let libraryRecentlyAdded = readFileSync(
|
|
||||||
join(utils.getPath('ciderCache'), "library-recentlyAdded.json"),
|
|
||||||
"utf8"
|
|
||||||
);
|
|
||||||
event.returnValue = JSON.parse(libraryRecentlyAdded);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcMain.handle("getYTLyrics", async (_event, track, artist) => {
|
ipcMain.handle("getYTLyrics", async (_event, track, artist) => {
|
||||||
|
@ -517,20 +882,162 @@ export class BrowserWindow {
|
||||||
ipcMain.on('setFullScreen', (_event, flag) => {
|
ipcMain.on('setFullScreen', (_event, flag) => {
|
||||||
BrowserWindow.win.setFullScreen(flag)
|
BrowserWindow.win.setFullScreen(flag)
|
||||||
})
|
})
|
||||||
|
|
||||||
//Fullscreen
|
//Fullscreen
|
||||||
ipcMain.on('detachDT', (_event, _) => {
|
ipcMain.on('detachDT', (_event, _) => {
|
||||||
BrowserWindow.win.webContents.openDevTools({mode: 'detach'});
|
BrowserWindow.win.webContents.openDevTools({mode: 'detach'});
|
||||||
})
|
})
|
||||||
|
|
||||||
|
ipcMain.handle('relaunchApp',(_event, _) => {
|
||||||
|
app.relaunch()
|
||||||
|
app.exit()
|
||||||
|
})
|
||||||
|
|
||||||
|
app.on('before-quit', () => {
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
ipcMain.on('play', (_event, type, id) => {
|
ipcMain.on('play', (_event, type, id) => {
|
||||||
BrowserWindow.win.webContents.executeJavaScript(`
|
BrowserWindow.win.webContents.executeJavaScript(`
|
||||||
MusicKit.getInstance().setQueue({ ${type}: '${id}'}).then(function(queue) {
|
MusicKit.getInstance().setQueue({ ${type}: '${id}', parameters : {l : app.mklang}}).then(function(queue) {
|
||||||
MusicKit.getInstance().play();
|
MusicKit.getInstance().play();
|
||||||
});
|
});
|
||||||
`)
|
`)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ipcMain.on('writeWAV', (event, leftpcm, rightpcm, bufferlength) => {
|
||||||
|
|
||||||
|
function interleave16(leftChannel: any, rightChannel: any) {
|
||||||
|
var length = leftChannel.length + rightChannel.length;
|
||||||
|
var result = new Int16Array(length);
|
||||||
|
|
||||||
|
var inputIndex = 0;
|
||||||
|
|
||||||
|
for (var index = 0; index < length;) {
|
||||||
|
result[index++] = leftChannel[inputIndex];
|
||||||
|
result[index++] = rightChannel[inputIndex];
|
||||||
|
inputIndex++;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//https://github.com/HSU-ANT/jsdafx
|
||||||
|
|
||||||
|
function quantization(audiobufferleft: any, audiobufferright: any) {
|
||||||
|
|
||||||
|
let h = Float32Array.from([1]);
|
||||||
|
let nsState = new Array(0);
|
||||||
|
let ditherstate = new Float32Array(0);
|
||||||
|
let qt = Math.pow(2, 1 - 16);
|
||||||
|
|
||||||
|
//noise shifting order 3
|
||||||
|
h = Float32Array.from([1.623, -0.982, 0.109]);
|
||||||
|
for (let i = 0; i < nsState.length; i++) {
|
||||||
|
nsState[i] = new Float32Array(h.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function setChannelCount(nc: any) {
|
||||||
|
if (ditherstate.length !== nc) {
|
||||||
|
ditherstate = new Float32Array(nc);
|
||||||
|
}
|
||||||
|
if (nsState.length !== nc) {
|
||||||
|
nsState = new Array(nc);
|
||||||
|
for (let i = 0; i < nsState.length; i++) {
|
||||||
|
nsState[i] = new Float32Array(h.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function hpDither(channel: any) {
|
||||||
|
const rnd = Math.random() - 0.5;
|
||||||
|
const d = rnd - ditherstate[channel];
|
||||||
|
ditherstate[channel] = rnd;
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
setChannelCount(2);
|
||||||
|
const inputs = [audiobufferleft, audiobufferright];
|
||||||
|
const outputs = [audiobufferleft, audiobufferright];
|
||||||
|
|
||||||
|
for (let channel = 0; channel < inputs.length; channel++) {
|
||||||
|
const inputData = inputs[channel];
|
||||||
|
const outputData = outputs[channel];
|
||||||
|
for (let sample = 0; sample < bufferlength; sample++) {
|
||||||
|
let input = inputData[sample];
|
||||||
|
// console.log('a2',inputData.length);
|
||||||
|
for (let i = 0; i < h.length; i++) {
|
||||||
|
input -= h[i] * nsState[channel][i];
|
||||||
|
}
|
||||||
|
// console.log('a3',input);
|
||||||
|
let d_rand = 0.0;
|
||||||
|
// ditherstate = new Float32Array(h.length);
|
||||||
|
// d_rand = hpDither(channel);
|
||||||
|
const tmpOutput = qt * Math.round(input / qt + d_rand);
|
||||||
|
for (let i = h.length - 1; i >= 0; i--) {
|
||||||
|
nsState[channel][i] = nsState[channel][i - 1];
|
||||||
|
}
|
||||||
|
nsState[channel][0] = tmpOutput - input;
|
||||||
|
outputData[sample] = tmpOutput;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return outputs;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function convert(n: any) {
|
||||||
|
var v = n < 0 ? n * 32768 : n * 32767; // convert in range [-32768, 32767]
|
||||||
|
return Math.max(-32768, Math.min(32768, v)); // clamp
|
||||||
|
}
|
||||||
|
|
||||||
|
function bitratechange(e: any){
|
||||||
|
var t = e.length;
|
||||||
|
let sampleRate = 96.0;
|
||||||
|
let outputSampleRate = 48.0;
|
||||||
|
var s = 0,
|
||||||
|
o = sampleRate / outputSampleRate,
|
||||||
|
u = Math.ceil(t * outputSampleRate / sampleRate),
|
||||||
|
a = new Int16Array(u);
|
||||||
|
for (let i = 0; i < u; i++) {
|
||||||
|
a[i] = e[Math.floor(s)];
|
||||||
|
s += o;
|
||||||
|
}
|
||||||
|
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
let newaudio = quantization(leftpcm, rightpcm);
|
||||||
|
//let newaudio = [leftpcm, rightpcm];
|
||||||
|
// console.log(newaudio.length);
|
||||||
|
|
||||||
|
let pcmData = Buffer.from(new Int8Array(interleave16(bitratechange(Int16Array.from(newaudio[0], x => convert(x))), bitratechange(Int16Array.from(newaudio[1], x => convert(x)))).buffer));
|
||||||
|
|
||||||
|
if (!this.headerSent) {
|
||||||
|
console.log('new header')
|
||||||
|
const header = Buffer.alloc(44)
|
||||||
|
header.write('RIFF', 0)
|
||||||
|
header.writeUInt32LE(2147483600, 4)
|
||||||
|
header.write('WAVE', 8)
|
||||||
|
header.write('fmt ', 12)
|
||||||
|
header.writeUInt8(16, 16)
|
||||||
|
header.writeUInt8(1, 20)
|
||||||
|
header.writeUInt8(2, 22)
|
||||||
|
header.writeUInt32LE(48000, 24)
|
||||||
|
header.writeUInt32LE(16, 28)
|
||||||
|
header.writeUInt8(4, 32)
|
||||||
|
header.writeUInt8(16, 34)
|
||||||
|
header.write('data', 36)
|
||||||
|
header.writeUInt32LE(2147483600 + 44 - 8, 40)
|
||||||
|
this.audioStream.write(Buffer.concat([header, pcmData]));
|
||||||
|
this.headerSent = true;
|
||||||
|
} else {
|
||||||
|
this.audioStream.write(pcmData);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
//QR Code
|
//QR Code
|
||||||
ipcMain.handle('showQR', async (_event, _) => {
|
ipcMain.handle('showQR', async (_event, _) => {
|
||||||
let url = `http://${BrowserWindow.getIP()}:${this.remotePort}`;
|
let url = `http://${BrowserWindow.getIP()}:${this.remotePort}`;
|
||||||
|
@ -539,7 +1046,12 @@ export class BrowserWindow {
|
||||||
|
|
||||||
ipcMain.on('get-remote-pair-url', (_event, _) => {
|
ipcMain.on('get-remote-pair-url', (_event, _) => {
|
||||||
let url = `http://${BrowserWindow.getIP()}:${this.remotePort}`;
|
let url = `http://${BrowserWindow.getIP()}:${this.remotePort}`;
|
||||||
BrowserWindow.win.webContents.send('send-remote-pair-url', url);
|
//if (app.isPackaged) {
|
||||||
|
BrowserWindow.win.webContents.send('send-remote-pair-url', (`https://cider.sh/pair-remote?url=${Buffer.from(encodeURI(url)).toString('base64')}`).toString());
|
||||||
|
//} else {
|
||||||
|
// BrowserWindow.win.webContents.send('send-remote-pair-url', (`http://127.0.0.1:5500/pair-remote.html?url=${Buffer.from(encodeURI(url)).toString('base64')}`).toString());
|
||||||
|
//}
|
||||||
|
|
||||||
});
|
});
|
||||||
if (process.platform === "darwin") {
|
if (process.platform === "darwin") {
|
||||||
app.setUserActivity('com.CiderCollective.remote.pair', {
|
app.setUserActivity('com.CiderCollective.remote.pair', {
|
||||||
|
@ -562,30 +1074,17 @@ export class BrowserWindow {
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcMain.on('check-for-update', async (_event) => {
|
ipcMain.on('check-for-update', async (_event) => {
|
||||||
const branch = utils.getStoreValue('general.update_branch')
|
await utils.checkForUpdate();
|
||||||
let latestbranch = await fetch(`https://circleci.com/api/v1.1/project/gh/ciderapp/Cider/latest/artifacts?branch=${branch}&filter=successful`)
|
|
||||||
if (latestbranch.status != 200) {
|
|
||||||
console.log(`Error fetching latest artifact from the **${branch}** branch`)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
let latestbranchjson = await latestbranch.json()
|
|
||||||
let base_url = latestbranchjson[0].url
|
|
||||||
base_url = base_url.substr(0, base_url.lastIndexOf('/'))
|
|
||||||
|
|
||||||
const options: any = {
|
|
||||||
provider: 'generic',
|
|
||||||
url: `${base_url}`
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* Have to handle the auto updaters seperatly until we can support macOS. electron-builder limitation -q
|
|
||||||
*/
|
|
||||||
const win_autoUpdater = new NsisUpdater(options) //Windows
|
|
||||||
const linux_autoUpdater = new AppImageUpdater(options) //Linux
|
|
||||||
await win_autoUpdater.checkForUpdatesAndNotify()
|
|
||||||
await linux_autoUpdater.checkForUpdatesAndNotify()
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
ipcMain.on('disable-update', (event) => {
|
||||||
|
// Check if using app store builds so people don't get pissy wen button go bonk
|
||||||
|
event.returnValue = !(app.isPackaged && !process.mas || !process.windowsStore);
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ipcMain.on('share-menu', async (_event, url) => {
|
ipcMain.on('share-menu', async (_event, url) => {
|
||||||
if (process.platform != 'darwin') return;
|
if (process.platform != 'darwin') return;
|
||||||
//https://www.electronjs.org/docs/latest/api/share-menu
|
//https://www.electronjs.org/docs/latest/api/share-menu
|
||||||
|
@ -594,12 +1093,21 @@ export class BrowserWindow {
|
||||||
title: 'Share',
|
title: 'Share',
|
||||||
urls: [url]
|
urls: [url]
|
||||||
};
|
};
|
||||||
// @ts-ignore
|
|
||||||
const shareMenu = new ShareMenu(options);
|
const shareMenu = new ShareMenu(options);
|
||||||
shareMenu.popup();
|
shareMenu.popup();
|
||||||
})
|
})
|
||||||
|
|
||||||
|
ipcMain.on('get-version', (_event) => {
|
||||||
|
if (app.isPackaged) {
|
||||||
|
_event.returnValue = app.getVersion()
|
||||||
|
} else {
|
||||||
|
_event.returnValue = `Experimental running on Electron ${app.getVersion()}`
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
ipcMain.on('open-appdata', (_event) => {
|
||||||
|
shell.openPath(app.getPath('userData'));
|
||||||
|
});
|
||||||
/* *********************************************************************************************
|
/* *********************************************************************************************
|
||||||
* Window Events
|
* Window Events
|
||||||
* **********************************************************************************************/
|
* **********************************************************************************************/
|
||||||
|
@ -640,6 +1148,11 @@ export class BrowserWindow {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
BrowserWindow.win.hide();
|
BrowserWindow.win.hide();
|
||||||
} else {
|
} else {
|
||||||
|
BrowserWindow.win.webContents.executeJavaScript(`
|
||||||
|
window.localStorage.setItem("currentTrack", JSON.stringify(app.mk.nowPlayingItem));
|
||||||
|
window.localStorage.setItem("currentTime", JSON.stringify(app.mk.currentPlaybackTime));
|
||||||
|
window.localStorage.setItem("currentQueue", JSON.stringify(app.mk.queue.items));
|
||||||
|
ipcRenderer.send('stopGCast','');`)
|
||||||
BrowserWindow.win.destroy();
|
BrowserWindow.win.destroy();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -648,8 +1161,18 @@ export class BrowserWindow {
|
||||||
isQuiting = true
|
isQuiting = true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
app.on('activate', function(){
|
||||||
|
BrowserWindow.win.show()
|
||||||
|
BrowserWindow.win.focus()
|
||||||
|
});
|
||||||
|
|
||||||
|
// Quit when all windows are closed.
|
||||||
app.on('window-all-closed', () => {
|
app.on('window-all-closed', () => {
|
||||||
|
// On macOS it is common for applications and their menu bar
|
||||||
|
// to stay active until the user quits explicitly with Cmd + Q
|
||||||
|
if (process.platform !== 'darwin') {
|
||||||
app.quit()
|
app.quit()
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
BrowserWindow.win.on("closed", () => {
|
BrowserWindow.win.on("closed", () => {
|
||||||
|
@ -672,17 +1195,22 @@ export class BrowserWindow {
|
||||||
*/
|
*/
|
||||||
private static getIP(): string {
|
private static getIP(): string {
|
||||||
let ip: string = '';
|
let ip: string = '';
|
||||||
|
let ip2: any = [];
|
||||||
let alias = 0;
|
let alias = 0;
|
||||||
const ifaces: any = networkInterfaces();
|
const ifaces: any = networkInterfaces();
|
||||||
for (let dev in ifaces) {
|
for (let dev in ifaces) {
|
||||||
ifaces[dev].forEach((details: any) => {
|
ifaces[dev].forEach((details: any) => {
|
||||||
if (details.family === 'IPv4') {
|
if (details.family === 'IPv4' && !details.internal) {
|
||||||
if (!/(loopback|vmware|internal|hamachi|vboxnet|virtualbox)/gi.test(dev + (alias ? ':' + alias : ''))) {
|
if (!/(loopback|vmware|internal|hamachi|vboxnet|virtualbox)/gi.test(dev + (alias ? ':' + alias : ''))) {
|
||||||
if (details.address.substring(0, 8) === '192.168.' ||
|
if (details.address.substring(0, 8) === '192.168.' ||
|
||||||
details.address.substring(0, 7) === '172.16.' ||
|
details.address.substring(0, 7) === '172.16.' ||
|
||||||
details.address.substring(0, 3) === '10.'
|
details.address.substring(0, 3) === '10.'
|
||||||
) {
|
) {
|
||||||
ip = details.address;
|
if (!ip.startsWith('192.168.') ||
|
||||||
|
(ip2.startsWith('192.168.') && !ip.startsWith('192.168.')) &&
|
||||||
|
(ip2.startsWith('172.16.') && !ip.startsWith('192.168.') && !ip.startsWith('172.16.')) ||
|
||||||
|
(ip2.startsWith('10.') && !ip.startsWith('192.168.') && !ip.startsWith('172.16.') && !ip.startsWith('10.'))
|
||||||
|
){ip = details.address;}
|
||||||
++alias;
|
++alias;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -699,7 +1227,7 @@ export class BrowserWindow {
|
||||||
private async broadcastRemote() {
|
private async broadcastRemote() {
|
||||||
const myString = `http://${BrowserWindow.getIP()}:${this.remotePort}`;
|
const myString = `http://${BrowserWindow.getIP()}:${this.remotePort}`;
|
||||||
const mdns = require('mdns-js');
|
const mdns = require('mdns-js');
|
||||||
const encoded = new Buffer(myString).toString('base64');
|
const encoded = Buffer.from(myString).toString('base64');
|
||||||
const x = mdns.tcp('cider-remote');
|
const x = mdns.tcp('cider-remote');
|
||||||
const txt_record = {
|
const txt_record = {
|
||||||
"Ver": "131077",
|
"Ver": "131077",
|
||||||
|
|
32
src/main/base/castcontroller.js
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
var util = require('util');
|
||||||
|
var castv2Cli = require('castv2-client');
|
||||||
|
var RequestResponseController = castv2Cli.RequestResponseController;
|
||||||
|
|
||||||
|
function CiderCastController(client, sourceId, destinationId) {
|
||||||
|
RequestResponseController.call(this, client, sourceId, destinationId, 'urn:x-cast:com.ciderapp.customdata');
|
||||||
|
this.once('close', onclose);
|
||||||
|
var self = this;
|
||||||
|
function onclose() {
|
||||||
|
self.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
util.inherits(CiderCastController, RequestResponseController);
|
||||||
|
|
||||||
|
CiderCastController.prototype.sendIp = function(ip) {
|
||||||
|
// TODO: Implement Callback
|
||||||
|
let data = {
|
||||||
|
ip : ip
|
||||||
|
}
|
||||||
|
this.request(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
CiderCastController.prototype.kill = function() {
|
||||||
|
// TODO: Implement Callback
|
||||||
|
let data = {
|
||||||
|
action : "stop"
|
||||||
|
}
|
||||||
|
this.request(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = CiderCastController;
|
81
src/main/base/castreceiver.js
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
//@ts-nocheck
|
||||||
|
var util = require('util');
|
||||||
|
// var debug = require('debug')('castv2-client');
|
||||||
|
var Application = require('castv2-client').Application;
|
||||||
|
var MediaController = require('castv2-client').MediaController;
|
||||||
|
var CiderCastController = require('./castcontroller');
|
||||||
|
|
||||||
|
function CiderReceiver(client, session) {
|
||||||
|
Application.apply(this, arguments);
|
||||||
|
|
||||||
|
this.media = this.createController(MediaController);
|
||||||
|
this.mediaReceiver = this.createController(CiderCastController);
|
||||||
|
|
||||||
|
this.media.on('status', onstatus);
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
function onstatus(status) {
|
||||||
|
self.emit('status', status);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
// FE96A351
|
||||||
|
// 27E1334F
|
||||||
|
CiderReceiver.APP_ID = 'FE96A351';
|
||||||
|
|
||||||
|
util.inherits(CiderReceiver, Application);
|
||||||
|
|
||||||
|
CiderReceiver.prototype.getStatus = function(callback) {
|
||||||
|
this.media.getStatus.apply(this.media, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
CiderReceiver.prototype.load = function(media, options, callback) {
|
||||||
|
this.media.load.apply(this.media, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
CiderReceiver.prototype.play = function(callback) {
|
||||||
|
this.media.play.apply(this.media, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
CiderReceiver.prototype.pause = function(callback) {
|
||||||
|
this.media.pause.apply(this.media, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
CiderReceiver.prototype.stop = function(callback) {
|
||||||
|
this.media.stop.apply(this.media, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
CiderReceiver.prototype.seek = function(currentTime, callback) {
|
||||||
|
this.media.seek.apply(this.media, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
CiderReceiver.prototype.queueLoad = function(items, options, callback) {
|
||||||
|
this.media.queueLoad.apply(this.media, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
CiderReceiver.prototype.queueInsert = function(items, options, callback) {
|
||||||
|
this.media.queueInsert.apply(this.media, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
CiderReceiver.prototype.queueRemove = function(itemIds, options, callback) {
|
||||||
|
this.media.queueRemove.apply(this.media, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
CiderReceiver.prototype.queueReorder = function(itemIds, options, callback) {
|
||||||
|
this.media.queueReorder.apply(this.media, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
CiderReceiver.prototype.queueUpdate = function(items, callback) {
|
||||||
|
this.media.queueUpdate.apply(this.media, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
CiderReceiver.prototype.sendIp = function(opts){
|
||||||
|
this.mediaReceiver.sendIp.apply(this.mediaReceiver, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
CiderReceiver.prototype.kill = function(opts){
|
||||||
|
this.mediaReceiver.kill.apply(this.mediaReceiver, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = CiderReceiver;
|
|
@ -3,15 +3,36 @@ import * as path from 'path';
|
||||||
import * as electron from 'electron'
|
import * as electron from 'electron'
|
||||||
import {utils} from './utils';
|
import {utils} from './utils';
|
||||||
|
|
||||||
|
//
|
||||||
|
// Hello, this our loader for the various plugins that the Cider Development Team built for our
|
||||||
|
// numerous plugins internally and ones made by the community
|
||||||
|
//
|
||||||
|
// To learn how to make your own, visit https://github.com/ciderapp/Cider/wiki/Plugins
|
||||||
|
//
|
||||||
|
/**
|
||||||
|
* @class
|
||||||
|
* Plugin Loading
|
||||||
|
* @author booploops#7139
|
||||||
|
* @see {@link https://github.com/ciderapp/Cider/wiki/Plugins|Documentation}
|
||||||
|
*/
|
||||||
export class Plugins {
|
export class Plugins {
|
||||||
private basePluginsPath = path.join(__dirname, '../plugins');
|
private basePluginsPath = path.join(__dirname, '../plugins');
|
||||||
private userPluginsPath = path.join(electron.app.getPath('userData'), 'plugins');
|
private userPluginsPath = path.join(electron.app.getPath('userData'), 'Plugins');
|
||||||
private readonly pluginsList: any = {};
|
private readonly pluginsList: any = {};
|
||||||
|
private static PluginMap: any = {};
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.pluginsList = this.getPlugins();
|
this.pluginsList = this.getPlugins();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static getPluginFromMap(plugin: string): any {
|
||||||
|
if(Plugins.PluginMap[plugin]) {
|
||||||
|
return Plugins.PluginMap[plugin];
|
||||||
|
}else{
|
||||||
|
return plugin;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public getPlugins(): any {
|
public getPlugins(): any {
|
||||||
let plugins: any = {};
|
let plugins: any = {};
|
||||||
|
|
||||||
|
@ -23,7 +44,7 @@ export class Plugins {
|
||||||
if (plugins[file] || plugin.name in plugins) {
|
if (plugins[file] || plugin.name in plugins) {
|
||||||
console.log(`[${plugin.name}] Plugin already loaded / Duplicate Class Name`);
|
console.log(`[${plugin.name}] Plugin already loaded / Duplicate Class Name`);
|
||||||
} else {
|
} else {
|
||||||
plugins[file] = new plugin(electron.app, utils.getStore());
|
plugins[file] = new plugin(utils);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -32,13 +53,46 @@ export class Plugins {
|
||||||
|
|
||||||
if (fs.existsSync(this.userPluginsPath)) {
|
if (fs.existsSync(this.userPluginsPath)) {
|
||||||
fs.readdirSync(this.userPluginsPath).forEach(file => {
|
fs.readdirSync(this.userPluginsPath).forEach(file => {
|
||||||
|
// Plugins V1
|
||||||
if (file.endsWith('.ts') || file.endsWith('.js')) {
|
if (file.endsWith('.ts') || file.endsWith('.js')) {
|
||||||
|
if (!electron.app.isPackaged) {
|
||||||
const plugin = require(path.join(this.userPluginsPath, file)).default;
|
const plugin = require(path.join(this.userPluginsPath, file)).default;
|
||||||
file = file.replace('.ts', '').replace('.js', '');
|
file = file.replace('.ts', '').replace('.js', '');
|
||||||
if (plugins[file] || plugin in plugins) {
|
if (plugins[file] || plugin in plugins) {
|
||||||
console.log(`[${plugin.name}] Plugin already loaded / Duplicate Class Name`);
|
console.log(`[${plugin.name}] Plugin already loaded / Duplicate Class Name`);
|
||||||
} else {
|
} else {
|
||||||
plugins[file] = new plugin(electron.app, utils.getStore());
|
plugins[file] = new plugin(utils);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const plugin = require(path.join(this.userPluginsPath, file));
|
||||||
|
file = file.replace('.ts', '').replace('.js', '');
|
||||||
|
if (plugins[file] || plugin in plugins) {
|
||||||
|
console.log(`[${plugin.name}] Plugin already loaded / Duplicate Class Name`);
|
||||||
|
} else {
|
||||||
|
plugins[file] = new plugin(utils);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Plugins V2
|
||||||
|
else if (fs.lstatSync(path.join(this.userPluginsPath, file)).isDirectory()) {
|
||||||
|
const pluginPath = path.join(this.userPluginsPath, file);
|
||||||
|
if (fs.existsSync(path.join(pluginPath, 'package.json'))) {
|
||||||
|
const pluginPackage = require(path.join(pluginPath, "package.json"));
|
||||||
|
const plugin = require(path.join(pluginPath, pluginPackage.main));
|
||||||
|
if (plugins[plugin.name] || plugin.name in plugins) {
|
||||||
|
console.log(`[${plugin.name}] Plugin already loaded / Duplicate Class Name`);
|
||||||
|
} else {
|
||||||
|
Plugins.PluginMap[pluginPackage.name] = file;
|
||||||
|
const pluginEnv = {
|
||||||
|
app: electron.app,
|
||||||
|
store: utils.getStore(),
|
||||||
|
utils: utils,
|
||||||
|
win: utils.getWindow(),
|
||||||
|
dir: pluginPath,
|
||||||
|
dirName: file
|
||||||
|
}
|
||||||
|
plugins[plugin.name] = new plugin(pluginEnv);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -50,7 +104,11 @@ export class Plugins {
|
||||||
public callPlugins(event: string, ...args: any[]) {
|
public callPlugins(event: string, ...args: any[]) {
|
||||||
for (const plugin in this.pluginsList) {
|
for (const plugin in this.pluginsList) {
|
||||||
if (this.pluginsList[plugin][event]) {
|
if (this.pluginsList[plugin][event]) {
|
||||||
|
try{
|
||||||
this.pluginsList[plugin][event](...args);
|
this.pluginsList[plugin][event](...args);
|
||||||
|
}catch(e) {
|
||||||
|
console.log(`[${plugin}] Plugin error: ${e}`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,12 +7,26 @@ export class Store {
|
||||||
private defaults: any = {
|
private defaults: any = {
|
||||||
"general": {
|
"general": {
|
||||||
"close_button_hide": false,
|
"close_button_hide": false,
|
||||||
"open_on_startup": false,
|
|
||||||
"discord_rpc": 1, // 0 = disabled, 1 = enabled as Cider, 2 = enabled as Apple Music
|
"discord_rpc": 1, // 0 = disabled, 1 = enabled as Cider, 2 = enabled as Apple Music
|
||||||
"discord_rpc_clear_on_pause": true,
|
"discord_rpc_clear_on_pause": true,
|
||||||
"language": "en_US", // electron.app.getLocale().replace('-', '_') this can be used in future
|
"language": "en_US", // electron.app.getLocale().replace('-', '_') this can be used in future
|
||||||
"playbackNotifications": true,
|
"playbackNotifications": true,
|
||||||
"update_branch": "main"
|
"update_branch": "main",
|
||||||
|
"resumeOnStartupBehavior": "local",
|
||||||
|
"privateEnabled": false,
|
||||||
|
"themeUpdateNotification": true,
|
||||||
|
"sidebarItems": {
|
||||||
|
"recentlyAdded": true,
|
||||||
|
"songs": true,
|
||||||
|
"albums": true,
|
||||||
|
"artists": true,
|
||||||
|
"videos": true,
|
||||||
|
"podcasts": true
|
||||||
|
},
|
||||||
|
"onStartup": {
|
||||||
|
"enabled": false,
|
||||||
|
"hidden": false,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"home": {
|
"home": {
|
||||||
"followedArtists": [],
|
"followedArtists": [],
|
||||||
|
@ -23,7 +37,12 @@ export class Store {
|
||||||
"sort": "name",
|
"sort": "name",
|
||||||
"sortOrder": "asc",
|
"sortOrder": "asc",
|
||||||
"size": "normal"
|
"size": "normal"
|
||||||
}
|
},
|
||||||
|
"albums": {
|
||||||
|
"sort": "name",
|
||||||
|
"sortOrder": "asc",
|
||||||
|
"viewAs": "covers"
|
||||||
|
},
|
||||||
},
|
},
|
||||||
"audio": {
|
"audio": {
|
||||||
"volume": 1,
|
"volume": 1,
|
||||||
|
@ -34,8 +53,19 @@ export class Store {
|
||||||
"quality": "HIGH",
|
"quality": "HIGH",
|
||||||
"seamless_audio": true,
|
"seamless_audio": true,
|
||||||
"normalization": false,
|
"normalization": false,
|
||||||
|
"maikiwiAudio": {
|
||||||
"ciderPPE": false,
|
"ciderPPE": false,
|
||||||
"ciderPPE_value": 0.5,
|
"ciderPPE_value": "NATURAL",
|
||||||
|
"analogWarmth": false,
|
||||||
|
"analogWarmth_value": "SMOOTH",
|
||||||
|
"spatial": false,
|
||||||
|
"spatialProfile": "420signature-B",
|
||||||
|
"vibrantBass": { // Hard coded into the app. Don't include any of this config into exporting presets in store.ts
|
||||||
|
'frequencies': [17.182, 42.169, 53.763, 112.69, 119.65, 264.59, 336.57, 400.65, 505.48, 612.7, 838.7, 1155.3, 1175.6, 3406.8, 5158.6, 5968.1, 6999.9, 7468.6, 8862.9, 9666, 10109],
|
||||||
|
'Q': [2.5, 0.388, 5, 5, 2.5, 7.071, 14.14, 10, 7.071, 14.14, 8.409, 0.372, 7.071, 10, 16.82, 7.071, 28.28, 20, 8.409, 40, 40],
|
||||||
|
'gain': [-0.34, 2.49, 0.23, -0.49, 0.23, -0.12, 0.32, -0.29, 0.33, 0.19, -0.18, -1.27, -0.11, 0.25, -0.18, -0.53, 0.34, 1.32, 1.78, 0.41, -0.28]
|
||||||
|
}
|
||||||
|
},
|
||||||
"spatial": false,
|
"spatial": false,
|
||||||
"spatial_properties": {
|
"spatial_properties": {
|
||||||
"presets": [],
|
"presets": [],
|
||||||
|
@ -66,12 +96,6 @@ export class Store {
|
||||||
'presets': [],
|
'presets': [],
|
||||||
'userGenerated': false
|
'userGenerated': false
|
||||||
},
|
},
|
||||||
"vibrantBass": { // Hard coded into the app. Don't include any of this config into exporting presets in store.ts
|
|
||||||
'multiplier': 0,
|
|
||||||
'frequencies': [17.182, 42.169, 53.763, 112.69, 119.65, 264.59, 336.57, 400.65, 505.48, 612.7, 838.7, 1155.3, 1175.6, 3406.8, 5158.6, 5968.1, 6999.9, 7468.6, 8862.9, 9666, 10109],
|
|
||||||
'Q': [2.5, 0.388, 5, 5, 2.5, 7.071, 14.14, 10, 7.071, 14.14, 8.409, 0.372, 7.071, 10, 16.82, 7.071, 28.28, 20, 8.409, 40, 40],
|
|
||||||
'gain': [-0.34, 2.49, 0.23, -0.49, 0.23, -0.12, 0.32, -0.29, 0.33, 0.19, -0.18, -1.27, -0.11, 0.25, -0.18, -0.53, 0.34, 1.32, 1.78, 0.41, -0.28]
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"visual": {
|
"visual": {
|
||||||
"theme": "",
|
"theme": "",
|
||||||
|
@ -83,7 +107,11 @@ export class Store {
|
||||||
"bg_artwork_rotation": false,
|
"bg_artwork_rotation": false,
|
||||||
"hw_acceleration": "default", // default, webgpu, disabled
|
"hw_acceleration": "default", // default, webgpu, disabled
|
||||||
"showuserinfo": true,
|
"showuserinfo": true,
|
||||||
"miniplayer_top_toggle": true
|
"transparent": false,
|
||||||
|
"miniplayer_top_toggle": true,
|
||||||
|
"directives": {
|
||||||
|
"windowLayout": "default"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"lyrics": {
|
"lyrics": {
|
||||||
"enable_mxm": false,
|
"enable_mxm": false,
|
||||||
|
@ -101,7 +129,8 @@ export class Store {
|
||||||
},
|
},
|
||||||
"advanced": {
|
"advanced": {
|
||||||
"AudioContext": false,
|
"AudioContext": false,
|
||||||
"experiments": []
|
"experiments": [],
|
||||||
|
"playlistTrackMapping": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private migrations: any = {}
|
private migrations: any = {}
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
import * as fs from "fs";
|
import * as fs from "fs";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
import {jsonc} from "jsonc";
|
|
||||||
import {Store} from "./store";
|
import {Store} from "./store";
|
||||||
import {BrowserWindow as bw} from "./browserwindow";
|
import {BrowserWindow as bw} from "./browserwindow";
|
||||||
import {app} from "electron";
|
import {app, dialog, ipcMain, Notification, shell } from "electron";
|
||||||
|
import fetch from "electron-fetch";
|
||||||
|
import {AppImageUpdater, NsisUpdater} from "electron-updater";
|
||||||
|
import * as log from "electron-log";
|
||||||
|
|
||||||
export class utils {
|
export class utils {
|
||||||
|
|
||||||
|
@ -16,6 +18,7 @@ export class utils {
|
||||||
mainPath: path.join(__dirname, "../../src/main"),
|
mainPath: path.join(__dirname, "../../src/main"),
|
||||||
resourcePath: path.join(__dirname, "../../resources"),
|
resourcePath: path.join(__dirname, "../../resources"),
|
||||||
i18nPath: path.join(__dirname, "../../src/i18n"),
|
i18nPath: path.join(__dirname, "../../src/i18n"),
|
||||||
|
i18nPathSrc: path.join(__dirname, "../../src/il8n/source"),
|
||||||
ciderCache: path.resolve(app.getPath("userData"), "CiderCache"),
|
ciderCache: path.resolve(app.getPath("userData"), "CiderCache"),
|
||||||
themes: path.resolve(app.getPath("userData"), "Themes"),
|
themes: path.resolve(app.getPath("userData"), "Themes"),
|
||||||
plugins: path.resolve(app.getPath("userData"), "Plugins"),
|
plugins: path.resolve(app.getPath("userData"), "Plugins"),
|
||||||
|
@ -30,6 +33,14 @@ export class utils {
|
||||||
return this.paths[name];
|
return this.paths[name];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the app
|
||||||
|
* @returns {Electron.App}
|
||||||
|
*/
|
||||||
|
static getApp(): Electron.App {
|
||||||
|
return app;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetches the i18n locale for the given language.
|
* Fetches the i18n locale for the given language.
|
||||||
* @param language {string} The language to fetch the locale for.
|
* @param language {string} The language to fetch the locale for.
|
||||||
|
@ -37,10 +48,10 @@ export class utils {
|
||||||
* @returns {string | Object} The locale value.
|
* @returns {string | Object} The locale value.
|
||||||
*/
|
*/
|
||||||
static getLocale(language: string, key?: string): string | object {
|
static getLocale(language: string, key?: string): string | object {
|
||||||
let i18n: { [index: string]: Object } = jsonc.parse(fs.readFileSync(path.join(this.paths.i18nPath, "en_US.jsonc"), "utf8"));
|
let i18n: { [index: string]: Object } = JSON.parse(fs.readFileSync(path.join(this.paths.i18nPath, "en_US.json"), "utf8"));
|
||||||
|
|
||||||
if (language !== "en_US" && fs.existsSync(path.join(this.paths.i18nPath, `${language}.jsonc`))) {
|
if (language !== "en_US" && fs.existsSync(path.join(this.paths.i18nPath, `${language}.json`))) {
|
||||||
i18n = Object.assign(i18n, jsonc.parse(fs.readFileSync(path.join(this.paths.i18nPath, `${language}.jsonc`), "utf8")));
|
i18n = Object.assign(i18n, JSON.parse(fs.readFileSync(path.join(this.paths.i18nPath, `${language}.json`), "utf8")));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key) {
|
if (key) {
|
||||||
|
@ -83,6 +94,14 @@ export class utils {
|
||||||
return bw.win
|
return bw.win
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static loadPluginFrontend(path: string): void {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static loadJSFrontend(path: string): void {
|
||||||
|
bw.win.webContents.executeJavaScript(fs.readFileSync(path, "utf8"));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Playback Functions
|
* Playback Functions
|
||||||
*/
|
*/
|
||||||
|
@ -103,4 +122,70 @@ export class utils {
|
||||||
bw.win.webContents.executeJavaScript("MusicKitInterop.previous()")
|
bw.win.webContents.executeJavaScript("MusicKitInterop.previous()")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks the application for updates
|
||||||
|
*/
|
||||||
|
static async checkForUpdate(): Promise<void> {
|
||||||
|
if (!app.isPackaged) {
|
||||||
|
new Notification({ title: "Application Update", body: "Can't update as app is in DEV mode. Please build or grab a copy by clicking me"})
|
||||||
|
.on('click', () => {shell.openExternal('https://download.cider.sh/?utm_source=app&utm_medium=dev-mode-warning')})
|
||||||
|
.show()
|
||||||
|
bw.win.webContents.send('update-response', "update-error")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const options: any = {
|
||||||
|
provider: 'github',
|
||||||
|
protocol: 'https',
|
||||||
|
owner: 'ciderapp',
|
||||||
|
repo: 'cider-releases',
|
||||||
|
allowDowngrade: true,
|
||||||
|
}
|
||||||
|
let autoUpdater: any = null
|
||||||
|
if (process.platform === 'win32') { //Windows
|
||||||
|
autoUpdater = await new NsisUpdater(options)
|
||||||
|
} else {
|
||||||
|
autoUpdater = await new AppImageUpdater(options) //Linux and Mac (AppImages work on macOS btw)
|
||||||
|
}
|
||||||
|
|
||||||
|
autoUpdater.on('checking-for-update', () => {
|
||||||
|
new Notification({ title: "Cider Update", body: "Cider is currently checking for updates."}).show()
|
||||||
|
})
|
||||||
|
|
||||||
|
autoUpdater.on('error', (error: any) => {
|
||||||
|
console.error(`[AutoUpdater] Error: ${error}`)
|
||||||
|
bw.win.webContents.send('update-response', "update-error")
|
||||||
|
})
|
||||||
|
|
||||||
|
autoUpdater.on('update-not-available', () => {
|
||||||
|
console.log('[AutoUpdater] Update not available.')
|
||||||
|
bw.win.webContents.send('update-response', "update-not-available");
|
||||||
|
})
|
||||||
|
autoUpdater.on('download-progress', (event: any, progress: any) => {
|
||||||
|
bw.win.setProgressBar(progress.percent / 100)
|
||||||
|
})
|
||||||
|
|
||||||
|
autoUpdater.on('update-downloaded', (info: any) => {
|
||||||
|
console.log('[AutoUpdater] Update downloaded.')
|
||||||
|
bw.win.webContents.send('update-response', "update-downloaded");
|
||||||
|
const dialogOpts = {
|
||||||
|
type: 'info',
|
||||||
|
buttons: ['Restart', 'Later'],
|
||||||
|
title: 'Application Update',
|
||||||
|
message: info,
|
||||||
|
detail: 'A new version has been downloaded. Restart the application to apply the updates.'
|
||||||
|
}
|
||||||
|
|
||||||
|
dialog.showMessageBox(dialogOpts).then((returnValue) => {
|
||||||
|
if (returnValue.response === 0) autoUpdater.quitAndInstall()
|
||||||
|
})
|
||||||
|
new Notification({ title: "Application Update", body: info}).on('click', () => {
|
||||||
|
bw.win.show()
|
||||||
|
}).show()
|
||||||
|
})
|
||||||
|
|
||||||
|
log.transports.file.level = "debug"
|
||||||
|
autoUpdater.logger = log
|
||||||
|
await autoUpdater.checkForUpdatesAndNotify()
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -61,6 +61,9 @@ export class wsapi {
|
||||||
electron.ipcMain.on('wsapi-returnLyrics', (_event: any, arg: any) => {
|
electron.ipcMain.on('wsapi-returnLyrics', (_event: any, arg: any) => {
|
||||||
this.returnLyrics(JSON.parse(arg));
|
this.returnLyrics(JSON.parse(arg));
|
||||||
});
|
});
|
||||||
|
electron.ipcMain.on('wsapi-returnvolumeMax', (_event: any, arg: any) => {
|
||||||
|
this.returnmaxVolume(JSON.parse(arg));
|
||||||
|
});
|
||||||
this.wss = new WebSocketServer({
|
this.wss = new WebSocketServer({
|
||||||
port: this.port,
|
port: this.port,
|
||||||
perMessageDeflate: {
|
perMessageDeflate: {
|
||||||
|
@ -162,6 +165,10 @@ export class wsapi {
|
||||||
this._win.webContents.executeJavaScript(`MusicKit.getInstance().stop()`);
|
this._win.webContents.executeJavaScript(`MusicKit.getInstance().stop()`);
|
||||||
response.message = "Stopped";
|
response.message = "Stopped";
|
||||||
break;
|
break;
|
||||||
|
case "volumeMax":
|
||||||
|
this._win.webContents.executeJavaScript(`wsapi.getmaxVolume()`);
|
||||||
|
response.message = "maxVolume";
|
||||||
|
break;
|
||||||
case "volume":
|
case "volume":
|
||||||
this._win.webContents.executeJavaScript(`MusicKit.getInstance().volume = ${parseFloat(data.volume)}`);
|
this._win.webContents.executeJavaScript(`MusicKit.getInstance().volume = ${parseFloat(data.volume)}`);
|
||||||
response.message = "Volume";
|
response.message = "Volume";
|
||||||
|
@ -175,11 +182,15 @@ export class wsapi {
|
||||||
response.message = "Unmuted";
|
response.message = "Unmuted";
|
||||||
break;
|
break;
|
||||||
case "next":
|
case "next":
|
||||||
this._win.webContents.executeJavaScript(`MusicKit.getInstance().skipToNextItem()`);
|
this._win.webContents.executeJavaScript(`if (MusicKit.getInstance().queue.nextPlayableItemIndex != -1 && MusicKit.getInstance().queue.nextPlayableItemIndex != null) {
|
||||||
|
try {
|
||||||
|
app.prevButtonBackIndicator = false;
|
||||||
|
} catch (e) { }
|
||||||
|
MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.nextPlayableItemIndex);}`);
|
||||||
response.message = "Next";
|
response.message = "Next";
|
||||||
break;
|
break;
|
||||||
case "previous":
|
case "previous":
|
||||||
this._win.webContents.executeJavaScript(`MusicKit.getInstance().skipToPreviousItem()`);
|
this._win.webContents.executeJavaScript(`if (MusicKit.getInstance().queue.previousPlayableItemIndex != -1 && MusicKit.getInstance().queue.previousPlayableItemIndex != null) {MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.previousPlayableItemIndex)}`);
|
||||||
response.message = "Previous";
|
response.message = "Previous";
|
||||||
break;
|
break;
|
||||||
case "musickit-api":
|
case "musickit-api":
|
||||||
|
@ -295,4 +306,11 @@ export class wsapi {
|
||||||
client.send(JSON.stringify(response));
|
client.send(JSON.stringify(response));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
returnmaxVolume(vol: any) {
|
||||||
|
const response: standardResponse = {status: 0, data: vol, message: "OK", type: "maxVolume"};
|
||||||
|
this.clients.forEach(function each(client: any) {
|
||||||
|
client.send(JSON.stringify(response));
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
require('v8-compile-cache');
|
require('v8-compile-cache');
|
||||||
|
|
||||||
import {app, components, ipcMain} from 'electron';
|
const {app, components, ipcMain} = require('electron');
|
||||||
import {join} from 'path';
|
import {join} from 'path';
|
||||||
|
|
||||||
if (!app.isPackaged) {
|
if (!app.isPackaged) {
|
||||||
|
@ -45,10 +45,17 @@ app.on('ready', () => {
|
||||||
const bw = new BrowserWindow()
|
const bw = new BrowserWindow()
|
||||||
const win = await bw.createWindow()
|
const win = await bw.createWindow()
|
||||||
|
|
||||||
|
app.getGPUInfo("complete").then(gpuInfo => {
|
||||||
|
console.log(gpuInfo)
|
||||||
|
})
|
||||||
|
|
||||||
|
console.log('[Cider][Widevine] Status:', components.status());
|
||||||
|
win.show();
|
||||||
|
|
||||||
win.on("ready-to-show", () => {
|
win.on("ready-to-show", () => {
|
||||||
Cider.bwCreated();
|
Cider.bwCreated();
|
||||||
|
console.debug('[Cider] Window is Ready.')
|
||||||
CiderPlug.callPlugins('onReady', win);
|
CiderPlug.callPlugins('onReady', win);
|
||||||
win.show();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -58,6 +65,10 @@ app.on('ready', () => {
|
||||||
* Renderer Event Handlers
|
* Renderer Event Handlers
|
||||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
||||||
|
|
||||||
|
ipcMain.handle("renderer-ready", (event) => {
|
||||||
|
CiderPlug.callPlugins("onRendererReady", event);
|
||||||
|
})
|
||||||
|
|
||||||
ipcMain.on('playbackStateDidChange', (_event, attributes) => {
|
ipcMain.on('playbackStateDidChange', (_event, attributes) => {
|
||||||
CiderPlug.callPlugins('onPlaybackStateDidChange', attributes);
|
CiderPlug.callPlugins('onPlaybackStateDidChange', attributes);
|
||||||
});
|
});
|
||||||
|
@ -66,6 +77,10 @@ ipcMain.on('nowPlayingItemDidChange', (_event, attributes) => {
|
||||||
CiderPlug.callPlugins('onNowPlayingItemDidChange', attributes);
|
CiderPlug.callPlugins('onNowPlayingItemDidChange', attributes);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ipcMain.on('nowPlayingItemDidChangeLastFM', (_event, attributes) => {
|
||||||
|
CiderPlug.callPlugin('lastfm.js', 'nowPlayingItemDidChangeLastFM', attributes);
|
||||||
|
})
|
||||||
|
|
||||||
app.on('before-quit', () => {
|
app.on('before-quit', () => {
|
||||||
CiderPlug.callPlugins('onBeforeQuit');
|
CiderPlug.callPlugins('onBeforeQuit');
|
||||||
console.warn(`${app.getName()} exited.`);
|
console.warn(`${app.getName()} exited.`);
|
||||||
|
|
362
src/main/plugins/chromecast.ts
Normal file
|
@ -0,0 +1,362 @@
|
||||||
|
import * as electron from 'electron';
|
||||||
|
import * as os from 'os';
|
||||||
|
import {resolve} from 'path';
|
||||||
|
import * as CiderReceiver from '../base/castreceiver';
|
||||||
|
|
||||||
|
export default class ChromecastPlugin {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Private variables for interaction in plugins
|
||||||
|
*/
|
||||||
|
private _win: any;
|
||||||
|
private _app: any;
|
||||||
|
private _lastfm: any;
|
||||||
|
private _store: any;
|
||||||
|
private _timer: any;
|
||||||
|
private audioClient = require('castv2-client').Client;
|
||||||
|
private mdns = require('mdns-js');
|
||||||
|
|
||||||
|
private devices: any = [];
|
||||||
|
private castDevices: any = [];
|
||||||
|
|
||||||
|
// private GCRunning = false;
|
||||||
|
// private GCBuffer: any;
|
||||||
|
// private expectedConnections = 0;
|
||||||
|
// private currentConnections = 0;
|
||||||
|
private activeConnections: any = [];
|
||||||
|
// private requests = [];
|
||||||
|
// private GCstream = new Stream.PassThrough(),
|
||||||
|
private connectedHosts: any = {};
|
||||||
|
private connectedPlayer: any;
|
||||||
|
// private port = false;
|
||||||
|
// private server = false;
|
||||||
|
// private bufcount = 0;
|
||||||
|
// private bufcount2 = 0;
|
||||||
|
// private headerSent = false;
|
||||||
|
|
||||||
|
|
||||||
|
private searchForGCDevices() {
|
||||||
|
try {
|
||||||
|
|
||||||
|
let browser = this.mdns.createBrowser(this.mdns.tcp('googlecast'));
|
||||||
|
browser.on('ready', browser.discover);
|
||||||
|
|
||||||
|
browser.on('update', (service: any) => {
|
||||||
|
if (service.addresses && service.fullname && service.fullname.includes('_googlecast._tcp')) {
|
||||||
|
this.ondeviceup(service.addresses[0], service.fullname.substring(0, service.fullname.indexOf("._googlecast")) + " " + (service.type[0].description ?? ""), '', 'googlecast');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const Client = require('node-ssdp').Client;
|
||||||
|
// also do a SSDP/UPnP search
|
||||||
|
let ssdpBrowser = new Client();
|
||||||
|
ssdpBrowser.on('response', (headers: any, statusCode: any, rinfo: any) => {
|
||||||
|
var location = getLocation(headers);
|
||||||
|
if (location != null) {
|
||||||
|
this.getServiceDescription(location, rinfo.address);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
function getLocation(headers: any) {
|
||||||
|
let location = null;
|
||||||
|
if (headers["LOCATION"] != null) {
|
||||||
|
location = headers["LOCATION"]
|
||||||
|
} else if (headers["Location"] != null) {
|
||||||
|
location = headers["Location"]
|
||||||
|
}
|
||||||
|
return location;
|
||||||
|
}
|
||||||
|
|
||||||
|
ssdpBrowser.search('urn:dial-multiscreen-org:device:dial:1');
|
||||||
|
|
||||||
|
// // actual upnp devices
|
||||||
|
// if (app.cfg.get("audio.enableDLNA")) {
|
||||||
|
// let ssdpBrowser2 = new Client();
|
||||||
|
// ssdpBrowser2.on('response', (headers, statusCode, rinfo) => {
|
||||||
|
// var location = getLocation(headers);
|
||||||
|
// if (location != null) {
|
||||||
|
// this.getServiceDescription(location, rinfo.address);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// });
|
||||||
|
// ssdpBrowser2.search('urn:schemas-upnp-org:device:MediaRenderer:1');
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
console.log('Search GC err', e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private getServiceDescription(url: any, address: any) {
|
||||||
|
const request = require('request');
|
||||||
|
request.get(url, (error: any, response: any, body: any) => {
|
||||||
|
if (!error && response.statusCode === 200) {
|
||||||
|
this.parseServiceDescription(body, address, url);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private ondeviceup(host: any, name: any, location: any, type: any) {
|
||||||
|
if (this.castDevices.findIndex((item: any) => item.host === host && item.name === name && item.location === location && item.type === type) === -1) {
|
||||||
|
this.castDevices.push({
|
||||||
|
name: name,
|
||||||
|
host: host,
|
||||||
|
location: location,
|
||||||
|
type: type
|
||||||
|
});
|
||||||
|
if (this.devices.indexOf(host) === -1) {
|
||||||
|
this.devices.push(host);
|
||||||
|
}
|
||||||
|
if (name) {
|
||||||
|
this._win.webContents.executeJavaScript(`console.log('deviceFound','ip: ${host} name:${name}')`).catch((err: any) => console.error(err));
|
||||||
|
console.log("deviceFound", host, name);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this._win.webContents.executeJavaScript(`console.log('deviceFound (added)','ip: ${host} name:${name}')`).catch((err: any) => console.error(err));
|
||||||
|
console.log("deviceFound (added)", host, name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private parseServiceDescription(body: any, address: any, url: any) {
|
||||||
|
const parseString = require('xml2js').parseString;
|
||||||
|
parseString(body, (err: any, result: any) => {
|
||||||
|
if (!err && result && result.root && result.root.device) {
|
||||||
|
const device = result.root.device[0];
|
||||||
|
console.log('device', device);
|
||||||
|
let devicetype = 'googlecast';
|
||||||
|
console.log()
|
||||||
|
if (device.deviceType && device.deviceType.toString() === 'urn:schemas-upnp-org:device:MediaRenderer:1') {
|
||||||
|
devicetype = 'upnp';
|
||||||
|
}
|
||||||
|
this.ondeviceup(address, device.friendlyName.toString(), url, devicetype);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private loadMedia(client: any, song: any, artist: any, album: any, albumart: any, cb?: any) {
|
||||||
|
// const u = 'http://' + this.getIp() + ':' + server.address().port + '/';
|
||||||
|
// const DefaultMediaReceiver : any = require('castv2-client').DefaultMediaReceiver;
|
||||||
|
client.launch(CiderReceiver, (err: any, player: any) => {
|
||||||
|
if (err) {
|
||||||
|
console.log(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let media = {
|
||||||
|
// Here you can plug an URL to any mp4, webm, mp3 or jpg file with the proper contentType.
|
||||||
|
contentId: 'http://' + this.getIp() + ':9000/audio.wav',
|
||||||
|
contentType: 'audio/wav',
|
||||||
|
streamType: 'LIVE', // or LIVE
|
||||||
|
|
||||||
|
// Title and cover displayed while buffering
|
||||||
|
metadata: {
|
||||||
|
type: 0,
|
||||||
|
metadataType: 3,
|
||||||
|
title: song ?? "",
|
||||||
|
albumName: album ?? "",
|
||||||
|
artist: artist ?? "",
|
||||||
|
images: [
|
||||||
|
{url: albumart ?? ""}]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
player.on('status', (status: any) => {
|
||||||
|
console.log('status broadcast playerState=%s', status);
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('app "%s" launched, loading media %s ...', player, media);
|
||||||
|
|
||||||
|
player.load(media, {
|
||||||
|
autoplay: true
|
||||||
|
}, (err: any, status: any) => {
|
||||||
|
console.log('media loaded playerState=%s', status);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
client.getStatus((x: any, status: any) => {
|
||||||
|
if (status && status.volume) {
|
||||||
|
client.volume = status.volume.level;
|
||||||
|
client.muted = status.volume.muted;
|
||||||
|
client.stepInterval = status.volume.stepInterval;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// send websocket ip
|
||||||
|
|
||||||
|
player.sendIp("ws://" + this.getIp() + ":26369");
|
||||||
|
electron.ipcMain.on('stopGCast', (_event) => {
|
||||||
|
player.kill();
|
||||||
|
})
|
||||||
|
electron.app.on('before-quit', (_event) => {
|
||||||
|
player.kill();
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private getIp(){
|
||||||
|
let ip: string = '';
|
||||||
|
let ip2: any = [];
|
||||||
|
let alias = 0;
|
||||||
|
const ifaces: any = os.networkInterfaces();
|
||||||
|
for (let dev in ifaces) {
|
||||||
|
ifaces[dev].forEach((details: any) => {
|
||||||
|
if (details.family === 'IPv4' && !details.internal) {
|
||||||
|
if (!/(loopback|vmware|internal|hamachi|vboxnet|virtualbox)/gi.test(dev + (alias ? ':' + alias : ''))) {
|
||||||
|
if (details.address.substring(0, 8) === '192.168.' ||
|
||||||
|
details.address.substring(0, 7) === '172.16.' ||
|
||||||
|
details.address.substring(0, 3) === '10.'
|
||||||
|
) {
|
||||||
|
if (!ip.startsWith('192.168.') ||
|
||||||
|
(ip2.startsWith('192.168.') && !ip.startsWith('192.168.')) &&
|
||||||
|
(ip2.startsWith('172.16.') && !ip.startsWith('192.168.') && !ip.startsWith('172.16.')) ||
|
||||||
|
(ip2.startsWith('10.') && !ip.startsWith('192.168.') && !ip.startsWith('172.16.') && !ip.startsWith('10.'))
|
||||||
|
){ip = details.address;}
|
||||||
|
++alias;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return ip;
|
||||||
|
}
|
||||||
|
|
||||||
|
private stream(device: any, song: any, artist: any, album: any, albumart: any) {
|
||||||
|
let castMode = 'googlecast';
|
||||||
|
let UPNPDesc = '';
|
||||||
|
castMode = device.type;
|
||||||
|
UPNPDesc = device.location;
|
||||||
|
|
||||||
|
let client;
|
||||||
|
if (castMode === 'googlecast') {
|
||||||
|
let client = new this.audioClient();
|
||||||
|
client.volume = 100;
|
||||||
|
client.stepInterval = 0.5;
|
||||||
|
client.muted = false;
|
||||||
|
|
||||||
|
client.connect(device.host, () => {
|
||||||
|
// console.log('connected, launching app ...', 'http://' + this.getIp() + ':' + server.address().port + '/');
|
||||||
|
if (!this.connectedHosts[device.host]) {
|
||||||
|
this.connectedHosts[device.host] = client;
|
||||||
|
this.activeConnections.push(client);
|
||||||
|
}
|
||||||
|
this.loadMedia(client, song, artist, album, albumart);
|
||||||
|
});
|
||||||
|
|
||||||
|
client.on('close', () => {
|
||||||
|
console.info("Client Closed");
|
||||||
|
for (let i = this.activeConnections.length - 1; i >= 0; i--) {
|
||||||
|
if (this.activeConnections[i] === client) {
|
||||||
|
this.activeConnections.splice(i, 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
client.on('error', (err: any) => {
|
||||||
|
console.log('Error: %s', err.message);
|
||||||
|
client.close();
|
||||||
|
delete this.connectedHosts[device.host];
|
||||||
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// upnp devices
|
||||||
|
//try {
|
||||||
|
// client = new MediaRendererClient(UPNPDesc);
|
||||||
|
// const options = {
|
||||||
|
// autoplay: true,
|
||||||
|
// contentType: 'audio/x-wav',
|
||||||
|
// dlnaFeatures: 'DLNA.ORG_PN=-;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01700000000000000000000000000000',
|
||||||
|
// metadata: {
|
||||||
|
// title: 'Apple Music Electron',
|
||||||
|
// creator: 'Streaming ...',
|
||||||
|
// type: 'audio', // can be 'video', 'audio' or 'image'
|
||||||
|
// // url: 'http://' + getIp() + ':' + server.address().port + '/',
|
||||||
|
// // protocolInfo: 'DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000;
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
|
||||||
|
// client.load('http://' + getIp() + ':' + server.address().port + '/a.wav', options, function (err, _result) {
|
||||||
|
// if (err) throw err;
|
||||||
|
// console.log('playing ...');
|
||||||
|
// });
|
||||||
|
|
||||||
|
// } catch (e) {
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async setupGCServer() {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base Plugin Details (Eventually implemented into a GUI in settings)
|
||||||
|
*/
|
||||||
|
public name: string = 'Chromecast';
|
||||||
|
public description: string = 'LastFM plugin for Cider';
|
||||||
|
public version: string = '0.0.1';
|
||||||
|
public author: string = 'vapormusic / Cider Collective';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs on plugin load (Currently run on application start)
|
||||||
|
*/
|
||||||
|
constructor(utils: { getApp: () => any; getStore: () => any; }) {
|
||||||
|
this._app = utils.getApp();
|
||||||
|
this._store = utils.getStore()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs on app ready
|
||||||
|
*/
|
||||||
|
onReady(win: any): void {
|
||||||
|
this._win = win;
|
||||||
|
electron.ipcMain.on('getKnownCastDevices', (event) => {
|
||||||
|
event.returnValue = this.castDevices
|
||||||
|
});
|
||||||
|
|
||||||
|
electron.ipcMain.on('performGCCast', (event, device, song, artist, album, albumart) => {
|
||||||
|
// this.setupGCServer().then( () => {
|
||||||
|
this._win.webContents.setAudioMuted(true);
|
||||||
|
console.log(device);
|
||||||
|
this.stream(device, song, artist, album, albumart);
|
||||||
|
// })
|
||||||
|
});
|
||||||
|
|
||||||
|
electron.ipcMain.on('getChromeCastDevices', (_event, _data) => {
|
||||||
|
this.searchForGCDevices();
|
||||||
|
});
|
||||||
|
|
||||||
|
electron.ipcMain.on('stopGCast', (_event) => {
|
||||||
|
this._win.webContents.setAudioMuted(false);
|
||||||
|
this.activeConnections.forEach((client: any) => {
|
||||||
|
try{
|
||||||
|
client.stop();
|
||||||
|
} catch(e){}
|
||||||
|
})
|
||||||
|
this.activeConnections = [];
|
||||||
|
this.connectedHosts = {};
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs on app stop
|
||||||
|
*/
|
||||||
|
onBeforeQuit(): void {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs on song change
|
||||||
|
* @param attributes Music Attributes
|
||||||
|
*/
|
||||||
|
onNowPlayingItemDidChange(attributes: any): void {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,4 +1,6 @@
|
||||||
import * as RPC from 'discord-rpc'
|
import * as RPC from 'discord-rpc'
|
||||||
|
import {ipcMain} from "electron";
|
||||||
|
import fetch from 'electron-fetch'
|
||||||
|
|
||||||
export default class DiscordRichPresence {
|
export default class DiscordRichPresence {
|
||||||
|
|
||||||
|
@ -6,6 +8,8 @@ export default class DiscordRichPresence {
|
||||||
* Private variables for interaction in plugins
|
* Private variables for interaction in plugins
|
||||||
*/
|
*/
|
||||||
private static _store: any;
|
private static _store: any;
|
||||||
|
private _app: any;
|
||||||
|
private _attributes: any;
|
||||||
private static _connection: boolean = false;
|
private static _connection: boolean = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -29,6 +33,7 @@ export default class DiscordRichPresence {
|
||||||
smallImageText: '',
|
smallImageText: '',
|
||||||
instance: false
|
instance: false
|
||||||
};
|
};
|
||||||
|
|
||||||
private _activityCache: RPC.Presence = {
|
private _activityCache: RPC.Presence = {
|
||||||
details: '',
|
details: '',
|
||||||
state: '',
|
state: '',
|
||||||
|
@ -58,7 +63,6 @@ export default class DiscordRichPresence {
|
||||||
|
|
||||||
// Create the client
|
// Create the client
|
||||||
this._client = new RPC.Client({transport: "ipc"});
|
this._client = new RPC.Client({transport: "ipc"});
|
||||||
|
|
||||||
// Runs on Ready
|
// Runs on Ready
|
||||||
this._client.on('ready', () => {
|
this._client.on('ready', () => {
|
||||||
console.info(`[DiscordRPC][connect] Successfully Connected to Discord. Authed for user: ${this._client.user.id}.`);
|
console.info(`[DiscordRPC][connect] Successfully Connected to Discord. Authed for user: ${this._client.user.id}.`);
|
||||||
|
@ -70,6 +74,12 @@ export default class DiscordRichPresence {
|
||||||
this.disconnect()
|
this.disconnect()
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// If Discord is closed, allow reconnecting
|
||||||
|
this._client.transport.once('close', () => {
|
||||||
|
console.info(`[DiscordRichPresence] Connection closed`);
|
||||||
|
this.disconnect()
|
||||||
|
});
|
||||||
|
|
||||||
// Login to Discord
|
// Login to Discord
|
||||||
this._client.login({clientId})
|
this._client.login({clientId})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
@ -82,12 +92,17 @@ export default class DiscordRichPresence {
|
||||||
* Disconnects from Discord RPC
|
* Disconnects from Discord RPC
|
||||||
*/
|
*/
|
||||||
private disconnect() {
|
private disconnect() {
|
||||||
if (!this._client) return;
|
if (!this._client) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
this._client.destroy().then(() => {
|
this._client.destroy().then(() => {
|
||||||
DiscordRichPresence._connection = false;
|
DiscordRichPresence._connection = false;
|
||||||
console.log('[DiscordRPC][disconnect] Disconnected from discord.')
|
console.log('[DiscordRPC][disconnect] Disconnected from discord.')
|
||||||
}).catch((e: any) => console.error(`[DiscordRPC][disconnect] ${e}`));
|
}).catch((e: any) => console.error(`[DiscordRPC][disconnect] ${e}`));
|
||||||
|
|
||||||
|
// Clean up, allow creating a new connection
|
||||||
|
this._client = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -101,7 +116,7 @@ export default class DiscordRichPresence {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check large image
|
// Check large image
|
||||||
if (activity.largeImageKey === null || activity.largeImageKey === ""){
|
if (activity.largeImageKey == null || activity.largeImageKey === "" || activity.largeImageKey.length > 256) {
|
||||||
activity.largeImageKey = "cider";
|
activity.largeImageKey = "cider";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,7 +135,7 @@ export default class DiscordRichPresence {
|
||||||
delete activity.largeImageText
|
delete activity.largeImageText
|
||||||
}
|
}
|
||||||
|
|
||||||
activity.buttons.forEach((key: {label: string, url: string}, _v: Number) => {
|
activity.buttons.forEach((key: { label: string, url: string }, _v: Number) => {
|
||||||
if (key.url.includes('undefined') || key.url.includes('no-id-found')) {
|
if (key.url.includes('undefined') || key.url.includes('no-id-found')) {
|
||||||
activity.buttons.splice(key, 1);
|
activity.buttons.splice(key, 1);
|
||||||
}
|
}
|
||||||
|
@ -133,7 +148,13 @@ export default class DiscordRichPresence {
|
||||||
* @param {object} attributes
|
* @param {object} attributes
|
||||||
*/
|
*/
|
||||||
private updateActivity(attributes: any) {
|
private updateActivity(attributes: any) {
|
||||||
if (!this._client) return;
|
if (DiscordRichPresence._store.general.discord_rpc == 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this._client) {
|
||||||
|
this.connect(DiscordRichPresence._store.general.discord_rpc == 1 ? '911790844204437504' : '886578863147192350')
|
||||||
|
}
|
||||||
|
|
||||||
if (!DiscordRichPresence._connection) {
|
if (!DiscordRichPresence._connection) {
|
||||||
this._client.clearActivity().catch((e: any) => console.error(`[DiscordRichPresence][clearActivity] ${e}`));
|
this._client.clearActivity().catch((e: any) => console.error(`[DiscordRichPresence][clearActivity] ${e}`));
|
||||||
|
@ -143,15 +164,15 @@ export default class DiscordRichPresence {
|
||||||
this._activity = {
|
this._activity = {
|
||||||
details: attributes.name,
|
details: attributes.name,
|
||||||
state: `${attributes.artistName ? `by ${attributes.artistName}` : ''}`,
|
state: `${attributes.artistName ? `by ${attributes.artistName}` : ''}`,
|
||||||
startTimestamp: attributes.startTime,
|
startTimestamp: Date.now() - (attributes?.durationInMillis - attributes?.remainingTime),
|
||||||
endTimestamp: attributes.endTime,
|
endTimestamp: attributes.endTime,
|
||||||
largeImageKey: attributes.artwork.url.replace('{w}', '1024').replace('{h}', '1024'),
|
largeImageKey: attributes?.artwork?.url?.replace('{w}', '1024').replace('{h}', '1024'),
|
||||||
largeImageText: attributes.albumName,
|
largeImageText: attributes.albumName,
|
||||||
instance: false, // Whether the activity is in a game session
|
instance: false, // Whether the activity is in a game session
|
||||||
buttons: [
|
buttons: [
|
||||||
{label: "Listen on Cider", url: attributes.url.cider},
|
{label: "Listen on Cider", url: attributes.url.cider},
|
||||||
{label: "View on Apple Music", url: attributes.url.appleMusic},
|
{label: "View on Apple Music", url: attributes.url.appleMusic},
|
||||||
]
|
] //To change attributes.url => preload/cider-preload.js
|
||||||
};
|
};
|
||||||
|
|
||||||
this._activity = this.filterActivity(this._activity, attributes)
|
this._activity = this.filterActivity(this._activity, attributes)
|
||||||
|
@ -169,7 +190,6 @@ export default class DiscordRichPresence {
|
||||||
this._client.setActivity(this._activity)
|
this._client.setActivity(this._activity)
|
||||||
.catch((e: any) => console.error(`[DiscordRichPresence][setActivity] ${e}`));
|
.catch((e: any) => console.error(`[DiscordRichPresence][setActivity] ${e}`));
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (this._activity && this._activityCache !== this._activity && this._activity.details) {
|
} else if (this._activity && this._activityCache !== this._activity && this._activity.details) {
|
||||||
if (!DiscordRichPresence._store.general.discord_rpc_clear_on_pause) {
|
if (!DiscordRichPresence._store.general.discord_rpc_clear_on_pause) {
|
||||||
this._activity.smallImageKey = 'play';
|
this._activity.smallImageKey = 'play';
|
||||||
|
@ -190,17 +210,37 @@ export default class DiscordRichPresence {
|
||||||
/**
|
/**
|
||||||
* Runs on plugin load (Currently run on application start)
|
* Runs on plugin load (Currently run on application start)
|
||||||
*/
|
*/
|
||||||
constructor(_app: any, store: any) {
|
constructor(utils: { getStore: () => any; getApp: () => any; }) {
|
||||||
DiscordRichPresence._store = store
|
DiscordRichPresence._store = utils.getStore();
|
||||||
console.debug(`[Plugin][${this.name}] Loading Complete.`);
|
console.debug(`[Plugin][${this.name}] Loading Complete.`);
|
||||||
|
this._app = utils.getApp();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs on app ready
|
* Runs on app ready
|
||||||
*/
|
*/
|
||||||
onReady(_win: any): void {
|
onReady(_win: any): void {
|
||||||
|
let self = this
|
||||||
this.connect((DiscordRichPresence._store.general.discord_rpc == 1) ? '911790844204437504' : '886578863147192350');
|
this.connect((DiscordRichPresence._store.general.discord_rpc == 1) ? '911790844204437504' : '886578863147192350');
|
||||||
console.debug(`[Plugin][${this.name}] Ready.`);
|
console.debug(`[Plugin][${this.name}] Ready.`);
|
||||||
|
ipcMain.on('updateRPCImage', (_event, imageurl) => {
|
||||||
|
if (!DiscordRichPresence._store.general.privateEnabled) {
|
||||||
|
fetch('https://api.cider.sh/v1/images', {
|
||||||
|
|
||||||
|
method: 'POST',
|
||||||
|
body: JSON.stringify({url: imageurl}),
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'User-Agent': _win.webContents.getUserAgent()
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then(res => res.json())
|
||||||
|
.then(function (json) {
|
||||||
|
self._attributes["artwork"]["url"] = json.url
|
||||||
|
self.updateActivity(self._attributes)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -215,14 +255,20 @@ export default class DiscordRichPresence {
|
||||||
* @param attributes Music Attributes (attributes.status = current state)
|
* @param attributes Music Attributes (attributes.status = current state)
|
||||||
*/
|
*/
|
||||||
onPlaybackStateDidChange(attributes: object): void {
|
onPlaybackStateDidChange(attributes: object): void {
|
||||||
|
if (!DiscordRichPresence._store.general.privateEnabled) {
|
||||||
|
this._attributes = attributes
|
||||||
this.updateActivity(attributes)
|
this.updateActivity(attributes)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs on song change
|
* Runs on song change
|
||||||
* @param attributes Music Attributes
|
* @param attributes Music Attributes
|
||||||
*/
|
*/
|
||||||
onNowPlayingItemDidChange(attributes: object): void {
|
onNowPlayingItemDidChange(attributes: object): void {
|
||||||
|
if (!DiscordRichPresence._store.general.privateEnabled) {
|
||||||
|
this._attributes = attributes
|
||||||
this.updateActivity(attributes)
|
this.updateActivity(attributes)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ export default class LastFMPlugin {
|
||||||
private _app: any;
|
private _app: any;
|
||||||
private _lastfm: any;
|
private _lastfm: any;
|
||||||
private _store: any;
|
private _store: any;
|
||||||
|
private _timer: any;
|
||||||
|
|
||||||
private authenticateFromFile() {
|
private authenticateFromFile() {
|
||||||
let sessionData = require(this.sessionPath)
|
let sessionData = require(this.sessionPath)
|
||||||
|
@ -77,27 +78,32 @@ export default class LastFMPlugin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async scrobbleSong(attributes: any) {
|
private scrobbleSong(attributes: any) {
|
||||||
await new Promise(resolve => setTimeout(resolve, Math.round(attributes.durationInMillis * (this._store.lastfm.scrobble_after / 100))));
|
if (this._timer) clearTimeout(this._timer);
|
||||||
|
var self = this;
|
||||||
|
this._timer = setTimeout(async () => {
|
||||||
const currentAttributes = attributes;
|
const currentAttributes = attributes;
|
||||||
|
|
||||||
if (!this._lastfm || this._lastfm.cachedAttributes === attributes) {
|
if (!self._lastfm || self._lastfm.cachedAttributes === attributes) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this._lastfm.cachedAttributes) {
|
if (self._lastfm.cachedAttributes) {
|
||||||
if (this._lastfm.cachedAttributes.playParams.id === attributes.playParams.id) return;
|
if (self._lastfm.cachedAttributes.playParams.id === attributes.playParams.id) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const artist = await this.getPrimaryArtist(attributes)
|
||||||
|
const album = this.getAlbumName(attributes)
|
||||||
|
|
||||||
if (currentAttributes.status && currentAttributes === attributes) {
|
if (currentAttributes.status && currentAttributes === attributes) {
|
||||||
if (fs.existsSync(this.sessionPath)) {
|
if (fs.existsSync(this.sessionPath)) {
|
||||||
// Scrobble playing song.
|
// Scrobble playing song.
|
||||||
if (attributes.status === true) {
|
if (attributes.status === true) {
|
||||||
this._lastfm.track.scrobble({
|
self._lastfm.track.scrobble({
|
||||||
'artist': this.filterArtistName(attributes.artistName),
|
'artist': artist,
|
||||||
'track': attributes.name,
|
'track': attributes.name,
|
||||||
'album': attributes.albumName,
|
'album': album,
|
||||||
'albumArtist': this.filterArtistName(attributes.artistName),
|
'albumArtist': artist,
|
||||||
'timestamp': new Date().getTime() / 1000
|
'timestamp': new Date().getTime() / 1000
|
||||||
}, function (err: any, scrobbled: any) {
|
}, function (err: any, scrobbled: any) {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
@ -106,35 +112,18 @@ export default class LastFMPlugin {
|
||||||
|
|
||||||
console.log('[LastFM] Successfully scrobbled: ', scrobbled);
|
console.log('[LastFM] Successfully scrobbled: ', scrobbled);
|
||||||
});
|
});
|
||||||
this._lastfm.cachedAttributes = attributes
|
self._lastfm.cachedAttributes = attributes
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.authenticate();
|
self.authenticate();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return console.log('[LastFM] Did not add ', attributes.name, '—', this.filterArtistName(attributes.artistName), 'because now playing a other song.');
|
return console.log('[LastFM] Did not add ', attributes.name, '—', artist, 'because now playing a other song.');
|
||||||
}
|
}
|
||||||
|
}, Math.round(attributes.durationInMillis * Math.min((self._store.lastfm.scrobble_after / 100), 0.8)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private filterArtistName(artist: any) {
|
private async updateNowPlayingSong(attributes: any) {
|
||||||
if (!this._store.lastfm.enabledRemoveFeaturingArtists) return artist;
|
|
||||||
|
|
||||||
artist = artist.split(' ');
|
|
||||||
if (artist.includes('&')) {
|
|
||||||
artist.length = artist.indexOf('&');
|
|
||||||
}
|
|
||||||
if (artist.includes('and')) {
|
|
||||||
artist.length = artist.indexOf('and');
|
|
||||||
}
|
|
||||||
artist = artist.join(' ');
|
|
||||||
if (artist.includes(',')) {
|
|
||||||
artist = artist.split(',')
|
|
||||||
artist = artist[0]
|
|
||||||
}
|
|
||||||
return artist.charAt(0).toUpperCase() + artist.slice(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
private updateNowPlayingSong(attributes: any) {
|
|
||||||
if (!this._lastfm || this._lastfm.cachedNowPlayingAttributes === attributes || !this._store.lastfm.NowPlaying) {
|
if (!this._lastfm || this._lastfm.cachedNowPlayingAttributes === attributes || !this._store.lastfm.NowPlaying) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -144,13 +133,16 @@ export default class LastFMPlugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fs.existsSync(this.sessionPath)) {
|
if (fs.existsSync(this.sessionPath)) {
|
||||||
|
const artist = await this.getPrimaryArtist(attributes)
|
||||||
|
const album = this.getAlbumName(attributes)
|
||||||
|
|
||||||
// update Now Playing
|
// update Now Playing
|
||||||
if (attributes.status === true) {
|
if (attributes.status === true) {
|
||||||
this._lastfm.track.updateNowPlaying({
|
this._lastfm.track.updateNowPlaying({
|
||||||
'artist': this.filterArtistName(attributes.artistName),
|
'artist': artist,
|
||||||
'track': attributes.name,
|
'track': attributes.name,
|
||||||
'album': attributes.albumName,
|
'album': album,
|
||||||
'albumArtist': this.filterArtistName(attributes.artistName)
|
'albumArtist': artist
|
||||||
}, function (err: any, nowPlaying: any) {
|
}, function (err: any, nowPlaying: any) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return console.error('[LastFM] An error occurred while updating nowPlayingSong', err);
|
return console.error('[LastFM] An error occurred while updating nowPlayingSong', err);
|
||||||
|
@ -166,6 +158,44 @@ export default class LastFMPlugin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private getAlbumName(attributes: any): string {
|
||||||
|
return attributes.albumName.replace(/ - Single| - EP/g, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
private async getPrimaryArtist(attributes: any) {
|
||||||
|
const songId = attributes.playParams.catalogId || attributes.playParams.id
|
||||||
|
|
||||||
|
if (!this._store.lastfm.enabledRemoveFeaturingArtists || !songId) return attributes.artistName;
|
||||||
|
|
||||||
|
const res = await this._win.webContents.executeJavaScript(`
|
||||||
|
(async () => {
|
||||||
|
const subMk = await MusicKit.getInstance().api.v3.music("/v1/catalog/" + MusicKit.getInstance().storefrontId + "/songs/${songId}", {
|
||||||
|
include: {
|
||||||
|
songs: ["artists"]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (!subMk) console.error('[LastFM] Request failed: /v1/catalog/us/songs/${songId}')
|
||||||
|
return subMk.data
|
||||||
|
})()
|
||||||
|
`).catch(console.error)
|
||||||
|
if (!res) return attributes.artistName
|
||||||
|
|
||||||
|
const data = res.data
|
||||||
|
if (!data.length) {
|
||||||
|
console.error(`[LastFM] Unable to locate song with id of ${songId}`)
|
||||||
|
return attributes.artistName;
|
||||||
|
}
|
||||||
|
|
||||||
|
const artists = res.data[0].relationships.artists.data
|
||||||
|
if (!artists.length) {
|
||||||
|
console.error(`[LastFM] Unable to find artists related to the song with id of ${songId}`)
|
||||||
|
return attributes.artistName;
|
||||||
|
}
|
||||||
|
|
||||||
|
const primaryArtist = artists[0]
|
||||||
|
return primaryArtist.attributes.name
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base Plugin Details (Eventually implemented into a GUI in settings)
|
* Base Plugin Details (Eventually implemented into a GUI in settings)
|
||||||
*/
|
*/
|
||||||
|
@ -177,10 +207,10 @@ export default class LastFMPlugin {
|
||||||
/**
|
/**
|
||||||
* Runs on plugin load (Currently run on application start)
|
* Runs on plugin load (Currently run on application start)
|
||||||
*/
|
*/
|
||||||
constructor(app: any, store: any) {
|
constructor(utils: { getApp: () => any; getStore: () => any; }) {
|
||||||
this._app = app;
|
this._app = utils.getApp();
|
||||||
this._store = store
|
this._store = utils.getStore()
|
||||||
electron.app.on('second-instance', (_e: any, argv: any) => {
|
utils.getApp().on('second-instance', (_e: any, argv: any) => {
|
||||||
// Checks if first instance is authorized and if second instance has protocol args
|
// Checks if first instance is authorized and if second instance has protocol args
|
||||||
argv.forEach((value: any) => {
|
argv.forEach((value: any) => {
|
||||||
if (value.includes('auth')) {
|
if (value.includes('auth')) {
|
||||||
|
@ -229,25 +259,20 @@ export default class LastFMPlugin {
|
||||||
console.log('Example plugin stopped');
|
console.log('Example plugin stopped');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Runs on playback State Change
|
|
||||||
* @param attributes Music Attributes (attributes.status = current state)
|
|
||||||
*/
|
|
||||||
onPlaybackStateDidChange(attributes: object): void {
|
|
||||||
this.scrobbleSong(attributes)
|
|
||||||
this.updateNowPlayingSong(attributes)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs on song change
|
* Runs on song change
|
||||||
* @param attributes Music Attributes
|
* @param attributes Music Attributes
|
||||||
*/
|
*/
|
||||||
onNowPlayingItemDidChange(attributes: object): void {
|
nowPlayingItemDidChangeLastFM(attributes: any): void {
|
||||||
if (!this._store.lastfm.filterLoop){
|
if (!this._store.general.privateEnabled) {
|
||||||
|
attributes.status = true
|
||||||
|
if (!this._store.lastfm.filterLoop) {
|
||||||
this._lastfm.cachedNowPlayingAttributes = false;
|
this._lastfm.cachedNowPlayingAttributes = false;
|
||||||
this._lastfm.cachedAttributes = false}
|
this._lastfm.cachedAttributes = false
|
||||||
this.scrobbleSong(attributes)
|
}
|
||||||
this.updateNowPlayingSong(attributes)
|
this.updateNowPlayingSong(attributes)
|
||||||
|
this.scrobbleSong(attributes)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
import {app, Menu, shell} from "electron";
|
import {app, Menu, shell} from "electron";
|
||||||
|
import {utils} from "../base/utils";
|
||||||
|
|
||||||
export default class Thumbar {
|
export default class Thumbar {
|
||||||
/**
|
/**
|
||||||
|
@ -14,7 +15,7 @@ export default class Thumbar {
|
||||||
public name: string = 'Menubar Plugin';
|
public name: string = 'Menubar Plugin';
|
||||||
public description: string = 'Creates the menubar';
|
public description: string = 'Creates the menubar';
|
||||||
public version: string = '1.0.0';
|
public version: string = '1.0.0';
|
||||||
public author: string = 'Core / Quack';
|
public author: string = 'Core / Quacksire';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Thumbnail Toolbar Assets
|
* Thumbnail Toolbar Assets
|
||||||
|
@ -34,19 +35,28 @@ export default class Thumbar {
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
private isMac: boolean = process.platform === 'darwin';
|
private isMac: boolean = process.platform === 'darwin';
|
||||||
private menubarTemplate: any = [
|
private _menuTemplate: any = [
|
||||||
{
|
{
|
||||||
label: app.getName(),
|
label: app.getName(),
|
||||||
submenu: [
|
submenu: [
|
||||||
{ role: 'about' },
|
{
|
||||||
{ type: 'separator' },
|
label: 'About',
|
||||||
{ role: 'services' },
|
click: () => this._win.webContents.executeJavaScript(`app.appRoute('about')`)
|
||||||
{ type: 'separator' },
|
},
|
||||||
{ role: 'hide' },
|
{type: 'separator'},
|
||||||
{ role: 'hideOthers' },
|
{
|
||||||
{ role: 'unhide' },
|
label: 'Settings',
|
||||||
{ type: 'separator' },
|
accelerator: 'CommandOrControl+,',
|
||||||
{ role: 'quit' }
|
click: () => this._win.webContents.executeJavaScript(`app.appRoute('settings')`)
|
||||||
|
},
|
||||||
|
{type: 'separator'},
|
||||||
|
{role: 'services'},
|
||||||
|
{type: 'separator'},
|
||||||
|
{role: 'hide'},
|
||||||
|
{role: 'hideOthers'},
|
||||||
|
{role: 'unhide'},
|
||||||
|
{type: 'separator'},
|
||||||
|
{role: 'quit'}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -67,15 +77,30 @@ export default class Thumbar {
|
||||||
label: 'Window',
|
label: 'Window',
|
||||||
submenu: [
|
submenu: [
|
||||||
{role: 'minimize'},
|
{role: 'minimize'},
|
||||||
|
{
|
||||||
|
label: 'Show',
|
||||||
|
click: () => utils.getWindow().show()
|
||||||
|
},
|
||||||
{role: 'zoom'},
|
{role: 'zoom'},
|
||||||
...(this.isMac ? [
|
...(this.isMac ? [
|
||||||
{type: 'separator'},
|
{type: 'separator'},
|
||||||
{role: 'front'},
|
{role: 'front'},
|
||||||
{type: 'separator'},
|
{role: 'close'},
|
||||||
{role: 'window'}
|
|
||||||
] : [
|
] : [
|
||||||
{role: 'close'}
|
{role: 'close'},
|
||||||
]),
|
]),
|
||||||
|
|
||||||
|
{
|
||||||
|
label: 'Edit',
|
||||||
|
submenu: [
|
||||||
|
{role: 'undo'},
|
||||||
|
{role: 'redo'},
|
||||||
|
{type: 'separator'},
|
||||||
|
{role: 'cut'},
|
||||||
|
{role: 'copy'},
|
||||||
|
{role: 'paste'},
|
||||||
|
]
|
||||||
|
},
|
||||||
{type: 'separator'},
|
{type: 'separator'},
|
||||||
{
|
{
|
||||||
label: 'Web Remote',
|
label: 'Web Remote',
|
||||||
|
@ -89,10 +114,11 @@ export default class Thumbar {
|
||||||
click: () => this._win.webContents.executeJavaScript(`app.modals.audioSettings = true`)
|
click: () => this._win.webContents.executeJavaScript(`app.modals.audioSettings = true`)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Settings',
|
label: 'Plug-in Menu',
|
||||||
accelerator: 'CommandOrControl+,',
|
accelerator: 'CommandOrControl+Shift+P',
|
||||||
click: () => this._win.webContents.executeJavaScript(`app.appRoute('settings')`)
|
click: () => this._win.webContents.executeJavaScript(`app.modals.pluginMenu = true`)
|
||||||
}
|
}
|
||||||
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -101,7 +127,7 @@ export default class Thumbar {
|
||||||
{
|
{
|
||||||
label: 'Pause / Play',
|
label: 'Pause / Play',
|
||||||
accelerator: 'Space',
|
accelerator: 'Space',
|
||||||
click: () => this._win.webContents.executeJavaScript(`MusicKitInterop.playPause()`)
|
click: () => this._win.webContents.executeJavaScript(`app.SpacePause()`)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Next',
|
label: 'Next',
|
||||||
|
@ -113,7 +139,7 @@ export default class Thumbar {
|
||||||
accelerator: 'CommandOrControl+Left',
|
accelerator: 'CommandOrControl+Left',
|
||||||
click: () => this._win.webContents.executeJavaScript(`MusicKitInterop.previous()`)
|
click: () => this._win.webContents.executeJavaScript(`MusicKitInterop.previous()`)
|
||||||
},
|
},
|
||||||
{ type: 'separator' },
|
{type: 'separator'},
|
||||||
{
|
{
|
||||||
label: 'Volume Up',
|
label: 'Volume Up',
|
||||||
accelerator: 'CommandOrControl+Up',
|
accelerator: 'CommandOrControl+Up',
|
||||||
|
@ -123,6 +149,12 @@ export default class Thumbar {
|
||||||
label: 'Volume Down',
|
label: 'Volume Down',
|
||||||
accelerator: 'CommandOrControl+Down',
|
accelerator: 'CommandOrControl+Down',
|
||||||
click: () => this._win.webContents.executeJavaScript(`app.volumeDown()`)
|
click: () => this._win.webContents.executeJavaScript(`app.volumeDown()`)
|
||||||
|
},
|
||||||
|
{type: 'separator'},
|
||||||
|
{
|
||||||
|
label: 'Cast To Devices',
|
||||||
|
accelerator: 'CommandOrControl+Shift+C',
|
||||||
|
click: () => this._win.webContents.executeJavaScript(`app.modals.castMenu = true`)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -151,10 +183,6 @@ export default class Thumbar {
|
||||||
label: 'GitHub Wiki',
|
label: 'GitHub Wiki',
|
||||||
click: () => shell.openExternal("https://github.com/ciderapp/Cider/wiki/Troubleshooting").catch(console.error)
|
click: () => shell.openExternal("https://github.com/ciderapp/Cider/wiki/Troubleshooting").catch(console.error)
|
||||||
},
|
},
|
||||||
{
|
|
||||||
label: 'About',
|
|
||||||
click: () => this._win.webContents.executeJavaScript(`app.appRoute('about')`)
|
|
||||||
},
|
|
||||||
{type: 'separator'},
|
{type: 'separator'},
|
||||||
{
|
{
|
||||||
label: 'Report a...',
|
label: 'Report a...',
|
||||||
|
@ -199,9 +227,9 @@ export default class Thumbar {
|
||||||
/**
|
/**
|
||||||
* Runs on plugin load (Currently run on application start)
|
* Runs on plugin load (Currently run on application start)
|
||||||
*/
|
*/
|
||||||
constructor(app: any, store: any) {
|
constructor(utils: { getApp: () => any; getStore: () => any; }) {
|
||||||
this._app = app;
|
this._app = utils.getApp();
|
||||||
this._store = store
|
this._store = utils.getStore();
|
||||||
console.debug(`[Plugin][${this.name}] Loading Complete.`);
|
console.debug(`[Plugin][${this.name}] Loading Complete.`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,7 +238,8 @@ export default class Thumbar {
|
||||||
*/
|
*/
|
||||||
onReady(win: Electron.BrowserWindow): void {
|
onReady(win: Electron.BrowserWindow): void {
|
||||||
this._win = win;
|
this._win = win;
|
||||||
Menu.setApplicationMenu(Menu.buildFromTemplate(this.menubarTemplate))
|
const menu = Menu.buildFromTemplate(this._menuTemplate);
|
||||||
|
Menu.setApplicationMenu(menu)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import * as Player from 'mpris-service';
|
import * as Player from 'mpris-service';
|
||||||
|
|
||||||
export default class MPRIS {
|
export default class mpris {
|
||||||
/**
|
/**
|
||||||
* Private variables for interaction in plugins
|
* Private variables for interaction in plugins
|
||||||
*/
|
*/
|
||||||
private _win: any;
|
private static utils: any;
|
||||||
private _app: any;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base Plugin Details (Eventually implemented into a GUI in settings)
|
* Base Plugin Details (Eventually implemented into a GUI in settings)
|
||||||
|
@ -19,8 +18,8 @@ export default class MPRIS {
|
||||||
/**
|
/**
|
||||||
* MPRIS Service
|
* MPRIS Service
|
||||||
*/
|
*/
|
||||||
private mpris: any;
|
private static player: Player.Player;
|
||||||
private mprisEvents: Object = {
|
private static mprisEvents: Object = {
|
||||||
"playpause": "playPause",
|
"playpause": "playPause",
|
||||||
"play": "play",
|
"play": "play",
|
||||||
"pause": "pause",
|
"pause": "pause",
|
||||||
|
@ -34,13 +33,12 @@ export default class MPRIS {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs a media event
|
* Runs a media event
|
||||||
* @param type - pausePlay, nextTrack, PreviousTrack
|
* @param type - pausePlay, next, previous
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
private runMediaEvent(type: string) {
|
private static runMediaEvent(type: string) {
|
||||||
if (this._win) {
|
console.debug(`[Plugin][${this.name}] ${type}.`);
|
||||||
this._win.webContents.executeJavaScript(`MusicKitInterop.${type}()`).catch(console.error)
|
mpris.utils.getWindow().webContents.executeJavaScript(`MusicKitInterop.${type}()`).catch(console.error)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -60,91 +58,89 @@ export default class MPRIS {
|
||||||
/**
|
/**
|
||||||
* Connects to MPRIS Service
|
* Connects to MPRIS Service
|
||||||
*/
|
*/
|
||||||
@MPRIS.linuxOnly
|
private static connect() {
|
||||||
private connect() {
|
|
||||||
this.mpris = Player({
|
const player = Player({
|
||||||
name: 'Cider',
|
name: 'cider',
|
||||||
identity: 'Cider',
|
identity: 'Cider',
|
||||||
supportedUriSchemes: [],
|
supportedUriSchemes: [],
|
||||||
supportedMimeTypes: [],
|
supportedMimeTypes: [],
|
||||||
supportedInterfaces: ['player']
|
supportedInterfaces: ['player']
|
||||||
});
|
});
|
||||||
this.mpris = Object.assign(this.mpris, {
|
|
||||||
canQuit: true,
|
|
||||||
canControl: true,
|
|
||||||
canPause: true,
|
|
||||||
canPlay: true,
|
|
||||||
canGoNext: true,
|
|
||||||
active: true
|
|
||||||
})
|
|
||||||
|
|
||||||
|
console.debug(`[Plugin][${mpris.name}] Successfully connected.`);
|
||||||
|
|
||||||
const pos_atr = {durationInMillis: 0};
|
const pos_atr = {durationInMillis: 0};
|
||||||
this.mpris.getPosition = function () {
|
player.getPosition = function () {
|
||||||
const durationInMicro = pos_atr.durationInMillis * 1000;
|
const durationInMicro = pos_atr.durationInMillis * 1000;
|
||||||
const percentage = parseFloat("0") || 0;
|
const percentage = parseFloat("0") || 0;
|
||||||
return durationInMicro * percentage;
|
return durationInMicro * percentage;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const [key, value] of Object.entries(this.mprisEvents)) {
|
for (const [key, value] of Object.entries(mpris.mprisEvents)) {
|
||||||
this.mpris.on(key, () => {
|
player.on(key, function () {
|
||||||
this.runMediaEvent(value)
|
mpris.runMediaEvent(value)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
player.on('quit', function () {
|
||||||
|
process.exit();
|
||||||
|
});
|
||||||
|
|
||||||
|
mpris.player = player;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update MPRIS Player Attributes
|
* Update M.P.R.I.S Player Attributes
|
||||||
*/
|
*/
|
||||||
@MPRIS.linuxOnly
|
private static updatePlayer(attributes: any) {
|
||||||
private updatePlayer(attributes: any) {
|
|
||||||
|
|
||||||
const MetaData = {
|
const MetaData = {
|
||||||
'mpris:trackid': this.mpris.objectPath(`track/${attributes.playParams.id.replace(/[.]+/g, "")}`),
|
'mpris:trackid': mpris.player.objectPath(`track/${attributes.playParams.id.replace(/[.]+/g, "")}`),
|
||||||
'mpris:length': attributes.durationInMillis * 1000, // In microseconds
|
'mpris:length': attributes.durationInMillis * 1000, // In microseconds
|
||||||
'mpris:artUrl': (attributes.artwork.url.replace('/{w}x{h}bb', '/512x512bb')).replace('/2000x2000bb', '/35x35bb'),
|
'mpris:artUrl': (attributes.artwork.url.replace('/{w}x{h}bb', '/512x512bb')).replace('/2000x2000bb', '/35x35bb'),
|
||||||
'xesam:title': `${attributes.name}`,
|
'xesam:title': `${attributes.name}`,
|
||||||
'xesam:album': `${attributes.albumName}`,
|
'xesam:album': `${attributes.albumName}`,
|
||||||
'xesam:artist': [`${attributes.artistName}`,],
|
'xesam:artist': [`${attributes.artistName}`],
|
||||||
'xesam:genre': attributes.genreNames
|
'xesam:genre': attributes.genreNames
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.mpris.metadata["mpris:trackid"] === MetaData["mpris:trackid"]) {
|
if (mpris.player.metadata["mpris:trackid"] === MetaData["mpris:trackid"]) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
this.mpris.metadata = MetaData
|
mpris.player.metadata = MetaData;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update MPRIS Player State
|
* Update M.P.R.I.S Player State
|
||||||
* @private
|
* @private
|
||||||
* @param attributes
|
* @param attributes
|
||||||
*/
|
*/
|
||||||
@MPRIS.linuxOnly
|
private static updatePlayerState(attributes: any) {
|
||||||
private updatePlayerState(attributes: any) {
|
switch (attributes.status) {
|
||||||
|
case true: // Playing
|
||||||
let status = 'Stopped';
|
mpris.player.playbackStatus = Player.PLAYBACK_STATUS_PLAYING;
|
||||||
if (attributes.status) {
|
break;
|
||||||
status = 'Playing';
|
case false: // Paused
|
||||||
} else if (attributes.status === false) {
|
mpris.player.playbackStatus = Player.PLAYBACK_STATUS_PAUSED;
|
||||||
status = 'Paused';
|
break;
|
||||||
|
default:
|
||||||
|
mpris.player.playbackStatus = Player.PLAYBACK_STATUS_STOPPED;
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.mpris.playbackStatus === status) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.mpris.playbackStatus = status;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear state
|
* Clear state
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
private clearState() {
|
private static clearState() {
|
||||||
this.mpris.metadata = {'mpris:trackid': '/org/mpris/MediaPlayer2/TrackList/NoTrack'}
|
if (!mpris.player) {
|
||||||
this.mpris.playbackStatus = 'Stopped';
|
return
|
||||||
|
}
|
||||||
|
mpris.player.metadata = {'mpris:trackid': '/org/mpris/MediaPlayer2/TrackList/NoTrack'}
|
||||||
|
mpris.player.playbackStatus = Player.PLAYBACK_STATUS_STOPPED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -155,42 +151,55 @@ export default class MPRIS {
|
||||||
/**
|
/**
|
||||||
* Runs on plugin load (Currently run on application start)
|
* Runs on plugin load (Currently run on application start)
|
||||||
*/
|
*/
|
||||||
constructor(app: any, _store: any) {
|
constructor(utils: any) {
|
||||||
this._app = app;
|
mpris.utils = utils
|
||||||
console.debug(`[Plugin][${this.name}] Loading Complete.`);
|
|
||||||
|
console.debug(`[Plugin][${mpris.name}] Loading Complete.`);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs on app ready
|
* Runs on app ready
|
||||||
*/
|
*/
|
||||||
onReady(win: any): void {
|
@mpris.linuxOnly
|
||||||
this._win = win;
|
onReady(_: any): void {
|
||||||
console.debug(`[Plugin][${this.name}] Ready.`);
|
console.debug(`[Plugin][${mpris.name}] Ready.`);
|
||||||
this.connect()
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renderer ready
|
||||||
|
*/
|
||||||
|
@mpris.linuxOnly
|
||||||
|
onRendererReady(): void {
|
||||||
|
mpris.connect()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs on app stop
|
* Runs on app stop
|
||||||
*/
|
*/
|
||||||
|
@mpris.linuxOnly
|
||||||
onBeforeQuit(): void {
|
onBeforeQuit(): void {
|
||||||
console.debug(`[Plugin][${this.name}] Stopped.`);
|
console.debug(`[Plugin][${mpris.name}] Stopped.`);
|
||||||
this.clearState()
|
mpris.clearState()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs on playback State Change
|
* Runs on playback State Change
|
||||||
* @param attributes Music Attributes (attributes.status = current state)
|
* @param attributes Music Attributes (attributes.status = current state)
|
||||||
*/
|
*/
|
||||||
|
@mpris.linuxOnly
|
||||||
onPlaybackStateDidChange(attributes: object): void {
|
onPlaybackStateDidChange(attributes: object): void {
|
||||||
this.updatePlayerState(attributes)
|
console.debug(`[Plugin][${mpris.name}] onPlaybackStateDidChange.`);
|
||||||
|
mpris.updatePlayerState(attributes)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs on song change
|
* Runs on song change
|
||||||
* @param attributes Music Attributes
|
* @param attributes Music Attributes
|
||||||
*/
|
*/
|
||||||
|
@mpris.linuxOnly
|
||||||
onNowPlayingItemDidChange(attributes: object): void {
|
onNowPlayingItemDidChange(attributes: object): void {
|
||||||
this.updatePlayer(attributes);
|
console.debug(`[Plugin][${mpris.name}] onMetadataDidChange.`);
|
||||||
|
mpris.updatePlayer(attributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,6 @@ export default class Thumbar {
|
||||||
/**
|
/**
|
||||||
* Update the thumbnail toolbar
|
* Update the thumbnail toolbar
|
||||||
*/
|
*/
|
||||||
@Thumbar.windowsOnly
|
|
||||||
private updateButtons(attributes: any) {
|
private updateButtons(attributes: any) {
|
||||||
|
|
||||||
console.log(attributes)
|
console.log(attributes)
|
||||||
|
@ -94,14 +93,15 @@ export default class Thumbar {
|
||||||
/**
|
/**
|
||||||
* Runs on plugin load (Currently run on application start)
|
* Runs on plugin load (Currently run on application start)
|
||||||
*/
|
*/
|
||||||
constructor(app: any, _store: any) {
|
constructor(utils: { getApp: () => any; }) {
|
||||||
this._app = app;
|
this._app = utils.getApp();
|
||||||
console.debug(`[Plugin][${this.name}] Loading Complete.`);
|
console.debug(`[Plugin][${this.name}] Loading Complete.`);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs on app ready
|
* Runs on app ready
|
||||||
*/
|
*/
|
||||||
|
@Thumbar.windowsOnly
|
||||||
onReady(win: Electron.BrowserWindow): void {
|
onReady(win: Electron.BrowserWindow): void {
|
||||||
this._win = win;
|
this._win = win;
|
||||||
console.debug(`[Plugin][${this.name}] Ready.`);
|
console.debug(`[Plugin][${this.name}] Ready.`);
|
||||||
|
@ -110,6 +110,7 @@ export default class Thumbar {
|
||||||
/**
|
/**
|
||||||
* Runs on app stop
|
* Runs on app stop
|
||||||
*/
|
*/
|
||||||
|
@Thumbar.windowsOnly
|
||||||
onBeforeQuit(): void {
|
onBeforeQuit(): void {
|
||||||
console.debug(`[Plugin][${this.name}] Stopped.`);
|
console.debug(`[Plugin][${this.name}] Stopped.`);
|
||||||
}
|
}
|
||||||
|
@ -118,6 +119,7 @@ export default class Thumbar {
|
||||||
* Runs on playback State Change
|
* Runs on playback State Change
|
||||||
* @param attributes Music Attributes (attributes.status = current state)
|
* @param attributes Music Attributes (attributes.status = current state)
|
||||||
*/
|
*/
|
||||||
|
@Thumbar.windowsOnly
|
||||||
onPlaybackStateDidChange(attributes: object): void {
|
onPlaybackStateDidChange(attributes: object): void {
|
||||||
this.updateButtons(attributes)
|
this.updateButtons(attributes)
|
||||||
}
|
}
|
||||||
|
@ -126,6 +128,7 @@ export default class Thumbar {
|
||||||
* Runs on song change
|
* Runs on song change
|
||||||
* @param attributes Music Attributes
|
* @param attributes Music Attributes
|
||||||
*/
|
*/
|
||||||
|
@Thumbar.windowsOnly
|
||||||
onNowPlayingItemDidChange(attributes: object): void {
|
onNowPlayingItemDidChange(attributes: object): void {
|
||||||
this.updateButtons(attributes)
|
this.updateButtons(attributes)
|
||||||
}
|
}
|
||||||
|
|
244
src/main/plugins/webNowPlaying.ts
Normal file
|
@ -0,0 +1,244 @@
|
||||||
|
import * as WebSocket from 'ws';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 0-pad a number.
|
||||||
|
* @param {Number} number
|
||||||
|
* @param {Number} length
|
||||||
|
* @returns String
|
||||||
|
*/
|
||||||
|
const pad = (number: number, length: number) => String(number).padStart(length, '0');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert seconds to a time string acceptable to Rainmeter
|
||||||
|
* https://github.com/tjhrulz/WebNowPlaying-BrowserExtension/blob/master/WebNowPlaying.js#L50-L59
|
||||||
|
* @param {Number} timeInSeconds
|
||||||
|
* @returns String
|
||||||
|
*/
|
||||||
|
const convertTimeToString = (timeInSeconds: number) => {
|
||||||
|
const timeInMinutes = Math.floor(timeInSeconds / 60);
|
||||||
|
if (timeInMinutes < 60) {
|
||||||
|
return timeInMinutes + ":" + pad(Math.floor(timeInSeconds % 60), 2);
|
||||||
|
}
|
||||||
|
return Math.floor(timeInMinutes / 60) + ":" + pad(Math.floor(timeInMinutes % 60), 2) + ":" + pad(Math.floor(timeInSeconds % 60), 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default class WebNowPlaying {
|
||||||
|
/**
|
||||||
|
* Base Plugin Details (Eventually implemented into a GUI in settings)
|
||||||
|
*/
|
||||||
|
public name: string = 'WebNowPlaying';
|
||||||
|
public description: string = 'Song info and playback control for the Rainmeter WebNowPlaying plugin.';
|
||||||
|
public version: string = '1.0.1';
|
||||||
|
public author: string = 'Zennn <me@jozen.blue>';
|
||||||
|
|
||||||
|
private _win: any;
|
||||||
|
private ws?: WebSocket;
|
||||||
|
private wsapiConn?: WebSocket;
|
||||||
|
private playerName: string = 'Cider';
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
console.debug(`[Plugin][${this.name}] Loading Complete.`);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Blocks non-windows systems from running this plugin
|
||||||
|
* @private
|
||||||
|
* @decorator
|
||||||
|
*/
|
||||||
|
private static windowsOnly(_target: any, _propertyKey: string, descriptor: PropertyDescriptor) {
|
||||||
|
if (process.platform !== 'win32') {
|
||||||
|
descriptor.value = () => void 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private sendSongInfo(attributes: any) {
|
||||||
|
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) return;
|
||||||
|
|
||||||
|
const fields = ['STATE', 'TITLE', 'ARTIST', 'ALBUM', 'COVER', 'DURATION', 'POSITION', 'VOLUME', 'REPEAT', 'SHUFFLE'];
|
||||||
|
fields.forEach((field) => {
|
||||||
|
try {
|
||||||
|
let value: any = '';
|
||||||
|
switch (field) {
|
||||||
|
case 'STATE':
|
||||||
|
value = attributes.status ? 1 : 2;
|
||||||
|
break;
|
||||||
|
case 'TITLE':
|
||||||
|
value = attributes.name;
|
||||||
|
break;
|
||||||
|
case 'ARTIST':
|
||||||
|
value = attributes.artistName;
|
||||||
|
break;
|
||||||
|
case 'ALBUM':
|
||||||
|
value = attributes.albumName;
|
||||||
|
break;
|
||||||
|
case 'COVER':
|
||||||
|
value = attributes.artwork.url.replace('{w}', attributes.artwork.width).replace('{h}', attributes.artwork.height);
|
||||||
|
break;
|
||||||
|
case 'DURATION':
|
||||||
|
value = convertTimeToString(attributes.durationInMillis / 1000);
|
||||||
|
break;
|
||||||
|
case 'POSITION':
|
||||||
|
value = convertTimeToString((attributes.durationInMillis - attributes.remainingTime) / 1000);
|
||||||
|
break;
|
||||||
|
case 'VOLUME':
|
||||||
|
value = attributes.volume * 100;
|
||||||
|
break;
|
||||||
|
case 'REPEAT':
|
||||||
|
value = attributes.repeatMode;
|
||||||
|
break;
|
||||||
|
case 'SHUFFLE':
|
||||||
|
value = attributes.shuffleMode;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
this.ws?.send(`${field}:${value}`);
|
||||||
|
} catch (error) {
|
||||||
|
if (this.ws?.readyState === WebSocket.OPEN) {
|
||||||
|
this.ws.send(`Error:Error updating ${field} for ${this.playerName}`);
|
||||||
|
this.ws.send(`ErrorD:${error}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private fireEvent(evt: WebSocket.MessageEvent) {
|
||||||
|
if (!evt.data) return;
|
||||||
|
const data = <string>evt.data;
|
||||||
|
|
||||||
|
let value: string = '';
|
||||||
|
if (data.split(/ (.+)/).length > 1) {
|
||||||
|
value = data.split(/ (.+)/)[1];
|
||||||
|
}
|
||||||
|
const eventName = data.split(' ')[0].toLowerCase();
|
||||||
|
|
||||||
|
try {
|
||||||
|
switch (eventName) {
|
||||||
|
case 'playpause':
|
||||||
|
this._win.webContents.executeJavaScript('MusicKitInterop.playPause()').catch(console.error);
|
||||||
|
break;
|
||||||
|
case 'next':
|
||||||
|
this._win.webContents.executeJavaScript('MusicKitInterop.next()').catch(console.error);
|
||||||
|
break;
|
||||||
|
case 'previous':
|
||||||
|
this._win.webContents.executeJavaScript('MusicKitInterop.previous()').catch(console.error);
|
||||||
|
break;
|
||||||
|
case 'setposition':
|
||||||
|
this._win.webContents.executeJavaScript(`MusicKit.getInstance().seekToTime(${parseFloat(value)})`);
|
||||||
|
break;
|
||||||
|
case 'setvolume':
|
||||||
|
this._win.webContents.executeJavaScript(`MusicKit.getInstance().volume = ${parseFloat(value) / 100}`);
|
||||||
|
break;
|
||||||
|
case 'repeat':
|
||||||
|
this._win.webContents.executeJavaScript('wsapi.toggleRepeat()').catch(console.error);
|
||||||
|
break;
|
||||||
|
case 'shuffle':
|
||||||
|
this._win.webContents.executeJavaScript('wsapi.toggleShuffle()').catch(console.error);
|
||||||
|
break;
|
||||||
|
case 'togglethumbsup':
|
||||||
|
// not implemented
|
||||||
|
break;
|
||||||
|
case 'togglethumbsdown':
|
||||||
|
// not implemented
|
||||||
|
break;
|
||||||
|
case 'rating':
|
||||||
|
// not implemented
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.debug(error);
|
||||||
|
if (this.ws?.readyState === WebSocket.OPEN) {
|
||||||
|
this.ws.send(`Error:Error sending event to ${this.playerName}`);
|
||||||
|
this.ws.send(`ErrorD:${error}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs on app ready
|
||||||
|
*/
|
||||||
|
@WebNowPlaying.windowsOnly
|
||||||
|
public onReady(win: any) {
|
||||||
|
this._win = win;
|
||||||
|
|
||||||
|
// Connect to Rainmeter plugin and retry on disconnect.
|
||||||
|
const init = () => {
|
||||||
|
try {
|
||||||
|
this.ws = new WebSocket('ws://127.0.0.1:8974/');
|
||||||
|
let retry: NodeJS.Timeout;
|
||||||
|
this.ws.onopen = () => {
|
||||||
|
console.info('[WebNowPlaying] Connected to Rainmeter');
|
||||||
|
this.ws?.send(`PLAYER:${this.playerName}`);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.ws.onclose = () => {
|
||||||
|
clearTimeout(retry);
|
||||||
|
retry = setTimeout(init, 2000);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.ws.onerror = () => {
|
||||||
|
clearTimeout(retry);
|
||||||
|
this.ws?.close();
|
||||||
|
};
|
||||||
|
|
||||||
|
this.ws.onmessage = this.fireEvent?.bind(this);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
init();
|
||||||
|
|
||||||
|
// Connect to wsapi. Only used to update progress.
|
||||||
|
try {
|
||||||
|
this.wsapiConn = new WebSocket('ws://127.0.0.1:26369/');
|
||||||
|
|
||||||
|
this.wsapiConn.onopen = () => {
|
||||||
|
console.info('[WebNowPlaying] Connected to wsapi');
|
||||||
|
};
|
||||||
|
|
||||||
|
this.wsapiConn.onmessage = (evt: WebSocket.MessageEvent) => {
|
||||||
|
const response = JSON.parse(<string>evt.data);
|
||||||
|
if (response.type === 'playbackStateUpdate') {
|
||||||
|
this.sendSongInfo(response.data);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.debug(`[Plugin][${this.name}] Ready.`);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs on app stop
|
||||||
|
*/
|
||||||
|
@WebNowPlaying.windowsOnly
|
||||||
|
public onBeforeQuit() {
|
||||||
|
if (this.ws) {
|
||||||
|
this.ws.send('STATE:0');
|
||||||
|
this.ws.onclose = () => void 0; // disable onclose handler first to stop it from retrying
|
||||||
|
this.ws.close();
|
||||||
|
}
|
||||||
|
if (this.wsapiConn) {
|
||||||
|
this.wsapiConn.close();
|
||||||
|
}
|
||||||
|
console.debug(`[Plugin][${this.name}] Stopped.`);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs on playback State Change
|
||||||
|
* @param attributes Music Attributes (attributes.status = current state)
|
||||||
|
*/
|
||||||
|
@WebNowPlaying.windowsOnly
|
||||||
|
public onPlaybackStateDidChange(attributes: any) {
|
||||||
|
this.sendSongInfo(attributes);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs on song change
|
||||||
|
* @param attributes Music Attributes
|
||||||
|
*/
|
||||||
|
@WebNowPlaying.windowsOnly
|
||||||
|
public onNowPlayingItemDidChange(attributes: any) {
|
||||||
|
this.sendSongInfo(attributes);
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,9 +7,10 @@ let cache = {playParams: {id: 0}, status: null, remainingTime: 0},
|
||||||
const MusicKitInterop = {
|
const MusicKitInterop = {
|
||||||
init: function () {
|
init: function () {
|
||||||
MusicKit.getInstance().addEventListener(MusicKit.Events.playbackStateDidChange, () => {
|
MusicKit.getInstance().addEventListener(MusicKit.Events.playbackStateDidChange, () => {
|
||||||
if (MusicKitInterop.filterTrack(MusicKitInterop.getAttributes(), true, false)) {
|
const attributes = MusicKitInterop.getAttributes()
|
||||||
global.ipcRenderer.send('playbackStateDidChange', MusicKitInterop.getAttributes())
|
if (MusicKitInterop.filterTrack(attributes, true, false)) {
|
||||||
ipcRenderer.send('wsapi-updatePlaybackState', MusicKitInterop.getAttributes());
|
global.ipcRenderer.send('playbackStateDidChange', attributes)
|
||||||
|
global.ipcRenderer.send('wsapi-updatePlaybackState', attributes);
|
||||||
// if (typeof _plugins != "undefined") {
|
// if (typeof _plugins != "undefined") {
|
||||||
// _plugins.execute("OnPlaybackStateChanged", {Attributes: MusicKitInterop.getAttributes()})
|
// _plugins.execute("OnPlaybackStateChanged", {Attributes: MusicKitInterop.getAttributes()})
|
||||||
// }
|
// }
|
||||||
|
@ -22,9 +23,19 @@ const MusicKitInterop = {
|
||||||
});
|
});
|
||||||
/** wsapi */
|
/** wsapi */
|
||||||
|
|
||||||
MusicKit.getInstance().addEventListener(MusicKit.Events.nowPlayingItemDidChange, () => {
|
MusicKit.getInstance().addEventListener(MusicKit.Events.nowPlayingItemDidChange, async () => {
|
||||||
if (MusicKitInterop.filterTrack(MusicKitInterop.getAttributes(), false, true) || !app.cfg.lastfm.filterLoop) {
|
console.log('nowPlayingItemDidChange')
|
||||||
global.ipcRenderer.send('nowPlayingItemDidChange', MusicKitInterop.getAttributes());
|
const attributes = MusicKitInterop.getAttributes()
|
||||||
|
const trackFilter = MusicKitInterop.filterTrack(attributes, false, true)
|
||||||
|
|
||||||
|
if (trackFilter) {
|
||||||
|
global.ipcRenderer.send('nowPlayingItemDidChange', attributes);
|
||||||
|
}
|
||||||
|
|
||||||
|
// LastFM's Custom Call
|
||||||
|
await MusicKitInterop.modifyNamesOnLocale();
|
||||||
|
if (trackFilter || !app.cfg.lastfm.filterLoop) {
|
||||||
|
global.ipcRenderer.send('nowPlayingItemDidChangeLastFM', attributes);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -36,7 +47,28 @@ const MusicKitInterop = {
|
||||||
console.warn(`[mediaPlaybackError] ${e}`);
|
console.warn(`[mediaPlaybackError] ${e}`);
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
async modifyNamesOnLocale() {
|
||||||
|
if (app.mklang === '' || app.mklang == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const mk = MusicKit.getInstance()
|
||||||
|
const nowPlayingItem = mk.nowPlayingItem;
|
||||||
|
if ((nowPlayingItem?._songId ?? nowPlayingItem?.songId) == null){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const id = nowPlayingItem?._songId ?? (nowPlayingItem?.songId ?? nowPlayingItem?.id)
|
||||||
|
if (id != null && id !== -1) {
|
||||||
|
try{
|
||||||
|
const query = await mk.api.v3.music(`/v1${(((nowPlayingItem?._songId ?? nowPlayingItem?.songId) != null) && ((nowPlayingItem?._songId ?? nowPlayingItem?.songId) !== -1)) ? `/catalog/${mk.storefrontId}/` : `/me/library/`}songs/${id}?l=${app.mklang}`);
|
||||||
|
if (query?.data?.data[0]){
|
||||||
|
let attrs = query?.data?.data[0]?.attributes;
|
||||||
|
if (attrs?.name) { nowPlayingItem.attributes.name = attrs?.name ?? ''}
|
||||||
|
if (attrs?.albumName) { nowPlayingItem.attributes.albumName = attrs?.albumName ?? ''}
|
||||||
|
if (attrs?.artistName) { nowPlayingItem.attributes.artistName = attrs?.artistName ?? ''}
|
||||||
|
|
||||||
|
}} catch (e) { }
|
||||||
|
} else {}
|
||||||
|
},
|
||||||
getAttributes: function () {
|
getAttributes: function () {
|
||||||
const mk = MusicKit.getInstance()
|
const mk = MusicKit.getInstance()
|
||||||
const nowPlayingItem = mk.nowPlayingItem;
|
const nowPlayingItem = mk.nowPlayingItem;
|
||||||
|
@ -44,15 +76,15 @@ const MusicKitInterop = {
|
||||||
const remainingTimeExport = mk.currentPlaybackTimeRemaining;
|
const remainingTimeExport = mk.currentPlaybackTimeRemaining;
|
||||||
const attributes = (nowPlayingItem != null ? nowPlayingItem.attributes : {});
|
const attributes = (nowPlayingItem != null ? nowPlayingItem.attributes : {});
|
||||||
|
|
||||||
attributes.status = isPlayingExport ?? false;
|
attributes.status = isPlayingExport ?? null;
|
||||||
attributes.name = attributes?.name ?? 'No Title Found';
|
attributes.name = attributes?.name ?? 'no-title-found';
|
||||||
attributes.artwork = attributes?.artwork ?? {url: ''};
|
attributes.artwork = attributes?.artwork ?? {url: ''};
|
||||||
attributes.artwork.url = (attributes?.artwork?.url ?? '').replace(`{f}`, "png");
|
attributes.artwork.url = (attributes?.artwork?.url ?? '').replace(`{f}`, "png");
|
||||||
attributes.playParams = attributes?.playParams ?? {id: 'no-id-found'};
|
attributes.playParams = attributes?.playParams ?? {id: 'no-id-found'};
|
||||||
attributes.playParams.id = attributes?.playParams?.id ?? 'no-id-found';
|
attributes.playParams.id = attributes?.playParams?.id ?? 'no-id-found';
|
||||||
attributes.url = {
|
attributes.url = {
|
||||||
cider: `cider://play/s/${nowPlayingItem?._songId ?? 'no-id-found'}`,
|
cider: `https://cider.sh/link?play/s/${nowPlayingItem?._songId ?? (nowPlayingItem?.songId ??'no-id-found')}`,
|
||||||
appleMusic: attributes.websiteUrl ? attributes.websiteUrl : `https://music.apple.com/${mk.storefrontId}/song/${nowPlayingItem?._songId ?? 'no-id-found'}`
|
appleMusic: attributes.websiteUrl ? attributes.websiteUrl : `https://music.apple.com/${mk.storefrontId}/song/${nowPlayingItem?._songId ?? (nowPlayingItem?.songId ??'no-id-found')}`
|
||||||
}
|
}
|
||||||
if (attributes.playParams.id === 'no-id-found') {
|
if (attributes.playParams.id === 'no-id-found') {
|
||||||
attributes.playParams.id = nowPlayingItem?.id ?? 'no-id-found';
|
attributes.playParams.id = nowPlayingItem?.id ?? 'no-id-found';
|
||||||
|
@ -74,7 +106,7 @@ const MusicKitInterop = {
|
||||||
},
|
},
|
||||||
|
|
||||||
filterTrack: function (a, playbackCheck, mediaCheck) {
|
filterTrack: function (a, playbackCheck, mediaCheck) {
|
||||||
if (a.title === "No Title Found" || a.playParams.id === "no-id-found") {
|
if (a.name === 'no-title-found' || a.playParams.id === "no-id-found") {
|
||||||
return;
|
return;
|
||||||
} else if (mediaCheck && a.playParams.id === cache.playParams.id) {
|
} else if (mediaCheck && a.playParams.id === cache.playParams.id) {
|
||||||
return;
|
return;
|
||||||
|
@ -89,7 +121,7 @@ const MusicKitInterop = {
|
||||||
},
|
},
|
||||||
|
|
||||||
play: () => {
|
play: () => {
|
||||||
MusicKit.getInstance().play().then(r => console.log(`[MusicKitInterop.play] ${r}`));
|
MusicKit.getInstance().play().catch(console.error);
|
||||||
},
|
},
|
||||||
|
|
||||||
pause: () => {
|
pause: () => {
|
||||||
|
@ -100,15 +132,22 @@ const MusicKitInterop = {
|
||||||
if (MusicKit.getInstance().isPlaying) {
|
if (MusicKit.getInstance().isPlaying) {
|
||||||
MusicKit.getInstance().pause();
|
MusicKit.getInstance().pause();
|
||||||
} else if (MusicKit.getInstance().nowPlayingItem != null) {
|
} else if (MusicKit.getInstance().nowPlayingItem != null) {
|
||||||
MusicKit.getInstance().play().then(r => console.log(`[MusicKitInterop.playPause] Playing ${r}`));
|
MusicKit.getInstance().play().catch(console.error);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
next: () => {
|
next: () => {
|
||||||
|
// try {
|
||||||
|
// app.prevButtonBackIndicator = false;
|
||||||
|
// } catch (e) { }
|
||||||
|
// if (MusicKit.getInstance().queue.nextPlayableItemIndex != -1 && MusicKit.getInstance().queue.nextPlayableItemIndex != null)
|
||||||
|
// MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.nextPlayableItemIndex);
|
||||||
MusicKit.getInstance().skipToNextItem().then(r => console.log(`[MusicKitInterop.next] Skipping to Next ${r}`));
|
MusicKit.getInstance().skipToNextItem().then(r => console.log(`[MusicKitInterop.next] Skipping to Next ${r}`));
|
||||||
},
|
},
|
||||||
|
|
||||||
previous: () => {
|
previous: () => {
|
||||||
|
// if (MusicKit.getInstance().queue.previousPlayableItemIndex != -1 && MusicKit.getInstance().queue.previousPlayableItemIndex != null)
|
||||||
|
// MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.previousPlayableItemIndex);
|
||||||
MusicKit.getInstance().skipToPreviousItem().then(r => console.log(`[MusicKitInterop.previous] Skipping to Previous ${r}`));
|
MusicKit.getInstance().skipToPreviousItem().then(r => console.log(`[MusicKitInterop.previous] Skipping to Previous ${r}`));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
BIN
src/renderer/assets/audiolabs/classic.png
Normal file
After Width: | Height: | Size: 139 KiB |
BIN
src/renderer/assets/audiolabs/expansive.png
Normal file
After Width: | Height: | Size: 186 KiB |
BIN
src/renderer/assets/audiolabs/focused.png
Normal file
After Width: | Height: | Size: 138 KiB |
BIN
src/renderer/assets/audiolabs/minimal.png
Normal file
After Width: | Height: | Size: 184 KiB |
6
src/renderer/assets/cider-round.svg
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 1002 1000" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<path d="M501,21C765.367,21 980,235.633 980,500C980,764.367 765.367,979 501,979C236.633,979 22,764.367 22,500C22,235.633 236.633,21 501,21ZM501,169C683.684,169 832,317.316 832,500C832,682.684 683.684,831 501,831C318.316,831 170,682.684 170,500C170,317.316 318.316,169 501,169Z" style="fill:rgb(255,38,84);"/>
|
||||||
|
<path d="M501,224C653.053,224 776.5,347.447 776.5,499.5C776.5,651.553 653.053,775 501,775C348.947,775 225.5,651.553 225.5,499.5C225.5,347.447 348.947,224 501,224ZM589.165,492.207C595.163,495.672 595.163,504.328 589.165,507.793L439.502,594.256C433.502,597.722 426,593.392 426,586.463L426,413.537C426,406.608 433.502,402.278 439.502,405.744L589.165,492.207Z" style="fill:rgb(255,38,84);"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
1
src/renderer/assets/feather/external-link.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-external-link"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg>
|
After Width: | Height: | Size: 388 B |
3
src/renderer/assets/github.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||||
|
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 818 B |
1
src/renderer/assets/music.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-music"><path d="M9 18V5l12-2v13"></path><circle cx="6" cy="18" r="3"></circle><circle cx="18" cy="16" r="3"></circle></svg>
|
After Width: | Height: | Size: 327 B |
BIN
src/renderer/audio/impulses/CAP_Natural.wav
Normal file
BIN
src/renderer/audio/impulses/CiderSpatial_v69.420_Audiophile.wav
Normal file
BIN
src/renderer/audio/impulses/CiderSpatial_v69_Audiophile.wav
Normal file
BIN
src/renderer/audio/impulses/CiderSpatial_v69_Standard.wav
Normal file
2780
src/renderer/less/bootstrap-vue.min.css
vendored
Normal file
2638
src/renderer/less/bootstrap-vue.min.less
vendored
Normal file
6246
src/renderer/less/bootstrap.css
vendored
Normal file
7384
src/renderer/less/bootstrap.less
vendored
553
src/renderer/less/codicon.css
Normal file
|
@ -0,0 +1,553 @@
|
||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "codicon";
|
||||||
|
font-display: block;
|
||||||
|
src: url("codicon.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
.codicon[class*='codicon-'] {
|
||||||
|
font: normal normal normal 16px/1 codicon;
|
||||||
|
display: inline-block;
|
||||||
|
text-decoration: none;
|
||||||
|
text-rendering: auto;
|
||||||
|
text-align: center;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
user-select: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------
|
||||||
|
* Modifiers
|
||||||
|
*-------------------*/
|
||||||
|
|
||||||
|
@keyframes codicon-spin {
|
||||||
|
100% {
|
||||||
|
transform:rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.codicon-sync.codicon-modifier-spin,
|
||||||
|
.codicon-loading.codicon-modifier-spin,
|
||||||
|
.codicon-gear.codicon-modifier-spin {
|
||||||
|
/* Use steps to throttle FPS to reduce CPU usage */
|
||||||
|
animation: codicon-spin 1.5s steps(30) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.codicon-modifier-disabled {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* custom speed & easing for loading icon */
|
||||||
|
.codicon-loading {
|
||||||
|
animation-duration: 1s !important;
|
||||||
|
animation-timing-function: cubic-bezier(0.53, 0.21, 0.29, 0.67) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------
|
||||||
|
* Icons
|
||||||
|
*-------------------*/
|
||||||
|
|
||||||
|
.codicon-add:before { content: "\ea60" }
|
||||||
|
.codicon-plus:before { content: "\ea60" }
|
||||||
|
.codicon-gist-new:before { content: "\ea60" }
|
||||||
|
.codicon-repo-create:before { content: "\ea60" }
|
||||||
|
.codicon-lightbulb:before { content: "\ea61" }
|
||||||
|
.codicon-light-bulb:before { content: "\ea61" }
|
||||||
|
.codicon-repo:before { content: "\ea62" }
|
||||||
|
.codicon-repo-delete:before { content: "\ea62" }
|
||||||
|
.codicon-gist-fork:before { content: "\ea63" }
|
||||||
|
.codicon-repo-forked:before { content: "\ea63" }
|
||||||
|
.codicon-git-pull-request:before { content: "\ea64" }
|
||||||
|
.codicon-git-pull-request-abandoned:before { content: "\ea64" }
|
||||||
|
.codicon-record-keys:before { content: "\ea65" }
|
||||||
|
.codicon-keyboard:before { content: "\ea65" }
|
||||||
|
.codicon-tag:before { content: "\ea66" }
|
||||||
|
.codicon-tag-add:before { content: "\ea66" }
|
||||||
|
.codicon-tag-remove:before { content: "\ea66" }
|
||||||
|
.codicon-person:before { content: "\ea67" }
|
||||||
|
.codicon-person-follow:before { content: "\ea67" }
|
||||||
|
.codicon-person-outline:before { content: "\ea67" }
|
||||||
|
.codicon-person-filled:before { content: "\ea67" }
|
||||||
|
.codicon-git-branch:before { content: "\ea68" }
|
||||||
|
.codicon-git-branch-create:before { content: "\ea68" }
|
||||||
|
.codicon-git-branch-delete:before { content: "\ea68" }
|
||||||
|
.codicon-source-control:before { content: "\ea68" }
|
||||||
|
.codicon-mirror:before { content: "\ea69" }
|
||||||
|
.codicon-mirror-public:before { content: "\ea69" }
|
||||||
|
.codicon-star:before { content: "\ea6a" }
|
||||||
|
.codicon-star-add:before { content: "\ea6a" }
|
||||||
|
.codicon-star-delete:before { content: "\ea6a" }
|
||||||
|
.codicon-star-empty:before { content: "\ea6a" }
|
||||||
|
.codicon-comment:before { content: "\ea6b" }
|
||||||
|
.codicon-comment-add:before { content: "\ea6b" }
|
||||||
|
.codicon-alert:before { content: "\ea6c" }
|
||||||
|
.codicon-warning:before { content: "\ea6c" }
|
||||||
|
.codicon-search:before { content: "\ea6d" }
|
||||||
|
.codicon-search-save:before { content: "\ea6d" }
|
||||||
|
.codicon-log-out:before { content: "\ea6e" }
|
||||||
|
.codicon-sign-out:before { content: "\ea6e" }
|
||||||
|
.codicon-log-in:before { content: "\ea6f" }
|
||||||
|
.codicon-sign-in:before { content: "\ea6f" }
|
||||||
|
.codicon-eye:before { content: "\ea70" }
|
||||||
|
.codicon-eye-unwatch:before { content: "\ea70" }
|
||||||
|
.codicon-eye-watch:before { content: "\ea70" }
|
||||||
|
.codicon-circle-filled:before { content: "\ea71" }
|
||||||
|
.codicon-primitive-dot:before { content: "\ea71" }
|
||||||
|
.codicon-close-dirty:before { content: "\ea71" }
|
||||||
|
.codicon-debug-breakpoint:before { content: "\ea71" }
|
||||||
|
.codicon-debug-breakpoint-disabled:before { content: "\ea71" }
|
||||||
|
.codicon-debug-hint:before { content: "\ea71" }
|
||||||
|
.codicon-primitive-square:before { content: "\ea72" }
|
||||||
|
.codicon-edit:before { content: "\ea73" }
|
||||||
|
.codicon-pencil:before { content: "\ea73" }
|
||||||
|
.codicon-info:before { content: "\ea74" }
|
||||||
|
.codicon-issue-opened:before { content: "\ea74" }
|
||||||
|
.codicon-gist-private:before { content: "\ea75" }
|
||||||
|
.codicon-git-fork-private:before { content: "\ea75" }
|
||||||
|
.codicon-lock:before { content: "\ea75" }
|
||||||
|
.codicon-mirror-private:before { content: "\ea75" }
|
||||||
|
.codicon-close:before { content: "\ea76" }
|
||||||
|
.codicon-remove-close:before { content: "\ea76" }
|
||||||
|
.codicon-x:before { content: "\ea76" }
|
||||||
|
.codicon-repo-sync:before { content: "\ea77" }
|
||||||
|
.codicon-sync:before { content: "\ea77" }
|
||||||
|
.codicon-clone:before { content: "\ea78" }
|
||||||
|
.codicon-desktop-download:before { content: "\ea78" }
|
||||||
|
.codicon-beaker:before { content: "\ea79" }
|
||||||
|
.codicon-microscope:before { content: "\ea79" }
|
||||||
|
.codicon-vm:before { content: "\ea7a" }
|
||||||
|
.codicon-device-desktop:before { content: "\ea7a" }
|
||||||
|
.codicon-file:before { content: "\ea7b" }
|
||||||
|
.codicon-file-text:before { content: "\ea7b" }
|
||||||
|
.codicon-more:before { content: "\ea7c" }
|
||||||
|
.codicon-ellipsis:before { content: "\ea7c" }
|
||||||
|
.codicon-kebab-horizontal:before { content: "\ea7c" }
|
||||||
|
.codicon-mail-reply:before { content: "\ea7d" }
|
||||||
|
.codicon-reply:before { content: "\ea7d" }
|
||||||
|
.codicon-organization:before { content: "\ea7e" }
|
||||||
|
.codicon-organization-filled:before { content: "\ea7e" }
|
||||||
|
.codicon-organization-outline:before { content: "\ea7e" }
|
||||||
|
.codicon-new-file:before { content: "\ea7f" }
|
||||||
|
.codicon-file-add:before { content: "\ea7f" }
|
||||||
|
.codicon-new-folder:before { content: "\ea80" }
|
||||||
|
.codicon-file-directory-create:before { content: "\ea80" }
|
||||||
|
.codicon-trash:before { content: "\ea81" }
|
||||||
|
.codicon-trashcan:before { content: "\ea81" }
|
||||||
|
.codicon-history:before { content: "\ea82" }
|
||||||
|
.codicon-clock:before { content: "\ea82" }
|
||||||
|
.codicon-folder:before { content: "\ea83" }
|
||||||
|
.codicon-file-directory:before { content: "\ea83" }
|
||||||
|
.codicon-symbol-folder:before { content: "\ea83" }
|
||||||
|
.codicon-logo-github:before { content: "\ea84" }
|
||||||
|
.codicon-mark-github:before { content: "\ea84" }
|
||||||
|
.codicon-github:before { content: "\ea84" }
|
||||||
|
.codicon-terminal:before { content: "\ea85" }
|
||||||
|
.codicon-console:before { content: "\ea85" }
|
||||||
|
.codicon-repl:before { content: "\ea85" }
|
||||||
|
.codicon-zap:before { content: "\ea86" }
|
||||||
|
.codicon-symbol-event:before { content: "\ea86" }
|
||||||
|
.codicon-error:before { content: "\ea87" }
|
||||||
|
.codicon-stop:before { content: "\ea87" }
|
||||||
|
.codicon-variable:before { content: "\ea88" }
|
||||||
|
.codicon-symbol-variable:before { content: "\ea88" }
|
||||||
|
.codicon-array:before { content: "\ea8a" }
|
||||||
|
.codicon-symbol-array:before { content: "\ea8a" }
|
||||||
|
.codicon-symbol-module:before { content: "\ea8b" }
|
||||||
|
.codicon-symbol-package:before { content: "\ea8b" }
|
||||||
|
.codicon-symbol-namespace:before { content: "\ea8b" }
|
||||||
|
.codicon-symbol-object:before { content: "\ea8b" }
|
||||||
|
.codicon-symbol-method:before { content: "\ea8c" }
|
||||||
|
.codicon-symbol-function:before { content: "\ea8c" }
|
||||||
|
.codicon-symbol-constructor:before { content: "\ea8c" }
|
||||||
|
.codicon-symbol-boolean:before { content: "\ea8f" }
|
||||||
|
.codicon-symbol-null:before { content: "\ea8f" }
|
||||||
|
.codicon-symbol-numeric:before { content: "\ea90" }
|
||||||
|
.codicon-symbol-number:before { content: "\ea90" }
|
||||||
|
.codicon-symbol-structure:before { content: "\ea91" }
|
||||||
|
.codicon-symbol-struct:before { content: "\ea91" }
|
||||||
|
.codicon-symbol-parameter:before { content: "\ea92" }
|
||||||
|
.codicon-symbol-type-parameter:before { content: "\ea92" }
|
||||||
|
.codicon-symbol-key:before { content: "\ea93" }
|
||||||
|
.codicon-symbol-text:before { content: "\ea93" }
|
||||||
|
.codicon-symbol-reference:before { content: "\ea94" }
|
||||||
|
.codicon-go-to-file:before { content: "\ea94" }
|
||||||
|
.codicon-symbol-enum:before { content: "\ea95" }
|
||||||
|
.codicon-symbol-value:before { content: "\ea95" }
|
||||||
|
.codicon-symbol-ruler:before { content: "\ea96" }
|
||||||
|
.codicon-symbol-unit:before { content: "\ea96" }
|
||||||
|
.codicon-activate-breakpoints:before { content: "\ea97" }
|
||||||
|
.codicon-archive:before { content: "\ea98" }
|
||||||
|
.codicon-arrow-both:before { content: "\ea99" }
|
||||||
|
.codicon-arrow-down:before { content: "\ea9a" }
|
||||||
|
.codicon-arrow-left:before { content: "\ea9b" }
|
||||||
|
.codicon-arrow-right:before { content: "\ea9c" }
|
||||||
|
.codicon-arrow-small-down:before { content: "\ea9d" }
|
||||||
|
.codicon-arrow-small-left:before { content: "\ea9e" }
|
||||||
|
.codicon-arrow-small-right:before { content: "\ea9f" }
|
||||||
|
.codicon-arrow-small-up:before { content: "\eaa0" }
|
||||||
|
.codicon-arrow-up:before { content: "\eaa1" }
|
||||||
|
.codicon-bell:before { content: "\eaa2" }
|
||||||
|
.codicon-bold:before { content: "\eaa3" }
|
||||||
|
.codicon-book:before { content: "\eaa4" }
|
||||||
|
.codicon-bookmark:before { content: "\eaa5" }
|
||||||
|
.codicon-debug-breakpoint-conditional-unverified:before { content: "\eaa6" }
|
||||||
|
.codicon-debug-breakpoint-conditional:before { content: "\eaa7" }
|
||||||
|
.codicon-debug-breakpoint-conditional-disabled:before { content: "\eaa7" }
|
||||||
|
.codicon-debug-breakpoint-data-unverified:before { content: "\eaa8" }
|
||||||
|
.codicon-debug-breakpoint-data:before { content: "\eaa9" }
|
||||||
|
.codicon-debug-breakpoint-data-disabled:before { content: "\eaa9" }
|
||||||
|
.codicon-debug-breakpoint-log-unverified:before { content: "\eaaa" }
|
||||||
|
.codicon-debug-breakpoint-log:before { content: "\eaab" }
|
||||||
|
.codicon-debug-breakpoint-log-disabled:before { content: "\eaab" }
|
||||||
|
.codicon-briefcase:before { content: "\eaac" }
|
||||||
|
.codicon-broadcast:before { content: "\eaad" }
|
||||||
|
.codicon-browser:before { content: "\eaae" }
|
||||||
|
.codicon-bug:before { content: "\eaaf" }
|
||||||
|
.codicon-calendar:before { content: "\eab0" }
|
||||||
|
.codicon-case-sensitive:before { content: "\eab1" }
|
||||||
|
.codicon-check:before { content: "\eab2" }
|
||||||
|
.codicon-checklist:before { content: "\eab3" }
|
||||||
|
.codicon-chevron-down:before { content: "\eab4" }
|
||||||
|
.codicon-chevron-left:before { content: "\eab5" }
|
||||||
|
.codicon-chevron-right:before { content: "\eab6" }
|
||||||
|
.codicon-chevron-up:before { content: "\eab7" }
|
||||||
|
.codicon-chrome-close:before { content: "\eab8" }
|
||||||
|
.codicon-chrome-maximize:before { content: "\eab9" }
|
||||||
|
.codicon-chrome-minimize:before { content: "\eaba" }
|
||||||
|
.codicon-chrome-restore:before { content: "\eabb" }
|
||||||
|
.codicon-circle-outline:before { content: "\eabc" }
|
||||||
|
.codicon-debug-breakpoint-unverified:before { content: "\eabc" }
|
||||||
|
.codicon-circle-slash:before { content: "\eabd" }
|
||||||
|
.codicon-circuit-board:before { content: "\eabe" }
|
||||||
|
.codicon-clear-all:before { content: "\eabf" }
|
||||||
|
.codicon-clippy:before { content: "\eac0" }
|
||||||
|
.codicon-close-all:before { content: "\eac1" }
|
||||||
|
.codicon-cloud-download:before { content: "\eac2" }
|
||||||
|
.codicon-cloud-upload:before { content: "\eac3" }
|
||||||
|
.codicon-code:before { content: "\eac4" }
|
||||||
|
.codicon-collapse-all:before { content: "\eac5" }
|
||||||
|
.codicon-color-mode:before { content: "\eac6" }
|
||||||
|
.codicon-comment-discussion:before { content: "\eac7" }
|
||||||
|
.codicon-credit-card:before { content: "\eac9" }
|
||||||
|
.codicon-dash:before { content: "\eacc" }
|
||||||
|
.codicon-dashboard:before { content: "\eacd" }
|
||||||
|
.codicon-database:before { content: "\eace" }
|
||||||
|
.codicon-debug-continue:before { content: "\eacf" }
|
||||||
|
.codicon-debug-disconnect:before { content: "\ead0" }
|
||||||
|
.codicon-debug-pause:before { content: "\ead1" }
|
||||||
|
.codicon-debug-restart:before { content: "\ead2" }
|
||||||
|
.codicon-debug-start:before { content: "\ead3" }
|
||||||
|
.codicon-debug-step-into:before { content: "\ead4" }
|
||||||
|
.codicon-debug-step-out:before { content: "\ead5" }
|
||||||
|
.codicon-debug-step-over:before { content: "\ead6" }
|
||||||
|
.codicon-debug-stop:before { content: "\ead7" }
|
||||||
|
.codicon-debug:before { content: "\ead8" }
|
||||||
|
.codicon-device-camera-video:before { content: "\ead9" }
|
||||||
|
.codicon-device-camera:before { content: "\eada" }
|
||||||
|
.codicon-device-mobile:before { content: "\eadb" }
|
||||||
|
.codicon-diff-added:before { content: "\eadc" }
|
||||||
|
.codicon-diff-ignored:before { content: "\eadd" }
|
||||||
|
.codicon-diff-modified:before { content: "\eade" }
|
||||||
|
.codicon-diff-removed:before { content: "\eadf" }
|
||||||
|
.codicon-diff-renamed:before { content: "\eae0" }
|
||||||
|
.codicon-diff:before { content: "\eae1" }
|
||||||
|
.codicon-discard:before { content: "\eae2" }
|
||||||
|
.codicon-editor-layout:before { content: "\eae3" }
|
||||||
|
.codicon-empty-window:before { content: "\eae4" }
|
||||||
|
.codicon-exclude:before { content: "\eae5" }
|
||||||
|
.codicon-extensions:before { content: "\eae6" }
|
||||||
|
.codicon-eye-closed:before { content: "\eae7" }
|
||||||
|
.codicon-file-binary:before { content: "\eae8" }
|
||||||
|
.codicon-file-code:before { content: "\eae9" }
|
||||||
|
.codicon-file-media:before { content: "\eaea" }
|
||||||
|
.codicon-file-pdf:before { content: "\eaeb" }
|
||||||
|
.codicon-file-submodule:before { content: "\eaec" }
|
||||||
|
.codicon-file-symlink-directory:before { content: "\eaed" }
|
||||||
|
.codicon-file-symlink-file:before { content: "\eaee" }
|
||||||
|
.codicon-file-zip:before { content: "\eaef" }
|
||||||
|
.codicon-files:before { content: "\eaf0" }
|
||||||
|
.codicon-filter:before { content: "\eaf1" }
|
||||||
|
.codicon-flame:before { content: "\eaf2" }
|
||||||
|
.codicon-fold-down:before { content: "\eaf3" }
|
||||||
|
.codicon-fold-up:before { content: "\eaf4" }
|
||||||
|
.codicon-fold:before { content: "\eaf5" }
|
||||||
|
.codicon-folder-active:before { content: "\eaf6" }
|
||||||
|
.codicon-folder-opened:before { content: "\eaf7" }
|
||||||
|
.codicon-gear:before { content: "\eaf8" }
|
||||||
|
.codicon-gift:before { content: "\eaf9" }
|
||||||
|
.codicon-gist-secret:before { content: "\eafa" }
|
||||||
|
.codicon-gist:before { content: "\eafb" }
|
||||||
|
.codicon-git-commit:before { content: "\eafc" }
|
||||||
|
.codicon-git-compare:before { content: "\eafd" }
|
||||||
|
.codicon-compare-changes:before { content: "\eafd" }
|
||||||
|
.codicon-git-merge:before { content: "\eafe" }
|
||||||
|
.codicon-github-action:before { content: "\eaff" }
|
||||||
|
.codicon-github-alt:before { content: "\eb00" }
|
||||||
|
.codicon-globe:before { content: "\eb01" }
|
||||||
|
.codicon-grabber:before { content: "\eb02" }
|
||||||
|
.codicon-graph:before { content: "\eb03" }
|
||||||
|
.codicon-gripper:before { content: "\eb04" }
|
||||||
|
.codicon-heart:before { content: "\eb05" }
|
||||||
|
.codicon-home:before { content: "\eb06" }
|
||||||
|
.codicon-horizontal-rule:before { content: "\eb07" }
|
||||||
|
.codicon-hubot:before { content: "\eb08" }
|
||||||
|
.codicon-inbox:before { content: "\eb09" }
|
||||||
|
.codicon-issue-reopened:before { content: "\eb0b" }
|
||||||
|
.codicon-issues:before { content: "\eb0c" }
|
||||||
|
.codicon-italic:before { content: "\eb0d" }
|
||||||
|
.codicon-jersey:before { content: "\eb0e" }
|
||||||
|
.codicon-json:before { content: "\eb0f" }
|
||||||
|
.codicon-kebab-vertical:before { content: "\eb10" }
|
||||||
|
.codicon-key:before { content: "\eb11" }
|
||||||
|
.codicon-law:before { content: "\eb12" }
|
||||||
|
.codicon-lightbulb-autofix:before { content: "\eb13" }
|
||||||
|
.codicon-link-external:before { content: "\eb14" }
|
||||||
|
.codicon-link:before { content: "\eb15" }
|
||||||
|
.codicon-list-ordered:before { content: "\eb16" }
|
||||||
|
.codicon-list-unordered:before { content: "\eb17" }
|
||||||
|
.codicon-live-share:before { content: "\eb18" }
|
||||||
|
.codicon-loading:before { content: "\eb19" }
|
||||||
|
.codicon-location:before { content: "\eb1a" }
|
||||||
|
.codicon-mail-read:before { content: "\eb1b" }
|
||||||
|
.codicon-mail:before { content: "\eb1c" }
|
||||||
|
.codicon-markdown:before { content: "\eb1d" }
|
||||||
|
.codicon-megaphone:before { content: "\eb1e" }
|
||||||
|
.codicon-mention:before { content: "\eb1f" }
|
||||||
|
.codicon-milestone:before { content: "\eb20" }
|
||||||
|
.codicon-mortar-board:before { content: "\eb21" }
|
||||||
|
.codicon-move:before { content: "\eb22" }
|
||||||
|
.codicon-multiple-windows:before { content: "\eb23" }
|
||||||
|
.codicon-mute:before { content: "\eb24" }
|
||||||
|
.codicon-no-newline:before { content: "\eb25" }
|
||||||
|
.codicon-note:before { content: "\eb26" }
|
||||||
|
.codicon-octoface:before { content: "\eb27" }
|
||||||
|
.codicon-open-preview:before { content: "\eb28" }
|
||||||
|
.codicon-package:before { content: "\eb29" }
|
||||||
|
.codicon-paintcan:before { content: "\eb2a" }
|
||||||
|
.codicon-pin:before { content: "\eb2b" }
|
||||||
|
.codicon-play:before { content: "\eb2c" }
|
||||||
|
.codicon-run:before { content: "\eb2c" }
|
||||||
|
.codicon-plug:before { content: "\eb2d" }
|
||||||
|
.codicon-preserve-case:before { content: "\eb2e" }
|
||||||
|
.codicon-preview:before { content: "\eb2f" }
|
||||||
|
.codicon-project:before { content: "\eb30" }
|
||||||
|
.codicon-pulse:before { content: "\eb31" }
|
||||||
|
.codicon-question:before { content: "\eb32" }
|
||||||
|
.codicon-quote:before { content: "\eb33" }
|
||||||
|
.codicon-radio-tower:before { content: "\eb34" }
|
||||||
|
.codicon-reactions:before { content: "\eb35" }
|
||||||
|
.codicon-references:before { content: "\eb36" }
|
||||||
|
.codicon-refresh:before { content: "\eb37" }
|
||||||
|
.codicon-regex:before { content: "\eb38" }
|
||||||
|
.codicon-remote-explorer:before { content: "\eb39" }
|
||||||
|
.codicon-remote:before { content: "\eb3a" }
|
||||||
|
.codicon-remove:before { content: "\eb3b" }
|
||||||
|
.codicon-replace-all:before { content: "\eb3c" }
|
||||||
|
.codicon-replace:before { content: "\eb3d" }
|
||||||
|
.codicon-repo-clone:before { content: "\eb3e" }
|
||||||
|
.codicon-repo-force-push:before { content: "\eb3f" }
|
||||||
|
.codicon-repo-pull:before { content: "\eb40" }
|
||||||
|
.codicon-repo-push:before { content: "\eb41" }
|
||||||
|
.codicon-report:before { content: "\eb42" }
|
||||||
|
.codicon-request-changes:before { content: "\eb43" }
|
||||||
|
.codicon-rocket:before { content: "\eb44" }
|
||||||
|
.codicon-root-folder-opened:before { content: "\eb45" }
|
||||||
|
.codicon-root-folder:before { content: "\eb46" }
|
||||||
|
.codicon-rss:before { content: "\eb47" }
|
||||||
|
.codicon-ruby:before { content: "\eb48" }
|
||||||
|
.codicon-save-all:before { content: "\eb49" }
|
||||||
|
.codicon-save-as:before { content: "\eb4a" }
|
||||||
|
.codicon-save:before { content: "\eb4b" }
|
||||||
|
.codicon-screen-full:before { content: "\eb4c" }
|
||||||
|
.codicon-screen-normal:before { content: "\eb4d" }
|
||||||
|
.codicon-search-stop:before { content: "\eb4e" }
|
||||||
|
.codicon-server:before { content: "\eb50" }
|
||||||
|
.codicon-settings-gear:before { content: "\eb51" }
|
||||||
|
.codicon-settings:before { content: "\eb52" }
|
||||||
|
.codicon-shield:before { content: "\eb53" }
|
||||||
|
.codicon-smiley:before { content: "\eb54" }
|
||||||
|
.codicon-sort-precedence:before { content: "\eb55" }
|
||||||
|
.codicon-split-horizontal:before { content: "\eb56" }
|
||||||
|
.codicon-split-vertical:before { content: "\eb57" }
|
||||||
|
.codicon-squirrel:before { content: "\eb58" }
|
||||||
|
.codicon-star-full:before { content: "\eb59" }
|
||||||
|
.codicon-star-half:before { content: "\eb5a" }
|
||||||
|
.codicon-symbol-class:before { content: "\eb5b" }
|
||||||
|
.codicon-symbol-color:before { content: "\eb5c" }
|
||||||
|
.codicon-symbol-constant:before { content: "\eb5d" }
|
||||||
|
.codicon-symbol-enum-member:before { content: "\eb5e" }
|
||||||
|
.codicon-symbol-field:before { content: "\eb5f" }
|
||||||
|
.codicon-symbol-file:before { content: "\eb60" }
|
||||||
|
.codicon-symbol-interface:before { content: "\eb61" }
|
||||||
|
.codicon-symbol-keyword:before { content: "\eb62" }
|
||||||
|
.codicon-symbol-misc:before { content: "\eb63" }
|
||||||
|
.codicon-symbol-operator:before { content: "\eb64" }
|
||||||
|
.codicon-symbol-property:before { content: "\eb65" }
|
||||||
|
.codicon-wrench:before { content: "\eb65" }
|
||||||
|
.codicon-wrench-subaction:before { content: "\eb65" }
|
||||||
|
.codicon-symbol-snippet:before { content: "\eb66" }
|
||||||
|
.codicon-tasklist:before { content: "\eb67" }
|
||||||
|
.codicon-telescope:before { content: "\eb68" }
|
||||||
|
.codicon-text-size:before { content: "\eb69" }
|
||||||
|
.codicon-three-bars:before { content: "\eb6a" }
|
||||||
|
.codicon-thumbsdown:before { content: "\eb6b" }
|
||||||
|
.codicon-thumbsup:before { content: "\eb6c" }
|
||||||
|
.codicon-tools:before { content: "\eb6d" }
|
||||||
|
.codicon-triangle-down:before { content: "\eb6e" }
|
||||||
|
.codicon-triangle-left:before { content: "\eb6f" }
|
||||||
|
.codicon-triangle-right:before { content: "\eb70" }
|
||||||
|
.codicon-triangle-up:before { content: "\eb71" }
|
||||||
|
.codicon-twitter:before { content: "\eb72" }
|
||||||
|
.codicon-unfold:before { content: "\eb73" }
|
||||||
|
.codicon-unlock:before { content: "\eb74" }
|
||||||
|
.codicon-unmute:before { content: "\eb75" }
|
||||||
|
.codicon-unverified:before { content: "\eb76" }
|
||||||
|
.codicon-verified:before { content: "\eb77" }
|
||||||
|
.codicon-versions:before { content: "\eb78" }
|
||||||
|
.codicon-vm-active:before { content: "\eb79" }
|
||||||
|
.codicon-vm-outline:before { content: "\eb7a" }
|
||||||
|
.codicon-vm-running:before { content: "\eb7b" }
|
||||||
|
.codicon-watch:before { content: "\eb7c" }
|
||||||
|
.codicon-whitespace:before { content: "\eb7d" }
|
||||||
|
.codicon-whole-word:before { content: "\eb7e" }
|
||||||
|
.codicon-window:before { content: "\eb7f" }
|
||||||
|
.codicon-word-wrap:before { content: "\eb80" }
|
||||||
|
.codicon-zoom-in:before { content: "\eb81" }
|
||||||
|
.codicon-zoom-out:before { content: "\eb82" }
|
||||||
|
.codicon-list-filter:before { content: "\eb83" }
|
||||||
|
.codicon-list-flat:before { content: "\eb84" }
|
||||||
|
.codicon-list-selection:before { content: "\eb85" }
|
||||||
|
.codicon-selection:before { content: "\eb85" }
|
||||||
|
.codicon-list-tree:before { content: "\eb86" }
|
||||||
|
.codicon-debug-breakpoint-function-unverified:before { content: "\eb87" }
|
||||||
|
.codicon-debug-breakpoint-function:before { content: "\eb88" }
|
||||||
|
.codicon-debug-breakpoint-function-disabled:before { content: "\eb88" }
|
||||||
|
.codicon-debug-stackframe-active:before { content: "\eb89" }
|
||||||
|
.codicon-debug-stackframe-dot:before { content: "\eb8a" }
|
||||||
|
.codicon-debug-stackframe:before { content: "\eb8b" }
|
||||||
|
.codicon-debug-stackframe-focused:before { content: "\eb8b" }
|
||||||
|
.codicon-debug-breakpoint-unsupported:before { content: "\eb8c" }
|
||||||
|
.codicon-symbol-string:before { content: "\eb8d" }
|
||||||
|
.codicon-debug-reverse-continue:before { content: "\eb8e" }
|
||||||
|
.codicon-debug-step-back:before { content: "\eb8f" }
|
||||||
|
.codicon-debug-restart-frame:before { content: "\eb90" }
|
||||||
|
.codicon-debug-alt:before { content: "\eb91" }
|
||||||
|
.codicon-call-incoming:before { content: "\eb92" }
|
||||||
|
.codicon-call-outgoing:before { content: "\eb93" }
|
||||||
|
.codicon-menu:before { content: "\eb94" }
|
||||||
|
.codicon-expand-all:before { content: "\eb95" }
|
||||||
|
.codicon-feedback:before { content: "\eb96" }
|
||||||
|
.codicon-group-by-ref-type:before { content: "\eb97" }
|
||||||
|
.codicon-ungroup-by-ref-type:before { content: "\eb98" }
|
||||||
|
.codicon-account:before { content: "\eb99" }
|
||||||
|
.codicon-bell-dot:before { content: "\eb9a" }
|
||||||
|
.codicon-debug-console:before { content: "\eb9b" }
|
||||||
|
.codicon-library:before { content: "\eb9c" }
|
||||||
|
.codicon-output:before { content: "\eb9d" }
|
||||||
|
.codicon-run-all:before { content: "\eb9e" }
|
||||||
|
.codicon-sync-ignored:before { content: "\eb9f" }
|
||||||
|
.codicon-pinned:before { content: "\eba0" }
|
||||||
|
.codicon-github-inverted:before { content: "\eba1" }
|
||||||
|
.codicon-server-process:before { content: "\eba2" }
|
||||||
|
.codicon-server-environment:before { content: "\eba3" }
|
||||||
|
.codicon-pass:before { content: "\eba4" }
|
||||||
|
.codicon-issue-closed:before { content: "\eba4" }
|
||||||
|
.codicon-stop-circle:before { content: "\eba5" }
|
||||||
|
.codicon-play-circle:before { content: "\eba6" }
|
||||||
|
.codicon-record:before { content: "\eba7" }
|
||||||
|
.codicon-debug-alt-small:before { content: "\eba8" }
|
||||||
|
.codicon-vm-connect:before { content: "\eba9" }
|
||||||
|
.codicon-cloud:before { content: "\ebaa" }
|
||||||
|
.codicon-merge:before { content: "\ebab" }
|
||||||
|
.codicon-export:before { content: "\ebac" }
|
||||||
|
.codicon-graph-left:before { content: "\ebad" }
|
||||||
|
.codicon-magnet:before { content: "\ebae" }
|
||||||
|
.codicon-notebook:before { content: "\ebaf" }
|
||||||
|
.codicon-redo:before { content: "\ebb0" }
|
||||||
|
.codicon-check-all:before { content: "\ebb1" }
|
||||||
|
.codicon-pinned-dirty:before { content: "\ebb2" }
|
||||||
|
.codicon-pass-filled:before { content: "\ebb3" }
|
||||||
|
.codicon-circle-large-filled:before { content: "\ebb4" }
|
||||||
|
.codicon-circle-large-outline:before { content: "\ebb5" }
|
||||||
|
.codicon-combine:before { content: "\ebb6" }
|
||||||
|
.codicon-gather:before { content: "\ebb6" }
|
||||||
|
.codicon-table:before { content: "\ebb7" }
|
||||||
|
.codicon-variable-group:before { content: "\ebb8" }
|
||||||
|
.codicon-type-hierarchy:before { content: "\ebb9" }
|
||||||
|
.codicon-type-hierarchy-sub:before { content: "\ebba" }
|
||||||
|
.codicon-type-hierarchy-super:before { content: "\ebbb" }
|
||||||
|
.codicon-git-pull-request-create:before { content: "\ebbc" }
|
||||||
|
.codicon-run-above:before { content: "\ebbd" }
|
||||||
|
.codicon-run-below:before { content: "\ebbe" }
|
||||||
|
.codicon-notebook-template:before { content: "\ebbf" }
|
||||||
|
.codicon-debug-rerun:before { content: "\ebc0" }
|
||||||
|
.codicon-workspace-trusted:before { content: "\ebc1" }
|
||||||
|
.codicon-workspace-untrusted:before { content: "\ebc2" }
|
||||||
|
.codicon-workspace-unknown:before { content: "\ebc3" }
|
||||||
|
.codicon-terminal-cmd:before { content: "\ebc4" }
|
||||||
|
.codicon-terminal-debian:before { content: "\ebc5" }
|
||||||
|
.codicon-terminal-linux:before { content: "\ebc6" }
|
||||||
|
.codicon-terminal-powershell:before { content: "\ebc7" }
|
||||||
|
.codicon-terminal-tmux:before { content: "\ebc8" }
|
||||||
|
.codicon-terminal-ubuntu:before { content: "\ebc9" }
|
||||||
|
.codicon-terminal-bash:before { content: "\ebca" }
|
||||||
|
.codicon-arrow-swap:before { content: "\ebcb" }
|
||||||
|
.codicon-copy:before { content: "\ebcc" }
|
||||||
|
.codicon-person-add:before { content: "\ebcd" }
|
||||||
|
.codicon-filter-filled:before { content: "\ebce" }
|
||||||
|
.codicon-wand:before { content: "\ebcf" }
|
||||||
|
.codicon-debug-line-by-line:before { content: "\ebd0" }
|
||||||
|
.codicon-inspect:before { content: "\ebd1" }
|
||||||
|
.codicon-layers:before { content: "\ebd2" }
|
||||||
|
.codicon-layers-dot:before { content: "\ebd3" }
|
||||||
|
.codicon-layers-active:before { content: "\ebd4" }
|
||||||
|
.codicon-compass:before { content: "\ebd5" }
|
||||||
|
.codicon-compass-dot:before { content: "\ebd6" }
|
||||||
|
.codicon-compass-active:before { content: "\ebd7" }
|
||||||
|
.codicon-azure:before { content: "\ebd8" }
|
||||||
|
.codicon-issue-draft:before { content: "\ebd9" }
|
||||||
|
.codicon-git-pull-request-closed:before { content: "\ebda" }
|
||||||
|
.codicon-git-pull-request-draft:before { content: "\ebdb" }
|
||||||
|
.codicon-debug-all:before { content: "\ebdc" }
|
||||||
|
.codicon-debug-coverage:before { content: "\ebdd" }
|
||||||
|
.codicon-run-errors:before { content: "\ebde" }
|
||||||
|
.codicon-folder-library:before { content: "\ebdf" }
|
||||||
|
.codicon-debug-continue-small:before { content: "\ebe0" }
|
||||||
|
.codicon-beaker-stop:before { content: "\ebe1" }
|
||||||
|
.codicon-graph-line:before { content: "\ebe2" }
|
||||||
|
.codicon-graph-scatter:before { content: "\ebe3" }
|
||||||
|
.codicon-pie-chart:before { content: "\ebe4" }
|
||||||
|
.codicon-bracket:before { content: "\eb0f" }
|
||||||
|
.codicon-bracket-dot:before { content: "\ebe5" }
|
||||||
|
.codicon-bracket-error:before { content: "\ebe6" }
|
||||||
|
.codicon-lock-small:before { content: "\ebe7" }
|
||||||
|
.codicon-azure-devops:before { content: "\ebe8" }
|
||||||
|
.codicon-verified-filled:before { content: "\ebe9" }
|
||||||
|
.codicon-newline:before { content: "\ebea" }
|
||||||
|
.codicon-layout:before { content: "\ebeb" }
|
||||||
|
.codicon-layout-activitybar-left:before { content: "\ebec" }
|
||||||
|
.codicon-layout-activitybar-right:before { content: "\ebed" }
|
||||||
|
.codicon-layout-panel-left:before { content: "\ebee" }
|
||||||
|
.codicon-layout-panel-center:before { content: "\ebef" }
|
||||||
|
.codicon-layout-panel-justify:before { content: "\ebf0" }
|
||||||
|
.codicon-layout-panel-right:before { content: "\ebf1" }
|
||||||
|
.codicon-layout-panel:before { content: "\ebf2" }
|
||||||
|
.codicon-layout-sidebar-left:before { content: "\ebf3" }
|
||||||
|
.codicon-layout-sidebar-right:before { content: "\ebf4" }
|
||||||
|
.codicon-layout-statusbar:before { content: "\ebf5" }
|
||||||
|
.codicon-layout-menubar:before { content: "\ebf6" }
|
||||||
|
.codicon-layout-centered:before { content: "\ebf7" }
|
||||||
|
.codicon-target:before { content: "\ebf8" }
|
||||||
|
.codicon-indent:before { content: "\ebf9" }
|
||||||
|
.codicon-record-small:before { content: "\ebfa" }
|
||||||
|
.codicon-error-small:before { content: "\ebfb" }
|
||||||
|
.codicon-arrow-circle-down:before { content: "\ebfc" }
|
||||||
|
.codicon-arrow-circle-left:before { content: "\ebfd" }
|
||||||
|
.codicon-arrow-circle-right:before { content: "\ebfe" }
|
||||||
|
.codicon-arrow-circle-up:before { content: "\ebff" }
|
2
src/renderer/less/codicon.svg
Normal file
After Width: | Height: | Size: 263 KiB |
BIN
src/renderer/less/codicon.ttf
Normal file
184
src/renderer/less/directives.less
Normal file
|
@ -0,0 +1,184 @@
|
||||||
|
#app.twopanel {
|
||||||
|
--chromeHeight1: 42px;
|
||||||
|
--chromeHeight2: 76px;
|
||||||
|
--chromeHeight: calc(var(--chromeHeight1) + var(--chromeHeight2));
|
||||||
|
|
||||||
|
.app-chrome {
|
||||||
|
.app-mainmenu {
|
||||||
|
margin-left: 10px;
|
||||||
|
width: 88px;
|
||||||
|
}
|
||||||
|
|
||||||
|
height: var(--chromeHeight1);
|
||||||
|
|
||||||
|
&.chrome-bottom {
|
||||||
|
height: var(--chromeHeight2);
|
||||||
|
box-shadow: 0px -1px 0px rgba(0, 0, 0, 0.25);
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-sidebar-footer--controls {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-chrome.chrome-bottom {
|
||||||
|
.app-playback-controls .actions {
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.playback-button.play,
|
||||||
|
.playback-button.pause {
|
||||||
|
width: 42px;
|
||||||
|
height: 42px;
|
||||||
|
background-color: rgb(200 200 200 / 20%);
|
||||||
|
border-radius: 50%;
|
||||||
|
margin: 6px;
|
||||||
|
box-shadow: 0px 0px 0px 2px var(--keyColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-chrome--center {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.app-chrome-playback-controls {
|
||||||
|
display: flex;
|
||||||
|
z-index: 1;
|
||||||
|
// margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-chrome-playback-duration {
|
||||||
|
position: relative;
|
||||||
|
width: 80%;
|
||||||
|
-webkit-app-region: no-drag;
|
||||||
|
height: 16px;
|
||||||
|
|
||||||
|
.song-progress {
|
||||||
|
@bgColor: transparent;
|
||||||
|
height: 16px;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 4px;
|
||||||
|
left: 0px;
|
||||||
|
right: 4px;
|
||||||
|
background: @bgColor;
|
||||||
|
z-index: 0;
|
||||||
|
|
||||||
|
|
||||||
|
.song-duration {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.song-duration p {
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 10px;
|
||||||
|
height: 1.2em;
|
||||||
|
line-height: 1.3em;
|
||||||
|
overflow: hidden;
|
||||||
|
margin: 0 0 0 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
> input[type=range] {
|
||||||
|
&::-webkit-slider-thumb {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=range] {
|
||||||
|
appearance: none;
|
||||||
|
width: 100%;
|
||||||
|
height: 4px;
|
||||||
|
background-color: rgb(200 200 200 / 10%);
|
||||||
|
border-radius: 2px;
|
||||||
|
|
||||||
|
&::-webkit-slider-thumb {
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(0.5);
|
||||||
|
-webkit-appearance: none;
|
||||||
|
appearance: none;
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
border-radius: 100%;
|
||||||
|
background: var(--keyColor);
|
||||||
|
cursor: default;
|
||||||
|
transition: opacity .10s var(--appleEase), transform .10s var(--appleEase);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-chrome--left {
|
||||||
|
width: 30%;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: flex-start;
|
||||||
|
|
||||||
|
.playback-controls {
|
||||||
|
.artwork {
|
||||||
|
width: var(--chromeHeight2);
|
||||||
|
height: var(--chromeHeight2);
|
||||||
|
margin: 0px 6px 0px 0px;
|
||||||
|
box-shadow: unset;
|
||||||
|
border: 0px;
|
||||||
|
|
||||||
|
.mediaitem-artwork,
|
||||||
|
img {
|
||||||
|
border-radius: 0px;
|
||||||
|
box-shadow: unset;
|
||||||
|
border: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.playback-info {
|
||||||
|
align-items: flex-start;
|
||||||
|
margin: 6px;
|
||||||
|
|
||||||
|
.song-name {
|
||||||
|
text-align: left;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: initial;
|
||||||
|
width: 100%;
|
||||||
|
-webkit-mask-image: linear-gradient(-90deg, transparent 0%, transparent 10%, black 20%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.song-artist-album {
|
||||||
|
width: 100%;
|
||||||
|
-webkit-mask-image: linear-gradient(-90deg, transparent 0%, transparent 10%, black 20%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.audio-type {
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.song-artist-album-content {
|
||||||
|
text-align: left;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
border: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
flex: 0 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-chrome--right {
|
||||||
|
width: 30%;
|
||||||
|
flex: 0 0 auto;
|
||||||
|
padding-right: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.collection-page {
|
||||||
|
.top-fab {
|
||||||
|
bottom:96px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|