From 9faeb7036e61f79c5b3e76f898915560f4705d69 Mon Sep 17 00:00:00 2001 From: Secozzi <49240133+Secozzi@users.noreply.github.com> Date: Wed, 1 Oct 2025 13:15:04 +0000 Subject: [PATCH 01/45] fix: Fix downloaded videos not being able to play (#2165) (cherry picked from commit 261b7b731a0c0b5ea7f03ebebd2f9e03c02a3e75) --- .../eu/kanade/tachiyomi/data/download/DownloadManager.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt index e05f1ff54d..ecc7a5e875 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt @@ -190,10 +190,9 @@ class DownloadManager( // AY --> return Video( - file.uri.toString(), - "download: " + file.uri.toString(), - file.uri.toString(), - file.uri, + videoUrl = file.uri.toString(), + videoTitle = "download: " + file.uri.toString(), + initialized = true, ).apply { status = Video.State.READY } // <-- AY } From 665d8da88fc6964b47aecfe6a69169f564e6cdfd Mon Sep 17 00:00:00 2001 From: Secozzi Date: Sun, 12 Oct 2025 12:00:56 +0200 Subject: [PATCH 02/45] Bump some dependencies & lib version --- .../eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt | 2 +- gradle/aniyomi.versions.toml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt index eb761e42b9..3c9f49d6a7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt @@ -53,7 +53,7 @@ internal object ExtensionLoader { private const val METADATA_SOURCE_FACTORY = "tachiyomi.animeextension.factory" private const val METADATA_NSFW = "tachiyomi.animeextension.nsfw" const val LIB_VERSION_MIN = 12 - const val LIB_VERSION_MAX = 15 + const val LIB_VERSION_MAX = 16 // <-- AY @Suppress("DEPRECATION") diff --git a/gradle/aniyomi.versions.toml b/gradle/aniyomi.versions.toml index e799c3cce2..d4cffedd98 100644 --- a/gradle/aniyomi.versions.toml +++ b/gradle/aniyomi.versions.toml @@ -1,8 +1,8 @@ [versions] -aniyomi-mpv-lib = "1.17.n" +aniyomi-mpv-lib = "1.18.n" arthenica-smartexceptions = "0.2.1" constraint-layout = "1.1.0" -ffmpeg-kit = "1.17" +ffmpeg-kit = "1.18" media = "1.7.0" seeker = "1.2.2" truetypeparser = "2.1.4" From f91f3a40e65a529bb6121f96403b0ede063d3d33 Mon Sep 17 00:00:00 2001 From: Secozzi Date: Sun, 12 Oct 2025 12:04:27 +0200 Subject: [PATCH 03/45] Fix migration progress not updating and category flag mischeck --- .../java/mihon/domain/migration/usecases/MigrateAnimeUseCase.kt | 2 +- .../mihon/feature/migration/list/MigrationListScreenModel.kt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/mihon/domain/migration/usecases/MigrateAnimeUseCase.kt b/app/src/main/java/mihon/domain/migration/usecases/MigrateAnimeUseCase.kt index 0eab55b765..f7a28e9340 100644 --- a/app/src/main/java/mihon/domain/migration/usecases/MigrateAnimeUseCase.kt +++ b/app/src/main/java/mihon/domain/migration/usecases/MigrateAnimeUseCase.kt @@ -116,7 +116,7 @@ class MigrateAnimeUseCase( } // Update categories - if (MigrationFlag.EPISODE in flags) { + if (MigrationFlag.CATEGORY in flags) { val categoryIds = getCategories.await(current.id).map { it.id } setAnimeCategories.await(target.id, categoryIds) } diff --git a/app/src/main/java/mihon/feature/migration/list/MigrationListScreenModel.kt b/app/src/main/java/mihon/feature/migration/list/MigrationListScreenModel.kt index 3e12e34a52..c980835af7 100644 --- a/app/src/main/java/mihon/feature/migration/list/MigrationListScreenModel.kt +++ b/app/src/main/java/mihon/feature/migration/list/MigrationListScreenModel.kt @@ -306,6 +306,7 @@ class MigrationListScreenModel( } catch (_: Exception) { } migratingAnime.searchResult.value = resultAnime.toSuccessSearchResult() + updateMigrationProgress() } } From c469fe3ba31e3247d1c3783bf29be141c20bbea0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 17 Sep 2025 13:26:02 +0200 Subject: [PATCH 04/45] Update dependency com.android.tools.build:gradle to v8.13.0 (#2449) (cherry picked from commit bd90307df9ca2f0d424483b29c0dd640eabc0f5f) --- gradle/androidx.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/androidx.versions.toml b/gradle/androidx.versions.toml index 4380cd4373..d267ed4d9d 100644 --- a/gradle/androidx.versions.toml +++ b/gradle/androidx.versions.toml @@ -1,5 +1,5 @@ [versions] -agp_version = "8.12.1" +agp_version = "8.13.0" lifecycle_version = "2.9.2" paging_version = "3.3.6" interpolator_version = "1.0.0" From c2c865bb60219fdbcf74ce2a871a47d507560821 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 17 Sep 2025 13:29:14 +0200 Subject: [PATCH 05/45] Update GitHub Actions (#2443) (cherry picked from commit 95357a862567bb101caca4965869f4943d68b5ab) --- .github/workflows/build.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f9d7fd83b7..46847d2e57 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,7 +38,7 @@ jobs: - name: Dependency Review if: github.event_name == 'pull_request' - uses: actions/dependency-review-action@bc41886e18ea39df68b1b1245f4184881938e050 # v4.7.2 + uses: actions/dependency-review-action@595b5aeba73380359d98a5e087f648dbb0edce1b # v4.7.3 - name: Set up JDK uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0 @@ -47,7 +47,7 @@ jobs: distribution: temurin - name: Set up Gradle - uses: gradle/actions/setup-gradle@017a9effdb900e5b5b2fddfb590a105619dca3c3 # v4.4.2 + uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4.4.3 - name: Check code format run: ./gradlew spotlessCheck diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dae6d06c85..f9e9de895c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -53,7 +53,7 @@ jobs: # <-- AM (SYNC_DRIVE) - name: Set up Gradle - uses: gradle/actions/setup-gradle@017a9effdb900e5b5b2fddfb590a105619dca3c3 # v4.4.2 + uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4.4.3 - name: Build run: ./gradlew assembleRelease -Penable-updater @@ -110,7 +110,7 @@ jobs: Animiru - name: Create GitHub Release - uses: softprops/action-gh-release@72f2c25fcb47643c292f7107632f7a47c1df5cd8 # v2.3.2 + uses: softprops/action-gh-release@6cbd405e2c4e67a21c47fa9e383d020e4e28b836 # v2.3.3 with: tag_name: ${{ needs.get_tag.outputs.tag }} name: Animiru ${{ needs.get_tag.outputs.tag }} From 410036deaa28b364b8eff8220ef94f7f0c7969f6 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 17 Sep 2025 13:30:04 +0200 Subject: [PATCH 06/45] Update dependency io.kotest:kotest-assertions-core to v6.0.3 (#2439) (cherry picked from commit e573f72cfd5b6c66709ba948ce29c7246a9832e8) --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b10373ee65..cd964d4f1d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -92,7 +92,7 @@ sqldelight-dialects-sql = { module = "app.cash.sqldelight:sqlite-3-38-dialect", junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit" } junit-platform-launcher = { module = "org.junit.platform:junit-platform-launcher" } -kotest-assertions = "io.kotest:kotest-assertions-core:6.0.0" +kotest-assertions = "io.kotest:kotest-assertions-core:6.0.3" mockk = "io.mockk:mockk:1.14.5" voyager-navigator = { module = "cafe.adriel.voyager:voyager-navigator", version.ref = "voyager" } From 8abbdcb899aa86f3bf5b410f3c5ec7251b29a95a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 17 Sep 2025 13:30:26 +0200 Subject: [PATCH 07/45] Update dependency org.jsoup:jsoup to v1.21.2 (#2438) (cherry picked from commit 57c82b30bab20110832eecc4a825441708eaa02b) --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cd964d4f1d..7a9c8374cf 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -29,7 +29,7 @@ conscrypt-android = "org.conscrypt:conscrypt-android:2.5.3" quickjs-android = { group = "com.github.zhanghai.quickjs-java", name = "quickjs-android", version = "547f5b1597" } -jsoup = "org.jsoup:jsoup:1.21.1" +jsoup = "org.jsoup:jsoup:1.21.2" disklrucache = "com.jakewharton:disklrucache:2.0.2" unifile = "com.github.tachiyomiorg:unifile:e0def6b3dc" From 00c3d021e693ea50599cfa8505d9ac294b0a34a0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 17 Sep 2025 13:37:56 +0200 Subject: [PATCH 08/45] Update lifecycle.version to v2.9.3 (#2447) (cherry picked from commit 49562e1915108ac28fa3308d4eed319bb9ed61d5) --- gradle/androidx.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/androidx.versions.toml b/gradle/androidx.versions.toml index d267ed4d9d..4ad5088202 100644 --- a/gradle/androidx.versions.toml +++ b/gradle/androidx.versions.toml @@ -1,6 +1,6 @@ [versions] agp_version = "8.13.0" -lifecycle_version = "2.9.2" +lifecycle_version = "2.9.3" paging_version = "3.3.6" interpolator_version = "1.0.0" From 917ff2853a739bd5d6694edc86513cccf65d59a7 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 17 Sep 2025 13:39:08 +0200 Subject: [PATCH 09/45] Update dependency androidx.compose:compose-bom to v2025.09.00 (#2401) (cherry picked from commit 9f5c4e03b23dab80051afa458361ce62133febbf) --- gradle/compose.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/compose.versions.toml b/gradle/compose.versions.toml index eeffb288a7..d2bdf8fe5a 100644 --- a/gradle/compose.versions.toml +++ b/gradle/compose.versions.toml @@ -1,5 +1,5 @@ [versions] -compose-bom = "2025.07.00" +compose-bom = "2025.09.00" [libraries] activity = "androidx.activity:activity-compose:1.10.1" From ae79f648507c9299c1d0d798dcd321b34c4c7788 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 17 Sep 2025 13:47:49 +0200 Subject: [PATCH 10/45] Update dependency androidx.work:work-runtime to v2.10.4 (#2497) (cherry picked from commit 94f711ba2a67d0da52ba26978f5c4a103abc7f69) --- gradle/androidx.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/androidx.versions.toml b/gradle/androidx.versions.toml index 4ad5088202..8b9141697c 100644 --- a/gradle/androidx.versions.toml +++ b/gradle/androidx.versions.toml @@ -21,7 +21,7 @@ lifecycle-common = { module = "androidx.lifecycle:lifecycle-common", version.ref lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "lifecycle_version" } lifecycle-runtimektx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycle_version" } -workmanager = "androidx.work:work-runtime:2.10.3" +workmanager = "androidx.work:work-runtime:2.10.4" paging-runtime = { module = "androidx.paging:paging-runtime", version.ref = "paging_version" } paging-compose = { module = "androidx.paging:paging-compose", version.ref = "paging_version" } From 395d2d02c4010f99f767c90fb747cf6b631c2275 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 17 Sep 2025 13:48:09 +0200 Subject: [PATCH 11/45] Update dependency androidx.benchmark:benchmark-macro-junit4 to v1.4.1 (#2496) (cherry picked from commit 6495a2ea430c82a8481b10ef345669d8ff915cac) --- gradle/androidx.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/androidx.versions.toml b/gradle/androidx.versions.toml index 8b9141697c..49dc517e6e 100644 --- a/gradle/androidx.versions.toml +++ b/gradle/androidx.versions.toml @@ -28,7 +28,7 @@ paging-compose = { module = "androidx.paging:paging-compose", version.ref = "pag interpolator = { group = "androidx.interpolator", name = "interpolator", version.ref = "interpolator_version" } -benchmark-macro = "androidx.benchmark:benchmark-macro-junit4:1.4.0" +benchmark-macro = "androidx.benchmark:benchmark-macro-junit4:1.4.1" test-ext = "androidx.test.ext:junit-ktx:1.3.0" test-espresso-core = "androidx.test.espresso:espresso-core:3.7.0" test-uiautomator = "androidx.test.uiautomator:uiautomator:2.3.0" From b63a48e6a94c467488b5d320e7d618bc73ce5574 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 17 Sep 2025 13:51:11 +0200 Subject: [PATCH 12/45] Update dependency com.google.firebase:firebase-bom to v34.2.0 (#2376) (cherry picked from commit 0d926626a1916783b67b3ae8cd2142aa90120e30) --- gradle/libs.versions.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7a9c8374cf..de6fd99351 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,7 +9,7 @@ sqlite = "2.5.2" voyager = "1.1.0-beta03" spotless = "7.2.1" ktlint-core = "1.7.1" -firebase-bom = "33.16.0" +firebase-bom = "34.2.0" markdown = "0.35.0" junit = "5.13.4" @@ -113,7 +113,7 @@ google-services = { id = "com.google.gms.google-services", version = "4.4.3" } aboutLibraries = { id = "com.mikepenz.aboutlibraries.plugin", version.ref = "aboutlib_version" } sqldelight = { id = "app.cash.sqldelight", version.ref = "sqldelight" } moko = { id = "dev.icerock.mobile.multiplatform-resources", version.ref = "moko" } -firebase-crashlytics = { id = "com.google.firebase.crashlytics", version = "3.0.4" } +firebase-crashlytics = { id = "com.google.firebase.crashlytics", version = "3.0.6" } [bundles] okhttp = ["okhttp-core", "okhttp-logging", "okhttp-brotli", "okhttp-dnsoverhttps"] From f46d11f31c1c4af64d3815f8472077f674a88931 Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Wed, 17 Sep 2025 17:41:06 +0600 Subject: [PATCH 13/45] Bump compile and target sdk (cherry picked from commit d3b7f7e55ff6609a2cddf1765205ba35c6c26b83) --- buildSrc/src/main/kotlin/mihon/buildlogic/AndroidConfig.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/kotlin/mihon/buildlogic/AndroidConfig.kt b/buildSrc/src/main/kotlin/mihon/buildlogic/AndroidConfig.kt index aafa18d4f1..044300c457 100644 --- a/buildSrc/src/main/kotlin/mihon/buildlogic/AndroidConfig.kt +++ b/buildSrc/src/main/kotlin/mihon/buildlogic/AndroidConfig.kt @@ -4,8 +4,8 @@ import org.gradle.api.JavaVersion as GradleJavaVersion import org.jetbrains.kotlin.gradle.dsl.JvmTarget as KotlinJvmTarget object AndroidConfig { - const val COMPILE_SDK = 35 - const val TARGET_SDK = 35 + const val COMPILE_SDK = 36 + const val TARGET_SDK = 36 const val MIN_SDK = 26 const val NDK = "27.1.12297006" const val BUILD_TOOLS = "35.0.1" From ca0bd132a1f2f0b927b718ab045e5159e633d054 Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Wed, 17 Sep 2025 18:07:34 +0600 Subject: [PATCH 14/45] Replace `compose-stable-marker` with `compose-runtime-annotation` (cherry picked from commit 4ac9fcd4d3ff2eed59d9c8454d7463b7c9e6dda6) --- domain/build.gradle.kts | 2 +- gradle/compose.versions.toml | 1 + gradle/libs.versions.toml | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/domain/build.gradle.kts b/domain/build.gradle.kts index 6b165d82e2..89bf001213 100644 --- a/domain/build.gradle.kts +++ b/domain/build.gradle.kts @@ -35,7 +35,7 @@ dependencies { api(libs.sqldelight.android.paging) - compileOnly(libs.compose.stablemarker) + compileOnly(compose.runtime.annotation) testImplementation(libs.bundles.test) testImplementation(kotlinx.coroutines.test) diff --git a/gradle/compose.versions.toml b/gradle/compose.versions.toml index d2bdf8fe5a..12e1f1ebbe 100644 --- a/gradle/compose.versions.toml +++ b/gradle/compose.versions.toml @@ -8,6 +8,7 @@ foundation = { module = "androidx.compose.foundation:foundation" } animation = { module = "androidx.compose.animation:animation" } animation-graphics = { module = "androidx.compose.animation:animation-graphics" } runtime = { module = "androidx.compose.runtime:runtime" } +runtime-annotation = { module = "androidx.compose.runtime:runtime-annotation" } ui-tooling = { module = "androidx.compose.ui:ui-tooling" } ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" } ui-util = { module = "androidx.compose.ui:ui-util" } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index de6fd99351..743043be72 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -64,7 +64,6 @@ insetter = "dev.chrisbanes.insetter:insetter:0.6.1" compose-materialmotion = "io.github.fornewid:material-motion-compose-core:2.0.1" compose-webview = "io.github.kevinnzou:compose-webview:0.33.6" compose-grid = "io.woong.compose.grid:grid:1.2.2" -compose-stablemarker = "com.github.skydoves:compose-stable-marker:1.0.7" reorderable = { module = "sh.calvin.reorderable:reorderable", version = "3.0.0" } swipe = "me.saket.swipe:swipe:1.3.0" From d424fdfd1c134a84756a375da03ff250a114b34d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 17 Sep 2025 14:21:50 +0200 Subject: [PATCH 15/45] Update dependency androidx.activity:activity-compose to v1.11.0 (#2499) (cherry picked from commit 060e5b2e2e8ad85886c4d3362ba1ae56fac52f79) --- gradle/compose.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/compose.versions.toml b/gradle/compose.versions.toml index 12e1f1ebbe..f1b9b2d584 100644 --- a/gradle/compose.versions.toml +++ b/gradle/compose.versions.toml @@ -2,7 +2,7 @@ compose-bom = "2025.09.00" [libraries] -activity = "androidx.activity:activity-compose:1.10.1" +activity = "androidx.activity:activity-compose:1.11.0" bom = { group = "androidx.compose", name = "compose-bom", version.ref = "compose-bom" } foundation = { module = "androidx.compose.foundation:foundation" } animation = { module = "androidx.compose.animation:animation" } From 3b0986ae8cc577a1640945e4aa41d7e59341ad0d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 17 Sep 2025 17:29:03 +0200 Subject: [PATCH 16/45] Update dependency androidx.core:core-ktx to v1.17.0 (#2402) (cherry picked from commit 60c66bbd3a12e48bff52257c27d6b868e97da1d7) --- gradle/androidx.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/androidx.versions.toml b/gradle/androidx.versions.toml index 49dc517e6e..626b7b56d1 100644 --- a/gradle/androidx.versions.toml +++ b/gradle/androidx.versions.toml @@ -11,7 +11,7 @@ annotation = "androidx.annotation:annotation:1.9.1" appcompat = "androidx.appcompat:appcompat:1.7.1" biometricktx = "androidx.biometric:biometric-ktx:1.2.0-alpha05" constraintlayout = "androidx.constraintlayout:constraintlayout:2.2.1" -corektx = "androidx.core:core-ktx:1.16.0" +corektx = "androidx.core:core-ktx:1.17.0" splashscreen = "androidx.core:core-splashscreen:1.0.1" recyclerview = "androidx.recyclerview:recyclerview:1.4.0" viewpager = "androidx.viewpager:viewpager:1.1.0" From 96130f5fa0c28692fd4a1b9478a23853684035d9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 18 Sep 2025 11:47:48 +0200 Subject: [PATCH 17/45] Update sqlite to v2.6.0 (#2504) (cherry picked from commit 29e6a2c4a6a32deae4c067c51b7e863b8f8128bb) --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 743043be72..9af873f638 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,7 @@ moko = "0.25.0" okhttp_version = "5.1.0" shizuku_version = "13.1.0" sqldelight = "2.1.0" -sqlite = "2.5.2" +sqlite = "2.6.0" voyager = "1.1.0-beta03" spotless = "7.2.1" ktlint-core = "1.7.1" From 0be4281c29f7ea6cd946c091099210f5e6cc0764 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 18 Sep 2025 11:48:14 +0200 Subject: [PATCH 18/45] Update lifecycle.version to v2.9.4 (#2503) Update dependency androidx.lifecycle:lifecycle-process to v2.9.4 (cherry picked from commit 86d85f74c097b8b52eb6a91887a055c92e1066f5) --- gradle/androidx.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/androidx.versions.toml b/gradle/androidx.versions.toml index 626b7b56d1..1902df7e0b 100644 --- a/gradle/androidx.versions.toml +++ b/gradle/androidx.versions.toml @@ -1,6 +1,6 @@ [versions] agp_version = "8.13.0" -lifecycle_version = "2.9.3" +lifecycle_version = "2.9.4" paging_version = "3.3.6" interpolator_version = "1.0.0" From 20ef7eb0055067277402918ad088437bac81d7d9 Mon Sep 17 00:00:00 2001 From: Guzmazow Date: Fri, 19 Sep 2025 19:35:23 +0200 Subject: [PATCH 19/45] Improve spoofing of `X-Requested-With` header to support newer WebView versions (#2491) (cherry picked from commit 065147472e8e683c47d11f3e00386aba2a7c1bac) --- app/src/main/java/eu/kanade/tachiyomi/App.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt index 3b9d043d5a..74878781bc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/App.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt @@ -216,8 +216,8 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor // Override the value passed as X-Requested-With in WebView requests val stackTrace = Looper.getMainLooper().thread.stackTrace val isChromiumCall = stackTrace.any { trace -> - trace.className.equals("org.chromium.base.BuildInfo", ignoreCase = true) && - setOf("getAll", "getPackageName", "").any { trace.methodName.equals(it, ignoreCase = true) } + trace.className.lowercase() in setOf("org.chromium.base.buildinfo", "org.chromium.base.apkinfo") && + trace.methodName.lowercase() in setOf("getall", "getpackagename", "") } if (isChromiumCall) return WebViewUtil.spoofedPackageName(applicationContext) From d0b77c6f0924cf3ba7512da5082c4320a4aeb7ac Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sun, 5 Oct 2025 08:28:09 +0100 Subject: [PATCH 20/45] Update dependency com.diffplug.spotless:spotless-plugin-gradle to v8 (#2526) (cherry picked from commit d4d18d0898d7fec07e6021e60481948a40b162ad) --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9af873f638..7b84479c57 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,7 +7,7 @@ shizuku_version = "13.1.0" sqldelight = "2.1.0" sqlite = "2.6.0" voyager = "1.1.0-beta03" -spotless = "7.2.1" +spotless = "8.0.0" ktlint-core = "1.7.1" firebase-bom = "34.2.0" markdown = "0.35.0" From d0956e1481c1645cbe1ee7c04dcf7066f7820205 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sun, 5 Oct 2025 08:28:37 +0100 Subject: [PATCH 21/45] Update sqlite to v2.6.1 (#2525) (cherry picked from commit 5637860dd2ed637223014433e1e6005885af10a1) --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7b84479c57..597f0836e7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,7 @@ moko = "0.25.0" okhttp_version = "5.1.0" shizuku_version = "13.1.0" sqldelight = "2.1.0" -sqlite = "2.6.0" +sqlite = "2.6.1" voyager = "1.1.0-beta03" spotless = "8.0.0" ktlint-core = "1.7.1" From b033a3b45b3f18bff18da703ced49a4a92086d24 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sun, 5 Oct 2025 08:28:49 +0100 Subject: [PATCH 22/45] Update dependency androidx.work:work-runtime to v2.10.5 (#2523) (cherry picked from commit d61a41e8192786c8bb958652098a704d79ad5f5d) --- gradle/androidx.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/androidx.versions.toml b/gradle/androidx.versions.toml index 1902df7e0b..c7c8e3d867 100644 --- a/gradle/androidx.versions.toml +++ b/gradle/androidx.versions.toml @@ -21,7 +21,7 @@ lifecycle-common = { module = "androidx.lifecycle:lifecycle-common", version.ref lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "lifecycle_version" } lifecycle-runtimektx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycle_version" } -workmanager = "androidx.work:work-runtime:2.10.4" +workmanager = "androidx.work:work-runtime:2.10.5" paging-runtime = { module = "androidx.paging:paging-runtime", version.ref = "paging_version" } paging-compose = { module = "androidx.paging:paging-compose", version.ref = "paging_version" } From 9fa0d3fad662bcdd1429d52cf981cae9a796085d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sun, 5 Oct 2025 08:29:27 +0100 Subject: [PATCH 23/45] Update kotlin monorepo to v2.2.20 (#2498) (cherry picked from commit 5236d003d27d2aaa8a4baaa8aa4dfc0c8b299fea) --- gradle/kotlinx.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/kotlinx.versions.toml b/gradle/kotlinx.versions.toml index 3dfc512119..905c13b3fa 100644 --- a/gradle/kotlinx.versions.toml +++ b/gradle/kotlinx.versions.toml @@ -1,5 +1,5 @@ [versions] -kotlin_version = "2.2.10" +kotlin_version = "2.2.20" serialization_version = "1.9.0" xml_serialization_version = "0.91.2" From ef92ba82251e9f7622a5453e94129503509a51ed Mon Sep 17 00:00:00 2001 From: Secozzi <49240133+Secozzi@users.noreply.github.com> Date: Sun, 5 Oct 2025 07:36:13 +0000 Subject: [PATCH 24/45] Update markdown to 0.37.0 (#2516) (cherry picked from commit 27a4f6f45c0ba639450428f5f58b1c938fe3032e) --- .../kanade/presentation/anime/components/MarkdownRender.kt | 5 ----- gradle/libs.versions.toml | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/app/src/main/java/eu/kanade/presentation/anime/components/MarkdownRender.kt b/app/src/main/java/eu/kanade/presentation/anime/components/MarkdownRender.kt index 4b9f6e5bc4..1ef2fe60d7 100644 --- a/app/src/main/java/eu/kanade/presentation/anime/components/MarkdownRender.kt +++ b/app/src/main/java/eu/kanade/presentation/anime/components/MarkdownRender.kt @@ -102,13 +102,9 @@ private fun getMarkdownColors(): MarkdownColors { val codeBackground = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.1f) return DefaultMarkdownColors( text = MaterialTheme.colorScheme.onSurface, - codeText = Color.Unspecified, - inlineCodeText = Color.Unspecified, - linkText = Color.Unspecified, codeBackground = codeBackground, inlineCodeBackground = codeBackground, dividerColor = MaterialTheme.colorScheme.outlineVariant, - tableText = Color.Unspecified, tableBackground = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.05f), ) } @@ -139,7 +135,6 @@ private fun getMarkdownTypography(): MarkdownTypography { ordered = MaterialTheme.typography.bodyMedium, bullet = MaterialTheme.typography.bodyMedium, list = MaterialTheme.typography.bodyMedium, - link = link, textLink = TextLinkStyles(style = link.toSpanStyle()), table = MaterialTheme.typography.bodyMedium, ) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 597f0836e7..422b7ee5db 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -10,7 +10,7 @@ voyager = "1.1.0-beta03" spotless = "8.0.0" ktlint-core = "1.7.1" firebase-bom = "34.2.0" -markdown = "0.35.0" +markdown = "0.37.0" junit = "5.13.4" [libraries] From 5e491b58acd86df6b74aba9cd4b9b36ed28247b4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sun, 5 Oct 2025 08:40:48 +0100 Subject: [PATCH 25/45] Update dependency io.mockk:mockk to v1.14.6 (#2549) (cherry picked from commit 607f0ea9cd08c070323c4c1a46efec53dc4b1358) --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 422b7ee5db..39a9c8f1a7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -92,7 +92,7 @@ sqldelight-dialects-sql = { module = "app.cash.sqldelight:sqlite-3-38-dialect", junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit" } junit-platform-launcher = { module = "org.junit.platform:junit-platform-launcher" } kotest-assertions = "io.kotest:kotest-assertions-core:6.0.3" -mockk = "io.mockk:mockk:1.14.5" +mockk = "io.mockk:mockk:1.14.6" voyager-navigator = { module = "cafe.adriel.voyager:voyager-navigator", version.ref = "voyager" } voyager-screenmodel = { module = "cafe.adriel.voyager:voyager-screenmodel", version.ref = "voyager" } From 1bef572da3fe5145a6ad39c60dbd175899227d81 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sun, 5 Oct 2025 08:41:46 +0100 Subject: [PATCH 26/45] Update moko to v0.25.1 (#2550) (cherry picked from commit 04168ecec84a3e2b470468002c05bbe9e5e538b5) --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 39a9c8f1a7..2c70a19edd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] aboutlib_version = "12.2.4" leakcanary = "2.14" -moko = "0.25.0" +moko = "0.25.1" okhttp_version = "5.1.0" shizuku_version = "13.1.0" sqldelight = "2.1.0" From 77df60d5d484af99547c1bcb523e947a9071003a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sun, 5 Oct 2025 08:57:34 +0100 Subject: [PATCH 27/45] Update dependency org.junit.jupiter:junit-jupiter to v6 (#2553) (cherry picked from commit 9a45d248b1545ec192b4d5cff9b0756d0a7a12dd) --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2c70a19edd..70d43fab63 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,7 +11,7 @@ spotless = "8.0.0" ktlint-core = "1.7.1" firebase-bom = "34.2.0" markdown = "0.37.0" -junit = "5.13.4" +junit = "6.0.0" [libraries] desugar = "com.android.tools:desugar_jdk_libs:2.1.5" From 36a3607e1481a5d147c62efc770b93f5e9954720 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sun, 5 Oct 2025 09:58:31 +0200 Subject: [PATCH 28/45] Update GitHub Actions (#2552) (cherry picked from commit 96347e3f762817fbd53023f41956ba7533335c5d) --- .github/workflows/build.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 46847d2e57..0f0bf483e7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,7 +38,7 @@ jobs: - name: Dependency Review if: github.event_name == 'pull_request' - uses: actions/dependency-review-action@595b5aeba73380359d98a5e087f648dbb0edce1b # v4.7.3 + uses: actions/dependency-review-action@56339e523c0409420f6c2c9a2f4292bbb3c07dd3 # v4.8.0 - name: Set up JDK uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0 @@ -47,7 +47,7 @@ jobs: distribution: temurin - name: Set up Gradle - uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4.4.3 + uses: gradle/actions/setup-gradle@748248ddd2a24f49513d8f472f81c3a07d4d50e1 # v4.4.4 - name: Check code format run: ./gradlew spotlessCheck diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f9e9de895c..91d057248f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -53,7 +53,7 @@ jobs: # <-- AM (SYNC_DRIVE) - name: Set up Gradle - uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4.4.3 + uses: gradle/actions/setup-gradle@748248ddd2a24f49513d8f472f81c3a07d4d50e1 # v4.4.4 - name: Build run: ./gradlew assembleRelease -Penable-updater @@ -110,7 +110,7 @@ jobs: Animiru - name: Create GitHub Release - uses: softprops/action-gh-release@6cbd405e2c4e67a21c47fa9e383d020e4e28b836 # v2.3.3 + uses: softprops/action-gh-release@62c96d0c4e8a889135c1f3a25910db8dbe0e85f7 # v2.3.4 with: tag_name: ${{ needs.get_tag.outputs.tag }} name: Animiru ${{ needs.get_tag.outputs.tag }} From 7b8d29be5ae5d68fdcd3b766e1a1d9a1161a227e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sun, 5 Oct 2025 10:47:01 +0200 Subject: [PATCH 29/45] Update gradle/actions action to v5 (#2554) (cherry picked from commit 6cee9112394e25a9d7cb12b70ee909d47037a4ab) --- .github/workflows/build.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0f0bf483e7..4915e9bac7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -47,7 +47,7 @@ jobs: distribution: temurin - name: Set up Gradle - uses: gradle/actions/setup-gradle@748248ddd2a24f49513d8f472f81c3a07d4d50e1 # v4.4.4 + uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 - name: Check code format run: ./gradlew spotlessCheck diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 91d057248f..ba67605e44 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -53,7 +53,7 @@ jobs: # <-- AM (SYNC_DRIVE) - name: Set up Gradle - uses: gradle/actions/setup-gradle@748248ddd2a24f49513d8f472f81c3a07d4d50e1 # v4.4.4 + uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 - name: Build run: ./gradlew assembleRelease -Penable-updater From dbbbff25871b267d93aec05cf598d9718dd1d916 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sun, 5 Oct 2025 09:47:15 +0100 Subject: [PATCH 30/45] Update dependency com.google.firebase:firebase-bom to v34.3.0 (#2508) (cherry picked from commit 1d5bc8d2c2e3cb6df56561782e2e2842af3eaa50) --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 70d43fab63..e7e8875305 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,7 +9,7 @@ sqlite = "2.6.1" voyager = "1.1.0-beta03" spotless = "8.0.0" ktlint-core = "1.7.1" -firebase-bom = "34.2.0" +firebase-bom = "34.3.0" markdown = "0.37.0" junit = "6.0.0" From c4b96010b07a18f384d93d98960d9fa401b1953f Mon Sep 17 00:00:00 2001 From: NGB-Was-Taken <76197326+ngb-was-taken@users.noreply.github.com> Date: Sun, 5 Oct 2025 18:03:45 +0200 Subject: [PATCH 31/45] Fix disabling incognito mode from notification (#2512) Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com> (cherry picked from commit 96e5131358110079587d262d37ec346e10941758) --- app/src/main/java/eu/kanade/tachiyomi/App.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt index 74878781bc..0fae0e0c6e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/App.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt @@ -122,7 +122,7 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor val pendingIntent = PendingIntent.getBroadcast( this@App, 0, - Intent(ACTION_DISABLE_INCOGNITO_MODE), + Intent(ACTION_DISABLE_INCOGNITO_MODE).setPackage(BuildConfig.APPLICATION_ID), PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE, ) setContentIntent(pendingIntent) From 79aafd359e0a8848eda5e627bc1d98d653f06245 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 7 Oct 2025 19:49:25 +0100 Subject: [PATCH 32/45] Update softprops/action-gh-release action to v2.4.0 (#2562) (cherry picked from commit ad6b651b3767313f6f5cd58af6515e598c8eeff1) --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ba67605e44..0ea0beba5c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -110,7 +110,7 @@ jobs: Animiru - name: Create GitHub Release - uses: softprops/action-gh-release@62c96d0c4e8a889135c1f3a25910db8dbe0e85f7 # v2.3.4 + uses: softprops/action-gh-release@aec2ec56f94eb8180ceec724245f64ef008b89f5 # v2.4.0 with: tag_name: ${{ needs.get_tag.outputs.tag }} name: Animiru ${{ needs.get_tag.outputs.tag }} From 961796d47e74eb45193fd6377dce89b79508b5c5 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 7 Oct 2025 19:51:34 +0100 Subject: [PATCH 33/45] Update okhttp monorepo to v5.2.0 (#2564) (cherry picked from commit 1a31c7c7ee31eee19030875d11ec1f31eab895a4) --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e7e8875305..b07b879cb0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ aboutlib_version = "12.2.4" leakcanary = "2.14" moko = "0.25.1" -okhttp_version = "5.1.0" +okhttp_version = "5.2.0" shizuku_version = "13.1.0" sqldelight = "2.1.0" sqlite = "2.6.1" From 6052c4a8493a6b97f9a6d6cd8d433e6b7c5ece13 Mon Sep 17 00:00:00 2001 From: Secozzi Date: Sun, 12 Oct 2025 14:45:22 +0200 Subject: [PATCH 34/45] Fix switch preference --- .../presentation/player/components/SwitchPreference.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/kanade/presentation/player/components/SwitchPreference.kt b/app/src/main/java/eu/kanade/presentation/player/components/SwitchPreference.kt index 1143a33a9a..bf633c8012 100644 --- a/app/src/main/java/eu/kanade/presentation/player/components/SwitchPreference.kt +++ b/app/src/main/java/eu/kanade/presentation/player/components/SwitchPreference.kt @@ -39,7 +39,12 @@ fun SwitchPreference( ) { Row( modifier = modifier - .toggleable(value, true, Role.Switch, onValueChange) + .toggleable( + value = value, + enabled = true, + role = Role.Switch, + onValueChange = onValueChange, + ) .padding(horizontal = MaterialTheme.padding.large, vertical = MaterialTheme.padding.small) .fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween, From c852fb23be9da0dbf91f56b650f8a1c62ec68159 Mon Sep 17 00:00:00 2001 From: Secozzi Date: Sun, 12 Oct 2025 14:45:59 +0200 Subject: [PATCH 35/45] Improve handling of downloads for chapters with same metadata and optionally for OSes that don't support Unicode in filename Co-authored-by: jkim Co-authored-by: fatotak <111342761+fatotak@users.noreply.github.com> Co-authored-by: MajorTanya <39014446+MajorTanya@users.noreply.github.com> Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Co-authored-by: Radon Rosborough <6559064+raxod502@users.noreply.github.com> --- .../interactor/SyncEpisodesWithSource.kt | 5 + .../domain/episode/model/EpisodeFilter.kt | 1 + .../settings/screen/SettingsAdvancedScreen.kt | 5 + .../tachiyomi/data/download/DownloadCache.kt | 9 +- .../data/download/DownloadManager.kt | 9 +- .../data/download/DownloadProvider.kt | 135 +++++++++++++----- .../tachiyomi/data/download/Downloader.kt | 8 +- .../tachiyomi/ui/anime/AnimeScreenModel.kt | 1 + .../ui/library/LibraryScreenModel.kt | 1 + .../tachiyomi/ui/player/ExternalIntents.kt | 1 + .../tachiyomi/ui/player/PlayerViewModel.kt | 2 + .../ui/player/loader/EpisodeLoader.kt | 1 + .../ui/updates/UpdatesScreenModel.kt | 1 + .../util/episode/EpisodeFilterDownloaded.kt | 1 + .../kanade/tachiyomi/util/storage/DiskUtil.kt | 83 +++++++++-- .../data/updates/UpdatesRepositoryImpl.kt | 2 + .../sqldelight/tachiyomi/migrations/135.sqm | 30 ++++ .../sqldelight/tachiyomi/view/updatesView.sq | 1 + .../library/service/LibraryPreferences.kt | 2 + .../updates/model/UpdatesWithRelations.kt | 1 + .../moko-resources/base/strings.xml | 1 + .../moko-resources/base/strings.xml | 2 + 22 files changed, 244 insertions(+), 58 deletions(-) create mode 100644 data/src/main/sqldelight/tachiyomi/migrations/135.sqm diff --git a/app/src/main/java/eu/kanade/domain/episode/interactor/SyncEpisodesWithSource.kt b/app/src/main/java/eu/kanade/domain/episode/interactor/SyncEpisodesWithSource.kt index f13a2a0b45..1b301dffec 100644 --- a/app/src/main/java/eu/kanade/domain/episode/interactor/SyncEpisodesWithSource.kt +++ b/app/src/main/java/eu/kanade/domain/episode/interactor/SyncEpisodesWithSource.kt @@ -114,6 +114,7 @@ class SyncEpisodesWithSource( downloadManager.isEpisodeDownloaded( dbEpisode.name, dbEpisode.scanlator, + dbEpisode.url, // AM (CUSTOM_INFORMATION) --> anime.ogTitle, // <-- AM (CUSTOM_INFORMATION) @@ -123,6 +124,7 @@ class SyncEpisodesWithSource( if (shouldRenameEpisode) { downloadManager.renameEpisode(source, anime, dbEpisode, episode) } + var toChangeEpisode = dbEpisode.copy( name = episode.name, episodeNumber = episode.episodeNumber, @@ -132,9 +134,11 @@ class SyncEpisodesWithSource( // <-- AY sourceOrder = episode.sourceOrder, ) + if (episode.dateUpload != 0L) { toChangeEpisode = toChangeEpisode.copy(dateUpload = episode.dateUpload) } + // AY --> if (!toChangeEpisode.fillermark) { toChangeEpisode = toChangeEpisode.copy( @@ -147,6 +151,7 @@ class SyncEpisodesWithSource( ) } // <-- AY + updatedEpisodes.add(toChangeEpisode) } } diff --git a/app/src/main/java/eu/kanade/domain/episode/model/EpisodeFilter.kt b/app/src/main/java/eu/kanade/domain/episode/model/EpisodeFilter.kt index 378fcdee55..38b53df389 100644 --- a/app/src/main/java/eu/kanade/domain/episode/model/EpisodeFilter.kt +++ b/app/src/main/java/eu/kanade/domain/episode/model/EpisodeFilter.kt @@ -32,6 +32,7 @@ fun List.applyFilters(anime: Anime, downloadManager: DownloadManager): val downloaded = downloadManager.isEpisodeDownloaded( episode.name, episode.scanlator, + episode.url, // AM (CUSTOM_INFORMATION) --> anime.ogTitle, // <-- AM (CUSTOM_INFORMATION) diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt index cd23db9b50..85209b1d6e 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt @@ -302,6 +302,11 @@ object SettingsAdvancedScreen : SearchableSettings { title = stringResource(AMMR.strings.am_pref_update_library_anime_titles), subtitle = stringResource(AMMR.strings.am_pref_update_library_anime_titles_summary), ), + Preference.PreferenceItem.SwitchPreference( + preference = libraryPreferences.disallowNonAsciiFilenames(), + title = stringResource(MR.strings.pref_disallow_non_ascii_filenames), + subtitle = stringResource(AMMR.strings.am_pref_disallow_non_ascii_filenames_details), + ), ), ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt index 69c89148b7..25322357eb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt @@ -129,6 +129,7 @@ class DownloadCache( * * @param episodeName the name of the episode to query. * @param episodeScanlator scanlator of the episode to query + * @param episodeUrl the url of the chapter to query * @param animeTitle the title of the anime to query. * @param sourceId the id of the source of the episode. * @param skipCache whether to skip the directory cache and check in the filesystem. @@ -136,13 +137,14 @@ class DownloadCache( fun isEpisodeDownloaded( episodeName: String, episodeScanlator: String?, + episodeUrl: String, animeTitle: String, sourceId: Long, skipCache: Boolean, ): Boolean { if (skipCache) { val source = sourceManager.getOrStub(sourceId) - return provider.findEpisodeDir(episodeName, episodeScanlator, animeTitle, source) != null + return provider.findEpisodeDir(episodeName, episodeScanlator, episodeUrl, animeTitle, source) != null } renewCache() @@ -154,6 +156,7 @@ class DownloadCache( return provider.getValidEpisodeDirNames( episodeName, episodeScanlator, + episodeUrl, ).any { it in animeDir.episodeDirs } } } @@ -271,7 +274,7 @@ class DownloadCache( // AM (CUSTOM_INFORMATION) --> val animeDir = sourceDir.animeDirs[provider.getAnimeDirName(anime.ogTitle)] ?: return // <-- AM (CUSTOM_INFORMATION) - provider.getValidEpisodeDirNames(episode.name, episode.scanlator).forEach { + provider.getValidEpisodeDirNames(episode.name, episode.scanlator, episode.url).forEach { if (it in animeDir.episodeDirs) { animeDir.episodeDirs -= it } @@ -294,7 +297,7 @@ class DownloadCache( val animeDir = sourceDir.animeDirs[provider.getAnimeDirName(anime.ogTitle)] ?: return // <-- AM (CUSTOM_INFORMATION) episodes.forEach { episode -> - provider.getValidEpisodeDirNames(episode.name, episode.scanlator).forEach { + provider.getValidEpisodeDirNames(episode.name, episode.scanlator, episode.url).forEach { if (it in animeDir.episodeDirs) { animeDir.episodeDirs -= it } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt index ecc7a5e875..9523c591d3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt @@ -177,7 +177,7 @@ class DownloadManager( */ fun buildVideo(source: AnimeSource, anime: Anime, episode: Episode): Video { // AM (CUSTOM_INFORMATION) --> - val episodeDir = provider.findEpisodeDir(episode.name, episode.scanlator, anime.ogTitle, source) + val episodeDir = provider.findEpisodeDir(episode.name, episode.scanlator, episode.url, anime.ogTitle, source) // <-- AM (CUSTOM_INFORMATION) // AY --> val file = episodeDir?.listFiles().orEmpty() @@ -209,11 +209,12 @@ class DownloadManager( fun isEpisodeDownloaded( episodeName: String, episodeScanlator: String?, + episodeUrl: String, animeTitle: String, sourceId: Long, skipCache: Boolean = false, ): Boolean { - return cache.isEpisodeDownloaded(episodeName, episodeScanlator, animeTitle, sourceId, skipCache) + return cache.isEpisodeDownloaded(episodeName, episodeScanlator, episodeUrl, animeTitle, sourceId, skipCache) } /** @@ -422,7 +423,7 @@ class DownloadManager( * @param newEpisode the target episode with the new name. */ suspend fun renameEpisode(source: AnimeSource, anime: Anime, oldEpisode: Episode, newEpisode: Episode) { - val oldNames = provider.getValidEpisodeDirNames(oldEpisode.name, oldEpisode.scanlator) + val oldNames = provider.getValidEpisodeDirNames(oldEpisode.name, oldEpisode.scanlator, oldEpisode.url) // AM (CUSTOM_INFORMATION) --> val animeDir = provider.getAnimeDir(anime.ogTitle, source).getOrElse { e -> logcat(LogPriority.ERROR, e) { "Anime download folder doesn't exist. Skipping renaming after source sync" } @@ -435,7 +436,7 @@ class DownloadManager( .mapNotNull { animeDir.findFile(it) } .firstOrNull() ?: return - val newName = provider.getEpisodeDirName(newEpisode.name, newEpisode.scanlator) + val newName = provider.getEpisodeDirName(newEpisode.name, newEpisode.scanlator, newEpisode.url) if (oldDownload.name == newName) return if (oldDownload.renameTo(newName)) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt index fafd6892f0..2108033510 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt @@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.data.download import android.content.Context import com.hippo.unifile.UniFile import eu.kanade.tachiyomi.animesource.AnimeSource +import eu.kanade.tachiyomi.util.lang.Hash.md5 import eu.kanade.tachiyomi.util.storage.DiskUtil import eu.kanade.tachiyomi.util.storage.size import logcat.LogPriority @@ -11,6 +12,7 @@ import tachiyomi.core.common.storage.displayablePath import tachiyomi.core.common.util.system.logcat import tachiyomi.domain.anime.model.Anime import tachiyomi.domain.episode.model.Episode +import tachiyomi.domain.library.service.LibraryPreferences import tachiyomi.domain.storage.service.StorageManager import tachiyomi.i18n.MR import tachiyomi.source.local.io.LocalSourceFileSystem @@ -28,6 +30,7 @@ import java.io.IOException class DownloadProvider( private val context: Context, private val storageManager: StorageManager = Injekt.get(), + private val libraryPreferences: LibraryPreferences = Injekt.get(), // AM (FILE_SIZE) --> private val localFileSystem: LocalSourceFileSystem = Injekt.get(), // <-- AM (FILE_SIZE) @@ -99,17 +102,19 @@ class DownloadProvider( * * @param episodeName the name of the episode to query. * @param episodeScanlator scanlator of the episode to query + * @param episodeUrl url of the episode to query. * @param animeTitle the title of the anime to query. * @param source the source of the episode. */ fun findEpisodeDir( episodeName: String, episodeScanlator: String?, + episodeUrl: String, animeTitle: String, source: AnimeSource, ): UniFile? { val animeDir = findAnimeDir(animeTitle, source) - return getValidEpisodeDirNames(episodeName, episodeScanlator).asSequence() + return getValidEpisodeDirNames(episodeName, episodeScanlator, episodeUrl).asSequence() .mapNotNull { animeDir?.findFile(it) } .firstOrNull() } @@ -126,7 +131,7 @@ class DownloadProvider( val animeDir = findAnimeDir(anime.ogTitle, source) ?: return null to emptyList() // <-- AM (CUSTOM_INFORMATION) return animeDir to episodes.mapNotNull { episode -> - getValidEpisodeDirNames(episode.name, episode.scanlator).asSequence() + getValidEpisodeDirNames(episode.name, episode.scanlator, episode.url).asSequence() .mapNotNull { animeDir.findFile(it) } .firstOrNull() } @@ -138,7 +143,10 @@ class DownloadProvider( * @param source the source to query. */ fun getSourceDirName(source: AnimeSource): String { - return DiskUtil.buildValidFilename(source.toString()) + return DiskUtil.buildValidFilename( + source.toString(), + disallowNonAscii = libraryPreferences.disallowNonAsciiFilenames().get(), + ) } /** @@ -147,23 +155,87 @@ class DownloadProvider( * @param animeTitle the title of the anime to query. */ fun getAnimeDirName(animeTitle: String): String { - return DiskUtil.buildValidFilename(animeTitle) + return DiskUtil.buildValidFilename( + animeTitle, + disallowNonAscii = libraryPreferences.disallowNonAsciiFilenames().get(), + ) } /** * Returns the episode directory name for an episode. * * @param episodeName the name of the episode to query. - * @param episodeScanlator scanlator of the episode to query + * @param episodeScanlator scanlator of the episode to query. + * @param episodeUrl url of the episode to query. */ - fun getEpisodeDirName(episodeName: String, episodeScanlator: String?): String { - val newEpisodeName = sanitizeEpisodeName(episodeName) - return DiskUtil.buildValidFilename( + fun getEpisodeDirName( + episodeName: String, + episodeScanlator: String?, + episodeUrl: String, + disallowNonAsciiFilenames: Boolean = libraryPreferences.disallowNonAsciiFilenames().get(), + ): String { + var dirName = sanitizeEpisodeName(episodeName) + if (!episodeScanlator.isNullOrBlank()) { + dirName = episodeScanlator + "_" + dirName + } + // Subtract 7 bytes for hash and underscore, 4 bytes for .mkv + dirName = DiskUtil.buildValidFilename(dirName, DiskUtil.MAX_FILE_NAME_BYTES - 11, disallowNonAsciiFilenames) + dirName += "_" + md5(episodeUrl).take(6) + return dirName + } + + /** + * Returns list of names that might have been previously used as + * the directory name for an episode. + * Add to this list if naming pattern ever changes. + * + * @param episodeName the name of the episode to query. + * @param episodeScanlator scanlator of the episode to query. + * @param episodeUrl url of the episode to query. + */ + private fun getLegacyEpisodeDirNames( + episodeName: String, + episodeScanlator: String?, + episodeUrl: String, + ): List { + // AY --> + val oldEpisodeName = DiskUtil.buildValidFilename( + when { + episodeScanlator != null -> "${episodeScanlator}_$episodeName" + else -> episodeName + }, + ) + // <-- AY + + val sanitizedEpisodeName = sanitizeEpisodeName(episodeName) + val episodeNameV1 = DiskUtil.buildValidFilename( when { - !episodeScanlator.isNullOrBlank() -> "${episodeScanlator}_$newEpisodeName" - else -> newEpisodeName + !episodeScanlator.isNullOrBlank() -> "${episodeScanlator}_$sanitizedEpisodeName" + else -> sanitizedEpisodeName }, ) + + // Get the filename that would be generated if the user were + // using the other value for the disallow non-ASCII + // filenames setting. This ensures that episodes downloaded + // before the user changed the setting can still be found. + val otherEpisodeDirName = + getEpisodeDirName( + episodeName, + episodeScanlator, + episodeUrl, + !libraryPreferences.disallowNonAsciiFilenames().get(), + ) + + return buildList(3) { + // Episode name without hash (unable to handle duplicate + // episode names) + // AY --> + add(oldEpisodeName) + // <-- AY + add(episodeNameV1) + add(otherEpisodeDirName) + } } /** @@ -177,45 +249,29 @@ class DownloadProvider( } } - // AY --> - - /** - * Returns the episode directory name for an episode. - * - * @param episodeName the name of the episode to query. - * @param episodeScanlator scanlator of the episode to query - */ - fun getOldEpisodeDirName(episodeName: String, episodeScanlator: String?): String { - return DiskUtil.buildValidFilename( - when { - episodeScanlator != null -> "${episodeScanlator}_$episodeName" - else -> episodeName - }, - ) - } - // <-- AY - fun isEpisodeDirNameChanged(oldEpisode: Episode, newEpisode: Episode): Boolean { - return oldEpisode.name != newEpisode.name || - oldEpisode.scanlator?.takeIf { it.isNotBlank() } != newEpisode.scanlator?.takeIf { it.isNotBlank() } + return getEpisodeDirName(oldEpisode.name, oldEpisode.scanlator, oldEpisode.url) != + getEpisodeDirName(newEpisode.name, newEpisode.scanlator, newEpisode.url) } /** * Returns valid downloaded episode directory names. * * @param episodeName the name of the episode to query. - * @param episodeScanlator scanlator of the episode to query + * @param episodeScanlator scanlator of the episode to query. + * @param episodeUrl url of the episode to query. */ - fun getValidEpisodeDirNames(episodeName: String, episodeScanlator: String?): List { - val episodeDirName = getEpisodeDirName(episodeName, episodeScanlator) - // AY --> - val oldEpisodeDirName = getOldEpisodeDirName(episodeName, episodeScanlator) - return listOf(episodeDirName, oldEpisodeDirName) - // <-- AY + fun getValidEpisodeDirNames(episodeName: String, episodeScanlator: String?, episodeUrl: String): List { + val episodeDirName = getEpisodeDirName(episodeName, episodeScanlator, episodeUrl) + val legacyEpisodeDirNames = getLegacyEpisodeDirNames(episodeName, episodeScanlator, episodeUrl) + + return buildList { + add(episodeDirName) + addAll(legacyEpisodeDirNames) + } } // AM (FILE_SIZE) --> - /** * Returns an episode file size in bytes. * Returns null if the episode is not found in expected location @@ -237,7 +293,8 @@ class DownloadProvider( val (animeDirName, episodeDirName) = episodeUrl?.split('/', limit = 2) ?: return null localFileSystem.getBaseDirectory()?.findFile(animeDirName)?.findFile(episodeDirName)?.size() } else { - findEpisodeDir(episodeName, episodeScanlator, animeTitle, animeSource)?.size() + val episodeUrl = episodeUrl ?: return null + findEpisodeDir(episodeName, episodeScanlator, episodeUrl, animeTitle, animeSource)?.size() } } // <-- AM (FILE_SIZE) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt index acaa10e941..c2f68fc648 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt @@ -288,7 +288,7 @@ class Downloader( val episodesToQueue = episodes.asSequence() // Filter out those already downloaded. // AM (CUSTOM_INFORMATION) --> - .filter { provider.findEpisodeDir(it.name, it.scanlator, anime.ogTitle, source) == null } + .filter { provider.findEpisodeDir(it.name, it.scanlator, it.url, anime.ogTitle, source) == null } // <-- AM (CUSTOM_INFORMATION) // Add episodes to queue from the start. .sortedByDescending { it.sourceOrder } @@ -353,7 +353,11 @@ class Downloader( return } - val episodeDirname = provider.getEpisodeDirName(download.episode.name, download.episode.scanlator) + val episodeDirname = provider.getEpisodeDirName( + download.episode.name, + download.episode.scanlator, + download.episode.url, + ) val tmpDir = animeDir.createDirectory(episodeDirname + TMP_DIR_SUFFIX)!! try { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/anime/AnimeScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/anime/AnimeScreenModel.kt index dccd7621a3..ed7d610bee 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/anime/AnimeScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/anime/AnimeScreenModel.kt @@ -717,6 +717,7 @@ class AnimeScreenModel( downloadManager.isEpisodeDownloaded( episode.name, episode.scanlator, + episode.url, // AM (CUSTOM_INFORMATION) --> anime.ogTitle, // <-- AM (CUSTOM_INFORMATION) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt index e515942451..ef9b8c21cc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt @@ -577,6 +577,7 @@ class LibraryScreenModel( downloadManager.isEpisodeDownloaded( episode.name, episode.scanlator, + episode.url, // AM (CUSTOM_INFORMATION) --> anime.ogTitle, // <-- AM (CUSTOM_INFORMATION), diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/player/ExternalIntents.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/player/ExternalIntents.kt index 18e7b610e1..eca1ce76fa 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/player/ExternalIntents.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/player/ExternalIntents.kt @@ -157,6 +157,7 @@ class ExternalIntents { downloadManager.isEpisodeDownloaded( episodeName = episode.name, episodeScanlator = episode.scanlator, + episodeUrl = episode.url, // AM (CUSTOM_INFORMATION) --> animeTitle = anime.ogTitle, // <-- AM (CUSTOM_INFORMATION) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/player/PlayerViewModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/player/PlayerViewModel.kt index 2daa36cff0..defab558ad 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/player/PlayerViewModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/player/PlayerViewModel.kt @@ -1083,6 +1083,7 @@ class PlayerViewModel @JvmOverloads constructor( !downloadManager.isEpisodeDownloaded( it.name, it.scanlator, + it.url, // AM (CUSTOM_INFORMATION) --> anime.ogTitle, // <-- AM (CUSTOM_INFORMATION) @@ -1092,6 +1093,7 @@ class PlayerViewModel @JvmOverloads constructor( downloadManager.isEpisodeDownloaded( it.name, it.scanlator, + it.url, // AM (CUSTOM_INFORMATION) --> anime.ogTitle, // <-- AM (CUSTOM_INFORMATION) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/player/loader/EpisodeLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/player/loader/EpisodeLoader.kt index 36e699d5eb..96fc015213 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/player/loader/EpisodeLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/player/loader/EpisodeLoader.kt @@ -50,6 +50,7 @@ class EpisodeLoader { return downloadManager.isEpisodeDownloaded( episode.name, episode.scanlator, + episode.url, // AM (CUSTOM_INFORMATION) --> anime.ogTitle, // <-- AM (CUSTOM_INFORMATION) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt index b328e9c69e..e1558ac0bb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt @@ -115,6 +115,7 @@ class UpdatesScreenModel( val downloaded = downloadManager.isEpisodeDownloaded( update.episodeName, update.scanlator, + update.episodeUrl, // AM (CUSTOM_INFORMATION) --> update.ogAnimeTitle, // <-- AM (CUSTOM_INFORMATION) diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/episode/EpisodeFilterDownloaded.kt b/app/src/main/java/eu/kanade/tachiyomi/util/episode/EpisodeFilterDownloaded.kt index 26bcdd8593..16e8cf129f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/episode/EpisodeFilterDownloaded.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/episode/EpisodeFilterDownloaded.kt @@ -19,6 +19,7 @@ fun List.filterDownloaded(anime: Anime): List { downloadCache.isEpisodeDownloaded( it.name, it.scanlator, + it.url, // AM (CUSTOM_INFORMATION) --> anime.ogTitle, // <-- AM (CUSTOM_INFORMATION) diff --git a/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/storage/DiskUtil.kt b/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/storage/DiskUtil.kt index 976bafdf09..a30d50fbd7 100644 --- a/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/storage/DiskUtil.kt +++ b/core/common/src/main/kotlin/eu/kanade/tachiyomi/util/storage/DiskUtil.kt @@ -9,6 +9,9 @@ import androidx.core.content.ContextCompat import com.hippo.unifile.UniFile import eu.kanade.tachiyomi.util.lang.Hash import java.io.File +import java.nio.ByteBuffer +import java.nio.CharBuffer +import java.nio.charset.CodingErrorAction object DiskUtil { @@ -102,26 +105,84 @@ object DiskUtil { } /** - * Mutate the given filename to make it valid for a FAT filesystem, - * replacing any invalid characters with "_". This method doesn't allow hidden files (starting - * with a dot), but you can manually add it later. + * Transform a filename fragment to make it safe to use on almost + * all commonly used filesystems. You can pass an entire filename, + * or just part of one, in case you want a specific part of a long + * filename to be truncated, rather than the end of it. + * + * Characters that are potentially unsafe for some filesystems are + * replaced with underscores. This includes the standard ones from + * https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file + * but does allow any other valid Unicode code point. + * + * Excessively long filenames are truncated, by default to 240 + * bytes. Note that the truncation is based on bytes rather than + * characters (code points), because this is what is relevant to + * filesystem restrictions in most cases. + * + * Leading periods are stripped, to avoid the creation of hidden + * files by default. If a hidden file is desired, a period can be + * prepended to the return value from this function. + * + * If the optional argument disallowNonAscii is set to true, + * then ANYTHING outside the ASCII range is replaced not with underscores, + * but with its hexadecimal encoding. This is to make it so that distinct + * non-English titles of things remain distinct, since not all + * places where this function is used also take care of + * disambiguation. + * + * We could instead replace only non-ASCII characters known to + * be problematic, but so far nobody with a non-Unicode-compliant + * device has been able to provide either directions to reproduce + * their issue nor any documentation or tests that would allow us + * to determine which characters are problems and which are not. */ - fun buildValidFilename(origName: String): String { + fun buildValidFilename( + origName: String, + maxBytes: Int = MAX_FILE_NAME_BYTES, + disallowNonAscii: Boolean = false, + ): String { val name = origName.trim('.', ' ') if (name.isEmpty()) { return "(invalid)" } val sb = StringBuilder(name.length) name.forEach { c -> - if (isValidFatFilenameChar(c)) { + if (disallowNonAscii && c >= 0x80.toChar()) { + sb.append( + c.toString().toByteArray(Charsets.UTF_8).toHexString( + HexFormat { + upperCase = false + }, + ), + ) + } else if (isValidFatFilenameChar(c)) { sb.append(c) } else { sb.append('_') } } - // Even though vfat allows 255 UCS-2 chars, we might eventually write to - // ext4 through a FUSE layer, so use that limit minus 15 reserved characters. - return sb.toString().take(240) + return truncateToLength(sb.toString(), maxBytes) + } + + /** + * Truncate a string to a maximum length, while maintaining valid Unicode encoding. + */ + fun truncateToLength(s: String, maxBytes: Int): String { + val charset = Charsets.UTF_8 + val decoder = charset.newDecoder() + val sba = s.toByteArray(charset) + if (sba.size <= maxBytes) { + return s + } + // Ensure truncation by having byte buffer = maxBytes + val bb = ByteBuffer.wrap(sba, 0, maxBytes) + val cb = CharBuffer.allocate(maxBytes) + // Ignore an incomplete character + decoder.onMalformedInput(CodingErrorAction.IGNORE) + decoder.decode(bb, cb, true) + decoder.flush(cb) + return String(cb.array(), 0, cb.position()) } /** @@ -139,6 +200,8 @@ object DiskUtil { const val NOMEDIA_FILE = ".nomedia" - // Safe theoretical max filename size is 255 bytes and 1 char = 2-4 bytes (UTF-8) - const val MAX_FILE_NAME_BYTES = 250 + // Safe theoretical max filename size is 255 bytes and 1 char = 2-4 bytes (UTF-8). + // To allow for writing to ext4 through a FUSE layer in the future, also subtract 15 + // reserved characters. + const val MAX_FILE_NAME_BYTES = 240 } diff --git a/data/src/main/java/tachiyomi/data/updates/UpdatesRepositoryImpl.kt b/data/src/main/java/tachiyomi/data/updates/UpdatesRepositoryImpl.kt index 466a68be32..df17aeb3a5 100644 --- a/data/src/main/java/tachiyomi/data/updates/UpdatesRepositoryImpl.kt +++ b/data/src/main/java/tachiyomi/data/updates/UpdatesRepositoryImpl.kt @@ -52,6 +52,7 @@ class UpdatesRepositoryImpl( episodeId: Long, episodeName: String, scanlator: String?, + episodeUrl: String, seen: Boolean, bookmark: Boolean, // AY --> @@ -75,6 +76,7 @@ class UpdatesRepositoryImpl( episodeId = episodeId, episodeName = episodeName, scanlator = scanlator, + episodeUrl = episodeUrl, seen = seen, bookmark = bookmark, // AY --> diff --git a/data/src/main/sqldelight/tachiyomi/migrations/135.sqm b/data/src/main/sqldelight/tachiyomi/migrations/135.sqm new file mode 100644 index 0000000000..c2d82a08a2 --- /dev/null +++ b/data/src/main/sqldelight/tachiyomi/migrations/135.sqm @@ -0,0 +1,30 @@ +-- ADd episode urls to updates view +DROP VIEW IF EXISTS updatesView; +CREATE VIEW updatesView AS +SELECT + animes._id AS animeId, + animes.title AS animeTitle, + episodes._id AS episodeId, + episodes.name AS episodeName, + episodes.scanlator, + episodes.url AS episodeUrl, + episodes.seen, + episodes.bookmark, + -- AY --> + episodes.fillermark, + -- <-- AY + episodes.last_second_seen, + -- AY --> + episodes.total_seconds AS totalSeconds, + -- <-- AY + animes.source, + animes.favorite, + animes.thumbnail_url AS thumbnailUrl, + animes.cover_last_modified AS coverLastModified, + episodes.date_upload AS dateUpload, + episodes.date_fetch AS datefetch +FROM animes JOIN episodes +ON animes._id = episodes.anime_id +WHERE favorite = 1 +AND date_fetch > date_added +ORDER BY date_fetch DESC; diff --git a/data/src/main/sqldelight/tachiyomi/view/updatesView.sq b/data/src/main/sqldelight/tachiyomi/view/updatesView.sq index c5a51c0213..bb4248b60f 100644 --- a/data/src/main/sqldelight/tachiyomi/view/updatesView.sq +++ b/data/src/main/sqldelight/tachiyomi/view/updatesView.sq @@ -5,6 +5,7 @@ SELECT episodes._id AS episodeId, episodes.name AS episodeName, episodes.scanlator, + episodes.url AS episodeUrl, episodes.seen, episodes.bookmark, -- AY --> diff --git a/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt b/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt index 907c0b96fd..cf3a0c87bf 100644 --- a/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt +++ b/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt @@ -329,6 +329,8 @@ class LibraryPreferences( fun updateAnimeTitles() = preferenceStore.getBoolean("pref_update_library_anime_titles", false) + fun disallowNonAsciiFilenames() = preferenceStore.getBoolean("disallow_non_ascii_filenames", false) + // endregion enum class EpisodeSwipeAction { diff --git a/domain/src/main/java/tachiyomi/domain/updates/model/UpdatesWithRelations.kt b/domain/src/main/java/tachiyomi/domain/updates/model/UpdatesWithRelations.kt index 4adf1058ca..fc6dafd460 100644 --- a/domain/src/main/java/tachiyomi/domain/updates/model/UpdatesWithRelations.kt +++ b/domain/src/main/java/tachiyomi/domain/updates/model/UpdatesWithRelations.kt @@ -12,6 +12,7 @@ data class UpdatesWithRelations( val episodeId: Long, val episodeName: String, val scanlator: String?, + val episodeUrl: String, val seen: Boolean, val bookmark: Boolean, // AY --> diff --git a/i18n-animiru/src/commonMain/moko-resources/base/strings.xml b/i18n-animiru/src/commonMain/moko-resources/base/strings.xml index b494da9b7d..06732059e5 100644 --- a/i18n-animiru/src/commonMain/moko-resources/base/strings.xml +++ b/i18n-animiru/src/commonMain/moko-resources/base/strings.xml @@ -57,6 +57,7 @@ Match based on episode number No episodes found, this entry cannot be used for migration No seasons found, this entry cannot be used for migration + Ensures compatibility with certain storage media that don't support Unicode. When this is enabled, you'll need to manually rename source and anime folders by replacing non-ASCII characters with their lowercase UTF-8 hexadecimal representations. Episode files don't need to be renamed. Mismatched fetch type diff --git a/i18n/src/commonMain/moko-resources/base/strings.xml b/i18n/src/commonMain/moko-resources/base/strings.xml index d10e9ec28b..2ac6aff94b 100644 --- a/i18n/src/commonMain/moko-resources/base/strings.xml +++ b/i18n/src/commonMain/moko-resources/base/strings.xml @@ -318,6 +318,8 @@ After fetching new chapter Hide missing chapter indicators + Disallow non-ASCII filenames + Ensures compatibility with certain storage media that don't support Unicode. When this is enabled, you'll need to manually rename source and manga folders by replacing non-ASCII characters with their lowercase UTF-8 hexadecimal representations. Chapter files don't need to be renamed. Multi From 5e0610f87a83d908b39d60624a1d8d485fa3cd18 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 10 Oct 2025 15:05:51 +0100 Subject: [PATCH 36/45] Update okhttp monorepo to v5.2.1 (#2577) (cherry picked from commit 57a0ab67112d1966c00d7ec433a2cff70064495e) --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b07b879cb0..4792a6dc0f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ aboutlib_version = "12.2.4" leakcanary = "2.14" moko = "0.25.1" -okhttp_version = "5.2.0" +okhttp_version = "5.2.1" shizuku_version = "13.1.0" sqldelight = "2.1.0" sqlite = "2.6.1" From 484fa06d7e4eb5f1a53fb96c77f34c82bf64c25b Mon Sep 17 00:00:00 2001 From: Secozzi Date: Sun, 12 Oct 2025 16:01:39 +0200 Subject: [PATCH 37/45] run spotlessApply --- .../java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt index 2108033510..ca9c902c0a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt @@ -272,6 +272,7 @@ class DownloadProvider( } // AM (FILE_SIZE) --> + /** * Returns an episode file size in bytes. * Returns null if the episode is not found in expected location From 5d9d3dd8a33e9d750c19abca082a1ae7347dd4e9 Mon Sep 17 00:00:00 2001 From: Secozzi Date: Sun, 12 Oct 2025 16:04:00 +0200 Subject: [PATCH 38/45] chore: changelog --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f6fa816733..0703fdd8cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,7 @@ The format is a modified version of [Keep a Changelog](https://keepachangelog.co - `Fixed` - for any bug fixes. - `Other` - for technical stuff. -## [Unreleased] +## [v0.19.0.0] - 2025-10-12 ### Changed - Remove circular edges, add background and sliding animations ([@Quickdev](https://github.com/quickdesh)) ([`8e45259`](https://github.com/quickdesh/Animiru/commit/8e45259)) - Use filter chips in recents tab ([@Quickdev](https://github.com/quickdesh)) ([`38c9c52`](https://github.com/quickdesh/Animiru/commit/38c9c52)) @@ -21,7 +21,7 @@ The format is a modified version of [Keep a Changelog](https://keepachangelog.co - Fix jellyfin enhanced tracker for newer versions of the extension ([@Secozzi](https://github.com/Secozzi)) ([#107](https://github.com/quickdesh/Animiru/pull/107)) ### Other -- Merged from Aniyomi and Mihon ([@Secozzi](https://github.com/Secozzi)) ([#102](https://github.com/quickdesh/Animiru/pull/102)) +- Merged from Aniyomi and Mihon ([@Secozzi](https://github.com/Secozzi)) ([#102](https://github.com/quickdesh/Animiru/pull/102) [#110](https://github.com/quickdesh/Animiru/pull/110)) - Add support for extension lib 16 ([@Secozzi](https://github.com/Secozzi)) ([#104](https://github.com/quickdesh/Animiru/pull/104)) ## [v0.17.2.0] - 2024-07-27 From 3119e68d2b529445c83a76e11628839ed70b1133 Mon Sep 17 00:00:00 2001 From: Secozzi Date: Thu, 16 Oct 2025 20:30:19 +0200 Subject: [PATCH 39/45] fix: source Seasons/Hosters feature detection Co-authored-by: hollow <35398794+hollowshiroyuki@users.noreply.github.com> --- .../tachiyomi/ui/anime/AnimeScreenModel.kt | 15 ++--------- .../ui/player/loader/EpisodeLoader.kt | 25 ++++++++++++++----- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/anime/AnimeScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/anime/AnimeScreenModel.kt index ed7d610bee..9cb4eef918 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/anime/AnimeScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/anime/AnimeScreenModel.kt @@ -279,19 +279,8 @@ class AnimeScreenModel( screenModelScope.launchIO { // AY --> - val oldAnime = getAnimeAndEpisodesAndSeasons.awaitAnime(animeId) - - // TODO(16): Remove checks - val source = sourceManager.getOrStub(oldAnime.source) - val anime = if (source.javaClass.declaredMethods.any { - it.name in - listOf("getSeasonList", "seasonListRequest", "seasonListParse") - } - ) { - oldAnime - } else { - oldAnime.copy(fetchType = FetchType.Episodes) - } + val anime = getAnimeAndEpisodesAndSeasons.awaitAnime(animeId) + val source = sourceManager.getOrStub(anime.source) val episodes = if (anime.fetchType == FetchType.Seasons) { emptyList() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/player/loader/EpisodeLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/player/loader/EpisodeLoader.kt index 96fc015213..b67f3ccd92 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/player/loader/EpisodeLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/player/loader/EpisodeLoader.kt @@ -59,6 +59,23 @@ class EpisodeLoader { ) } + private fun checkHasHosters(source: AnimeHttpSource): Boolean { + var current: Class = source.javaClass + while (true) { + if (current == AnimeHttpSource::class.java) { + return false + } + if (current.declaredMethods.any { + it.name in + listOf("getHosterList", "hosterListRequest", "hosterListParse") + } + ) { + return true + } + current = current.superclass ?: return false + } + } + /** * Returns a list of hosters when the [episode] is online. * @@ -66,12 +83,8 @@ class EpisodeLoader { * @param source the online source of the episode. */ private suspend fun getHostersOnHttp(episode: Episode, source: AnimeHttpSource): List { - // TODO(1.6): Remove else block when dropping support for ext lib <1.6 - return if (source.javaClass.declaredMethods.any { - it.name in - listOf("getHosterList", "hosterListRequest", "hosterListParse") - } - ) { + // TODO(16): Remove else block when dropping support for ext lib <1.6 + return if (checkHasHosters(source)) { source.getHosterList(episode.toSEpisode()) .let { source.run { it.sortHosters() } } } else { From 891f34f507a72b016584b9be818ea9d93ee17619 Mon Sep 17 00:00:00 2001 From: Secozzi Date: Thu, 16 Oct 2025 20:36:22 +0200 Subject: [PATCH 40/45] chore: remove unused imports --- app/src/main/java/eu/kanade/domain/base/BasePreferences.kt | 1 - .../main/java/eu/kanade/presentation/anime/AnimeScreen.kt | 2 -- .../eu/kanade/presentation/anime/EpisodeSettingsDialog.kt | 1 - .../presentation/anime/components/AnimeEpisodeListItem.kt | 7 ------- .../presentation/anime/components/AnimeSeasonListItem.kt | 2 -- .../kanade/presentation/anime/components/MarkdownRender.kt | 1 - .../anime/components/MissingEpisodeCountListItem.kt | 1 - .../presentation/browse/components/BrowseSourceList.kt | 5 ----- .../kanade/presentation/components/DownloadDropdownMenu.kt | 1 - .../java/eu/kanade/presentation/history/HistoryScreen.kt | 3 --- .../presentation/library/components/CommonAnimeItem.kt | 1 - .../library/components/LibraryComfortableGrid.kt | 1 - .../presentation/library/components/LibraryCompactGrid.kt | 1 - .../kanade/presentation/library/components/LibraryList.kt | 1 - .../kanade/presentation/library/components/LibraryPager.kt | 3 --- .../more/settings/screen/SettingsDataScreen.kt | 4 ---- .../presentation/more/settings/screen/about/AboutScreen.kt | 3 --- .../settings/screen/player/PlayerSettingsGesturesScreen.kt | 1 - .../kanade/presentation/more/settings/widget/InfoWidget.kt | 1 - .../more/storage/components/SelectStorageCategory.kt | 1 - .../java/eu/kanade/presentation/updates/UpdatesScreen.kt | 4 ---- .../data/backup/restore/restorers/ExtensionsRestorer.kt | 1 - .../tachiyomi/data/connection/discord/DiscordWebSocket.kt | 2 -- .../data/connection/syncmiru/models/SyncTriggerOptions.kt | 1 - .../java/eu/kanade/tachiyomi/data/track/simkl/SimklApi.kt | 1 - .../ui/browse/source/browse/BrowseSourceScreen.kt | 1 - .../eu/kanade/tachiyomi/ui/download/DownloadQueueScreen.kt | 1 - .../main/java/eu/kanade/tachiyomi/ui/history/HistoryTab.kt | 1 - .../eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt | 1 - .../main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt | 1 - .../main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt | 1 - .../java/eu/kanade/tachiyomi/ui/player/ExternalIntents.kt | 2 -- .../controls/components/dialogs/EpisodeListDialog.kt | 1 - .../java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt | 2 -- .../eu/kanade/tachiyomi/util/system/AuthenticatorUtil.kt | 1 + .../mihon/core/migration/migrations/PrefLangMigration.kt | 1 - .../java/tachiyomi/data/anime/CustomAnimeRepositoryImpl.kt | 1 - .../java/tachiyomi/data/source/SourceRepositoryImpl.kt | 1 - domain/src/main/java/tachiyomi/domain/anime/model/Anime.kt | 1 - .../source/interactor/GetSourcesWithNonLibraryAnime.kt | 2 -- .../tachiyomi/domain/source/repository/SourceRepository.kt | 1 - .../kotlin/eu/kanade/tachiyomi/animesource/model/Hoster.kt | 1 - .../kotlin/eu/kanade/tachiyomi/animesource/model/Video.kt | 1 - 43 files changed, 1 insertion(+), 70 deletions(-) diff --git a/app/src/main/java/eu/kanade/domain/base/BasePreferences.kt b/app/src/main/java/eu/kanade/domain/base/BasePreferences.kt index ac88cc3b0c..3665ef17d9 100644 --- a/app/src/main/java/eu/kanade/domain/base/BasePreferences.kt +++ b/app/src/main/java/eu/kanade/domain/base/BasePreferences.kt @@ -3,7 +3,6 @@ package eu.kanade.domain.base import android.content.Context import android.content.pm.PackageManager import dev.icerock.moko.resources.StringResource -import eu.kanade.tachiyomi.util.system.GLUtil import tachiyomi.core.common.preference.Preference import tachiyomi.core.common.preference.PreferenceStore import tachiyomi.i18n.MR diff --git a/app/src/main/java/eu/kanade/presentation/anime/AnimeScreen.kt b/app/src/main/java/eu/kanade/presentation/anime/AnimeScreen.kt index 900e99f8df..3f47f277b8 100644 --- a/app/src/main/java/eu/kanade/presentation/anime/AnimeScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/anime/AnimeScreen.kt @@ -24,7 +24,6 @@ import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyGridScope import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.lazy.grid.rememberLazyGridState -import androidx.compose.foundation.lazy.items import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons @@ -46,7 +45,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.layout.layout -import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity diff --git a/app/src/main/java/eu/kanade/presentation/anime/EpisodeSettingsDialog.kt b/app/src/main/java/eu/kanade/presentation/anime/EpisodeSettingsDialog.kt index 0813ba4691..2bda391da0 100644 --- a/app/src/main/java/eu/kanade/presentation/anime/EpisodeSettingsDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/anime/EpisodeSettingsDialog.kt @@ -35,7 +35,6 @@ import kotlinx.collections.immutable.persistentListOf import tachiyomi.core.common.preference.TriState import tachiyomi.domain.anime.model.Anime import tachiyomi.i18n.MR -import tachiyomi.i18n.animiru.AMMR import tachiyomi.i18n.aniyomi.AYMR import tachiyomi.presentation.core.components.CheckboxItem import tachiyomi.presentation.core.components.LabeledCheckbox diff --git a/app/src/main/java/eu/kanade/presentation/anime/components/AnimeEpisodeListItem.kt b/app/src/main/java/eu/kanade/presentation/anime/components/AnimeEpisodeListItem.kt index 129b625816..69a49b7688 100644 --- a/app/src/main/java/eu/kanade/presentation/anime/components/AnimeEpisodeListItem.kt +++ b/app/src/main/java/eu/kanade/presentation/anime/components/AnimeEpisodeListItem.kt @@ -10,13 +10,11 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.sizeIn import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.Label import androidx.compose.material.icons.automirrored.outlined.LabelOff import androidx.compose.material.icons.filled.Bookmark -import androidx.compose.material.icons.filled.Circle import androidx.compose.material.icons.outlined.BookmarkAdd import androidx.compose.material.icons.outlined.BookmarkRemove import androidx.compose.material.icons.outlined.Delete @@ -33,7 +31,6 @@ import androidx.compose.material3.Text import androidx.compose.material3.contentColorFor import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue @@ -45,8 +42,6 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.res.vectorResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview @@ -54,12 +49,10 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import coil3.request.ImageRequest import coil3.request.crossfade -import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.download.model.Download import me.saket.swipe.SwipeableActionsBox import tachiyomi.domain.library.service.LibraryPreferences import tachiyomi.i18n.MR -import tachiyomi.i18n.animiru.AMMR import tachiyomi.i18n.aniyomi.AYMR import tachiyomi.presentation.core.components.material.DISABLED_ALPHA import tachiyomi.presentation.core.components.material.SECONDARY_ALPHA diff --git a/app/src/main/java/eu/kanade/presentation/anime/components/AnimeSeasonListItem.kt b/app/src/main/java/eu/kanade/presentation/anime/components/AnimeSeasonListItem.kt index cba3ba657a..74c53b7ca2 100644 --- a/app/src/main/java/eu/kanade/presentation/anime/components/AnimeSeasonListItem.kt +++ b/app/src/main/java/eu/kanade/presentation/anime/components/AnimeSeasonListItem.kt @@ -1,10 +1,8 @@ // AY --> package eu.kanade.presentation.anime.components -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp import aniyomi.domain.anime.SeasonAnime import aniyomi.domain.anime.SeasonDisplayMode import eu.kanade.presentation.library.components.AnimeComfortableGridItem diff --git a/app/src/main/java/eu/kanade/presentation/anime/components/MarkdownRender.kt b/app/src/main/java/eu/kanade/presentation/anime/components/MarkdownRender.kt index 1ef2fe60d7..c9d028a5a7 100644 --- a/app/src/main/java/eu/kanade/presentation/anime/components/MarkdownRender.kt +++ b/app/src/main/java/eu/kanade/presentation/anime/components/MarkdownRender.kt @@ -14,7 +14,6 @@ import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.ReadOnlyComposable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.FirstBaseline import androidx.compose.ui.text.Placeholder import androidx.compose.ui.text.PlaceholderVerticalAlign diff --git a/app/src/main/java/eu/kanade/presentation/anime/components/MissingEpisodeCountListItem.kt b/app/src/main/java/eu/kanade/presentation/anime/components/MissingEpisodeCountListItem.kt index f247f57e13..87bb744ab0 100644 --- a/app/src/main/java/eu/kanade/presentation/anime/components/MissingEpisodeCountListItem.kt +++ b/app/src/main/java/eu/kanade/presentation/anime/components/MissingEpisodeCountListItem.kt @@ -12,7 +12,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.PreviewLightDark import eu.kanade.presentation.theme.TachiyomiPreviewTheme -import tachiyomi.i18n.MR import tachiyomi.i18n.animiru.AMMR import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.i18n.pluralStringResource diff --git a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt index 099bb7efe5..fe0e70b17a 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt @@ -7,11 +7,6 @@ import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableIntStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier -import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp import androidx.paging.LoadState diff --git a/app/src/main/java/eu/kanade/presentation/components/DownloadDropdownMenu.kt b/app/src/main/java/eu/kanade/presentation/components/DownloadDropdownMenu.kt index 6ba31868c2..19b95280db 100644 --- a/app/src/main/java/eu/kanade/presentation/components/DownloadDropdownMenu.kt +++ b/app/src/main/java/eu/kanade/presentation/components/DownloadDropdownMenu.kt @@ -8,7 +8,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.DpOffset import eu.kanade.presentation.anime.DownloadAction import kotlinx.collections.immutable.persistentListOf -import tachiyomi.i18n.MR import tachiyomi.i18n.aniyomi.AYMR import tachiyomi.presentation.core.i18n.pluralStringResource import tachiyomi.presentation.core.i18n.stringResource diff --git a/app/src/main/java/eu/kanade/presentation/history/HistoryScreen.kt b/app/src/main/java/eu/kanade/presentation/history/HistoryScreen.kt index 8b47f12fd0..a7bf8f6a15 100644 --- a/app/src/main/java/eu/kanade/presentation/history/HistoryScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/history/HistoryScreen.kt @@ -5,8 +5,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.DeleteSweep -import androidx.compose.material3.SnackbarHost -import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier @@ -27,7 +25,6 @@ import tachiyomi.i18n.MR import tachiyomi.i18n.aniyomi.AYMR import tachiyomi.presentation.core.components.FastScrollLazyColumn import tachiyomi.presentation.core.components.ListGroupHeader -import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.screens.EmptyScreen import tachiyomi.presentation.core.screens.LoadingScreen diff --git a/app/src/main/java/eu/kanade/presentation/library/components/CommonAnimeItem.kt b/app/src/main/java/eu/kanade/presentation/library/components/CommonAnimeItem.kt index 4c248c2cde..09079aef3f 100644 --- a/app/src/main/java/eu/kanade/presentation/library/components/CommonAnimeItem.kt +++ b/app/src/main/java/eu/kanade/presentation/library/components/CommonAnimeItem.kt @@ -5,7 +5,6 @@ import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.aspectRatio diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LibraryComfortableGrid.kt b/app/src/main/java/eu/kanade/presentation/library/components/LibraryComfortableGrid.kt index 16d553009c..e5931156ee 100644 --- a/app/src/main/java/eu/kanade/presentation/library/components/LibraryComfortableGrid.kt +++ b/app/src/main/java/eu/kanade/presentation/library/components/LibraryComfortableGrid.kt @@ -5,7 +5,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.grid.items import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.util.fastAny import eu.kanade.tachiyomi.ui.library.LibraryItem import tachiyomi.domain.anime.model.AnimeCover import tachiyomi.domain.library.model.LibraryAnime diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LibraryCompactGrid.kt b/app/src/main/java/eu/kanade/presentation/library/components/LibraryCompactGrid.kt index 6e93d532bd..22a99ebfd9 100644 --- a/app/src/main/java/eu/kanade/presentation/library/components/LibraryCompactGrid.kt +++ b/app/src/main/java/eu/kanade/presentation/library/components/LibraryCompactGrid.kt @@ -5,7 +5,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.grid.items import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.util.fastAny import eu.kanade.tachiyomi.ui.library.LibraryItem import tachiyomi.domain.anime.model.AnimeCover import tachiyomi.domain.library.model.LibraryAnime diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LibraryList.kt b/app/src/main/java/eu/kanade/presentation/library/components/LibraryList.kt index 4f696f88b1..8ff4e53360 100644 --- a/app/src/main/java/eu/kanade/presentation/library/components/LibraryList.kt +++ b/app/src/main/java/eu/kanade/presentation/library/components/LibraryList.kt @@ -7,7 +7,6 @@ import androidx.compose.foundation.lazy.items import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import androidx.compose.ui.util.fastAny import eu.kanade.tachiyomi.ui.library.LibraryItem import tachiyomi.domain.anime.model.AnimeCover import tachiyomi.domain.library.model.LibraryAnime diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LibraryPager.kt b/app/src/main/java/eu/kanade/presentation/library/components/LibraryPager.kt index ca4cdf834f..5f3172b220 100644 --- a/app/src/main/java/eu/kanade/presentation/library/components/LibraryPager.kt +++ b/app/src/main/java/eu/kanade/presentation/library/components/LibraryPager.kt @@ -13,12 +13,9 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt index f8bf83bdb5..ddaf68ec88 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt @@ -29,7 +29,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.ReadOnlyComposable import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope @@ -66,13 +65,10 @@ import kotlinx.coroutines.launch import logcat.LogPriority import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.storage.displayablePath -import tachiyomi.core.common.util.lang.launchNonCancellable -import tachiyomi.core.common.util.lang.withUIContext import tachiyomi.core.common.util.system.logcat import tachiyomi.domain.anime.interactor.GetFavorites import tachiyomi.domain.anime.model.Anime import tachiyomi.domain.backup.service.BackupPreferences -import tachiyomi.domain.library.service.LibraryPreferences import tachiyomi.domain.storage.service.StoragePreferences import tachiyomi.i18n.MR import tachiyomi.i18n.animiru.AMMR diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt index 54e20a6039..ff5c69b1fa 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/AboutScreen.kt @@ -51,10 +51,7 @@ import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.icons.CustomIcons import tachiyomi.presentation.core.icons.Discord -import tachiyomi.presentation.core.icons.Facebook import tachiyomi.presentation.core.icons.Github -import tachiyomi.presentation.core.icons.Reddit -import tachiyomi.presentation.core.icons.X import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import java.time.Instant diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/player/PlayerSettingsGesturesScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/player/PlayerSettingsGesturesScreen.kt index 0a4af36531..0febbbb41f 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/player/PlayerSettingsGesturesScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/player/PlayerSettingsGesturesScreen.kt @@ -28,7 +28,6 @@ import tachiyomi.i18n.MR import tachiyomi.i18n.aniyomi.AYMR import tachiyomi.presentation.core.components.WheelTextPicker import tachiyomi.presentation.core.i18n.stringResource -import tachiyomi.presentation.core.util.collectAsState import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/widget/InfoWidget.kt b/app/src/main/java/eu/kanade/presentation/more/settings/widget/InfoWidget.kt index 5a7a1509f2..5904ad091a 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/widget/InfoWidget.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/widget/InfoWidget.kt @@ -13,7 +13,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.PreviewLightDark import eu.kanade.presentation.theme.TachiyomiPreviewTheme -import tachiyomi.i18n.MR import tachiyomi.i18n.animiru.AMMR import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.i18n.stringResource diff --git a/app/src/main/java/eu/kanade/presentation/more/storage/components/SelectStorageCategory.kt b/app/src/main/java/eu/kanade/presentation/more/storage/components/SelectStorageCategory.kt index 40fabc4dc2..538aea23ba 100644 --- a/app/src/main/java/eu/kanade/presentation/more/storage/components/SelectStorageCategory.kt +++ b/app/src/main/java/eu/kanade/presentation/more/storage/components/SelectStorageCategory.kt @@ -7,7 +7,6 @@ import androidx.compose.ui.Modifier import eu.kanade.tachiyomi.ui.storage.StorageScreenModel import tachiyomi.domain.category.model.Category import tachiyomi.i18n.MR -import tachiyomi.i18n.animiru.AMMR import tachiyomi.i18n.aniyomi.AYMR import tachiyomi.presentation.core.components.SelectItem import tachiyomi.presentation.core.i18n.stringResource diff --git a/app/src/main/java/eu/kanade/presentation/updates/UpdatesScreen.kt b/app/src/main/java/eu/kanade/presentation/updates/UpdatesScreen.kt index 9559eec3ed..5bb0a46d4a 100644 --- a/app/src/main/java/eu/kanade/presentation/updates/UpdatesScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/updates/UpdatesScreen.kt @@ -1,6 +1,5 @@ package eu.kanade.presentation.updates -import androidx.activity.compose.BackHandler import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding @@ -9,8 +8,6 @@ import androidx.compose.material.icons.outlined.CalendarMonth import androidx.compose.material.icons.outlined.FlipToBack import androidx.compose.material.icons.outlined.Refresh import androidx.compose.material.icons.outlined.SelectAll -import androidx.compose.material3.SnackbarHost -import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -35,7 +32,6 @@ import kotlinx.coroutines.launch import tachiyomi.i18n.MR import tachiyomi.presentation.core.components.FastScrollLazyColumn import tachiyomi.presentation.core.components.material.PullRefresh -import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.screens.EmptyScreen import tachiyomi.presentation.core.screens.LoadingScreen diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/ExtensionsRestorer.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/ExtensionsRestorer.kt index 87673ce155..8d5abae962 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/ExtensionsRestorer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/ExtensionsRestorer.kt @@ -5,7 +5,6 @@ import android.content.Context import android.content.Intent import eu.kanade.tachiyomi.data.backup.models.BackupExtension import eu.kanade.tachiyomi.util.storage.getUriCompat -import uy.kohesive.injekt.api.get import java.io.File class ExtensionsRestorer( diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/connection/discord/DiscordWebSocket.kt b/app/src/main/java/eu/kanade/tachiyomi/data/connection/discord/DiscordWebSocket.kt index 33c15b970f..88a1bbe8f9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/connection/discord/DiscordWebSocket.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/connection/discord/DiscordWebSocket.kt @@ -9,8 +9,6 @@ import kotlinx.coroutines.cancel import kotlinx.coroutines.delay import kotlinx.coroutines.isActive import kotlinx.coroutines.launch -import kotlinx.serialization.decodeFromString -import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/connection/syncmiru/models/SyncTriggerOptions.kt b/app/src/main/java/eu/kanade/tachiyomi/data/connection/syncmiru/models/SyncTriggerOptions.kt index 7c218f9f65..438424c092 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/connection/syncmiru/models/SyncTriggerOptions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/connection/syncmiru/models/SyncTriggerOptions.kt @@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.data.connection.syncmiru.models import dev.icerock.moko.resources.StringResource import kotlinx.collections.immutable.persistentListOf -import tachiyomi.i18n.MR import tachiyomi.i18n.animiru.AMMR data class SyncTriggerOptions( diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/simkl/SimklApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/simkl/SimklApi.kt index 3c283844c1..019d6445b4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/simkl/SimklApi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/simkl/SimklApi.kt @@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.data.track.simkl import android.net.Uri -import android.util.Log import androidx.core.net.toUri import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.track.model.TrackSearch diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt index 3d95ce499f..1875115b2c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt @@ -31,7 +31,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.input.pointer.pointerInput -import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalHapticFeedback diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreen.kt index 8998a5d338..ce075b79d5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreen.kt @@ -55,7 +55,6 @@ import eu.kanade.tachiyomi.databinding.DownloadListBinding import kotlinx.collections.immutable.persistentListOf import tachiyomi.core.common.util.lang.launchUI import tachiyomi.i18n.MR -import tachiyomi.i18n.animiru.AMMR import tachiyomi.i18n.aniyomi.AYMR import tachiyomi.presentation.core.components.Pill import tachiyomi.presentation.core.components.material.ExtendedFloatingActionButton diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryTab.kt index ac4551d994..a6736fda02 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryTab.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryTab.kt @@ -20,7 +20,6 @@ import eu.kanade.tachiyomi.ui.anime.AnimeScreen import eu.kanade.tachiyomi.ui.browse.migration.season.MigrateSeasonSelectScreen import eu.kanade.tachiyomi.ui.category.CategoryScreen import eu.kanade.tachiyomi.ui.main.MainActivity -import eu.kanade.tachiyomi.ui.player.PlayerActivity import eu.kanade.tachiyomi.ui.player.settings.PlayerPreferences import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.collectLatest diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt index ef9b8c21cc..89ddc75953 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt @@ -75,7 +75,6 @@ import tachiyomi.source.local.LocalSource import tachiyomi.source.local.isLocal import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import kotlin.collections.flatten import kotlin.random.Random class LibraryScreenModel( diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt index 07586dfed7..9513ee79be 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt @@ -71,7 +71,6 @@ import tachiyomi.source.local.isLocal import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import kotlin.getValue data object LibraryTab : Tab { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt index 91cdaa6c6a..7a4fff391b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -1,7 +1,6 @@ package eu.kanade.tachiyomi.ui.main import android.animation.ValueAnimator -import android.app.Activity import android.app.Application import android.app.SearchManager import android.app.assist.AssistContent diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/player/ExternalIntents.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/player/ExternalIntents.kt index eca1ce76fa..197bd9dbf2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/player/ExternalIntents.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/player/ExternalIntents.kt @@ -49,14 +49,12 @@ import tachiyomi.domain.history.model.HistoryUpdate import tachiyomi.domain.source.service.SourceManager import tachiyomi.domain.track.interactor.GetTracks import tachiyomi.domain.track.interactor.InsertTrack -import tachiyomi.source.local.LocalSource import tachiyomi.source.local.isLocal import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy import java.io.File import java.util.Date -import kotlin.getValue class ExternalIntents { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/player/controls/components/dialogs/EpisodeListDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/player/controls/components/dialogs/EpisodeListDialog.kt index 9e66ef441f..f7c59f4b65 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/player/controls/components/dialogs/EpisodeListDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/player/controls/components/dialogs/EpisodeListDialog.kt @@ -15,7 +15,6 @@ import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.Label import androidx.compose.material.icons.filled.Bookmark -import androidx.compose.material.icons.outlined.Bookmark import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt index 78d36e5c92..2b912d3d91 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt @@ -2,11 +2,9 @@ package eu.kanade.tachiyomi.ui.stats import androidx.compose.ui.util.fastDistinctBy import androidx.compose.ui.util.fastFilter -import androidx.compose.ui.util.fastMapNotNull import cafe.adriel.voyager.core.model.StateScreenModel import cafe.adriel.voyager.core.model.screenModelScope import eu.kanade.core.util.fastCountNot -import eu.kanade.core.util.fastFilterNot import eu.kanade.presentation.more.stats.StatsScreenState import eu.kanade.presentation.more.stats.data.StatsData import eu.kanade.tachiyomi.animesource.model.SAnime diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/AuthenticatorUtil.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/AuthenticatorUtil.kt index 164a1075ca..def4c3a07f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/AuthenticatorUtil.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/AuthenticatorUtil.kt @@ -10,6 +10,7 @@ import androidx.biometric.auth.AuthPromptCallback import androidx.biometric.auth.startClass2BiometricOrCredentialAuthentication import androidx.core.content.ContextCompat import androidx.fragment.app.FragmentActivity +import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.isAuthenticating import kotlinx.coroutines.suspendCancellableCoroutine import tachiyomi.core.common.i18n.stringResource import tachiyomi.i18n.MR diff --git a/app/src/main/java/mihon/core/migration/migrations/PrefLangMigration.kt b/app/src/main/java/mihon/core/migration/migrations/PrefLangMigration.kt index f0464a00c0..9625637be8 100644 --- a/app/src/main/java/mihon/core/migration/migrations/PrefLangMigration.kt +++ b/app/src/main/java/mihon/core/migration/migrations/PrefLangMigration.kt @@ -9,7 +9,6 @@ import mihon.core.migration.Migration import mihon.core.migration.MigrationContext import java.util.Locale import java.util.MissingResourceException -import kotlin.text.split class PrefLangMigration : Migration { override val version = 130f diff --git a/data/src/main/java/tachiyomi/data/anime/CustomAnimeRepositoryImpl.kt b/data/src/main/java/tachiyomi/data/anime/CustomAnimeRepositoryImpl.kt index 2401fccea6..604983cad2 100644 --- a/data/src/main/java/tachiyomi/data/anime/CustomAnimeRepositoryImpl.kt +++ b/data/src/main/java/tachiyomi/data/anime/CustomAnimeRepositoryImpl.kt @@ -3,7 +3,6 @@ package tachiyomi.data.anime import android.content.Context import kotlinx.serialization.Serializable -import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import tachiyomi.domain.anime.model.CustomAnimeInfo import tachiyomi.domain.anime.repository.CustomAnimeRepository diff --git a/data/src/main/java/tachiyomi/data/source/SourceRepositoryImpl.kt b/data/src/main/java/tachiyomi/data/source/SourceRepositoryImpl.kt index 48466905e1..b1f7119de3 100644 --- a/data/src/main/java/tachiyomi/data/source/SourceRepositoryImpl.kt +++ b/data/src/main/java/tachiyomi/data/source/SourceRepositoryImpl.kt @@ -8,7 +8,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import tachiyomi.data.DatabaseHandler -import tachiyomi.domain.source.model.SourceWithIds import tachiyomi.domain.source.model.StubSource import tachiyomi.domain.source.repository.SourcePagingSource import tachiyomi.domain.source.repository.SourceRepository diff --git a/domain/src/main/java/tachiyomi/domain/anime/model/Anime.kt b/domain/src/main/java/tachiyomi/domain/anime/model/Anime.kt index 29caf7c5be..037b27dc7d 100644 --- a/domain/src/main/java/tachiyomi/domain/anime/model/Anime.kt +++ b/domain/src/main/java/tachiyomi/domain/anime/model/Anime.kt @@ -10,7 +10,6 @@ import tachiyomi.domain.anime.interactor.GetCustomAnimeInfo import uy.kohesive.injekt.injectLazy import java.io.Serializable import java.time.Instant -import kotlin.getValue import kotlin.math.pow @Immutable diff --git a/domain/src/main/java/tachiyomi/domain/source/interactor/GetSourcesWithNonLibraryAnime.kt b/domain/src/main/java/tachiyomi/domain/source/interactor/GetSourcesWithNonLibraryAnime.kt index e91607305e..80520a71e1 100644 --- a/domain/src/main/java/tachiyomi/domain/source/interactor/GetSourcesWithNonLibraryAnime.kt +++ b/domain/src/main/java/tachiyomi/domain/source/interactor/GetSourcesWithNonLibraryAnime.kt @@ -4,8 +4,6 @@ import kotlinx.coroutines.flow.Flow import tachiyomi.domain.anime.model.Anime import tachiyomi.domain.anime.repository.AnimeRepository import tachiyomi.domain.source.model.DeletableAnime -import tachiyomi.domain.source.model.SourceWithIds -import tachiyomi.domain.source.repository.SourceRepository class GetSourcesWithNonLibraryAnime( private val repository: AnimeRepository, diff --git a/domain/src/main/java/tachiyomi/domain/source/repository/SourceRepository.kt b/domain/src/main/java/tachiyomi/domain/source/repository/SourceRepository.kt index 4c36fcbfb2..7aaee2c053 100644 --- a/domain/src/main/java/tachiyomi/domain/source/repository/SourceRepository.kt +++ b/domain/src/main/java/tachiyomi/domain/source/repository/SourceRepository.kt @@ -5,7 +5,6 @@ import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import kotlinx.coroutines.flow.Flow import tachiyomi.domain.anime.model.Anime import tachiyomi.domain.source.model.Source -import tachiyomi.domain.source.model.SourceWithIds typealias SourcePagingSource = PagingSource diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/Hoster.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/Hoster.kt index 21c3dd49e8..851479bdf7 100644 --- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/Hoster.kt +++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/Hoster.kt @@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.animesource.model import eu.kanade.tachiyomi.animesource.model.SerializableVideo.Companion.serialize import eu.kanade.tachiyomi.animesource.model.SerializableVideo.Companion.toVideoList import kotlinx.serialization.Serializable -import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json open class Hoster( diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/Video.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/Video.kt index 27611d3992..8273d14bb3 100644 --- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/Video.kt +++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/Video.kt @@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.animesource.model import android.net.Uri import kotlinx.serialization.Serializable -import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import okhttp3.Headers From a87a7b5ea15973af1e7094dc268841de7bfe63ad Mon Sep 17 00:00:00 2001 From: Secozzi Date: Thu, 16 Oct 2025 21:06:22 +0200 Subject: [PATCH 41/45] Fix issue with ext lib 14 compatibility --- .../eu/kanade/tachiyomi/animesource/model/Video.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/Video.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/Video.kt index 8273d14bb3..dc5185ff78 100644 --- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/Video.kt +++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/Video.kt @@ -42,19 +42,19 @@ data class Video( val initialized: Boolean = false, ) { - // TODO(1.6): Remove after ext lib bump + // TODO(16): Remove after ext lib bump @Deprecated("Use videoTitle instead", ReplaceWith("videoTitle")) val quality: String get() = videoTitle - // TODO(1.6): Remove after ext lib bump + // TODO(16): Remove after ext lib bump val url: String get() = videoPageUrl - // TODO(1.6): Remove after ext lib bump + // TODO(16): Remove after ext lib bump private var videoPageUrl: String = "" - // TODO(1.6): Remove after ext lib bump + // TODO(16): Remove after ext lib bump constructor( url: String, quality: String, @@ -69,10 +69,10 @@ data class Video( subtitleTracks = subtitleTracks, audioTracks = audioTracks, ) { - this.videoUrl = url + this.videoPageUrl = url } - // TODO(1.6): Remove after ext lib bump + // TODO(16): Remove after ext lib bump @Suppress("UNUSED_PARAMETER") constructor( url: String, From f5d5fa33e7cd8b958488cdadd13bf4a96093eb7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=ABl=20Miramon?= Date: Sun, 26 Oct 2025 15:43:32 +0100 Subject: [PATCH 42/45] fix: Make volume gesture the same sensitivity as brightness Used to be dependent on the amount of volume levels of the device (cherry picked from commit 12a4bb666186837926bdccec0904f8d8d66c7c6f) --- .../eu/kanade/tachiyomi/ui/player/controls/GestureHandler.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/player/controls/GestureHandler.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/player/controls/GestureHandler.kt index 911700ee18..9786b08abd 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/player/controls/GestureHandler.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/player/controls/GestureHandler.kt @@ -220,8 +220,8 @@ fun GestureHandler( var originalMPVVolume = currentMPVVolume var originalBrightness = currentBrightness val brightnessGestureSens = 0.001f - val volumeGestureSens = 0.03f - val mpvVolumeGestureSens = 0.02f + val volumeGestureSens = 0.001f * viewModel.maxVolume + val mpvVolumeGestureSens = 0.001f * volumeBoostingCap val isIncreasingVolumeBoost: (Float) -> Boolean = { volumeBoostingCap > 0 && currentVolume == viewModel.maxVolume && From 1f6e7ded5ebb8a40e08791a4c08098193abef8ae Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Sun, 26 Oct 2025 16:03:19 +0100 Subject: [PATCH 43/45] chore(i18n): Translations update from Hosted Weblate (#2074) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: jmir1 Co-authored-by: sami155 <56385412+sami155@users.noreply.github.com> Co-authored-by: Frosted Co-authored-by: Максим Горпиніч Co-authored-by: roigoatzzz Co-authored-by: Champ0999 Co-authored-by: Jules CV Co-authored-by: Nicola Bortoletto Co-authored-by: Manuela Silva Co-authored-by: YASSINE_ YT Co-authored-by: Rayen Daadaa Co-authored-by: Akhil Raj Co-authored-by: Hualiang <642615676@qq.com> Co-authored-by: Thomas Favre Co-authored-by: Ricky Tigg Co-authored-by: KOXXPL Co-authored-by: Jottape98 Co-authored-by: N. Hao Co-authored-by: XblateX Co-authored-by: Silly Toons Co-authored-by: Cristian Peralta Co-authored-by: Itsmechinmoy Co-authored-by: Omgeta Co-authored-by: Michal Marzec Co-authored-by: Milo Ivir Co-authored-by: Angel imbaquingo Co-authored-by: Nataniel Dika Kurniawan Co-authored-by: Максим Горпиніч Co-authored-by: ayaao Co-authored-by: Azazak 142 Co-authored-by: Chopper Co-authored-by: Thiago Carmona Co-authored-by: Jan Šmedek Co-authored-by: Diego VO <166761329+DarkotkV@users.noreply.github.com> Co-authored-by: Marian Napierkowski Co-authored-by: EladBG-code (cherry picked from commit 777b5cbb3153a07bfa07319cecd40cabaed54f5c) --- .../commonMain/moko-resources/ar/strings.xml | 62 +- .../commonMain/moko-resources/as/strings.xml | 742 ++++++++++-------- .../commonMain/moko-resources/ca/strings.xml | 2 +- .../commonMain/moko-resources/cs/strings.xml | 169 +++- .../commonMain/moko-resources/de/strings.xml | 60 +- .../commonMain/moko-resources/es/strings.xml | 144 +++- .../commonMain/moko-resources/fa/strings.xml | 2 +- .../commonMain/moko-resources/fi/strings.xml | 194 ++++- .../commonMain/moko-resources/fil/strings.xml | 5 +- .../commonMain/moko-resources/fr/strings.xml | 223 +++++- .../commonMain/moko-resources/he/strings.xml | 34 +- .../commonMain/moko-resources/hi/strings.xml | 10 +- .../commonMain/moko-resources/hr/strings.xml | 98 ++- .../commonMain/moko-resources/in/strings.xml | 121 ++- .../commonMain/moko-resources/it/strings.xml | 116 ++- .../commonMain/moko-resources/kk/strings.xml | 40 +- .../commonMain/moko-resources/ko/strings.xml | 4 +- .../commonMain/moko-resources/ml/strings.xml | 10 +- .../commonMain/moko-resources/ms/strings.xml | 24 +- .../commonMain/moko-resources/pl/strings.xml | 136 +++- .../moko-resources/pt-rBR/strings.xml | 39 +- .../commonMain/moko-resources/pt/strings.xml | 275 ++++++- .../commonMain/moko-resources/ru/strings.xml | 131 +++- .../commonMain/moko-resources/sr/strings.xml | 4 +- .../commonMain/moko-resources/ta/strings.xml | 4 +- .../commonMain/moko-resources/tr/strings.xml | 163 +++- .../commonMain/moko-resources/uk/strings.xml | 120 ++- .../commonMain/moko-resources/vi/strings.xml | 25 +- .../moko-resources/zh-rCN/strings.xml | 87 +- .../moko-resources/zh-rTW/strings.xml | 4 +- 30 files changed, 2530 insertions(+), 518 deletions(-) diff --git a/i18n-aniyomi/src/commonMain/moko-resources/ar/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/ar/strings.xml index b671a4c499..2ab1b6d782 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/ar/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/ar/strings.xml @@ -130,8 +130,6 @@ هل تريد حذف زر %s؟ إعدادات متقدمة البرامج النصية، mpv.conf، input.conf - تمكين سكربتات MPV - يحتاج إلى إذن تخزين خارجي. قم بتحرير ملف تكوين MPV لمزيد من إعدادات مشغل الوسائط إعادة تعيين ملف تكوين MPV تعديل ملف إدخال MPV لتكوين تعيين لوحة المفاتيح @@ -414,4 +412,62 @@ إنشاء مجلد Aniyomi افتراضي حد سرعة التنزيل اضبطه على 0 لتعطيل حد السرعة. - \ No newline at end of file + مانغا + الحلقات التي لم يتم مشاهدتها + حذف الفصول/الحلقات + بعد قراءته/مشاهدته قم بحذفه تلقائيا + آخر تحديث للمنغا + اظهار المنغا + متابعة القراءة/المشاهدة + تخطي الفصول والحلقات غير المرئية + إضافة مستودعات إضافية إلى %s . يجب أن يكون هذا الرابط ينتهي بـ \"index.min.json\". + لا يشتغل إلا حين يكون الفصل أو الحلقة الحاليِّة والتي تليها منزَّلين. + جميع الفصول المقروءة أو المشاهدة + بعد وضع علامة \"مقروءة\" يدوياً + تحديث تقدّم الفصول بعد القراءة + تحديث تلقائيًا عند التحديد كمقروء + مسح الذاكرة المؤقتة للفصول + امسح ملفات التخزين المؤقت عند فتح التطبيق + أمتأكِّد؟ إن فعلتَ سوف تخسر الفصول المقروءة و التقدم فى المدخلات الغير محفوظة فى المكتبة + من المكتبة + تنطبق أيضًا على جميع الإدخالات في مكتبتي + إعادة تعيين جميع الفصول لهذا الإدخال + يتعذّر تنزيل الفصول بسبب انخفاض مساحة التخزين + تحذير: يمكن أن تؤدِّي التنزيلات كبيرة الحجم والعدد إلى إبطاء المصادر أو/و حجز التطيق. اضغط لمعرفة المزيد۔ + فرض التطبيق على إعادة التحقق من الفصول التي تم تنزيلها + مواقع الاستضافة + عرض مواقع الاستضافة الفاشلة + عرض مواقع الاستضافة الفارغة + تخطي المقدمة + سمح تخطي المقدمة + تعطيل AniSkip إذا كان الفيديو يحتوي بالفعل على فصول + رمز خاطء: \"%s\" + عند التشغيل + (المعرف: %d) + محرر السكربت + تعديل وإنشاء سكربتات جديدة وخيارات السكربت + سكربتات + إعدادات السكربت + المجلد لا يحتوي على عناصر. اضغط على زر الإضافة (+) لإضافة ملف جديد. + لديك تغييرات لم تُحفظ بعد. هل ترغب في الرجوع رغم ذلك؟ + تعذر حفظ الملف + تم حفظ الملف + إعادة تسمية الملف + حذف الملف + الملف موجود حاليا + اسم ملف غير صالح + إنشاء ملف + تعديل اسم الملف + اسم الملف + تعذر إنشاء الملف + تعذرت إعادة تسمية الملف + غير قادر على حذف الملف + حذف الملف + هل ترغب في حذف ملف \"%s\"؟ + استخدام ملفات MPV المستعمل + استخدام الملفات في مجلد mpv-config + تخطّي %1$s + البداية + النهاية + إعادة + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/as/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/as/strings.xml index 071e387518..9010a84fa3 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/as/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/as/strings.xml @@ -1,421 +1,497 @@ - বাহিৰ যাবলৈ পুনৰ পেছাৰ পিছ চাপক - আৰম্ভ কৰা - সম্প্ৰচাৰৰ সময় - পুনৰ বিন্যাস কৰক + বাহিৰ হ’বলৈ আকৌ পিছলৈ টিপক + আৰম্ভ হৈছে + প্ৰচাৰৰ সময় + পুনৰ সজোৱা এতিয়া - শ্ৰেণীসমূহ, গ্লোবেল আপডেট, অধ্যায়/এপিচ’ড স্বাইপ - আপডেট চিহ্নত অদেখা/অপঢ়া গণনা দেখুৱাওক - প্লেয়াৰ ছেটিংছ - প্লেয়াৰ ছেটিংছ বিচাৰক - আভ্যন্তৰীণ প্লেয়াৰ - অগ্ৰগতি, নিয়ন্ত্ৰণ, অভিমুখ - এপিচ\'ডটো দেখা হিচাপে কেতিয়া চিহ্নিত কৰিব - দেখা হোৱা এপিচ\'ডছৰ পৰিসৰৰ স্থান সংৰক্ষণ কৰক - অৰিয়েণ্টেচন - ভিডিঅ - বিপৰীত পৰিৱৰণ - চেন্সৰ পোৰট্ৰেইট - চেন্সৰ পৰিৱৰণ - নিয়ন্ত্ৰণসমূহ - পেনেলত ইঙ্গিত অনুমতি দিয়ক - লোডিং বৃত্ত দেখুৱাওক - বৰ্তমানৰ অধ্যায় সূচক দেখুৱাওক - ভিডিঅ\'টোত অধ্যায় থাকিলেহে দেখা দিয়ে - শতাংশ হিচাপে আয়তন প্ৰদৰ্শন কৰক - পূৰ্বৰ ব্যৱহৃত উজ্জ্বলতা স্মৰণ কৰক আৰু সলনি কৰক - পূৰ্বৰ ব্যৱহৃত ভলিউম স্মৰণ কৰক আৰু সলনি কৰক - ডিসপ্লে কাটআউটত সামগ্রী দেখুৱাওক - প্লেয়াৰ খোলাৰ সময়ত প্লেয়াৰ নিয়ন্ত্ৰণ লুকাওক - নিয়ন্ত্ৰণসমূহৰ সৈতে ব্যৱস্থাপ্ৰণালীৰ অৱস্থা বাৰ দেখুৱাওক - প্লেয়াৰৰ এনিমেচন হ্ৰাস কৰক - প্লেয়াৰ নিয়ন্ত্ৰণ লুকোৱাৰ সময় - %1$s ms - পেনেলৰ অস্পষ্টতা - অট\'স্কিপ সক্ৰিয় কৰক + শ্ৰেণীসমূহ, বিশ্বজনীন আপডেট, অধ্যায়/পৰ্ব সোঁৱৰণ + আপডেট আইকনত নদেখা/অপঢ়া সংখ্যা দেখুৱাওক + প্লেয়াৰ সংহতি + প্লেয়াৰ সংহতি বিচাৰক + অভ্যন্তৰীণ প্লেয়াৰ + অগ্ৰগতি, নিয়ন্ত্ৰণ, দিশ + পৰ্বটো কেতিয়া দেখা বুলি চিহ্নিত কৰিব + দেখা পৰ্বসমূহৰ চাওঁতাৰ অৱস্থান সাঁচি ৰাখক + দিশ + ভিডিঅ’ + উলোট লেণ্ডস্কেপ + চেন্সৰ প’ৰ্ট্ৰেইট + চেন্সৰ লেণ্ডস্কেপ + নিয়ন্ত্ৰণ + পেনেলত অঙ্গভঙ্গিৰ অনুমতি দিয়ক + ল’ডিং বৃত্ত দেখুৱাওক + বৰ্তমানৰ অধ্যায়ৰ সূচক দেখুৱাওক + ভিডিঅ’ত অধ্যায় থাকিলেহে দেখা যায় + শতাংশ হিচাপে শব্দৰ মাত্ৰা দেখুৱাওক + শেষৰ ব্যৱহৃত উজ্জ্বলতা মনত ৰাখক আৰু সলনি কৰক + শেষৰ ব্যৱহৃত শব্দৰ মাত্ৰা মনত ৰাখক আৰু সলনি কৰক + প্ৰদৰ্শন কাটআউটত বিষয়বস্তু দেখুৱাওক + প্লেয়াৰ খোলাৰ সময়ত নিয়ন্ত্ৰণ লুকুৱাওক + নিয়ন্ত্ৰণৰ সৈতে ব্যৱস্থাপনাৰ স্থিতি বাৰ দেখুৱাওক + প্লেয়াৰৰ এনিমেশ্যন কমাওক + প্লেয়াৰ নিয়ন্ত্ৰণ লুকুৱাৰ সময় + %1$s মিলিছেকেণ্ড + পেনেলৰ অস্বচ্ছতা + স্বয়ংক্ৰিয় এৰি দিয়া সক্ৰিয় কৰক নেটফ্লিক্স শৈলী সক্ৰিয় কৰক - বুটামৰ টাইমআউট + বাটনৰ সময়সীমা ৫ ছেকেণ্ড ৬ ছেকেণ্ড ৭ ছেকেণ্ড ৮ ছেকেণ্ড ৯ ছেকেণ্ড ১০ ছেকেণ্ড - AniSkipৰ কাৰ্য্য কৰাৰ বাবে এনিমে\'ৰ MAL অথবা Anilistৰ লগত পঞ্জীয়ন কৰা প্ৰয়োজন - AniSkip সক্ৰিয় কৰক - পিক্চাৰ-ইন-পিক্চাৰ (pip) - pip মোড ব্যৱহাৰ সক্ষম কৰক - pip মোডত অধ্যায় সলনি কৰাৰ সময়ত অধ্যায় টোস্ট প্ৰদৰ্শন কৰক - প্লেয়াৰ এৰাৰ সময়ত স্বয়ংক্ৰিয়ভাৱে pip মোডত সলনি কৰক - ১০ ছেকেণ্ড স্কিপ কৰক বিকল্পৰ পৰিৱৰ্তে পূৰ্বৰ অধ্যায় সলনি কৰক + এনিস্কিপৰ কাম কৰিবলৈ এনিমে MAL বা Anilistৰ সৈতে ট্ৰেক কৰা প্ৰয়োজন + এনিস্কিপ সক্ৰিয় কৰক + ছবিৰ-মাজত-ছবি (PiP) + PiP মোডৰ ব্যৱহাৰ সক্ৰিয় কৰক + PiP মোডত পৰ্ব সলনি কৰোঁতে পৰ্বৰ টোষ্ট দেখুৱাওক + প্লেয়াৰৰ পৰা ওলাওঁতে স্বয়ংক্ৰিয়ভাৱে PiP মোডলৈ সলনি কৰক + ১০ ছেকেণ্ড এৰি দিয়ক বিকল্পৰ ঠাইত আগৰ পৰ্ব স্থাপন কৰক বাহ্যিক প্লেয়াৰ - সৰ্বদা বাহ্যিক প্লেয়াৰ ব্যৱহাৰ কৰক - বাহ্যিক প্লেয়াৰ পছন্দ - ইঙ্গিতসমূহ - সন্ধান, ডাবল টেপ, মিডিয়া নিয়ন্ত্ৰণ - ছ্লাইডাৰসমূহ - ভলিউম আৰু ব্রাইটনেছ ইষ্টাৰ্ছাৰ সক্ৰিয় কৰক - ভলিউম আৰু উজ্বলতা ছ্লাইডাৰ সলনি কৰক - অনুসন্ধান - আবৰ্ণীয় চোক বিচাৰ ইষ্টাৰ্ছাৰ সক্ৰিয় কৰক - সন্ধান কৰোঁতে ছীকবাৰ দেখুৱাওক - ডিফল্ট স্কিপ ইণ্ট্ৰ\' দৈৰ্ঘ্য - ইণ্ট্ৰ\'ৰ দৈৰ্ঘ্য স্কিপ কৰক - দ্বিগুণ টেপ কৰি দৈৰ্ঘ্য স্কিপ কৰক + সদায় বাহ্যিক প্লেয়াৰ ব্যৱহাৰ কৰক + বাহ্যিক প্লেয়াৰৰ পছন্দ + অঙ্গভঙ্গি + অনুসন্ধান, দুইবাৰ টিপা, মিডিয়া নিয়ন্ত্ৰণ + স্লাইডাৰ + শব্দ আৰু উজ্জ্বলতাৰ অঙ্গভঙ্গি সক্ৰিয় কৰক + শব্দ আৰু উজ্জ্বলতাৰ স্লাইডাৰ সলনি কৰক + বিচাৰণ + অনুভূমিক অনুসন্ধান অঙ্গভঙ্গি সক্ৰিয় কৰক + অনুসন্ধান কৰোঁতে সিকবাৰ দেখুৱাওক + ডিফল্ট ইন্ট্ৰ’ এৰি দিয়াৰ দৈৰ্ঘ্য + ইন্ট্ৰ’ এৰি দিয়াৰ দৈৰ্ঘ্য + দুইবাৰ টিপি এৰি দিয়াৰ দৈৰ্ঘ্য অক্ষম কৰক - নিখুঁত অনুসন্ধান সক্ষম কৰক - সক্ষম কৰিলে, অনুসন্ধান কিফ্ৰেমত কেন্দ্ৰিত নোহোৱা হ\'ব, যাৰ ফলত ধীৰ কিন্তু নিখুঁত অনুসন্ধান হ\'ব - ডাবল টেপ - ডাবল টেপ (বাওঁফাল) - ডাবল টেপ (মধ্যভাগ) - ডাবল টেপ (সোঁফাল) - যেতিয়া টেপ ইঙ্গিত কাষ্টম হিচাপে ছেট কৰা হয়, input.confৰ জৰিয়তে সংলগ্ন কৰিব পৰা যায়। বাওঁফালৰ বাবে কী কোড হৈছে 0x10001, মধ্যভাগৰ বাবে 0x10002, আৰু সোঁফালৰ বাবে 0x10003। - একো নহয় - সন্ধান - প্লে/পজ - এপিচ\'ড সলনি কৰক + নিখুঁত অনুসন্ধান সক্ৰিয় কৰক + সক্ৰিয় কৰিলে, অনুসন্ধান কীফ্ৰেমত কেন্দ্ৰিত নহ’ব, যাৰ ফলত ধীৰ কিন্তু নিখুঁত অনুসন্ধান হ’ব + দুইবাৰ টিপা + দুইবাৰ টিপা (বাওঁ) + দুইবাৰ টিপা (মধ্য) + দুইবাৰ টিপা (সোঁ) + যেতিয়া এটা টিপা অঙ্গভঙ্গি কাষ্টম হিচাপে স্থাপন কৰা হয়, তেতিয়া input.conf ৰ জৰিয়তে বান্ধিব পাৰি। কী ক’ডসমূহ হ’ল বাওঁৰ বাবে 0x10001, মধ্যৰ বাবে 0x10002, আৰু সোঁৰ বাবে 0x10003। + কোনো নাই + অনুসন্ধান + চলাওক/ৰখাওক + পৰ্ব সলনি কৰক কাষ্টম মিডিয়া নিয়ন্ত্ৰণ - আগৰখন - প্লে/পজ + আগৰ + চলাওক/ৰখাওক পৰৱৰ্তী - যেতিয়া মিডিয়া নিয়ন্ত্ৰণ কাষ্টম হিচাপে ছেট কৰা হয়, input.confৰ জৰিয়তে সংলগ্ন কৰিব পৰা যায়। আগৰ বাবে 0x10004, প্লে/পজৰ বাবে 0x10005, আৰু পৰৱৰ্তী বাবে 0x10006 কী কোডসমূহ। - ডিক\'ডাৰ - হাৰ্ডৱেৰ ডিক\'ডিং, পিক্সেল ফৰ্মেট, ডিবেন্ডিং - হাৰ্ডৱেৰ ডিক\'ডিং চেষ্টা কৰক - GPU-নেক্সট সক্ৰিয় কৰক - এটা নতুন ভিডিঅ\' ৰেণ্ডাৰিং বেকএণ্ড - ডেবেণ্ডিং - একো নহয় + যেতিয়া মিডিয়া নিয়ন্ত্ৰণ কাষ্টম হিচাপে স্থাপন কৰা হয়, তেতিয়া input.conf ৰ জৰিয়তে বান্ধিব পাৰি। কী ক’ডসমূহ হ’ল আগৰৰ বাবে 0x10004, চলাওক/ৰখাওকৰ বাবে 0x10005, আৰু পৰৱৰ্তীৰ বাবে 0x10006। + ডিক’ডাৰ + হাৰ্ডৱেৰ ডিক’ডিং, পিক্সেল ফৰ্মেট, ডিবেণ্ডিং + হাৰ্ডৱেৰ ডিক’ডিং চেষ্টা কৰক + gpu-next সক্ৰিয় কৰক + এটা নতুন ভিডিঅ’ ৰেণ্ডাৰিং বেকএণ্ড + ডিবেণ্ডিং + কোনো নাই CPU GPU YUV420P YUV420P পিক্সেল ফৰ্মেট ব্যৱহাৰ কৰক - কিছুমান ভিডিঅ\' ক\'ডেকত ব্লেক স্ক্ৰিণ সমাধান কৰিব পাৰে, গুণগত মানৰ মুল্যে প্ৰদৰ্শন উন্নত কৰিব পাৰে - সাবটাইটেল - পছন্দৰ ভাষাসমূহ, হোৱাইটলিষ্ট, ব্লেকলিষ্ট - পছন্দৰ ভাষাসমূহ - একাধিক সাবটাইটেল থকা ভিডিঅ\'ত ডিফল্টৰূপে বাচনি কৰা ভাষা(সমূহ), দুই-অথবা তিনিচৰাৰ ভাষা কোড সমৰ্থিত। একাধিক মানে কমা দ্বাৰা পৃথক কৰিব পাৰি। + কিছুমান ভিডিঅ’ ক’ডেকত ক’লা পৰ্দা সমাধান কৰিব পাৰে, গুণমানৰ মূল্যত পৰিৱেশন উন্নত কৰিব পাৰে + উপশিৰোনামা + পছন্দৰ ভাষা, হোৱাইটলিষ্ট, ব্লেকলিষ্ট + পছন্দৰ ভাষা + একাধিক উপশিৰোনামা থকা ভিডিঅ’ত ডিফল্ট হিচাপে নিৰ্বাচিত ভাষা(সমূহ), দুই বা তিনি আখৰৰ ভাষা ক’ড কাম কৰে। একাধিক মান কমাৰে পৃথক কৰিব পাৰি। হোৱাইটলিষ্ট - সাবটাইটেলৰ বাবে হোৱাইটলিষ্ট। যদিহে হোৱাইটলিষ্ট সংজ্ঞায়িত থাকে, তেন্তে প্ৰথম সাবটাইটেল যিটো হোৱাইটলিষ্ট শব্দৰ পৰা আহে, সেয়া ব্যৱহৃত হব। একাধিক মানে কমা দ্বাৰা পৃথক কৰিব পাৰি। + উপশিৰোনামাৰ বাবে হোৱাইটলিষ্ট। যদি হোৱাইটলিষ্ট নিৰ্ধাৰিত হয়, তেন্তে হোৱাইটলিষ্টৰ শব্দ থকা প্ৰথম উপশিৰোনামা ব্যৱহাৰ হ’ব। একাধিক মান কমাৰে পৃথক কৰিব পাৰি। ব্লেকলিষ্ট - সাবটাইটেলৰ বাবে ব্লেকলিষ্ট। যদিহে ব্লেকলিষ্ট সংজ্ঞায়িত থাকে, তেন্তে ব্লেকলিষ্ট শব্দ থকা সকলো সাবটাইটেল পৰিস্কাৰ কৰা হব। একাধিক মানে কমা দ্বাৰা পৃথক কৰিব পাৰি। - অডিঅ\' - পছন্দৰ ভাষাসমূহ, পিচ সংশোধন, অডিঅ\' চেনেলসমূহ - পছন্দৰ ভাষাসমূহ - একাধিক অডিঅ\' ষ্ট্ৰীম থকা ভিডিঅ\'ত ডিফল্টৰূপে বাচনি কৰা অডিঅ\' ভাষা(সমূহ), দুই-অথবা তিনিচৰাৰ ভাষা কোড সমৰ্থিত। একাধিক মানে কমা দ্বাৰা পৃথক কৰিব পাৰি। - অডিঅ\' পিচ সংশোধন সক্ৰিয় কৰক - দ্রুত গতিৰ পৰা অডিঅ\' উচ্চ-পিচ হ\'ব পৰা অৱস্থাৰ পৰা ৰোধ কৰে আৰু ধীৰ গতিৰ পৰা কম-পিচ হ\'ব পৰা অৱস্থাৰ পৰা ৰোধ কৰে - অডিঅ\' চেনেল - অটো-সুৰক্ষিত - অটো - মোনো - ষ্টেৰিও - বিপৰীত ষ্টেৰিও - ভলিউম বুস্ট কেপ - কাষ্টম বুটামসমূহ - কাষ্টম বুটামৰ সৈতে Lua কোড চলাওক - কাষ্টম বুটাম সম্পাদনা কৰক - কাষ্টম বুটাম গাইড - আপোনাৰ কোনো কাষ্টম বুটাম নাই। নতুন কাষ্টম বুটাম সৃষ্টি কৰিবলৈ প্লাছ বুটাম টেপ কৰক। - বুটাম যোগ কৰক - বুটাম সম্পাদনা কৰক - শীৰ্ষক - বুটাম ইতিমধ্যে আছে! - Lua কোড - Lua কোড (দীৰ্ঘসময় টিপোঁতে) - (ঐচ্ছিক) - বুটাম আঁতৰাওক - আপুনি %s বুটামটো মচি পেলাব বিচাৰেনে? - ষ্টাৰ্টআপত + উপশিৰোনামাৰ বাবে ব্লেকলিষ্ট। যদি ব্লেকলিষ্ট নিৰ্ধাৰিত হয়, তেন্তে ব্লেকলিষ্টৰ শব্দ থকা সকলো উপশিৰোনামা ফিল্টাৰ কৰা হ’ব। একাধিক মান কমাৰে পৃথক কৰিব পাৰি। + শব্দ + পছন্দৰ ভাষা, পিচ সংশোধন, শব্দৰ চেনেল + পছন্দৰ ভাষা + একাধিক শব্দৰ স্ট্ৰিম থকা ভিডিঅ’ত ডিফল্ট হিচাপে নিৰ্বাচিত শব্দৰ ভাষা(সমূহ), দুই বা তিনি আখৰৰ ভাষা ক’ড কাম কৰে। একাধিক মান কমাৰে পৃথক কৰিব পাৰি। + শব্দৰ পিচ সংশোধন সক্ৰিয় কৰক + দ্ৰুত গতিত শব্দ উচ্চ-পিচ হোৱা আৰু ধীৰ গতিত কম-পিচ হোৱা প্ৰতিৰোধ কৰে + শব্দৰ চেনেল + স্বয়ংক্ৰিয়-নিৰাপদ + স্বয়ংক্ৰিয় + মনো + ষ্টেৰিঅ’ + উলোট ষ্টেৰিঅ’ + শব্দৰ মাত্ৰা বৃদ্ধিৰ সীমা + কাষ্টম বাটন + কাষ্টম বাটনৰ সৈতে Lua ক’ড চলাওক + কাষ্টম বাটন সম্পাদনা কৰক + কাষ্টম বাটনৰ গাইড + আপোনাৰ কোনো কাষ্টম বাটন নাই। নতুন বাটন সৃষ্টি কৰিবলৈ প্লাছ বাটনত টিপক। + বাটন যোগ কৰক + বাটন সম্পাদনা কৰক + শিৰোনাম + বাটন ইতিমধ্যে আছে! + Lua ক’ড + Lua ক’ড (দীঘলীয়া টিপাৰ সময়ত) + (বৈকল্পিক) + বাটন মচক + আপুনি %s বাটনটো মচিব বিচাৰে নেকি? + আৰম্ভণিত (আইডি: %d) উন্নত - স্ক্ৰিপ্ট, mpv.conf, input.conf - MPV স্ক্ৰিপ্ট সক্ৰিয় কৰক - বাহ্যিক সঞ্চয় অনুমতিৰ প্ৰয়োজন। - অধিক প্লেয়াৰ ছেটিংছৰ বাবে MPV কনফিগাৰেচন ফাইল সম্পাদনা কৰক - MPV কনফিগাৰেচন ফাইল ৰিছেট কৰক - কীবোর্ড মেপিং কনফিগাৰেচন কাৰণে MPV ইনপুট ফাইল সম্পাদনা কৰক - স্ক্ৰিনত ফিট কৰক - স্ক্ৰিনত ক্ৰমিত - স্ক্ৰিনলৈ সৰ্পিত + ব্যৱহাৰকাৰীৰ ফাইল, mpv.conf, input.conf + অধিক প্লেয়াৰ সংহতিৰ বাবে MPV কনফিগাৰেশ্যন ফাইল সম্পাদনা কৰক + MPV কনফিগাৰেশ্যন ফাইল পুনৰ স্থাপন কৰক + কীব’ৰ্ড মেপিং কনফিগাৰেশ্যনৰ বাবে MPV ইনপুট ফাইল সম্পাদনা কৰক + পৰ্দাত খাপ খুৱাওক + পৰ্দাত কাটি লোৱা + পৰ্দালৈ টানি লোৱা %1$s - E%2$s - %3$s - টোপনিৰ টাইমাৰ শেষ হ’ল - ms - মূল্য বহুত ডাঙৰ - মূল্য অতি কম - অট\'প্লে সক্ৰিয় - অট\'প্লে নিষ্ক্ৰিয় - এৰাই দিয়া নহয় - %d ছেকেণ্ডত %s এৰি দিয়া হৈছে - %s এৰাই দিয়া - পৰৱৰ্তী এপিচ\'ড পোৱা নগ\'ল! - পূৰ্বৰ খণ্ডটো পোৱা নগ\'ল! - অবিকল্পিত হিচাপে নিৰ্ধাৰণ কৰক - অডিঅ\' বিলম্ব - শব্দ শুনা গ’ল - শব্দ দাগ পৰা + টোপনিৰ টাইমাৰ শেষ হৈছে + মিলিছেকেণ্ড + মান অতি বেছি + মান অতি কম + স্বয়ংক্ৰিয় চলন সক্ৰিয় + স্বয়ংক্ৰিয় চলন অক্ষম + এৰি নিদিব + %d ছেকেণ্ডত %s এৰি দিয়া হ’ব + %s এৰি দিয়া হৈছে + পৰৱৰ্তী পৰ্ব পোৱা নগ’ল! + আগৰ পৰ্ব পোৱা নগ’ল! + ডিফল্ট হিচাপে স্থাপন কৰক + শব্দৰ বিলম্ব + শব্দ শুনা গৈছে + শব্দ চিনাক্ত কৰা হৈছে উপশিৰোনামাৰ বিলম্ব গতি বিলম্ব প্ৰাথমিক - মাধ্যমিক + গৌণ দুয়োটা - মাত শুনা গ’ল - টেক্সট দেখা গৈছে - শব্দ শুনা গ’ল - শব্দ দাগ পৰা - ৰংবোৰ - পাঠ্য + কণ্ঠ শুনা গৈছে + লিখনী দেখা গৈছে + শব্দ শুনা গৈছে + শব্দ চিনাক্ত কৰা হৈছে + ৰং + লিখনী সীমা - পৃষ্ঠভূমি + পটভূমি ৰঙা সেউজীয়া নীলা আলফা - উপশিৰোনামাৰ ছেটিংছ + উপশিৰোনামাৰ সংহতি টাইপোগ্ৰাফী ফন্ট - ফণ্টৰ আকাৰ - সীমান্ত শৈলী + ফন্টৰ আকাৰ + সীমাৰ শৈলী সীমাৰ আকাৰ - ছাঁ অফছেট - ৰূপৰেখা আৰু ছাঁ + ছাঁৰ অফছেট + ৰেখা আৰু ছাঁ অস্বচ্ছ বাকচ পটভূমিৰ বাকচ - সানমিহলি - ASS/SSA উপশিৰোনামাসমূহ অভাৰৰাইড কৰক - মাপন + বিবিধ + ASS/SSA উপশিৰোনামা ওভাৰৰাইড কৰক + মাপ অৱস্থান - ফিল্টাৰসমূহ + ফিল্টাৰ উজ্জ্বলতা - বিষমতা + বৈপৰীত্য গামা - সেচুৰেশ্বন - হিউ - কিছুমান ফিল্টাৰে আপোনাৰ বৰ্তমানৰ ভিডিঅ\' ড্ৰাইভাৰত কাম নকৰিবও পাৰে - বাহ্যিক অডিঅ\' ট্ৰেক যোগ কৰক + সংপৃক্তি + ৰঙৰ ছাঁ + কিছুমান ফিল্টাৰ আপোনাৰ বৰ্তমানৰ ভিডিঅ’ ড্ৰাইভাৰত কাম নকৰিব পাৰে + বাহ্যিক শব্দৰ ট্ৰেক যোগ কৰক %s (%s) অধিক হাৰ্ডৱেৰ ডিক’ডিং মোড - অডিঅ\' চেনেল - অবিকল্পিত পৰিসংখ্যা পৃষ্ঠা + শব্দৰ চেনেল + ডিফল্ট পৰিসংখ্যান পৃষ্ঠা বন্ধ পৃষ্ঠা %d - কাষ্টম বুটামসমূহ + কাষ্টম বাটন %d ছেকেণ্ড টোপনিৰ টাইমাৰ %s বাকী আছে সময়সীমা লিখক - সময়সীমা বাছি লওক + সময়সীমা বাছক বৰ্তমানৰ টাইমাৰ বাতিল কৰক গতি - অবিকল্পিত গতি কৰক - অডিঅ\' পিচ সংশোধন সামৰ্থবান কৰক - দ্ৰুত গতিত অডিঅ’ উচ্চ-পিচ আৰু লেহেমীয়া গতিত কম-পিচ হোৱাত বাধা দিয়ে + ডিফল্ট গতি স্থাপন কৰক + শব্দৰ পিচ সংশোধন সক্ৰিয় কৰক + দ্ৰুত গতিত শব্দ উচ্চ-পিচ আৰু ধীৰ গতিত কম-পিচ হোৱা প্ৰতিৰোধ কৰে বাহ্যিক উপশিৰোনামা যোগ কৰক - মাধ্যমিক উপশিৰোনামাত কোনো ASS/SSA Styling নাথাকিব। - সাবটাইটেল অন্তৰ্ভুক্ত কৰক - এপ ভাষা, বাৰ্তা + গৌণ উপশিৰোনামাত কোনো ASS/SSA শৈলী নাথাকিব। + উপশিৰোনামা অন্তৰ্ভুক্ত কৰক + এপৰ ভাষা, অধিসূচনা ক্লাউডফ্লেয়াৰ - নীলমণি - অপায় + চফায়াৰ + ডুম মেট্ৰিক্স তালিকাৰ আকাৰ - পঢ়া অধ্যায়ত পঢ়াৰ অৱস্থান সংৰক্ষণ কৰক - সৰ্বাধিক ডাউনলোড - কাষ্টম বুটামসমূহ + পঢ়া অধ্যায়ত পঢ়াৰ অৱস্থান সাঁচি ৰাখক + সৰ্বোচ্চ ডাউনলোড + কাষ্টম বাটন স্থানীয় - নতুন পর্ব প্ৰায় %1$s সময়ত মুকলি হ’ব, প্ৰতি %2$s সময়ত পৰীক্ষা কৰা হ’ব। - এই এনিমে হয় সম্পূৰ্ণ হৈছে, নহ’লে মুক্তিৰ দিনৰ কোনো পূৰ্বানুমান নাই। - ট্ৰেকাৰক এপিচোড %d লৈ আপডেট কৰক? + নতুন পৰ্ব প্ৰায় %1$s সময়ত মুক্ত হ’ব, প্ৰতি %2$s সময়ত পৰীক্ষা কৰা হ’ব। + এই এনিমে হয় সম্পূৰ্ণ হৈছে, নহয় মুক্তিৰ তাৰিখৰ কোনো পূৰ্বাভাস নাই। + ট্ৰেকাৰক পৰ্ব %d লৈ আপডেট কৰিবনে? ট্ৰেকাৰ অধ্যায় %d লৈ আপডেট কৰা হৈছে - ট্ৰেকাৰ এপিচোড %d লৈ আপডেট কৰা হৈছে - ডাউনলোড সম্পূৰ্ণ - লুকোৱা + ট্ৰেকাৰ পৰ্ব %d লৈ আপডেট কৰা হৈছে + ডাউনলোড সম্পূৰ্ণ হৈছে + লুকুৱাওক সকলো শ্ৰেণী - মাঙ্গাৰ শ্ৰেণীসমূহ + মাঙ্গাৰ শ্ৰেণী শ্ৰেণীসমূহ - এনিমে শ্ৰেণীসমূহ - পুথিভঁৰালৰ প্ৰৱেশসমূহ - অধ্যায় আৰু এপিচ\'ডছ - এপিচ\'ডছ - সাৱধানী: ছেটিংছৰ বেকআপ কৰোতে আপোনাৰ ট্ৰেক পাছৱৰ্ডসমূহ সংৰক্ষণ কৰা হ\'ব, এই বেকআপ ফাইলটো সেয়া কৰক নেকি! + এনিমেৰ শ্ৰেণী + গ্ৰন্থাগাৰৰ প্ৰৱেশ + অধ্যায় আৰু পৰ্ব + পৰ্ব + সতৰ্কবাণী: সংহতিৰ বেকআপ লওঁতে আপোনাৰ ট্ৰেকৰ গুপ্তশব্দো সাঁচি থোৱা হ’ব, এই বেকআপ ফাইল ভাগ-বতৰা নকৰিব! মাঙ্গা এনিমে এনিমে মাঙ্গা - এনিমে আপডেটসমূহ - মাঙ্গাৰ উৎসসমূহ - এনিমে উৎসসমূহ + এনিমেৰ আপডেট + মাঙ্গাৰ উৎস + এনিমেৰ উৎস দেখা সময় দেখা হৈছে - আৰম্ভণি স্ক্ৰীন - প্ৰতি সারীত মাঙ্গা সামগ্ৰী - প্ৰতি সারীত এনিমে সামগ্ৰী - ইতিহাসক ম\'ৰ টেবলৈ স্থানান্তৰ কৰক - আপডেটক ম\'ৰ টেবলৈ স্থানান্তৰ কৰক - মাঙ্গাক ম\'ৰ টেবলৈ স্থানান্তৰ কৰক - ব্ৰাউজক ম\'ৰ টেবলৈ স্থানান্তৰ কৰক - অদেখা - গ্ল\'বেল মাঙ্গা সন্ধান - গ্ল\'বেল এনিমে সন্ধান - মুঠ এপিচ\'ডছ - শেষ দেখা - শেষ চোৱা - সৰ্বশেষ এপিচ\'ড + আৰম্ভণি পৰ্দা + প্ৰতি শাৰীত মাঙ্গাৰ বস্তু + প্ৰতি শাৰীত এনিমেৰ বস্তু + ইতিহাসক অধিক টেবলৈ স্থানান্তৰ কৰক + আপডেটক অধিক টেবলৈ স্থানান্তৰ কৰক + মাঙ্গাক অধিক টেবলৈ স্থানান্তৰ কৰক + ব্ৰাউজক অধিক টেবলৈ স্থানান্তৰ কৰক + নদেখা + বিশ্বজনীন মাঙ্গা অনুসন্ধান + বিশ্বজনীন এনিমে অনুসন্ধান + মুঠ পৰ্ব + শেষবাৰ দেখা + শেষবাৰ পৰীক্ষা কৰা + সৰ্বশেষ পৰ্ব শেষ এনিমে আপডেট - অদেখা গণনা - এপিচ\'ড প্ৰাপ্তিৰ তাৰিখ - দেখা হিচাপে চিহ্নিত কৰক - অদেখা হিচাপে চিহ্নিত কৰক - পূৰ্বৰটো দেখা হিচাপে চিহ্নিত কৰক - আন্তৰিকভাৱে খেলাওক - বাহ্যিকভাৱে খেলাওক - অপঢ়া অধ্যায় ডাউনলোড কৰক - অদেখা এপিচ\'ডছ ডাউনলোড কৰক - এপিচ\'ড বুকমাৰ্ক কৰক - এপিচ\'ড বুকমাৰ্ক আঁতৰাওক - এনিমে শ্ৰেণী সম্পাদনা কৰক - মাঙ্গা শ্ৰেণী সম্পাদনা কৰক - এপিচ\'ডছ চাওক - পূৰ্বৰ এপিচ\'ড - খেলাওক - পৰৱৰ্তী এপিচ\'ড - স্ক্ৰীন ফিট মোড + নদেখাৰ সংখ্যা + পৰ্ব প্ৰাপ্তিৰ তাৰিখ + দেখা বুলি চিহ্নিত কৰক + নদেখা বুলি চিহ্নিত কৰক + আগৰটো দেখা বুলি চিহ্নিত কৰক + অভ্যন্তৰীণভাৱে চলাওক + বাহ্যিকভাৱে চলাওক + অপঢ়া অধ্যায় ডাউনলোড কৰক + নদেখা পৰ্ব ডাউনলোড কৰক + পৰ্ব বুকমাৰ্ক কৰক + পৰ্বৰ বুকমাৰ্ক আঁতৰাওক + এনিমেৰ শ্ৰেণী সম্পাদনা কৰক + মাঙ্গাৰ শ্ৰেণী সম্পাদনা কৰক + পৰ্ব চাওক + আগৰ পৰ্ব + চলাওক + পৰৱৰ্তী পৰ্ব + পৰ্দাৰ খাপ মোড এনিমে দেখুৱাওক - ডাউনলোড কৰা এপিচ\'ডছ - স্থানীয় মাঙ্গা - স্থানীয় এনিমে - গ্ল\'বেল সন্ধানত কেৱল পিন কৰা মাঙ্গা উৎসসমূহ সন্ধান কৰক - গ্ল\'বেল সন্ধানত কেৱল পিন কৰা এনিমে উৎসসমূহ সন্ধান কৰক - পুথিভঁৰালত ইতিমধ্যে থকা মাঙ্গা প্ৰৱেশসমূহ লুকোৱাচোন - পুথিভঁৰালত ইতিমধ্যে থকা এনিমে প্ৰৱেশসমূহ লুকোৱাচোন - এপিচ\'ড নম্বৰৰ দ্বাৰা + ডাউনলোড কৰা পৰ্ব + স্থানীয় মাঙ্গা + স্থানীয় এনিমে + বিশ্বজনীন অনুসন্ধানত কেৱল পিন কৰা মাঙ্গাৰ উৎস অনুসন্ধান কৰক + বিশ্বজনীন অনুসন্ধানত কেৱল পিন কৰা এনিমেৰ উৎস অনুসন্ধান কৰক + গ্ৰন্থাগাৰত ইতিমধ্যে থকা মাঙ্গাৰ প্ৰৱেশ লুকুৱাওক + গ্ৰন্থাগাৰত ইতিমধ্যে থকা এনিমেৰ প্ৰৱেশ লুকুৱাওক + পৰ্বৰ সংখ্যা অনুসৰি বাহ্যিক ডাউনলোডাৰ ব্যৱহাৰ কৰক - আন্তৰিক ডাউনলোডাৰ ব্যৱহাৰ কৰক - পৰিসৰৰ নেভিগেশন শৈলী - আৰম্ভণি স্ক্ৰীনক মাঙ্গা ট্যাবলৈ সজাওক + অভ্যন্তৰীণ ডাউনলোডাৰ ব্যৱহাৰ কৰক + তলৰ নেভিগেশ্যন শৈলী + আৰম্ভণি পৰ্দা মাঙ্গা টেবত স্থাপন কৰক ডিফল্ট মাঙ্গা শ্ৰেণী ডিফল্ট এনিমে শ্ৰেণী - বহিষ্কৃত শ্ৰেণীত থকা মাঙ্গাসমূহ অন্তৰ্ভুক্ত শ্ৰেণীত থকা হ’লেও আপডেট কৰা হ’ব নে। - বহিষ্কৃত শ্ৰেণীত থকা এনিমেছমূহ অন্তৰ্ভুক্ত শ্ৰেণীত থকা হ’লেও আপডেট কৰা হ’ব নে। - এই এক্সটেনচনটি আনুষ্ঠানিক তালিকাৰ পৰা নহয়। - এই এক্সটেনচনটি আনুষ্ঠানিক তালিকাৰ পৰা নহয়। + বাদ দিয়া শ্ৰেণীত থকা মাঙ্গা, অন্তৰ্ভুক্ত শ্ৰেণীত থাকিলেও আপডেট নহ’ব। + বাদ দিয়া শ্ৰেণীত থকা এনিমে, অন্তৰ্ভুক্ত শ্ৰেণীত থাকিলেও আপডেট নহ’ব। + এই এক্সটেনশ্যন আনুষ্ঠানিক তালিকাৰ পৰা নহয়। + এই এনিমে এক্সটেনশ্যন আনুষ্ঠানিক তালিকাৰ পৰা নহয়। %1$d%% - বহিষ্কৃত মাঙ্গা কেটেগৰী - বহিষ্কৃত এনিমে কেটেগৰী + বাদ দিয়া মাঙ্গা শ্ৰেণী + বাদ দিয়া এনিমে শ্ৰেণী বাহ্যিক ডাউনলোডাৰ - সৰ্বদা এনিমে বাবে বাহ্যিক ডাউনলোডাৰ ব্যৱহাৰ কৰক - ডাউনলোডাৰ এপ্প পছন্দ - নতুন এপিছোড ডাউনলোড কৰক - দেখা এপিচোডৰ পুনৰাবৃত্তি ডাউনলোড কৰা এৰি দিয়ক - দেখাৰ সময়ত অটো ডাউনলোড - কেৱল পুথিভঁৰালত থকা এন্ট্ৰীসমূহত কাম কৰে আৰু যদি বৰ্তমান এপিছোড আৰু পৰৱৰ্তী এপিছোড ইতিমধ্যে ডাউনলোড কৰা থাকে - পুথিভঁৰালত যোগ কৰাৰ সময়ত ট্রেক মেনু খোলক - পৰৱৰ্তী এপিছোডৰ এয়াৰিং সময় প্ৰদৰ্শন কৰক - ব্যাকআপ ফাইলত কিমান তথ্য অন্তৰ্ভুক্ত কৰিব - এনিমে সঞ্চয় ব্যৱহাৰ - মাঙ্গা সঞ্চয় ব্যৱহাৰ - এনিমে দ্বাৰা ব্যৱহৃত: %1$s, মাঙ্গা দ্বাৰা ব্যবহৃত: %2$s - মাঙ্গা ডেটাবেছ ক্লিয়াৰ কৰক - এনিমে ডেটাবেছ ক্লিয়াৰ কৰক - আপোনাৰ পুথিভঁৰালত সংৰক্ষণ নকৰা মাঙ্গাৰ ইতিহাস মচি পেলাওক - আপোনাৰ পুথিভঁৰালত সংৰক্ষণ নকৰা এনিমেৰ ইতিহাস মচি পেলাওক - পুথিভঁৰালৰ পৰা এনিমে - ডাউনলোড কৰা এপিছোড - স্থানীয় মাঙ্গা উৎস - স্থানীয় এনিমে উৎস - এপিছোড নাপাল - অবৈধ এপিছোড ফৰ্মেট - অজ্ঞাত ষ্টুডিঅ\' - আপোনাৰ নিশ্চিত যে আপুনি %s মচি পেলাব বিচাৰিছে? - ডাউনলোড কৰা এপিছোড মচি পেলাব? - মাঙ্গা পুথিভঁৰালত যোগ কৰিব? - এনিমে পুথিভঁৰালত যোগ কৰিব? - এপিছোড %1$s - ডাউনলোড কৰা (%d%%) - ভুল - পজ্ - এপিছোড নম্বৰ - এপিছোড নম্বৰ অনুসৰি - নহোৱা - আপুনি নিশ্চিত যে নিৰ্বাচিত এপিছোডসমূহ মচিব বিচাৰে? - মোৰ পুথিভঁৰালৰ সকলো এনিমেৰ বাবেো প্ৰযোজ্য কৰক - এপিছোড নাপালু - দেখি আছে - বর্তমানে পঢ়ি আছে - বৰ্তমান চাওঁতে + এনিমেৰ বাবে সদায় বাহ্যিক ডাউনলোডাৰ ব্যৱহাৰ কৰক + ডাউনলোডাৰ এপৰ পছন্দ + নতুন পৰ্ব ডাউনলোড কৰক + দেখা পৰ্বৰ পুনৰাবৃত্তি ডাউনলোড এৰি দিয়ক + চোৱাৰ সময়ত স্বয়ংক্ৰিয় ডাউনলোড + কেৱল গ্ৰন্থাগাৰৰ প্ৰৱেশত কাম কৰে আৰু যদি বৰ্তমানৰ পৰ্ব আৰু পৰৱৰ্তী পৰ্ব ইতিমধ্যে ডাউনলোড কৰা হৈছে + গ্ৰন্থাগাৰত যোগ কৰোঁতে ট্ৰেক মেনু খোলক + পৰৱৰ্তী পৰ্বৰ প্ৰচাৰৰ সময় দেখুৱাওক + বেকআপ ফাইলত কি তথ্য অন্তৰ্ভুক্ত কৰিব + এনিমেৰ সঞ্চয় ব্যৱহাৰ + মাঙ্গাৰ সঞ্চয় ব্যৱহাৰ + এনিমেৰ দ্বাৰা ব্যৱহৃত: %1$s, মাঙ্গাৰ দ্বাৰা ব্যৱহৃত: %2$s + মাঙ্গাৰ ডেটাবেছ খালি কৰক + এনিমেৰ ডেটাবেছ খালি কৰক + গ্ৰন্থাগাৰত সাঁচি নথকা মাঙ্গাৰ ইতিহাস মচক + গ্ৰন্থাগাৰত সাঁচি নথকা এনিমেৰ ইতিহাস মচক + গ্ৰন্থাগাৰৰ পৰা এনিমে + ডাউনলোড কৰা পৰ্ব + স্থানীয় মাঙ্গাৰ উৎস + স্থানীয় এনিমেৰ উৎস + পৰ্বটো বিচাৰি পোৱা নগ’ল + অবৈধ পৰ্বৰ ফৰ্মেট + অজ্ঞাত ষ্টুডিঅ’ + আপুনি নিশ্চিত নেকি যে %s মচিব বিচাৰে? + ডাউনলোড কৰা পৰ্ব মচিবনে? + মাঙ্গা গ্ৰন্থাগাৰত যোগ কৰিবনে? + এনিমে গ্ৰন্থাগাৰত যোগ কৰিবনে? + পৰ্ব %1$s + ডাউনলোড হৈছে (%d%%) + ত্ৰুটি + ৰখোৱা হৈছে + পৰ্বৰ সংখ্যা + পৰ্বৰ সংখ্যা অনুসৰি + নদেখা + আপুনি নিশ্চিত নেকি যে নিৰ্বাচিত পৰ্বসমূহ মচিব বিচাৰে? + মোৰ গ্ৰন্থাগাৰৰ সকলো এনিমেৰ বাবেও প্ৰয়োগ কৰক + কোনো পৰ্ব পোৱা নগ’ল + চাই আছে + বৰ্তমান পঢ়ি আছে + বৰ্তমান চাই আছে চাবলৈ পৰিকল্পনা - আকর্ষণীয় নহয় + আকৰ্ষণীয় নহয় পঢ়িব বিচাৰে চাবলৈ বিচাৰে - পুনৰাৱৃত্তি - এই এপিচ’ডৰ চাওঁতাৰ তাৰিখ মচি দিব। আপুনি নিশ্চিত নেকি? - এই এনিমে\'ৰ সকলো এপিচ\'ড ৰিছেট কৰক + পুনৰ চোৱা + এই পৰ্বৰ চোৱাৰ তাৰিখ মচি পেলাব। আপুনি নিশ্চিত নেকি? + এই এনিমেৰ সকলো পৰ্ব পুনৰ স্থাপন কৰক %1$s: %2$s, %3$s অগ্ৰগতি: %1$s/%2$s অগ্ৰগতি: %1$s - এপিচ\'ড %1$s - %2$s - ভিডিঅ\' পোৱা নগ\'ল - নতুন এপিচ\'ড পোৱা গৈছে - সম্প্ৰতি কিবা দেখা হোৱা নাই - ডিফল্ট এপিচ\'ড স্থিতি আপডেট কৰা হৈছে - অধ্যায়ৰ ডাউনলোড সাময়িকভাবে ৰোধ কৰা হৈছে - এপিচ\'ডৰ ডাউনলোড সাময়িকভাবে ৰোধ কৰা হৈছে - অধ্যায়/এপিচ\'ড আপডেট - ষ্ট\'ৰেজ - মাংগা + পৰ্ব %1$s - %2$s + কোনো ভিডিঅ’ পোৱা নগ’ল + নতুন পৰ্ব পোৱা গৈছে + সম্প্ৰতি কিবা চোৱা হোৱা নাই + ডিফল্ট পৰ্বৰ সংহতি আপডেট কৰা হৈছে + অধ্যায়ৰ ডাউনলোড ৰখোৱা হৈছে + পৰ্বৰ ডাউনলোড ৰখোৱা হৈছে + অধ্যায়/পৰ্বৰ আপডেট + সঞ্চয় + মাঙ্গা এনিমে - মাংগা + মাঙ্গা এনিমে - ইন্ট্ৰো লম্বাই সলনি কৰক - এপিচ’ড %1$s - এপিচ’ড %1$s আৰু %2$d অধিক - এপিচ’ডবোৰ %1$s - এপিচ’ড সেটিংছ - বেকআপ অপচন - মাঙা এক্সটেনচন - এনিমে এক্সটেনচন - মাঙা স্থানান্তৰ + ইন্ট্ৰ’ৰ দৈৰ্ঘ্য সলনি কৰক + পৰ্ব %1$s + পৰ্ব %1$s আৰু %2$d অধিক + পৰ্বসমূহ %1$s + পৰ্বৰ সংহতি + বেকআপৰ বিকল্প + মাঙ্গাৰ এক্সটেনশ্যন + এনিমেৰ এক্সটেনশ্যন + মাঙ্গা স্থানান্তৰ এনিমে স্থানান্তৰ - সেটিংছ - ভিডিঅ’ গুণমান লিংক ক্লিপব’ৰ্ডত কপি কৰা হৈছে - ভিডিঅ’ গুণমান বাচক: - এক্সটেনচন সেটিংছ - কটন কেণ্ডী - ম’চা - সৱাইপ ডান দিশৰ কাৰ্য - সৱাইপ বাওঁ দিশৰ কাৰ্য - বিভাগ আৰু সঞ্চয় স্ক্ৰীনৰ পৰা লুকোৱা বিভাগবোৰ লুকাওক - প্ৰত্যাশিত এনিমে মুক্তিৰ গ্ৰেছ পিৰিয়ড - ডাটা ছেভাৰৰ পৰা বাদ দিয়ক - ডাটা ছেভাৰৰ পৰা বাদ দিয়া বন্ধ কৰক - ডাটা ছেভাৰ - ডাউনলোড কৰাৰ বা পঢ়োৱাৰ সময়ত চিত্ৰসমূহ চিপা কৰক - ডাটা ছেভাৰ ডাউনলোডাৰত ব্যৱহাৰ কৰক - জপেগ চিত্ৰসমূহ উপেক্ষা কৰক - জিফ এনিমেশ্বনসমূহ উপেক্ষা কৰক - চিত্ৰ গুণমান - উচ্চ মূল্যসমূহ মানে যে চিত্ৰৰ গুণমানৰ অধিক শতাংশ সঞ্চয় কৰা হয়, কিন্তু ফাইলৰ আকাৰো বৃদ্ধি পায়, ৮০ শতাংশ হৈছে ফাইলৰ আকাৰ আৰু চিত্ৰৰ গুণমানৰ মাজত এটা ভাল মেডিয়ান - জপেগলৈ চিপাওক - জপেগ ফাইলৰ আকাৰ উল্লেখযোগ্যভাৱে সৰু হয়, কিন্তু চিত্ৰবোৰ অধিক গুণমান হাৰায়। -\nবৰ্তমান জপেগলৈ চিপা হৈছে - জপেগ ফাইলৰ আকাৰ উল্লেখযোগ্যভাৱে সৰু হয়, কিন্তু চিত্ৰবোৰ অধিক গুণমান হাৰায়। -\nবৰ্তমান ৱেবপলৈ চিপা হৈছে - কালা আৰু সাদা ৰূপান্তৰ কৰক - বেণ্ডউইড্থ হিৰ’ (এক বেণ্ডউইড্থ হিৰ’ প্ৰক্সি ছাৰ্ভাৰ প্ৰয়োজন) + সংহতি + ভিডিঅ’ৰ গুণমানৰ লিংক ক্লিপব’ৰ্ডত কপি কৰা হৈছে + ভিডিঅ’ৰ গুণমান বাছক: + এক্সটেনশ্যনৰ সংহতি + কটন কেণ্ডি + ম’কা + সোঁৱৰণৰ সোঁ দিশৰ কাৰ্য + সোঁৱৰণৰ বাওঁ দিশৰ কাৰ্য + শ্ৰেণী আৰু সঞ্চয় পৰ্দাৰ পৰা লুকুৱা শ্ৰেণী লুকুৱাওক + প্ৰত্যাশিত এনিমে মুক্তিৰ অনুমোদন সময় + ডাটা সঞ্চয়কাৰীৰ পৰা বাদ দিয়ক + ডাটা সঞ্চয়কাৰীৰ পৰা বাদ দিয়া বন্ধ কৰক + ডাটা সঞ্চয়কাৰী + ডাউনলোড বা পঢ়াৰ সময়ত ছবি সংকোচন কৰক + ডাউনলোডাৰত ডাটা সঞ্চয়কাৰী ব্যৱহাৰ কৰক + JPEG ছবি উপেক্ষা কৰক + GIF এনিমেশ্যন উপেক্ষা কৰক + ছবিৰ গুণমান + উচ্চ মান মানে ছবিৰ গুণমানৰ অধিক শতাংশ সাঁচি থোৱা হয়, কিন্তু ফাইলৰ আকাৰো বাঢ়ে, ৮০ শতাংশ ফাইলৰ আকাৰ আৰু ছবিৰ গুণমানৰ মাজত এক ভাল মধ্যমান + JPEG-লৈ সংকোচন কৰক + JPEG ফাইলৰ আকাৰ WebPতকৈ যথেষ্ট সৰু (অধিক ডাটা সঞ্চয় হয়), কিন্তু ছবিৰ গুণমানো অধিক হেৰায়।\nবৰ্তমান JPEG-লৈ সংকোচন কৰা হৈছে + JPEG ফাইলৰ আকাৰ WebPতকৈ যথেষ্ট সৰু (অধিক ডাটা সঞ্চয় হয়), কিন্তু ছবিৰ গুণমানো অধিক হেৰায়।\nবৰ্তমান WebP-লৈ সংকোচন কৰা হৈছে + ক’লা আৰু বগাৰ বাবে ৰূপান্তৰ কৰক + বেণ্ডউইড্থ হিৰ’ (বেণ্ডউইড্থ হিৰ’ প্ৰক্সি ছাৰ্ভাৰৰ প্ৰয়োজন) wsrv.nl resmush.it বেণ্ডউইড্থ হিৰ’ প্ৰক্সি ছাৰ্ভাৰ - বেণ্ডউইড্থ হিৰ’ প্ৰক্সি ছাৰ্ভাৰ URL ইয়াত দিয়ক - আত্ম-হোস্টেড বা মিত্ৰণহীন উৎসৰ পৰা কেৱল একে সময়তে ডাউনলোড কৰিব + বেণ্ডউইড্থ হিৰ’ প্ৰক্সি ছাৰ্ভাৰৰ URL ইয়াত দিয়ক + কেৱল আত্ম-হ’ষ্টেড বা মিটাৰ নথকা উৎসৰ পৰা একে সময়ত ডাউনলোড কৰিব নদেখা - মাঙা এক্সটেনচন ৰেপ’জ - এনিমে এক্সটেনচন ৰেপ’জ - ডিফল্ট আনিওমি ফোল্ডাৰ সৃষ্টি কৰক - ডাউনলোড স্পিড সীমা - স্পিড সীমা অক্ষম কৰিবলৈ ০ ত ছেট কৰক। - \ No newline at end of file + মাঙ্গাৰ এক্সটেনশ্যন ৰেপ’ + এনিমেৰ এক্সটেনশ্যন ৰেপ’ + ডিফল্ট Aniyomi ফ’ল্ডাৰ সৃষ্টি কৰক + অধ্যায় ডাউনলোডৰ গতি সীমা + গতিৰ সীমা অক্ষম কৰিবলৈ ০ ত স্থাপন কৰক। + নদেখা এপিচোড + থমক + চালাই যাওক + মান্গা + অধ্যায়ৰ আচৰণ + %s\'ত অতিৰিক্ত ৰেপ’ যোগ কৰক। এইটো এটা URL হ’ব লাগে যি \"index.min.json\"ৰে শেষ হয়। + শুধুমাত্ৰ তেতিয়া কাম কৰিব যদি বৰ্তমান চেপ্টাৰ/এপিচ\'ড + পৰৱৰ্তীটো ইতিমধ্যে ডাউনলোড কৰা থাকে। + সকলো পঢ়া/পৰিসমাপ্ত দ্ৰব্য + শেষ মাঙ্গা আপডেট + মাঙ্গা দেখুৱাওক + চলোৱা/পঢ়া বুটাম + অদেখা এপিচ\'ড(ছ)/অপঢ়া অধ্যায়(সমূহ) থকা প্ৰৱেশসমূহ এৰাইচোন + অধ্যায়/এপিছোড মচি পেলাওক + হাতৰ দ্বাৰা পঢ়া/দেখা হিচাপে চিহ্নিত কৰাৰ পাছত + পঢ়া/দেখাৰ পাছত স্বয়ংক্ৰিয়ভাৱে মচি পেলাওক + বুকমাৰ্ক কৰা অধ্যায়/এপিছোড মচিবলৈ অনুমতি দিয়ক + পঢ়াৰ/দেখাৰ পাছত অগ্ৰগতি আপডেট কৰক + পঢ়া/পৰিসমাপ্ত চিহ্নিত কৰিলে অগ্ৰগতি আপডেট কৰক + অধ্যায় আৰু এপিছোড কেচ ক্লিয়াৰ কৰক + অ্যাপ খোলাৰ সময়ত এপিছোড/অধ্যায় কেচ ক্লিয়াৰ কৰক + আপোনাৰ নিশ্চিত? সম্পূৰ্ণ হোৱা এপিছোড আৰু অধ্যায় আৰু পুথিভঁৰালত নথকা প্রবৃদ্ধি হেৰুৱা যাব + আপোনাৰ ইতিহাস অস্থায়ীভাবে ৰখে + পুথিভঁৰালৰ পৰা মাঙ্গা + মোৰ পুথিভঁৰালৰ সকলো মাঙ্গাৰ বাবেো প্ৰযোজ্য কৰক + এই মাংগাৰ সকলো অধ্যায় ৰিছেট কৰক + নিৰ্ধাৰিত স্থলাভাবে ডাউনলোড কৰিব পৰা নগ\'ল + সতর্কতা: বৃহৎ মাচৰ ডাউনলোডে উৎসবোৰ ধীৰ আৰু/অথবা Aniyomi বন্ধ কৰিব পাৰে। অধিক জানিবলৈ টেপ কৰক। + এপ্লিকেচনক ডাউনলোড কৰা অধ্যায় আৰু এপিচ\'ড পুনৰ পৰীক্ষা কৰিবলৈ মন্না কৰক + খেলোৱা + অভ্যন্তৰীণ প্লেয়াৰ, অঙ্গভঙ্গি, ডিক’ডাৰ, ছাবটাইটেল + হ’ষ্টাৰ + বিফল হ’ষ্টাৰ প্ৰদৰ্শন কৰক + খালী হ’ষ্টাৰ প্ৰদৰ্শন কৰক + ইন্ট্ৰ’ এৰি দিয়া + ইন্ট্ৰ’ এৰি দিয়া সক্ৰিয় কৰক + ভিডিঅ’ত ইতিমধ্যে অধ্যায় থাকিলে এনিস্কিপ অক্ষম কৰক + অবৈধ ক’ড: %s + স্ক্ৰিপ্ট সম্পাদক + নতুন স্ক্ৰিপ্ট আৰু স্ক্ৰিপ্ট বিকল্প সম্পাদনা আৰু সৃষ্টি কৰক + স্ক্ৰিপ্টসমূহ + স্ক্ৰিপ্ট বিকল্পসমূহ + ডাইৰেক্টৰিত কোনো আইটেম নাই। নতুন ফাইল যোগ কৰিবলৈ প্লাছ বাটনত টিপক। + আপোনাৰ সাঁচি নথকা পৰিবৰ্তন আছে। আপুনি তথাপিও পিছলৈ যাব বিচাৰে নেকি? + ফাইল সাঁচিব পৰা নগ’ল + ফাইল সাঁচি থোৱা হ’ল + ফাইলৰ নাম সলনি কৰক + ফাইল মচক + ফাইল ইতিমধ্যে আছে + অবৈধ ফাইলৰ নাম + ফাইল সৃষ্টি কৰক + ফাইলৰ নাম সম্পাদনা কৰক + ফাইলৰ নাম + ফাইল সৃষ্টি কৰিব পৰা নগ’ল + ফাইলৰ নাম সলনি কৰিব পৰা নগ’ল + ফাইল মচিব পৰা নগ’ল + ফাইল মচক + আপুনি নিশ্চিতভাৱে %s ফাইল মচিব বিচাৰে নেকি? + ব্যৱহাৰকাৰীৰ MPV ফাইল ব্যৱহাৰ কৰক + mpv-config ডাইৰেক্টৰিত থকা ফাইলসমূহ ব্যৱহাৰ কৰক + %1$s এৰি দিয়ক + %1$s এৰি দিয়া হ’ল + আৰম্ভণি + শেষ + পুনৰাবৃত্তি + মিশ্ৰিত আৰম্ভণি + কোনো ভিডিঅ’ উপলব্ধ নাই + হ’ষ্টাৰৰ তালিকা খালী + কোনো এপিচ’ড ল’ড হোৱা নাই + খালী তালিকাৰ পৰা হ’ষ্টাৰ নিৰ্বাচিত + বিলম্ব + পেলেট + ভিডিঅ’ ল’ড কৰিবলৈ টিপক + ভিডিঅ’ ল’ড কৰাত বিফল + গুণমান + অধ্যায়সমূহ + প্ৰকাৰ + এপিচ’ডৰ আচৰণ + ডুপ্লিকেট দেখা এপিচ’ডক দেখা বুলি চিহ্নিত কৰক + এপিচ’ড চোৱাৰ পিছত + নতুন এপিচ’ড আনাৰ পিছত + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/ca/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/ca/strings.xml index 4a46f99543..f93b661289 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/ca/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/ca/strings.xml @@ -238,4 +238,4 @@ wsrv.nl resmush.it Bandwidth Hero Proxy Server - \ No newline at end of file + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/cs/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/cs/strings.xml index 122f6cdd17..0de45491a0 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/cs/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/cs/strings.xml @@ -85,7 +85,7 @@ Automatické přerávání je zapnuté Automatické přerávání je vypnuté Nepřeskakovat - Přeskočení za %d sekund + Přeskočí %s za %d sekund Přeskočeno %s Další epizoda nenalezena! Nastavit výchozí hardwarový dekódovací režim @@ -206,8 +206,8 @@ Toto smaže datum sledování této epizody. Jste si jistí? Resetuje všechny epizody pro toto anime %1$s: %2$s, %3$s - Postup: %1$s/%2$s - Postup: %1$s + %1$s/%2$s + %1$s Ep. %1$s - %2$s Nenalezeno žádné video Nalezeny nové epizody @@ -233,4 +233,165 @@ Nastavení Limit rychlosti stahování Nastavte na 0 pro deaktivaci limitu rychlosti. - \ No newline at end of file + Neviděné epizody + Zastavit + Pokračovat + Manga + Funguje pouze v případě, že aktuální kapitola/epizoda + ta následující jsou již staženy. + Všechny přečtené/shlédnuté položky + Poslední aktualizace mangy + Zobrazit mangu + Pokračovat ve sledování/čtení tlačítko + Přeskočit položky s neviděnými epizodami/nečtenými kapitolami + Smazat kapitoly/epizody + Po ručním označení jako přečtené/shlédnuté + Po přečtení/shlédnutí automaticky smazat + Povolit mazání kapitol/epizod uložených do záložek + Aktualizovat progres po přečtení/shlédnutí + Aktualizovat progres, když je označeno jako přečtené/shlédnuté + Vymazat mezipaměť kapitol a epizod + Vymazat mezipaměť epizod/kapitol při spuštění aplikace + Jste si jistí? Dokončené epizody a kapitoly a progres u položek, které nejsou v knihovně, budou ztraceny + Pozastaví vaši historii + Manga z knihovny + Použít také na všechny mangy v mé knihovně + Resetovat všechny kapitoly této mangy + Nelze stáhnout kvůli nedostatku místa v úložisti + Upozornění: stahování velkých objemů dat může zpomalit zdroje a/nebo blokovat Aniyomi. Klepnutím se dozvíte více. + Vynutit aplikaci, aby znovu zkontrolovala stažené kapitoly a epizody + Přehrávač + Interní přehrávač, gesta, dekodéry, titulky + Progres, ovládání, orientace + Video + Ovládání + Povolit gesta v panelech + Zobrazit kruh načítání + Zobrazit ukazatel aktuální kapitoly + Zobrazí se pouze v případě, že video obsahuje kapitoly + Zobrazit hlasitost jako procento + Hostitelé + Zobrazit nefunkční hostitele + Zobrazit prázdné hostitele + Zobrazit stavový řádek systému s ovládacími prvky + Omezit animace přehrávače + Skrýt ovládací prvky přehrávače času + %1$s ms + Neprůhlednost panelu + Přeskočit úvod + Povolit přeskočení úvodu + Chování kapitoly + Přidejte další repozitáře do %s. Měla by to být URL adresa končící na „index.min.json“. + Zakázat AniSkip, pokud video již obsahuje kapitoly + Nahrazuje možnost Přeskočit 10 sekund možností Předchozí epizoda + Vyhledávání, dvojité klepnutí, ovládání médií + Posuvníky + Vyměnit posuvník hlasitosti a jasu + Vyhledávání + Zobrazit vyhledávací lištu při vyhledávání + Pokud je gesto klepnutí nastaveno na Vlastní, lze jej přiřadit prostřednictvím input.conf. Kódy kláves jsou 0x10001 pro levou stranu, 0x10002 pro střed a 0x10003 pro pravou stranu. + Vyhledat + Vlastní + Pokud je ovládání médií nastaveno na Vlastní, lze jej přiřadit prostřednictvím input.conf. Kód kláves je 0x10004 pro předchozí, 0x10005 pro přehrávání/pozastavení a 0x10006 pro další. + Povolit gpu-next + Nové video renderovací backend + Může opravit černé obrazovky u některých video kodeků, může také zlepšit výkon na úkor kvality + Jazyk(y) titulků, který se má automaticky vybrat u videa s více titulky. Lze použít u dvou- nebo třípísmenných kódů jazyků. Více hodnot lze oddělit čárkou. + Neplatný kód: \"%s\" + Seznam povolených + Seznam povolených titulků. Pokud je definován seznam povolených titulků, použije se první titulek, který obsahuje slovo ze seznamu. Více hodnot lze oddělit čárkou. + Seznam zakázaných + Seznam zakázaných titulků. Pokud je definován seznam zakázaných, budou všechny titulky obsahující slovo ze seznam zakázaných odfiltrovány. Více hodnot lze oddělit čárkou. + Preferované jazyky, korekce výšky tónu, zvukové kanály + Jazyk(y) zvuku, který se má vybrat jako výchozí u videa s více zvukovými stopami. Lze použít u dvou- nebo třípísmenných kódů jazyků. Více hodnot lze oddělit čárkou. + Povolit korekci výšky tónu + Zabraňuje tomu, aby se zvuk při vyšších rychlostech stal vysokým a při nižších rychlostech nízkým + Automatické uložení + Limit zvýšení hlasitosti + Vlastní tlačítka + Spouštění kódu lua pomocí vlastních tlačítek + Upravit vlastní tlačítka + Průvodce vlastními tlačítky + Nemáte žádná vlastní tlačítka. Klepnutím na tlačítko plus vytvořte vlastní tlačítko. + Přidat tlačítko + Upravit tlačítko + Název + Tlačítko již existuje! + Kód lua + Kód lua (při dlouhém stisknutí) + (volitelné) + Odstranit tlačítko + Chcete odstranit tlačítko %s? + Při spuštění + (ID: %d) + Editor skriptů + Upravujte a vytvářejte nové skripty a možnosti skriptů + Skripty + Možnosti skriptu + Adresář neobsahuje žádné položky. Klepnutím na tlačítko plus přidejte nový soubor. + Máte neuložené změny. Opravdu se chcete vrátit? + Nelze uložit soubor + Soubor uložen + Přejmenovat soubor + Smazat soubor + Soubor již existuje + Neplatný název souboru + Vytvořit soubor + Upravit název souboru + Název souboru + Nelze vytvořit soubor + Nelze přejmenovat soubor + Nelze smazat soubor + Smazat soubor + Chcete smazat soubor \"%s\"? + Uživatelské soubory, mpv.conf, input.conf + Použít uživatelské soubory MPV + Použít soubory v adresáři mpv-config + Resetovat konfigurační soubor MPV + Upravit vstupní soubor MPV pro konfiguraci mapování klávesnice + Přeskočit %1$s + %1$s přeskočeno + Úvod + Závěr + Shrnutí + %1$s - E%2$s - %3$s + Časovač spánku skončil + ms + Hodnota příliš velká + Hodnota příliš malá + Předchozí epizoda nebyla nalezena! + Žádná dostupná videa + Hoster seznam je prázdný + Žádná epizoda načtena + Hoster vybrán z prázdného seznamu + Nastavit jako výchozí + Zpoždění + Paleta + Zpoždění zvuku + Zvuk slyšen + Zvuk zaznamenán + Zpoždění titulků + Rychlost + Zpoždění + Primární + Sekundární + Obě + Hlas slyšen + Text viděn + Zvuk slyšen + Zvuk zaznamenán + Barvy + Text + Okraj + Pozadí + Červená + Zelená + Modrá + Alfa + Nastavení titulků + Typografie + Písmo + Velikost písma + Styl okraje + Velikost okraje + Posun stínu + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/de/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/de/strings.xml index 2b95ebee36..204cb1c491 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/de/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/de/strings.xml @@ -100,8 +100,6 @@ Lautstärkenboostlimit Erweiterte Einstellungen Skripte, mpv.conf, input.conf - Aktiviere MPV-Skripte - Benötigt externe Speicherberechtigung. MPV-Konfigurationsdatei für weitere Player-Einstellungen bearbeiten MPV-Konfigurationsdatei zurücksetzen MPV-Eingabedatei für Tastaturbelegung bearbeiten @@ -316,4 +314,60 @@ Standard-Aniyomi-Ordner erstellen Download-Geschwindigkeitsbegrenzung Auf 0 setzen, um Geschwindigkeitsbegrenzung zu deaktivieren. - \ No newline at end of file + Ungesehene Folgen + Manga + Kapitelverhalten + Füge zusätzliche Repositorys zu %s hinzu. Deren URLs sollten mit „index.min.json“ enden. + Funktioniert nur, wenn das/die aktuelle Kapitel/Folge sowie das/die darauf folgende bereits heruntergeladen sind. + Alle gelesenen/gesehenen Einträge + Letzte Manga-Aktualisierungsprüfung + Manga anzeigen + Weiterlesen/Weiterschauen-Button + Einträge mit ungelesen Kapiteln/ungesehenen Folgen überspringen + Kapitel/Folgen löschen + Nachdem manuell als gelesen/gesehen markiert + Automatisch nach dem Lesen/Schauen löschen + Erlauben, mit Lesezeichen versehene Kapitel/Folgen zu löschen + Fortschritt nach dem Lesen/Schauen aktualisieren + Fortschritt aktualisieren, wenn als gelesen/gesehen markiert wird + Kapitel- und Folgen-Zwischenspeicher leeren + Kapitel- und Folgen-Zwischenspeicher beim Öffnen der App löschen + Bist du dir sicher? Die gelesenen Kapitel/gesehenen Folgen und Fortschritte von Einträgen, die nicht in deiner Bibliothek sind, werden gelöscht + Verlauf pausieren + Manga aus der Bibliothek + Auch für alle Mangas in meiner Bibliothek anwenden + Alle Kapitel dieses Mangas zurücksetzen + Herunterladen aufgrund von zu wenig Speicherplatz nicht möglich + Achtung: Große Downloads könnten dazu führen, dass Quellen langsamer werden und/oder Aniyomi blockieren. Tippe, um mehr zu erfahren. + App zwingen, heruntergeladene Kapitel und Folgen erneut zu überprüfen + Video + Bedienelemente + Gesten in Einstellungs-Panels erlauben + Ladekreis anzeigen + Aktuelles Kapitel anzeigen + Ist nur sichtbar, wenn das Video Kapitel hat + Lautstärke in Prozent anzeigen + Hoster + Fehlerhafte Hoster anzeigen + Leere Hoster anzeigen + System-Statusleiste mit den Bedienelementen anzeigen + Player-Animationen reduzieren + Einblendedauer Player-Bedienelemente + %1$s ms + Intros überspringen + Intros überspringen aktivieren + AniSkip deaktivieren, falls das Video schon Kapitel enthält + Episoden-Verhalten + Doppelt gesehene Episode als gesehen markieren + Nach dem schauen einer Episode + Nach dem Abrufen einer neuen Episode + Deckkraft des Panels + Lautstärke- und Helligkeitsregler tauschen + Stop + Fortfahren + Schieberegler + Suchleiste beim Suchen anzeigen + Ungültiger Code: \"%s\" + Auto-Speichern + Benutzerdefinierte Schaltflächen + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/es/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/es/strings.xml index 2b6a671c12..e470765d4c 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/es/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/es/strings.xml @@ -131,9 +131,7 @@ Al iniciar (ID: %d) Avanzado - Scripts, mpv.conf, input.conf - Activar scripts MPV - Necesita permisos de almacenamiento externo. + Archivos de usuario, mpv.conf, input.conf Edita el archivo de configuración MPV para más ajustes de reproducción Restablecer el archivo de configuración MPV Editar el archivo de entrada MPV para la configuración de la asignación del teclado @@ -333,8 +331,8 @@ Esto eliminará la fecha de visualización de este episodio. ¿Seguro? Restablecer todos los episodios de este anime %1$s: %2$s, %3$s - Progreso: %1$s/%2$s - Progreso: %1$s + %1$s/%2$s + %1$s Episodio %1$s - %2$s No se encontró ningún vídeo Nuevos episodios encontrados @@ -395,4 +393,138 @@ Crear carpeta de Aniyomi por defecto Límite de velocidad de la descarga Establezca en 0 para desactivar el límite de velocidad de descarga. - \ No newline at end of file + Episodios sin ver + Parar + Continuar + Manga + Comportamiento del capítulo + Añade más repositorios a %s; la dirección URL debería de terminar en \"index.min.json\". + Solo funciona si el capítulo/episodio actual y el siguiente ya están descargados. + Todas las entradas leídas/miradas + Última actualización del manga + Mostrar manga + Botón de continuar viendo/leyendo + Saltar entradas con episodio(s) no visto(s)/capítulo(s) no leído(s) + Borrar capítulos + Tras haberlos marcado manualmente como leídos/vistos + Después de leer/ver borrar automáticamente + Permitir el borrado de capítulos/episodios marcados como favoritos + Actualizar progreso al terminar de leer/ver + Actualizar el progreso cuando se marca como leído/visto + Vaciar la caché de los capítulos y episodios + Limpiar la caché del capítulo/episodio al abrir la app + ¿Estás seguro? Episodios y capítulos completados y progreso que no esté en la biblioteca se perderá + Pausa el historial + Manga en la biblioteca + Aplicar también a todo el manga en mi biblioteca + Reiniciar todos los capítulos de este manga + No se podía descargar debido al poco espacio de almacenamiento + Advertencia: Las descargas grandes pueden llevar a que las fuentes se vuelvan cada vez más lentas y en casos extremos que los servidores limiten o impidan el acceso a Aniyomi. Toca aquí para más información. + Forzar a la aplicación a volver a comprobar los capítulos descargados + Reproductor + Reproductor interno, gestos, decodificadores, subtítulos + Hosters + Mostrar hosts fallidos + Mostrar hosts vacíos + Omitir introducción + Habilitar \"Omitir introducción\" + Desactivar AniSkip si el vídeo ya contiene capítulos + Código inválido: \"%s\" + Editor de scripts + Editar y crear nuevos scripts y opciones de script + Scripts + Opciones de script + Directorio no contiene elementos. Pulse el botón más(+) para añadir un nuevo archivo. + Tienes cambios sin guardar. ¿Deseas volver? + No se pudo guardar el archivo + Archivo guardado + Renombrar archivo + Eliminar archivo + El archivo ya existe + Nombre de archivo inválido + Crear archivo + Editar nombre de archivo + Nombre de archivo + No se pudo guardar el archivo + No se pudo renombrar el archivo + No se pudo eliminar el archivo + Eliminar archivo + ¿Desea borrar el archivo \"%s\"? + Usar archivos MPV de usuario + Usar archivos en el directorio mpv-config + Omitir %1$s + %1$s omitido + Opening + Ending + Recapitulación + Opening mixto + Temporizador de sueño terminado + No hay videos disponibles + Lista de hoster vacia + Ningún episodio cargado + Hoster Seleccionado de lista vacía + Retraso + Palette + Sonido escuchado + Sobreescribir subtítulos ASS/SSA + Matiz + Toca para cargar vídeos + Error al cargar videos + Calidades + %s (%s) + Más + Canales de audio + Pagina de estadísticas predeterminada + Desactivado + Página %d + Botones personalizados + %d segundos + Temporizador de apagado + %s restantes + Introduce la duración + Elige la duración + Velocidad + Marcar velocidad como predeterminada + Habilitar la corrección del tono de audio + Evita que el audio se vuelva agudo a velocidades más rápidas y grave a velocidades más lentas + Añadir subtítulos externos + Capítulos + Tamaño de la lista + Botones personalizados + Tipo + Incapaz de migrar el episodio a la temporada, seleccione la temporada para continuar + Incapaz de migrar temporada a episodio + Mostrar temporadas + Botón continuar viendo + Modo de visualización en cuadrícula + Temporada %1$s + Número de temporada + Por número de temporada + No se encontraron temporadas + Configuración por defecto actualizada de la temporada + Ajustes de la temporada + Comportamiento del episodio + Marca múltiples episodios vistos como vistos + Después de ver un episodio + Después de buscar nuevo episodio + Temporada + Actualizar temporada al refrescar episodios + Actualizar temporadas con cada actualización de la librería + Relleno + Marcados con relleno + Editar fondo + Fondo personalizado + Fondo guardado + Error al guardar el fondo + Error al compartir el fondo + Establecer como fondo + Establecer como miniatura + Fondo actualizado + Miniatura actualizada + Error al actualizar el fondo + Episodio marcado con relleno + Episodio marcado sin relleno + Permitir la descarga de episodios de relleno + Miniaturas de episodio + Resúmenes de episodio + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/fa/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/fa/strings.xml index 93c60af184..7907f6602d 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/fa/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/fa/strings.xml @@ -214,4 +214,4 @@ resmush.it سرور پروکسی Bandwidth Hero آدرس سرور پروکسی Bandwidth Hero را اینجا قرار دهید - \ No newline at end of file + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/fi/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/fi/strings.xml index ec6787a29d..b7383cc9a1 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/fi/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/fi/strings.xml @@ -132,4 +132,196 @@ Anime Manga Anime - \ No newline at end of file + Näkemättömät jaksot + Pysäytä + Jatkaa + Manga + Luokat, yleinen päivitys, luvun/jakson pyyhkäisy + Luvun käyttäytyminen + Lisää tietovarastot kohteeseen %s. Tämän URL-osoitteen tulisi päättyä \"index.min.json\". + Toimii vain, jos nykyinen luku/jakso + seuraava on jo ladattu. + Kaikki luetut/katsotut merkinnät + Viimeinen manga-päivitys + Näytä manga + Jatka katselua/lukemista -painike + Ohita merkinnät, joissa on lukemattomia jaksoja ja lukuja + Poista luvut/jaksot + Sen jälkeen, kun se on merkitty manuaalisesti luetuksi/katselluksi + Poista automaattisesti lukemisen/katselun jälkeen + Salli kirjanmerkkeihin merkittyjen lukujen/jaksojen poistaminen + Päivitä edistymistä lukemisen/katsomisen jälkeen + Päivitä edistyminen, kun merkitty luetuksi/katsotuksi + Tyhjennä lukujen ja jaksojen välimuisti + Tyhjennä jaksojen/lukujen välimuisti sovelluksen käynnistyksen yhteydessä + Oletko varma? Valmiit jaksot ja luvut sekä muiden kuin kirjastomerkintöjen edistyminen menetetään. + Keskeyttää historian tallentamisen + Manga kirjastosta + Koskee myös kaikkia kirjastossani olevia mangoja + Nollaa kaikki luvut tälle mangalle + Lataaminen epäonnistui tallennustilan puutteen vuoksi + Varoitus: Suuret joukkolataukset voivat hidastaa lähteitä ja/tai estää Aniyomin toiminnan. Napauta saadaksesi lisätietoja. + Pakota sovellus tarkistamaan ladatut luvut ja jaksot uudelleen + Soitin + Sisäinen soitin, eleet, dekooderit, tekstitykset + Salli eleet paneeleissa + Näytä lastausympyrän kuvake + Näytä nykyisen luvun ilmaisin + Näkyy vain, jos videossa on lukuja + Näytä äänenvoimakkuus prosentteina + Isännöitsijät + Näytä epäonnistuneet isännöitsijät + Näytä tyhjät isännöitsijät + Näytä sisältö näytön leikkauksessa + Piilota soittimen säätimet, kun soitin avataan + Näytä järjestelmän tilarivi säätimineen + Vähennä soittimen animaatiota + Piilota soittimen säätimien aika + Paneelin läpinäkymättömyys + Esittelyn ohitus + Ota esittelyn ohitus käyttöön + Painikkeen aikakatkaisu + AniSkip vaatii toimiakseen animeen seurannan MAL:lla tai Anilistilla + Poista AniSkip käytöstä, jos videossa on jo lukuja + Näytä jaksojen aloitusnäytöt, kun vaihdat jaksoja PiP-tilassa + Vaihda automaattisesti PiP-tilaan soittimesta poistuttaessa + Korvaa \"Ohita kymmenen sekuntia\" -vaihtoehdon edellisellä jaksolla + Ulkoisen soittimen asetus + Eleet + Haku, kaksoisnapautus, mediasäätimet + Liukusäätimet + Ota äänenvoimakkuuden ja kirkkauden eleet käyttöön + Vaihda äänenvoimakkuus ja kirkkauden liukusäätin + Etsitään + Ota vaakasuuntainen hakuele käyttöön + Näytä hakupalkki haettaessa + Kaksoisnapauta ohittaaksesi pituuden + Kun otettuna käyttöön, haku ei keskity avainruutuihin, mikä johtaa hitaampaan mutta tarkempaan hakuun + Kaksoisnapautus + Kaksoisnapautus (vasen) + Kaksoisnapautus (keskellä) + Kaksoisnapautus (oikea) + Kun napautusele on asetettu arvoon Mukautettu, se voidaan sitoa input.conf-tiedoston kautta. Näppäinkoodit ovat 0x10001 vasemmalle, 0x10002 keskelle ja 0x10003 oikealle. + Ei mitään + Etsi + Toista/Tauko + Vaihda jaksoa + Mukautettu + Median säätimet + Edellinen + Toista/Tauko + Seuraava + Kun median säädin on asetettu \"Mukautettu\":ksi, se voidaan sitoa input.conf-tiedoston kautta. Avainkoodit ovat 0x10004 edelliselle, 0x10005 toistolle/taukolle ja 0x10006 seuraavalle. + Dekooderi + Laitteistodekoodaus, pikselimuoto, kaistanleveyden poisto + Kokeile laitteistodekoodausta + Ota gpu-next käyttöön + Uusi videoiden hahmonnustaustapää + Kaistan purkaminen + Ei mitään + CPU + GPU + YUV420P + Käytä YUV420P-pikselimuotoa + Saattaa korjata joidenkin videokoodekkien mustat ruudut, mutta voi myös parantaa suorituskykyä laadun kustannuksella. + Tekstitykset + Ensisijaiset kielet, sallittujen lista, kiellettyjen lista + Ensisijaiset kielet + Useita tekstityksiä sisältävien videoiden tekstityskielet valitaan oletuksena. Kaksi- tai kolmikirjaimiset kielikoodit kelpaavat. Useita arvoja voidaan erottaa pilkulla. + Epäkelvollinen koodi: \"%s\" + Sallittujen lista + Sallittujen lista tekstityksille. Jos sallittujen sanojen lista on määritelty, käytetään ensimmäistä tekstitystä, joka sisältää sallittujen sanojen listalla olevan sanan. Useita arvoja voidaan erottaa pilkulla. + Kiellettyjen lista + Kiellettyjen lista tekstityksille. Kun kiellettyjen lista on määritelty, kaikki kielletyllä listalla olevan sanan sisältävät tekstitykset suodatetaan pois. Useita arvoja voidaan erottaa pilkulla. + Audio + Ensisijaiset kielet, äänenkorkeuden korjaus, äänikanavat + Ensisijaiset kielet + Oletusarvoisesti valittavat äänikielet videossa, jossa on useita äänivirtoja. Kaksi- tai kolmikirjaimiset kielikoodit kelpaavat. Useita arvoja voidaan erottaa pilkulla. + Ota äänenkorkeuden korjaus käyttöön + Estää äänen muuttumisen korkeaksi suuremmilla nopeuksilla ja matalaksi hitaammilla nopeuksilla + Äänikanavat + Käänteinen stereo + Äänenvoimakkuuden tehosteraja + Mukautetut painikkeet + Suorita lua-koodi mukautetuilla painikkeilla + Muokkaa mukautettuja painikkeita + Mukautettujen painikkeiden opas + Sinulla ei ole mukautettuja painikkeita. Napauta plus-painiketta luodaksesi mukautetun painikkeen. + Lisää-painike + Muokkaa-painike + Otsikko + Painike on jo olemassa! + Lua-koodi + Lua-koodi (pitkällä painalluksella) + (valinnainen) + Poista-painike + Haluatko poistaa painikkeen %s? + Käynnistyksen yhteydessä + Skriptimuokkain + Muokkaa ja luo uusia skriptejä ja skriptivaihtoehtoja + Skriptit + Skriptivaihtoehdot + Hakemisto ei sisällä kohteita. Lisää uusi tiedosto napauttamalla plus-merkki-painiketta. + Sinulla on tallentamattomia muutoksia. Haluatko silti palata takaisin? + Tiedostoa ei voitu tallentaa + Tiedosto tallennettu + Nimeä tiedosto uudelleen + Poista tiedosto + Tiedosto on jo olemassa + Epäkelvollinen tiedostonimi + Luo tiedosto + Muokkaa tiedoston nimeä + Tiedoston nimi + Tiedostoa ei voida luoda + Tiedostoa ei voi nimetä uudelleen + Tiedostoa ei voida poistaa + Poista tiedosto + Haluatko poistaa tiedoston \"%s\"? + Edistynyt + Käyttäjätiedostot, mpv.conf, input.conf + Käytä käyttäjän MPV-tiedostoja + Käytä tiedostoja mpv-config-hakemistossa + Muokkaa MPV-määritystiedostoa saadaksesi lisää soittimen asetuksia + Nollaa MPV-määritystiedosto + Ohita %1$s + %1$s ohitettu + Avaaminen + Päättyminen + Muokkaa MPV-syöttötiedostoa näppäimistökartoituksen määritystä varten + Uniajastin päättynyt + Arvo liian suuri + Arvo liian pieni + Edellistä jaksoa ei löytynyt! + Ei saatavilla olevia videoita + Isännöitsijöiden lista on tyhjä + Yhtään jaksoa ei ladattu + Isännöitsijä valittu tyhjästä listasta + Aseta oletukseksi + Viive + Paletti + Äänen viive + Ääni kuultu + Ääni havaittu + Tekstityksen viive + Nopeus + Viive + Ensisijainen + Toissijainen + Molemmat + Puheen ääni kuultu + Teksti nähty + Ääni kuultu + Ääni havaittu + Värit + Teksti + Reuna + Tausta + Punainen + Vihreä + Sininen + Tekstitysasetukset + Typografia + Kirjasin + Kirjasimen koko + Reunuksen tyyli + Reunuksen koko + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/fil/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/fil/strings.xml index 21addd2c33..c787d21e52 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/fil/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/fil/strings.xml @@ -116,8 +116,6 @@ Volume boost cap Karagdagan Mga script, mpv.conf, input.conf - Paganahin ang mga script ng MPV - Kinakailangan ng permiso sa external storage. I-edit ang MPV configuration file para sa karagdagang mga setting ng player Ibalik sa dati ang MPV configuration file I-edit ang MPV input file para sa keyboard mapping configuration @@ -165,7 +163,6 @@ Estilo ng border Laki ng border Shadow offset - Outline at shadow Opaque na kahon Background box At iba pa @@ -400,4 +397,4 @@ Lumikha ng default na Aniyomi folder Limito ng bilis ng pag-download Ilagay ay 0 para tanggalin ang limitadong bilis. - \ No newline at end of file + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/fr/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/fr/strings.xml index ff2c7d4fe1..db583d3f69 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/fr/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/fr/strings.xml @@ -77,8 +77,6 @@ Mono Stéréo Stéréo inversée - Activer les scripts MPV - A besoin de permissions externes de stockage. Modifier le fichier de configuration MPV pour d\'autres paramètres du lecteur Réinitialiser le fichier de configuration MPV Modifier le fichier d\'entrée MPV pour la configuration de l\'affectation du clavier @@ -89,7 +87,7 @@ La lecture automatique est activée La lecture automatique est désactivée Ne pas passer - Passer dans %d secondes + Passage de %s dans %d secondes %s passer L\'épisode suivant n\'a pas été trouvé ! Définir le mode de décodage matériel par défaut @@ -218,7 +216,7 @@ Aucun épisode trouvé En lecture Lecture en cours - Lecture en cours + Vissionage en cours À regarder Pas intéressant Envie de le lire @@ -227,8 +225,8 @@ Ceci supprimera la date de visionnage de cet épisode. Êtes-vous sûr·e ? Réinitialiser tous les épisodes de cet animé %1$s : %2$s, %3$s - Progression : %1$s/%2$s - Progression : %1$s + Progression : %1$s/%2$s + Progression : %1$s Ép. %1$s - %2$s Aucune vidéo trouvée Nouveaux épisodes trouvés @@ -259,7 +257,7 @@ Barbe à papa Mocha Action balayée vers la droite - Action balayée vers la gauche + Episode lors du balayage vers la gauche Masquer les catégories cachées de l\'écran des catégories et du stockage Délai de grâce prévu pour la sortie de l’anime Exclure de l’économiseur de données @@ -289,4 +287,213 @@ Créer le dossier par défaut d\'Aniyomi Limite de vitesse de téléchargement Mettre à 0 pour désactiver la limite. - \ No newline at end of file + Épisodes non vus + Manga + Comportement du chapitre + Ajouter un répertoire additionnel à %s. L\'URL devrait se terminer par « index.min.json ». + Fonctionne seulement si le chapitre actuel et le suivant sont déjà téléchargés. + Toutes les entrées lues/regardées + Dernière verification de mise à jour + Montrer le manga + Bouton \"Reprendre\" + Exclure s\'il reste un/des chapitre(s) ou un/des épisode(s) à lire + Suppression des chapitres/épisodes + Après avoir été marqué comme lu/regardé + Suppression automatique après lecture/vue + Permettre la suppression des chapitres/épisodes marqués d\'un marque-page + Synchroniser la progression après lecture/vue + Mise à jour de la progression quand marqué comme lu/vu + Effacer le cache des chapitres et des épisodes + Vider le cache de chapitre/épisode au lancement de l\'application + Êtes-vous sûr(e) ? Les épisodes et chapitres lus et la progression des entrées hors de la bibliothèque seront perdues + Suspend l\'historique de lecture + Manga de la bibliothèque + S\'applique également à toutes les manga de ma bibliothèque + Réinitialiser tous les chapitres de ce manga + Impossible de télécharger les chapitres, l\'espace de stockage est insuffisant + Attention : les téléchargements massifs peuvent entraîner un ralentissement des sources ou le blocage de Aniyomi. Appuyez pour en savoir plus. + Forcer l\'application à revérifier les chapitres et épisodes téléchargés + Lecteur + Lecteur interne, gestes, décodeurs, sous-titres + Vidéo + Contrôles + Autoriser les gestes dans les panneaux + Afficher le cercle de chargement + Afficher l’indicateur du chapitre actuel + N’apparaît que si la vidéo a des chapitres + Afficher le volume en pourcentage + Hébergeurs + Afficher les hébergeurs en échec + Afficher les hébergeurs vides + Afficher la barre d’état avec les contrôles + Réduire les animations du lecteur + Délai avant de cacher les contrôles du lecteur + %1$s ms + Opacité du panneau + Passer l’introduction + Activer le saut de l’intro + Désactiver AniSkip si la vidéo contient déjà des chapitres + Curseurs + Échanger les curseurs de volume et de luminosité + Afficher la barre de recherche lors de la recherche + Lorsqu’un contrôle de média est réglé sur personnalisé, il peut être associé à une touche dans input.conf. Les codes des touches sont 0x10004 pour précédant, 0x10005 pour lecture/pause et 0x10006 pour suivant. + Décodeur + Décodage matériel, format de pixel, désentrelacement + Essayer le décodage matériel + Aucun + Utiliser le format de pixel YUV420P + Peut résoudre les problèmes d’écran noir pour certains codecs vidéo, peut aussi améliorer les performances au détriment de la qualité + Sous-titres + Langages préférés, liste blanche, liste noire + Langages préférés + Langage(s) de sous-titre à sélectionner par défaut sur une vidéo ayant plusieurs pistes de sous-titre, les codes de langages à deux ou trois lettres fonctionnent. Plusieurs valeurs peuvent être séparées par une virgule. + Code invalide : \"%s\" + Liste blanche + Liste blanche pour les sous-titres. Si définie, la première piste de sous-titre contenant un mot sur liste blanche sera utilisée. Plusieurs valeurs peuvent être séparées par une virgule. + Liste noire + Liste noire pour les sous-titres. Si définie, toutes les pistes de sous-titre contenant un mot sur liste noire seront exclues. Plusieurs valeurs peuvent être séparées par une virgule. + Audio + Langues préférées, correction de la hauteur, canaux audio + Langues préférées + Langue audio à sélectionner par défaut sur une vidéo ayant plusieurs pistes audio, les codes de langues à deux ou trois chiffres fonctionnent. Plusieurs valeurs peuvent être séparées par une virgule. + Activer la correction de la hauteur de l’audio + Empêche l’audio devenir plus aiguë à vitesse élevée et plus grave à vitesse réduite + Limite de l’amplification du volume + Boutons personnalisés + Exécuter du code lua avec des boutons personnalisés + Modifier les boutons personnalisés + Guide des boutons personnalisés + Vous n\'avez pas de boutons personnalisés. Appuyez sur le bouton plus pour en créer un. + Ajouter un bouton + Modifier le bouton + Titre + Le bouton existe déjà ! + Code lua + Code Lua (après appuie long) + (optionnel) + Bouton supprimer + Voulez-vous supprimer le bouton %s ? + Au démarrage + (ID : %d) + Éditeur de scripts + Modifier et créer de nouveaux scripts et options de script + Scripts + Options de script + Le dossier ne contient aucun élément. Appuyez sur le bouton plus pour ajouter un fichier. + Vous avez des changements non sauvegardés. Voulez-vous quand même revenir en arrière ? + Impossible de sauvegarder le fichier + Fichier sauvegardé + Renommer le fichier + Supprimer le fichier + Le fichier existe déjà + Nom de fichier invalide + Créer un fichier + Modifier le nom du fichier + Nom du fichier + Impossible de créer le fichier + Impossible de renommer le fichier + Impossible de supprimer le fichier + Supprimer le fichier + Voulez-vous supprimer le fichier « %s » ? + Avancé + Fichiers utilisateur, mpv.conf, input.conf + Utiliser les fichiers MPV de l\'utilisateur + Utiliser les fichiers dans le dossier mpv-config + Passer %1$s + %1$s passé + Introduction + Fin + Récapitulatif + Introduction mixte + Minuterie de mise en veille terminée + ms + Valeur trop grande + Valeur trop petite + Épisode précédant introuvable ! + Aucune vidéo disponible + La liste de l\'hébergeur est vide + Aucun épisode chargé + Hébergeur sélectionné depuis la liste vide + Définir par défaut + Délai + Palette + Délai audio + Son entendu + Son repéré + Délai des sous-titres + Vitesse + Délai + Primaire + Secondaire + Les deux + Voix entendue + Texte vu + Son entendu + Son repéré + Couleurs + Texte + Bordure + Arrière-plan + Rouge + Vert + Bleu + Alpha + Paramètre des sous-titres + Typographie + Police + Taille de la police + Style de la bordure + Taille de la bordure + Décalage de l\'ombre + Divers + Passer outre les sous-titres ASS/SSA + Échelle + Position + Contour et ombre + Boîte opaque + Boîte d\'arrière-plan + Filtres + Luminosité + Contraste + Gamma + Saturation + Teinte + Certains filtres peuvent ne pas fonctionner avec votre pilote vidéo actuel + Ajouter des pistes audio externes + Appuyer pour charger les vidéos + Impossible de charger les vidéos + Qualités + %s (%s) + Plus + Canaux audio + Page des statistiques par défaut + Éteint + Page %d + Boutons personnalisés + %d secondes + Délai de mise en veille + %s restant + Entrer une durée + Choisir une durée + Annuler le délai actuel + Vitesse + Définir comme vitesse par défaut + Activer la correction de la hauteur de l\'audio + Empêche l\'audio de devenir trop aiguë à vitesse élevée et trop grave à faible vitesse + Ajouter des sous-titres externes + Les sous-titres secondaires n\'auront pas de style ASS/SSA. + Chapitres + Taille de la liste + Boutons personnalisés + Type + Mettre à jour les traqueurs à l\'épisode %d ? + Traqueurs mis à jour au chapitre %d + Traqueurs mis à jour à l\'épisode %d + Passer le téléchargement des épisodes en double déjà vus + Comportement de l\'épisode + Marquer les épisode en double déjà vus comme vus + Après avoir vu un épisode + Après avoir récupéré un nouvel épisode + Arrêter + Continuer + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/he/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/he/strings.xml index fa297d9396..0f663b7c9f 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/he/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/he/strings.xml @@ -4,7 +4,7 @@ התחלתי זמן שידור קטגוריות, עדכון כללי, החלקת פרק - הראה מספור של פרקים שלא נקראו באייקון העדכונים + הצג מספור של פרקים לצפייה/לקריאה שלא נצפו/נקראו באייקון ה- \"עדכונים\" באיזו נקודה לסמן את הפרק כנצפה שמור על עמדת הצפייה בפרקים שנראו אוריינטציה @@ -199,4 +199,34 @@ הועתק קישור לאיכות וידאו ללוח בחר איכות וידאו: הגדרות הרחבה - \ No newline at end of file + פרקים שלא נצפו + סדר מחדש + עכשיו + עצור + המשך + מנגה + התנהגות פרק + הוסף/י ספריות נוספות ל- %s. כתובת ה- URL אמורה להסתיים ב- \"index.min.json\". + עובד רק כאשר הפרק קריאה/צפייה + הבא כבר הורד. + כל הערכים שנקראו/נצפו + עדכון המנגה האחרון + הצג מנגה + כפתור המשך/י לצפות/לקרוא + דלג/י על ערכים עם פרקים לצפייה או לקריאה שלא נצפו + מחק/י פרקים + לאחר סימון ידני כ- נקרא/נצפה + לאחר קריאה/צפייה מחק/י אוטומטית + אשר/י מחיקת פרקים (לקריאה/צפייה) מסומנים בסימנית + עדכן/י התקדמות לאחר קריאה/צפייה + עדכן/י התקדמות כאשר מסומן כ- נקרא/נצפה + נקה/י מטמון פרק קריאה + נקה/י מטמון פרק (צפייה/קריאה) בעת הפעלת האפליקציה + את/ה בטוח/ה? פרקים (לקריאה/לצפייה) שהושלמו והתקדמות ערכים לא ספריתיים יאבדו + עוצר/ת את תיעוד ההיסטוריה + מנגה מהספרייה + החל/י גם לכל המנגה בספרייה שלי + אפס/י את כל הפרקים עבור מנגה זו + לא ניתן להוריד בעקבות מחסור בשטח אחסון + אזהרה: תפזורת גדולה של הורדות עלולה לגרום למקורות להיות איטיים יותר ו/או חסימת Aniyomi. לחץ/י כדי ללמוד עוד. + הכרח/י את האפליקציה לאמת פרקים (לקריאה/צפייה) מורדים. + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/hi/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/hi/strings.xml index 7c54a9ae58..b916d637f7 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/hi/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/hi/strings.xml @@ -1,7 +1,7 @@ बाहर निकलने के लिए फिर से दबाएं - श्रेणियाँ, वैश्विक अपडेट, अध्याय स्वाइप + श्रेणियाँ, सब कुछ अपडेट करें, अध्याय स्वाइप अपडेट आइकन पर अपठित संख्या दिखाएं छुपाएँ सभी @@ -46,4 +46,10 @@ रोके गए डाउनलोड रोक दिया है अध्याय अद्यतन - \ No newline at end of file + शुरू हो गया + प्रसारण का समय + अनदेखे एपिसोड + पुनः क्रमित करें + जारी रखे + Manga + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/hr/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/hr/strings.xml index f05e584c1b..7a43121c94 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/hr/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/hr/strings.xml @@ -131,9 +131,7 @@ Prilikom pokretanja (ID: %d) Napredno - Skripta, mpv.conf, input.conf - Omogući MPV skripta - Potrebna je dozvola za eksterno spremanje. + Korisničke datoteke, mpv.conf, input.conf Uredi MPV konfiguracijsku datoteku za daljnje postavke playera Obnovi MPV konfiguracijsku datoteku Uredi MPV ulaznu datoteku za konfiguraciju mapiranja tipkovnice @@ -387,15 +385,15 @@ Postavke proširenja Cotton Candy Mocha - Prelistaj udesno - Prelistaj ulijevo + Epizoda pri povlačenju prema desno + Epizoda pri povlačenju prema lijevo Sakrij skrivene kategorije s ekrana kategorija Očekivano razdoblje odgode izdavanje animea - Isključi iz spremača podataka - Prestani isključivati iz spremača podataka - Spremač podataka + Isključi iz uštede podataka + Prestani isključivati iz uštede podataka + Uštede podataka Komprimiraj slike prije preuzimanja ili učitavanja u čitač - Koristi spremač podataka u programu za preuzimanje + Koristi uštedu podataka u programu za preuzimanje Zanemari Jpeg slike Zanemari Gif animacije Kvaliteta slike @@ -418,4 +416,84 @@ Stvori standardnu mapu za Aniyomi Ograničenje brzine preuzimanja Postavi na 0 za deaktiviranje ograničenja brzine. - \ No newline at end of file + Ponašanje epizoda + Označi duplikat gledane epizode kao gledanu + Nakon gledanja epizode + Nakon dohvaćanja nove epizode + Manga + Dodaj dodatne repozitorije u %s. To bi trebao biti URL koji završava s „index.min.json”. + Radi samo ako je trenutačno i sljedeće poglavlje/epizoda već preuzeto. + Svi pročitani/gledani unosi + Zadnje aktualiziranje mange + Prikaži manga + Gumb za nastavljanje gledanja/čitanja + Preskoči unose s nepogledanim epizodama/nepročitanim poglavljima + Izbriši poglavlja/epizode + Nakon ručnog označavanja kao pročitano/pogledano + Automatski izbriši nakon čitanja/gledanja + Dozvoli brisanje zabilježenih poglavlja/epizoda + Aktualiziraj napredak nakon čitanja/gledanja + Aktualiziraj napredak kada je manga označen kao pročitan/pogledan + Izbriši predmemoriju poglavlja i epizoda + Izbriši predmemoriju poglavlja/epizoda prilikom otvaranja aplikacije + Sigurno? Pročitane epizode i poglavlja i napredak unosa koji nisu u biblioteci će se izgubiti + Negledane epizode + Zaustavi + Nastavi + Ponašanje poglavlja + Pauzira tvoju povijesti + Manga iz biblioteke + Također primijeni na sve mange u mojoj biblioteci + Obnovi sva poglavlja za ovaj manga + Neuspjelo preuzimanje zbog nedovoljne memorije + Upozorenje: velika skupna preuzimanja mogu dovesti do usporavanja izvora i/ili blokiranja Aniyomia. Dodirni za daljnje informacije. + Prisili aplikaciju da ponovo provjeri preuzeta poglavlja i epizode + Player + Interni player, geste, dekoderi, titlovi + Pružatelji hosting usluge + Prikaži neuspjele hosting usluge + Prikaži prazne hosting usluge + Preskakanje uvoda + Aktiviraj preskakanje uvoda + Deaktiviraj AniSkip ako video već sadrži poglavlja + Neispravan kod: „%s” + Uređivač skripta + Uredi i stvaraj nova skripta i opcija skripta + Skripta + Opcije skripta + Direktorij ne sadrži stavke. Dodirni gumb s plusom za dodavanje nove datoteke. + Imaš nespremljene promjene. Želiš li i dalje ići natrag? + Nije moguće spremiti datoteku + Datoteka je spremljena + Preimenuj datoteku + Izbriši datoteku + Izbriši datoteku + Datoteka već postoji + Neispravno ime datoteke + Stvori datoteku + Uredi ime datoteke + Ime datoteke + Nije moguće stvoriti datoteku + Nije moguće preimenovati datoteku + Nije moguće izbrisati datoteku + Želiš li izbrisati datoteku „%s”? + Koristi korisničke MPV datoteke + Koristi datoteke u mpv-config mapi + Preskoči %1$s + %1$s preskočen + Sažetak + Nema dostupnih videa + Popis usluga hostinga je prazan + Uvod + Kraj + Miješani uvod + Nijedna epizoda nije učitana + Kašnjenje + Paleta + Dodirni za učitavanje videa + Neuspjelo učitavanje videa + Kvalitete + Poglavlja + Vrsta + Usluga hostinga odabrana iz praznog popisa + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/in/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/in/strings.xml index 53383c01f2..405ca420ae 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/in/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/in/strings.xml @@ -131,9 +131,7 @@ Saat memulai (ID: %d) Lanjutan - Skrip, mpv.conf, input.conf - Aktifkan skrip MPV - Memerlukan izin penyimpanan eksternal. + Berkas pengguna, mpv.conf, input.conf ubah konfigurasi MPV file untuk lebih lanjut di pengaturan pemutaran Setel ulang file konfigurasi MPV Edit file input MPV untuk konfigurasi pemetaan keyboard @@ -148,7 +146,7 @@ Otomatis memutar menyala Otomatis memutar mati Jangan di skip - Lewati dalam %d detik + Melewatkan %s dalam %d detik %s lewati episode selanjutnya tidak ditemukan! Episode sebelumnya tidak ditemukan! @@ -388,7 +386,7 @@ Permen Kapas Moka Geser ke Kanan - Geser ke Kiri + Episode di gesek ke kiri Sembunyikan kategori tersembunyi dari layar kategori dan penyimpanan Masa waktu rilis anime yang diharapkan Mengecualikan dari penghemat data @@ -418,4 +416,115 @@ Buat folder Aniyomi bawaan Batas kecepatan unduh Setel ke 0 untuk menonaktifkan batas kecepatan. - \ No newline at end of file + Episode yang tidak terlihat + Berhenti + Melanjutkan + Hanya berfungsi jika bab/episode saat ini + episode berikutnya sudah diunduh. + Semua entri telah dibaca/ditonton + Tambahkan repo ke %s. Ini harus berupa URL yang diakhiri dengan \"index.min.json\". + Pembaruan manga terakhir + Perilaku bab + Komik + Tampilkan manga + Tombol Lanjutkan untuk menonton/membaca + Lewati entri dengan episode yang belum dilihat/bab yang belum dibaca + Hapus bab/episode + Paksa aplikasi untuk memeriksa ulang bab dan episode yang diunduh + Setelah ditandai secara manual sebagai telah dibaca/ditonton + Setelah membaca/menonton otomatis terhapus + Izinkan penghapusan bab/episode yang ditandai + Perbarui kemajuan setelah membaca/menonton + Perbarui kemajuan ketika ditandai sebagai telah dibaca/ditonton + Hapus cache bab dan episode + Hapus cache episode/bab saat peluncuran aplikasi + Apa kamu yakin? Episode dan bab yang telah selesai serta kemajuan entri non-perpustakaan akan hilang + Menjeda riwayat Anda + Komik dari perpustakaan + Juga berlaku untuk semua manga di perpustakaan saya + Reset semua bab untuk komik ini + Tidak dapat mengunduh dengan ruang penyimpanan yang hampir habis + Peringatan: Unduhan massal dalam jumlah besar dapat menyebabkan sumber menjadi lebih lambat dan/atau memblokir Aniyomi. Ketuk untuk mengetahui lebih lanjut. + bawahan player, gestur, dekoder, teks terjemahan + Tampilan host gagal + Tampilan host kosong + Lewati Intro + Aktifkan fitur lewati intro + ­Nonaktifkan AniSkip jika video sudah mengandung bab + Kode tidak valid: “%s” + Editor skrip + Edit dan buat skrip baru serta opsi skrip + Opsi skrip + Direktori tidak berisi item apa pun. Ketuk tombol plus untuk menambahkan file baru. + Anda memiliki perubahan yang belum disimpan. Apakah Anda tetap ingin kembali? + Ubah nama file + Tidak dapat menghapus file + Ganti nama file + Tidak dapat menyimpan file + Skrip + Berkas telah disimpan + Hapus Berkas + File sudah ada + Nama file tidak valid + Buat file + Nama berkas + Tidak dapat membuat file + Tidak dapat mengganti nama file + Hapus Berkas + Apakah Anda ingin menghapus file “%s”? + Gunakan berkas MPV pengguna + Gunakan berkas-berkas di direktori mpv-config + Melewati %1$s + %1$s dilewati + Pembukaan + Akhir + Rekap + Pembukaan campuran + Tidak ada video yang tersedia + Tidak ada episode yang dimuat + Hoster dipilih dari daftar kosong + Daftar Hoster kosong + Menunda + Palet + Host + Ketuk untuk memuat video + Gagal memuat video + Kualitas + Player + Bab + Jenis + Perilaku episode + Tandai episode yang sudah ditonton sebagai sudah ditonton + Setelah menonton episode + Setelah mengambil episode baru + Tidak dapat memigrasikan episode ke musim, pilih musim untuk melanjutkan + Tidak dapat memigrasikan musim ke episode + Tunjukkan musim + Lanjutkan menonton tombol + Mode tampilan kisi + Musim %1$s + Nomor musim + Dengan nomor musim + Tidak ada musim yang ditemukan + Pengaturan musim default yang diperbarui + Pengaturan musim + Musim + Perbarui musim dengan episode tentang penyegaran + Perbarui Musim dengan Episode tentang Pembaruan Perpustakaan + Pengisi + Fillermarked + Ubah latar belakang + Latar Belakang Kustom + Latar belakang disimpan + Latar Belakang Menghemat Kesalahan + Latar Belakang Berbagi Kesalahan + Setel sebagai latar belakang + Ditetapkan sebagai thumbnail + Latar belakang diperbarui + Thumbnail diperbarui + Gagal memperbarui latar belakang + Fillermark episode + Unfillermark episode + Izinkan pengunduhan episode fillermarked + Thumbnail Episode + Episode ringkasan + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/it/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/it/strings.xml index 9fc027074f..6f9b28ee0f 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/it/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/it/strings.xml @@ -134,9 +134,7 @@ All\'avvio (ID: %d) Avanzate - Script, mpv.conf, input.conf - Abilita script MPV - Necessita permesso a spazio di archiviazione esterno. + File utente, mpv.conf, input.conf Modifica il file di configurazione MPV per ulteriori impostazioni del player Reimposta configurazione MPV Modifica mappa dei tasti del file di input MPV @@ -365,8 +363,8 @@ Questa operazione rimuoverà la data di visione di questo episodio. Vuoi proseguire? Reimposta tutti gli episodi di questo anime %1$s: %2$s, %3$s - Progresso: %1$s/%2$s - Progresso: %1$s + %1$s/%2$s + %1$s Ep. %1$s - %2$s Nessun video trovato Nuovi episodi trovati @@ -396,8 +394,8 @@ Impostazioni dell\'estensione Zucchero filato Mocha - Azione swipe verso destra - Azione swipe verso sinistra + Episodio con swipe verso destra + Episodio con swipe verso sinistra Nasconi le categorie nascoste dalla schermata delle categorie Finestra di rilascio stimata per l\'anime Escludi dal risparmio dati @@ -427,4 +425,106 @@ Crea una cartella default per Aniyomi Limite velocità di download dei capitoli Imposta a 0 per disattivare il limite di velocità. - \ No newline at end of file + Episodi non visti + Manga + Mostra manga + Elimina capitoli/episodi + Dopo averli contrassegnati manualmente come letti/visti + Cancella automaticamente dopo la lettura/visione + Manga dalla libreria + Tutte le voci lette/viste + Comportamento del capitolo + Aggiungi altre repository a %s. Dovrebbe essere un URL che finisce con \"index.min.json\". + Funziona solo se il capitolo/episodio corrente e il successivo sono già stati scaricati. + Ultimo aggiornamento manga + Pulsante Continua a guardare/leggere + Salta le voci con episodi non visti o capitoli non letti + Consenti l\'eliminazione dei capitoli/episodi con segnalibro + Aggiorna il tracking dopo la lettura/visione + Aggiorna l\'avanzamento quando viene contrassegnato come letto/visto + Cancella cache capitoli e episodi + Cancella la cache capitoli/episodi all\'avvio dell\'app + Sei sicuro? Gli episodi e i capitoli completati e il progresso delle voci non presenti in libreria andranno persi + Sospendi la cronologia + Applica anche a tutti i manga nella mia libreria + Reimposta tutti i capitoli di questo manga + Impossibile scaricare a causa dello spazio di archiviazione insufficiente + Attenzione: download massivi di grandi dimensioni possono rallentare le fonti e/o portare al blocco di Aniyomi. Tocca per saperne di più. + Forza l\'app a ricontrollare i capitoli e gli episodi scaricati + Lettore + Lettore interno, gesti, decoder, sottotitoli + Salto dell\'introduzione + Abilita salto dell\'introduzione + Disabilita AniSkip se il video contiene già i capitoli + Codice non valido: \"%s\" + Editor script + Modifica e crea nuovi script e opzioni per gli script + Script + Opzioni script + La cartella non contiene elementi. Tocca il pulsante più per aggiungere un nuovo file. + Sono presenti modifiche non salvate. Vuoi ancora tornare indietro? + Impossibile salvare il file + File salvato + Rinomina file + Elimina file + Il file esiste già + Nome file non valido + Crea file + Modifica nome file + Nome file + Impossibile creare il file + Impossibile rinominare il file + Impossibile eliminare il file + Elimina file + Vuoi eliminare il file \"%s\"? + Usa i file MPV utente + Usa i file nella directory mpv-config + Salta %1$s + %1$s saltato + Sigla iniziale + Sigla finale + Riassunto + Sigla iniziale mista + Ritardo + Qualità + Capitoli + Tipo + Comportamento dell\'episodio + Segna come visto l\'episodio duplicato già visto + Dopo aver guardato un episodio + Dopo aver recuperato un nuovo episodio + Schema + Continua + Interrompi + Per numero di stagione + Nessuna stagione trovata + Impostazioni predefinite della stagione aggiornate + Impostazioni stagione + Stagione + Aggiorna le stagioni con gli episodi al refresh + Impossibile migrare l’episodio alla stagione, seleziona una stagione per continuare + Impossibile migrare la stagione a episodio + Mostra stagioni + Pulsante continua a guardare + Modalità di visualizzazione a griglia + Stagione %1$s + Numero stagione + Aggiorna le stagioni con gli episodi all’aggiornamento della libreria + Filler + Contrassegnato come filler + Modifica sfondo + Sfondo personalizzato + Sfondo salvato + Errore durante il salvataggio dello sfondo + Errore durante la condivisione dello sfondo + Imposta come sfondo + Imposta come miniatura + Sfondo aggiornato + Miniatura aggiornata + Aggiornamento dello sfondo non riuscito + Segna episodio come filler + Rimuovi segnalazione filler + Consenti il download degli episodi segnati come filler + Miniature episodi + Riepiloghi episodi + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/kk/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/kk/strings.xml index c699b2cdc6..34b26296c2 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/kk/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/kk/strings.xml @@ -6,7 +6,7 @@ Қайта реттеу Қазір Санаттар, ауқымды жаңарту, бөлімдерді парақтау - Жаңартулар белгішесінде оқылмағандар санын көрсету + Жаңартулар белгішесінде оқылмағандар/көрілмегендер санын көрсету Ойнатқышты баптау Ойнатқыш баптауында іздеу Қолданба ойнатқышы @@ -23,4 +23,40 @@ Дерекқорды тазалау Кітапханада жоқ жазбалардың тарихын жою Кітапханаға қосайық па? - \ No newline at end of file + Көрілмеген бөлімдер + Тоқтату + Жалғастыру + Манга + %s қолданбасына қосымша репозиторий қосыңыз. Ол \"index.min.json\" деп бітетін URL пішімінде болуы керек. + Ағымдағы және келесі тарау/бөлім әлдеқашан жүктелген болса ғана. + Көрілген/Оқылғандардың бәрі + Манғаның соңғы жаңартпа тексеруі + Манганы көрсету + Жалғастыру батырмасы + Тарауы оқылмаған/Бөлімі көрілмеген топтаманы өткізе беру + Тарауларды/Бөлімдерді жою + Қолмен оқылған/көрілген деп белгілегеннен кейін + Оқығаннан/Көргеннен кейін автоматты түрде жою + Бетбелгіленген тарауларды/бөлімдерді жоюға рұқсат беру + Оқығаннан/Көргеннен кейін прогрессті жаңарту + Оқылған/Көрілген деп белгіленгенде прогрессті жаңарту + Тарау және бөлім кешін тазалау + Қолданба жабылғанда тараулар/бөлімдер кешін тазалау + Сенімдісіз бе? Кітапханадағы емес жазбалардың оқылған тараулары/көрілген бөлімдері мен прогрессі жоғалады + Тарихыңызды кідіртеді + Кітапханадағы мангалар + Сонымен қоса кітапханадағы мангаларға қолдану + Бұл манга үшін түгел тарауларды қалпына келтіру + Жадта орын аз болған соң жүктелмеді + Ескерту: Көп жүктеулер саны дереккөздер жұмысын баяулата алады және/немесе Aniyomi бұғатталына алады. Толығырақ оқу үшін басыңыз + Қолданбаны жүктеп алынған тарауларды/бөлімдерді қайта тексеруге мәжбүрлеу + Ойнатқыш + Қолданба ойнатқышы, ымдар, декодерлер, субтитр + Прогресс, басқару батырмалары, бағдар + Бағдар + Бейне + Кері ландшафт + Сенсор портрет + Сенсор ландшафт + Басқару + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/ko/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/ko/strings.xml index b1fe7347c3..1f68da05b1 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/ko/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/ko/strings.xml @@ -55,8 +55,6 @@ 모노 스테레오 스테레오(반대로) - MPV 스크립트 활성화 - 외부 저장소 권한이 필요합니다. 추가 플레이어 설정을 위해 MPV 구성 파일 편집 MPV 구성 파일 초기화 키보드 매핑 구성을 위한 MPV 입력 파일 편집 @@ -265,4 +263,4 @@ 기본 Aniyomi 폴더 생성 다운로드 속도 제한 속도 제한을 비활성화하려면 0으로 설정하세요. - \ No newline at end of file + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/ml/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/ml/strings.xml index 0129e1e826..09c9f92287 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/ml/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/ml/strings.xml @@ -5,4 +5,12 @@ സംപ്രേഷണ സമയം പുനഃക്രമീകരിക്കുക വേഗപരിധി അപ്രാപ്തമാക്കാൻ 0 ആയി സജ്ജമാക്കുക. - \ No newline at end of file + കാണാത്ത എപ്പിസോഡുകൾ + ഇപ്പോൾ + നിലവിലെ അദ്ധ്യായം/എപ്പിസോഡ് + അടുത്തത് ഡൗൺലോഡ് ചെയ്‌തിട്ടുണ്ടെങ്കിൽ മാത്രമേ പ്രവർത്തിക്കൂ. + വായിച്ച/കണ്ട എല്ലാ എൻട്രികളും + അവസാന മാംഗ അപ്‌ഡേറ്റ് + മാംഗ + മാംഗയെ കാണിക്കൂ + കാണുന്നത്/വായന തുടരുക ബട്ടൺ + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/ms/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/ms/strings.xml index 434ef3b702..442b78b44b 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/ms/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/ms/strings.xml @@ -20,4 +20,26 @@ Ditangguh Muat turun dihentikan sebentar Pengemaskinian bab - \ No newline at end of file + Komik + Tambahkan repo pada %s. Ini mestilah URL yang berakhir dengan \"index.min.json\". + Hanya berfungsi jika bab/episod semasa + yang seterusnya telah dimuat turun. + Kemas kini komik terakhir + Tunjukkan komik + Butang teruskan menonton/membaca + Langkau penyertaan dengan episod yang tidak dilihat/bab yang belum dibaca + Padamkan bab/episod + Selepas ditanda secara manual sebagai dibaca/dilihat + Selepas ditanda secara manual sebagai dibaca/dilihat + Benarkan pemadaman bab/episod yang ditanda halaman + Kemas kini kemajuan selepas membaca/menonton + Kosongkan cache bab dan episod + Kosongkan cache episod/bab semasa pelancaran apl + Adakah anda pasti? Episod dan bab yang lengkap serta kemajuan entri bukan perpustakaan akan hilang + Menjeda sejarah anda + Komik dari perpustakaan + Juga digunakan untuk semua komik di perpustakaan saya + Tetapkan semula semua bab untuk komik ini + Tidak dapat memuat turun kerana ruang storan yang rendah + Amaran: muat turun pukal yang besar boleh menyebabkan sumber menjadi lebih perlahan dan/atau menyekat Aniyomi. Ketik untuk mengetahui lebih lanjut. + Paksa apl menyemak semula bab dan episod yang dimuat turun + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/pl/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/pl/strings.xml index e22b305c51..1eba9f4ab1 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/pl/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/pl/strings.xml @@ -54,9 +54,9 @@ Auto-play jest włączone Auto-play jest wyłączone Nie pomiń - Pomiń za %d sekund - %s Pominięte - Następny odcinek nie znaleziony! + Pomijanie %s za %d sekund + Pominięto %s + Następny odcinek nie został znaleziony! Ustaw domyślny tryb dekodowania sprzętowego Pokaż napisy na zrzucie ekranu Język aplikacji, powiadomienia @@ -209,7 +209,7 @@ Wybierz jakość wideo: Ustawienia rozszerzeń Akcja przesunięcia w prawo - Akcja przesunięcia w lewo + Odcinek po przesunięciu w lewo Kompresuj obrazy przed pobraniem lub załadowaniem do czytnika Ignoruj obrazy JPEG Ignoruj animacje GIF @@ -226,4 +226,130 @@ resmush.it Serwer Proxy Bandwidth Hero wpisz adres URL z serwera Bandwidth Hero Proxy - \ No newline at end of file + Nieobejrzane odcinki + Zatrzymaj + Kontynuuj + Manga + Zachowanie rozdziału + Dodaj dodatkowe repozytoria do %s. Powinien to być adres URL kończący się na „index.min.json”. + Działa jedynie, gdy obecny odcinek/rodział i następny są już pobrane. + Wszystkie przeczytane/obejrzane wpisy + Ostatnia aktualizacja mangi + Pokaż mangę + Przycisk kontynuacji oglądania/czytania + Pomiń wpisy z nieobejrzanymi odcinkami/nieprzeczytanymi rozdziałami + Usuń rozdziały/odcinki + Po manualnym oznaczeniu jako przeczytane/obejrzane + Po przeczytaniu/obejrzeniu automatycznie usuń + Zezwól na usuwanie rozdziałów/odcinków dodanych do zakładek + Uaktualnij postęp po czytaniu/oglądaniu + Uaktualnij postęp po oznaczeniu jako przeczytane/obejrzane + Wyczyść pamięć podręczną rozdziałów i odcinków + Wyczyść pamięć podręczną odcinków/rozdziałów przy uruchamianiu aplikacji + Na pewno? Obejrzane odcinki, przeczytane rozdziały i postęp wpisów spoza biblioteki zostaną usunięte + Wstrzymuje historię + Manga z biblioteki + Odnosi się też do wszystkich mang w mojej bibliotece + Zresetuj wszystkie rozdziały dla tej mangi + Poprzedni odcinek nie został znaleziony! + Brak dostępnych filmów + Lista hostów jest pusta + Nie załadowano odcinka + Host wybrany z pustej listy + Ustawiony jako domyślny + Opóźnienie + Paleta + Opóźnienie dźwięku + Słyszany dźwięk + Dźwięk dostrzeżony + Opóźnienie napisów + Prędkość + Opóźnienie + Główny + Dodatkowy + Oba + Słyszany głos + Widziany tekst + Słyszany dźwięk + Nie można pobrać z powodu małej ilości miejsca na dysku + Ostrzeżenie: masowe pobieranie dużych plików może prowadzić do spowolnienia i/lub zablokowania źródeł Aniyomi. Dotknij, aby dowiedzieć się więcej. + Wymuś ponowne sprawdzenie pobranych rozdziałów i odcinków przez aplikację + Ustawienia odtwarzacza + Odtwarzacz + Wyszukaj ustawień odtwarzacza + Wbudowany odtwarzacz, gesty, dekodery, napisy + Wbudowany odtwarzacz + Postęp, kontrolki, orientacja + Wideo + Kontrolki + Zezwól na użycie gestów w panelach + Pokaż kółko ładowania + Pokaż wskaźnik bieżącego rozdziału + Pojawia się tylko wtedy, gdy wideo ma rozdziały + Wyświetlaj głośność w procentach + Hosterzy + Wyświetlaj nieudanych hosterów + Wyświetlaj pustych hosterów + Wyświetlanie paska stanu systemu z elementami sterującymi + Ogranicz animacje odtwarzacza + Czas do ukrycia kontrolek odtwarzacza + %1$s ms + Przezroczystość panela + Pomiń wstęp + Włącz pomijanie wstępu + Wyłącz AniSkip, jeśli wideo zawiera rozdziały + Zastępuje przycisk pominięcia dziesięciu sekund przyciskiem poprzedniego odcinka + Gesty + Szukanie, podwójne dotknięcie, kontrolki mediów + Suwaki + Zamień miejscami suwaki głośności i jasności + Pokaż pasek wyszukiwania podczas wyszukiwania + Podwójne dotknięcie + Podwójne dotknięcie (lewa) + Podwójne dotknięcie (środek) + Podwójne dotknięcie (prawa) + Gdy gest stuknięcia jest ustawiony jako niestandardowy, można go powiązać za pomocą input.conf. Kody klawiszy to 0x10001 dla lewej, 0x10002 dla środka i 0x10003 dla prawej. + Brak + Szukaj + Odtwórz/Zatrzymaj + Zmień odcinek + Niestandardowa + Kontrolki mediów + Poprzedni + Odtwórz/Zatrzymaj + Następny + Gdy sterowanie multimediami jest ustawione jako niestandardowe, można je powiązać za pomocą input.conf. Kody klawiszy to 0x10004 dla poprzedniego, 0x10005 dla odtwarzania/pauzy i 0x10006 dla następnego. + Dekoder + Dekodowanie sprzętowe, format pikseli, debanding + Spróbuj dekodować sprzętowo + Włącz gpu-next + Nowy backend renderowania wideo + Brak + YUV420P + Użyj formatu pikseli YUV420P + Może naprawić czarny ekran na niektórych kodekach wideo, może również poprawić wydajność kosztem jakości + Napisy + Preferowane języki, biała lista, czarna lista + Preferowane języki + Język lub języki napisów, które mają być domyślnie wybierane w wideo z wieloma napisami, użyj dwu- lub trzyliterowych kodów języków. Przy wyborze wielu należy je oddzielić przecinkami. + Nieprawidłowy kod: %s + Biała lista + Biała lista napisów. Jeśli zdefiniowano białą listę, użyty zostanie pierwszy napis zawierający słowo z białej listy. Przy wyborze wielu należy je oddzielić przecinkami. + Czarna lista + Czarna lista napisów. Jeśli zdefiniowano czarną listę, wszystkie napisy zawierające słowo z czarnej listy zostaną odfiltrowane. Przy wyborze wielu należy je oddzielić przecinkami. + Dźwięk + Preferowane języki, korekcja wysokości dźwięku, kanały dźwiękowe + Preferowane języki + Kanały audio + Mono + Stereo + Dodaj przycisk + Zmień przycisk + Tytuł + Przycisk już istnieje! + (opcjonalne) + Usuń przycisk + Czy chcesz usunąć przycisk %s? + Po włączeniu + (ID: %d) + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/pt-rBR/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/pt-rBR/strings.xml index adc9a0ed6c..ee492e464b 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/pt-rBR/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/pt-rBR/strings.xml @@ -132,8 +132,6 @@ (ID: %d) Avançado Scripts, mpv.conf, input.conf - Ativar scripts MPV - Precisa de permissão de armazenamento externo. Editar o arquivo de configuração do MPV para obter mais configurações do reprodutor Redefinir arquivo de configuração do MPV Edite o arquivo de entrada MPV para configuração de mapeamento de teclado @@ -418,4 +416,39 @@ Crie a pasta Aniyomi padrão Limite de velocidade de download Defina como 0 para desativar o limite de velocidade. - \ No newline at end of file + Adicione repositórios adicionais ao %s. Deve ser uma URL que termine com “index.min.json”. + Só funciona se o capítulo/episódio atual + o próximo já estiverem baixados. + Todas as entradas lidas/assistidas + Última atualização do mangá + Mostrar mangá + Botão Continuar assistindo/lendo + Pular itens com episódios/capítulos não lidos + Excluir capítulos/episódios + Após marcado como lido/assitido manualmente + Excluir automaticamente após ler/assistir + Permitir a exclusão de capítulos/episódios favoritos + Atualizar o progresso após ler/assistir + Atualizar progresso quando marcado como lido/assistido + Limpar o cache de capítulos e episódios + Limpar o cache de episódios/capítulos ao abrir o aplicativo + Tem certeza? Os capítulos lidos, episódios assistidos e o progresso em itens que não estão na sua biblioteca serão perdidos + Pausa o histórico + Mangás da biblioteca + Aplicar também a todos os mangás da minha biblioteca + Redefinir todos os capítulos deste item + Parar + Continuar + Mangá + O download não pôde ser feito devido à pouco espaço de armazenamento + Reprodutor + Pular introdução + Você tem alterações não salvas. Você quer mesmo voltar? + Arquivo salvo + Renomear arquivo + Deletar arquivo + Arquivo já existente + Nome de arquivo inválido + Criar arquivo + Editar nome do arquivo + Nome do arquivo + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/pt/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/pt/strings.xml index cab48bb556..d405c0e788 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/pt/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/pt/strings.xml @@ -2,7 +2,7 @@ Pressione Voltar para sair Começar - No ar + Horário de exibição Reordenar Novo Categorias, atualização global, trocar de capítulo @@ -17,8 +17,8 @@ Lembrar e mudar para o último volume usado Mostrar conteúdo no recorte de exibição Ocultar os controlos de reprodução ao abrir o reprodutor - Ativar salto automático - Ativar estilo Netflix + Ativar ignorar automático + Ativar estilo da Netflix Tempo limite do botão 5 segundos 6 segundos @@ -26,53 +26,51 @@ 8 segundos 9 segundos 10 segundos - Configurações do AniSkip - Ativar o AniSkip - Picture-in-Picture (PiP) + AniSkip requer a animação para ser rastreado com MAL ou Anilist para funcionar + Ativar AniSkip + Imagem-sobre-Imagem (PiP) Ativar o uso do modo PiP Mostrar toasts de episódios ao alternar episódios no modo PiP Mudar automaticamente para o modo PiP ao sair do reprodutor - Substitui a opção Pular 10 segundos pelo episódio anterior + Substitui a opção de Ignorar 10 segundos com o episódio Anterior Reprodutor externo - Sempre usar o reprodutor externo + Usar sempre o reprodutor externo Preferência do reprodutor externo Ativar Gestos de Volume e Brilho - A buscar - Ativar Gesto de Busca Horizontal - Duração padrão do salto de abertura - Tamanho do salto de abertura - Tamanho do toque duas vezes para saltar + A procurar + Ativar Gesto de Procurar Horizontal + Duração predefinida de ignorar a introdução + Duração de ignorar a introdução + Duração do toque duplo para ignorar Desativar - Ativar busca precisa - Quando ativado, a busca não se concentrará nos quadros-chave, o que levará a uma busca mais lenta, mas mais precisa + Ativar procura precisa + Quando ativado, a busca não será limitada aos quadros-chave, resultando em uma busca mais lenta, porém precisa Ativar renderização prévia Nova renderização de vídeo em segundo-plano - Debandar + Remoção de faixas CPU GPU Canais de Áudio Estéreo Estéreo Invertido - Habilitar Scripts MPV - Necessita de permissão de armazenamento externo. - Editar o ficheiro de configuração do MPV para obter mais definições do reprodutor - Redefinir arquivo de configuração do MPV - Editar o arquivo de entrada MPV para configuração de mapeamento de teclado + Editar o ficheiro de configuração MPV para obter mais definições do reprodutor + Reiniciar o ficheiro de configuração MPV + Editar o ficheiro de entrada MPV para a configuração de mapeamento de teclado Ajustar ao ecrã Cortado ao ecrã Esticado ao ecrã A reprodução automática está ativada A reprodução automática está desativada Não saltar - Saltar em %d segundos + Saltar %s em %d segundos %s saltado - Próximo episódio não encontrado! - Definir o modo de descodificação de hardware padrão + Episódio seguinte não encontrado! + Modo de descodificação por hardware Mostrar legendas na captura de ecrã Linguagem do aplicativo, notificações Cloudflare Safira - Vermelho + Doom Matrix Preservar a posição de leitura nos capítulos lidos Máximo de downloads @@ -232,34 +230,225 @@ Algodão doce Café deslize para a direita - Deslize para a esquerda + Avançar para o episódio ao deslizar para a esquerda Ocultar Categorias Ocultas das categorias e da tela de armazenamento Período de tempo previsto para lançamento Retirar da economia de dados Parar exclusão da economia de dados Economia de dados Comprimir imagens antes de baixar ou carregar no leitor - Usar a economia de dados ao baixar + Usar a economia de dados ao transferir Ignorar imagens Jpeg Ignorar animações GIF Qualidade de imagem Valores mais altos significam que uma porcentagem maior da qualidade da imagem é salva, mas também significa que o tamanho do arquivo é maior, 80% é uma boa mediana entre o tamanho do arquivo e a qualidade da imagem Comprimir para Jpeg - O tamanho do arquivo Jpeg é consideravelmente menor do que o Webp (o que significa que mais dados são salvos), mas também faz com que as imagens percam mais qualidade. -\nAtualmente comprimido para Jpeg - O tamanho do arquivo Jpeg é consideravelmente menor do que o Webp (o que significa que mais dados são salvos), mas também faz com que as imagens percam mais qualidade. -\nAtualmente comprimido para Webp - Converter para preto e branco - Bandwidth Hero (requer um servidor Bandwidth Hero Proxy) - https://wsrv.nl/ - https://resmush.it/ - Servidor Proxy Bandwidth Hero - Coloque o URL do servidor Proxy Bandwidth Hero aqui - Só fará download simultaneamente de fontes auto-hospedadas ou ilimitadas - Desver - Repositórios de extensão de mangá + O tamanho do ficheiro Jpeg é consideravelmente menor do que o Webp (o que significa que são guardados mais dados), mas faz com que as imagens percam mais qualidade. \nAtualmente comprimido para Jpeg + O tamanho do ficheiro Jpeg é consideravelmente menor do que o Webp (o que significa que são guardados mais dados), mas faz com que as imagens percam mais qualidade. \nAtualmente comprimido para Webp + Converter para Preto e Branco + Largura da Banda de Hero (requer um servidor Proxy da Largura da Banda de Hero) + wsrv.nl + resmush.it + Servidor Proxy da Largura de Banda de Hero + Coloque o URL do servidor Proxy da Largura de Banda de Hero aqui + Só será transferido simultaneamente das fontes auto hospedadas ou ilimitadas + Não visto + Repositórios de extensão da manga Repositórios de extensão de anime Criar a pasta padrão para Aniyomi - Limite de velocidade de download - Defina como 0 para desativar o limite de velocidade. - \ No newline at end of file + Limite da velocidade de transferência do capítulo + Defina para 0 para desativar o limite de velocidade. + Botão de continuar a ver/ler + Eliminar automaticamente depois de ler/ver + Atualizar progresso depois de ler/ver + Eliminar capítulos/episódios + Depois de marcado manualmente como lido/visto + Permitir a eliminação de capítulos/episódios nos marcadores + Atualizar progresso quando marcado como lido/visto + Limpar a cache do capítulo e episódio + Limpar a cache do episódio/capítulo ao iniciar a aplicação + Pausa o seu histórico + Manga da biblioteca + Também aplicar a todos os manga na minha biblioteca + Reiniciar todos os capítulos para esta manga + Definições do reprodutor + Não foi possível transferir devido à falta de espaço de armazenamento + Reprodutor + Procurar definições do reprodutor + Reprodutor interno, gestos, descodificadores, legendas + Reprodutor interno + Progresso, controlos, orientação + Vídeo + Controlos + Permitir gestos nos painéis + Mostrar circulo de carregar + Mostrar indicador do capítulo atual + Só aparece se o vídeo tiver capítulos + Exibir volume como percentagem + Mostrar a barra do estado do sistema com controlos + Reduzir a animação do reprodutor + %1$s ms + Opacidade do painel + Ignorar introdução + Ativar ignorar introdução + Desativar AniSkip se o vídeo já tiver capítulos + Gestos + Procurar, toque duplo, controlos de multimédia + Cursores + Trocar cursor do volume e brilho + Mostrar barra de procurar quando pesquisar + Toque duplo + Toque duplo (esquerda) + Toque duplo (centro) + Toque duplo (direita) + Nenhuma + Procurar + Reproduzir/Pausar + Mudar episódio + Personalizado + Controlos de multimédia + Anterior + Reproduzir/Pausar + Seguinte + Descodificador + Tentar descodificação por hardware + YUV420P + Legendas + Idiomas preferidos, lista branca, lista negra + Idiomas preferidos + Código inválido: \"%s\" + Lista branca + Lista negra + Áudio + Idiomas preferidos + Automático + Mono + Botões personalizados + Editar botões personalizados + Adicionar botão + Editar botão + Título + O botão já existe! + Código da Lua + Código da Lua (com pressionar longo) + (opcional) + Botão de Eliminar + Deseja eliminar o botão %s? + No arranque + (Id.: %d) + Editor de Script + Scripts + Opções de Script + Não é possível guardar o ficheiro + Ficheiro guardado + Renomear ficheiro + Eliminar ficheiro + O ficheiro já existe + Nome de ficheiro inválido + Criar ficheiro + Editar nome do ficheiro + Nome do ficheiro + Não é possível criar o ficheiro + Não é possível renomear o ficheiro + Não é possível eliminar o ficheiro + Eliminar ficheiro + Deseja eliminar o ficheiro \"%s\"? + Avançado + Ficheiros do utilizador, mpv.conf, input.conf + Usar ficheiros do utilizador MPV + Usar ficheiros na diretoria mpv-config + Saltar %1$s + %1$s saltado + Abertura + Encerramento + ms + Valor muito grande + Valor muito pequeno + Episódio anterior não encontrado! + Sem vídeos disponíveis + Definir como predefinição + Atraso + Paleta + Atraso de áudio + Velocidade + Atraso + Primário + Secundário + Ambos + Cores + Texto + Margem + Fundo + Vermelho + Verde + Azul + Alfa + Definições das legendas + Tipografia + Tipo de letra + Tamanho da letra + Estilo da margem + Tamanho da margem + Diversos + Posição + Filtros + Brilho + Contraste + Gama + Saturação + Tonalidade + Qualidades + %s (%s) + Mais + Canais de áudio + Página %d + Botões personalizados + %d segundos + Inserir duração + %s restante + Escolher duração + Velocidade + Criar velocidade predefinida + Adicionar legendas externas + Episódios não vistos + Manga + Comportamento do capítulo + Todas as entradas lidas/vistas + Última atualização da manga + Mostrar manga + Parar + Continuar + Adicione repositórios a %s. Deve ser uma URL que termine com \"index.min.json\". + Só funciona se o capítulo/episódio atual + o próximo já tiverem sido baixados. + Pular entradas com episódios não vistos/capítulos não lidos + Tem certeza? Episódios completos, capítulos e progresso de entradas fora da biblioteca serão perdidos + Aviso: downloads em massa podem fazer com que as fontes fiquem mais lentas e/ou bloqueiem o Aniyomi. Toque para saber mais. + Forçar o aplicativo a verificar novamente os capítulos e episódios baixados + Exibir hosters com falha + Tempo até ocultar controle do player + Quando um gesto de toque é definido como Personalizado, ele pode ser vinculado por meio do arquivo input.conf. Os códigos de tecla são 0x10001 para esquerda, 0x10002 para centro e 0x10003 para direita. + Quando um controle de mídia é definido como Personalizado, ele pode ser vinculado por meio do arquivo input.conf. Os códigos de tecla são 0x10004 para anterior, 0x10005 para reproduzir/pausar e 0x10006 para próximo. + Decodificação por hardware, Formato de pixel, Remoção de faixas + Nenhum + Usar o formato de pixel YUV420P + Pode corrigir telas pretas em alguns codecs de vídeo e também melhorar o desempenho, com possível perda de qualidade + Idioma(s) da legenda a ser selecionado por padrão em vídeos com múltiplas legendas. Códigos de idioma de duas ou três letras funcionam. Múltiplos valores podem ser separados por vírgula. + Filtro para legendas: se ativado, será usada a primeira legenda que contenha alguma palavra da lista autorizada. Você pode separar várias palavras com vírgulas. + Filtro negativo para legendas: se configurado, todas as legendas que contiverem alguma palavra da lista proibida serão excluídas. Você pode separar várias palavras com vírgulas. + Idiomas preferidos, correção de afinação, canais de áudio + Idioma(s) do áudio selecionado por padrão em vídeos com várias faixas de áudio. Use códigos de idioma de duas ou três letras. Vários valores podem ser separados por vírgula. + Ativar correção de afinação do áudio + Impede que o áudio se torne agudo em velocidades mais rápidas e grave em velocidades mais lentas + Auto-salvar + Execute código lua com botões personalizados + Escala + Falha ao carregar vídeos + Desativado + Temporizador de desligamento + Capítulos + Tamanho da lista + Botões personalizados + Tipo + Adicionar faixas de áudio externas + Toque para carregar vídeos + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/ru/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/ru/strings.xml index 6685005ba0..0b87ab829e 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/ru/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/ru/strings.xml @@ -63,7 +63,7 @@ Перемотка опенинга по умолчанию Перемотка опенинга Перемотка при двойном нажатии - Откл. + Отключить Включить точную перемотку Если этот параметр включён, перемотка не будет фокусироваться на ключевых кадрах, что приведёт к более медленной, но точной перемотке Двойное касание @@ -77,7 +77,7 @@ Поменять эпизод Своё Элементы управления медиа - Пред. + Предыдущее Воспроизведение/Пауза Следующий Если для элементов управления медиа установлено значение «Своё», его можно привязать через input.conf. Коды клавиш: 0x10004 для предыдущего, 0x10005 для воспроизведения/паузы и 0x10006 для следующего. @@ -131,9 +131,7 @@ При запуске (Код: %d) Расширенные - Скрипты, mvp.conf, input.conf - Включить скрипты MVP - Необходимо разрешение на внешнее хранение. + Файлы пользователя, mvp.conf, input.conf Редактировать файл конфигурации MPV для дальнейших настроек проигрывателя Сброс файла конфигурации MPV Редактировать входной файл MPV для настройки отображения клавиатуры @@ -148,7 +146,7 @@ Автовоспроизведение включено Автовоспроизведение отключено Не пропускать - %s: будет пропущено через %d сек. + %s: будет пропущено через %d сек %s: пропущено Следующий эпизод не найден! Предыдущий эпизод не найден! @@ -204,7 +202,7 @@ Откл. Стр. %d Настраиваемые кнопки - %d сек. + %d сек Автоотключение %s осталось Введите длительность @@ -356,8 +354,8 @@ Это приведёт к удалению даты просмотра этого эпизода. Вы уверены? Сбросить все эпизоды для этого аниме %1$s: %2$s, %3$s - Прогресс: %1$s/%2$s - Прогресс: %1$s + %1$s/%2$s + %1$s Эп. %1$s - %2$s Видео не найдено Найдены новые эпизоды @@ -388,7 +386,7 @@ Сахарная вата Мокко Проведите пальцем вправо - Проведите пальцем влево + Для включения серии проведите пальцем влево Скрыть скрытые категории из экране категорий и хранилища Ожидаемый период отсрочки выпуска аниме Исключить из сохранения данных @@ -416,4 +414,115 @@ Создать папку Aniyomi по умолчанию Ограничение скорости загрузки Установите значение 0, чтобы отключить ограничение скорости. - \ No newline at end of file + Стоп + Продолжить + Манга + Добавьте дополнительные репозитории к %s. Должно быть URL на окончании которого будет \"index.min.json\". + Работает только если нынешняя и следующая глава/серия уже скачана. + Все прочитанные/просмотренные тайтлы + Последнему обновленному тайтлу + Показать мангу + Показать кнопку «продолжить смотреть/читать» + Пропускать тайтлы с не просмотренными сериями/не прочитанными главами + Удалить главы/серии + Удалять после вручную помеченного как прочитанный/просмотреный + Автоматически удалять после прочтения/просмотра + Разрешить удаление глав/серий с закладками + Обновлять прогресс после прочтения/просмотра + Не просмотренные серии + Хосты выдающие ошибку + Отобразить пустые хосты + Пропустить вступление + Включить пропуск вступления + Выключить AniSkip если в видео уже есть главы + Неверный код: \"%s\" + Редактор скриптов + Редактировать/создавать новые скрипты и настройки скриптов + Скрипты + Настройки скриптов + Директория ничего не содержит. Нажмите на плюсик чтобы добавить новый файл. + Изменения не сохранены. Вы все еще желаете вернутся? + Ошибка сохранения файла + Файл сохранен + Переименовать файл + Удалить файл + Файл уже существует + Ошибка в имени файла + Создать файл + Редактировать имя файла + Имя файла + Ошибка создания файла + Ошибка переименования файла + Ошибка удаления файла + Удалить файл + Вы точно хотите удалить файл \"%s\"? + Пропустить %1$s + %1$s пропущено + Опенинг + Смешанные опенинги + Нет доступных видео + Список хостов пуст + Серии не загружены + Хост выбран из пустого списка + Задержка + Нажмите чтобы загрузить видео + Ошибка в загрузке видео + Главы + Тип + Ошибка миграции серии в сезон, выберите сезон чтобы продолжить + Показать сезоны + Продолжить просмотр + Режим отображения сеткой + Сезон %1$s + Номер сезона + По номеру сезона + Сезоны не найдены + Обновить стандартные настройки сезона + Настройки сезона + Поведение серии + Пометить дупликаты просмотренных серий как просмотренные + После просмотра серии + Сезон + Обновить сезоны сериями во время рефрэша + Обновить сезоны сериями во время обновления библиотеки + Редактировать фон + Пользовательский фон + Фон сохранён + Ошибка сохранения фона + Ошибка поделиться фоном + Поставить как фон + Поставить как превью + Фон обновлен + Ошибка в обновлении фона + Превью серии + Итоги серии + Поведение главы + Обновлять прогресс, когда отмечено как Прочитано/Просмотрено + Очистить кэш глав и серий + Очистить кэш глав/серий при запуске приложения + Вы уверены? Завершенные серии и главы а также прогресс не библиотечного контента будет потерян + Приостанавливает историю чтения + Из библиотеки + Также применить ко всем сериям в моей библиотеке + Сбросить все главы для этого тайтла + Не удалось загрузить из-за малого объема хранилища + Предупреждение: Большое количество загрузок может привести к замедлению работы источников и/или блокировке Aniyomi. Нажмите для подробностей. + Принуждает приложение перепроверить загруженные главы и серии + Внутренний плеер, жесты, декодировщики, субтитры + Хосты + Использовать файлы MPV пользователя + Использовать файлы в директории mpv-config + Эндинг + Краткий пересказ + Палитра + Качества + Ошибка миграции сезона в серию + После получения новой серии + Филлер + Помеченный филлер + Превью обновлено + Пометить серию как филлер + Снять пометку филлера с серии + Разрешить загрузку серий помеченных как филлер + Плеер + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/sr/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/sr/strings.xml index c4150ecd14..99b0197b02 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/sr/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/sr/strings.xml @@ -116,8 +116,6 @@ Ограничење појачавања звука Напредно Скрипте, mpv.conf, input.conf - Омогући MPV скрипте - Потребна је дозвола за спољашње складиште. Уреди MPV конфигурациони фајл за додатна подешавања плејера Ресетуј MPV конфигурациони фајл Уреди MPV уносни фајл за конфигурацију мапирања тастатуре @@ -400,4 +398,4 @@ Креирај подразумевану Aniyomi фасциклу Ограничење брзине преузимања Поставите на 0 да бисте онемогућили ограничење брзине. - \ No newline at end of file + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/ta/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/ta/strings.xml index ef449a587b..d396edc76b 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/ta/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/ta/strings.xml @@ -101,8 +101,6 @@ தொகுதி பூச்ட் தொப்பி மேம்பட்ட ச்கிரிப்ட்கள், MPV.Conf, input.conf - MPV ச்கிரிப்ட்களை இயக்கவும் - வெளிப்புற சேமிப்பக இசைவு தேவை. மேலும் பிளேயர் அமைப்புகளுக்கு MPV உள்ளமைவு கோப்பைத் திருத்தவும் MPV உள்ளமைவு கோப்பை மீட்டமைக்கவும் விசைப்பலகை மேப்பிங் உள்ளமைவுக்கு MPV உள்ளீட்டு கோப்பைத் திருத்து @@ -315,4 +313,4 @@ இயல்புநிலை அனியோமி கோப்புறையை உருவாக்கவும் வேக வரம்பைப் பதிவிறக்கவும் வேக வரம்பை முடக்க 0 ஆக அமைக்கவும். - \ No newline at end of file + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/tr/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/tr/strings.xml index 4aabc697ea..e213f4a9b5 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/tr/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/tr/strings.xml @@ -15,9 +15,9 @@ İzlenen bölümlerde izleme konumunu koru Yön Video - Ters yatay - Dikey sensör - Yatay sensör + Ters manzara + Sensör portre + Sensör manzara Kontroller Panellerde hareketle izin ver Yüklenme çemberini göster @@ -45,8 +45,8 @@ 8 saniye 9 saniye 10 saniye - AniSkip, çalışması için animenin MAL veya Anilist ile takip edilmesini gerektiriyor - Aniskip\'i etkinleştir + AniSkip\'in çalışması için animenin MAL veya AniList izleyicileri ile izleniyor olması gerekir + AniSkip\'i etkinleştir Resim İçinde Resim Resim İçinde Resim modunu etkinleştir Resim İçinde Resim modunda bölüm değiştirirken bölüm bildirimlerini göster @@ -97,7 +97,7 @@ YUV420P piksel biçimi kullan Bazı video kodeklerinde siyah ekran sorunlarını düzeltebilir ve ayrıca kaliteden kısarak performansı geliştirebilir Alt yazılar - Tercih edilen dil, beyaz liste, kara liste + Tercih edilen diller, beyaz liste, kara liste Tercih edilen diller Birden fazla alt yazı içeren videolarda varsayılan olarak seçilecek alt yazı dilleri, iki -ya da üç- harfli dil kodları kullanılabilir. Birden fazla değer virgülle ayrılabilir. Beyaz liste @@ -134,15 +134,13 @@ Başlangıçta (ID: %d) Gelişmiş - Kodlar, mpv.conf, input.conf - MPV kodlarını etkinleştir - Harici depolama izni gerektirir. + Kullanıcı dosyaları, mpv.conf, input.conf Daha fazla oynatıcı ayarı için MPV yapılandırma dosyasını düzenleyin MPV yapılandırma dosyasını sıfırla Tuş atamaları için MPV giriş dosyasını düzenle Ekrana sığdır - Ekrana göre kırpılmış - Ekrana göre uzatıldı + Ekrana göre kırp + Ekrana göre uzat Uyku zamanlayıcısı doldu ms Değer çok büyük @@ -247,7 +245,7 @@ Manga kategorileri Kategoriler Anime Kategorileri - Kütüphane girdileri + Kitaplık girdileri Manga ve Anime bölümleri Bölümler Uyarı: Ayarları yedeklemek izleyici şifrelerinizi de saklayacaktır. Bu yedekleme dosyasını asla paylaşmayın! @@ -299,8 +297,8 @@ Yerel anime Genel aramada yalnızca sabitlenmiş manga kaynaklarını ara Genel aramada yalnızca sabitlenmiş anime kaynaklarını ara - Zaten kütüphanede bulunan manga girdilerini gizle - Zaten kütüphanede bulunan anime girdilerini gizle + Zaten kitaplıkta bulunan manga girdilerini gizle + Zaten kitaplıkta bulunan anime girdilerini gizle Bölüm numarasına göre Harici indirme yöneticisi kullan Dahili indirme yöneticisi kullan @@ -321,8 +319,8 @@ Yeni bölümleri indir Birden fazla olan izlenmiş bölümlerin indirilmesini atla İzlerken otomatik olarak indir - Yalnızca kütüphanedeki girdilerde ve mevcut bölüm ile bir sonraki bölüm zaten indirilmişse çalışır - Kütüphaneye eklerken izleyici menüsünü açın + Yalnızca kitaplıktaki girdilerde ve mevcut bölüm ile bir sonraki bölüm zaten indirilmişse çalışır + Kitaplığa eklerken izleyici menüsünü aç Sıradaki bölümün yayınlanma tarihini göster Yedekleme dosyasına hangi bilgiler dahil edilecek Anime Depolama kullanımı @@ -330,19 +328,19 @@ Anime tarafından kullanılan: %1$s, manga tarafından kullanılan: %2$s Manga veritabanını temizle Anime veritabanını temizle - Kütüphanenize kaydedilmeyen manga girdilerinin geçmiş bilgisini sil - Kütüphanenize kaydedilmeyen anime girdilerinin geçmiş bilgisini sil - Kütüphaneden anime + Kitaplığınıza kaydedilmemiş manga girdilerinin geçmiş bilgilerini sil + Kitaplığınıza kaydedilmemiş anime girdilerinin geçmiş bilgilerini sil + Kitaplıktaki animeler İndirilen bölümler Yerel manga kaynağı Yerel anime kaynağı Bölüm bulunamadı Geçersiz bölüm biçimi Bilinmeyen stüdyo - \"%s\" dosyasını silmek istediğinize emin misiniz? + \"%s\" ögesini silmek istediğinize emin misiniz? İndirilen bölümler silinsin mi? - Mangayı kütüphaneye ekle? - Animeyi kütüphaneye ekle? + Mangayı kitaplığa ekle? + Animeyi kitaplığa ekle? Bölüm %1$s İndiriliyor (%d%%) Hata @@ -351,7 +349,7 @@ Bölüm sayısına göre İzlenmeyen Seçilen bölümleri silmek istediğinize emin misiniz? - Kütüphanemdeki tüm animelere uygula + Kitaplığımdaki tüm animelere uygula Hiç bölüm bulunamadı İzleniyor Şu anda okunuyor @@ -364,8 +362,8 @@ Bu, bölümün izlenme tarihini kaldırır. Emin misiniz? Bu anime için tüm bölümleri sıfırla %1$s: %2$s, %3$s - İlerleme: %1$s/%2$s - İlerleme: %1$s + %1$s/%2$s + %1$s Bölüm %1$s - %2$s Video bulunamadı Yeni bölümler bulundu @@ -385,8 +383,8 @@ %1$s bölüm Bölüm ayarları Yedekleme seçenekleri - Manga Eklentileri - Anime Eklentileri + Manga Uzantıları + Anime Uzantıları Manga\'yı Taşı Anime\'yi Taşı Ayarlar @@ -396,7 +394,7 @@ Pamuk şekeri Mocha Sağa kaydırma işlevi - Sola kaydırma işlevi + Anime bölümünü sola kaydırma Gizli kategorileri kategoriler menüsünde ve depolama ekranında gizle Animenin tahmini çıkış tarihi Veri tasarrufundan hariç tut @@ -421,9 +419,112 @@ Buraya Bandwidth Hero ara sunucusu bağlantısını koyun Aynı anda indirmeler yalnızca tarifesiz veya kendinde barındırılan kaynaklardan yapılacaktır İzlenmemiş - Manga eklenti depoları - Anime eklenti depoları + Manga uzantı depoları + Anime uzantı depoları Varsayılan Aniyomi klasörünü oluştur Bölüm indirme hızı sınırı Hız sınırını devre dışı bırakmak için 0 olarak ayarlayın. - \ No newline at end of file + Görülmemiş bölümler + Manga + Manga bölüm davranışı + %s\'ye ek depolar ekleyin. Bu, \"index.min.json\" ile biten bir URL olmalıdır. + Yalnızca manganın/animenin şu anki bölümü ve sonraki bölümü indirilmişse çalışır. + Tüm okunmuş/izlenmiş girdiler + Son manga güncellemesi + Mangaları göster + İzlemeye/okumaya devam et butonu + İzlenmemiş/okunmamış bölümleri olan girdileri atla + Manga/anime bölümlerini sil + Manuel olarak okundu/izlendi olarak işaretlenince + Okuduktan/izledikten sonra otomatik olarak sil + Yer imi olan manga/anime bölümlerinin silinmesine izin ver + Okuduktan/izledikten sonra ilerlemeyi güncelle + Okundu/izlendi olarak işaretlenince ilerlemeyi güncelle + Manga ve anime bölümleri önbelleğini temizle + Uygulama başlatıldığına manga ve anime bölümleri önbelleğini temizle + Emin misiniz? Tamamlanmış manga ve anime bölümleri ile kitaplıkta olmayan girdilerin ilerlemeleri kaybolacaktır + Geçmişi duraklatır + Kitaplıktaki mangalar + Kitaplığımda bulununan tüm mangalara uygula + Bu manga için tüm bölümleri sıfırla + Düşük depolama alanı nedeniyle indirilemedi + Uyarı: büyük toplu indirmeler, kaynakların daha yavaş çalışmasına ve/veya Aniyomi uygulamasını engellemesine neden olabilir. Daha fazla bilgi için dokunun. + Uygulamayı indirilmiş manga ve anime bölümlerini tekrar kontrol etmeye zorla + Giriş atlama + Giriş atlamayı etkinleştir + Videoda zaten bölümler varsa AniSkip\'i devre dışı bırak + Kod düzenleyici + Yeni kod ve kod seçenekleri oluşturun ve düzenleyin + Kodlar + Kod seçenekleri + Dosya konumu herhangi bir şey içermiyor. Yeni bir dosya eklemek için artı butonuna dokunun. + Kaydedilmemiş değişiklikleriniz var. Yine de geri gitmek istiyor musunuz? + Dosya kaydedilemedi + Dosya kaydedildi + Dosyayı yeniden adlandır + Dosyayı sil + Dosya zaten var + Geçersiz dosya adı + Dosya oluştur + Dosya adını düzenle + Dosya adı + Dosya oluşturulamadı + Dosya yeniden adlandırılamadı + Dosya silinemedi + Dosyayı sil + \"%s\" dosyasını silmek istediğinize emin misiniz? + Atla: %1$s + %1$s atlandı + Açılış + Kapanış + Özet + Karışık açılış + %1$s - BÖL%2$s - %3$s + Gecikme + Palet + Kalite + Bölümler + Tür + Anime bölüm davranışı + Yinelenen izlenmiş bölümü izlendi olarak işaretle + Bir bölüm izledikten sonra + Yeni bir bölüm geldiğinde + Geçersiz kod: \"%s\" + Kullanıcı MPV dosyalarını kullan + mpv-config dosya konumundaki dosyaları kullan + Oynatıcı + Dahili oynatıcı, hareketler, çözümleyiciler, alt yazılar + Dur + Devam Et + Bölüm, sezona taşınamadı; devam etmek için sezon seçin + Sezon, bölüme taşınamadı + Sezonları göster + İzlemeye devam et butonu + Izgara görünüm modu + Sezon %1$s + Sezon numarası + Sezon numarasına göre + Sezon bulunamadı + Varsayılan sezon ayarı güncellendi + Sezon ayarları + Sezon + Yenileme sırasında sezonları bölümlerle güncelle + Kitaplık güncellemesi sırasında sezonları bölümlerle güncelle + Hikâye Dışı + Hikâye dışı işaretlendi + Arka planı düzenle + Özel arka planlar + Arka plan kaydedildi + Arka plan kaydedilemedi + Arka plan paylaşılamadı + Arka plan olarak ayarla + Küçük resim olarak ayarla + Arka plan güncellendi + Küçük resim güncellendi + Arka plan güncellenemedi + Hikâye dışı işaretle + Hikâye dışı işaretini kaldır + Hikâye dışı olarak işaretlenmiş bölümlerin indirilmesine izin ver + Bölüm küçük resimleri + Bölüm özetleri + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/uk/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/uk/strings.xml index 4de872726b..05ba73093b 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/uk/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/uk/strings.xml @@ -134,9 +134,7 @@ При запуску (ID: %d) Просунутий - Скрипти, mpv.conf, input.conf - Увімкнути сценарії MPV - Потрібен дозвіл на зовнішнє сховище. + Файли користувача, mpv.conf, input.conf Редагувати файл конфігурації MPV для подальших налаштувань плеєра Скинути конфігураційний файл MPV Відредагуйте вхідний файл MPV для конфігурації розкладки клавіатури @@ -266,7 +264,7 @@ Елементи аніме на рядок Перемістити історію на вкладку Детальніше Перемістити оновлення в вкладку Детальніше - Перемістити Манга в вкладку Детальніше + Перемістити Манґа в вкладку Детальніше Перемістіть Огляд на вкладку Більше Не переглянуто Глобальний пошук манґи @@ -327,7 +325,7 @@ Показати час показу наступного епізоду Яку інформацію включити у файл резервної копії Використання сховища аніме - Використання сховища манги + Використання сховища манґи Використовується в аніме: %1$s, використовується в манзі: %2$s Очистити базу даних Очистити базу даних аніме @@ -365,8 +363,8 @@ Це призведе до видалення дати перегляду цього епізоду. Ви впевнені? Скинути всі епізоди для цього аніме %1$s: %2$s, %3$s - Прогрес: %1$s/%2$s - Прогрес: %1$s + %1$s/%2$s + %1$s Еп. %1$s - %2$s Відео не знайдено Знайдено нові епізоди @@ -397,7 +395,7 @@ Бавовняні цукерки Моча Проведіть пальцем праворуч - Проведіть пальцем ліворуч + Епізод при проведенні пальцем ліворуч Сховати приховані категорії з екрану категорій Очікуваний пільговий період випуску аніме Виключити зі зберігача даних @@ -422,9 +420,111 @@ Помістіть URL-адресу проксі-сервера Bandwidth Hero тут Буде завантажувати тільки з власному хості або не лімітованих джерел Небачений - Сховища розширення манги + Сховища розширення манґи Repos розширення аніме Створіть папку Aniyomi за замовчуванням Обмеження швидкості завантаження розділу Встановіть значення 0, щоб вимкнути обмеження швидкості. - \ No newline at end of file + Непереглянуті епізоди + Манґа + Поведінка розділу + Додайте додаткові репозиторії до %s. Це має бути URL-адреса, яка закінчується на \"index.min.json\". + Працює лише якщо поточний розділ/епізод + наступний вже завантажені. + Усі прочитані/переглянуті записи + Останнє оновлення манґи + Показати манґу + Кнопка «Продовжити перегляд/читання» + Пропустити записи з непереглянутими епізодами/непрочитаними розділами + Видалити розділи/епізоди + Після ручної позначки як прочитане/переглянуте + Після прочитання/перегляду автоматично видаляти + Дозволити видалення розділів/епізодів із закладками + Оновлення прогресу після прочитання/перегляду + Оновити прогрес, коли позначено як прочитане/переглянуте + Очистити кеш розділів та епізодів + Очищати кеш епізодів/розділів під час запуску програми + Ви впевнені? Завершені епізоди та розділи, а також прогрес записів, що не належать до бібліотеки, будуть втрачені + Призупиняє вашу історію + Манґа з бібліотеки + Також застосовувати до всієї манґи в моїй бібліотеці + Скинути всі розділи цієї манґи + Не вдалося завантажити через брак місця + Попередження: великі масові завантаження можуть призвести до уповільнення роботи джерел та/або блокування Aniyomi. Натисніть, щоб дізнатися більше. + Примусово перевіряти завантажені розділи та епізоди за допомогою програми + Пропустити вступ + Увімкнути пропуск вступу + Вимкнути AniSkip, якщо відео вже містить розділи + Редактор сценаріїв + Редагування та створення нових скриптів і параметрів скриптів + Скрипти + Параметри скриптів + Каталог не містить елементів. Натисніть кнопку з плюсом, щоб додати новий файл. + У вас є незбережені зміни. Ви все ще хочете повернутися? + Не вдалося зберегти файл + Файл збережено + Перейменувати файл + Видалити файл + Файл вже існує + Недійсне ім\'я файлу + Створити файл + Редагувати назву файлу + Ім\'я файлу + Не вдалося створити файл + Не вдалося перейменувати файл + Не вдалося видалити файл + Видалити файл + Ви бажаєте видалити файл \"%s\"? + Пропустити %1$s + %1$s пропущено + Відкриття + Кінець + Підсумок + Змішане відкриття + Затримка + Палітра + Якості + Розділи + Тип + Поведінка епізоду + Позначити дублікат переглянутого епізоду як переглянуте + Після перегляду епізоду + Після отримання нового епізоду + Недійсний код: \"%s\" + Використовувати MPV-файли користувача + Використовувати файли з каталогу mpv-config + Гравець + Вбудований програвач, жести, декодери, субтитри + Стій + Продовжити + Не вдалося перенести епізод у сезон, виберіть сезон для продовження + Не вдалося перенести сезон в епізод + Показати сезони + Кнопка «Продовжити перегляд» + Режим відображення сітки + Сезон %1$s + Номер сезону + За номером сезону + Сезонів не знайдено + Оновлені налаштування сезону за замовчуванням + Налаштування сезону + Сезон + Оновлення сезонів епізодами під час оновлення + Оновлення сезонів епізодами під час оновлення бібліотеки + Наповнювач + Філлермаркований + Редагувати фон + Власний фон + Фон збережено + Помилка збереження фону + Помилка спільного доступу до фону + Встановити як фон + Встановити як мініатюру + Фон оновлено + Мініатюру оновлено + Не вдалося оновити фон + Епізод «Філлермарк» + Епізод Unfillermark + Дозволити завантаження епізодів із позначкою «філлер» + Мініатюри епізодів + Короткий зміст епізодів + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/vi/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/vi/strings.xml index 3f1966c49b..63935788d7 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/vi/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/vi/strings.xml @@ -57,8 +57,6 @@ Mono Stereo Stereo đảo ngược - Kích hoạt script MPV - Cần có quyền truy cập bộ nhớ ngoài. Sửa file cấu hình MPV để cài đặt chi tiết trình phát Đặt lại file cấu hình MPV Sửa file MVP input để chỉnh sửa map bàn phím @@ -269,4 +267,25 @@ Tạo thư mục Aniyomi mặc định Giới hạn tốc độ tải xuống Đặt thành 0 để tắt giới hạn tốc độ. - \ No newline at end of file + Tập chưa xem + Dừng + Tiếp tục + Manga + Biểu hiện chương + Thêm các repo vào %s. Đây là nơi nhập các URL có kết thúc như \"index.min.json\". + Chỉ áp dụng với chương/tập hiện tại và các chương/tập tiếp theo đã tải xuống. + Tất cả mục đã đọc/xem + Manga mới cập nhật + Hiện Manga + Nút tiếp tục đọc/tiếp tục xem + Bỏ qua các mục chưa xem/ chưa đọc + Xoá chương/tập + Sau khi đánh dấu thủ công là đã đọc/đã xem + Tự động xóa sau khi đọc/xem + Cho phép xóa các chương/các tập đã đánh dấu + Cập nhật tiến độ sau khi đọc/xem + Cập nhật tiến độ khi được đánh dấu là đã đọc + Dọn dẹp bộ nhớ đệm của chương/tập + Xóa bộ nhớ đệm của chương/tập mỗi lần mở ứng dụng + Bạn có chắc không? Các chương/tập đã đọc/xem và tiến độ đọc/xem của các mục không nằm trong thư viện sẽ bị mất + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/zh-rCN/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/zh-rCN/strings.xml index 31211d08b3..e5aaac86bf 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/zh-rCN/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/zh-rCN/strings.xml @@ -131,9 +131,7 @@ 启动时 (ID: %d) 高级 - 脚本、mpv.conf、input.conf - 开启 MPV 脚本 - 需要内部存储权限。 + 用户脚本、mpv.conf、input.conf 编辑 MPV 配置文件以进一步调节播放器相关设置 重置 MPV 设置 为键盘映射配置编辑 MPV 输入文档 @@ -418,4 +416,85 @@ 创建默认 Aniyomi 文件夹 限速下载 归零则取消限速。 - \ No newline at end of file + 未观看剧集 + 暂停 + 继续 + 漫画 + 章节行为 + 在 %s 中添加仓库,输入的网址结尾应为 \"index.min.json\" 。 + 要求当前章节/剧集和下一章/集都已下载。 + 所有已读/看的作品 + 最新漫画更新 + 显示作品 + 继续观看/阅读按钮 + 跳过有未看剧集/未读章节的作品 + 删除章节/剧集 + 手动标记为已读/已看后 + 阅读/观看完自动删除 + 允许删除添加了书签的章节/剧集 + 阅读/观看后更新进度 + 标记为已读/已看时更新进度 + 清除章节和剧集缓存 + 启动时清除章节和剧集缓存 + 已完成的和未添加到库中的作品的进度都将会丢失,你确定吗? + 暂停历史记录 + 库中的漫画 + 同时应用到库中的所有漫画 + 重置此漫画的所有章节 + 存储空间不足,无法下载 + 警告:批量下载可能导致插件变慢,甚至会使站点屏蔽 Aniyomi。点击了解详情。 + 强制重新扫描已下载的章节和剧集 + 播放器 + 内置播放器,手势,解码器,字幕 + 主机提供商 + 显示失效的主机提供商 + 显示空的主机提供商 + 如果视频已经包含章节,请禁用 AniSkip + 无效代码:“%s” + 脚本编辑器 + 编辑和创建新脚本和脚本选项 + 脚本 + 脚本选项 + 目录中没有项目。点击加号按钮添加新文件。 + 有更改还未保存,您确定要返回吗? + 无法保存文件 + 文件已保存 + 重命名文件 + 删除文件 + 文件已存在 + 无效文件名 + 创建文件 + 编辑文件名 + 文件名 + 无法创建文件 + 无法重命名文件 + 无法删除文件 + 删除文件 + 您确定要删除文件“%s”吗? + 使用用户 MPV 文件 + 使用 mpv-config 目录中的文件 + 跳过 %1$s + 已跳过 %1$s + 片头 + 片尾 + 没有可用的视频 + 未加载任何剧集 + 延迟 + 调色板 + 点击加载视频 + 无法加载视频 + 画质 + 章节 + 类型 + 剧集行为 + 将重复的已看剧集标记为已看 + 看完一集后 + 获取新剧集后 + 跳过片头/片尾 + 启用跳过片头/片尾 + 概览 + 混合播放 + 继续观看按钮 + 网格显示模式 + 第 %1$s 季 + diff --git a/i18n-aniyomi/src/commonMain/moko-resources/zh-rTW/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/zh-rTW/strings.xml index c86ba19cbf..219a9fbb4f 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/zh-rTW/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/zh-rTW/strings.xml @@ -57,8 +57,6 @@ 單聲道 立體聲 反向立體聲 - 啟用 MPV 腳本 - 需要外部儲存權限。 編輯 MPV 設定檔以進一步設定播放器 重置 MPV 設定檔 編輯 MPV 輸入文件以進行鍵盤映射配置 @@ -269,4 +267,4 @@ 建立預設的 Aniyomi 資料夾 下載速度限制 設定為 0 以停用速度限制。 - \ No newline at end of file + From 227611277d7d23039690099b4c56609464aa21c2 Mon Sep 17 00:00:00 2001 From: hollow <35398794+hollowshiroyuki@users.noreply.github.com> Date: Tue, 28 Oct 2025 22:34:11 +0100 Subject: [PATCH 44/45] fix: Hosters feature detection (#2216) (cherry picked from commit 1d690d8855d4f26ed379509f0403f61d87a0a22d) --- .../eu/kanade/tachiyomi/ui/player/loader/EpisodeLoader.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/player/loader/EpisodeLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/player/loader/EpisodeLoader.kt index b67f3ccd92..b4aa7c2fff 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/player/loader/EpisodeLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/player/loader/EpisodeLoader.kt @@ -6,6 +6,7 @@ import eu.kanade.tachiyomi.animesource.model.Hoster import eu.kanade.tachiyomi.animesource.model.Hoster.Companion.toHosterList import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource +import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.ui.player.controls.components.sheets.HosterState import kotlinx.coroutines.CancellationException @@ -62,7 +63,10 @@ class EpisodeLoader { private fun checkHasHosters(source: AnimeHttpSource): Boolean { var current: Class = source.javaClass while (true) { - if (current == AnimeHttpSource::class.java) { + if (current == ParsedAnimeHttpSource::class.java || + current == AnimeHttpSource::class.java || + current == AnimeSource::class.java + ) { return false } if (current.declaredMethods.any { From fa241647848dbf6e4ee2edf29f324b2f6cb71f4d Mon Sep 17 00:00:00 2001 From: kenkoro <85745790+kenkoro@users.noreply.github.com> Date: Fri, 31 Oct 2025 18:08:25 +0100 Subject: [PATCH 45/45] feat: Enable horizontal seek gesture summary (#2224) (cherry picked from commit 97a7deb0a26c3608166ec2c3457b4f076d948d6f) --- .../more/settings/screen/player/PlayerSettingsGesturesScreen.kt | 1 + i18n-aniyomi/src/commonMain/moko-resources/base/strings.xml | 1 + 2 files changed, 2 insertions(+) diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/player/PlayerSettingsGesturesScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/player/PlayerSettingsGesturesScreen.kt index 0febbbb41f..7a6d3c89ec 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/player/PlayerSettingsGesturesScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/player/PlayerSettingsGesturesScreen.kt @@ -96,6 +96,7 @@ object PlayerSettingsGesturesScreen : SearchableSettings { Preference.PreferenceItem.SwitchPreference( preference = enableHorizontalSeekGesture, title = stringResource(AYMR.strings.enable_horizontal_seek_gesture), + subtitle = stringResource(AYMR.strings.enable_horizontal_seek_gesture_summary), ), Preference.PreferenceItem.SwitchPreference( preference = showSeekbar, diff --git a/i18n-aniyomi/src/commonMain/moko-resources/base/strings.xml b/i18n-aniyomi/src/commonMain/moko-resources/base/strings.xml index a69854b3dc..90317c2d8e 100644 --- a/i18n-aniyomi/src/commonMain/moko-resources/base/strings.xml +++ b/i18n-aniyomi/src/commonMain/moko-resources/base/strings.xml @@ -111,6 +111,7 @@ Swap volume and brightness slider Seeking Enable Horizontal Seek Gesture + Swipe left or right to rewind or fast-forward Show seekbar when seeking Default skip intro length Skip intro length