Compare commits

..

11 Commits

Author SHA1 Message Date
Uruk
ee4c4b75ad feat: Enables iOS TV builds and unsigned builds
Enables building of iOS TV apps and adds support for unsigned iOS builds.

This change also enhances the artifact comment workflow by including file size and build duration in the download link.
It also fixes the Crowdin integration by using a GitHub App token for authentication.
2026-01-31 18:10:45 +01:00
renovate[bot]
8a782fb0c9 chore(deps): Update dependency @react-native-community/cli to v20.1.1 (#1413)
Some checks are pending
🏗️ Build Apps / 🤖 Build Android APK (Phone) (push) Waiting to run
🏗️ Build Apps / 🤖 Build Android APK (TV) (push) Waiting to run
🏗️ Build Apps / 🍎 Build iOS IPA (Phone) (push) Waiting to run
🏗️ Build Apps / 🍎 Build iOS IPA (Phone - Unsigned) (push) Waiting to run
🔒 Lockfile Consistency Check / 🔍 Check bun.lock and package.json consistency (push) Waiting to run
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (actions) (push) Waiting to run
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (javascript-typescript) (push) Waiting to run
🏷️🔀Merge Conflict Labeler / 🏷️ Labeling Merge Conflicts (push) Waiting to run
🌐 Translation Sync / sync-translations (push) Waiting to run
🚦 Security & Quality Gate / 📝 Validate PR Title (push) Waiting to run
🚦 Security & Quality Gate / 🔍 Vulnerable Dependencies (push) Waiting to run
🚦 Security & Quality Gate / 🚑 Expo Doctor Check (push) Waiting to run
🚦 Security & Quality Gate / 🔍 Lint & Test (check) (push) Waiting to run
🚦 Security & Quality Gate / 🔍 Lint & Test (format) (push) Waiting to run
🚦 Security & Quality Gate / 🔍 Lint & Test (lint) (push) Waiting to run
🚦 Security & Quality Gate / 🔍 Lint & Test (typecheck) (push) Waiting to run
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-31 17:26:38 +01:00
renovate[bot]
7d0b6c37b8 chore(deps): Update dependency react-i18next to v16.5.4 (#1414)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-31 17:26:01 +01:00
renovate[bot]
5443222e4e chore(deps): Update actions/cache action to v5.0.2 (#1397)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-31 17:25:31 +01:00
renovate[bot]
a77e86be21 chore(deps): Update github/codeql-action action to v4.32.0 (#1410)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-31 17:25:22 +01:00
renovate[bot]
9d82549cd6 chore(deps): Update dependency @tanstack/react-query to v5.90.20 (#1405)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-31 17:25:12 +01:00
renovate[bot]
cb5cb8bff7 chore(deps): Update dependency lodash to v4.17.23 [SECURITY] (#1394)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-31 17:25:02 +01:00
renovate[bot]
0b61fb7d98 chore(deps): Update peter-evans/create-pull-request action to v8.1.0 (#1401)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-31 17:24:53 +01:00
renovate[bot]
f762b9017f chore(deps): Update crowdin/github-action action to v2.14.0 (#1400)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-31 17:24:43 +01:00
renovate[bot]
b063fd6405 chore(deps): Update oven-sh/setup-bun action to v2.1.2 (#1399)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-31 17:24:35 +01:00
renovate[bot]
88ac94ebeb chore(deps): Update actions/checkout action to v6.0.2 (#1398)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-31 17:24:24 +01:00
15 changed files with 1100 additions and 1019 deletions

View File

@@ -220,7 +220,10 @@ jobs:
const jobMappings = {
'Android Phone': ['🤖 Build Android APK (Phone)', 'build-android-phone'],
'Android TV': ['🤖 Build Android APK (TV)', 'build-android-tv'],
'iOS Phone': ['🍎 Build iOS IPA (Phone)', 'build-ios-phone']
'iOS': ['🍎 Build iOS IPA (Phone)', 'build-ios-phone'],
'iOS Unsigned': ['🍎 Build iOS IPA (Phone - Unsigned)', 'build-ios-phone-unsigned'],
'tvOS': ['🍎 Build tvOS IPA', 'build-ios-tv'],
'tvOS Unsigned': ['🍎 Build tvOS IPA (Unsigned)', 'build-ios-tv-unsigned']
};
// Create individual status for each job
@@ -353,10 +356,12 @@ jobs:
// Process each expected build target individually
const buildTargets = [
{ name: 'Android Phone', platform: '🤖', device: '📱', statusKey: 'Android Phone', artifactPattern: /android.*phone/i },
{ name: 'Android TV', platform: '🤖', device: '📺', statusKey: 'Android TV', artifactPattern: /android.*tv/i },
{ name: 'iOS Phone', platform: '🍎', device: '📱', statusKey: 'iOS Phone', artifactPattern: /ios.*phone/i },
{ name: 'iOS TV', platform: '🍎', device: '📺', statusKey: 'iOS TV', artifactPattern: /ios.*tv/i }
{ name: 'Android Phone', platform: '🤖', device: '📱 Phone', statusKey: 'Android Phone', artifactPattern: /android.*phone/i },
{ name: 'Android TV', platform: '🤖', device: '📺 TV', statusKey: 'Android TV', artifactPattern: /android.*tv/i },
{ name: 'iOS', platform: '🍎', device: '📱 Phone', statusKey: 'iOS Phone', artifactPattern: /ios.*phone.*ipa(?!.*unsigned)/i },
{ name: 'iOS Unsigned', platform: '🍎', device: '📱 Phone Unsigned', statusKey: 'iOS Phone Unsigned', artifactPattern: /ios.*phone.*unsigned/i },
{ name: 'tvOS', platform: '🍎', device: '📺 TV', statusKey: 'tvOS', artifactPattern: /ios.*tv.*ipa(?!.*unsigned)/i },
{ name: 'tvOS Unsigned', platform: '🍎', device: '📺 TV Unsigned', statusKey: 'tvOS Unsigned', artifactPattern: /ios.*tv.*unsigned/i }
];
for (const target of buildTargets) {
@@ -371,16 +376,26 @@ jobs:
let status = '⏳ Pending';
let downloadLink = '*Waiting for build...*';
// Special case for iOS TV - show as disabled
if (target.name === 'iOS TV') {
status = '💤 Disabled';
downloadLink = '*Disabled for now*';
} else if (matchingStatus) {
if (matchingStatus) {
if (matchingStatus.conclusion === 'success' && matchingArtifact) {
status = '✅ Complete';
const directLink = `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${matchingArtifact.workflow_run.id}/artifacts/${matchingArtifact.id}`;
const fileType = target.name.includes('Android') ? 'APK' : 'IPA';
downloadLink = `[📥 Download ${fileType}](${directLink})`;
// Format file size
const sizeInMB = (matchingArtifact.size_in_bytes / (1024 * 1024)).toFixed(1);
const sizeInfo = `(${sizeInMB} MB)`;
// Calculate build duration
let durationInfo = '';
if (matchingStatus.started_at && matchingStatus.completed_at) {
const durationMs = new Date(matchingStatus.completed_at) - new Date(matchingStatus.started_at);
const durationMin = Math.floor(durationMs / 60000);
const durationSec = Math.floor((durationMs % 60000) / 1000);
durationInfo = ` - ${durationMin}m ${durationSec}s`;
}
downloadLink = `[📥 Download ${fileType}](${directLink}) ${sizeInfo}${durationInfo}`;
} else if (matchingStatus.conclusion === 'failure') {
status = `❌ [Failed](${matchingStatus.url})`;
downloadLink = '*Build failed*';
@@ -408,7 +423,7 @@ jobs:
}
}
commentBody += `| ${target.platform} ${target.name.split(' ')[0]} | ${target.device} ${target.name.split(' ')[1]} | ${status} | ${downloadLink} |\n`;
commentBody += `| ${target.platform} ${target.name} | ${target.device} | ${status} | ${downloadLink} |\n`;
}
commentBody += `\n`;

View File

@@ -33,7 +33,7 @@ jobs:
swap-storage: false
- name: 📥 Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
fetch-depth: 0
@@ -41,12 +41,12 @@ jobs:
show-progress: false
- name: 🍞 Setup Bun
uses: oven-sh/setup-bun@b7a1c7ccf290d58743029c4f6903da283811b979 # v2.1.0
uses: oven-sh/setup-bun@3d267786b128fe76c2f16a390aa2448b815359f3 # v2.1.2
with:
bun-version: latest
- name: 💾 Cache Bun dependencies
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-${{ runner.arch }}-bun-develop-${{ hashFiles('bun.lock') }}
@@ -60,7 +60,7 @@ jobs:
bun run submodule-reload
- name: 💾 Cache Gradle global
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2
with:
path: |
~/.gradle/caches
@@ -73,7 +73,7 @@ jobs:
run: bun run prebuild
- name: 💾 Cache project Gradle (.gradle)
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2
with:
path: android/.gradle
key: ${{ runner.os }}-android-gradle-develop-${{ hashFiles('android/**/build.gradle', 'android/gradle/wrapper/gradle-wrapper.properties') }}
@@ -116,7 +116,7 @@ jobs:
swap-storage: false
- name: 📥 Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
fetch-depth: 0
@@ -124,12 +124,12 @@ jobs:
show-progress: false
- name: 🍞 Setup Bun
uses: oven-sh/setup-bun@b7a1c7ccf290d58743029c4f6903da283811b979 # v2.1.0
uses: oven-sh/setup-bun@3d267786b128fe76c2f16a390aa2448b815359f3 # v2.1.2
with:
bun-version: latest
- name: 💾 Cache Bun dependencies
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-${{ runner.arch }}-bun-develop-${{ hashFiles('bun.lock') }}
@@ -143,7 +143,7 @@ jobs:
bun run submodule-reload
- name: 💾 Cache Gradle global
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2
with:
path: |
~/.gradle/caches
@@ -156,7 +156,7 @@ jobs:
run: bun run prebuild:tv
- name: 💾 Cache project Gradle (.gradle)
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2
with:
path: android/.gradle
key: ${{ runner.os }}-android-gradle-develop-${{ hashFiles('android/**/build.gradle', 'android/gradle/wrapper/gradle-wrapper.properties') }}
@@ -187,7 +187,7 @@ jobs:
steps:
- name: 📥 Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
fetch-depth: 0
@@ -195,12 +195,12 @@ jobs:
show-progress: false
- name: 🍞 Setup Bun
uses: oven-sh/setup-bun@b7a1c7ccf290d58743029c4f6903da283811b979 # v2.1.0
uses: oven-sh/setup-bun@3d267786b128fe76c2f16a390aa2448b815359f3 # v2.1.2
with:
bun-version: latest
- name: 💾 Cache Bun dependencies
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-cache-${{ hashFiles('bun.lock') }}
@@ -251,7 +251,7 @@ jobs:
steps:
- name: 📥 Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
fetch-depth: 0
@@ -259,12 +259,12 @@ jobs:
show-progress: false
- name: 🍞 Setup Bun
uses: oven-sh/setup-bun@b7a1c7ccf290d58743029c4f6903da283811b979 # v2.1.0
uses: oven-sh/setup-bun@3d267786b128fe76c2f16a390aa2448b815359f3 # v2.1.2
with:
bun-version: latest
- name: 💾 Cache Bun dependencies
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-cache-${{ hashFiles('bun.lock') }}
@@ -299,67 +299,123 @@ jobs:
path: build/*.ipa
retention-days: 7
# Disabled for now - uncomment when ready to build iOS TV
# build-ios-tv:
# if: (!contains(github.event.head_commit.message, '[skip ci]') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'streamyfin/streamyfin'))
# runs-on: macos-26
# name: 🍎 Build iOS IPA (TV)
# permissions:
# contents: read
#
# steps:
# - name: 📥 Checkout code
# uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
# with:
# ref: ${{ github.event.pull_request.head.sha || github.sha }}
# fetch-depth: 0
# submodules: recursive
# show-progress: false
#
# - name: 🍞 Setup Bun
# uses: oven-sh/setup-bun@735343b667d3e6f658f44d0eca948eb6282f2b76 # v2.0.2
# with:
# bun-version: latest
#
# - name: 💾 Cache Bun dependencies
# uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
# with:
# path: ~/.bun/install/cache
# key: ${{ runner.os }}-bun-cache-${{ hashFiles('bun.lock') }}
# restore-keys: |
# ${{ runner.os }}-bun-cache
#
# - name: 📦 Install dependencies and reload submodules
# run: |
# bun install --frozen-lockfile
# bun run submodule-reload
#
# - name: 🛠️ Generate project files
# run: bun run prebuild:tv
#
# - name: 🔧 Setup Xcode
# uses: maxim-lobanov/setup-xcode@v1
# with:
# xcode-version: '26.0.1'
#
# - name: 🏗️ Setup EAS
# uses: expo/expo-github-action@main
# with:
# eas-version: latest
# token: ${{ secrets.EXPO_TOKEN }}
# eas-cache: true
#
# - name: 🚀 Build iOS app
# env:
# EXPO_TV: 1
# run: eas build -p ios --local --non-interactive
#
# - name: 📅 Set date tag
# run: echo "DATE_TAG=$(date +%d-%m-%Y_%H-%M-%S)" >> $GITHUB_ENV
#
# - name: 📤 Upload IPA artifact
# uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
# with:
# name: streamyfin-ios-tv-ipa-${{ env.DATE_TAG }}
# path: build-*.ipa
# retention-days: 7
build-ios-tv:
if: (!contains(github.event.head_commit.message, '[skip ci]') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'streamyfin/streamyfin'))
runs-on: macos-26
name: 🍎 Build tvOS IPA
permissions:
contents: read
steps:
- name: 📥 Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
fetch-depth: 0
submodules: recursive
show-progress: false
- name: 🍞 Setup Bun
uses: oven-sh/setup-bun@3d267786b128fe76c2f16a390aa2448b815359f3 # v2.1.2
with:
bun-version: latest
- name: 💾 Cache Bun dependencies
uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-cache-${{ hashFiles('bun.lock') }}
restore-keys: |
${{ runner.os }}-bun-cache
- name: 📦 Install dependencies and reload submodules
run: |
bun install --frozen-lockfile
bun run submodule-reload
- name: 🛠️ Generate project files
run: bun run prebuild:tv
- name: 🔧 Setup Xcode
uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1
with:
xcode-version: "26.2"
- name: 🏗️ Setup EAS
uses: expo/expo-github-action@main
with:
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
eas-cache: true
- name: 🚀 Build iOS app
env:
EXPO_TV: 1
run: eas build -p ios --local --non-interactive
- name: 📅 Set date tag
run: echo "DATE_TAG=$(date +%d-%m-%Y_%H-%M-%S)" >> $GITHUB_ENV
- name: 📤 Upload IPA artifact
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: streamyfin-ios-tv-ipa-${{ env.DATE_TAG }}
path: build-*.ipa
retention-days: 7
build-ios-tv-unsigned:
if: (!contains(github.event.head_commit.message, '[skip ci]'))
runs-on: macos-26
name: 🍎 Build tvOS IPA (Unsigned)
permissions:
contents: read
steps:
- name: 📥 Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
fetch-depth: 0
submodules: recursive
show-progress: false
- name: 🍞 Setup Bun
uses: oven-sh/setup-bun@3d267786b128fe76c2f16a390aa2448b815359f3 # v2.1.2
with:
bun-version: latest
- name: 💾 Cache Bun dependencies
uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-cache-${{ hashFiles('bun.lock') }}
restore-keys: |
${{ runner.os }}-bun-cache
- name: 📦 Install dependencies and reload submodules
run: |
bun install --frozen-lockfile
bun run submodule-reload
- name: 🛠️ Generate project files
run: bun run prebuild:tv
- name: 🔧 Setup Xcode
uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1
with:
xcode-version: "26.2"
- name: 🚀 Build iOS app
env:
EXPO_TV: 1
run: bun run ios:unsigned-build:tv ${{ github.event_name == 'pull_request' && '-- --verbose' || '' }}
- name: 📅 Set date tag
run: echo "DATE_TAG=$(date +%d-%m-%Y_%H-%M-%S)" >> $GITHUB_ENV
- name: 📤 Upload IPA artifact
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: streamyfin-ios-tv-unsigned-ipa-${{ env.DATE_TAG }}
path: build/*.ipa
retention-days: 7

View File

@@ -19,7 +19,7 @@ jobs:
steps:
- name: 📥 Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
show-progress: false
@@ -27,12 +27,12 @@ jobs:
fetch-depth: 0
- name: 🍞 Setup Bun
uses: oven-sh/setup-bun@b7a1c7ccf290d58743029c4f6903da283811b979 # v2.1.0
uses: oven-sh/setup-bun@3d267786b128fe76c2f16a390aa2448b815359f3 # v2.1.2
with:
bun-version: latest
- name: 💾 Cache Bun dependencies
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2
with:
path: |
~/.bun/install/cache

View File

@@ -24,16 +24,16 @@ jobs:
steps:
- name: 📥 Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: 🏁 Initialize CodeQL
uses: github/codeql-action/init@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
uses: github/codeql-action/init@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: 🛠️ Autobuild
uses: github/codeql-action/autobuild@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
uses: github/codeql-action/autobuild@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0
- name: 🧪 Perform CodeQL Analysis
uses: github/codeql-action/analyze@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
uses: github/codeql-action/analyze@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0

View File

@@ -23,12 +23,19 @@ jobs:
steps:
- name: 📥 Checkout Repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: 🔑 Generate GitHub App Token
id: generate-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ vars.CROWDIN_APP_ID }}
private-key: ${{ secrets.CROWDIN_APP_PRIVATE_KEY }}
- name: 🌐 Sync Translations with Crowdin
uses: crowdin/github-action@60debf382ee245b21794321190ad0501db89d8c1 # v2.13.0
uses: crowdin/github-action@b4b468cffefb50bdd99dd83e5d2eaeb63c880380 # v2.14.0
with:
upload_sources: true
upload_translations: true
@@ -46,6 +53,6 @@ jobs:
# Commit customization
commit_message: "feat(i18n): update translations from Crowdin"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}

View File

@@ -51,7 +51,7 @@ jobs:
contents: read
steps:
- name: Checkout Repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
fetch-depth: 0
@@ -69,14 +69,14 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: 🛒 Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
submodules: recursive
fetch-depth: 0
- name: 🍞 Setup Bun
uses: oven-sh/setup-bun@b7a1c7ccf290d58743029c4f6903da283811b979 # v2.1.0
uses: oven-sh/setup-bun@3d267786b128fe76c2f16a390aa2448b815359f3 # v2.1.2
with:
bun-version: latest
@@ -100,7 +100,7 @@ jobs:
steps:
- name: "📥 Checkout PR code"
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
submodules: recursive
@@ -112,7 +112,7 @@ jobs:
node-version: '24.x'
- name: "🍞 Setup Bun"
uses: oven-sh/setup-bun@b7a1c7ccf290d58743029c4f6903da283811b979 # v2.1.0
uses: oven-sh/setup-bun@3d267786b128fe76c2f16a390aa2448b815359f3 # v2.1.2
with:
bun-version: latest

View File

@@ -18,7 +18,7 @@ jobs:
steps:
- name: 📥 Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: "🟢 Setup Node.js"
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
@@ -54,7 +54,7 @@ jobs:
dry_run: no-push
- name: 📬 Commit and create pull request
uses: peter-evans/create-pull-request@98357b18bf14b5342f975ff684046ec3b2a07725 # v8.0.0
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
with:
add-paths: .github/ISSUE_TEMPLATE/bug_report.yml
branch: ci-update-bug-report

View File

@@ -19,7 +19,7 @@
"@shopify/flash-list": "2.0.2",
"@tanstack/query-sync-storage-persister": "^5.90.18",
"@tanstack/react-pacer": "^0.19.1",
"@tanstack/react-query": "5.90.17",
"@tanstack/react-query": "5.90.20",
"@tanstack/react-query-persist-client": "^5.90.18",
"axios": "^1.7.9",
"expo": "~54.0.31",
@@ -52,12 +52,12 @@
"expo-web-browser": "~15.0.10",
"i18next": "^25.0.0",
"jotai": "2.16.2",
"lodash": "4.17.21",
"lodash": "4.17.23",
"nativewind": "^2.0.11",
"patch-package": "^8.0.0",
"react": "19.1.0",
"react-dom": "19.1.0",
"react-i18next": "16.5.3",
"react-i18next": "16.5.4",
"react-native": "0.81.5",
"react-native-awesome-slider": "^2.9.0",
"react-native-bottom-tabs": "1.1.0",
@@ -97,7 +97,7 @@
"devDependencies": {
"@babel/core": "7.28.6",
"@biomejs/biome": "2.3.11",
"@react-native-community/cli": "20.1.0",
"@react-native-community/cli": "20.1.1",
"@react-native-tvos/config-tv": "0.1.4",
"@types/jest": "29.5.14",
"@types/lodash": "4.17.23",
@@ -512,29 +512,29 @@
"@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ=="],
"@react-native-community/cli": ["@react-native-community/cli@20.1.0", "", { "dependencies": { "@react-native-community/cli-clean": "20.1.0", "@react-native-community/cli-config": "20.1.0", "@react-native-community/cli-doctor": "20.1.0", "@react-native-community/cli-server-api": "20.1.0", "@react-native-community/cli-tools": "20.1.0", "@react-native-community/cli-types": "20.1.0", "commander": "^9.4.1", "deepmerge": "^4.3.0", "execa": "^5.0.0", "find-up": "^5.0.0", "fs-extra": "^8.1.0", "graceful-fs": "^4.1.3", "picocolors": "^1.1.1", "prompts": "^2.4.2", "semver": "^7.5.2" }, "bin": { "rnc-cli": "build/bin.js" } }, "sha512-441WsVtRe4nGJ9OzA+QMU1+22lA6Q2hRWqqIMKD0wjEMLqcSfOZyu2UL9a/yRpL/dRpyUsU4n7AxqKfTKO/Csg=="],
"@react-native-community/cli": ["@react-native-community/cli@20.1.1", "", { "dependencies": { "@react-native-community/cli-clean": "20.1.1", "@react-native-community/cli-config": "20.1.1", "@react-native-community/cli-doctor": "20.1.1", "@react-native-community/cli-server-api": "20.1.1", "@react-native-community/cli-tools": "20.1.1", "@react-native-community/cli-types": "20.1.1", "commander": "^9.4.1", "deepmerge": "^4.3.0", "execa": "^5.0.0", "find-up": "^5.0.0", "fs-extra": "^8.1.0", "graceful-fs": "^4.1.3", "picocolors": "^1.1.1", "prompts": "^2.4.2", "semver": "^7.5.2" }, "bin": { "rnc-cli": "build/bin.js" } }, "sha512-aLPUx43+WSeTOaUepR2FBD5a1V0OAZ1QB2DOlRlW4fOEjtBXgv40eM/ho8g3WCvAOKfPvTvx4fZdcuovTyV81Q=="],
"@react-native-community/cli-clean": ["@react-native-community/cli-clean@20.1.0", "", { "dependencies": { "@react-native-community/cli-tools": "20.1.0", "execa": "^5.0.0", "fast-glob": "^3.3.2", "picocolors": "^1.1.1" } }, "sha512-77L4DifWfxAT8ByHnkypge7GBMYpbJAjBGV+toowt5FQSGaTBDcBHCX+FFqFRukD5fH6i8sZ41Gtw+nbfCTTIA=="],
"@react-native-community/cli-clean": ["@react-native-community/cli-clean@20.1.1", "", { "dependencies": { "@react-native-community/cli-tools": "20.1.1", "execa": "^5.0.0", "fast-glob": "^3.3.2", "picocolors": "^1.1.1" } }, "sha512-6nGQ08w2+EcDwTFC4JFiW/wI2pLwzMrk9thz4um7tKRNW8sADX0IyCsfM2F4rHS720C0UNKYBZE9nAsfp8Vkcw=="],
"@react-native-community/cli-config": ["@react-native-community/cli-config@20.1.0", "", { "dependencies": { "@react-native-community/cli-tools": "20.1.0", "cosmiconfig": "^9.0.0", "deepmerge": "^4.3.0", "fast-glob": "^3.3.2", "joi": "^17.2.1", "picocolors": "^1.1.1" } }, "sha512-1x9rhLLR/dKKb92Lb5O0l0EmUG08FHf+ZVyVEf9M+tX+p5QIm52MRiy43R0UAZ2jJnFApxRk+N3sxoYK4Dtnag=="],
"@react-native-community/cli-config": ["@react-native-community/cli-config@20.1.1", "", { "dependencies": { "@react-native-community/cli-tools": "20.1.1", "cosmiconfig": "^9.0.0", "deepmerge": "^4.3.0", "fast-glob": "^3.3.2", "joi": "^17.2.1", "picocolors": "^1.1.1" } }, "sha512-ajs2i56MANie/v0bMQ1BmRcrOb6MEvLT2rh/I1CA62NXGqF1Rxv6QwsN84LrADMXHRg8QiEMAIADkyDeQHt7Kg=="],
"@react-native-community/cli-config-android": ["@react-native-community/cli-config-android@20.1.0", "", { "dependencies": { "@react-native-community/cli-tools": "20.1.0", "fast-glob": "^3.3.2", "fast-xml-parser": "^4.4.1", "picocolors": "^1.1.1" } }, "sha512-3A01ZDyFeCALzzPcwP/fleHoP3sGNq1UX7FzxkTrOFX8RRL9ntXNXQd27E56VU4BBxGAjAJT4Utw8pcOjJceIA=="],
"@react-native-community/cli-config-android": ["@react-native-community/cli-config-android@20.1.1", "", { "dependencies": { "@react-native-community/cli-tools": "20.1.1", "fast-glob": "^3.3.2", "fast-xml-parser": "^4.4.1", "picocolors": "^1.1.1" } }, "sha512-1iUV2rPAyoWPo8EceAFC2vZTF+pEd9YqS87c0aqpbGOFE0gs1rHEB+auVR8CdjzftR4U9sq6m2jrdst0rvpIkg=="],
"@react-native-community/cli-config-apple": ["@react-native-community/cli-config-apple@20.1.0", "", { "dependencies": { "@react-native-community/cli-tools": "20.1.0", "execa": "^5.0.0", "fast-glob": "^3.3.2", "picocolors": "^1.1.1" } }, "sha512-n6JVs8Q3yxRbtZQOy05ofeb1kGtspGN3SgwPmuaqvURF9fsuS7c4/9up2Kp9C+1D2J1remPJXiZLNGOcJvfpOA=="],
"@react-native-community/cli-config-apple": ["@react-native-community/cli-config-apple@20.1.1", "", { "dependencies": { "@react-native-community/cli-tools": "20.1.1", "execa": "^5.0.0", "fast-glob": "^3.3.2", "picocolors": "^1.1.1" } }, "sha512-doepJgLJVqeJb5tNoP9hyFIcoZ1OMGO7QN/YMuCCIjbThUQe/J87XdwPol3Qrjr58KRt9xeBVz+kHeW5mtSutw=="],
"@react-native-community/cli-doctor": ["@react-native-community/cli-doctor@20.1.0", "", { "dependencies": { "@react-native-community/cli-config": "20.1.0", "@react-native-community/cli-platform-android": "20.1.0", "@react-native-community/cli-platform-apple": "20.1.0", "@react-native-community/cli-platform-ios": "20.1.0", "@react-native-community/cli-tools": "20.1.0", "command-exists": "^1.2.8", "deepmerge": "^4.3.0", "envinfo": "^7.13.0", "execa": "^5.0.0", "node-stream-zip": "^1.9.1", "ora": "^5.4.1", "picocolors": "^1.1.1", "semver": "^7.5.2", "wcwidth": "^1.0.1", "yaml": "^2.2.1" } }, "sha512-QfJF1GVjA4PBrIT3SJ0vFFIu0km1vwOmLDlOYVqfojajZJ+Dnvl0f94GN1il/jT7fITAxom///XH3/URvi7YTQ=="],
"@react-native-community/cli-doctor": ["@react-native-community/cli-doctor@20.1.1", "", { "dependencies": { "@react-native-community/cli-config": "20.1.1", "@react-native-community/cli-platform-android": "20.1.1", "@react-native-community/cli-platform-apple": "20.1.1", "@react-native-community/cli-platform-ios": "20.1.1", "@react-native-community/cli-tools": "20.1.1", "command-exists": "^1.2.8", "deepmerge": "^4.3.0", "envinfo": "^7.13.0", "execa": "^5.0.0", "node-stream-zip": "^1.9.1", "ora": "^5.4.1", "picocolors": "^1.1.1", "semver": "^7.5.2", "wcwidth": "^1.0.1", "yaml": "^2.2.1" } }, "sha512-eFpg5wWnV7uGqvLemshpgj2trPD8cckqxBuI4nT7sxKF/YpA/e3nnnyytHxPP5EnYfWbMcqfaq8hDJoOnJinGQ=="],
"@react-native-community/cli-platform-android": ["@react-native-community/cli-platform-android@20.1.0", "", { "dependencies": { "@react-native-community/cli-config-android": "20.1.0", "@react-native-community/cli-tools": "20.1.0", "execa": "^5.0.0", "logkitty": "^0.7.1", "picocolors": "^1.1.1" } }, "sha512-TeHPDThOwDppQRpndm9kCdRCBI8AMy3HSIQ+iy7VYQXL5BtZ5LfmGdusoj7nVN/ZGn0Lc6Gwts5qowyupXdeKg=="],
"@react-native-community/cli-platform-android": ["@react-native-community/cli-platform-android@20.1.1", "", { "dependencies": { "@react-native-community/cli-config-android": "20.1.1", "@react-native-community/cli-tools": "20.1.1", "execa": "^5.0.0", "logkitty": "^0.7.1", "picocolors": "^1.1.1" } }, "sha512-KPheizJQI0tVvBLy9owzpo+A9qDsDAa87e7a8xNaHnwqGpExnIzFPrbdvrltiZjstU2eB/+/UgNQxYIEd4Oc+g=="],
"@react-native-community/cli-platform-apple": ["@react-native-community/cli-platform-apple@20.1.0", "", { "dependencies": { "@react-native-community/cli-config-apple": "20.1.0", "@react-native-community/cli-tools": "20.1.0", "execa": "^5.0.0", "fast-xml-parser": "^4.4.1", "picocolors": "^1.1.1" } }, "sha512-0ih1hrYezSM2cuOlVnwBEFtMwtd8YgpTLmZauDJCv50rIumtkI1cQoOgLoS4tbPCj9U/Vn2a9BFH0DLFOOIacg=="],
"@react-native-community/cli-platform-apple": ["@react-native-community/cli-platform-apple@20.1.1", "", { "dependencies": { "@react-native-community/cli-config-apple": "20.1.1", "@react-native-community/cli-tools": "20.1.1", "execa": "^5.0.0", "fast-xml-parser": "^4.4.1", "picocolors": "^1.1.1" } }, "sha512-mQEjOzRFCcQTrCt73Q/+5WWTfUg6U2vLZv5rPuFiNrLbrwRqxVH3OLaXg5gilJkDTJC80z8iOSsdd8MRxONOig=="],
"@react-native-community/cli-platform-ios": ["@react-native-community/cli-platform-ios@20.1.0", "", { "dependencies": { "@react-native-community/cli-platform-apple": "20.1.0" } }, "sha512-XN7Da9z4WsJxtqVtEzY8q2bv22OsvzaFP5zy5+phMWNoJlU4lf7IvBSxqGYMpQ9XhYP7arDw5vmW4W34s06rnA=="],
"@react-native-community/cli-platform-ios": ["@react-native-community/cli-platform-ios@20.1.1", "", { "dependencies": { "@react-native-community/cli-platform-apple": "20.1.1" } }, "sha512-6vr10/oSjKkZO/BBgfFJNQTC/0CDF4WrN8iW9ss+Kt6ZL2QrBXLYz7fobrrboOlHwqqs5EyQadlEaNii7gKRJg=="],
"@react-native-community/cli-server-api": ["@react-native-community/cli-server-api@20.1.0", "", { "dependencies": { "@react-native-community/cli-tools": "20.1.0", "body-parser": "^1.20.3", "compression": "^1.7.1", "connect": "^3.6.5", "errorhandler": "^1.5.1", "nocache": "^3.0.1", "open": "^6.2.0", "pretty-format": "^29.7.0", "serve-static": "^1.13.1", "ws": "^6.2.3" } }, "sha512-Tb415Oh8syXNT2zOzLzFkBXznzGaqKCiaichxKzGCDKg6JGHp3jSuCmcTcaPeYC7oc32n/S3Psw7798r4Q/7lA=="],
"@react-native-community/cli-server-api": ["@react-native-community/cli-server-api@20.1.1", "", { "dependencies": { "@react-native-community/cli-tools": "20.1.1", "body-parser": "^1.20.3", "compression": "^1.7.1", "connect": "^3.6.5", "errorhandler": "^1.5.1", "nocache": "^3.0.1", "open": "^6.2.0", "pretty-format": "^29.7.0", "serve-static": "^1.13.1", "strict-url-sanitise": "0.0.1", "ws": "^6.2.3" } }, "sha512-phHfiCa4WqfKfaoV2vGVR3ZrYQDQTpI1k+C+i6rXAxFGxPuy8IgFFVOSL543qjKPpHBVwLcA+/xAJCVpdyCtVQ=="],
"@react-native-community/cli-tools": ["@react-native-community/cli-tools@20.1.0", "", { "dependencies": { "@vscode/sudo-prompt": "^9.0.0", "appdirsjs": "^1.2.4", "execa": "^5.0.0", "find-up": "^5.0.0", "launch-editor": "^2.9.1", "mime": "^2.4.1", "ora": "^5.4.1", "picocolors": "^1.1.1", "prompts": "^2.4.2", "semver": "^7.5.2" } }, "sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ=="],
"@react-native-community/cli-tools": ["@react-native-community/cli-tools@20.1.1", "", { "dependencies": { "@vscode/sudo-prompt": "^9.0.0", "appdirsjs": "^1.2.4", "execa": "^5.0.0", "find-up": "^5.0.0", "launch-editor": "^2.9.1", "mime": "^2.4.1", "ora": "^5.4.1", "picocolors": "^1.1.1", "prompts": "^2.4.2", "semver": "^7.5.2" } }, "sha512-j+zX/H2X+6ZGneIDj56tZ1Hbnip5nSfnq7yGlMyF/zm3U1hKp3G1jN5v0YEfnz/zEmjr7zruh4Y06KmZrF1lrA=="],
"@react-native-community/cli-types": ["@react-native-community/cli-types@20.1.0", "", { "dependencies": { "joi": "^17.2.1" } }, "sha512-D0kDspcwgbVXyNjwicT7Bb1JgXjijTw1JJd+qxyF/a9+sHv7TU4IchV+gN38QegeXqVyM4Ym7YZIvXMFBmyJqA=="],
"@react-native-community/cli-types": ["@react-native-community/cli-types@20.1.1", "", { "dependencies": { "joi": "^17.2.1" } }, "sha512-Tp+s27I/RDONrGvWVj4IzEmga2HhJhXi8ZlZTfycMMyAcv4LG/CTPira+BUZs8nzLAJNrlJ79pVVPJPqQAe+aw=="],
"@react-native-community/netinfo": ["@react-native-community/netinfo@11.4.1", "", { "peerDependencies": { "react-native": ">=0.59" } }, "sha512-B0BYAkghz3Q2V09BF88RA601XursIEA111tnc2JOaN7axJWmNefmfjZqw/KdSxKZp7CZUuPpjBmz/WCR9uaHYg=="],
@@ -602,7 +602,7 @@
"@tanstack/react-pacer": ["@tanstack/react-pacer@0.19.1", "", { "dependencies": { "@tanstack/pacer": "0.17.1", "@tanstack/react-store": "^0.8.0" }, "peerDependencies": { "react": ">=16.8", "react-dom": ">=16.8" } }, "sha512-wfGwKLo2gosKr5tsXico+jWJ8LsWsBC8MA1HVtUY/D6dhFduEVizKxRUcvP60I3dRvnoXDbN202g4feJHlivnA=="],
"@tanstack/react-query": ["@tanstack/react-query@5.90.17", "", { "dependencies": { "@tanstack/query-core": "5.90.17" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-PGc2u9KLwohDUSchjW9MZqeDQJfJDON7y4W7REdNBgiFKxQy+Pf7eGjiFWEj5xPqKzAeHYdAb62IWI1a9UJyGQ=="],
"@tanstack/react-query": ["@tanstack/react-query@5.90.20", "", { "dependencies": { "@tanstack/query-core": "5.90.20" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw=="],
"@tanstack/react-query-persist-client": ["@tanstack/react-query-persist-client@5.90.18", "", { "dependencies": { "@tanstack/query-persist-client-core": "5.91.15" }, "peerDependencies": { "@tanstack/react-query": "^5.90.16", "react": "^18 || ^19" } }, "sha512-ToVRTVpjzTrd9S/p7JIvGdLs+Xtz9aDMM/7+TQGSV9notY8Jt64irfAAAkZ05syftLKS+3KPgyKAnHcVeKVbWQ=="],
@@ -1376,7 +1376,7 @@
"locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="],
"lodash": ["lodash@4.17.21", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="],
"lodash": ["lodash@4.17.23", "", {}, "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w=="],
"lodash.debounce": ["lodash.debounce@4.0.8", "", {}, "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="],
@@ -1640,7 +1640,7 @@
"react-freeze": ["react-freeze@1.0.4", "", { "peerDependencies": { "react": ">=17.0.0" } }, "sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA=="],
"react-i18next": ["react-i18next@16.5.3", "", { "dependencies": { "@babel/runtime": "^7.28.4", "html-parse-stringify": "^3.0.1", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "i18next": ">= 25.6.2", "react": ">= 16.8.0", "typescript": "^5" }, "optionalPeers": ["typescript"] }, "sha512-fo+/NNch37zqxOzlBYrWMx0uy/yInPkRfjSuy4lqKdaecR17nvCHnEUt3QyzA8XjQ2B/0iW/5BhaHR3ZmukpGw=="],
"react-i18next": ["react-i18next@16.5.4", "", { "dependencies": { "@babel/runtime": "^7.28.4", "html-parse-stringify": "^3.0.1", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "i18next": ">= 25.6.2", "react": ">= 16.8.0", "typescript": "^5" }, "optionalPeers": ["typescript"] }, "sha512-6yj+dcfMncEC21QPhOTsW8mOSO+pzFmT6uvU7XXdvM/Cp38zJkmTeMeKmTrmCMD5ToT79FmiE/mRWiYWcJYW4g=="],
"react-is": ["react-is@19.2.3", "", {}, "sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA=="],
@@ -1854,6 +1854,8 @@
"strict-uri-encode": ["strict-uri-encode@2.0.0", "", {}, "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ=="],
"strict-url-sanitise": ["strict-url-sanitise@0.0.1", "", {}, "sha512-nuFtF539K8jZg3FjaWH/L8eocCR6gegz5RDOsaWxfdbF5Jqr2VXWxZayjTwUzsWJDC91k2EbnJXp6FuWW+Z4hg=="],
"string-argv": ["string-argv@0.3.2", "", {}, "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q=="],
"string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
@@ -2242,7 +2244,7 @@
"@react-navigation/native-stack/color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="],
"@tanstack/react-query/@tanstack/query-core": ["@tanstack/query-core@5.90.17", "", {}, "sha512-hDww+RyyYhjhUfoYQ4es6pbgxY7LNiPWxt4l1nJqhByjndxJ7HIjDxTBtfvMr5HwjYavMrd+ids5g4Rfev3lVQ=="],
"@tanstack/react-query/@tanstack/query-core": ["@tanstack/query-core@5.90.20", "", {}, "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg=="],
"@types/babel__core/@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="],

View File

@@ -15,6 +15,7 @@
"android:tv": "cross-env EXPO_TV=1 expo run:android",
"build:android:local": "cd android && cross-env NODE_ENV=production ./gradlew assembleRelease",
"ios:unsigned-build": "cross-env EXPO_TV=0 bun scripts/ios/build-ios.ts --production",
"ios:unsigned-build:tv": "cross-env EXPO_TV=1 bun scripts/ios/build-ios.ts --production",
"prepare": "husky",
"typecheck": "node scripts/typecheck.js",
"check": "biome check . --max-diagnostics 1000",
@@ -39,7 +40,7 @@
"@shopify/flash-list": "2.0.2",
"@tanstack/query-sync-storage-persister": "^5.90.18",
"@tanstack/react-pacer": "^0.19.1",
"@tanstack/react-query": "5.90.17",
"@tanstack/react-query": "5.90.20",
"@tanstack/react-query-persist-client": "^5.90.18",
"axios": "^1.7.9",
"expo": "~54.0.31",
@@ -72,12 +73,12 @@
"expo-web-browser": "~15.0.10",
"i18next": "^25.0.0",
"jotai": "2.16.2",
"lodash": "4.17.21",
"lodash": "4.17.23",
"nativewind": "^2.0.11",
"patch-package": "^8.0.0",
"react": "19.1.0",
"react-dom": "19.1.0",
"react-i18next": "16.5.3",
"react-i18next": "16.5.4",
"react-native": "0.81.5",
"react-native-awesome-slider": "^2.9.0",
"react-native-bottom-tabs": "1.1.0",
@@ -117,7 +118,7 @@
"devDependencies": {
"@babel/core": "7.28.6",
"@biomejs/biome": "2.3.11",
"@react-native-community/cli": "20.1.0",
"@react-native-community/cli": "20.1.1",
"@react-native-tvos/config-tv": "0.1.4",
"@types/jest": "29.5.14",
"@types/lodash": "4.17.23",

View File

@@ -7,7 +7,7 @@
"username_placeholder": "Benutzername",
"password_placeholder": "Passwort",
"login_button": "Anmelden",
"quick_connect": "Quick Connect",
"quick_connect": "Schnellverbindung",
"enter_code_to_login": "Gib den Code {{code}} ein, um dich anzumelden",
"failed_to_initiate_quick_connect": "Fehler beim Initiieren der Schnellverbindung",
"got_it": "Verstanden",
@@ -30,48 +30,48 @@
"connect_button": "Verbinden",
"previous_servers": "Vorherige Server",
"clear_button": "Löschen",
"swipe_to_remove": "Wischen, um zu entfernen",
"swipe_to_remove": "Swipe to remove",
"search_for_local_servers": "Nach lokalen Servern suchen",
"searching": "Suche...",
"servers": "Server",
"saved": "Gespeichert",
"session_expired": "Sitzung abgelaufen",
"please_login_again": "Ihre Sitzung ist abgelaufen. Bitte erneut anmelden.",
"remove_saved_login": "Gespeicherte Zugangsdaten entfernen",
"remove_saved_login_description": "Hiermit werden ihre gespeicherten Zugangsdaten für diesen Server entfernt. Sie müssen sich dann erneut anmelden.",
"accounts_count": "{{count}} Konten",
"select_account": "Konto auswählen",
"add_account": "Konto hinzufügen",
"remove_account_description": "Hiermit werden die gespeicherten Zugangsdaten für {{username}} entfernt."
"saved": "Saved",
"session_expired": "Session Expired",
"please_login_again": "Your saved session has expired. Please log in again.",
"remove_saved_login": "Remove Saved Login",
"remove_saved_login_description": "This will remove your saved credentials for this server. You'll need to enter your username and password again next time.",
"accounts_count": "{{count}} accounts",
"select_account": "Select Account",
"add_account": "Add Account",
"remove_account_description": "This will remove the saved credentials for {{username}}."
},
"save_account": {
"title": "Konto speichern",
"save_for_later": "Dieses Konto speichern",
"security_option": "Sicherheitseinstellung",
"no_protection": "Keine",
"no_protection_desc": "Schnellanmeldung ohne Authentifizierung",
"pin_code": "PIN",
"pin_code_desc": "4-stellige PIN bei Konto-Wechsel erforderlich",
"password": "Passwort wiederholen",
"password_desc": "Passwort bei Konto-Wechsel erforderlich",
"save_button": "Speichern",
"cancel_button": "Abbrechen"
"title": "Save Account",
"save_for_later": "Save this account",
"security_option": "Security Option",
"no_protection": "No protection",
"no_protection_desc": "Quick login without authentication",
"pin_code": "PIN code",
"pin_code_desc": "4-digit PIN required when switching",
"password": "Re-enter password",
"password_desc": "Password required when switching",
"save_button": "Save",
"cancel_button": "Cancel"
},
"pin": {
"enter_pin": "PIN eingeben",
"enter_pin_for": "PIN für {{username}} eingeben",
"enter_4_digits": "4 Ziffern eingeben",
"invalid_pin": "Ungültige PIN",
"setup_pin": "PIN festlegen",
"confirm_pin": "PIN bestätigen",
"pins_dont_match": "PIN stimmt nicht überein",
"forgot_pin": "PIN vergessen?",
"forgot_pin_desc": "Ihre gespeicherten Zugangsdaten werden entfernt"
"enter_pin": "Enter PIN",
"enter_pin_for": "Enter PIN for {{username}}",
"enter_4_digits": "Enter 4 digits",
"invalid_pin": "Invalid PIN",
"setup_pin": "Set Up PIN",
"confirm_pin": "Confirm PIN",
"pins_dont_match": "PINs don't match",
"forgot_pin": "Forgot PIN?",
"forgot_pin_desc": "Your saved credentials will be removed"
},
"password": {
"enter_password": "Passwort eingeben",
"enter_password_for": "Passwort für {{username}} eingeben",
"invalid_password": "Ungültiges Passwort"
"enter_password": "Enter Password",
"enter_password_for": "Enter password for {{username}}",
"invalid_password": "Invalid password"
},
"home": {
"checking_server_connection": "Überprüfe Serververbindung...",
@@ -87,7 +87,7 @@
"error_message": "Etwas ist schiefgelaufen.\nBitte melde dich ab und wieder an.",
"continue_watching": "Weiterschauen",
"next_up": "Als nächstes",
"continue_and_next_up": "\"Weiterschauen\" und \"Als Nächstes\"",
"continue_and_next_up": "Continue & Next Up",
"recently_added_in": "Kürzlich hinzugefügt in {{libraryName}}",
"suggested_movies": "Empfohlene Filme",
"suggested_episodes": "Empfohlene Episoden",
@@ -120,36 +120,36 @@
},
"appearance": {
"title": "Aussehen",
"merge_next_up_continue_watching": "\"Weiterschauen\" und \"Als Nächstes\" kombinieren",
"hide_remote_session_button": "Button für Remote-Sitzung ausblenden"
"merge_next_up_continue_watching": "Merge Continue Watching & Next Up",
"hide_remote_session_button": "Hide Remote Session Button"
},
"network": {
"title": "Netzwerk",
"local_network": "Lokales Netzwerk",
"auto_switch_enabled": "Zuhause automatisch wechseln",
"auto_switch_description": "Im WLAN Zuhause automatisch zu lokaler URL wechseln",
"local_url": "Lokale URL",
"local_url_hint": "Lokale Server-URL eingeben (zB. http://192.168.1.100:8096)",
"title": "Network",
"local_network": "Local Network",
"auto_switch_enabled": "Auto-switch when at home",
"auto_switch_description": "Automatically switch to local URL when connected to home WiFi",
"local_url": "Local URL",
"local_url_hint": "Enter your local server address (e.g., http://192.168.1.100:8096)",
"local_url_placeholder": "http://192.168.1.100:8096",
"home_wifi_networks": "Private WLAN-Netze",
"add_current_network": "{{ssid}} hinzufügen",
"not_connected_to_wifi": "Nicht mit WLAN verbunden",
"no_networks_configured": "Keine Netzwerke konfiguriert",
"add_network_hint": "Füge dein privates WLAN-Netz hinzu um automatischen Wechsel zu aktivieren",
"current_wifi": "Aktuelles WLAN-Netz",
"using_url": "Verwendet",
"local": "Lokale URL",
"home_wifi_networks": "Home WiFi Networks",
"add_current_network": "Add \"{{ssid}}\"",
"not_connected_to_wifi": "Not connected to WiFi",
"no_networks_configured": "No networks configured",
"add_network_hint": "Add your home WiFi network to enable auto-switching",
"current_wifi": "Current WiFi",
"using_url": "Using",
"local": "Local URL",
"remote": "Remote URL",
"not_connected": "Nicht verbunden",
"current_server": "Aktueller Server",
"not_connected": "Not connected",
"current_server": "Current Server",
"remote_url": "Remote URL",
"active_url": "Aktive URL",
"not_configured": "Nicht konfiguriert",
"network_added": "Netzwerk hinzugefügt",
"network_already_added": "Netzwerk bereits hinzugefügt",
"no_wifi_connected": "Nicht mit WLAN verbunden",
"permission_denied": "Standortberechtigung nicht verfügbar",
"permission_denied_explanation": "Standortberechtigung ist nötig um WLAN-Netze für den automatischen Wechsel zu erkennen. Bitte in den Einstellungen aktivieren."
"active_url": "Active URL",
"not_configured": "Not configured",
"network_added": "Network added",
"network_already_added": "Network already added",
"no_wifi_connected": "Not connected to WiFi",
"permission_denied": "Location permission denied",
"permission_denied_explanation": "Location permission is required to detect WiFi network for auto-switching. Please enable it in Settings."
},
"user_info": {
"user_info_title": "Benutzerinformationen",
@@ -159,82 +159,82 @@
"app_version": "App-Version"
},
"quick_connect": {
"quick_connect_title": "Quick Connect",
"authorize_button": "Quick Connect autorisieren",
"enter_the_quick_connect_code": "Quick Connect-Code eingeben...",
"success": "Erfolgreich verbunden",
"quick_connect_autorized": "Quick Connect autorisiert",
"quick_connect_title": "Schnellverbindung",
"authorize_button": "Schnellverbindung autorisieren",
"enter_the_quick_connect_code": "Gib den Schnellverbindungscode ein...",
"success": "Erfolg",
"quick_connect_autorized": "Schnellverbindung autorisiert",
"error": "Fehler",
"invalid_code": "Ungültiger Code",
"authorize": "Autorisieren"
},
"media_controls": {
"media_controls_title": "Mediensteuerung",
"forward_skip_length": "Vorspullänge",
"rewind_length": "Rückspullänge",
"forward_skip_length": "Vorspulzeit",
"rewind_length": "Rückspulzeit",
"seconds_unit": "s"
},
"gesture_controls": {
"gesture_controls_title": "Gestensteuerung",
"horizontal_swipe_skip": "Horizontal Wischen zum Überspringen",
"horizontal_swipe_skip_description": "Wische links/rechts, wenn Steuerelemente ausgeblendet sind um zu überspringen",
"left_side_brightness": "Helligkeitsregler Links",
"left_side_brightness_description": "Links nach oben/unten wischen um Helligkeit anzupassen",
"right_side_volume": "Lautstärkeregler Rechts",
"right_side_volume_description": "Rechts nach oben/unten wischen um Lautstärke anzupassen",
"hide_volume_slider": "Lautstärkeregler ausblenden",
"hide_volume_slider_description": "Lautstärkeregler im Videoplayer ausblenden",
"hide_brightness_slider": "Helligkeitsregler ausblenden",
"hide_brightness_slider_description": "Helligkeitsregler im Videoplayer ausblenden"
"horizontal_swipe_skip": "Horizontales Wischen zum Überspringen",
"horizontal_swipe_skip_description": "Wische links/rechts, wenn Steuerelemente ausgeblendet werden um zu überspringen",
"left_side_brightness": "Helligkeitskontrolle der linken Seite",
"left_side_brightness_description": "Wischen Sie auf der linken Seite nach oben/runter, um die Helligkeit anzupassen",
"right_side_volume": "Lautstärkeregelung der rechten Seite",
"right_side_volume_description": "Auf der rechten Seite nach oben/unten wischen, um Lautstärke anzupassen",
"hide_volume_slider": "Hide Volume Slider",
"hide_volume_slider_description": "Hide the volume slider in the video player",
"hide_brightness_slider": "Hide Brightness Slider",
"hide_brightness_slider_description": "Hide the brightness slider in the video player"
},
"audio": {
"audio_title": "Audio",
"set_audio_track": "Audiospur aus dem vorherigen Element übernehmen",
"set_audio_track": "Audiospur aus dem vorherigen Element festlegen",
"audio_language": "Audio-Sprache",
"audio_hint": "Standardsprache für Audio auswählen.",
"audio_hint": "Wähl die Standardsprache für Audio aus.",
"none": "Keine",
"language": "Sprache",
"transcode_mode": {
"title": "Audio-Transcoding",
"description": "Legt fest, wie Surround-Audio (7.1, TrueHD, DTS-HD) behandelt wird",
"title": "Audio Transcoding",
"description": "Controls how surround audio (7.1, TrueHD, DTS-HD) is handled",
"auto": "Auto",
"stereo": "Stereo erzwingen",
"5_1": "5.1 erlauben",
"stereo": "Force Stereo",
"5_1": "Allow 5.1",
"passthrough": "Passthrough"
}
},
"subtitles": {
"subtitle_title": "Untertitel",
"subtitle_hint": "Untertitel-Erscheinungsbild und Verhalten konfigurieren.",
"subtitle_hint": "Konfigurier die Untertitel-Präferenzen.",
"subtitle_language": "Untertitel-Sprache",
"subtitle_mode": "Untertitel-Modus",
"set_subtitle_track": "Untertitel-Spur aus dem vorherigen Element übernehmen",
"set_subtitle_track": "Untertitel-Spur aus dem vorherigen Element festlegen",
"subtitle_size": "Untertitel-Größe",
"none": "Keine",
"language": "Sprache",
"loading": "Lädt",
"modes": {
"Default": "Standard",
"Smart": "Smart",
"Smart": "Intelligent",
"Always": "Immer",
"None": "Keine",
"OnlyForced": "Nur erzwungene"
"OnlyForced": "Nur erzwungen"
},
"text_color": "Textfarbe",
"background_color": "Hintergrundfarbe",
"outline_color": "Konturfarbe",
"outline_thickness": "Konturdicke",
"outline_thickness": "Umriss Dicke",
"background_opacity": "Hintergrundtransparenz",
"outline_opacity": "Konturtransparenz",
"bold_text": "Fettgedruckter Text",
"outline_opacity": "Kontur-Deckkraft",
"bold_text": "Bold Text",
"colors": {
"Black": "Schwarz",
"Gray": "Grau",
"Silver": "Silber",
"White": "Weiß",
"Maroon": "Rotbraun",
"Maroon": "Marotte",
"Red": "Rot",
"Fuchsia": "Magenta",
"Fuchsia": "Fuchsia",
"Yellow": "Gelb",
"Olive": "Olivgrün",
"Green": "Grün",
@@ -251,29 +251,29 @@
"Normal": "Normal",
"Thick": "Dick"
},
"subtitle_color": "Untertitelfarbe",
"subtitle_background_color": "Hintergrundfarbe",
"subtitle_font": "Untertitel-Schriftart",
"ksplayer_title": "KSPlayer Einstellungen",
"subtitle_color": "Subtitle Color",
"subtitle_background_color": "Background Color",
"subtitle_font": "Subtitle Font",
"ksplayer_title": "KSPlayer Settings",
"hardware_decode": "Hardware Decoding",
"hardware_decode_description": "Hardwarebeschleunigung für Video Decoding verwenden. Deaktivieren wenn Wiedergabeprobleme auftreten."
"hardware_decode_description": "Use hardware acceleration for video decoding. Disable if you experience playback issues."
},
"vlc_subtitles": {
"title": "VLC Untertitel-Einstellungen",
"hint": "Anpassen des Untertitel-Erscheinungsbildes für VLC. Änderungen werden bei der nächsten Wiedergabe übernommen.",
"text_color": "Schriftfarbe",
"background_color": "Hintergrundfarbe",
"background_opacity": "Hintergrundtransparenz",
"outline_color": "Konturfarbe",
"outline_opacity": "Konturtransparenz",
"outline_thickness": "Konturdicke",
"bold": "Fettgedruckter Text",
"margin": "Unterer Abstand"
"title": "VLC Subtitle Settings",
"hint": "Customize subtitle appearance for VLC player. Changes take effect on next playback.",
"text_color": "Text Color",
"background_color": "Background Color",
"background_opacity": "Background Opacity",
"outline_color": "Outline Color",
"outline_opacity": "Outline Opacity",
"outline_thickness": "Outline Thickness",
"bold": "Bold Text",
"margin": "Bottom Margin"
},
"video_player": {
"title": "Videoplayer",
"video_player": "Videoplayer",
"video_player_description": "Videoplayer auf iOS auswählen.",
"title": "Video Player",
"video_player": "Video Player",
"video_player_description": "Choose which video player to use on iOS.",
"ksplayer": "KSPlayer",
"vlc": "VLC"
},
@@ -282,7 +282,7 @@
"video_orientation": "Videoausrichtung",
"orientation": "Ausrichtung",
"orientations": {
"DEFAULT": "Geräteausrichtung folgen",
"DEFAULT": "Standard",
"ALL": "Alle",
"PORTRAIT": "Hochformat",
"PORTRAIT_UP": "Hochformat oben",
@@ -294,54 +294,54 @@
"UNKNOWN": "Unbekannt"
},
"safe_area_in_controls": "Sicherer Bereich in den Steuerungen",
"video_player": "Videoplayer",
"video_player": "Video player",
"video_players": {
"VLC_3": "VLC 3",
"VLC_4": "VLC 4 (Experimentell + PiP)"
},
"show_custom_menu_links": "Benutzerdefinierte Menülinks anzeigen",
"show_large_home_carousel": "Zeige große Startseiten-Übersicht (Beta)",
"show_large_home_carousel": "Zeige Großes Heimkarussell (Beta)",
"hide_libraries": "Bibliotheken ausblenden",
"select_liraries_you_want_to_hide": "Bibliotheken auswählen die aus dem Bibliothekstab und der Startseite ausgeblendet werden sollen.",
"select_liraries_you_want_to_hide": "Wähl die Bibliotheken aus, die du im Bibliothekstab und auf der Startseite ausblenden möchtest.",
"disable_haptic_feedback": "Haptisches Feedback deaktivieren",
"default_quality": "Standardqualität",
"default_playback_speed": "Standard-Wiedergabegeschwindigkeit",
"auto_play_next_episode": "Automatisch nächste Episode abspielen",
"max_auto_play_episode_count": "Maximale automatisch abzuspielende Episodenanzahl",
"default_playback_speed": "Default Playback Speed",
"auto_play_next_episode": "Auto-play Next Episode",
"max_auto_play_episode_count": "Max. automatische Wiedergabe Episodenanzahl",
"disabled": "Deaktiviert"
},
"downloads": {
"downloads_title": "Downloads"
},
"music": {
"title": "Musik",
"playback_title": "Wiedergabe",
"playback_description": "Konfigurieren, wie Musik abgespielt wird.",
"prefer_downloaded": "Bevorzuge heruntergeladene Titel",
"title": "Music",
"playback_title": "Playback",
"playback_description": "Configure how music is played.",
"prefer_downloaded": "Prefer Downloaded Songs",
"caching_title": "Caching",
"caching_description": "Automatisches Caching anstehender Titel für bessere Wiedergabe.",
"lookahead_enabled": "Look-Ahead Caching aktivieren",
"lookahead_count": "Titel vorher in den Cache laden",
"max_cache_size": "Maximale Cache-Größe"
"caching_description": "Automatically cache upcoming tracks for smoother playback.",
"lookahead_enabled": "Enable Look-Ahead Caching",
"lookahead_count": "Tracks to Pre-cache",
"max_cache_size": "Max Cache Size"
},
"plugins": {
"plugins_title": "Plugins",
"plugins_title": "Erweiterungen",
"jellyseerr": {
"jellyseerr_warning": "Diese Integration ist in einer frühen Entwicklungsphase und kann jederzeit geändert werden.",
"server_url": "Server URL",
"server_url_hint": "Beispiel: http(s)://your-host.url\n(Port hinzufügen, falls erforderlich)",
"server_url_placeholder": "Seerr URL",
"jellyseerr_warning": "Diese integration ist in einer frühen Entwicklungsphase. Erwarte Veränderungen.",
"server_url": "Server Adresse",
"server_url_hint": "Beispiel: http(s)://your-host.url\n(Portnummer hinzufügen, falls erforderlich)",
"server_url_placeholder": "Jellyseerr URL...",
"password": "Passwort",
"password_placeholder": "Passwort für Jellyfin Benutzer {{username}} eingeben",
"login_button": "Anmelden",
"total_media_requests": "Gesamtanfragen",
"movie_quota_limit": "Film-Anfragelimit",
"movie_quota_days": "Film-Anfragetagelimit",
"tv_quota_limit": "Serien-Anfragelimit",
"tv_quota_days": "Serien-Anfragetagelimit",
"reset_jellyseerr_config_button": "Seerr-Konfiguration zurücksetzen",
"movie_quota_days": "Film-Anfragetage",
"tv_quota_limit": "TV-Anfragelimit",
"tv_quota_days": "TV-Anfragetage",
"reset_jellyseerr_config_button": "Setze Jellyseerr-Konfiguration zurück",
"unlimited": "Unlimitiert",
"plus_n_more": "+{{n}} weitere",
"plus_n_more": "+{{n}} more",
"order_by": {
"DEFAULT": "Standard",
"VOTE_COUNT_AND_AVERAGE": "Stimmenanzahl und Durchschnitt",
@@ -352,71 +352,71 @@
"enable_marlin_search": "Aktiviere Marlin Search",
"url": "URL",
"server_url_placeholder": "http(s)://domain.org:port",
"marlin_search_hint": "URL für den Marlin Server eingeben. Die URL sollte http oder https enthalten und optional den Port.",
"marlin_search_hint": "Gib die URL für den Marlin Server ein. Die URL sollte http oder https enthalten und optional den Port.",
"read_more_about_marlin": "Erfahre mehr über Marlin.",
"save_button": "Speichern",
"toasts": {
"saved": "Gespeichert",
"refreshed": "Einstellungen vom Server aktualisiert"
"refreshed": "Settings refreshed from server"
},
"refresh_from_server": "Einstellungen vom Server aktualisieren"
"refresh_from_server": "Refresh Settings from Server"
},
"streamystats": {
"enable_streamystats": "Streamystats aktivieren",
"disable_streamystats": "Streamystats deaktivieren",
"enable_search": "Zum Suchen verwenden",
"enable_streamystats": "Enable Streamystats",
"disable_streamystats": "Disable Streamystats",
"enable_search": "Use for Search",
"url": "URL",
"server_url_placeholder": "http(s)://streamystats.example.com",
"streamystats_search_hint": "URL für den Streamystats-Server eingeben.",
"read_more_about_streamystats": "Mehr über Streamystats erfahren.",
"save_button": "Speichern",
"save": "Gespeichert",
"streamystats_search_hint": "Enter the URL for your Streamystats server. The URL should include http or https and optionally the port.",
"read_more_about_streamystats": "Read More About Streamystats.",
"save_button": "Save",
"save": "Save",
"features_title": "Features",
"home_sections_title": "Startseitenbereiche",
"enable_movie_recommendations": "Filmempfehlungen",
"enable_series_recommendations": "Serienempfehlungen",
"enable_promoted_watchlists": "Empfohlene Merklisten",
"hide_watchlists_tab": "Merklisten-Tab ausblenden",
"home_sections_hint": "Zeige personalisierte Empfehlungen und empfohlene Merklisten von Streamystats auf der Startseite.",
"recommended_movies": "Empfohlene Filme",
"recommended_series": "Empfohlene Serien",
"home_sections_title": "Home Sections",
"enable_movie_recommendations": "Movie Recommendations",
"enable_series_recommendations": "Series Recommendations",
"enable_promoted_watchlists": "Promoted Watchlists",
"hide_watchlists_tab": "Hide Watchlists Tab",
"home_sections_hint": "Show personalized recommendations and promoted watchlists from Streamystats on the home page.",
"recommended_movies": "Recommended Movies",
"recommended_series": "Recommended Series",
"toasts": {
"saved": "Gespeichert",
"refreshed": "Einstellungen vom Server aktualisiert",
"disabled": "Streamystats deaktiviert"
"saved": "Saved",
"refreshed": "Settings refreshed from server",
"disabled": "Streamystats disabled"
},
"refresh_from_server": "Einstellungen vom Server aktualisieren"
"refresh_from_server": "Refresh Settings from Server"
},
"kefinTweaks": {
"watchlist_enabler": "Merklisten-Integration aktivieren",
"watchlist_button": "Merklisten-Integration umschalten"
"watchlist_enabler": "Enable our Watchlist integration",
"watchlist_button": "Toggle Watchlist integration"
}
},
"storage": {
"storage_title": "Speicher",
"app_usage": "App {{usedSpace}}%",
"device_usage": "Gerät {{availableSpace}}%",
"size_used": "{{used}} von {{total}} genutzt",
"delete_all_downloaded_files": "Alle heruntergeladenen Dateien löschen",
"music_cache_title": "Musik-Cache",
"music_cache_description": "Beim Anhören Titel automatisch in den Cache laden um bessere Wiedergabe und Offline-Wiedergabe zu ermöglichen",
"enable_music_cache": "Musik-Cache aktivieren",
"clear_music_cache": "Musik-Cache leeren",
"music_cache_size": "{{size}} gechached",
"music_cache_cleared": "Musik-Cache geleert",
"delete_all_downloaded_songs": "Alle heruntergeladenen Titel löschen",
"downloaded_songs_size": "{{size}} heruntergeladen",
"downloaded_songs_deleted": "Heruntergeladene Titel gelöscht"
"size_used": "{{used}} von {{total}} benutzt",
"delete_all_downloaded_files": "Alle Downloads löschen",
"music_cache_title": "Music Cache",
"music_cache_description": "Automatically cache songs as you listen for smoother playback and offline support",
"enable_music_cache": "Enable Music Cache",
"clear_music_cache": "Clear Music Cache",
"music_cache_size": "{{size}} cached",
"music_cache_cleared": "Music cache cleared",
"delete_all_downloaded_songs": "Delete All Downloaded Songs",
"downloaded_songs_size": "{{size}} downloaded",
"downloaded_songs_deleted": "Downloaded songs deleted"
},
"intro": {
"title": "Einführung",
"show_intro": "Einführung anzeigen",
"reset_intro": "Einführung zurücksetzen"
"title": "Intro ",
"show_intro": "Show intro",
"reset_intro": "Reset intro"
},
"logs": {
"logs_title": "Logs",
"export_logs": "Logs exportieren",
"click_for_more_info": "Für mehr Informationen klicken",
"export_logs": "Export logs",
"click_for_more_info": "Click for more info",
"level": "Level",
"no_logs_available": "Keine Logs verfügbar",
"delete_all_logs": "Alle Logs löschen"
@@ -438,21 +438,21 @@
},
"downloads": {
"downloads_title": "Downloads",
"tvseries": "Serien",
"tvseries": "TV-Serien",
"movies": "Filme",
"queue": "Warteschlange",
"other_media": "Andere Medien",
"queue_hint": "Warteschlange und aktive Downloads gehen verloren wenn die App neu gestartet wird",
"queue_hint": "Warteschlange und aktive Downloads gehen verloren bei App-Neustart",
"no_items_in_queue": "Keine Elemente in der Warteschlange",
"no_downloaded_items": "Keine heruntergeladenen Elemente",
"delete_all_movies_button": "Alle Filme löschen",
"delete_all_tvseries_button": "Alle Serien löschen",
"delete_all_tvseries_button": "Alle TV-Serien löschen",
"delete_all_button": "Alles löschen",
"delete_all_other_media_button": "Alle anderen Medien löschen",
"delete_all_other_media_button": "Andere Medien löschen",
"active_download": "Aktiver Download",
"no_active_downloads": "Keine aktiven Downloads",
"active_downloads": "Aktive Downloads",
"new_app_version_requires_re_download": "Neue App-Version erfordert erneutes Herunterladen",
"new_app_version_requires_re_download": "Die neue App-Version erfordert das erneute Herunterladen.",
"new_app_version_requires_re_download_description": "Die neue App-Version erfordert das erneute Herunterladen von Filmen und Serien. Bitte lösche alle heruntergeladenen Elemente und starte den Download erneut.",
"back": "Zurück",
"delete": "Löschen",
@@ -463,8 +463,8 @@
"you_are_not_allowed_to_download_files": "Du hast keine Berechtigung, Dateien herunterzuladen",
"deleted_all_movies_successfully": "Alle Filme erfolgreich gelöscht!",
"failed_to_delete_all_movies": "Fehler beim Löschen aller Filme",
"deleted_all_tvseries_successfully": "Alle Serien erfolgreich gelöscht!",
"failed_to_delete_all_tvseries": "Fehler beim Löschen aller Serien",
"deleted_all_tvseries_successfully": "Alle TV-Serien erfolgreich gelöscht!",
"failed_to_delete_all_tvseries": "Fehler beim Löschen aller TV-Serien",
"deleted_media_successfully": "Andere Medien erfolgreich gelöscht!",
"failed_to_delete_media": "Fehler beim Löschen anderer Medien",
"download_deleted": "Download gelöscht",
@@ -486,7 +486,7 @@
"all_files_folders_and_jobs_deleted_successfully": "Alle Dateien, Ordner und Jobs erfolgreich gelöscht",
"failed_to_clean_cache_directory": "Fehler beim Bereinigen des Cache-Verzeichnisses",
"could_not_get_download_url_for_item": "Download-URL für {{itemName}} konnte nicht geladen werden",
"go_to_downloads": "Zu Downloads gehen",
"go_to_downloads": "Gehe zu den Downloads",
"file_deleted": "{{item}} gelöscht"
}
}
@@ -499,18 +499,18 @@
"subtitle": "Untertitel",
"play": "Abspielen",
"none": "Keine",
"track": "Spur",
"cancel": "Abbrechen",
"delete": "Löschen",
"track": "Track",
"cancel": "Cancel",
"delete": "Delete",
"ok": "OK",
"remove": "Entfernen",
"next": "Weiter",
"back": "Zurück",
"continue": "Fortsetzen",
"verifying": "Verifiziere..."
"remove": "Remove",
"next": "Next",
"back": "Back",
"continue": "Continue",
"verifying": "Verifying..."
},
"search": {
"search": "Suchen...",
"search": "Suche...",
"x_items": "{{count}} Elemente",
"library": "Bibliothek",
"discover": "Entdecken",
@@ -521,33 +521,33 @@
"episodes": "Episoden",
"collections": "Sammlungen",
"actors": "Schauspieler",
"artists": "Künstler",
"albums": "Alben",
"songs": "Titel",
"artists": "Artists",
"albums": "Albums",
"songs": "Songs",
"playlists": "Playlists",
"request_movies": "Film anfragen",
"request_series": "Serie anfragen",
"recently_added": "Kürzlich hinzugefügt",
"recent_requests": "Kürzlich angefragt",
"plex_watchlist": "Plex Merkliste",
"trending": "Beliebt",
"plex_watchlist": "Plex Watchlist",
"trending": "In den Trends",
"popular_movies": "Beliebte Filme",
"movie_genres": "Film-Genres",
"upcoming_movies": "Kommende Filme",
"studios": "Studios",
"popular_tv": "Beliebte Serien",
"tv_genres": "Serien-Genres",
"upcoming_tv": "Kommende Serien",
"networks": "Sender",
"popular_tv": "Beliebte TV-Serien",
"tv_genres": "TV-Serien-Genres",
"upcoming_tv": "Kommende TV-Serien",
"networks": "Netzwerke",
"tmdb_movie_keyword": "TMDB Film-Schlüsselwort",
"tmdb_movie_genre": "TMDB Film-Genre",
"tmdb_tv_keyword": "TMDB Serien-Schlüsselwort",
"tmdb_tv_genre": "TMDB Serien-Genre",
"tmdb_tv_keyword": "TMDB TV-Serien-Schlüsselwort",
"tmdb_tv_genre": "TMDB TV-Serien-Genre",
"tmdb_search": "TMDB Suche",
"tmdb_studio": "TMDB Studio",
"tmdb_network": "TMDB Netzwerk",
"tmdb_movie_streaming_services": "TMDB Film-Streaming-Dienste",
"tmdb_tv_streaming_services": "TMDB Serien-Streaming-Dienste"
"tmdb_tv_streaming_services": "TMDB TV-Serien-Streaming-Dienste"
},
"library": {
"no_results": "Keine Ergebnisse",
@@ -572,7 +572,7 @@
"genres": "Genres",
"years": "Jahre",
"sort_by": "Sortieren nach",
"filter_by": "Filtern nach",
"filter_by": "Filter By",
"sort_order": "Sortierreihenfolge",
"tags": "Tags"
}
@@ -585,7 +585,7 @@
"boxsets": "Boxsets",
"playlists": "Wiedergabelisten",
"noDataTitle": "Noch keine Favoriten",
"noData": "Elemente als Favoriten markieren, um sie hier anzuzeigen."
"noData": "Markiere Elemente als Favoriten, damit sie hier für einen schnellen Zugriff angezeigt werden."
},
"custom_links": {
"no_links": "Keine Links"
@@ -593,7 +593,7 @@
"player": {
"error": "Fehler",
"failed_to_get_stream_url": "Fehler beim Abrufen der Stream-URL",
"an_error_occured_while_playing_the_video": "Ein Fehler ist beim Abspielen des Videos aufgetreten. Logs in den Einstellungen überprüfen.",
"an_error_occured_while_playing_the_video": "Ein Fehler ist beim Abspielen des Videos aufgetreten. Überprüf die Logs in den Einstellungen.",
"client_error": "Client-Fehler",
"could_not_create_stream_for_chromecast": "Konnte keinen Stream für Chromecast erstellen",
"message_from_server": "Nachricht vom Server: {{message}}",
@@ -602,17 +602,17 @@
"audio_tracks": "Audiospuren:",
"playback_state": "Wiedergabestatus:",
"index": "Index:",
"continue_watching": "Fortsetzen",
"continue_watching": "Weiterschauen",
"go_back": "Zurück",
"downloaded_file_title": "Diese Datei wurde bereits heruntergeladen",
"downloaded_file_message": "Heruntergeladene Datei abspielen?",
"downloaded_file_title": "Diese Datei wurde heruntergeladen",
"downloaded_file_message": "Möchten Sie die heruntergeladene Datei abspielen?",
"downloaded_file_yes": "Ja",
"downloaded_file_no": "Nein",
"downloaded_file_cancel": "Abbrechen"
},
"item_card": {
"next_up": "Als Nächstes",
"no_items_to_display": "Keine Elemente",
"no_items_to_display": "Keine Elemente zum Anzeigen",
"cast_and_crew": "Besetzung und Crew",
"series": "Serien",
"seasons": "Staffeln",
@@ -630,7 +630,7 @@
"subtitles": "Untertitel",
"show_more": "Mehr anzeigen",
"show_less": "Weniger anzeigen",
"appeared_in": "Erschien in",
"appeared_in": "Erschienen in",
"could_not_load_item": "Konnte Element nicht laden",
"none": "Keine",
"download": {
@@ -639,13 +639,13 @@
"download_episode": "Episode herunterladen",
"download_movie": "Film herunterladen",
"download_x_item": "{{item_count}} Elemente herunterladen",
"download_unwatched_only": "Nur Ungesehene",
"download_unwatched_only": "Nur unbeobachtete",
"download_button": "Herunterladen"
}
},
"live_tv": {
"next": "Nächste",
"previous": "Vorherige",
"next": "Nächster",
"previous": "Vorheriger",
"coming_soon": "Demnächst",
"on_now": "Jetzt",
"shows": "Serien",
@@ -658,10 +658,10 @@
"confirm": "Bestätigen",
"cancel": "Abbrechen",
"yes": "Ja",
"whats_wrong": "Was stimmt nicht?",
"issue_type": "Art des Problems",
"select_an_issue": "Wähle die Art des Problems aus",
"types": "Problem-Arten",
"whats_wrong": "Hast du Probleme?",
"issue_type": "Fehlerart",
"select_an_issue": "Wähle einen Fehlerart aus",
"types": "Arten",
"describe_the_issue": "(optional) Beschreibe das Problem",
"submit_button": "Absenden",
"report_issue_button": "Fehler melden",
@@ -671,7 +671,7 @@
"cast": "Besetzung",
"details": "Details",
"status": "Status",
"original_title": "Originaltitel",
"original_title": "Original Titel",
"series_type": "Serien Typ",
"release_dates": "Veröffentlichungsdaten",
"first_air_date": "Erstausstrahlungsdatum",
@@ -687,10 +687,10 @@
"request_as": "Anfragen als",
"tags": "Tags",
"quality_profile": "Qualitätsprofil",
"root_folder": "Stammverzeichnis",
"season_all": "Staffeln (alle)",
"root_folder": "Root-Ordner",
"season_all": "Season (all)",
"season_number": "Staffel {{season_number}}",
"number_episodes": "{{episode_number}} Episoden",
"number_episodes": "{{episode_number}} Folgen",
"born": "Geboren",
"appearances": "Auftritte",
"approve": "Genehmigen",
@@ -698,9 +698,9 @@
"requested_by": "Angefragt von {{user}}",
"unknown_user": "Unbekannter Nutzer",
"toasts": {
"jellyseer_does_not_meet_requirements": "Seerr-Server erfüllt nicht die minimalen Versionsanforderungen. Bitte den Seerr-Server auf mindestens 2.0.0 aktualisieren.",
"jellyseerr_test_failed": "Seerr-Test fehlgeschlagen. Bitte erneut versuchen.",
"failed_to_test_jellyseerr_server_url": "Fehler beim Test der Seerr-Server-URL",
"jellyseer_does_not_meet_requirements": "Jellyseerr Server erfüllt nicht die Anforderungsversion. Bitte aktualisiere deinen Jellyseerr Server auf mindestens 2.0.0",
"jellyseerr_test_failed": "Jellyseerr-Test fehlgeschlagen. Bitte versuche es erneut.",
"failed_to_test_jellyseerr_server_url": "Fehler beim Testen der Jellyseerr-Server-URL",
"issue_submitted": "Problem eingereicht!",
"requested_item": "{{item}} angefragt!",
"you_dont_have_permission_to_request": "Du hast keine Berechtigung Anfragen zu stellen",
@@ -715,131 +715,131 @@
"home": "Startseite",
"search": "Suche",
"library": "Bibliothek",
"custom_links": "Links",
"custom_links": "Benutzerdefinierte Links",
"favorites": "Favoriten"
},
"music": {
"title": "Musik",
"title": "Music",
"tabs": {
"suggestions": "Vorschläge",
"albums": "Alben",
"artists": "Künstler",
"suggestions": "Suggestions",
"albums": "Albums",
"artists": "Artists",
"playlists": "Playlists",
"tracks": "Titel"
"tracks": "tracks"
},
"filters": {
"all": "Alle"
"all": "All"
},
"recently_added": "Kürzlich hinzugefügt",
"recently_played": "Vor kurzem gehört",
"frequently_played": "Oft gehört",
"explore": "Entdecken",
"top_tracks": "Top-Titel",
"play": "Abspielen",
"recently_added": "Recently Added",
"recently_played": "Recently Played",
"frequently_played": "Frequently Played",
"explore": "Explore",
"top_tracks": "Top Tracks",
"play": "Play",
"shuffle": "Shuffle",
"play_top_tracks": "Top-Tracks abspielen",
"no_suggestions": "Keine Vorschläge verfügbar",
"no_albums": "Keine Alben gefunden",
"no_artists": "Keine Künstler gefunden",
"no_playlists": "Keine Playlists gefunden",
"album_not_found": "Album nicht gefunden",
"artist_not_found": "Künstler nicht gefunden",
"playlist_not_found": "Playlist nicht gefunden",
"play_top_tracks": "Play Top Tracks",
"no_suggestions": "No suggestions available",
"no_albums": "No albums found",
"no_artists": "No artists found",
"no_playlists": "No playlists found",
"album_not_found": "Album not found",
"artist_not_found": "Artist not found",
"playlist_not_found": "Playlist not found",
"track_options": {
"play_next": "Als Nächstes wiedergeben",
"add_to_queue": "Zur Warteschlange hinzufügen",
"add_to_playlist": "Zur Playlist hinzufügen",
"download": "Herunterladen",
"downloaded": "Heruntergeladen",
"downloading": "Wird heruntergeladen...",
"cached": "Gecached",
"delete_download": "Download löschen",
"delete_cache": "Aus dem Cache löschen",
"go_to_artist": "Zum Künstler gehen",
"go_to_album": "Zum Album gehen",
"add_to_favorites": "Zu Favoriten hinzufügen",
"remove_from_favorites": "Aus Favoriten entfernen",
"remove_from_playlist": "Aus Playlist entfernen"
"play_next": "Play Next",
"add_to_queue": "Add to Queue",
"add_to_playlist": "Add to Playlist",
"download": "Download",
"downloaded": "Downloaded",
"downloading": "Downloading...",
"cached": "Cached",
"delete_download": "Delete Download",
"delete_cache": "Remove from Cache",
"go_to_artist": "Go to Artist",
"go_to_album": "Go to Album",
"add_to_favorites": "Add to Favorites",
"remove_from_favorites": "Remove from Favorites",
"remove_from_playlist": "Remove from Playlist"
},
"playlists": {
"create_playlist": "Playlist erstellen",
"create_playlist": "Create Playlist",
"playlist_name": "Playlist Name",
"enter_name": "Playlist Name eingeben",
"create": "Erstellen",
"search_playlists": "Playlisten durchsuchen...",
"added_to": "Zu {{name}} hinzugefügt",
"added": "Zur Playlist hinzugefügt",
"removed_from": "Aus {{name}} entfernt",
"removed": "Aus Playlist entfernt",
"created": "Playlist erstellt",
"create_new": "Neue Playlist erstellen",
"failed_to_add": "Fehler beim Hinzufügen zur Playlist",
"failed_to_remove": "Fehler beim Entfernen aus der Playlist",
"failed_to_create": "Fehler beim Erstellen der Playlist",
"delete_playlist": "Playlist löschen",
"delete_confirm": "Bist Du sicher, dass Du \"{{name}}\" löschen möchtest? Das kann nicht rückgängig gemacht werden.",
"deleted": "Playlist gelöscht",
"failed_to_delete": "Fehler beim Löschen der Playlist"
"enter_name": "Enter playlist name",
"create": "Create",
"search_playlists": "Search playlists...",
"added_to": "Added to {{name}}",
"added": "Added to playlist",
"removed_from": "Removed from {{name}}",
"removed": "Removed from playlist",
"created": "Playlist created",
"create_new": "Create New Playlist",
"failed_to_add": "Failed to add to playlist",
"failed_to_remove": "Failed to remove from playlist",
"failed_to_create": "Failed to create playlist",
"delete_playlist": "Delete Playlist",
"delete_confirm": "Are you sure you want to delete \"{{name}}\"? This action cannot be undone.",
"deleted": "Playlist deleted",
"failed_to_delete": "Failed to delete playlist"
},
"sort": {
"title": "Sortieren nach",
"alphabetical": "Alphabetisch",
"date_created": "Erstellungsdatum"
"title": "Sort By",
"alphabetical": "Alphabetical",
"date_created": "Date Created"
}
},
"watchlists": {
"title": "Merklisten",
"my_watchlists": "Meine Merklisten",
"public_watchlists": "Öffentliche Merklisten",
"create_title": "Merkliste erstellen",
"edit_title": "Merkliste bearbeiten",
"create_button": "Merkliste erstellen",
"save_button": "Änderungen speichern",
"delete_button": "Löschen",
"remove_button": "Entfernen",
"cancel_button": "Abbrechen",
"title": "Watchlists",
"my_watchlists": "My Watchlists",
"public_watchlists": "Public Watchlists",
"create_title": "Create Watchlist",
"edit_title": "Edit Watchlist",
"create_button": "Create Watchlist",
"save_button": "Save Changes",
"delete_button": "Delete",
"remove_button": "Remove",
"cancel_button": "Cancel",
"name_label": "Name",
"name_placeholder": "Merklistenname eingeben",
"description_label": "Beschreibung",
"description_placeholder": "Beschreibung eingeben (optional)",
"is_public_label": "Öffentliche Merkliste",
"is_public_description": "Anderen erlauben diese Merkliste anzusehen",
"allowed_type_label": "Inhaltstyp",
"sort_order_label": "Standard-Sortierreihenfolge",
"empty_title": "Keine Merklisten",
"empty_description": "Erstelle deine erste Merkliste um deine Medien zu organisieren",
"empty_watchlist": "Diese Merkliste ist leer",
"empty_watchlist_hint": "Füge Elemente aus deiner Bibliothek zu dieser Merkliste hinzu",
"not_configured_title": "Streamystats nicht konfiguriert",
"not_configured_description": "Streamystats in den Einstellungen konfigurieren, um Merklisten zu verwenden",
"go_to_settings": "Gehe zu Einstellungen",
"add_to_watchlist": "Zur Merkliste hinzufügen",
"remove_from_watchlist": "Von Merkliste entfernen",
"select_watchlist": "Merkliste auswählen",
"create_new": "Neue Merkliste erstellen",
"item": "Element",
"items": "Elemente",
"public": "Öffentlich",
"private": "Privat",
"you": "Du",
"by_owner": "Von einem anderen Benutzer",
"not_found": "Merkliste nicht gefunden",
"delete_confirm_title": "Merkliste löschen",
"delete_confirm_message": "Bist Du sicher, dass Du \"{{name}}\" löschen möchtest? Das kann nicht rückgängig gemacht werden.",
"remove_item_title": "Von Merkliste entfernen",
"remove_item_message": "\"{{name}}\" von dieser Merkliste entfernen?",
"loading": "Lade Merklisten...",
"no_compatible_watchlists": "Keine kompatiblen Merklisten",
"create_one_first": "Erstelle eine Merkliste, welche diesen Inhaltstyp akzeptiert"
"name_placeholder": "Enter watchlist name",
"description_label": "Description",
"description_placeholder": "Enter description (optional)",
"is_public_label": "Public Watchlist",
"is_public_description": "Allow others to view this watchlist",
"allowed_type_label": "Content Type",
"sort_order_label": "Default Sort Order",
"empty_title": "No Watchlists",
"empty_description": "Create your first watchlist to start organizing your media",
"empty_watchlist": "This watchlist is empty",
"empty_watchlist_hint": "Add items from your library to this watchlist",
"not_configured_title": "Streamystats Not Configured",
"not_configured_description": "Configure Streamystats in settings to use watchlists",
"go_to_settings": "Go to Settings",
"add_to_watchlist": "Add to Watchlist",
"remove_from_watchlist": "Remove from Watchlist",
"select_watchlist": "Select Watchlist",
"create_new": "Create New Watchlist",
"item": "item",
"items": "items",
"public": "Public",
"private": "Private",
"you": "You",
"by_owner": "By another user",
"not_found": "Watchlist not found",
"delete_confirm_title": "Delete Watchlist",
"delete_confirm_message": "Are you sure you want to delete \"{{name}}\"? This action cannot be undone.",
"remove_item_title": "Remove from Watchlist",
"remove_item_message": "Remove \"{{name}}\" from this watchlist?",
"loading": "Loading watchlists...",
"no_compatible_watchlists": "No compatible watchlists",
"create_one_first": "Create a watchlist that accepts this content type"
},
"playback_speed": {
"title": "Wiedergabegeschwindigkeit",
"apply_to": "Anwenden auf",
"speed": "Geschwindigkeit",
"title": "Playback Speed",
"apply_to": "Apply To",
"speed": "Speed",
"scope": {
"media": "Nur hier",
"show": "Nur diese Serie",
"all": "Alle (Standard)"
"media": "This media only",
"show": "This show",
"all": "All media (default)"
}
}
}

View File

@@ -39,39 +39,39 @@
"please_login_again": "Su sesión guardada ha caducado. Por favor, inicie sesión de nuevo.",
"remove_saved_login": "Eliminar inicio de sesión guardado",
"remove_saved_login_description": "Esto eliminará tus credenciales guardadas para este servidor. Tendrás que volver a introducir tu nombre de usuario y contraseña la próxima vez.",
"accounts_count": "{{count}} cuentas",
"select_account": "Seleccione una cuenta",
"add_account": "Añadir cuenta",
"remove_account_description": "Esto eliminará las credenciales guardadas para {{username}}."
"accounts_count": "{{count}} accounts",
"select_account": "Select Account",
"add_account": "Add Account",
"remove_account_description": "This will remove the saved credentials for {{username}}."
},
"save_account": {
"title": "Guardar Cuenta",
"save_for_later": "Guardar esta cuenta",
"security_option": "Opciones de seguridad",
"no_protection": "Sin Protección",
"no_protection_desc": "Inicio de sesión rápido sin autenticación",
"pin_code": "Código PIN",
"pin_code_desc": "PIN de 4 dígitos requerido al cambiar",
"password": "Vuelva a introducir la contraseña",
"password_desc": "Contraseña requerida al cambiar",
"save_button": "Guardar",
"cancel_button": "Cancelar"
"title": "Save Account",
"save_for_later": "Save this account",
"security_option": "Security Option",
"no_protection": "No protection",
"no_protection_desc": "Quick login without authentication",
"pin_code": "PIN code",
"pin_code_desc": "4-digit PIN required when switching",
"password": "Re-enter password",
"password_desc": "Password required when switching",
"save_button": "Save",
"cancel_button": "Cancel"
},
"pin": {
"enter_pin": "Introduce el PIN",
"enter_pin_for": "Introduzca el PIN para {{username}}",
"enter_4_digits": "Introduce 4 dígitos",
"invalid_pin": "PIN inválido",
"setup_pin": "Configurar PIN",
"confirm_pin": "Confirmar PIN",
"pins_dont_match": "Los códigos PIN no coinciden",
"forgot_pin": "¿Olvidó el PIN?",
"forgot_pin_desc": "Sus credenciales guardadas serán eliminadas"
"enter_pin": "Enter PIN",
"enter_pin_for": "Enter PIN for {{username}}",
"enter_4_digits": "Enter 4 digits",
"invalid_pin": "Invalid PIN",
"setup_pin": "Set Up PIN",
"confirm_pin": "Confirm PIN",
"pins_dont_match": "PINs don't match",
"forgot_pin": "Forgot PIN?",
"forgot_pin_desc": "Your saved credentials will be removed"
},
"password": {
"enter_password": "Introduzca la contraseña",
"enter_password_for": "Introduzca la contraseña para {{username}}",
"invalid_password": "Contraseña inválida"
"enter_password": "Enter Password",
"enter_password_for": "Enter password for {{username}}",
"invalid_password": "Invalid password"
},
"home": {
"checking_server_connection": "Comprobando conexión con el servidor...",
@@ -124,32 +124,32 @@
"hide_remote_session_button": "Ocultar botón de sesión remota"
},
"network": {
"title": "Cadena",
"local_network": "Red local",
"auto_switch_enabled": "Cambiar automáticamente en casa",
"auto_switch_description": "Cambiar automáticamente a la URL local cuando se conecta a la WiFi de casa",
"local_url": "URL local",
"local_url_hint": "Introduzca la dirección de su servidor local (por ejemplo, http://192.168.1.100:8096)",
"title": "Network",
"local_network": "Local Network",
"auto_switch_enabled": "Auto-switch when at home",
"auto_switch_description": "Automatically switch to local URL when connected to home WiFi",
"local_url": "Local URL",
"local_url_hint": "Enter your local server address (e.g., http://192.168.1.100:8096)",
"local_url_placeholder": "http://192.168.1.100:8096",
"home_wifi_networks": "Redes WiFi domésticas",
"add_current_network": "Añadir \"{{ssid}}\"",
"not_connected_to_wifi": "No está conectado a WiFi",
"no_networks_configured": "No hay redes configuradas",
"add_network_hint": "Añade tu red WiFi doméstica para activar el cambio automático",
"current_wifi": "WiFi actual",
"using_url": "Utilizando",
"local": "URL local",
"remote": "URL Remota",
"not_connected": "Sin conexión",
"current_server": "Servidor actual",
"remote_url": "URL Remota",
"active_url": "URL Activa",
"not_configured": "Sin configurar",
"network_added": "Red añadida",
"network_already_added": "Red ya añadida",
"no_wifi_connected": "Sin conexión a WiFi",
"permission_denied": "Permiso de ubicación denegado",
"permission_denied_explanation": "Se necesita el permiso de ubicación para detectar la red WiFi para cambiar automáticamente. Por favor, actívala en Configuración."
"home_wifi_networks": "Home WiFi Networks",
"add_current_network": "Add \"{{ssid}}\"",
"not_connected_to_wifi": "Not connected to WiFi",
"no_networks_configured": "No networks configured",
"add_network_hint": "Add your home WiFi network to enable auto-switching",
"current_wifi": "Current WiFi",
"using_url": "Using",
"local": "Local URL",
"remote": "Remote URL",
"not_connected": "Not connected",
"current_server": "Current Server",
"remote_url": "Remote URL",
"active_url": "Active URL",
"not_configured": "Not configured",
"network_added": "Network added",
"network_already_added": "Network already added",
"no_wifi_connected": "Not connected to WiFi",
"permission_denied": "Location permission denied",
"permission_denied_explanation": "Location permission is required to detect WiFi network for auto-switching. Please enable it in Settings."
},
"user_info": {
"user_info_title": "Información de usuario",
@@ -195,12 +195,12 @@
"none": "Ninguno",
"language": "Idioma",
"transcode_mode": {
"title": "Transcodificación de audio",
"description": "Controla cómo el audio envolvente (7.1, TrueHD, DTS-HD) es manejado",
"title": "Audio Transcoding",
"description": "Controls how surround audio (7.1, TrueHD, DTS-HD) is handled",
"auto": "Auto",
"stereo": "Forzar salida estéreo",
"5_1": "Permitir 5.1",
"passthrough": "Directo"
"stereo": "Force Stereo",
"5_1": "Allow 5.1",
"passthrough": "Passthrough"
}
},
"subtitles": {
@@ -259,16 +259,16 @@
"hardware_decode_description": "Utilizar la aceleración de hardware para la decodificación de vídeo. Deshabilite si experimenta problemas de reproducción."
},
"vlc_subtitles": {
"title": "Configuración de subtítulos VLC",
"hint": "Personalizar la apariencia de los subtítulos para el reproductor VLC. Los cambios tendrán efecto en la próxima reproducción.",
"text_color": "Color del texto",
"background_color": "Color del fondo",
"background_opacity": "Opacidad del fondo",
"outline_color": "Color del contorno",
"outline_opacity": "Opacidad del contorno",
"outline_thickness": "Grosor del contorno",
"bold": "Texto en negrita",
"margin": "Margen inferior"
"title": "VLC Subtitle Settings",
"hint": "Customize subtitle appearance for VLC player. Changes take effect on next playback.",
"text_color": "Text Color",
"background_color": "Background Color",
"background_opacity": "Background Opacity",
"outline_color": "Outline Color",
"outline_opacity": "Outline Opacity",
"outline_thickness": "Outline Thickness",
"bold": "Bold Text",
"margin": "Bottom Margin"
},
"video_player": {
"title": "Reproductor de vídeo",
@@ -300,13 +300,13 @@
"VLC_4": "VLC 4 (Experimental + PiP)"
},
"show_custom_menu_links": "Mostrar enlaces de menú personalizados",
"show_large_home_carousel": "Mostrar carrusel del menú principal grande (beta)",
"show_large_home_carousel": "Show Large Home Carousel (beta)",
"hide_libraries": "Ocultar bibliotecas",
"select_liraries_you_want_to_hide": "Selecciona las bibliotecas que quieres ocultar de la pestaña Bibliotecas y de Inicio.",
"disable_haptic_feedback": "Desactivar feedback háptico",
"default_quality": "Calidad por defecto",
"default_playback_speed": "Velocidad de reproducción predeterminada",
"auto_play_next_episode": "Reproducir automáticamente el siguiente episodio",
"auto_play_next_episode": "Auto-play Next Episode",
"max_auto_play_episode_count": "Máximo número de episodios de Auto Play",
"disabled": "Deshabilitado"
},
@@ -317,10 +317,10 @@
"title": "Música",
"playback_title": "Reproducir",
"playback_description": "Configurar cómo se reproduce la música.",
"prefer_downloaded": "Preferir las canciones descargadas",
"prefer_downloaded": "Prefer Downloaded Songs",
"caching_title": "Almacenando en caché",
"caching_description": "Cachear automáticamente las próximas canciones para una reproducción más suave.",
"lookahead_enabled": "Activar el look-Ahead Cache",
"caching_description": "Automatically cache upcoming tracks for smoother playback.",
"lookahead_enabled": "Enable Look-Ahead Caching",
"lookahead_count": "",
"max_cache_size": "Tamaño máximo del caché"
},
@@ -399,7 +399,7 @@
"size_used": "{{used}} de {{total}} usado",
"delete_all_downloaded_files": "Eliminar todos los archivos descargados",
"music_cache_title": "Caché de música",
"music_cache_description": "Cachear automáticamente las canciones mientras escuchas una reproducción más suave y soporte sin conexión",
"music_cache_description": "Automatically cache songs as you listen for smoother playback and offline support",
"enable_music_cache": "Activar Caché de Música",
"clear_music_cache": "Borrar Caché de Música",
"music_cache_size": "Caché {{Tamaño}}",
@@ -504,10 +504,10 @@
"delete": "Borrar",
"ok": "Aceptar",
"remove": "Eliminar",
"next": "Siguiente",
"back": "Atrás",
"continue": "Continuar",
"verifying": "Verificando..."
"next": "Next",
"back": "Back",
"continue": "Continue",
"verifying": "Verifying..."
},
"search": {
"search": "Buscar...",
@@ -753,8 +753,8 @@
"downloaded": "Descargado",
"downloading": "Descargando...",
"cached": "En caché",
"delete_download": "Eliminar descarga",
"delete_cache": "Borrar del caché",
"delete_download": "Delete Download",
"delete_cache": "Remove from Cache",
"go_to_artist": "Ir al artista",
"go_to_album": "Ir al álbum",
"add_to_favorites": "Añadir a Favoritos",

View File

@@ -305,8 +305,8 @@
"select_liraries_you_want_to_hide": "Sélectionnez les bibliothèques que vous souhaitez masquer dans l'onglet Bibliothèque et les sections de la page d'accueil.",
"disable_haptic_feedback": "Désactiver le retour haptique",
"default_quality": "Qualité par défaut",
"default_playback_speed": "Vitesse de lecture par défaut",
"auto_play_next_episode": "Lecture automatique de l'épisode suivant",
"default_playback_speed": "Default Playback Speed",
"auto_play_next_episode": "Auto-play Next Episode",
"max_auto_play_episode_count": "Nombre d'épisodes en lecture automatique max",
"disabled": "Désactivé"
},
@@ -314,15 +314,15 @@
"downloads_title": "Téléchargements"
},
"music": {
"title": "Musique",
"playback_title": "Lecture",
"playback_description": "Configurer le mode de lecture de la musique.",
"prefer_downloaded": "Supprimer toutes les musiques téléchargées",
"caching_title": "Mise en cache",
"caching_description": "Mettre automatiquement en cache les pistes à venir pour une lecture plus fluide.",
"lookahead_enabled": "Activer la mise en cache guidée",
"lookahead_count": "Pistes à pré-mettre en cache",
"max_cache_size": "Taille max de cache"
"title": "Music",
"playback_title": "Playback",
"playback_description": "Configure how music is played.",
"prefer_downloaded": "Prefer Downloaded Songs",
"caching_title": "Caching",
"caching_description": "Automatically cache upcoming tracks for smoother playback.",
"lookahead_enabled": "Enable Look-Ahead Caching",
"lookahead_count": "Tracks to Pre-cache",
"max_cache_size": "Max Cache Size"
},
"plugins": {
"plugins_title": "Plugins",
@@ -357,19 +357,19 @@
"save_button": "Enregistrer",
"toasts": {
"saved": "Enregistré",
"refreshed": "Paramètres actualisés depuis le serveur"
"refreshed": "Settings refreshed from server"
},
"refresh_from_server": "Rafraîchir les paramètres depuis le serveur"
"refresh_from_server": "Refresh Settings from Server"
},
"streamystats": {
"enable_streamystats": "Activer Streamystats",
"disable_streamystats": "Désactiver Streamystats",
"enable_search": "Utiliser pour la recherche",
"enable_streamystats": "Enable Streamystats",
"disable_streamystats": "Disable Streamystats",
"enable_search": "Use for Search",
"url": "URL",
"server_url_placeholder": "http(s)://streamystats.example.com",
"streamystats_search_hint": "Entrez l'URL de votre serveur Streamystats. L'URL doit inclure http ou https et éventuellement le port.",
"read_more_about_streamystats": "En savoir plus sur Streamystats.",
"save_button": "Enregistrer",
"streamystats_search_hint": "Enter the URL for your Streamystats server. The URL should include http or https and optionally the port.",
"read_more_about_streamystats": "Read More About Streamystats.",
"save_button": "Save",
"save": "Enregistrer",
"features_title": "Fonctionnalités",
"home_sections_title": "Sections de la page d´accueil",
@@ -572,7 +572,7 @@
"genres": "Genres",
"years": "Années",
"sort_by": "Trier par",
"filter_by": "Filtrer par",
"filter_by": "Filter By",
"sort_order": "Ordre de tri",
"tags": "Tags"
}
@@ -719,25 +719,25 @@
"favorites": "Favoris"
},
"music": {
"title": "Musique",
"title": "Music",
"tabs": {
"suggestions": "Suggestions",
"albums": "Albums",
"artists": "Artistes",
"artists": "Artists",
"playlists": "Playlists",
"tracks": "morceaux"
"tracks": "tracks"
},
"filters": {
"all": "Toutes"
"all": "All"
},
"recently_added": "Ajoutés récemment",
"recently_played": "Récemment joué",
"frequently_played": "Fréquemment joué",
"explore": "Explorez",
"top_tracks": "Top chansons",
"play": "Lecture",
"shuffle": "Aléatoire",
"play_top_tracks": "Jouer les pistes les plus populaires",
"recently_added": "Recently Added",
"recently_played": "Recently Played",
"frequently_played": "Frequently Played",
"explore": "Explore",
"top_tracks": "Top Tracks",
"play": "Play",
"shuffle": "Shuffle",
"play_top_tracks": "Play Top Tracks",
"no_suggestions": "No suggestions available",
"no_albums": "No albums found",
"no_artists": "No artists found",

View File

@@ -34,9 +34,9 @@
"search_for_local_servers": "Ricerca dei server locali",
"searching": "Cercando...",
"servers": "Server",
"saved": "Salvato",
"saved": "Saved",
"session_expired": "Session Expired",
"please_login_again": "La tua sessione è scaduta. Si prega di eseguire nuovamente l'accesso.",
"please_login_again": "Your saved session has expired. Please log in again.",
"remove_saved_login": "Remove Saved Login",
"remove_saved_login_description": "This will remove your saved credentials for this server. You'll need to enter your username and password again next time.",
"accounts_count": "{{count}} accounts",
@@ -125,7 +125,7 @@
},
"network": {
"title": "Network",
"local_network": "",
"local_network": "Local Network",
"auto_switch_enabled": "Auto-switch when at home",
"auto_switch_description": "Automatically switch to local URL when connected to home WiFi",
"local_url": "Local URL",
@@ -137,7 +137,7 @@
"no_networks_configured": "No networks configured",
"add_network_hint": "Add your home WiFi network to enable auto-switching",
"current_wifi": "Current WiFi",
"using_url": "Sta utilizzando",
"using_url": "Using",
"local": "Local URL",
"remote": "Remote URL",
"not_connected": "Not connected",

View File

@@ -30,7 +30,7 @@
"connect_button": "Verbinden",
"previous_servers": "vorige servers",
"clear_button": "Wissen",
"swipe_to_remove": "Swipe om te verwijderen.",
"swipe_to_remove": "Swipe to remove",
"search_for_local_servers": "Zoek naar lokale servers",
"searching": "Zoeken...",
"servers": "Servers",
@@ -40,38 +40,38 @@
"remove_saved_login": "Opgeslagen login verwijderen",
"remove_saved_login_description": "Hiermee worden uw opgeslagen gegevens voor deze server verwijderd. U moet uw gebruikersnaam en wachtwoord de volgende keer opnieuw invoeren.",
"accounts_count": "{{count}} accounts",
"select_account": "Account selecteren",
"add_account": "Account toevoegen",
"remove_account_description": "Hiermee worden de opgeslagen inloggegevens voor {{username}} verwijderd."
"select_account": "Select Account",
"add_account": "Add Account",
"remove_account_description": "This will remove the saved credentials for {{username}}."
},
"save_account": {
"title": "Account opslaan",
"save_for_later": "Dit account opslaan",
"security_option": "Beveiligingsopties",
"no_protection": "Geen beveiliging",
"no_protection_desc": "Snelle login zonder authenticatie",
"pin_code": "Pincode",
"title": "Save Account",
"save_for_later": "Save this account",
"security_option": "Security Option",
"no_protection": "No protection",
"no_protection_desc": "Quick login without authentication",
"pin_code": "PIN code",
"pin_code_desc": "4-digit PIN required when switching",
"password": "Wachtwoord opnieuw invoeren",
"password": "Re-enter password",
"password_desc": "Password required when switching",
"save_button": "Opslaan",
"cancel_button": "Annuleren"
"save_button": "Save",
"cancel_button": "Cancel"
},
"pin": {
"enter_pin": "Pincode invoeren",
"enter_pin_for": "Pincode voor {{username}} invoeren",
"enter_4_digits": "Voer 6 cijfers in",
"invalid_pin": "Ongeldige pincode",
"setup_pin": "Pincode instellen",
"confirm_pin": "Pincode bevestigen",
"pins_dont_match": "Pincodes komen niet overeen",
"forgot_pin": "Pincode vergeten?",
"forgot_pin_desc": "Je opgeslagen inloggegevens worden verwijderd"
"enter_pin": "Enter PIN",
"enter_pin_for": "Enter PIN for {{username}}",
"enter_4_digits": "Enter 4 digits",
"invalid_pin": "Invalid PIN",
"setup_pin": "Set Up PIN",
"confirm_pin": "Confirm PIN",
"pins_dont_match": "PINs don't match",
"forgot_pin": "Forgot PIN?",
"forgot_pin_desc": "Your saved credentials will be removed"
},
"password": {
"enter_password": "Voer wachtwoord in",
"enter_password_for": "Voer wachtwoord voor {{username}} in",
"invalid_password": "Ongeldig wachtwoord"
"enter_password": "Enter Password",
"enter_password_for": "Enter password for {{username}}",
"invalid_password": "Invalid password"
},
"home": {
"checking_server_connection": "Serververbinding controleren...",
@@ -84,7 +84,7 @@
"server_unreachable": "Server onbereikbaar",
"server_unreachable_message": "Kon de server niet bereiken.\nControleer uw netwerkverbinding.",
"oops": "Oeps!",
"error_message": "Er ging iets fout\nProbeer opnieuw in te loggen.",
"error_message": "Er ging iets fout\nGelieve af en aan te melden.",
"continue_watching": "Verder Kijken",
"next_up": "Volgende",
"continue_and_next_up": "Doorgaan & Volgende",
@@ -124,31 +124,31 @@
"hide_remote_session_button": "Verberg Knop voor Externe Sessie"
},
"network": {
"title": "Netwerk",
"local_network": "Lokaal netwerk",
"title": "Network",
"local_network": "Local Network",
"auto_switch_enabled": "Auto-switch when at home",
"auto_switch_description": "Automatically switch to local URL when connected to home WiFi",
"local_url": "Lokale URL",
"local_url_hint": "Voer uw lokale serveradres in (bijv. http://192.168.1.100:8096)",
"local_url": "Local URL",
"local_url_hint": "Enter your local server address (e.g., http://192.168.1.100:8096)",
"local_url_placeholder": "http://192.168.1.100:8096",
"home_wifi_networks": "Wi-Fi netwerken",
"add_current_network": "Voeg \"{{ssid}} \" toe",
"not_connected_to_wifi": "Niet verbonden met Wi-Fi",
"no_networks_configured": "Geen netwerken geconfigureerd",
"home_wifi_networks": "Home WiFi Networks",
"add_current_network": "Add \"{{ssid}}\"",
"not_connected_to_wifi": "Not connected to WiFi",
"no_networks_configured": "No networks configured",
"add_network_hint": "Add your home WiFi network to enable auto-switching",
"current_wifi": "Huidige Wi-Fi",
"using_url": "Gebruik makend van",
"local": "Lokale URL",
"remote": "Externe URL",
"not_connected": "Niet verbonden",
"current_server": "Huidige Server",
"remote_url": "Externe URL",
"active_url": "Actieve URL",
"not_configured": "Niet geconfigureerd",
"network_added": "Netwerk toegevoegd",
"network_already_added": "Netwerk reeds toegevoegd",
"no_wifi_connected": "Niet verbonden met Wi-Fi",
"permission_denied": "Locatie toestemming geweigerd",
"current_wifi": "Current WiFi",
"using_url": "Using",
"local": "Local URL",
"remote": "Remote URL",
"not_connected": "Not connected",
"current_server": "Current Server",
"remote_url": "Remote URL",
"active_url": "Active URL",
"not_configured": "Not configured",
"network_added": "Network added",
"network_already_added": "Network already added",
"no_wifi_connected": "Not connected to WiFi",
"permission_denied": "Location permission denied",
"permission_denied_explanation": "Location permission is required to detect WiFi network for auto-switching. Please enable it in Settings."
},
"user_info": {
@@ -195,11 +195,11 @@
"none": "Geen",
"language": "Taal",
"transcode_mode": {
"title": "Audio-transcoding",
"title": "Audio Transcoding",
"description": "Controls how surround audio (7.1, TrueHD, DTS-HD) is handled",
"auto": "Automatisch",
"stereo": "Stereo forceren",
"5_1": "5.1 toestaan",
"auto": "Auto",
"stereo": "Force Stereo",
"5_1": "Allow 5.1",
"passthrough": "Passthrough"
}
},
@@ -231,7 +231,7 @@
"Black": "Zwart",
"Gray": "Grijs",
"Silver": "Zilver",
"White": "Wit",
"White": "wit",
"Maroon": "Kastanjebruin",
"Red": "Rood",
"Fuchsia": "Fuchsia",
@@ -259,12 +259,12 @@
"hardware_decode_description": "Gebruik hardware acceleratie voor video-decodering. Uitschakelen als u problemen met afspelen ondervindt."
},
"vlc_subtitles": {
"title": "VLC ondertitel instellingen",
"title": "VLC Subtitle Settings",
"hint": "Customize subtitle appearance for VLC player. Changes take effect on next playback.",
"text_color": "Tekstkleur",
"background_color": "Achtergrondkleur",
"background_opacity": "Doorzichtigheid achtergrond",
"outline_color": "Kleur omlijning",
"text_color": "Text Color",
"background_color": "Background Color",
"background_opacity": "Background Opacity",
"outline_color": "Outline Color",
"outline_opacity": "Outline Opacity",
"outline_thickness": "Outline Thickness",
"bold": "Bold Text",
@@ -306,7 +306,7 @@
"disable_haptic_feedback": "Haptische feedback uitschakelen",
"default_quality": "Standaard kwaliteit",
"default_playback_speed": "Standaard Afspeelsnelheid",
"auto_play_next_episode": "Volgende aflevering automatisch afspelen",
"auto_play_next_episode": "Auto-play Next Episode",
"max_auto_play_episode_count": "Max Automatisch Aflevering Aantal",
"disabled": "Uitgeschakeld"
},
@@ -378,12 +378,12 @@
"enable_promoted_watchlists": "Gepromote Kijklijst",
"hide_watchlists_tab": "Hide Watchlists Tab",
"home_sections_hint": "Show personalized recommendations and promoted watchlists from Streamystats on the home page.",
"recommended_movies": "Aanbevolen films",
"recommended_series": "Aanbevolen serie",
"recommended_movies": "Recommended Movies",
"recommended_series": "Recommended Series",
"toasts": {
"saved": "Opgeslagen",
"saved": "Saved",
"refreshed": "Settings refreshed from server",
"disabled": "Streamystats uitgeschakeld"
"disabled": "Streamystats disabled"
},
"refresh_from_server": "Refresh Settings from Server"
},
@@ -411,15 +411,15 @@
"intro": {
"title": "Intro",
"show_intro": "Toon intro",
"reset_intro": "Reset Intro"
"reset_intro": "intro opnieuw instellen"
},
"logs": {
"logs_title": "Logboek",
"export_logs": "Export logs",
"click_for_more_info": "Klik voor meer info",
"click_for_more_info": "Click for more info",
"level": "Niveau",
"no_logs_available": "Geen logs beschikbaar",
"delete_all_logs": "Alle logs verwijderen"
"delete_all_logs": "Verwijder alle logs"
},
"languages": {
"title": "Talen",
@@ -500,14 +500,14 @@
"play": "Afspelen",
"none": "Geen",
"track": "Spoor",
"cancel": "Annuleren",
"delete": "Verwijderen",
"ok": "O",
"remove": "Verwijderen",
"next": "Volgende",
"back": "Terug",
"continue": "Doorgaan",
"verifying": "Verifiëren..."
"cancel": "Cancel",
"delete": "Delete",
"ok": "OK",
"remove": "Remove",
"next": "Next",
"back": "Back",
"continue": "Continue",
"verifying": "Verifying..."
},
"search": {
"search": "Zoek...",
@@ -521,10 +521,10 @@
"episodes": "Afleveringen",
"collections": "Collecties",
"actors": "Acteurs",
"artists": "Artiesten",
"artists": "Artists",
"albums": "Albums",
"songs": "Nummers",
"playlists": "Afspeellijsten",
"songs": "Songs",
"playlists": "Playlists",
"request_movies": "Vraag films aan",
"request_series": "Vraag series aan",
"recently_added": "Recent Toegevoegd",
@@ -572,7 +572,7 @@
"genres": "Genres",
"years": "Jaren",
"sort_by": "Sorteren op",
"filter_by": "Filteren op",
"filter_by": "Filter By",
"sort_order": "Sorteer volgorde",
"tags": "Labels"
}
@@ -719,84 +719,84 @@
"favorites": "Favorieten"
},
"music": {
"title": "Muziek",
"title": "Music",
"tabs": {
"suggestions": "Suggesties",
"suggestions": "Suggestions",
"albums": "Albums",
"artists": "Artiesten",
"playlists": "Afspeellijsten",
"tracks": "Nummers"
"artists": "Artists",
"playlists": "Playlists",
"tracks": "tracks"
},
"filters": {
"all": "Alle"
"all": "All"
},
"recently_added": "Recent toegevoegd",
"recently_played": "Onlangs afgespeeld",
"frequently_played": "Vaak afgespeeld",
"explore": "Ontdek",
"recently_added": "Recently Added",
"recently_played": "Recently Played",
"frequently_played": "Frequently Played",
"explore": "Explore",
"top_tracks": "Top Tracks",
"play": "Afspelen",
"play": "Play",
"shuffle": "Shuffle",
"play_top_tracks": "Play Top Tracks",
"no_suggestions": "Geen suggesties beschikbaar",
"no_albums": "Geen albums gevonden",
"no_artists": "Geen artiesten gevonden",
"no_playlists": "Geen afspeellijsten gevonden",
"album_not_found": "Album niet gevonden",
"artist_not_found": "Artiest niet gevonden",
"playlist_not_found": "Afspeellijst niet gevonden",
"no_suggestions": "No suggestions available",
"no_albums": "No albums found",
"no_artists": "No artists found",
"no_playlists": "No playlists found",
"album_not_found": "Album not found",
"artist_not_found": "Artist not found",
"playlist_not_found": "Playlist not found",
"track_options": {
"play_next": "Speel volgende af",
"add_to_queue": "Toevoegen aan wachtrij",
"add_to_playlist": "Voeg toe aan afspeellijst",
"download": "Downloaden",
"downloaded": "Gedownload",
"downloading": "Downloaden...",
"cached": "Gecached",
"delete_download": "Download verwijderen",
"delete_cache": "Verwijderen uit cache",
"go_to_artist": "Ga naar artiest",
"go_to_album": "Ga naar album",
"add_to_favorites": "Toevoegen aan favorieten",
"remove_from_favorites": "Verwijderen uit favorieten",
"remove_from_playlist": "Verwijder uit afspeellijst"
"play_next": "Play Next",
"add_to_queue": "Add to Queue",
"add_to_playlist": "Add to Playlist",
"download": "Download",
"downloaded": "Downloaded",
"downloading": "Downloading...",
"cached": "Cached",
"delete_download": "Delete Download",
"delete_cache": "Remove from Cache",
"go_to_artist": "Go to Artist",
"go_to_album": "Go to Album",
"add_to_favorites": "Add to Favorites",
"remove_from_favorites": "Remove from Favorites",
"remove_from_playlist": "Remove from Playlist"
},
"playlists": {
"create_playlist": "Afspeellijst aanmaken",
"playlist_name": "Afspeellijst naam",
"create_playlist": "Create Playlist",
"playlist_name": "Playlist Name",
"enter_name": "Enter playlist name",
"create": "Aanmaken",
"search_playlists": "Playlist zoeken...",
"added_to": "Toegevoegd aan {{name}}",
"added": "Toegevoegd aan playlist",
"removed_from": "Verwijderd uit {{name}}",
"removed": "Verwijderd uit playlist",
"create": "Create",
"search_playlists": "Search playlists...",
"added_to": "Added to {{name}}",
"added": "Added to playlist",
"removed_from": "Removed from {{name}}",
"removed": "Removed from playlist",
"created": "Playlist created",
"create_new": "Create New Playlist",
"failed_to_add": "Failed to add to playlist",
"failed_to_remove": "Verwijderen uit afspeellijst is mislukt",
"failed_to_create": "Het maken van de afspeellijst is mislukt",
"delete_playlist": "Afspeellijst verwijderen",
"delete_confirm": "Weet u zeker dat u \"{{name}}\"wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.",
"deleted": "Afspeellijst verwijderd.",
"failed_to_delete": "Verwijderen van afspeellijst mislukt"
"failed_to_remove": "Failed to remove from playlist",
"failed_to_create": "Failed to create playlist",
"delete_playlist": "Delete Playlist",
"delete_confirm": "Are you sure you want to delete \"{{name}}\"? This action cannot be undone.",
"deleted": "Playlist deleted",
"failed_to_delete": "Failed to delete playlist"
},
"sort": {
"title": "Sorteren op",
"alphabetical": "Alfabetisch",
"date_created": "Aanmaakdatum"
"title": "Sort By",
"alphabetical": "Alphabetical",
"date_created": "Date Created"
}
},
"watchlists": {
"title": "Watchlist",
"my_watchlists": "Mijn watchlists",
"title": "Watchlists",
"my_watchlists": "My Watchlists",
"public_watchlists": "Public Watchlists",
"create_title": "Create Watchlist",
"edit_title": "Edit Watchlist",
"create_button": "Create Watchlist",
"save_button": "Wijzigingen opslaan",
"delete_button": "Verwijder",
"remove_button": "Verwijderen",
"save_button": "Save Changes",
"delete_button": "Delete",
"remove_button": "Remove",
"cancel_button": "Cancel",
"name_label": "Name",
"name_placeholder": "Enter watchlist name",
@@ -808,7 +808,7 @@
"sort_order_label": "Default Sort Order",
"empty_title": "No Watchlists",
"empty_description": "Create your first watchlist to start organizing your media",
"empty_watchlist": "Deze watchlist is leeg",
"empty_watchlist": "This watchlist is empty",
"empty_watchlist_hint": "Add items from your library to this watchlist",
"not_configured_title": "Streamystats Not Configured",
"not_configured_description": "Configure Streamystats in settings to use watchlists",
@@ -819,26 +819,26 @@
"create_new": "Create New Watchlist",
"item": "item",
"items": "items",
"public": "Publiek",
"private": "Privé",
"you": "Jij",
"by_owner": "Door een andere gebruiker",
"public": "Public",
"private": "Private",
"you": "You",
"by_owner": "By another user",
"not_found": "Watchlist not found",
"delete_confirm_title": "Delete Watchlist",
"delete_confirm_message": "Weet u zeker dat u \"{{name}}\"wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.",
"remove_item_title": "Verwijder van watchlist",
"remove_item_message": "Verwijder \"{{name}}\" uit deze watchlist?",
"loading": "Laden van watchlists...",
"no_compatible_watchlists": "Geen compatibele watchlist",
"create_one_first": "Maak een watchlist aan die dit inhoudstype accepteert"
"delete_confirm_message": "Are you sure you want to delete \"{{name}}\"? This action cannot be undone.",
"remove_item_title": "Remove from Watchlist",
"remove_item_message": "Remove \"{{name}}\" from this watchlist?",
"loading": "Loading watchlists...",
"no_compatible_watchlists": "No compatible watchlists",
"create_one_first": "Create a watchlist that accepts this content type"
},
"playback_speed": {
"title": "Afspeelsnelheid",
"apply_to": "Toepassen op",
"speed": "Snelheid",
"title": "Playback Speed",
"apply_to": "Apply To",
"speed": "Speed",
"scope": {
"media": "Alleen deze media",
"show": "Deze serie",
"media": "This media only",
"show": "This show",
"all": "All media (default)"
}
}

View File

@@ -7,88 +7,88 @@
"username_placeholder": "Kullanıcı adı",
"password_placeholder": "Şifre",
"login_button": "Giriş yap",
"quick_connect": "Hızlı Bağlan",
"quick_connect": "Hızlı Bağlantı",
"enter_code_to_login": "Giriş yapmak için {{code}} kodunu girin",
"failed_to_initiate_quick_connect": "Hızlı Bağlan başlatılamadı",
"failed_to_initiate_quick_connect": "Quick Connect başlatılamadı",
"got_it": "Anlaşıldı",
"connection_failed": "Bağlantı başarısız",
"could_not_connect_to_server": "Sunucuya bağlanılamadı. Lütfen URL'yi ve ağ bağlantınızı kontrol edin.",
"could_not_connect_to_server": "Sunucuya bağlanılamadı. Lütfen URL'yi ve ağ bağlantınızı kontrol edin",
"an_unexpected_error_occured": "Beklenmedik bir hata oluştu",
"change_server": "Sunucu değiştir",
"change_server": "Sunucuyu değiştir",
"invalid_username_or_password": "Geçersiz kullanıcı adı veya şifre",
"user_does_not_have_permission_to_log_in": "Kullanıcının giriş yapma izni yok",
"server_is_taking_too_long_to_respond_try_again_later": "Sunucunun yanıt vermesi çok uzun sürüyor, lütfen daha sonra tekrar deneyin",
"server_received_too_many_requests_try_again_later": "Sunucu çok fazla istek aldı, lütfen daha sonra tekrar deneyin.",
"server_is_taking_too_long_to_respond_try_again_later": "Sunucu yanıt vermekte çok uzun sürüyor, lütfen tekrar deneyin",
"server_received_too_many_requests_try_again_later": "Sunucu çok fazla istek aldı, lütfen tekrar deneyin.",
"there_is_a_server_error": "Sunucu hatası var",
"an_unexpected_error_occured_did_you_enter_the_correct_url": "Beklenmedik bir hata oluştu. Sunucu URL'sini doğru girdiğinizden emin misiniz?",
"too_old_server_text": "Desteklenmeyen Jellyfin Sunucu sürümü bulundu.",
"too_old_server_description": "Lütfen Jellyfin'i en son sürüme güncelleyin."
"an_unexpected_error_occured_did_you_enter_the_correct_url": "Beklenmedik bir hata oluştu. Sunucu URL'sini doğru girdiğinizden emin oldunuz mu?",
"too_old_server_text": "Unsupported Jellyfin Server Discovered",
"too_old_server_description": "Please update Jellyfin to the latest version"
},
"server": {
"enter_url_to_jellyfin_server": "Jellyfin sunucunusun URL adresini girin",
"enter_url_to_jellyfin_server": "Jellyfin sunucunusun URL'sini girin",
"server_url_placeholder": "http(s)://sunucunuz.com",
"connect_button": "Bağlan",
"previous_servers": "Önceki sunucular",
"clear_button": "Temizle",
"swipe_to_remove": "Kaldırmak için kaydırın",
"swipe_to_remove": "Swipe to remove",
"search_for_local_servers": "Yerel sunucuları ara",
"searching": "Aranıyor...",
"servers": "Sunucular",
"saved": "Kaydedildi",
"session_expired": "Oturum süresi doldu",
"please_login_again": "Kaydedilmiş oturumunuzun süresi doldu. Lütfen tekrar giriş yapın.",
"remove_saved_login": "Kayıtlı oturumu kaldır",
"remove_saved_login_description": "Bu sunucu için kaydedilmiş kimlik bilgileriniz kaldırılacaktır. Bir sonraki sefere kullanıcı adı ve şifrenizi yeniden girmeniz gerekecek.",
"accounts_count": "{{count}} hesap",
"select_account": "Hesap Seç",
"add_account": "Hesap Ekle",
"remove_account_description": "{{username}} için kayıtlı bilgiler kaldırılacaktır."
"saved": "Saved",
"session_expired": "Session Expired",
"please_login_again": "Your saved session has expired. Please log in again.",
"remove_saved_login": "Remove Saved Login",
"remove_saved_login_description": "This will remove your saved credentials for this server. You'll need to enter your username and password again next time.",
"accounts_count": "{{count}} accounts",
"select_account": "Select Account",
"add_account": "Add Account",
"remove_account_description": "This will remove the saved credentials for {{username}}."
},
"save_account": {
"title": "Hesabı Kaydet",
"save_for_later": "Bu hesabı kaydet",
"security_option": "Güvenlik Seçeneği",
"title": "Save Account",
"save_for_later": "Save this account",
"security_option": "Security Option",
"no_protection": "No protection",
"no_protection_desc": "Kimlik doğrulamasız hızlı giriş",
"pin_code": "PIN kodu",
"pin_code_desc": "Geçiş yaparken 4 haneli PIN kodu gereklidir",
"password": "Şifrenizi tekrar girin ",
"password_desc": "Geçiş yaparken şifre gereklidir",
"save_button": "Kaydet",
"cancel_button": "Vazgeç"
"no_protection_desc": "Quick login without authentication",
"pin_code": "PIN code",
"pin_code_desc": "4-digit PIN required when switching",
"password": "Re-enter password",
"password_desc": "Password required when switching",
"save_button": "Save",
"cancel_button": "Cancel"
},
"pin": {
"enter_pin": "PIN kodunu girin",
"enter_pin_for": "{{username}} için PIN kodunu girin",
"enter_4_digits": "4 hane girin",
"invalid_pin": "Geçersiz PIN kodu",
"setup_pin": "PIN kodunu ayarla",
"confirm_pin": "PIN kodunu onayla",
"pins_dont_match": "PIN kodları eşleşmiyor",
"forgot_pin": "PIN kodunu mu unuttunuz?",
"forgot_pin_desc": "Kayıtlı bilgileriniz kaldırılacaktır"
"enter_pin": "Enter PIN",
"enter_pin_for": "Enter PIN for {{username}}",
"enter_4_digits": "Enter 4 digits",
"invalid_pin": "Invalid PIN",
"setup_pin": "Set Up PIN",
"confirm_pin": "Confirm PIN",
"pins_dont_match": "PINs don't match",
"forgot_pin": "Forgot PIN?",
"forgot_pin_desc": "Your saved credentials will be removed"
},
"password": {
"enter_password": "Şifrenizi girin",
"enter_password_for": "{{username}} için şifrenizi girin",
"invalid_password": "Geçersiz şifre"
"enter_password": "Enter Password",
"enter_password_for": "Enter password for {{username}}",
"invalid_password": "Invalid password"
},
"home": {
"checking_server_connection": "Sunucu bağlantısı kontrol ediliyor...",
"checking_server_connection": "Checking server connection...",
"no_internet": "İnternet Yok",
"no_items": "Öge Yok",
"no_internet_message": "Endişelenmeyin, indirilmiş içerikleri izleyebilirsiniz.",
"checking_server_connection_message": "Sunucuya bağlantı kontrol ediliyor",
"go_to_downloads": "İndirilenlere git",
"retry": "Tekrar dene",
"server_unreachable": "Sunucuya ulaşılamıyor",
"server_unreachable_message": "Sunucuya bağlanılamadı. Lütfen ağ bağlantınızı kontrol edin.",
"no_internet_message": "Endişelenmeyin, hala\ndownloaded içerik izleyebilirsiniz.",
"checking_server_connection_message": "Checking connection to server",
"go_to_downloads": "İndirmelere Git",
"retry": "Retry",
"server_unreachable": "Server Unreachable",
"server_unreachable_message": "Could not reach the server.\nPlease check your network connection.",
"oops": "Hups!",
"error_message": "Bir şeyler ters gitti.\nLütfen çıkış yapıp tekrar giriş yapın.",
"error_message": "Bir şeyler ters gitti.\nLütfen çıkış yapın ve tekrar giriş yapın.",
"continue_watching": "İzlemeye Devam Et",
"next_up": "Sonraki",
"continue_and_next_up": "Continue & Next Up",
"recently_added_in": "{{libraryName}} Kütüphanesine Son Eklenenler",
"recently_added_in": "{{libraryName}}'de Yakınlarda Eklendi",
"suggested_movies": "Önerilen Filmler",
"suggested_episodes": "Önerilen Bölümler",
"intro": {
@@ -110,52 +110,52 @@
"settings_title": "Ayarlar",
"log_out_button": ıkış Yap",
"categories": {
"title": "Kategoriler"
"title": "Categories"
},
"playback_controls": {
"title": "Oynatma & Kontroller"
"title": "Playback & Controls"
},
"audio_subtitles": {
"title": "Ses & Altyazılar"
"title": "Audio & Subtitles"
},
"appearance": {
"title": "Görünüm",
"title": "Appearance",
"merge_next_up_continue_watching": "Merge Continue Watching & Next Up",
"hide_remote_session_button": "Uzak Oturum Butonunu Gizle"
"hide_remote_session_button": "Hide Remote Session Button"
},
"network": {
"title": "",
"local_network": "Yerel Ağ",
"auto_switch_enabled": "Evdeyken otomatik geçiş yap",
"auto_switch_description": "Ev WiFi'sine bağlanınca otomatik olarak yerek URL adresine geçiş yap",
"local_url": "Yerel URL Adresi",
"local_url_hint": "Yerel sunucu adresinizi girin (http://192.168.1.100:8096, gibi)",
"title": "Network",
"local_network": "Local Network",
"auto_switch_enabled": "Auto-switch when at home",
"auto_switch_description": "Automatically switch to local URL when connected to home WiFi",
"local_url": "Local URL",
"local_url_hint": "Enter your local server address (e.g., http://192.168.1.100:8096)",
"local_url_placeholder": "http://192.168.1.100:8096",
"home_wifi_networks": "Ev WiFi ağları",
"add_current_network": "\"{{ssid}}\"'yi ekle",
"not_connected_to_wifi": "WiFi'a bağlı değil",
"no_networks_configured": "Herhangi bir ağ ayarlanmadı",
"add_network_hint": "Otomatik geçişi etkinleştirmek için ev WiFi'nizi ekleyin",
"current_wifi": "Şu anki WiFi",
"using_url": "Kullanılıyor",
"local": "Yerel URL Adresi",
"remote": "Uzak URL Adresi",
"not_connected": "Bağlı değil",
"current_server": "Geçerli Sunucu",
"remote_url": "Uzak URL Adresi",
"active_url": "Aktif URL Adresi",
"not_configured": "Yapılandırılmamış",
"network_added": "Ağ eklendi",
"network_already_added": "Ağ zaten eklendi",
"no_wifi_connected": "WiFi'a bağlı değil",
"permission_denied": "Konum izni reddedildi",
"permission_denied_explanation": "Otomatik geçiş yapabilmek için WiFi ağını algılayabilmek için konum izni gereklidir. Lütfen Ayarlarda etkinleştirin."
"home_wifi_networks": "Home WiFi Networks",
"add_current_network": "Add \"{{ssid}}\"",
"not_connected_to_wifi": "Not connected to WiFi",
"no_networks_configured": "No networks configured",
"add_network_hint": "Add your home WiFi network to enable auto-switching",
"current_wifi": "Current WiFi",
"using_url": "Using",
"local": "Local URL",
"remote": "Remote URL",
"not_connected": "Not connected",
"current_server": "Current Server",
"remote_url": "Remote URL",
"active_url": "Active URL",
"not_configured": "Not configured",
"network_added": "Network added",
"network_already_added": "Network already added",
"no_wifi_connected": "Not connected to WiFi",
"permission_denied": "Location permission denied",
"permission_denied_explanation": "Location permission is required to detect WiFi network for auto-switching. Please enable it in Settings."
},
"user_info": {
"user_info_title": "Kullanıcı Bilgisi",
"user": "Kullanıcı",
"server": "Sunucu",
"token": "Erişim Anahtarı",
"token": "Token",
"app_version": "Uygulama Sürümü"
},
"quick_connect": {
@@ -172,20 +172,20 @@
"media_controls_title": "Medya Kontrolleri",
"forward_skip_length": "İleri Sarma Uzunluğu",
"rewind_length": "Geri Sarma Uzunluğu",
"seconds_unit": "sn"
"seconds_unit": "s"
},
"gesture_controls": {
"gesture_controls_title": "Hareketle Kontrol",
"horizontal_swipe_skip": "Atlamak için yatay kaydırma",
"horizontal_swipe_skip_description": "Kontroller gizliyken sola/sağa kaydırarak atlama",
"left_side_brightness": "Sol Taraf Parlaklık Kontrolü",
"left_side_brightness_description": "Sol tarafta aşağı/yukarı kaydırarak parlaklık ayarı",
"right_side_volume": "Sağ Taraf Ses Kontrolü",
"right_side_volume_description": "Sağ tarafta aşağı/yukarı kaydırarak ses ayarı",
"hide_volume_slider": "Ses Ayarını Gizle",
"hide_volume_slider_description": "Video oynatıcıda ses ayarını gizle",
"hide_brightness_slider": "Parlaklık Ayarını Gizle",
"hide_brightness_slider_description": "Video oynatıcıda parlaklık ayarını gizle"
"gesture_controls_title": "Gesture Controls",
"horizontal_swipe_skip": "Horizontal Swipe to Skip",
"horizontal_swipe_skip_description": "Swipe left/right when controls are hidden to skip",
"left_side_brightness": "Left Side Brightness Control",
"left_side_brightness_description": "Swipe up/down on left side to adjust brightness",
"right_side_volume": "Right Side Volume Control",
"right_side_volume_description": "Swipe up/down on right side to adjust volume",
"hide_volume_slider": "Hide Volume Slider",
"hide_volume_slider_description": "Hide the volume slider in the video player",
"hide_brightness_slider": "Hide Brightness Slider",
"hide_brightness_slider_description": "Hide the brightness slider in the video player"
},
"audio": {
"audio_title": "Ses",
@@ -195,12 +195,12 @@
"none": "Yok",
"language": "Dil",
"transcode_mode": {
"title": "Ses Kod Dönüştürmesi",
"description": "Surround sesin (7.1, TrueHD, DTS-HD) nasıl işleneceğini kontrol eder.",
"auto": "Oto",
"stereo": "Stereo'ya zorla",
"5_1": "5.1'e izin ver",
"passthrough": "Doğrudan geçiş"
"title": "Audio Transcoding",
"description": "Controls how surround audio (7.1, TrueHD, DTS-HD) is handled",
"auto": "Auto",
"stereo": "Force Stereo",
"5_1": "Allow 5.1",
"passthrough": "Passthrough"
}
},
"subtitles": {
@@ -220,60 +220,60 @@
"None": "Yok",
"OnlyForced": "Sadece Zorunlu"
},
"text_color": "Metin Rengi",
"background_color": "Arkaplan Rengi",
"outline_color": "Kenarlık Rengi",
"outline_thickness": "Kenarlık kalınlığı",
"background_opacity": "Arkaplan Opaklığı",
"outline_opacity": "Kenarlık Opaklığı",
"bold_text": "Kalın Metin",
"text_color": "Text Color",
"background_color": "Background Color",
"outline_color": "Outline Color",
"outline_thickness": "Outline Thickness",
"background_opacity": "Background Opacity",
"outline_opacity": "Outline Opacity",
"bold_text": "Bold Text",
"colors": {
"Black": "Siyah",
"Gray": "Gri",
"Silver": "Gümüş",
"White": "Beyaz",
"Maroon": "Kestane",
"Red": "Kırmızı",
"Fuchsia": "Fuşya",
"Yellow": "Sarı",
"Olive": "Zeytin yeşili",
"Green": "Yeşil",
"Teal": "Deniz mavisi",
"Lime": "Limon",
"Purple": "Mor",
"Navy": "Lacivert",
"Blue": "Mavi",
"Aqua": "Açık Mavi"
"Black": "Black",
"Gray": "Gray",
"Silver": "Silver",
"White": "White",
"Maroon": "Maroon",
"Red": "Red",
"Fuchsia": "Fuchsia",
"Yellow": "Yellow",
"Olive": "Olive",
"Green": "Green",
"Teal": "Teal",
"Lime": "Lime",
"Purple": "Purple",
"Navy": "Navy",
"Blue": "Blue",
"Aqua": "Aqua"
},
"thickness": {
"None": "Hiçbiri",
"Thin": "İnce",
"Thin": "Thin",
"Normal": "Normal",
"Thick": "Kalın"
"Thick": "Thick"
},
"subtitle_color": "Altyazı Rengi",
"subtitle_background_color": "Arkaplan Rengi",
"subtitle_font": "Altyazı Yazı Tipi",
"ksplayer_title": "KSPlayer Ayarları",
"hardware_decode": "Donanımsal Kod Çözme",
"hardware_decode_description": "Video kod çözme için donanımsal hızlandırma kullan. Oynatma sorunları yaşıyorsanız devre dışı bırakın."
"subtitle_color": "Subtitle Color",
"subtitle_background_color": "Background Color",
"subtitle_font": "Subtitle Font",
"ksplayer_title": "KSPlayer Settings",
"hardware_decode": "Hardware Decoding",
"hardware_decode_description": "Use hardware acceleration for video decoding. Disable if you experience playback issues."
},
"vlc_subtitles": {
"title": "VLC Altyazı Ayarları",
"hint": "VLC oynatıcı için altyazı görünümünü değiştirin. Değişiklikler bir sonraki oynatmada etkili olacak.",
"text_color": "Metin Rengi",
"background_color": "Arkaplan Rengi",
"background_opacity": "Arkaplan Opaklığı",
"outline_color": "Kenarlık Rengi",
"outline_opacity": "Kenarlık Opaklığı",
"outline_thickness": "Kenarlık Kalınlığı",
"bold": "Kalın Metin",
"margin": "Alt Kenar Boşluğu"
"title": "VLC Subtitle Settings",
"hint": "Customize subtitle appearance for VLC player. Changes take effect on next playback.",
"text_color": "Text Color",
"background_color": "Background Color",
"background_opacity": "Background Opacity",
"outline_color": "Outline Color",
"outline_opacity": "Outline Opacity",
"outline_thickness": "Outline Thickness",
"bold": "Bold Text",
"margin": "Bottom Margin"
},
"video_player": {
"title": "Video oynatıcısı",
"video_player": "Video oynatıcısı",
"video_player_description": "iOS'da hangi video oynatıcının kullanılacağını seçin.",
"title": "Video Player",
"video_player": "Video Player",
"video_player_description": "Choose which video player to use on iOS.",
"ksplayer": "KSPlayer",
"vlc": "VLC"
},
@@ -297,7 +297,7 @@
"video_player": "Video player",
"video_players": {
"VLC_3": "VLC 3",
"VLC_4": "VLC 4 (Deneysel + PiP)"
"VLC_4": "VLC 4 (Experimental + PiP)"
},
"show_custom_menu_links": "Özel Menü Bağlantılarını Göster",
"show_large_home_carousel": "Show Large Home Carousel (beta)",
@@ -305,24 +305,24 @@
"select_liraries_you_want_to_hide": "Kütüphane sekmesinden ve ana sayfa bölümlerinden gizlemek istediğiniz kütüphaneleri seçin.",
"disable_haptic_feedback": "Dokunsal Geri Bildirimi Devre Dışı Bırak",
"default_quality": "Varsayılan kalite",
"default_playback_speed": "Varsayılan Oynatma Hızı",
"auto_play_next_episode": "Otomatik Sonraki Bölümü Oynat",
"max_auto_play_episode_count": "En Fazla Otomatik Oynatılacak Bölüm Sayısı",
"default_playback_speed": "Default Playback Speed",
"auto_play_next_episode": "Auto-play Next Episode",
"max_auto_play_episode_count": "Max Auto Play Episode Count",
"disabled": "Devre dışı"
},
"downloads": {
"downloads_title": "İndirmeler"
},
"music": {
"title": "Müzik",
"playback_title": "Oynatma",
"playback_description": "Müziğin nasıl çalınacağını ayarlayın.",
"prefer_downloaded": "İndirilmiş Şarkıları Tercih Et",
"caching_title": "Önbellekleme",
"caching_description": "Akıcı oynatım için gelecek şarkıları otomatik önbelleğe al.",
"title": "Music",
"playback_title": "Playback",
"playback_description": "Configure how music is played.",
"prefer_downloaded": "Prefer Downloaded Songs",
"caching_title": "Caching",
"caching_description": "Automatically cache upcoming tracks for smoother playback.",
"lookahead_enabled": "Enable Look-Ahead Caching",
"lookahead_count": "Önden Önbelleklenecek Parça Sayısı",
"max_cache_size": "Maksimum Önbellek Boyutu"
"lookahead_count": "Tracks to Pre-cache",
"max_cache_size": "Max Cache Size"
},
"plugins": {
"plugins_title": "Eklentiler",
@@ -345,7 +345,7 @@
"order_by": {
"DEFAULT": "Varsayılan",
"VOTE_COUNT_AND_AVERAGE": "Vote count and average",
"POPULARITY": "Popülerlik"
"POPULARITY": "Popularity"
}
},
"marlin_search": {
@@ -357,35 +357,35 @@
"save_button": "Kaydet",
"toasts": {
"saved": "Kaydedildi",
"refreshed": "Ayarlar sunucudan yeniden alındı"
"refreshed": "Settings refreshed from server"
},
"refresh_from_server": "Ayarları Sunucudan Yeniden Al"
"refresh_from_server": "Refresh Settings from Server"
},
"streamystats": {
"enable_streamystats": "Streamystats'ı Etkinleştir",
"disable_streamystats": "Streamystats'ı Devre Dışı Bırak",
"enable_search": "Arama için kullan",
"url": "URL Adresi",
"enable_streamystats": "Enable Streamystats",
"disable_streamystats": "Disable Streamystats",
"enable_search": "Use for Search",
"url": "URL",
"server_url_placeholder": "http(s)://streamystats.example.com",
"streamystats_search_hint": "Streamystats sunucu URL'sini girin. URL, http veya https içermeli ve isteğe bağlı olarak portu içerebilir.",
"read_more_about_streamystats": "Streamystats hakkında daha fazla bilgi.",
"save_button": "Kaydet",
"save": "Kaydet",
"features_title": "Özellikler",
"streamystats_search_hint": "Enter the URL for your Streamystats server. The URL should include http or https and optionally the port.",
"read_more_about_streamystats": "Read More About Streamystats.",
"save_button": "Save",
"save": "Save",
"features_title": "Features",
"home_sections_title": "Home Sections",
"enable_movie_recommendations": "Film Önerileri",
"enable_series_recommendations": "Dizi Önerileri",
"enable_movie_recommendations": "Movie Recommendations",
"enable_series_recommendations": "Series Recommendations",
"enable_promoted_watchlists": "Promoted Watchlists",
"hide_watchlists_tab": "Hide Watchlists Tab",
"home_sections_hint": "Show personalized recommendations and promoted watchlists from Streamystats on the home page.",
"recommended_movies": "Önerilen Filmler",
"recommended_series": "Önerilen Diziler",
"recommended_movies": "Recommended Movies",
"recommended_series": "Recommended Series",
"toasts": {
"saved": "Kaydedildi",
"refreshed": "Ayarlar sunucudan yeniden alındı",
"disabled": "Streamystats devre dışı"
"saved": "Saved",
"refreshed": "Settings refreshed from server",
"disabled": "Streamystats disabled"
},
"refresh_from_server": "Ayarları Sunucudan Yeniden Al"
"refresh_from_server": "Refresh Settings from Server"
},
"kefinTweaks": {
"watchlist_enabler": "Enable our Watchlist integration",
@@ -398,15 +398,15 @@
"device_usage": "Cihaz {{availableSpace}}%",
"size_used": "{{used}} / {{total}} kullanıldı",
"delete_all_downloaded_files": "Tüm indirilen dosyaları sil",
"music_cache_title": "Müzik Ön Belleği",
"music_cache_title": "Music Cache",
"music_cache_description": "Automatically cache songs as you listen for smoother playback and offline support",
"enable_music_cache": "Müzik Ön Belleğini Etkinleştir",
"clear_music_cache": "Müzik Ön Belleğini Temizle",
"music_cache_size": "{{size}} ön belleklendi",
"music_cache_cleared": "Müzik ön belleği temizlendi",
"delete_all_downloaded_songs": "Tüm İndirilen Müzikleri Sil",
"downloaded_songs_size": "{{size}} indirildi",
"downloaded_songs_deleted": "İndirilen müzikler silindi"
"enable_music_cache": "Enable Music Cache",
"clear_music_cache": "Clear Music Cache",
"music_cache_size": "{{size}} cached",
"music_cache_cleared": "Music cache cleared",
"delete_all_downloaded_songs": "Delete All Downloaded Songs",
"downloaded_songs_size": "{{size}} downloaded",
"downloaded_songs_deleted": "Downloaded songs deleted"
},
"intro": {
"title": "Intro",
@@ -417,7 +417,7 @@
"logs_title": "Günlükler",
"export_logs": "Export logs",
"click_for_more_info": "Click for more info",
"level": "Düzey",
"level": "Level",
"no_logs_available": "Günlükler mevcut değil",
"delete_all_logs": "Tüm günlükleri sil"
},
@@ -433,22 +433,22 @@
}
},
"sessions": {
"title": "Oturumlar",
"no_active_sessions": "Aktif Oturum Yok"
"title": "Sessions",
"no_active_sessions": "No Active Sessions"
},
"downloads": {
"downloads_title": "İndirilenler",
"tvseries": "Diziler",
"movies": "Filmler",
"queue": "Sıra",
"other_media": "Diğer medya",
"other_media": "Other media",
"queue_hint": "Sıra ve indirmeler uygulama yeniden başlatıldığında kaybolacaktır",
"no_items_in_queue": "Sırada öğe yok",
"no_downloaded_items": "İndirilen öğe yok",
"delete_all_movies_button": "Tüm Filmleri Sil",
"delete_all_tvseries_button": "Tüm Dizileri Sil",
"delete_all_button": "Tümünü Sil",
"delete_all_other_media_button": "Diğer medyayı sil",
"delete_all_other_media_button": "Delete other media",
"active_download": "Aktif indirme",
"no_active_downloads": "Aktif indirme yok",
"active_downloads": "Aktif indirmeler",
@@ -465,7 +465,7 @@
"failed_to_delete_all_movies": "Filmler silinemedi",
"deleted_all_tvseries_successfully": "Tüm diziler başarıyla silindi!",
"failed_to_delete_all_tvseries": "Diziler silinemedi",
"deleted_media_successfully": "Der medya başarıyla silindi!",
"deleted_media_successfully": "Deleted other media Successfully!",
"failed_to_delete_media": "Failed to Delete other media",
"download_deleted": "Download Deleted",
"download_cancelled": "İndirme iptal edildi",
@@ -473,41 +473,41 @@
"download_paused": "Download Paused",
"could_not_pause_download": "Could Not Pause Download",
"download_resumed": "Download Resumed",
"could_not_resume_download": "İndirme Devam Ettirilemedi",
"could_not_resume_download": "Could Not Resume Download",
"download_completed": "İndirme tamamlandı",
"download_failed": "İndirme başarısız oldu",
"download_failed": "Download Failed",
"download_failed_for_item": "{{item}} için indirme başarısız oldu - {{error}}",
"download_completed_for_item": "{{item}} için indirme tamamlandı",
"download_started_for_item": "{{item}} için indirme başladı",
"failed_to_start_download": "İndirme başlatılamadı",
"item_already_downloading": "{{item}} zaten indiriliyor",
"all_files_deleted": "Bütün indirilenler başarıyla silindi",
"download_started_for_item": "Download Started for {{item}}",
"failed_to_start_download": "Failed to start download",
"item_already_downloading": "{{item}} is already downloading",
"all_files_deleted": "All Downloads Deleted Successfully",
"files_deleted_by_type": "{{count}} {{type}} deleted",
"all_files_folders_and_jobs_deleted_successfully": "Tüm dosyalar, klasörler ve işler başarıyla silindi",
"failed_to_clean_cache_directory": "Önbellek dizini temizlenemedi",
"could_not_get_download_url_for_item": "{{itemName}} için indirme URL'si alınamadı",
"failed_to_clean_cache_directory": "Failed to clean cache directory",
"could_not_get_download_url_for_item": "Could not get download URL for {{itemName}}",
"go_to_downloads": "İndirmelere git",
"file_deleted": "{{item}} silindi"
"file_deleted": "{{item}} deleted"
}
}
},
"common": {
"select": "Seç",
"no_trailer_available": "Fragman mevcut değil",
"select": "Select",
"no_trailer_available": "No trailer available",
"video": "Video",
"audio": "Ses",
"subtitle": "Altyazı",
"play": "Oynat",
"none": "Hiçbiri",
"track": "Parça",
"cancel": "Vazgeç",
"delete": "Sil",
"ok": "Tamam",
"remove": "Kaldır",
"next": "Sonraki",
"back": "Geri",
"continue": "Devam",
"verifying": "Doğrulanıyor..."
"play": "Play",
"none": "None",
"track": "Track",
"cancel": "Cancel",
"delete": "Delete",
"ok": "OK",
"remove": "Remove",
"next": "Next",
"back": "Back",
"continue": "Continue",
"verifying": "Verifying..."
},
"search": {
"search": "Ara...",
@@ -521,10 +521,10 @@
"episodes": "Bölümler",
"collections": "Koleksiyonlar",
"actors": "Oyuncular",
"artists": "Sanatçılar",
"albums": "Albümler",
"songs": "Şarkılar",
"playlists": "Çalma listeleri",
"artists": "Artists",
"albums": "Albums",
"songs": "Songs",
"playlists": "Playlists",
"request_movies": "Film Talep Et",
"request_series": "Dizi Talep Et",
"recently_added": "Son Eklenenler",
@@ -572,7 +572,7 @@
"genres": "Türler",
"years": "Yıllar",
"sort_by": "Sırala",
"filter_by": "Filtrele",
"filter_by": "Filter By",
"sort_order": "Sıralama düzeni",
"tags": "Etiketler"
}
@@ -604,11 +604,11 @@
"index": "İndeks:",
"continue_watching": "İzlemeye devam et",
"go_back": "Geri",
"downloaded_file_title": "Bu dosya indirilmiş",
"downloaded_file_message": "İndirilmiş dosyayı oynatmak ister misiniz?",
"downloaded_file_yes": "Evet",
"downloaded_file_no": "Hayır",
"downloaded_file_cancel": "Vazgeç"
"downloaded_file_title": "You have this file downloaded",
"downloaded_file_message": "Do you want to play the downloaded file?",
"downloaded_file_yes": "Yes",
"downloaded_file_no": "No",
"downloaded_file_cancel": "Cancel"
},
"item_card": {
"next_up": "Sıradaki",
@@ -624,7 +624,7 @@
"no_similar_items_found": "Benzer öge bulunamadı",
"video": "Video",
"more_details": "Daha fazla detay",
"media_options": "Medya Seçenekleri",
"media_options": "Media Options",
"quality": "Kalite",
"audio": "Ses",
"subtitles": "Altyazı",
@@ -639,7 +639,7 @@
"download_episode": "Bölümü indir",
"download_movie": "Filmi indir",
"download_x_item": "{{item_count}} tane ögeyi indir",
"download_unwatched_only": "Yalnızca İzlenmemişler",
"download_unwatched_only": "Unwatched Only",
"download_button": "İndir"
}
},
@@ -693,10 +693,10 @@
"number_episodes": "Bölüm {{episode_number}}",
"born": "Doğum",
"appearances": "Görünmeler",
"approve": "Onayla",
"decline": "Reddet",
"requested_by": "{{user}} tarafından istendi",
"unknown_user": "Bilinmeyen Kullanıcı",
"approve": "Approve",
"decline": "Decline",
"requested_by": "Requested by {{user}}",
"unknown_user": "Unknown User",
"toasts": {
"jellyseer_does_not_meet_requirements": "Jellyseerr sunucusu minimum sürüm gereksinimlerini karşılamıyor! Lütfen en az 2.0.0 sürümüne güncelleyin",
"jellyseerr_test_failed": "Jellyseerr testi başarısız oldu. Lütfen tekrar deneyin.",
@@ -705,10 +705,10 @@
"requested_item": "{{item}} talep edildi!",
"you_dont_have_permission_to_request": "İstek göndermeye izniniz yok!",
"something_went_wrong_requesting_media": "Medya talep edilirken bir şeyler ters gitti!",
"request_approved": "İstek Onaylandı!",
"request_declined": "İstek Reddedildi!",
"failed_to_approve_request": "İsteği Onaylama Başarısız Oldu",
"failed_to_decline_request": "İsteği Reddetme Başarısız Oldu"
"request_approved": "Request Approved!",
"request_declined": "Request Declined!",
"failed_to_approve_request": "Failed to Approve Request",
"failed_to_decline_request": "Failed to Decline Request"
}
},
"tabs": {
@@ -719,81 +719,81 @@
"favorites": "Favoriler"
},
"music": {
"title": "Müzik",
"title": "Music",
"tabs": {
"suggestions": "Öneriler",
"albums": "Albümler",
"artists": "Sanatçılar",
"playlists": "Çalma listeleri",
"tracks": "parçalar"
"suggestions": "Suggestions",
"albums": "Albums",
"artists": "Artists",
"playlists": "Playlists",
"tracks": "tracks"
},
"filters": {
"all": "Tümü"
"all": "All"
},
"recently_added": "Son Eklenenler",
"recently_played": "Son Oynatılanlar",
"frequently_played": "Sık Oynatılanlar",
"explore": "Keşfet",
"top_tracks": "En Popülar Parçalar",
"play": "Oynat",
"shuffle": "Karıştır",
"play_top_tracks": "En Çok Oynatılan Parçaları Oynat",
"no_suggestions": "Öneri mevcut değil",
"no_albums": "Hiç albüm bulunamadı",
"no_artists": "Hiç sanatçı bulunamadı",
"no_playlists": "Hiç çalma listesi bulunamadı",
"album_not_found": "Albüm bulunamadı",
"artist_not_found": "Sanatçı bulunamadı",
"playlist_not_found": "Çalma listesi bulunamadı",
"recently_added": "Recently Added",
"recently_played": "Recently Played",
"frequently_played": "Frequently Played",
"explore": "Explore",
"top_tracks": "Top Tracks",
"play": "Play",
"shuffle": "Shuffle",
"play_top_tracks": "Play Top Tracks",
"no_suggestions": "No suggestions available",
"no_albums": "No albums found",
"no_artists": "No artists found",
"no_playlists": "No playlists found",
"album_not_found": "Album not found",
"artist_not_found": "Artist not found",
"playlist_not_found": "Playlist not found",
"track_options": {
"play_next": "Sıradakini Çal",
"add_to_queue": "Sıraya Ekle",
"add_to_playlist": "Çalma listesine ekle",
"download": "İndir",
"downloaded": "İndirildi",
"downloading": "İndiriliyor...",
"cached": "Önbellekte",
"delete_download": "İndirmeyi Sil",
"delete_cache": "Ön bellekten kaldır",
"go_to_artist": "Sanatçıya Git",
"go_to_album": "Albüme Git",
"add_to_favorites": "Favorilere Ekle",
"remove_from_favorites": "Favorilerden Kaldır",
"remove_from_playlist": "Çalma Listesinden Kaldır"
"play_next": "Play Next",
"add_to_queue": "Add to Queue",
"add_to_playlist": "Add to Playlist",
"download": "Download",
"downloaded": "Downloaded",
"downloading": "Downloading...",
"cached": "Cached",
"delete_download": "Delete Download",
"delete_cache": "Remove from Cache",
"go_to_artist": "Go to Artist",
"go_to_album": "Go to Album",
"add_to_favorites": "Add to Favorites",
"remove_from_favorites": "Remove from Favorites",
"remove_from_playlist": "Remove from Playlist"
},
"playlists": {
"create_playlist": "Çalma Listesi Oluştur",
"playlist_name": "Çalma Listesi Adı",
"enter_name": "Çalma listesi adı girin",
"create": "Oluştur",
"search_playlists": "Çalma listelerini ara...",
"added_to": "Şu çalma listesine eklendi: {{name}}",
"added": "Çalma listesine eklendi",
"removed_from": "Şu çalma listesinden kaldırıldı: {{name}}",
"removed": "Çalma listesinden kaldır",
"created": "Çalma listesi oluşturuldu",
"create_new": "Yeni Çalma Listesi Oluştur",
"failed_to_add": "Çalma listesine eklenemedi",
"failed_to_remove": "Çalma listesinden kaldırılamadı",
"failed_to_create": "Çalma listesi oluşturulamadı",
"delete_playlist": "Çalma Listesini Sil",
"delete_confirm": "\"{{name}}\" adlı çalma listesini silmek istediğinize emin misiniz? Bu işlem geri alınamaz.",
"deleted": "Çalma listesi silindi",
"failed_to_delete": "Çalma listesi oluşturulamadı"
"create_playlist": "Create Playlist",
"playlist_name": "Playlist Name",
"enter_name": "Enter playlist name",
"create": "Create",
"search_playlists": "Search playlists...",
"added_to": "Added to {{name}}",
"added": "Added to playlist",
"removed_from": "Removed from {{name}}",
"removed": "Removed from playlist",
"created": "Playlist created",
"create_new": "Create New Playlist",
"failed_to_add": "Failed to add to playlist",
"failed_to_remove": "Failed to remove from playlist",
"failed_to_create": "Failed to create playlist",
"delete_playlist": "Delete Playlist",
"delete_confirm": "Are you sure you want to delete \"{{name}}\"? This action cannot be undone.",
"deleted": "Playlist deleted",
"failed_to_delete": "Failed to delete playlist"
},
"sort": {
"title": "Sırala",
"alphabetical": "Alfabetik",
"date_created": "Oluşturulma Tarihi"
"title": "Sort By",
"alphabetical": "Alphabetical",
"date_created": "Date Created"
}
},
"watchlists": {
"title": "İzleme listeleri",
"my_watchlists": "İzleme listelerim",
"public_watchlists": "Herkese açık izleme listeleri",
"create_title": "İzleme listesi oluştur",
"edit_title": "İzleme listesini düzenle",
"create_button": "İzleme listesi oluştur",
"title": "Watchlists",
"my_watchlists": "My Watchlists",
"public_watchlists": "Public Watchlists",
"create_title": "Create Watchlist",
"edit_title": "Edit Watchlist",
"create_button": "Create Watchlist",
"save_button": "Save Changes",
"delete_button": "Delete",
"remove_button": "Remove",