From 986869ff6858d8468b43d76d4e4fb6323332cb0c Mon Sep 17 00:00:00 2001 From: Dark25 Date: Mon, 13 Jan 2025 03:27:28 +0100 Subject: [PATCH] Implement i18nTail for improved string handling (#190) * Implement i18nTail for improved string handling * formatt * Translations update from Crowdin --- .github/workflows/build_pull_request.yml | 3 +- app/build.gradle.kts | 4 + .../eu/kanade/domain/ui/model/AppTheme.kt | 3 +- .../anime/EpisodeOptionsDialogScreen.kt | 3 +- .../components/EntryBottomActionMenu.kt | 5 +- .../entries/components/EntryToolbar.kt | 3 +- .../anime/AnimeLibrarySettingsDialog.kt | 3 +- .../library/components/LibraryToolbar.kt | 3 +- .../manga/MangaLibrarySettingsDialog.kt | 3 +- .../screen/SettingsAppearanceScreen.kt | 14 +- .../screen/SettingsConnectionsScreen.kt | 3 +- .../settings/screen/SettingsDataScreen.kt | 57 +++---- .../settings/screen/SettingsDiscordScreen.kt | 6 +- .../settings/screen/SettingsLibraryScreen.kt | 17 +- .../settings/screen/SettingsMainScreen.kt | 5 +- .../settings/screen/SettingsReaderScreen.kt | 25 +-- .../AppCustomThemeColorPickerScreen.kt | 5 +- .../browse/AnimeExtensionReposScreen.kt | 6 +- .../browse/MangaExtensionReposScreen.kt | 6 +- .../screen/data/SyncSettingsSelector.kt | 7 +- .../screen/data/SyncTriggerOptionsScreen.kt | 5 +- .../player/PlayerSettingsPlayerScreen.kt | 13 +- .../reader/ReaderPageActionsDialog.kt | 15 +- .../reader/appbars/BottomReaderBar.kt | 6 +- .../reader/settings/ReadingModePage.kt | 7 +- .../data/sync/models/SyncTriggerOptions.kt | 14 +- .../sync/service/GoogleDriveSyncService.kt | 7 +- .../service/TorrentServerService.kt | 3 +- .../ui/entries/anime/EditAnimeDialog.kt | 3 +- .../ui/entries/manga/EditMangaDialog.kt | 3 +- .../ui/library/anime/AnimeLibraryTab.kt | 3 +- .../ui/library/manga/MangaLibraryTab.kt | 3 +- .../tachiyomi/ui/player/ExternalIntents.kt | 4 +- .../tachiyomi/ui/reader/ReaderActivity.kt | 3 +- .../ui/reader/setting/ReaderBottomButton.kt | 3 +- .../ui/reader/setting/ReaderPreferences.kt | 15 +- .../setting/track/GoogleDriveLoginActivity.kt | 8 +- build.gradle.kts | 1 + core/common/build.gradle.kts | 5 +- .../core/common/util/system/ImageUtil.kt | 23 +-- gradle/libs.versions.toml | 1 + i18n-tail/build.gradle.kts | 45 ++++++ .../commonMain/moko-resources/af/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/ar/strings.xml | 149 ++++++++++++++++++ .../moko-resources/base/plurals.xml | 3 + .../moko-resources/base/strings.xml | 1 - .../commonMain/moko-resources/ca/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/cs/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/da/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/de/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/el/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/en/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/es/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/fi/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/fr/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/he/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/hu/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/it/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/ja/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/ko/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/nl/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/no/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/pl/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/pt/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/ro/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/ru/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/sr/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/sv/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/tr/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/uk/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/vi/strings.xml | 149 ++++++++++++++++++ .../commonMain/moko-resources/zh/strings.xml | 149 ++++++++++++++++++ i18n/build.gradle.kts | 16 +- presentation-core/build.gradle.kts | 3 + settings.gradle.kts | 3 + source-api/build.gradle.kts | 5 +- source-local/build.gradle.kts | 4 +- 77 files changed, 4422 insertions(+), 156 deletions(-) create mode 100644 i18n-tail/build.gradle.kts create mode 100644 i18n-tail/src/commonMain/moko-resources/af/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/ar/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/base/plurals.xml rename i18n/src/commonMain/moko-resources/base/strings-animetail.xml => i18n-tail/src/commonMain/moko-resources/base/strings.xml (99%) create mode 100644 i18n-tail/src/commonMain/moko-resources/ca/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/cs/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/da/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/de/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/el/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/en/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/es/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/fi/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/fr/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/he/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/hu/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/it/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/ja/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/ko/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/nl/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/no/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/pl/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/pt/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/ro/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/ru/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/sr/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/sv/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/tr/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/uk/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/vi/strings.xml create mode 100644 i18n-tail/src/commonMain/moko-resources/zh/strings.xml diff --git a/.github/workflows/build_pull_request.yml b/.github/workflows/build_pull_request.yml index 226ad9d253..157901b97b 100644 --- a/.github/workflows/build_pull_request.yml +++ b/.github/workflows/build_pull_request.yml @@ -8,7 +8,8 @@ on: - '!i18n/src/commonMain/moko-resources/**/strings.xml' - '!i18n/src/commonMain/moko-resources/**/plurals-aniyomi.xml' - '!i18n/src/commonMain/moko-resources/**/plurals.xml' - - 'i18n/src/main/res/**/strings-animetail.xml' + - 'i18n-tail/src/commonMain/moko-resources/base/strings.xml' + - 'i18n-tail/src/commonMain/moko-resources/base/plurals.xml' - 'i18n/src/commonMain/moko-resources/base/strings-aniyomi.xml' - 'i18n/src/commonMain/moko-resources/base/strings.xml' - 'i18n/src/commonMain/moko-resources/base/plurals-aniyomi.xml' diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8a5d5582f1..f2049a837f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -9,6 +9,7 @@ plugins { id("com.github.zellius.shortcut-helper") kotlin("plugin.serialization") alias(libs.plugins.aboutLibraries) + id("com.github.ben-manes.versions") } if (gradle.startParameter.taskRequests.toString().contains("Standard")) { @@ -147,6 +148,9 @@ android { dependencies { implementation(projects.i18n) + // TAIL + implementation(projects.i18nTail) + // TAIL implementation(projects.core.archive) implementation(projects.core.common) implementation(projects.coreMetadata) diff --git a/app/src/main/java/eu/kanade/domain/ui/model/AppTheme.kt b/app/src/main/java/eu/kanade/domain/ui/model/AppTheme.kt index df94f8e75d..b96fd72b14 100644 --- a/app/src/main/java/eu/kanade/domain/ui/model/AppTheme.kt +++ b/app/src/main/java/eu/kanade/domain/ui/model/AppTheme.kt @@ -2,11 +2,12 @@ package eu.kanade.domain.ui.model import dev.icerock.moko.resources.StringResource import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR enum class AppTheme(val titleRes: StringResource?) { DEFAULT(MR.strings.label_default), MONET(MR.strings.theme_monet), - CUSTOM(MR.strings.theme_custom), + CUSTOM(TLMR.strings.theme_custom), CLOUDFLARE(MR.strings.theme_cloudflare), COTTONCANDY(MR.strings.theme_cottoncandy), DOOM(MR.strings.theme_doom), diff --git a/app/src/main/java/eu/kanade/presentation/entries/anime/EpisodeOptionsDialogScreen.kt b/app/src/main/java/eu/kanade/presentation/entries/anime/EpisodeOptionsDialogScreen.kt index 4b92d2b04c..22d3109926 100644 --- a/app/src/main/java/eu/kanade/presentation/entries/anime/EpisodeOptionsDialogScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/entries/anime/EpisodeOptionsDialogScreen.kt @@ -80,6 +80,7 @@ import tachiyomi.domain.items.episode.interactor.GetEpisode import tachiyomi.domain.items.episode.model.Episode import tachiyomi.domain.source.anime.service.AnimeSourceManager import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.screens.LoadingScreen @@ -383,7 +384,7 @@ private fun QualityOptions( ) ClickableRow( - text = stringResource(MR.strings.action_cast), // Texto para la nueva opción + text = stringResource(TLMR.strings.action_cast), // Texto para la nueva opción icon = Icons.Outlined.Cast, // Icono para la nueva opción onClick = { onCastClicked() diff --git a/app/src/main/java/eu/kanade/presentation/entries/components/EntryBottomActionMenu.kt b/app/src/main/java/eu/kanade/presentation/entries/components/EntryBottomActionMenu.kt index c1e5d6d43b..9bc43576f2 100644 --- a/app/src/main/java/eu/kanade/presentation/entries/components/EntryBottomActionMenu.kt +++ b/app/src/main/java/eu/kanade/presentation/entries/components/EntryBottomActionMenu.kt @@ -30,8 +30,6 @@ import androidx.compose.material.icons.outlined.BookmarkRemove import androidx.compose.material.icons.outlined.Delete import androidx.compose.material.icons.outlined.DoneAll import androidx.compose.material.icons.outlined.Download -import androidx.compose.material.icons.outlined.Input -import androidx.compose.material.icons.outlined.OpenInNew import androidx.compose.material.icons.outlined.RemoveDone import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -62,6 +60,7 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.i18n.stringResource import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -363,7 +362,7 @@ fun LibraryBottomActionMenu( // SY --> if (showOverflow) { Button( - title = stringResource(MR.strings.reset_info), + title = stringResource(TLMR.strings.reset_info), icon = Icons.Outlined.Delete, toConfirm = confirm[5], onLongClick = { onLongClickItem(5) }, diff --git a/app/src/main/java/eu/kanade/presentation/entries/components/EntryToolbar.kt b/app/src/main/java/eu/kanade/presentation/entries/components/EntryToolbar.kt index f3164d411a..294a35830b 100644 --- a/app/src/main/java/eu/kanade/presentation/entries/components/EntryToolbar.kt +++ b/app/src/main/java/eu/kanade/presentation/entries/components/EntryToolbar.kt @@ -29,6 +29,7 @@ import eu.kanade.presentation.components.UpIcon import eu.kanade.presentation.entries.DownloadAction import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.theme.active @@ -130,7 +131,7 @@ fun EntryToolbar( if (onClickEditInfo != null) { add( AppBar.OverflowAction( - title = stringResource(MR.strings.action_edit_info), + title = stringResource(TLMR.strings.action_edit_info), onClick = onClickEditInfo, ), ) diff --git a/app/src/main/java/eu/kanade/presentation/library/anime/AnimeLibrarySettingsDialog.kt b/app/src/main/java/eu/kanade/presentation/library/anime/AnimeLibrarySettingsDialog.kt index 31206faf9d..690c7545e7 100644 --- a/app/src/main/java/eu/kanade/presentation/library/anime/AnimeLibrarySettingsDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/library/anime/AnimeLibrarySettingsDialog.kt @@ -34,6 +34,7 @@ import tachiyomi.domain.library.anime.model.sort import tachiyomi.domain.library.model.LibraryDisplayMode import tachiyomi.domain.library.service.LibraryPreferences import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.components.BaseSortItem import tachiyomi.presentation.core.components.CheckboxItem import tachiyomi.presentation.core.components.HeadingItem @@ -62,7 +63,7 @@ fun AnimeLibrarySettingsDialog( stringResource(MR.strings.action_sort), stringResource(MR.strings.action_display), // SY --> - stringResource(MR.strings.group), + stringResource(TLMR.strings.group), // SY <-- ), ) { page -> diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LibraryToolbar.kt b/app/src/main/java/eu/kanade/presentation/library/components/LibraryToolbar.kt index df9e7e910c..610cab5844 100644 --- a/app/src/main/java/eu/kanade/presentation/library/components/LibraryToolbar.kt +++ b/app/src/main/java/eu/kanade/presentation/library/components/LibraryToolbar.kt @@ -21,6 +21,7 @@ import eu.kanade.presentation.components.AppBarActions import eu.kanade.presentation.components.SearchToolbar import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.components.Pill import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.theme.active @@ -122,7 +123,7 @@ private fun LibraryRegularToolbar( onClick = onClickOpenRandomEntry, ), AppBar.OverflowAction( - title = stringResource(MR.strings.sync_library), + title = stringResource(TLMR.strings.sync_library), onClick = onClickSyncNow, ), ), diff --git a/app/src/main/java/eu/kanade/presentation/library/manga/MangaLibrarySettingsDialog.kt b/app/src/main/java/eu/kanade/presentation/library/manga/MangaLibrarySettingsDialog.kt index d0a2ded55d..3942a4ed0b 100644 --- a/app/src/main/java/eu/kanade/presentation/library/manga/MangaLibrarySettingsDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/library/manga/MangaLibrarySettingsDialog.kt @@ -34,6 +34,7 @@ import tachiyomi.domain.library.manga.model.sort import tachiyomi.domain.library.model.LibraryDisplayMode import tachiyomi.domain.library.service.LibraryPreferences import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.components.BaseSortItem import tachiyomi.presentation.core.components.CheckboxItem import tachiyomi.presentation.core.components.HeadingItem @@ -62,7 +63,7 @@ fun MangaLibrarySettingsDialog( stringResource(MR.strings.action_sort), stringResource(MR.strings.action_display), // SY --> - stringResource(MR.strings.group), + stringResource(TLMR.strings.group), // SY <-- ), ) { page -> diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt index a03fdbe477..36d94d77c7 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt @@ -25,8 +25,8 @@ import eu.kanade.presentation.more.settings.widget.AppThemePreferenceWidget import eu.kanade.tachiyomi.util.system.toast import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableMap -import tachiyomi.core.common.i18n.stringResource import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.util.collectAsState import uy.kohesive.injekt.Injekt @@ -72,8 +72,8 @@ object SettingsAppearanceScreen : SearchableSettings { val customPreferenceItem = if (appTheme == AppTheme.CUSTOM) { listOf( Preference.PreferenceItem.TextPreference( - title = stringResource(MR.strings.pref_custom_color), - subtitle = stringResource(MR.strings.custom_color_description), + title = stringResource(TLMR.strings.pref_custom_color), + subtitle = stringResource(TLMR.strings.custom_color_description), onClick = { navigator.push(AppCustomThemeColorPickerScreen()) }, ), ) @@ -194,19 +194,19 @@ object SettingsAppearanceScreen : SearchableSettings { @Composable fun getNavbarGroup(uiPreferences: UiPreferences): Preference.PreferenceGroup { return Preference.PreferenceGroup( - stringResource(MR.strings.pref_category_navbar), + stringResource(TLMR.strings.pref_category_navbar), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( pref = uiPreferences.showNavUpdates(), - title = stringResource(MR.strings.pref_hide_updates_button), + title = stringResource(TLMR.strings.pref_hide_updates_button), ), Preference.PreferenceItem.SwitchPreference( pref = uiPreferences.showNavHistory(), - title = stringResource(MR.strings.pref_hide_history_button), + title = stringResource(TLMR.strings.pref_hide_history_button), ), Preference.PreferenceItem.SwitchPreference( pref = uiPreferences.bottomBarLabels(), - title = stringResource(MR.strings.pref_show_bottom_bar_labels), + title = stringResource(TLMR.strings.pref_show_bottom_bar_labels), ), ), ) diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsConnectionsScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsConnectionsScreen.kt index 290554452d..2f74ce07b3 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsConnectionsScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsConnectionsScreen.kt @@ -51,6 +51,7 @@ import kotlinx.collections.immutable.persistentListOf import tachiyomi.core.common.util.lang.launchIO import tachiyomi.core.common.util.lang.withUIContext import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -59,7 +60,7 @@ object SettingsConnectionsScreen : SearchableSettings { @ReadOnlyComposable @Composable @StringRes - override fun getTitleRes() = MR.strings.pref_category_connections + override fun getTitleRes() = TLMR.strings.pref_category_connections @Composable override fun getPreferences(): List { 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 8e55cdeb6f..a71a4d673f 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 @@ -76,6 +76,7 @@ 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.tail.TLMR import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.util.collectAsState import uy.kohesive.injekt.Injekt @@ -325,7 +326,7 @@ object SettingsDataScreen : SearchableSettings { // AM (FILE_SIZE) --> Preference.PreferenceItem.SwitchPreference( pref = storagePreferences.showEpisodeFileSize(), - title = stringResource(MR.strings.pref_show_downloaded_episode_file_size), + title = stringResource(TLMR.strings.pref_show_downloaded_episode_file_size), ), // <-- AM (FILE_SIZE) @@ -367,15 +368,15 @@ object SettingsDataScreen : SearchableSettings { private fun getSyncPreferences(syncPreferences: SyncPreferences, syncService: Int): List { return listOf( Preference.PreferenceGroup( - title = stringResource(MR.strings.pref_sync_service_category), + title = stringResource(TLMR.strings.pref_sync_service_category), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( pref = syncPreferences.syncService(), - title = stringResource(MR.strings.pref_sync_service), + title = stringResource(TLMR.strings.pref_sync_service), entries = persistentMapOf( SyncManager.SyncService.NONE.value to stringResource(MR.strings.off), - SyncManager.SyncService.SYNCYOMI.value to stringResource(MR.strings.syncyomi), - SyncManager.SyncService.GOOGLE_DRIVE.value to stringResource(MR.strings.google_drive), + SyncManager.SyncService.SYNCYOMI.value to stringResource(TLMR.strings.syncyomi), + SyncManager.SyncService.GOOGLE_DRIVE.value to stringResource(TLMR.strings.google_drive), ), onValueChanged = { true }, ), @@ -420,7 +421,7 @@ object SettingsDataScreen : SearchableSettings { val googleDriveSync = Injekt.get() return listOf( Preference.PreferenceItem.TextPreference( - title = stringResource(MR.strings.pref_google_drive_sign_in), + title = stringResource(TLMR.strings.pref_google_drive_sign_in), onClick = { val intent = googleDriveSync.getSignInIntent() context.startActivity(intent) @@ -445,19 +446,19 @@ object SettingsDataScreen : SearchableSettings { val result = googleDriveSync.deleteSyncDataFromGoogleDrive() when (result) { GoogleDriveSyncService.DeleteSyncDataStatus.NOT_INITIALIZED -> context.toast( - MR.strings.google_drive_not_signed_in, + TLMR.strings.google_drive_not_signed_in, duration = 5000, ) GoogleDriveSyncService.DeleteSyncDataStatus.NO_FILES -> context.toast( - MR.strings.google_drive_sync_data_not_found, + TLMR.strings.google_drive_sync_data_not_found, duration = 5000, ) GoogleDriveSyncService.DeleteSyncDataStatus.SUCCESS -> context.toast( - MR.strings.google_drive_sync_data_purged, + TLMR.strings.google_drive_sync_data_purged, duration = 5000, ) GoogleDriveSyncService.DeleteSyncDataStatus.ERROR -> context.toast( - MR.strings.google_drive_sync_data_purge_error, + TLMR.strings.google_drive_sync_data_purge_error, duration = 10000, ) } @@ -468,7 +469,7 @@ object SettingsDataScreen : SearchableSettings { } return Preference.PreferenceItem.TextPreference( - title = stringResource(MR.strings.pref_google_drive_purge_sync_data), + title = stringResource(TLMR.strings.pref_google_drive_purge_sync_data), onClick = { showPurgeDialog = true }, ) } @@ -480,8 +481,8 @@ object SettingsDataScreen : SearchableSettings { ) { AlertDialog( onDismissRequest = onDismissRequest, - title = { Text(text = stringResource(MR.strings.pref_purge_confirmation_title)) }, - text = { Text(text = stringResource(MR.strings.pref_purge_confirmation_message)) }, + title = { Text(text = stringResource(TLMR.strings.pref_purge_confirmation_title)) }, + text = { Text(text = stringResource(TLMR.strings.pref_purge_confirmation_message)) }, dismissButton = { TextButton(onClick = onDismissRequest) { Text(text = stringResource(MR.strings.action_cancel)) @@ -500,8 +501,8 @@ object SettingsDataScreen : SearchableSettings { val scope = rememberCoroutineScope() return listOf( Preference.PreferenceItem.EditTextPreference( - title = stringResource(MR.strings.pref_sync_host), - subtitle = stringResource(MR.strings.pref_sync_host_summ), + title = stringResource(TLMR.strings.pref_sync_host), + subtitle = stringResource(TLMR.strings.pref_sync_host_summ), pref = syncPreferences.clientHost(), onValueChanged = { newValue -> scope.launch { @@ -514,8 +515,8 @@ object SettingsDataScreen : SearchableSettings { }, ), Preference.PreferenceItem.EditTextPreference( - title = stringResource(MR.strings.pref_sync_api_key), - subtitle = stringResource(MR.strings.pref_sync_api_key_summ), + title = stringResource(TLMR.strings.pref_sync_api_key), + subtitle = stringResource(TLMR.strings.pref_sync_api_key_summ), pref = syncPreferences.clientAPIKey(), ), ) @@ -525,12 +526,12 @@ object SettingsDataScreen : SearchableSettings { private fun getSyncNowPref(): Preference.PreferenceGroup { val navigator = LocalNavigator.currentOrThrow return Preference.PreferenceGroup( - title = stringResource(MR.strings.pref_sync_now_group_title), + title = stringResource(TLMR.strings.pref_sync_now_group_title), preferenceItems = persistentListOf( getSyncOptionsPref(), Preference.PreferenceItem.TextPreference( - title = stringResource(MR.strings.pref_sync_now), - subtitle = stringResource(MR.strings.pref_sync_now_subtitle), + title = stringResource(TLMR.strings.pref_sync_now), + subtitle = stringResource(TLMR.strings.pref_sync_now_subtitle), onClick = { navigator.push(SyncSettingsSelector()) }, @@ -543,8 +544,8 @@ object SettingsDataScreen : SearchableSettings { private fun getSyncOptionsPref(): Preference.PreferenceItem.TextPreference { val navigator = LocalNavigator.currentOrThrow return Preference.PreferenceItem.TextPreference( - title = stringResource(MR.strings.pref_sync_options), - subtitle = stringResource(MR.strings.pref_sync_options_summ), + title = stringResource(TLMR.strings.pref_sync_options), + subtitle = stringResource(TLMR.strings.pref_sync_options_summ), onClick = { navigator.push(SyncTriggerOptionsScreen()) }, ) } @@ -557,16 +558,16 @@ object SettingsDataScreen : SearchableSettings { val lastSync by syncPreferences.lastSyncTimestamp().collectAsState() return Preference.PreferenceGroup( - title = stringResource(MR.strings.pref_sync_automatic_category), + title = stringResource(TLMR.strings.pref_sync_automatic_category), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( pref = syncIntervalPref, - title = stringResource(MR.strings.pref_sync_interval), + title = stringResource(TLMR.strings.pref_sync_interval), entries = persistentMapOf( 0 to stringResource(MR.strings.off), - 30 to stringResource(MR.strings.update_30min), - 60 to stringResource(MR.strings.update_1hour), - 180 to stringResource(MR.strings.update_3hour), + 30 to stringResource(TLMR.strings.update_30min), + 60 to stringResource(TLMR.strings.update_1hour), + 180 to stringResource(TLMR.strings.update_3hour), 360 to stringResource(MR.strings.update_6hour), 720 to stringResource(MR.strings.update_12hour), 1440 to stringResource(MR.strings.update_24hour), @@ -579,7 +580,7 @@ object SettingsDataScreen : SearchableSettings { }, ), Preference.PreferenceItem.InfoPreference( - stringResource(MR.strings.last_synchronization, relativeTimeSpanString(lastSync)), + stringResource(TLMR.strings.last_synchronization, relativeTimeSpanString(lastSync)), ), ), ) diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDiscordScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDiscordScreen.kt index 81b9a42f01..43878c0add 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDiscordScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDiscordScreen.kt @@ -1,7 +1,6 @@ // AM (DISCORD) --> package eu.kanade.presentation.more.settings.screen -import androidx.annotation.StringRes import androidx.compose.foundation.layout.RowScope import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.HelpOutline @@ -28,7 +27,7 @@ import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.persistentMapOf import kotlinx.coroutines.runBlocking import tachiyomi.domain.category.anime.interactor.GetAnimeCategories -import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.util.collectAsState import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -37,8 +36,7 @@ object SettingsDiscordScreen : SearchableSettings { @ReadOnlyComposable @Composable - @StringRes - override fun getTitleRes() = MR.strings.pref_category_connections + override fun getTitleRes() = TLMR.strings.pref_category_connections @Composable override fun RowScope.AppBarAction() { diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt index 6b1f04702e..f62f3eb174 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt @@ -40,6 +40,7 @@ import tachiyomi.domain.library.service.LibraryPreferences.Companion.ENTRY_NON_C import tachiyomi.domain.library.service.LibraryPreferences.Companion.ENTRY_NON_VIEWED import tachiyomi.domain.library.service.LibraryPreferences.Companion.ENTRY_OUTSIDE_RELEASE_PERIOD import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.i18n.pluralStringResource import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.util.collectAsState @@ -274,31 +275,31 @@ object SettingsLibraryScreen : SearchableSettings { // SY --> Preference.PreferenceItem.ListPreference( pref = libraryPreferences.groupAnimeLibraryUpdateType(), - title = stringResource(MR.strings.anime_library_group_updates), + title = stringResource(TLMR.strings.anime_library_group_updates), entries = persistentMapOf( AnimeGroupLibraryMode.GLOBAL to stringResource( - MR.strings.library_group_updates_global, + TLMR.strings.library_group_updates_global, ), AnimeGroupLibraryMode.ALL_BUT_UNGROUPED to stringResource( - MR.strings.library_group_updates_all_but_ungrouped, + TLMR.strings.library_group_updates_all_but_ungrouped, ), AnimeGroupLibraryMode.ALL to stringResource( - MR.strings.library_group_updates_all, + TLMR.strings.library_group_updates_all, ), ), ), Preference.PreferenceItem.ListPreference( pref = libraryPreferences.groupMangaLibraryUpdateType(), - title = stringResource(MR.strings.manga_library_group_updates), + title = stringResource(TLMR.strings.manga_library_group_updates), entries = persistentMapOf( MangaGroupLibraryMode.GLOBAL to stringResource( - MR.strings.library_group_updates_global, + TLMR.strings.library_group_updates_global, ), MangaGroupLibraryMode.ALL_BUT_UNGROUPED to stringResource( - MR.strings.library_group_updates_all_but_ungrouped, + TLMR.strings.library_group_updates_all_but_ungrouped, ), MangaGroupLibraryMode.ALL to stringResource( - MR.strings.library_group_updates_all, + TLMR.strings.library_group_updates_all, ), ), ), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMainScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMainScreen.kt index fd8bd21adc..f3c52ade56 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMainScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMainScreen.kt @@ -47,6 +47,7 @@ import eu.kanade.presentation.util.LocalBackPress import eu.kanade.presentation.util.Screen import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.i18n.stringResource import cafe.adriel.voyager.core.screen.Screen as VoyagerScreen @@ -206,8 +207,8 @@ object SettingsMainScreen : Screen() { ), // AM (CONNECTIONS) --> Item( - titleRes = MR.strings.pref_category_connections, - subtitleRes = MR.strings.pref_connections_summary, + titleRes = TLMR.strings.pref_category_connections, + subtitleRes = TLMR.strings.pref_connections_summary, icon = Icons.Outlined.Link, screen = SettingsConnectionsScreen, ), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt index d94abb47b6..491ddf91c3 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt @@ -17,6 +17,7 @@ import kotlinx.collections.immutable.persistentMapOf import kotlinx.collections.immutable.toImmutableMap import kotlinx.collections.immutable.toPersistentMap import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.i18n.pluralStringResource import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.util.collectAsState @@ -26,6 +27,8 @@ import java.text.NumberFormat object SettingsReaderScreen : SearchableSettings { + private fun readResolve(): Any = SettingsReaderScreen + @ReadOnlyComposable @Composable override fun getTitleRes() = MR.strings.pref_category_reader @@ -222,7 +225,7 @@ object SettingsReaderScreen : SearchableSettings { ), Preference.PreferenceItem.SliderPreference( value = preloadSize, - title = stringResource(MR.strings.pref_page_preload_amount), + title = stringResource(TLMR.strings.pref_page_preload_amount), min = ReaderPreferences.PRELOAD_SIZE_MIN, max = ReaderPreferences.PRELOAD_SIZE_MAX, onValueChanged = { @@ -476,34 +479,34 @@ object SettingsReaderScreen : SearchableSettings { private fun getForkSettingsGroup(readerPreferences: ReaderPreferences): Preference.PreferenceGroup { val pageLayout by readerPreferences.pageLayout().collectAsState() return Preference.PreferenceGroup( - title = stringResource(MR.strings.pref_category_fork), + title = stringResource(TLMR.strings.pref_category_fork), preferenceItems = persistentListOf( Preference.PreferenceItem.MultiSelectListPreference( pref = readerPreferences.readerBottomButtons(), - title = stringResource(MR.strings.reader_bottom_buttons), - subtitle = stringResource(MR.strings.reader_bottom_buttons_summary), + title = stringResource(TLMR.strings.reader_bottom_buttons), + subtitle = stringResource(TLMR.strings.reader_bottom_buttons_summary), entries = ReaderBottomButton.entries .associate { it.value to stringResource(it.stringRes) }.toPersistentMap(), ), Preference.PreferenceItem.ListPreference( pref = readerPreferences.pageLayout(), - title = stringResource(MR.strings.page_layout), - subtitle = stringResource(MR.strings.automatic_can_still_switch), + title = stringResource(TLMR.strings.page_layout), + subtitle = stringResource(TLMR.strings.automatic_can_still_switch), entries = ReaderPreferences.PageLayouts - .mapIndexed { index, it -> index to stringResource(it) } + .mapIndexed { index, it -> index + 1 to stringResource(it) } .toMap().toPersistentMap(), ), Preference.PreferenceItem.SwitchPreference( pref = readerPreferences.invertDoublePages(), - title = stringResource(MR.strings.invert_double_pages), + title = stringResource(TLMR.strings.invert_double_pages), enabled = pageLayout != PagerConfig.PageLayout.SINGLE_PAGE, ), Preference.PreferenceItem.ListPreference( pref = readerPreferences.centerMarginType(), - title = stringResource(MR.strings.center_margin), - subtitle = stringResource(MR.strings.pref_center_margin_summary), + title = stringResource(TLMR.strings.center_margin), + subtitle = stringResource(TLMR.strings.pref_center_margin_summary), entries = ReaderPreferences.CenterMarginTypes - .mapIndexed { index, it -> index to stringResource(it) } + .mapIndexed { index, it -> index + 1 to stringResource(it) } .toMap() .toImmutableMap(), ), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/appearance/AppCustomThemeColorPickerScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/appearance/AppCustomThemeColorPickerScreen.kt index 44967ce9f8..67223afd10 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/appearance/AppCustomThemeColorPickerScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/appearance/AppCustomThemeColorPickerScreen.kt @@ -8,7 +8,6 @@ import androidx.compose.runtime.LaunchedEffect 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.graphics.Color import androidx.compose.ui.graphics.toArgb @@ -21,7 +20,7 @@ import eu.kanade.domain.ui.UiPreferences import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.more.settings.widget.ThemeColorPickerWidget import eu.kanade.presentation.util.Screen -import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.util.collectAsState @@ -54,7 +53,7 @@ class AppCustomThemeColorPickerScreen : Screen() { Scaffold( topBar = { scrollBehavior -> AppBar( - title = stringResource(MR.strings.pref_custom_color), + title = stringResource(TLMR.strings.pref_custom_color), navigateUp = navigator::pop, scrollBehavior = scrollBehavior, ) diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/AnimeExtensionReposScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/AnimeExtensionReposScreen.kt index 69e25c0289..c5b80bc83f 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/AnimeExtensionReposScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/AnimeExtensionReposScreen.kt @@ -18,7 +18,7 @@ import eu.kanade.tachiyomi.util.system.openInBrowser import eu.kanade.tachiyomi.util.system.toast import kotlinx.collections.immutable.toImmutableSet import kotlinx.coroutines.flow.collectLatest -import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.screens.LoadingScreen class AnimeExtensionReposScreen( @@ -52,11 +52,11 @@ class AnimeExtensionReposScreen( // KMK --> onClickEnable = { screenModel.enableRepo(it) - context.toast(MR.strings.extensions_page_need_refresh) + context.toast(TLMR.strings.extensions_page_need_refresh) }, onClickDisable = { screenModel.disableRepo(it) - context.toast(MR.strings.extensions_page_need_refresh) + context.toast(TLMR.strings.extensions_page_need_refresh) }, // KMK <-- onClickRefresh = { screenModel.refreshRepos() }, diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/MangaExtensionReposScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/MangaExtensionReposScreen.kt index 1abc4ab8bb..89a3b04b44 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/MangaExtensionReposScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/MangaExtensionReposScreen.kt @@ -18,7 +18,7 @@ import eu.kanade.tachiyomi.util.system.openInBrowser import eu.kanade.tachiyomi.util.system.toast import kotlinx.collections.immutable.toImmutableSet import kotlinx.coroutines.flow.collectLatest -import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.screens.LoadingScreen class MangaExtensionReposScreen( @@ -52,11 +52,11 @@ class MangaExtensionReposScreen( // KMK --> onClickEnable = { screenModel.enableRepo(it) - context.toast(MR.strings.extensions_page_need_refresh) + context.toast(TLMR.strings.extensions_page_need_refresh) }, onClickDisable = { screenModel.disableRepo(it) - context.toast(MR.strings.extensions_page_need_refresh) + context.toast(TLMR.strings.extensions_page_need_refresh) }, // KMK <-- onClickRefresh = { screenModel.refreshRepos() }, diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/SyncSettingsSelector.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/SyncSettingsSelector.kt index aa1340e0c3..9bc5178990 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/SyncSettingsSelector.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/SyncSettingsSelector.kt @@ -20,6 +20,7 @@ import eu.kanade.tachiyomi.util.system.toast import kotlinx.collections.immutable.ImmutableList import kotlinx.coroutines.flow.update import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.components.LabeledCheckbox import tachiyomi.presentation.core.components.LazyColumnWithAction import tachiyomi.presentation.core.components.SectionCard @@ -39,7 +40,7 @@ class SyncSettingsSelector : Screen() { Scaffold( topBar = { AppBar( - title = stringResource(MR.strings.pref_choose_what_to_sync), + title = stringResource(TLMR.strings.pref_choose_what_to_sync), navigateUp = navigator::pop, scrollBehavior = it, ) @@ -47,14 +48,14 @@ class SyncSettingsSelector : Screen() { ) { contentPadding -> LazyColumnWithAction( contentPadding = contentPadding, - actionLabel = stringResource(MR.strings.label_sync), + actionLabel = stringResource(TLMR.strings.label_sync), actionEnabled = state.options.canCreate(), onClickAction = { if (!SyncDataJob.isRunning(context)) { model.syncNow(context) navigator.pop() } else { - context.toast(MR.strings.sync_in_progress) + context.toast(TLMR.strings.sync_in_progress) } }, ) { diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/SyncTriggerOptionsScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/SyncTriggerOptionsScreen.kt index ddcfbebd11..a21e24b790 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/SyncTriggerOptionsScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/SyncTriggerOptionsScreen.kt @@ -15,6 +15,7 @@ import eu.kanade.tachiyomi.data.sync.models.SyncTriggerOptions import kotlinx.collections.immutable.ImmutableList import kotlinx.coroutines.flow.update import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.components.LabeledCheckbox import tachiyomi.presentation.core.components.LazyColumnWithAction import tachiyomi.presentation.core.components.SectionCard @@ -34,7 +35,7 @@ class SyncTriggerOptionsScreen : Screen() { Scaffold( topBar = { AppBar( - title = stringResource(MR.strings.pref_sync_options), + title = stringResource(TLMR.strings.pref_sync_options), navigateUp = navigator::pop, scrollBehavior = it, ) @@ -49,7 +50,7 @@ class SyncTriggerOptionsScreen : Screen() { }, ) { item { - SectionCard(MR.strings.label_triggers) { + SectionCard(TLMR.strings.label_triggers) { Options(SyncTriggerOptions.mainOptions, state, model) } } diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/player/PlayerSettingsPlayerScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/player/PlayerSettingsPlayerScreen.kt index 2e2ebb7159..580ec2809d 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/player/PlayerSettingsPlayerScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/player/PlayerSettingsPlayerScreen.kt @@ -33,6 +33,7 @@ import kotlinx.collections.immutable.persistentMapOf import kotlinx.collections.immutable.toPersistentMap import tachiyomi.core.common.i18n.stringResource import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.util.collectAsState import uy.kohesive.injekt.Injekt @@ -224,11 +225,11 @@ object PlayerSettingsPlayerScreen : SearchableSettings { private fun getCastGroup(playerPreferences: PlayerPreferences): Preference.PreferenceGroup { val enableCast = playerPreferences.enableCast() return Preference.PreferenceGroup( - title = stringResource(MR.strings.pref_category_cast), + title = stringResource(TLMR.strings.pref_category_cast), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( pref = enableCast, - title = stringResource(MR.strings.pref_enable_cast), + title = stringResource(TLMR.strings.pref_enable_cast), ), ), ) @@ -281,11 +282,11 @@ object PlayerSettingsPlayerScreen : SearchableSettings { val trackers by trackersPref.collectAsState() return Preference.PreferenceGroup( - title = stringResource(MR.strings.pref_category_torrentserver), + title = stringResource(TLMR.strings.pref_category_torrentserver), preferenceItems = persistentListOf( Preference.PreferenceItem.EditTextPreference( pref = torrentServerPreferences.port(), - title = stringResource(MR.strings.pref_torrentserver_port), + title = stringResource(TLMR.strings.pref_torrentserver_port), onValueChanged = { try { Integer.parseInt(it) @@ -298,7 +299,7 @@ object PlayerSettingsPlayerScreen : SearchableSettings { ), Preference.PreferenceItem.MultiLineEditTextPreference( pref = torrentServerPreferences.trackers(), - title = context.stringResource(MR.strings.pref_torrent_trackers), + title = context.stringResource(TLMR.strings.pref_torrent_trackers), subtitle = trackersPref.asState(scope).value .lines().take(2) .joinToString( @@ -311,7 +312,7 @@ object PlayerSettingsPlayerScreen : SearchableSettings { }, ), Preference.PreferenceItem.TextPreference( - title = stringResource(MR.strings.pref_reset_torrent_trackers_string), + title = stringResource(TLMR.strings.pref_reset_torrent_trackers_string), enabled = remember(trackers) { trackers != trackersPref.defaultValue() }, onClick = { trackersPref.delete() diff --git a/app/src/main/java/eu/kanade/presentation/reader/ReaderPageActionsDialog.kt b/app/src/main/java/eu/kanade/presentation/reader/ReaderPageActionsDialog.kt index fc44c09054..dd9f4577b6 100644 --- a/app/src/main/java/eu/kanade/presentation/reader/ReaderPageActionsDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/reader/ReaderPageActionsDialog.kt @@ -21,6 +21,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import eu.kanade.presentation.components.AdaptiveSheet import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.components.ActionButton import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.i18n.stringResource @@ -53,7 +54,7 @@ fun ReaderPageActionsDialog( title = stringResource( // SY --> if (hasExtraPage) { - MR.strings.action_set_first_page_cover + TLMR.strings.action_set_first_page_cover } else { MR.strings.set_as_cover }, @@ -76,7 +77,7 @@ fun ReaderPageActionsDialog( title = stringResource( // SY --> if (hasExtraPage) { - MR.strings.action_save_first_page + TLMR.strings.action_save_first_page } else { MR.strings.action_save }, @@ -97,7 +98,7 @@ fun ReaderPageActionsDialog( ) { ActionButton( modifier = Modifier.weight(1f), - title = stringResource(MR.strings.action_set_second_page_cover), + title = stringResource(TLMR.strings.action_set_second_page_cover), icon = Icons.Outlined.Photo, onClick = { showSetCoverDialog = true @@ -105,7 +106,7 @@ fun ReaderPageActionsDialog( ) ActionButton( modifier = Modifier.weight(1f), - title = stringResource(MR.strings.action_share_second_page), + title = stringResource(TLMR.strings.action_share_second_page), icon = Icons.Outlined.Share, onClick = { onShare(false, true) @@ -114,7 +115,7 @@ fun ReaderPageActionsDialog( ) ActionButton( modifier = Modifier.weight(1f), - title = stringResource(MR.strings.action_save_second_page), + title = stringResource(TLMR.strings.action_save_second_page), icon = Icons.Outlined.Save, onClick = { onSave(true) @@ -127,7 +128,7 @@ fun ReaderPageActionsDialog( ) { ActionButton( modifier = Modifier.weight(1f), - title = stringResource(MR.strings.action_share_combined_page), + title = stringResource(TLMR.strings.action_share_combined_page), icon = Icons.Outlined.Share, onClick = { onShareCombined(true) @@ -136,7 +137,7 @@ fun ReaderPageActionsDialog( ) ActionButton( modifier = Modifier.weight(1f), - title = stringResource(MR.strings.action_save_combined_page), + title = stringResource(TLMR.strings.action_save_combined_page), icon = Icons.Outlined.Save, onClick = { onSaveCombined() diff --git a/app/src/main/java/eu/kanade/presentation/reader/appbars/BottomReaderBar.kt b/app/src/main/java/eu/kanade/presentation/reader/appbars/BottomReaderBar.kt index 30c2b8dbc2..f7780d2d4c 100644 --- a/app/src/main/java/eu/kanade/presentation/reader/appbars/BottomReaderBar.kt +++ b/app/src/main/java/eu/kanade/presentation/reader/appbars/BottomReaderBar.kt @@ -8,7 +8,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Public import androidx.compose.material.icons.outlined.Settings -import androidx.compose.material.icons.outlined.Share import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.runtime.Composable @@ -22,6 +21,7 @@ import eu.kanade.tachiyomi.ui.reader.setting.ReaderBottomButton import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.i18n.stringResource @Composable @@ -111,7 +111,7 @@ fun BottomReaderBar( IconButton(onClick = onClickPageLayout) { Icon( painter = painterResource(R.drawable.ic_book_open_variant_24dp), - contentDescription = stringResource(MR.strings.page_layout), + contentDescription = stringResource(TLMR.strings.page_layout), ) } } @@ -120,7 +120,7 @@ fun BottomReaderBar( IconButton(onClick = onClickShiftPage) { Icon( painter = painterResource(R.drawable.ic_page_next_outline_24dp), - contentDescription = stringResource(MR.strings.shift_double_pages), + contentDescription = stringResource(TLMR.strings.shift_double_pages), ) } } diff --git a/app/src/main/java/eu/kanade/presentation/reader/settings/ReadingModePage.kt b/app/src/main/java/eu/kanade/presentation/reader/settings/ReadingModePage.kt index d48aebe291..664f820e93 100644 --- a/app/src/main/java/eu/kanade/presentation/reader/settings/ReadingModePage.kt +++ b/app/src/main/java/eu/kanade/presentation/reader/settings/ReadingModePage.kt @@ -15,6 +15,7 @@ import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsScreenModel import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.components.CheckboxItem import tachiyomi.presentation.core.components.HeadingItem import tachiyomi.presentation.core.components.SettingsChipRow @@ -103,7 +104,7 @@ private fun ColumnScope.PagerViewerSettings(screenModel: ReaderSettingsScreenMod // SY --> val pageLayout by screenModel.preferences.pageLayout().collectAsState() - SettingsChipRow(MR.strings.page_layout) { + SettingsChipRow(TLMR.strings.page_layout) { ReaderPreferences.PageLayouts.mapIndexed { index, text -> FilterChip( selected = pageLayout == index, @@ -162,12 +163,12 @@ private fun ColumnScope.PagerViewerSettings(screenModel: ReaderSettingsScreenMod ) CheckboxItem( - label = stringResource(MR.strings.invert_double_pages), + label = stringResource(TLMR.strings.invert_double_pages), pref = screenModel.preferences.invertDoublePages(), ) val centerMarginType by screenModel.preferences.centerMarginType().collectAsState() - SettingsChipRow(MR.strings.pref_center_margin) { + SettingsChipRow(TLMR.strings.pref_center_margin) { ReaderPreferences.CenterMarginTypes.mapIndexed { index, text -> FilterChip( selected = centerMarginType == index, diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/sync/models/SyncTriggerOptions.kt b/app/src/main/java/eu/kanade/tachiyomi/data/sync/models/SyncTriggerOptions.kt index d7fbefa08f..8f56a05070 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/sync/models/SyncTriggerOptions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/sync/models/SyncTriggerOptions.kt @@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.data.sync.models import dev.icerock.moko.resources.StringResource import kotlinx.collections.immutable.persistentListOf -import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR data class SyncTriggerOptions( val syncOnChapterRead: Boolean = false, @@ -31,32 +31,32 @@ data class SyncTriggerOptions( companion object { val mainOptions = persistentListOf( Entry( - label = MR.strings.sync_on_chapter_read, + label = TLMR.strings.sync_on_chapter_read, getter = SyncTriggerOptions::syncOnChapterRead, setter = { options, enabled -> options.copy(syncOnChapterRead = enabled) }, ), Entry( - label = MR.strings.sync_on_chapter_open, + label = TLMR.strings.sync_on_chapter_open, getter = SyncTriggerOptions::syncOnChapterOpen, setter = { options, enabled -> options.copy(syncOnChapterOpen = enabled) }, ), Entry( - label = MR.strings.sync_on_app_start, + label = TLMR.strings.sync_on_app_start, getter = SyncTriggerOptions::syncOnAppStart, setter = { options, enabled -> options.copy(syncOnAppStart = enabled) }, ), Entry( - label = MR.strings.sync_on_app_resume, + label = TLMR.strings.sync_on_app_resume, getter = SyncTriggerOptions::syncOnAppResume, setter = { options, enabled -> options.copy(syncOnAppResume = enabled) }, ), Entry( - label = MR.strings.sync_on_episode_seen, + label = TLMR.strings.sync_on_episode_seen, getter = SyncTriggerOptions::syncOnEpisodeSeen, setter = { options, enabled -> options.copy(syncOnEpisodeSeen = enabled) }, ), Entry( - label = MR.strings.sync_on_episode_open, + label = TLMR.strings.sync_on_episode_open, getter = SyncTriggerOptions::syncOnEpisodeOpen, setter = { options, enabled -> options.copy(syncOnEpisodeOpen = enabled) }, ), diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/GoogleDriveSyncService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/GoogleDriveSyncService.kt index dc8da6b4a4..8a81f78aeb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/GoogleDriveSyncService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/GoogleDriveSyncService.kt @@ -28,6 +28,7 @@ import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.util.lang.withIOContext import tachiyomi.core.common.util.system.logcat import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import java.io.IOException @@ -110,7 +111,7 @@ class GoogleDriveSyncService(context: Context, json: Json, syncPreferences: Sync @Suppress("TooGenericExceptionThrown", "TooGenericExceptionCaught") private fun pullSyncData(): SyncData? { val drive = googleDriveService.driveService - ?: throw Exception(context.stringResource(MR.strings.google_drive_not_signed_in)) + ?: throw Exception(context.stringResource(TLMR.strings.google_drive_not_signed_in)) val fileList = getAppDataFileList(drive) if (fileList.isEmpty()) { @@ -139,7 +140,7 @@ class GoogleDriveSyncService(context: Context, json: Json, syncPreferences: Sync @Suppress("TooGenericExceptionThrown") private suspend fun pushSyncData(syncData: SyncData) { val drive = googleDriveService.driveService - ?: throw Exception(context.stringResource(MR.strings.google_drive_not_signed_in)) + ?: throw Exception(context.stringResource(TLMR.strings.google_drive_not_signed_in)) val fileList = getAppDataFileList(drive) val backup = syncData.backup ?: return @@ -335,7 +336,7 @@ class GoogleDriveService(private val context: Context) { .build() if (refreshToken == "") { - throw Exception(context.stringResource(MR.strings.google_drive_not_signed_in)) + throw Exception(context.stringResource(TLMR.strings.google_drive_not_signed_in)) } credential.refreshToken = refreshToken diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/torrentServer/service/TorrentServerService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/torrentServer/service/TorrentServerService.kt index 880a11fb53..6e602b75e7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/torrentServer/service/TorrentServerService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/torrentServer/service/TorrentServerService.kt @@ -18,6 +18,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import tachiyomi.core.common.i18n.stringResource import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import kotlin.coroutines.EmptyCoroutineContext @@ -92,7 +93,7 @@ class TorrentServerService : Service() { ) val builder = context.notificationBuilder(Notifications.CHANNEL_TORRENT_SERVER) { setSmallIcon(R.drawable.ic_ani) - setContentText(stringResource(MR.strings.torrentserver_is_running)) + setContentText(stringResource(TLMR.strings.torrentserver_is_running)) setContentTitle(stringResource(MR.strings.app_name)) setAutoCancel(false) setOngoing(true) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/entries/anime/EditAnimeDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/entries/anime/EditAnimeDialog.kt index 8cca20c936..e4df11e6dd 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/entries/anime/EditAnimeDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/entries/anime/EditAnimeDialog.kt @@ -55,6 +55,7 @@ import tachiyomi.domain.entries.anime.model.Anime import tachiyomi.domain.track.anime.interactor.GetAnimeTracks import tachiyomi.domain.track.anime.model.AnimeTrack import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.source.local.entries.anime.isLocal import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -310,7 +311,7 @@ private suspend fun getTrackers( .filterNot { (_, tracker) -> tracker is EnhancedAnimeTracker } if (tracks.value.isEmpty()) { - context.toast(context.stringResource(MR.strings.entry_not_tracked)) + context.toast(context.stringResource(TLMR.strings.entry_not_tracked)) return } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/entries/manga/EditMangaDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/entries/manga/EditMangaDialog.kt index c63c94293f..b300ca12e7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/entries/manga/EditMangaDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/entries/manga/EditMangaDialog.kt @@ -55,6 +55,7 @@ import tachiyomi.domain.entries.manga.model.Manga import tachiyomi.domain.track.manga.interactor.GetMangaTracks import tachiyomi.domain.track.manga.model.MangaTrack import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.source.local.entries.manga.isLocal import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -311,7 +312,7 @@ private suspend fun getTrackers( .filterNot { (_, tracker) -> tracker is EnhancedMangaTracker } if (tracks.value.isEmpty()) { - context.toast(context.stringResource(MR.strings.entry_not_tracked)) + context.toast(context.stringResource(TLMR.strings.entry_not_tracked)) return } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/anime/AnimeLibraryTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/anime/AnimeLibraryTab.kt index 4002b58825..6ff679d5dd 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/anime/AnimeLibraryTab.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/anime/AnimeLibraryTab.kt @@ -63,6 +63,7 @@ import tachiyomi.domain.items.episode.model.Episode import tachiyomi.domain.library.anime.LibraryAnime import tachiyomi.domain.library.anime.model.AnimeLibraryGroup import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.screens.EmptyScreen @@ -185,7 +186,7 @@ data object AnimeLibraryTab : Tab { if (!SyncDataJob.isRunning(context)) { SyncDataJob.startNow(context) } else { - context.toast(MR.strings.sync_in_progress) + context.toast(TLMR.strings.sync_in_progress) } }, searchQuery = state.searchQuery, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/manga/MangaLibraryTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/manga/MangaLibraryTab.kt index 54b86f8fda..8234d12512 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/manga/MangaLibraryTab.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/manga/MangaLibraryTab.kt @@ -61,6 +61,7 @@ import tachiyomi.domain.entries.manga.model.Manga import tachiyomi.domain.library.manga.LibraryManga import tachiyomi.domain.library.manga.model.MangaLibraryGroup import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.screens.EmptyScreen @@ -185,7 +186,7 @@ data object MangaLibraryTab : Tab { if (!SyncDataJob.isRunning(context)) { SyncDataJob.startNow(context) } else { - context.toast(MR.strings.sync_in_progress) + context.toast(TLMR.strings.sync_in_progress) } }, searchQuery = state.searchQuery, 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 bbb6185597..9d7c0c03a4 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,7 +49,7 @@ import tachiyomi.domain.items.episode.model.EpisodeUpdate import tachiyomi.domain.source.anime.service.AnimeSourceManager import tachiyomi.domain.track.anime.interactor.GetAnimeTracks import tachiyomi.domain.track.anime.interactor.InsertAnimeTrack -import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.source.local.entries.anime.LocalAnimeSource import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -278,7 +278,7 @@ class ExternalIntents { } } else { withUIContext { - context.toast(MR.strings.install_amnis, 8) + context.toast(TLMR.strings.install_amnis, 8) } } data = uri diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index 6838db4b2e..c67a66d17a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -108,6 +108,7 @@ import tachiyomi.core.common.util.lang.launchUI import tachiyomi.core.common.util.lang.withUIContext import tachiyomi.core.common.util.system.logcat import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import tachiyomi.presentation.core.util.collectAsState import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -893,7 +894,7 @@ class ReaderActivity : BaseActivity() { // SY --> val text = if (secondPage != null) { stringResource( - MR.strings.share_pages_info, + TLMR.strings.share_pages_info, manga.title, chapter.name, if (resources.configuration.layoutDirection == View.LAYOUT_DIRECTION_LTR) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderBottomButton.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderBottomButton.kt index 475b6cd8f7..7cdad43318 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderBottomButton.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderBottomButton.kt @@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.ui.reader.setting import dev.icerock.moko.resources.StringResource import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR enum class ReaderBottomButton(val value: String, val stringRes: StringResource) { ViewChapters("vc", MR.strings.action_view_chapters), @@ -10,7 +11,7 @@ enum class ReaderBottomButton(val value: String, val stringRes: StringResource) ReadingMode("rm", MR.strings.viewer), Rotation("rot", MR.strings.rotation_type), Crop("cro", MR.strings.pref_crop_borders), - PageLayout("pl", MR.strings.page_layout), + PageLayout("pl", TLMR.strings.page_layout), ; fun isIn(buttons: Collection) = value in buttons diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt index 02f5681c9f..c695e1a7e0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt @@ -7,6 +7,7 @@ import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerConfig import tachiyomi.core.common.preference.PreferenceStore import tachiyomi.core.common.preference.getEnum import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR class ReaderPreferences( private val preferenceStore: PreferenceStore, @@ -241,16 +242,16 @@ class ReaderPreferences( // SY --> val PageLayouts = listOf( - MR.strings.single_page, - MR.strings.double_pages, - MR.strings.automatic_orientation, + TLMR.strings.single_page, + TLMR.strings.double_pages, + TLMR.strings.automatic_orientation, ) val CenterMarginTypes = listOf( - MR.strings.center_margin_none, - MR.strings.center_margin_double_page, - MR.strings.center_margin_wide_page, - MR.strings.center_margin_double_and_wide_page, + TLMR.strings.center_margin_none, + TLMR.strings.center_margin_double_page, + TLMR.strings.center_margin_wide_page, + TLMR.strings.center_margin_double_and_wide_page, ) // SY <-- } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/track/GoogleDriveLoginActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/track/GoogleDriveLoginActivity.kt index 65ffa5ae25..c01c3994ff 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/track/GoogleDriveLoginActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/track/GoogleDriveLoginActivity.kt @@ -6,7 +6,7 @@ import androidx.lifecycle.lifecycleScope import eu.kanade.tachiyomi.data.sync.service.GoogleDriveService import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.common.util.lang.launchIO -import tachiyomi.i18n.MR +import tachiyomi.i18n.tail.TLMR import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -23,7 +23,7 @@ class GoogleDriveLoginActivity : BaseOAuthLoginActivity() { onSuccess = { Toast.makeText( this@GoogleDriveLoginActivity, - stringResource(MR.strings.google_drive_login_success), + stringResource(TLMR.strings.google_drive_login_success), Toast.LENGTH_LONG, ).show() @@ -32,7 +32,7 @@ class GoogleDriveLoginActivity : BaseOAuthLoginActivity() { onFailure = { error -> Toast.makeText( this@GoogleDriveLoginActivity, - stringResource(MR.strings.google_drive_login_failed, error), + stringResource(TLMR.strings.google_drive_login_failed, error), Toast.LENGTH_LONG, ).show() returnToSettings() @@ -42,7 +42,7 @@ class GoogleDriveLoginActivity : BaseOAuthLoginActivity() { } else if (error != null) { Toast.makeText( this@GoogleDriveLoginActivity, - stringResource(MR.strings.google_drive_login_failed, error), + stringResource(TLMR.strings.google_drive_login_failed, error), Toast.LENGTH_LONG, ).show() diff --git a/build.gradle.kts b/build.gradle.kts index df1d312ae7..8877c29dff 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,6 +7,7 @@ buildscript { dependencies { classpath(libs.android.shortcut.gradle) classpath(libs.google.services.gradle) + classpath(libs.gradleversionsx) } } diff --git a/core/common/build.gradle.kts b/core/common/build.gradle.kts index 6f54d5a648..b438f3a3ad 100644 --- a/core/common/build.gradle.kts +++ b/core/common/build.gradle.kts @@ -2,6 +2,7 @@ plugins { id("mihon.library") kotlin("android") kotlin("plugin.serialization") + id("com.github.ben-manes.versions") } android { @@ -18,7 +19,9 @@ android { dependencies { implementation(projects.i18n) - + // TAIL --> + implementation(projects.i18nTail) + // TAIL <-- api(libs.logcat) api(libs.rxjava) diff --git a/core/common/src/main/java/tachiyomi/core/common/util/system/ImageUtil.kt b/core/common/src/main/java/tachiyomi/core/common/util/system/ImageUtil.kt index 159020a973..00eaab9539 100644 --- a/core/common/src/main/java/tachiyomi/core/common/util/system/ImageUtil.kt +++ b/core/common/src/main/java/tachiyomi/core/common/util/system/ImageUtil.kt @@ -263,7 +263,8 @@ object ImageUtil { filenamePrefix: String, ): Boolean { val imageSource = imageFile.openInputStream().use { Buffer().readFrom(it) } - if (isAnimatedAndSupported(imageSource) || !isTallImage( + if (isAnimatedAndSupported(imageSource) || + !isTallImage( imageSource, ) ) { @@ -558,16 +559,20 @@ object ImageUtil { darkBG -> { return ColorDrawable(blackColor) } - topIsBlackStreak || ( - topCornersIsDark && topOffsetCornersIsDark && - (topMidIsDark || overallBlackPixels > 9) - ) -> { + topIsBlackStreak || + ( + topCornersIsDark && + topOffsetCornersIsDark && + (topMidIsDark || overallBlackPixels > 9) + ) -> { intArrayOf(blackColor, blackColor, whiteColor, whiteColor) } - bottomIsBlackStreak || ( - botCornersIsDark && botOffsetCornersIsDark && - (bottomCenterPixel.isDark() || overallBlackPixels > 9) - ) -> { + bottomIsBlackStreak || + ( + botCornersIsDark && + botOffsetCornersIsDark && + (bottomCenterPixel.isDark() || overallBlackPixels > 9) + ) -> { intArrayOf(whiteColor, whiteColor, blackColor, blackColor) } else -> { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 075a8b08dc..155ab8b22e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -109,6 +109,7 @@ seeker = "io.github.2307vivek:seeker:1.2.2" truetypeparser = "io.github.yubyf:truetypeparser-light:2.1.4" libsucore = "com.github.topjohnwu.libsu:core:5.2.2" +gradleversionsx = "com.github.ben-manes:gradle-versions-plugin:0.51.0" google-api-services-drive = "com.google.apis:google-api-services-drive:v3-rev197-1.25.0" google-api-client-oauth = "com.google.oauth-client:google-oauth-client:1.34.1" diff --git a/i18n-tail/build.gradle.kts b/i18n-tail/build.gradle.kts new file mode 100644 index 0000000000..1daaa36528 --- /dev/null +++ b/i18n-tail/build.gradle.kts @@ -0,0 +1,45 @@ +plugins { + id("mihon.library") + kotlin("multiplatform") + alias(libs.plugins.moko) + id("com.github.ben-manes.versions") +} + +kotlin { + androidTarget() + + applyDefaultHierarchyTemplate() + + sourceSets { + commonMain { + dependencies { + api(libs.moko.core) + } + } + } +} + +android { + namespace = "tachiyomi.i18n.tail" + + sourceSets { + named("main") { + res.srcDir("src/commonMain/resources") + } + } + + lint { + disable.addAll(listOf("MissingTranslation", "ExtraTranslation")) + } +} + +multiplatformResources { + resourcesClassName.set("TLMR") + resourcesPackage.set("tachiyomi.i18n.tail") +} + +tasks.withType { + compilerOptions.freeCompilerArgs.addAll( + "-Xexpect-actual-classes", + ) +} diff --git a/i18n-tail/src/commonMain/moko-resources/af/strings.xml b/i18n-tail/src/commonMain/moko-resources/af/strings.xml new file mode 100644 index 0000000000..2b24372963 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/af/strings.xml @@ -0,0 +1,149 @@ + + + Tracking status + Tags + Ungrouped + Not tracked + Group + Anime Library dynamic category updates + Manga Library dynamic category updates + Always launch global updates + Launch global updates only for ungrouped, category updates for others + Launch category updates all the time + Reset Tags + Add Tag + Title: %1$s + Description: %1$s + Author: %1$s + Artist: %1$s + Custom entry info + Reset Info + Cast Settings + Enable or disable Cast + Send to Cast + Show downloaded episode file size + Fork Settings + Edit info + Special Services + Connections + Discord, more to come.. + Special Services that are unique to Animetail and enhance the way you use the app + Discord + This Discord Service works through token logging. Use at your own risk. Your token is stored locally and Animetail does not share it anywhere else + Discord Rich Presence + Show Episodes/Chapters Titles + Show the title of the episode/chapter you are reading + Enable Discord Rich Presence + Discord Status + ⛔ Do Not Disturb + 🌙 Idle + 🟢 Online + RPC Incognito + Discord Incognito mode + Overridden when Incognito Mode is enabled + Entries in included categories will not be displayed in Discord + Browsing + Scrolling through + Messing around with + Video + Comic + Amnis Player needs to be installed + TorrentServer Preferences + TorrentServer Port + Torrent Server is running + Torrent Trackers + Reset default torrent trackers string + Page preload amount + Preserve reading position on read entries + Reader Bottom Buttons + Customize what buttons appear at the bottom of the reader + Set first page as cover + Set second page as cover + Save first page + Save second page + Share first page + Share second page + Save combined page + Share combined page + %1$s: %2$s, pages %3$s + Page layout + Shift one page over + Double pages + Single page + Automatic (based on orientation) + While using automatic page layout, you can still switch between layouts while reading without overriding this setting + Invert double pages + Center Margin + None + Add to double Page + Add to wide Page + Add to both + Center margin type + Insert spacer to accommodate deadspace on foldable devices. + Custom Color Picker + Pick a color for the custom Theme + Custom Theme + Backup + Sync + Triggers + Manual & automatic backups and sync + Every 30 minutes + Every hour + Every 3 hours + Syncing library failed + Syncing library complete + Sync is already in progress + Host + Enter the host address for synchronizing your library + API key + Enter the API key to synchronize your library + Sync Actions + Sync now + Sync confirmation + Initiate immediate synchronization of your data + Syncing will overwrite your local library with the remote library. Are you sure you want to continue? + Service + Select the service to sync your library with + Sync + Automatic Synchronization + Synchronization frequency + Choose what to sync + Last sync timestamp reset + SyncYomi + Done in %1$s + Last Synchronization: %1$s + Google Drive + Sign in + Signed in successfully + Sign in failed + Authentication + Clear Sync Data from Google Drive + Sync data purged from Google Drive + No sync data found in Google Drive + Error purging sync data from Google Drive, Try to sign in again. + Logged in to Google Drive + Failed to log in to Google Drive: %s + Not signed in to Google Drive + Error uploading sync data to Google Drive + Error Deleting Google Drive Lock File + Error before sync: %s + Purge confirmation + Purging sync data will delete all your sync data from Google Drive. Are you sure you want to continue? + Create sync triggers + Can be used to set sync triggers + Sync on Chapter Read + Sync on Chapter Open + Sync on Episode Seen + Sync on Episode Open + Sync on App Start + Sync on App Resume + Sync library + Refresh extension page to update list. + Navbar + Show updates in the nav + Show history in the nav + Always show nav labels + Select a tracker + Entry is not tracked. + Fill from tracker + diff --git a/i18n-tail/src/commonMain/moko-resources/ar/strings.xml b/i18n-tail/src/commonMain/moko-resources/ar/strings.xml new file mode 100644 index 0000000000..d2d43de119 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/ar/strings.xml @@ -0,0 +1,149 @@ + + + حالة التتبع + الوسوم + Ungrouped + لم يتتبع + مجموعة + تحديثات فئة أنيمي الديناميكية + تحديثات الفئة الديناميكية لمكتبة مانغا + تشغيل التحديثات العالمية دائمًا + تشغيل التحديثات العالمية فقط لتحديثات الفئات الغير مجمعة للآخرين + تشغيل فئة التحديثات طوال الوقت + إعادة تعيين العلامات + إضافة علامة + العنوان: %1$s + الوصف: %1$s + المؤلف: %1$s + الفنان: %1$s + معلومات الإدخال المخصصة + Reset Info + إعدادات القصة + تمكين أو تعطيل المشاهدة + إرسال إلى الكشوف + إظهار حجم ملف الحلقة التي تم تنزيلها + إعدادات الفتح + تعديل المعلومات + الخدمات الخاصة + اتصالات + ديسكورد، أكثر من ذلك.. + الخدمات الخاصة الفريدة من نوعها في Animetail وتعزيز طريقة استخدام التطبيق + ديسكورد + خدمة ديسكورد هذه تعمل من خلال تسجيل الرمز المميز. استخدمها على مسؤوليتك الخاصة. يتم تخزين الرمز المميز الخاص بك محليا ولا يشاركه الذيل في أي مكان آخر + وجود ديسكورد الغني + إظهار عناوين الحلقات / الفصول + إظهار عنوان الحلقة/الفصل الذي تقرأه + تمكين وجود ديسكورد الغني + حالة ديسكورد + ⛔ الرجاء عدم الإزعاج + :crescent_القمر: الخمول + 🟢 Online + RPC Incognito + وضع التخفي ديسكورد + تم تجاوزها عند تمكين وضع التخفي + المدخلات في الفئات المدرجة لن يتم عرضها في ديسكورد + تصفح + التمرير عبر + المراسلة مع + فيديو + فكاهي + يجب تثبيت لاعب Amnis + تفضيلات تورنتسيرفر + منفذ تورنتسيرفر + خادم تورنت قيد التشغيل + تعقب تورينت + إعادة تعيين سلسلة تعقب التورنت الافتراضية + كمية التحميل المسبق للصفحة + الحفاظ على موضع القراءة عند قراءة المواد + أزرار القارئ السفلي + تخصيص الأزرار التي تظهر في أسفل القارئ + تعيين الصفحة الأولى كغطاء + تعيين الصفحة الثانية كغطاء + حفظ الصفحة الأولى + حفظ الصفحة الثانية + مشاركة الصفحة الأولى + مشاركة الصفحة الثانية + حفظ الصفحة مجتمعة + مشاركة الصفحة المدمجة + %1$s: %2$s، الصفحات %3$s + تخطيط الصفحة + تحويل صفحة واحدة فوق + صفحات مزدوجة + صفحة واحدة + تلقائي (مبني على التوجيه) + عند استخدام تخطيط الصفحات التلقائية، لا يزال بإمكانك التبديل بين المخططات أثناء القراءة دون تجاوز هذا الإعداد + عكس الصفحات المزدوجة + هامش الوسط + لا + إضافة إلى صفحة مزدوجة + إضافة إلى صفحة واسعة + إضافة إلى كليهما + نوع هامش الوسط + إدراج مسافة لاستيعاب المساحة النهائية على الأجهزة القابلة للتكوين. + اختيار لون مخصص + اختيار لون للسمة المخصصة + سمة مخصصة + النسخ الاحتياطي + مزامنة + المحفزات + يدوياً & النسخ الاحتياطي التلقائي والمزامنة + كل 30 دقيقة + كل ساعة + كل 3 ساعات + فشل مزامنة المكتبة + تم مزامنة المكتبة + المزامنة قيد التقدم بالفعل + المضيف + أدخل عنوان المضيف لمزامنة مكتبتك + مفتاح API + أدخل مفتاح API لمزامنة المكتبة الخاصة بك + إجراءات المزامنة + المزامنة الآن + تأكيد المزامنة + بدء المزامنة الفورية للبيانات الخاصة بك + سيتم مزامنة الكتابة فوق المكتبة المحلية الخاصة بك مع المكتبة البعيدة. هل أنت متأكد من أنك تريد المتابعة؟ + الخدمة + حدد الخدمة لمزامنة مكتبتك مع + مزامنة + المزامنة التلقائية + تردد المزامنة + اختر ما المزامنة + آخر مزامنة زمنية إعادة تعيين + SyncYomi + تم في %1$s + آخر مزامنة: %1$s + محرك جوجل + تسجيل الدخول + تم تسجيل الدخول بنجاح + فشل تسجيل الدخول + المصادقة + مسح مزامنة البيانات من Google Drive + مزامنة البيانات تمت إزالتها من Google Drive + لم يتم العثور على بيانات مزامنة في Google Drive + خطأ في إزالة بيانات المزامنة من Google Drive, حاول تسجيل الدخول مرة أخرى. + تسجيل الدخول إلى Google Drive + فشل تسجيل الدخول إلى محرك جوجل: %s + لم يتم تسجيل الدخول إلى Google Drive + خطأ في تحميل بيانات المزامنة إلى Google Drive + خطأ في حذف ملف قفل Google Drive + خطأ قبل المزامنة: %s + تأكيد التطهير + سيتم حذف بيانات مزامنة البيانات الخاصة بك من Google Drive. هل أنت متأكد من أنك تريد المتابعة؟ + إنشاء مشغلات المزامنة + يمكن استخدامه لتعيين مشغلات المزامنة + المزامنة عند قراءة الفصل + المزامنة عند فتح الفصل + المزامنة في الحلقة المشاهدة + المزامنة عند فتح الحلقة + المزامنة عند بدء التطبيق + المزامنة عند استئناف التطبيق + مكتبة المزامنة + تحديث صفحة الملحق لتحديث القائمة. + شريط التنقل + إظهار التحديثات في Nv + إظهار المحفوظات في Nv + إظهار دائما تسميات Nv + حدد متتبع + لم يتم تتبع الدخول. + ملء من المتتبع + diff --git a/i18n-tail/src/commonMain/moko-resources/base/plurals.xml b/i18n-tail/src/commonMain/moko-resources/base/plurals.xml new file mode 100644 index 0000000000..045e125f3d --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/base/plurals.xml @@ -0,0 +1,3 @@ + + + diff --git a/i18n/src/commonMain/moko-resources/base/strings-animetail.xml b/i18n-tail/src/commonMain/moko-resources/base/strings.xml similarity index 99% rename from i18n/src/commonMain/moko-resources/base/strings-animetail.xml rename to i18n-tail/src/commonMain/moko-resources/base/strings.xml index 173f1a424e..04f909f8dd 100644 --- a/i18n/src/commonMain/moko-resources/base/strings-animetail.xml +++ b/i18n-tail/src/commonMain/moko-resources/base/strings.xml @@ -187,5 +187,4 @@ Select a tracker Entry is not tracked. Fill from tracker - diff --git a/i18n-tail/src/commonMain/moko-resources/ca/strings.xml b/i18n-tail/src/commonMain/moko-resources/ca/strings.xml new file mode 100644 index 0000000000..2b24372963 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/ca/strings.xml @@ -0,0 +1,149 @@ + + + Tracking status + Tags + Ungrouped + Not tracked + Group + Anime Library dynamic category updates + Manga Library dynamic category updates + Always launch global updates + Launch global updates only for ungrouped, category updates for others + Launch category updates all the time + Reset Tags + Add Tag + Title: %1$s + Description: %1$s + Author: %1$s + Artist: %1$s + Custom entry info + Reset Info + Cast Settings + Enable or disable Cast + Send to Cast + Show downloaded episode file size + Fork Settings + Edit info + Special Services + Connections + Discord, more to come.. + Special Services that are unique to Animetail and enhance the way you use the app + Discord + This Discord Service works through token logging. Use at your own risk. Your token is stored locally and Animetail does not share it anywhere else + Discord Rich Presence + Show Episodes/Chapters Titles + Show the title of the episode/chapter you are reading + Enable Discord Rich Presence + Discord Status + ⛔ Do Not Disturb + 🌙 Idle + 🟢 Online + RPC Incognito + Discord Incognito mode + Overridden when Incognito Mode is enabled + Entries in included categories will not be displayed in Discord + Browsing + Scrolling through + Messing around with + Video + Comic + Amnis Player needs to be installed + TorrentServer Preferences + TorrentServer Port + Torrent Server is running + Torrent Trackers + Reset default torrent trackers string + Page preload amount + Preserve reading position on read entries + Reader Bottom Buttons + Customize what buttons appear at the bottom of the reader + Set first page as cover + Set second page as cover + Save first page + Save second page + Share first page + Share second page + Save combined page + Share combined page + %1$s: %2$s, pages %3$s + Page layout + Shift one page over + Double pages + Single page + Automatic (based on orientation) + While using automatic page layout, you can still switch between layouts while reading without overriding this setting + Invert double pages + Center Margin + None + Add to double Page + Add to wide Page + Add to both + Center margin type + Insert spacer to accommodate deadspace on foldable devices. + Custom Color Picker + Pick a color for the custom Theme + Custom Theme + Backup + Sync + Triggers + Manual & automatic backups and sync + Every 30 minutes + Every hour + Every 3 hours + Syncing library failed + Syncing library complete + Sync is already in progress + Host + Enter the host address for synchronizing your library + API key + Enter the API key to synchronize your library + Sync Actions + Sync now + Sync confirmation + Initiate immediate synchronization of your data + Syncing will overwrite your local library with the remote library. Are you sure you want to continue? + Service + Select the service to sync your library with + Sync + Automatic Synchronization + Synchronization frequency + Choose what to sync + Last sync timestamp reset + SyncYomi + Done in %1$s + Last Synchronization: %1$s + Google Drive + Sign in + Signed in successfully + Sign in failed + Authentication + Clear Sync Data from Google Drive + Sync data purged from Google Drive + No sync data found in Google Drive + Error purging sync data from Google Drive, Try to sign in again. + Logged in to Google Drive + Failed to log in to Google Drive: %s + Not signed in to Google Drive + Error uploading sync data to Google Drive + Error Deleting Google Drive Lock File + Error before sync: %s + Purge confirmation + Purging sync data will delete all your sync data from Google Drive. Are you sure you want to continue? + Create sync triggers + Can be used to set sync triggers + Sync on Chapter Read + Sync on Chapter Open + Sync on Episode Seen + Sync on Episode Open + Sync on App Start + Sync on App Resume + Sync library + Refresh extension page to update list. + Navbar + Show updates in the nav + Show history in the nav + Always show nav labels + Select a tracker + Entry is not tracked. + Fill from tracker + diff --git a/i18n-tail/src/commonMain/moko-resources/cs/strings.xml b/i18n-tail/src/commonMain/moko-resources/cs/strings.xml new file mode 100644 index 0000000000..097c0864f9 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/cs/strings.xml @@ -0,0 +1,149 @@ + + + Stav sledování + Štítky + Ungrouped + Nesledováno + Skupina + Aktualizace dynamických kategorií Anime knihovny + Aktualizace dynamických kategorií v Manga knihovně + Vždy spouštět globální aktualizace + Spustit globální aktualizace pouze pro neseskupené, aktualizace kategorií pro ostatní + Spustit aktualizace kategorií po celou dobu + Resetovat štítky + Přidat značku + Název: %1$s + Popis: %1$s + Autor: %1$s + Umělec: %1$s + Vlastní informace o záznamu + Reset Info + Nastavení vysílání + Povolit nebo zakázat vysílání + Poslat do Cast + Zobrazit velikost souboru s epizodou + Nastavení rozštěpení + Upravit informace + Speciální služby + Kontakty + Discord, více k nám. + Speciální služby, které jsou unikátní pro animetail a vylepšují způsob, jakým používáte aplikaci + Discord + Tato Discord služba funguje pomocí logování tokenů. Použijte na vlastní riziko. Tvůj token je uložen lokálně a Animetail ji nesdílejí nikde jinde + Discord Rich Presence + Zobrazit názvy epizod/kapitol + Zobrazit název epizody/kapitoly, kterou čtete + Povolit Discord Rich Presence + Stav Discordu + ⛔ Režim Nerušit + 🌙 Nečinný + 🟢 Online + RPC Incognito + Discord anonymní režim + Přepsáno při povoleném anonymním režimu + Položky v zahrnutých kategoriích nebudou zobrazeny v Discordu + Procházení + Posunutí přes + Poslání s + Video + Komikál + Amnis Player musí být nainstalován + Předvolby Torrentserveru + Port Torrentserveru + Torrent Server je spuštěn + Torrent Trackery + Obnovit výchozí řetězec torrent trackerů + Počet přednačtení stránky + Zachovat pozici čtení u čtení záznamů + Spodní tlačítka pro čtení + Přizpůsobte si, jaká tlačítka se zobrazí v dolní části čtenáře + Nastavit první stránku jako obal + Nastavit druhou stránku jako obal + Uložit první stránku + Uložit druhou stránku + Sdílet první stránku + Sdílet druhou stránku + Uložit společnou stránku + Sdílet společnou stránku + %1$s: %2$s, stránky %3$s + Rozložení stránky + Přesunout na jednu stránku + Dvojité stránky + Jedna stránka + Automatický (na základě orientace) + Při použití automatického rozvržení stránky můžete stále přepínat mezi rozloženími při čtení bez přepsání tohoto nastavení + Invertovat dvojité stránky + Okraj uprostřed + Nic + Přidat na dvojitou stránku + Přidat na širokou stránku + Přidat do obou + Typ marže uprostřed + Vložte mezeru pro uložení mrtvého prostoru na skládacích zařízeních. + Výběr vlastní barvy + Vyberte barvu pro vlastní šablonu + Vlastní šablona + Záloha + Synchronizovat + Spouštěče + Manuální & automatické zálohování a synchronizace + Každých 30 minut + Každou hodinu + Každé 3 hodiny + Synchronizace knihovny se nezdařila + Synchronizace knihovny dokončena + Synchronizace již probíhá + Hostitel + Zadejte adresu hostitele pro synchronizaci vaší knihovny + Klíč API + Zadejte API klíč pro synchronizaci knihovny + Synchronizovat akce + Synchronizovat nyní + Potvrzení synchronizace + Spusťte okamžitou synchronizaci dat + Synchronizace přepíše místní knihovnu vzdálenou knihovnou. Opravdu chcete pokračovat? + Servis + Vyberte službu pro synchronizaci knihovny s + Synchronizovat + Automatická synchronizace + Frekvence synchronizace + Vyberte co synchronizovat + Obnovení časového razítka poslední synchronizace + SyncYomi + Dokončeno v %1$s + Poslední synchronizace: %1$s + Disk Google + Přihlásit se + Úspěšně přihlášen + Přihlášení se nezdařilo + Ověření + Vymazat synchronizaci z Google Drive + Synchronizovat vymazaná data z Google Drive + V Google Drive nebyla nalezena žádná synchronizace + Chyba při mazání synchronizace z Google Drive, zkuste se znovu přihlásit. + Přihlášen do Google Drive + Nepodařilo se přihlásit do Google Drive: %s + Nepřihlášen do Google Drive + Chyba při nahrávání synchronizačních dat na Google Drive + Chyba při mazání souboru Google Drive Lock + Chyba před synchronizací: %s + Potvrzení odstranění + Vymazání dat synchronizace smaže všechna data synchronizace z Google Drive. Jste si jisti, že chcete pokračovat? + Vytvořit spouštěče synchronizace + Lze použít k nastavení spouštěčů synchronizace + Synchronizovat při čtení kapitoly + Synchronizovat při otevření kapitoly + Synchronizovat při epizodě + Synchronizovat při otevření epizody + Synchronizovat při spuštění aplikace + Synchronizovat při pokračování aplikace + Synchronizovat knihovnu + Aktualizovat rozšířenou stránku pro aktualizaci seznamu. + Navigační panel + Zobrazit aktualizace v nav + Zobrazit historii v nav + Vždy zobrazovat nav popisky + Vyberte tracker + Vstup není sledován. + Vyplnit ze sledovače + diff --git a/i18n-tail/src/commonMain/moko-resources/da/strings.xml b/i18n-tail/src/commonMain/moko-resources/da/strings.xml new file mode 100644 index 0000000000..65cd135ee2 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/da/strings.xml @@ -0,0 +1,149 @@ + + + Status for sporing + Mærker + Ungrouped + Ikke sporet + Gruppe + Anime Biblioteks dynamiske kategori opdateringer + Manga Biblioteks dynamiske kategori opdateringer + Start altid globale opdateringer + Start kun globale opdateringer for ugrupperede, kategoriopdateringer for andre + Start kategori opdateringer hele tiden + Nulstil Tags + Tilføj Tag + Titel: %1$s + Beskrivelse: %1$s + Forfatter: %1$s + Kunstner: %1$s + Brugerdefineret indtastningsinfo + Reset Info + Cast Indstillinger + Aktiver eller deaktiver Cast + Send til Cast + Vis downloadet episode filstørrelse + Gaffel Indstillinger + Rediger info + Særlige Tjenester + Forbindelser + Discord, mere at komme. + Særlige tjenester, der er unikke for Animetail og forbedre den måde, du bruger appen + Uenighed + Denne Discord Service fungerer gennem token logning. Bruges på egen risiko. Dit token gemmes lokalt, og Animetail deler det ikke andre steder + Discord Rig Tilstedeværelse + Vis Episoder/Kapitler Titler + Vis titlen på episoden/kapitlet du læser + Aktiver Discord Rig Tilstedeværelse + Discord Status + ⛔ Forstyr Ikke + 🌙 Tomgang + 🟢 Online + RPC Incognito + Discord Inkognito tilstand + Tilsidesæt når Inkognitotilstand er aktiveret + Indgange i inkluderede kategorier vil ikke blive vist i Discord + Gennemser + Rul gennem + Beskeder rundt med + Video + Tegneserie + Amnis Player skal installeres + TorrentServer Præferencer + TorrentServer Port + Torrent Server kører + Torrent Trackers + Nulstil standard torrent trackers streng + Side forudindlæste mængde + Bevar læseposition på læste poster + Læser Nederste Knapper + Tilpas hvilke knapper der vises nederst på læseren + Angiv første side som omslag + Angiv anden side som omslag + Gem første side + Gem anden side + Del første side + Del anden side + Gem kombineret side + Del den kombinerede side + %1$s: %2$s, sider %3$s + Side layout + Skift en side over + Dobbelt sider + Enkelt side + Automatisk (baseret på orientering) + Mens du bruger automatisk side layout, kan du stadig skifte mellem layouts mens du læser uden at tilsidesætte denne indstilling + Invertér dobbelte sider + Centreret Margen + Ingen + Føj til dobbelt side + Føj til bred side + Føj til begge + Centret margin type + Indsæt spacer for at rumme deadspace på foldbare enheder. + Brugerdefineret Farvevælger + Vælg en farve til det brugerdefinerede tema + Brugerdefineret Tema + Sikkerhedskopi + Synkroniser + Udløsere + Manuel & automatisk sikkerhedskopiering og synkronisering + Hvert 30. minut + Hver time + Hver 3. time + Synkronisering af bibliotek mislykkedes + Synkronisering af bibliotek fuldført + Synkronisering er allerede i gang + Vært + Indtast værtsadressen til synkronisering af dit bibliotek + API nøgle + Indtast API-nøglen for at synkronisere dit bibliotek + Synkroniser Handlinger + Synkroniser nu + Synkronisering bekræftelse + Start øjeblikkelig synkronisering af dine data + Synkronisering vil overskrive dit lokale bibliotek med fjernbiblioteket. Er du sikker på, at du vil fortsætte? + Tjeneste + Vælg tjenesten for at synkronisere dit bibliotek med + Synkroniser + Automatisk Synkronisering + Synkronisering frekvens + Vælg hvad der skal synkroniseres + Seneste synkroniserings tidsstempel nulstilling + SyncYomi + Udført i %1$s + Sidste Synkronisering: %1$s + Google Drev + Log ind + Logget ind med succes + Log ind mislykkedes + Godkendelse + Ryd synkroniseringsdata fra Google Drev + Synkroniser data renset fra Google Drev + Ingen synkroniseringsdata fundet i Google Drev + Fejl ved rensning af synkroniseringsdata fra Google Drev, prøv at logge ind igen. + Logget ind på Google Drev + Mislykkedes at logge ind på Google Drev: %s + Ikke logget ind på Google Drev + Fejl ved upload af synkroniseringsdata til Google Drev + Fejl Ved Sletning Af Google Drev Lås Fil + Fejl før synkronisering: %s + Ryd bekræftelse + Manglende synkroniseringsdata vil slette alle dine synkroniseringsdata fra Google Drev. Er du sikker på, at du vil fortsætte? + Opret synkroniseringsudløser + Kan bruges til at indstille synkroniseringsudløser + Synkroniser på kapitel Læs + Synkronisér på kapitel Open + Synkronisér på Episode set + Synkronisér når Episode åbnes + Synkronisering ved appstart + Synkronisér på app-genoptag + Synkroniser bibliotek + Opdater udvidelsessiden for at opdatere listen. + Navbjælke + Vis opdateringer i nav + Vis historik i nav + Vis altid nav- etiketter + Vælg en tracker + Posten er ikke sporet. + Udfyld fra tracker + diff --git a/i18n-tail/src/commonMain/moko-resources/de/strings.xml b/i18n-tail/src/commonMain/moko-resources/de/strings.xml new file mode 100644 index 0000000000..d2da5e2916 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/de/strings.xml @@ -0,0 +1,149 @@ + + + Tracking-Status + Tags + Ungrouped + Nicht verfolgt + Gruppe + Dynamische Kategorie-Aktualisierungen der Anime Library + Aktualisierungen dynamischer Kategorien der Manga Bibliothek + Globale Updates immer starten + Starte globale Updates nur für ungroutete, Kategorie-Updates für andere + Kategorie-Aktualisierungen immer starten + Tags zurücksetzen + Tag hinzufügen + Titel: %1$s + Beschreibung: %1$s + Autor: %1$s + Interpret: %1$s + Benutzerdefinierte Eintrags-Info + Reset Info + Cast-Einstellungen + Cast aktivieren oder deaktivieren + An Cast senden + Dateigröße der heruntergeladenen Episoden anzeigen + Fork-Einstellungen + Info bearbeiten + Spezielle Dienste + Verbindungen + Discord, mehr zu kommen.. + Spezielle Dienste, die einzigartig für Animetail sind und die Art und Weise verbessern, wie Sie die App verwenden + Discord + Dieser Discord Service funktioniert durch Tokenprotokollierung. Verwende auf eigene Gefahr. Dein Token wird lokal gespeichert und Animetail teilt es nirgendwo sonst + Discord Reiche Präsenz + Episoden/Kapiteltitel anzeigen + Titel der Episode/des Kapitels, das Sie gerade lesen + Discord Reich Präsenz aktivieren + Discord Status + ⛔ Nicht stören + 🌙 Leerlauf + 🟢 Online + RPC Incognito + Discord Inkognito Modus + Überschrieben wenn Inkognito-Modus aktiviert ist + Einträge in eingeschlossenen Kategorien werden nicht in Discord angezeigt + Surfen + Durchblättern + Mitteilungen mit + Video + Comic + Amnis Player muss installiert sein + TorrentServer Einstellungen + TorrentServer-Port + Torrent-Server läuft + Torrent-Tracker + Standard-Torrent-Tracker-String zurücksetzen + Seitenvorladen + Leseposition bei gelesenen Einträgen beibehalten + Untere Tasten lesen + Passen Sie an, welche Tasten am unteren Rand des Lesers erscheinen + Erste Seite als Cover festlegen + Zweite Seite als Cover festlegen + Erste Seite speichern + Zweite Seite speichern + Erste Seite teilen + Zweite Seite teilen + Kombinierte Seite speichern + Kombinierte Seite teilen + %1$s: %2$s, Seiten %3$s + Seitenlayout + Eine Seite über verschieben + Doppelte Seiten + Einzelne Seite + Automatisch (basierend auf Orientierung) + Beim automatischen Seitenlayout können Sie während des Lesens zwischen Layouts wechseln, ohne diese Einstellung zu überschreiben + Doppelte Seiten umkehren + Mitte Rand + Keine + Zur Doppelseite hinzufügen + Zur breiten Seite hinzufügen + Zu beiden hinzufügen + Ränder zentrieren + Fügen Sie Leerzeichen ein, um Deckenplatz auf faltbaren Geräten zu unterbringen. + Benutzerdefinierte Farbauswahl + Wählen Sie eine Farbe für das benutzerdefinierte Theme + Eigene Themes + Sichern + Sync + Auslöser + Manuelle & automatische Sicherungen und Synchronisation + Alle 30 Minuten + Stündlich + Alle 3 Stunden + Synchronisierung der Bibliothek fehlgeschlagen + Synchronisations-Bibliothek abgeschlossen + Sync ist bereits im Gange + Host + Geben Sie die Host-Adresse für die Synchronisierung Ihrer Bibliothek ein + API-Schlüssel + API-Schlüssel zum Synchronisieren der Bibliothek eingeben + Sync-Aktionen + Jetzt synchronisieren + Sync-Bestätigung + Initiieren Sie die sofortige Synchronisierung Ihrer Daten + Synchronisierung wird Ihre lokale Bibliothek mit der Remote-Bibliothek überschreiben. Sind Sie sicher, dass Sie fortfahren möchten? + Service + Wählen Sie den Dienst, mit dem Ihre Bibliothek synchronisiert werden soll + Sync + Automatische Synchronisierung + Synchronisationsfrequenz + Wähle was synchronisiert werden soll + Letzte Sync-Zeitstempel zurücksetzen + SyncYomi + Fertig in %1$s + Letzte Synchronisierung: %1$s + Google Drive + Anmelden + Erfolgreich angemeldet + Anmeldung fehlgeschlagen + Authentifizierung + Sync-Daten von Google Drive löschen + Sync-Daten von Google Drive gelöscht + Keine Sync-Daten in Google Drive gefunden + Fehler beim Bereinigen der Sync-Daten von Google Drive. Versuchen Sie sich erneut anzumelden. + Bei Google Drive angemeldet + Fehler beim Einloggen bei Google Drive: %s + Nicht bei Google Drive angemeldet + Fehler beim Hochladen der Sync-Daten auf Google Drive + Fehler beim Löschen der Google Drive Sperre Datei + Fehler vor der Synchronisierung: %s + Löschen bestätigen + Das Löschen von Sync-Daten löscht alle Ihre Sync-Daten von Google Drive. Sind Sie sicher, dass Sie fortfahren möchten? + Sync-Trigger erstellen + Kann verwendet werden um Sync-Trigger zu setzen + Beim Lesen des Kapitels synchronisieren + Beim Öffnen des Kapitels synchronisieren + Sync auf Folge gesehen + Sync bei Episode öffnen + Beim Start der App synchronisieren + Sync beim App-Fortsetzen + Sync-Bibliothek + Erweiterungs-Seite aktualisieren, um Liste zu aktualisieren. + Navbar + Updates im nav anzeigen + Verlauf im nav anzeigen + Navigations-Labels immer anzeigen + Tracker auswählen + Eintrag wird nicht verfolgt. + Vom Tracker füllen + diff --git a/i18n-tail/src/commonMain/moko-resources/el/strings.xml b/i18n-tail/src/commonMain/moko-resources/el/strings.xml new file mode 100644 index 0000000000..d9eec2e7ff --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/el/strings.xml @@ -0,0 +1,149 @@ + + + Κατάσταση παρακολούθησης + Ετικέτες + Ungrouped + Δεν παρακολουθείται + Ομάδα + Ενημέρωση δυναμικής κατηγορίας βιβλιοθήκης Anime + Δυναμικές ενημερώσεις κατηγορίας Manga Library + Εκκίνηση καθολικών ενημερώσεων πάντα + Εκκίνηση καθολικών ενημερώσεων μόνο για μη ομαδοποιημένες, ενημερώσεις κατηγορίας για άλλους + Εκκίνηση ενημερώσεων κατηγορίας όλη την ώρα + Επαναφορά Ετικετών + Προσθήκη Ετικέτας + Τίτλος: %1$s + Περιγραφή: %1$s + Συγγραφέας: %1$s + Καλλιτέχνης: %1$s + Πληροφορίες προσαρμοσμένης καταχώρησης + Reset Info + Ρυθμίσεις Cast + Ενεργοποίηση ή απενεργοποίηση Cast + Αποστολή στο Cast + Εμφάνιση του ληφθέντος μεγέθους αρχείου επεισοδίου + Ρυθμίσεις Fork + Επεξεργασία πληροφοριών + Ειδικές Υπηρεσίες + Συνδέσεις + Discord, περισσότερα για να έρθει.. + Ειδικές Υπηρεσίες που είναι μοναδικές για την Animetail και ενισχύουν τον τρόπο με τον οποίο χρησιμοποιείτε την εφαρμογή + Discord + Αυτή η υπηρεσία του Discord λειτουργεί μέσω καταγραφής συμβόλων. Χρησιμοποιήστε το με δική σας ευθύνη. Το διακριτικό αποθηκεύεται τοπικά και το Animetail δεν το μοιράζεται πουθενά αλλού + Discord Πλούσια Παρουσία + Εμφάνιση Τίτλων Επεισόδια/Κεφάλαια + Εμφάνιση του τίτλου του επεισοδίου/κεφαλαίου που διαβάζετε + Ενεργοποίηση Discord Rich Presence + Κατάσταση Discord + ⛔ Μην Ενοχλείτε + 🌙 Αδρανής + 🟢 Online + RPC Incognito + Ανώνυμη περιήγηση σε Discord + Αντικαταστάθηκε όταν είναι ενεργοποιημένη η λειτουργία ανώνυμης περιήγησης + Οι καταχωρήσεις στις κατηγορίες που περιλαμβάνονται δεν θα εμφανίζονται στο Discord + Περιήγηση + Κύλιση μέσα + Ανταλλαγή μηνυμάτων με + Βίντεο + Κόμικς + Ο παίκτης Amnis πρέπει να εγκατασταθεί + Προτιμήσεις TorrentServer + Θύρα TorrentServer + Ο διακομιστής Torrent εκτελείται + Ανιχνευτές Torrent + Επαναφορά προεπιλεγμένης συμβολοσειράς torrent trackers + Ποσό προφόρτωσης σελίδας + Διατήρηση της θέσης ανάγνωσης στις καταχωρήσεις ανάγνωσης + Κουμπιά Κάτω Ανάγνωσης + Προσαρμόστε ποια κουμπιά εμφανίζονται στο κάτω μέρος του αναγνώστη + Ορισμός πρώτης σελίδας ως εξώφυλλο + Ορισμός δεύτερης σελίδας ως εξώφυλλο + Αποθήκευση πρώτης σελίδας + Αποθήκευση δεύτερης σελίδας + Κοινή χρήση της πρώτης σελίδας + Κοινή χρήση δεύτερης σελίδας + Αποθήκευση συνδυασμένης σελίδας + Κοινοποίηση συνδυασμένης σελίδας + %1$s: %2$s, σελίδες %3$s + Διάταξη σελίδας + Μετακίνηση μιας σελίδας πάνω + Διπλές σελίδες + Μονή σελίδα + Αυτόματο (βασισμένο στον προσανατολισμό) + Κατά τη χρήση αυτόματης διάταξης σελίδας, μπορείτε να κάνετε εναλλαγή μεταξύ διατάξεων κατά την ανάγνωση χωρίς να παρακάμψετε αυτή τη ρύθμιση + Αντιστροφή διπλών σελίδων + Κεντρικό Περιθώριο + Κανένα + Προσθήκη σε διπλή σελίδα + Προσθήκη σε ευρεία σελίδα + Προσθήκη και στα δύο + Τύπος περιθωρίου κέντρου + Τοποθετήστε κενό για να φιλοξενήσει νεκρό χώρο σε αναδιπλούμενες συσκευές. + Προσαρμοσμένος Επιλογέας Χρώματος + Επιλέξτε ένα χρώμα για το προσαρμοσμένο θέμα + Προσαρμοσμένο Θέμα + Αντίγραφα Ασφαλείας + Συγχρονισμός + Εναύσματα + Χειροκίνητη & αυτόματη δημιουργία αντιγράφων ασφαλείας και συγχρονισμός + Κάθε 30 λεπτά + Κάθε ώρα + Κάθε 3 ώρες + Ο συγχρονισμός βιβλιοθήκης απέτυχε + Ο συγχρονισμός βιβλιοθήκης ολοκληρώθηκε + Ο συγχρονισμός είναι ήδη σε εξέλιξη + Διακομιστής + Εισάγετε τη διεύθυνση κεντρικού υπολογιστή για το συγχρονισμό της βιβλιοθήκης σας + API κλειδί + Εισάγετε το κλειδί API για το συγχρονισμό της βιβλιοθήκης σας + Ενέργειες Συγχρονισμού + Συγχρονισμός τώρα + Επιβεβαίωση συγχρονισμού + Ξεκινήστε τον άμεσο συγχρονισμό των δεδομένων σας + Ο συγχρονισμός θα αντικαταστήσει την τοπική βιβλιοθήκη σας με την απομακρυσμένη βιβλιοθήκη. Είστε βέβαιοι ότι θέλετε να συνεχίσετε? + Υπηρεσία + Επιλέξτε την υπηρεσία για συγχρονισμό της βιβλιοθήκης σας με + Συγχρονισμός + Αυτόματος Συγχρονισμός + Συχνότητα συγχρονισμού + Επιλέξτε τι να συγχρονίσετε + Τελευταίος συγχρονισμός χρονοσήμανσης + SyncYomi + Ολοκληρώθηκε στο %1$s + Τελευταίος Συγχρονισμός: %1$s + Google Drive + Σύνδεση + Σύνδεση με επιτυχία + Η σύνδεση απέτυχε + Ταυτοποίηση + Εκκαθάριση δεδομένων συγχρονισμού από το Google Drive + Συγχρονισμός δεδομένων που εκκαθαρίζονται από το Google Drive + Δεν βρέθηκαν δεδομένα συγχρονισμού στο Google Drive + Σφάλμα καθαρισμού δεδομένων συγχρονισμού από το Google Drive, Προσπαθήστε να συνδεθείτε ξανά. + Συνδεδεμένος στο Google Drive + Αποτυχία σύνδεσης στο Google Drive: %s + Δεν έχετε συνδεθεί στο Google Drive + Σφάλμα κατά το ανέβασμα δεδομένων συγχρονισμού στο Google Drive + Σφάλμα Διαγραφής Αρχείου Κλειδώματος Google Drive + Σφάλμα πριν τον συγχρονισμό: %s + Επιβεβαίωση εκκαθάρισης + Purging συγχρονισμού δεδομένων θα διαγράψει όλα τα δεδομένα συγχρονισμού σας από το Google Drive. Είστε σίγουροι ότι θέλετε να συνεχίσετε? + Δημιουργία εναυσμάτων συγχρονισμού + Μπορεί να χρησιμοποιηθεί για τον ορισμό εναυσμάτων συγχρονισμού + Συγχρονισμός σε Διάβασμα Κεφαλαίου + Συγχρονισμός κατά το άνοιγμα κεφαλαίου + Συγχρονισμός στο επεισόδιο + Συγχρονισμός στο Ανοικτό Επεισόδιο + Συγχρονισμός κατά την εκκίνηση της εφαρμογής + Συγχρονισμός στη συνέχιση εφαρμογής + Συγχρονισμός βιβλιοθήκης + Ανανέωση επέκτασης σελίδας για ενημέρωση λίστας. + Γραμμή Πλοήγησης + Εμφάνιση ενημερώσεων στο nav + Εμφάνιση ιστορικού στο nav + Να εμφανίζονται πάντα οι ετικέτες + Επιλέξτε έναν ανιχνευτή + Η καταχώρηση δεν παρακολουθείται. + Συμπλήρωση από ιχνηλάτη + diff --git a/i18n-tail/src/commonMain/moko-resources/en/strings.xml b/i18n-tail/src/commonMain/moko-resources/en/strings.xml new file mode 100644 index 0000000000..2b24372963 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/en/strings.xml @@ -0,0 +1,149 @@ + + + Tracking status + Tags + Ungrouped + Not tracked + Group + Anime Library dynamic category updates + Manga Library dynamic category updates + Always launch global updates + Launch global updates only for ungrouped, category updates for others + Launch category updates all the time + Reset Tags + Add Tag + Title: %1$s + Description: %1$s + Author: %1$s + Artist: %1$s + Custom entry info + Reset Info + Cast Settings + Enable or disable Cast + Send to Cast + Show downloaded episode file size + Fork Settings + Edit info + Special Services + Connections + Discord, more to come.. + Special Services that are unique to Animetail and enhance the way you use the app + Discord + This Discord Service works through token logging. Use at your own risk. Your token is stored locally and Animetail does not share it anywhere else + Discord Rich Presence + Show Episodes/Chapters Titles + Show the title of the episode/chapter you are reading + Enable Discord Rich Presence + Discord Status + ⛔ Do Not Disturb + 🌙 Idle + 🟢 Online + RPC Incognito + Discord Incognito mode + Overridden when Incognito Mode is enabled + Entries in included categories will not be displayed in Discord + Browsing + Scrolling through + Messing around with + Video + Comic + Amnis Player needs to be installed + TorrentServer Preferences + TorrentServer Port + Torrent Server is running + Torrent Trackers + Reset default torrent trackers string + Page preload amount + Preserve reading position on read entries + Reader Bottom Buttons + Customize what buttons appear at the bottom of the reader + Set first page as cover + Set second page as cover + Save first page + Save second page + Share first page + Share second page + Save combined page + Share combined page + %1$s: %2$s, pages %3$s + Page layout + Shift one page over + Double pages + Single page + Automatic (based on orientation) + While using automatic page layout, you can still switch between layouts while reading without overriding this setting + Invert double pages + Center Margin + None + Add to double Page + Add to wide Page + Add to both + Center margin type + Insert spacer to accommodate deadspace on foldable devices. + Custom Color Picker + Pick a color for the custom Theme + Custom Theme + Backup + Sync + Triggers + Manual & automatic backups and sync + Every 30 minutes + Every hour + Every 3 hours + Syncing library failed + Syncing library complete + Sync is already in progress + Host + Enter the host address for synchronizing your library + API key + Enter the API key to synchronize your library + Sync Actions + Sync now + Sync confirmation + Initiate immediate synchronization of your data + Syncing will overwrite your local library with the remote library. Are you sure you want to continue? + Service + Select the service to sync your library with + Sync + Automatic Synchronization + Synchronization frequency + Choose what to sync + Last sync timestamp reset + SyncYomi + Done in %1$s + Last Synchronization: %1$s + Google Drive + Sign in + Signed in successfully + Sign in failed + Authentication + Clear Sync Data from Google Drive + Sync data purged from Google Drive + No sync data found in Google Drive + Error purging sync data from Google Drive, Try to sign in again. + Logged in to Google Drive + Failed to log in to Google Drive: %s + Not signed in to Google Drive + Error uploading sync data to Google Drive + Error Deleting Google Drive Lock File + Error before sync: %s + Purge confirmation + Purging sync data will delete all your sync data from Google Drive. Are you sure you want to continue? + Create sync triggers + Can be used to set sync triggers + Sync on Chapter Read + Sync on Chapter Open + Sync on Episode Seen + Sync on Episode Open + Sync on App Start + Sync on App Resume + Sync library + Refresh extension page to update list. + Navbar + Show updates in the nav + Show history in the nav + Always show nav labels + Select a tracker + Entry is not tracked. + Fill from tracker + diff --git a/i18n-tail/src/commonMain/moko-resources/es/strings.xml b/i18n-tail/src/commonMain/moko-resources/es/strings.xml new file mode 100644 index 0000000000..2d9b0f06f0 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/es/strings.xml @@ -0,0 +1,149 @@ + + + Estado del seguimiento + Etiquetas + No agrupado + No rastreado + Grupo + Actualizaciones dinámicas de categorías de Anime Library + Actualizaciones de categorías dinámicas de Manga Library + Siempre lanzar actualizaciones globales + Lanzar actualizaciones globales para los no agrupados y por categoría para los demás + Lanzar actualizaciones por categoría todo el tiempo + Restablecer las etiquetas + Añadir etiqueta + Título: %1$s + Descripción: %1$s + Autor: %1$s + Artista: %1$s + Información de entrada personalizada + Restablecer información + Configuración de transmisión + Habilitar o deshabilitar la transmisión + Enviar a la transmisión + Mostrar el tamaño del archivo del episodio descargado + Ajustes de bifurcación + Editar info + Servicios Especiales + Conexiones + Discord, más por venir… + Servicios especiales exclusivos de Animetail que mejoran la forma en que usas la app + Discord + Este servicio de Discord funciona a través de inicio de sesión con token. Úsalo bajo tu propio riesgo. Tu token se guarda localmente y Animetail no lo comparte en ningún otro lugar + Discord Rica Presence + Mostrar títulos de episodios/capítulos + Mostrar el título del episodio/capítulo que estás leyendo + Habilitar Discord Rich Presence + Estado de Discord + ⛔ No molestar + 🌙 Inactivo + 🟢 En línea + RPC Incógnito + Modo Discord Incógnito + Anulado cuando se habilita el modo incógnito + Las entradas en las categorías incluidas no se mostrarán en Discord + Navegando + Desplazándose + Experimentando con + Vídeo + Cómic + Es necesario instalar Amnis Player + Preferencias de TorrentServer + Puerto para TorrentServer + Torrent Server se está ejecutando + Rastreadores Torrent + Restablecer cadena de rastreadores de torrent por defecto + Cantidad de precarga de página + Conservar la posición de lectura en las entradas leídas + Botones inferiores del lector + Personalizar los botones que aparecen en la parte inferior del lector + Establecer la primera página como portada + Establecer la segunda página como portada + Guardar la primera página + Guardar la segunda página + Compartir la primera página + Compartir la segunda página + Guardar la página combinada + Compartir la página combinada + %1$s: %2$s, páginas %3$s + Diseño de página + Desplazar una página + Dobles páginas + Una sola página + Automático (basado en la orientación) + Al usar el diseño de página automático, aún puedes cambiar entre diseños mientras lees sin anular esta configuración + Invertir doble página + Centrar margen + Nada + Añadir a doble página + Añadir a la página ancha + Agregar a ambos + Tipo del margen central + Insertar espaciador para ajustar el espacio muerto en dispositivos plegables. + Selector de color personalizado + Elige un color para el tema personalizado + Tema personalizado + Respaldar + Sincronizar + Disparadores + Copias de seguridad automáticas & y sincronización manual + Cada 30 minutos + Cada hora + Cada 3 horas + Error al sincronizar la biblioteca + Sincronización completa + La sincronización ya está en progreso + Host + Introduzca la dirección del host para sincronizar su biblioteca + Clave API + Introduzca la clave API para sincronizar su biblioteca + Acciones de sincronización + Sincronizar ahora + Confirmación de sincronización + Iniciar la sincronización inmediata de sus datos + La sincronización sobrescribirá tu biblioteca local con la biblioteca remota. ¿Estás seguro de que deseas continuar? + Servicio + Seleccione el servicio con el que sincronizar su biblioteca + Sincronizar + Sincronización automática + Frecuencia de sincronización + Elige qué sincronizar + Última marca de tiempo de sincronización restablecida + SyncYomi + Listo en %1$s + Última sincronización: %1$s + Google Drive + Iniciar sesión + Sesión iniciada correctamente + Error al iniciar sesión + Autenticación + Borrar datos de sincronización de Google Drive + Sincronizar datos borrados de Google Drive + No se han encontrado datos de sincronización en Google Drive + Error al purgar los datos de sincronización de Google Drive. Intenta iniciar sesión nuevamente. + Conectado a Google Drive + No se pudo iniciar sesión en Google Drive: %s + No has iniciado sesión en Google Drive + Error al subir los datos de sincronización a Google Drive + Error al eliminar el archivo de bloqueo de Google Drive + Error antes de la sincronización: %s + Confirmación de eliminación + Purgar los datos de sincronización eliminará todos tus datos de sincronización de Google Drive. ¿Estás seguro de que deseas continuar? + Crear disparadores de sincronización + Puede usarse para configurar disparadores de sincronización + Sincronizar al leer el capítulo + Sincronizar al abrir capítulo + Sincronizar al ver el episodio + Sincronizar al abrir el episodio + Sincronizar al iniciar la app + Sincronizar al reanudar la app + Sincronizar biblioteca + Actualiza la página de la extensión para actualizar la lista. + Barra de navegación + Mostrar actualizaciones en la barra de navegación + Mostrar historial en la barra de navegación + Mostrar siempre las etiquetas de la barra de navegación + Seleccionar un rastreador + No se ha realizado seguimiento de la entrada. + Rellenar desde el rastreador + diff --git a/i18n-tail/src/commonMain/moko-resources/fi/strings.xml b/i18n-tail/src/commonMain/moko-resources/fi/strings.xml new file mode 100644 index 0000000000..13213aaf94 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/fi/strings.xml @@ -0,0 +1,149 @@ + + + Seurannan tila + Tunnisteet + Ungrouped + Ei seurattu + Ryhmä + Anime Library dynaamiset kategoriapäivitykset + Manga Kirjaston dynaamiset tuoteryhmäpäivitykset + Käynnistä aina globaalit päivitykset + Käynnistä maailmanlaajuiset päivitykset vain ryhmitämättömille, kategoriapäivityksille muille + Käynnistä kategorian päivitykset koko ajan + Nollaa Tagit + Lisää Tagi + Arvonimi: %1$s + Kuvaus: %1$s + Tekijä: %1$s + Esittäjä: %1$s + Mukautetut tietueen tiedot + Reset Info + Lähetyksen Asetukset + Ota käyttöön tai poista käytöstä + Lähetä lähetykseen + Näytä ladatun jakson tiedoston koko + Forkin Asetukset + Muokkaa tietoja + Erityiset Palvelut + Yhteydet + Discord, lisää tullaan.. + Erikoispalvelut, jotka ovat ainutlaatuisia Animetail ja parantaa tapaa käyttää sovellusta + Discord + Tämä Discord-palvelu toimii tunnuksen lokilla. Käytä omalla vastuullasi. Tunnuksesi tallennetaan paikallisesti ja Animetail ei jaa sitä mistään muualta. + Discord Rich Presence + Näytä Jaksot/Lukujen Otsikot + Näytä jakson / luvun otsikko, jota olet lukemassa + Ota Discordin Rich Presence Käyttöön + Discordin Tila + ⛔ Älä Häiritse + 🌙 Käyttämätön + 🟢 Online + RPC Incognito + Discord Incognito -tila + Ohita kun Incognito-tila on käytössä + Sisällytettyjä kategorioita ei näytetä Discordissa + Selataan + Vieritä läpi + Messing noin kanssa + Video + Sarjakuva + Amnis Player täytyy asentaa + TorrentServer Asetukset + TorrentServer Portti + Torrent- palvelin on käynnissä + Torrent- Seurantapalvelimet + Palauta torrent-tiedosto merkkijono + Sivun esilatauksen määrä + Säilytä lukemisen sijainti luetuissa merkinnöissä + Lukija Alapainikkeet + Mukauta mitä painikkeita lukijan alareunassa näkyy + Aseta ensimmäinen sivu kansiksi + Aseta toinen sivu kansiksi + Tallenna ensimmäinen sivu + Tallenna toinen sivu + Jaa ensimmäinen sivu + Jaa toinen sivu + Tallenna yhdistetty sivu + Jaa yhdistetty sivu + %1$s: %2$s, sivut %3$s + Sivun asettelu + Siirrä yksi sivu yli + Kaksinkertaiset sivut + Yksi sivu + Automaattinen (suuntautumisen perusteella) + Kun käytät automaattista sivuasettelua, voit silti vaihtaa asettelujen välillä lukematta tätä asetusta + Käännä kaksoissivut + Keski- Marginaali + Ei Mitään + Lisää tuplasivulle + Lisää laajalle sivulle + Lisää molempiin + Keskelle marginaalin tyyppi + Aseta välilyönti asentoon kokoontaitettavien laitteiden osalta. + Mukautettu Värivalitsin + Valitse väri mukautetulle teemalle + Muokattu Teema + Varmuuskopio + Synkronointi + Käynnistimet + Manual & automatic backups and sync + Joka 30 minuutti + Joka tunti + Joka 3. tunti + Kirjaston synkronointi epäonnistui + Kirjaston synkronointi valmis + Synkronointi on jo käynnissä + Isäntä + Syötä isäntäosoite, kun haluat synkronoida kirjaston + API avain + Syötä API-avain synkronoidaksesi kirjaston + Synkronoi Toiminnot + Synkronoi nyt + Synkronoinnin vahvistus + Aloita tietojen välitön synkronointi + Synkronointi korvaa paikallisen kirjaston etäkirjaston kanssa. Oletko varma, että haluat jatkaa? + Palvelu + Valitse palvelu, jonka avulla kirjastosi synkronoidaan + Synkronointi + Automaattinen Synkronointi + Synkronoinnin taajuus + Valitse mitä synkronoida + Viimeisin synkronoinnin aikaleiman nollaus + SyncYomi + Valmis kohteessa %1$s + Viimeisin Synkronointi: %1$s + Google Drive + Kirjaudu sisään + Kirjauduttu onnistuneesti + Kirjautuminen epäonnistui + Todennus + Poista synkronointitiedot Google Drivesta + Synkronoi Google Drivesta puhdistetut tiedot + Synkronointitietoja ei löytynyt Google Drivesta + Virhe tallennettaessa synkronointitietoja Google Drivesta, Yritä kirjautua sisään uudelleen. + Kirjautunut sisään Google Driveen + Kirjautuminen Google Drivelle epäonnistui: %s + Ei kirjautunut Google Driveen + Virhe siirrettäessä synkronointitietoja Google Driveen + Virhe Poistettaessa Google Drive Lukitustiedostoa + Virhe ennen synkronointia: %s + Tyhjennä vahvistus + Synkronointitietojen poistaminen poistaa kaikki synkronointitiedot Google Drivesta. Oletko varma, että haluat jatkaa? + Luo synkronointikäynnistimet + Voidaan käyttää synkronoinnin käynnistimien asettamiseen + Synkronoi luku luetuissa + Synkronoi luku auki + Synkronointi Jakson päällä + Synkronoi Jakson avauksessa + Synkronoi sovelluksen käynnistyessä + Synkronoi sovelluksen ollessa uudelleen + Synkronoi kirjasto + Päivitä lisäosa sivu päivitettäväksi. + Navbar + Näytä päivitykset nav + Näytä historia navissa + Näytä aina navigointitunnisteet + Valitse seurantaohjelma + Merkintää ei jäljitetä. + Täytä seurantapalvelusta + diff --git a/i18n-tail/src/commonMain/moko-resources/fr/strings.xml b/i18n-tail/src/commonMain/moko-resources/fr/strings.xml new file mode 100644 index 0000000000..4347f91727 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/fr/strings.xml @@ -0,0 +1,149 @@ + + + État du suivi + Tags + Ungrouped + Non suivi + Groupes + Mises à jour des catégories dynamiques de la bibliothèque Anime + Mises à jour de la catégorie dynamique de la bibliothèque + Toujours lancer les mises à jour globales + Lancer les mises à jour globales uniquement pour les non-groupés, les mises à jour de catégories pour les autres + Lancer les mises à jour de la catégorie tout le temps + Réinitialiser les tags + Ajouter une étiquette + Titre: %1$s + Description : %1$s + Auteur: %1$s + Artiste: %1$s + Infos de saisie personnalisée + Reset Info + Paramètres du casting + Activer ou désactiver le casting + Envoyer au casting + Afficher la taille du fichier d\'épisode téléchargé + Paramètres du fork + Modifier les infos + Services spéciaux + Connexions + Discord, plus à venir. + Services spéciaux uniques à Animetail et améliorant la façon dont vous utilisez l\'application + Discord. + Ce service Discord fonctionne grâce à l\'enregistrement de jetons. Utilisez à vos propres risques. Votre jeton est stocké localement et Animetail ne le partage nulle part ailleurs + Discord Rich Presence + Afficher les titres des épisodes/chapitres + Afficher le titre de l\'épisode/chapitre que vous lisez + Activer Discord Rich Presence + Statut Discord + ⛔ Ne pas déranger + 🌙 Inactif + 🟢 Online + RPC Incognito + Mode Incognito Discord + Remplacé lorsque le mode Incognito est activé + Les entrées dans les catégories incluses ne seront pas affichées dans Discord + En cours de navigation + Défiler à travers + Discuter avec + Vidéo + BD + Amnis Player doit être installé + Préférences de TorrentServer + Port du serveur TorrentServer + Le serveur Torrent est en cours d\'exécution + Traqueurs de torrent + Réinitialiser la chaîne de suivi des torrent par défaut + Montant du préchargement de la page + Conserver la position de lecture sur les entrées lues + Boutons du bas du lecteur + Personnaliser les boutons qui apparaissent en bas du lecteur + Définir la première page comme couverture + Définir la deuxième page comme couverture + Enregistrer la première page + Enregistrer la seconde page + Partager la première page + Partager la deuxième page + Enregistrer la page combinée + Partager la page combinée + %1$s: %2$s, pages %3$s + Disposition de la page + Déplacer une page vers le haut + Double pages + Page unique + Automatique (basé sur l\'orientation) + Lors de l\'utilisation de la mise en page automatique, vous pouvez toujours basculer entre les mises en page pendant la lecture sans écraser ce paramètre + Inverser les doubles pages + Marge centrale + Aucun + Ajouter à la page double + Ajouter à la page large + Ajouter aux deux + Type de marge centrale + Insérez un espace de stockage pour accommoder des espaces mortels sur des appareils pliables. + Sélecteur de couleurs personnalisé + Choisir une couleur pour le thème personnalisé + Thème personnalisé + Sauvegarde + Synchroniser + Déclencheurs + Sauvegardes automatiques manuelles & et synchronisation + Toutes les 30 minutes + Toutes les heures + Toutes les 3 heures + La synchronisation de la bibliothèque a échoué + Synchronisation de la bibliothèque terminée + La synchronisation est déjà en cours + Hôte + Entrez l\'adresse de l\'hôte pour la synchronisation de votre bibliothèque + Clé API + Entrez la clé API pour synchroniser votre bibliothèque + Actions de synchronisation + Synchroniser maintenant + Confirmation de la synchronisation + Lancer la synchronisation immédiate de vos données + La synchronisation écrasera votre bibliothèque locale avec la bibliothèque distante. Êtes-vous sûr de vouloir continuer ? + Service + Sélectionnez le service avec lequel synchroniser votre bibliothèque + Synchroniser + Synchronisation automatique + Fréquence de synchronisation + Choisir ce qu\'il faut synchroniser + Dernière réinitialisation de l\'horodatage de synchronisation + SyncYomi + Fait dans %1$s + Dernière synchronisation : %1$s + Google Drive + Se connecter + Connecté avec succès + Échec de la connexion + Authentification + Effacer les données de synchronisation de Google Drive + Synchroniser les données purgées de Google Drive + Aucune donnée de synchronisation trouvée dans Google Drive + Erreur lors de la purge des données de synchronisation depuis Google Drive, essayez de vous connecter à nouveau. + Connecté à Google Drive + Impossible de se connecter à Google Drive : %s + Non connecté à Google Drive + Erreur lors du téléchargement des données de synchronisation sur Google Drive + Erreur lors de la suppression du fichier de verrouillage de Google Drive + Erreur avant la synchronisation : %s + Confirmation de la purge + La suppression des données de synchronisation supprimera toutes vos données synchronisées de Google Drive. Êtes-vous sûr de vouloir continuer ? + Créer des déclencheurs de synchronisation + Peut être utilisé pour définir les déclencheurs de synchronisation + Synchroniser lors de la lecture du chapitre + Synchroniser à l\'ouverture du chapitre + Synchronisation sur épisode vu + Synchroniser à l\'ouverture de l\'épisode + Synchroniser au démarrage de l\'application + Synchroniser lors de la reprise de l\'application + Synchroniser la bibliothèque + Rafraîchir la page de l\'extension pour mettre à jour la liste. + Barre de navigation + Afficher les mises à jour dans le nav + Afficher l\'historique dans le nav + Toujours afficher les étiquettes de nav + Sélectionnez un tracker + L\'entrée n\'est pas suivie. + Remplir depuis le tracker + diff --git a/i18n-tail/src/commonMain/moko-resources/he/strings.xml b/i18n-tail/src/commonMain/moko-resources/he/strings.xml new file mode 100644 index 0000000000..2b24372963 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/he/strings.xml @@ -0,0 +1,149 @@ + + + Tracking status + Tags + Ungrouped + Not tracked + Group + Anime Library dynamic category updates + Manga Library dynamic category updates + Always launch global updates + Launch global updates only for ungrouped, category updates for others + Launch category updates all the time + Reset Tags + Add Tag + Title: %1$s + Description: %1$s + Author: %1$s + Artist: %1$s + Custom entry info + Reset Info + Cast Settings + Enable or disable Cast + Send to Cast + Show downloaded episode file size + Fork Settings + Edit info + Special Services + Connections + Discord, more to come.. + Special Services that are unique to Animetail and enhance the way you use the app + Discord + This Discord Service works through token logging. Use at your own risk. Your token is stored locally and Animetail does not share it anywhere else + Discord Rich Presence + Show Episodes/Chapters Titles + Show the title of the episode/chapter you are reading + Enable Discord Rich Presence + Discord Status + ⛔ Do Not Disturb + 🌙 Idle + 🟢 Online + RPC Incognito + Discord Incognito mode + Overridden when Incognito Mode is enabled + Entries in included categories will not be displayed in Discord + Browsing + Scrolling through + Messing around with + Video + Comic + Amnis Player needs to be installed + TorrentServer Preferences + TorrentServer Port + Torrent Server is running + Torrent Trackers + Reset default torrent trackers string + Page preload amount + Preserve reading position on read entries + Reader Bottom Buttons + Customize what buttons appear at the bottom of the reader + Set first page as cover + Set second page as cover + Save first page + Save second page + Share first page + Share second page + Save combined page + Share combined page + %1$s: %2$s, pages %3$s + Page layout + Shift one page over + Double pages + Single page + Automatic (based on orientation) + While using automatic page layout, you can still switch between layouts while reading without overriding this setting + Invert double pages + Center Margin + None + Add to double Page + Add to wide Page + Add to both + Center margin type + Insert spacer to accommodate deadspace on foldable devices. + Custom Color Picker + Pick a color for the custom Theme + Custom Theme + Backup + Sync + Triggers + Manual & automatic backups and sync + Every 30 minutes + Every hour + Every 3 hours + Syncing library failed + Syncing library complete + Sync is already in progress + Host + Enter the host address for synchronizing your library + API key + Enter the API key to synchronize your library + Sync Actions + Sync now + Sync confirmation + Initiate immediate synchronization of your data + Syncing will overwrite your local library with the remote library. Are you sure you want to continue? + Service + Select the service to sync your library with + Sync + Automatic Synchronization + Synchronization frequency + Choose what to sync + Last sync timestamp reset + SyncYomi + Done in %1$s + Last Synchronization: %1$s + Google Drive + Sign in + Signed in successfully + Sign in failed + Authentication + Clear Sync Data from Google Drive + Sync data purged from Google Drive + No sync data found in Google Drive + Error purging sync data from Google Drive, Try to sign in again. + Logged in to Google Drive + Failed to log in to Google Drive: %s + Not signed in to Google Drive + Error uploading sync data to Google Drive + Error Deleting Google Drive Lock File + Error before sync: %s + Purge confirmation + Purging sync data will delete all your sync data from Google Drive. Are you sure you want to continue? + Create sync triggers + Can be used to set sync triggers + Sync on Chapter Read + Sync on Chapter Open + Sync on Episode Seen + Sync on Episode Open + Sync on App Start + Sync on App Resume + Sync library + Refresh extension page to update list. + Navbar + Show updates in the nav + Show history in the nav + Always show nav labels + Select a tracker + Entry is not tracked. + Fill from tracker + diff --git a/i18n-tail/src/commonMain/moko-resources/hu/strings.xml b/i18n-tail/src/commonMain/moko-resources/hu/strings.xml new file mode 100644 index 0000000000..2b24372963 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/hu/strings.xml @@ -0,0 +1,149 @@ + + + Tracking status + Tags + Ungrouped + Not tracked + Group + Anime Library dynamic category updates + Manga Library dynamic category updates + Always launch global updates + Launch global updates only for ungrouped, category updates for others + Launch category updates all the time + Reset Tags + Add Tag + Title: %1$s + Description: %1$s + Author: %1$s + Artist: %1$s + Custom entry info + Reset Info + Cast Settings + Enable or disable Cast + Send to Cast + Show downloaded episode file size + Fork Settings + Edit info + Special Services + Connections + Discord, more to come.. + Special Services that are unique to Animetail and enhance the way you use the app + Discord + This Discord Service works through token logging. Use at your own risk. Your token is stored locally and Animetail does not share it anywhere else + Discord Rich Presence + Show Episodes/Chapters Titles + Show the title of the episode/chapter you are reading + Enable Discord Rich Presence + Discord Status + ⛔ Do Not Disturb + 🌙 Idle + 🟢 Online + RPC Incognito + Discord Incognito mode + Overridden when Incognito Mode is enabled + Entries in included categories will not be displayed in Discord + Browsing + Scrolling through + Messing around with + Video + Comic + Amnis Player needs to be installed + TorrentServer Preferences + TorrentServer Port + Torrent Server is running + Torrent Trackers + Reset default torrent trackers string + Page preload amount + Preserve reading position on read entries + Reader Bottom Buttons + Customize what buttons appear at the bottom of the reader + Set first page as cover + Set second page as cover + Save first page + Save second page + Share first page + Share second page + Save combined page + Share combined page + %1$s: %2$s, pages %3$s + Page layout + Shift one page over + Double pages + Single page + Automatic (based on orientation) + While using automatic page layout, you can still switch between layouts while reading without overriding this setting + Invert double pages + Center Margin + None + Add to double Page + Add to wide Page + Add to both + Center margin type + Insert spacer to accommodate deadspace on foldable devices. + Custom Color Picker + Pick a color for the custom Theme + Custom Theme + Backup + Sync + Triggers + Manual & automatic backups and sync + Every 30 minutes + Every hour + Every 3 hours + Syncing library failed + Syncing library complete + Sync is already in progress + Host + Enter the host address for synchronizing your library + API key + Enter the API key to synchronize your library + Sync Actions + Sync now + Sync confirmation + Initiate immediate synchronization of your data + Syncing will overwrite your local library with the remote library. Are you sure you want to continue? + Service + Select the service to sync your library with + Sync + Automatic Synchronization + Synchronization frequency + Choose what to sync + Last sync timestamp reset + SyncYomi + Done in %1$s + Last Synchronization: %1$s + Google Drive + Sign in + Signed in successfully + Sign in failed + Authentication + Clear Sync Data from Google Drive + Sync data purged from Google Drive + No sync data found in Google Drive + Error purging sync data from Google Drive, Try to sign in again. + Logged in to Google Drive + Failed to log in to Google Drive: %s + Not signed in to Google Drive + Error uploading sync data to Google Drive + Error Deleting Google Drive Lock File + Error before sync: %s + Purge confirmation + Purging sync data will delete all your sync data from Google Drive. Are you sure you want to continue? + Create sync triggers + Can be used to set sync triggers + Sync on Chapter Read + Sync on Chapter Open + Sync on Episode Seen + Sync on Episode Open + Sync on App Start + Sync on App Resume + Sync library + Refresh extension page to update list. + Navbar + Show updates in the nav + Show history in the nav + Always show nav labels + Select a tracker + Entry is not tracked. + Fill from tracker + diff --git a/i18n-tail/src/commonMain/moko-resources/it/strings.xml b/i18n-tail/src/commonMain/moko-resources/it/strings.xml new file mode 100644 index 0000000000..720c3769c2 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/it/strings.xml @@ -0,0 +1,149 @@ + + + Stato tracciamento + Etichette + Ungrouped + Non tracciato + Gruppo + Anime Libreria aggiornamenti categoria dinamica + Aggiornamenti della categoria dinamica Manga Library + Lancia sempre aggiornamenti globali + Avvia gli aggiornamenti globali solo per gli aggiornamenti, categoria per gli altri + Avvia continuamente gli aggiornamenti delle categorie + Reimposta Etichette + Aggiungi Tag + Titolo: %1$s + Descrizione: %1$s + Autore: %1$s + Artista: %1$s + Informazioni sulla voce personalizzata + Reset Info + Impostazioni Trasmetti + Abilita o disabilita Cast + Invia a Cast + Mostra la dimensione del file dell\'episodio scaricato + Impostazioni Fork + Modifica informazioni + Servizi Speciali + Connections + Discord, più a venire.. + Servizi speciali che sono unici per Animetail e migliorare il modo in cui si utilizza l\'app + Discord + Questo servizio Discord funziona attraverso la registrazione dei token. Usa a tuo rischio. Il tuo token è memorizzato localmente e Animetail non lo condivide altrove. + Discord Rich Presence + Mostra I Titoli Episodi/Capitoli + Mostra il titolo dell\'episodio/capitolo che stai leggendo + Abilita Presenza Ricca Discord + Stato Discord + ⛔ Non Disturbare + 🌙 Inattivo + 🟢 Online + RPC Incognito + Modalità discord in incognito + Sovrascrivi quando la modalità Incognito è abilitata + Le voci nelle categorie incluse non verranno visualizzate in Discord + Navigazione + Scorrimento attraverso + Messaggiare con + Video + Fumetto + Amnis Player deve essere installato + Preferenze Di TorrentServer + Porta TorrentServer + Il server Torrent è in esecuzione + Tracker Torrent + Ripristina stringa torrent trackers predefinita + Importo precarico pagina + Conserva la posizione di lettura sulle voci di lettura + Pulsanti Inferiori Del Lettore + Personalizza quali pulsanti appaiono nella parte inferiore del lettore + Imposta la prima pagina come copertina + Imposta la seconda pagina come copertina + Salva prima pagina + Salva seconda pagina + Condividi prima pagina + Condividi seconda pagina + Salva pagina combinata + Condividi la pagina combinata + %1$s: %2$s, pagine %3$s + Layout pagina + Sposta una pagina sopra + Pagine doppie + Pagina singola + Automatico (basato sull\'orientamento) + Durante l\'utilizzo del layout automatico della pagina, è ancora possibile passare da un layout all\'altro durante la lettura senza sovrascrivere questa impostazione + Inverti pagine doppie + Margine Centrato + Nessuno + Aggiungi alla pagina doppia + Aggiungi alla pagina larga + Aggiungi a entrambi + Tipo margine centrale + Inserire distanziatore per ospitare spazio morto su dispositivi pieghevoli. + Selettore Colore Personalizzato + Scegli un colore per il tema personalizzato + Tema Personalizzato + Backup + Sincronizza + Trigger + Manuale & backup e sincronizzazione automatici + Ogni 30 minuti + Ogni ora + Ogni 3 ore + Sincronizzazione libreria fallita + Sincronizzazione libreria completata + Sincronizzazione già in corso + Host + Inserisci l\'indirizzo host per sincronizzare la tua libreria + Chiave API + Inserisci la chiave API per sincronizzare la tua libreria + Sincronizza Azioni + Sincronizza ora + Conferma sincronizzazione + Avvia la sincronizzazione immediata dei tuoi dati + La sincronizzazione sovrascriverà la tua libreria locale con la libreria remota. Sei sicuro di voler continuare? + Servizio + Seleziona il servizio con cui sincronizzare la tua libreria + Sincronizza + Sincronizzazione Automatica + Frequenza di sincronizzazione + Scegli cosa sincronizzare + Ultima sincronizzazione timestamp reset + SyncYomi + Fatto in %1$s + Ultima Sincronizzazione: %1$s + Google Drive + Accedi + Accesso effettuato con successo + Accesso fallito + Autenticazione + Cancella la sincronizzazione dei dati da Google Drive + Sincronizza i dati eliminati da Google Drive + Nessun dato di sincronizzazione trovato in Google Drive + Errore nel cancellare i dati di sincronizzazione da Google Drive, provare ad accedere di nuovo. + Accesso effettuato su Google Drive + Accesso a Google Drive non riuscito: %s + Accesso non effettuato a Google Drive + Errore nel caricamento dei dati di sincronizzazione su Google Drive + Errore Eliminazione File Di Blocco Unità Google + Errore prima della sincronizzazione: %s + Ripulisci conferma + Eliminare i dati di sincronizzazione eliminerà tutti i dati di sincronizzazione da Google Drive. Sei sicuro di voler continuare? + Crea trigger di sincronizzazione + Può essere usato per impostare i trigger di sincronizzazione + Sincronizza al capitolo letto + Sincronizzazione al capitolo aperto + Sincronizzazione su Episodio Visto + Sincronizzazione su Episodio Aperto + Sincronizzazione all\'avvio dell\'app + Sincronizza su Riprendi App + Sincronizza libreria + Aggiorna la pagina delle estensioni per aggiornare la lista. + Navbar + Mostra gli aggiornamenti nel nav + Mostra la cronologia nel nav + Mostra sempre le etichette nav + Seleziona un tracker + La voce non è tracciata. + Riempi dal tracker + diff --git a/i18n-tail/src/commonMain/moko-resources/ja/strings.xml b/i18n-tail/src/commonMain/moko-resources/ja/strings.xml new file mode 100644 index 0000000000..9c062a8cb7 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/ja/strings.xml @@ -0,0 +1,149 @@ + + + トラッキングステータス + タグ + Ungrouped + 追跡されていません + グループ + アニメライブラリの動的カテゴリの更新 + マンガライブラリの動的カテゴリの更新 + 常にグローバルアップデートを起動 + グループ化されていないカテゴリの更新に対してのみグローバルアップデートを起動 + いつでもカテゴリの更新を起動します + タグをリセット + タグを追加 + タイトル: %1$s + 説明: %1$s + 作成者: %1$s + アーティスト: %1$s + カスタムエントリ情報 + Reset Info + キャスト設定 + キャストの有効化または無効化 + キャストに送る + ダウンロードしたエピソードのファイルサイズを表示 + フォーク設定 + 情報を編集 + 特別サービス + コネクション + 不一致、もっと来るべきchar@@0 + Animetailならではのスペシャルサービス + Discord + このDiscordサービスはトークンロギングを通じて機能します。自己責任で使用してください。あなたのトークンはローカルに保存され、Animetailは他のどこにも共有しません。 + Discord Rich Presence + エピソード/章タイトルを表示 + 読んでいるエピソード/チャプターのタイトルを表示する + Discord Rich Presenceを有効にする + Discord ステータス + ⛔ マナーモード + 🌙 Idle + 🟢 Online + RPC Incognito + Discordシークレットモード + シークレットモードが有効になっているときにオーバーライドする + 含まれるカテゴリのエントリはDiscordに表示されません + 閲覧 + スクロール中 + ふざけてる人 + ビデオ + コミック + Amnis Playerをインストールする必要があります + Torrentサーバーの設定 + TorrentServer ポート + Torrent サーバーを実行しています + Torrent トラッカー + デフォルトの Torrent トラッカーの文字列をリセット + ページプリロード量 + 読み取りエントリの読み取り位置を保持する + リーダーボトムボタン + リーダーの下部に表示されるボタンをカスタマイズします + 最初のページをカバーとして設定 + 2ページ目をカバーとして設定 + 最初のページを保存 + 2番目のページを保存 + 最初のページを共有 + 2ページ目を共有 + 結合ページを保存 + 組み合わせページを共有 + %1$s: %2$s, ページ %3$s + ページレイアウト + 1ページ以上シフト + 2 ページ + 単一ページ + 自動 (方向に基づく) + 自動ページレイアウトを使用している間は、この設定を上書きせずに、読み取り中にレイアウトを切り替えることができます。 + ダブルページを反転 + 中央マージン(中央マージン) + なし + ダブルページに追加 + 幅広いページに追加 + 両方に追加 + 中央マージンタイプ + 折り畳み式デバイスにデッドスペースを収容するスペースを挿入します。 + カスタムカラーピッカー + カスタムテーマの色を選択 + カスタムテーマ + バックアップ + 同期 + トリガー + 手動 & 自動バックアップと同期 + 30分ごと + 1時間ごと + 3時間ごと + ライブラリの同期に失敗しました + ライブラリの同期が完了しました + 同期は既に進行中です + ホスト + ライブラリを同期するためのホストアドレスを入力してください + API キー + ライブラリを同期するための API キーを入力してください + アクションを同期 + 今すぐ同期 + 同期の確認 + データの即時同期を開始する + 同期すると、ローカルライブラリがリモートライブラリに上書きされます。続行してもよろしいですか? + サービス + ライブラリを同期するサービスを選択してください + 同期 + 自動同期 + 同期周波数 + 同期するものを選択してください + 前回の同期タイムスタンプのリセット + SyncYomi + %1$s で完了 + 前回の同期: %1$s + Google ドライブ + サインイン + 正常にサインインしました + ログインに失敗しました + 認証 + Google ドライブからデータの同期をクリア + Google ドライブから削除されたデータを同期 + Google ドライブに同期データが見つかりません + Google ドライブから同期データのパージ中にエラーが発生しました。もう一度サインインしてみてください。 + Google ドライブにログインしました + Google ドライブにログインできませんでした: %s + Google ドライブにサインインしていません + Google ドライブに同期データをアップロード中にエラーが発生しました + Google ドライブロックファイルの削除エラー + 同期前のエラー: %s + パージの確認 + 同期データを消去すると、Google ドライブからすべての同期データが削除されます。続行してもよろしいですか? + 同期トリガーを作成 + 同期トリガーの設定に使用できます。 + チャプター読み上げ時に同期 + チャプター開き時に同期 + 見られたエピソードで同期 + エピソードオープン時に同期 + アプリ起動時に同期 + アプリの再開時に同期 + ライブラリを同期 + リストを更新するにはエクステンションページを更新してください。 + ナビゲーションバー + ナビゲーションの更新を表示する + ナビゲーションの履歴を表示する + 常にナビラベルを表示 + トラッカーを選択 + エントリは追跡されません。 + トラッカーから入力 + diff --git a/i18n-tail/src/commonMain/moko-resources/ko/strings.xml b/i18n-tail/src/commonMain/moko-resources/ko/strings.xml new file mode 100644 index 0000000000..2b24372963 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/ko/strings.xml @@ -0,0 +1,149 @@ + + + Tracking status + Tags + Ungrouped + Not tracked + Group + Anime Library dynamic category updates + Manga Library dynamic category updates + Always launch global updates + Launch global updates only for ungrouped, category updates for others + Launch category updates all the time + Reset Tags + Add Tag + Title: %1$s + Description: %1$s + Author: %1$s + Artist: %1$s + Custom entry info + Reset Info + Cast Settings + Enable or disable Cast + Send to Cast + Show downloaded episode file size + Fork Settings + Edit info + Special Services + Connections + Discord, more to come.. + Special Services that are unique to Animetail and enhance the way you use the app + Discord + This Discord Service works through token logging. Use at your own risk. Your token is stored locally and Animetail does not share it anywhere else + Discord Rich Presence + Show Episodes/Chapters Titles + Show the title of the episode/chapter you are reading + Enable Discord Rich Presence + Discord Status + ⛔ Do Not Disturb + 🌙 Idle + 🟢 Online + RPC Incognito + Discord Incognito mode + Overridden when Incognito Mode is enabled + Entries in included categories will not be displayed in Discord + Browsing + Scrolling through + Messing around with + Video + Comic + Amnis Player needs to be installed + TorrentServer Preferences + TorrentServer Port + Torrent Server is running + Torrent Trackers + Reset default torrent trackers string + Page preload amount + Preserve reading position on read entries + Reader Bottom Buttons + Customize what buttons appear at the bottom of the reader + Set first page as cover + Set second page as cover + Save first page + Save second page + Share first page + Share second page + Save combined page + Share combined page + %1$s: %2$s, pages %3$s + Page layout + Shift one page over + Double pages + Single page + Automatic (based on orientation) + While using automatic page layout, you can still switch between layouts while reading without overriding this setting + Invert double pages + Center Margin + None + Add to double Page + Add to wide Page + Add to both + Center margin type + Insert spacer to accommodate deadspace on foldable devices. + Custom Color Picker + Pick a color for the custom Theme + Custom Theme + Backup + Sync + Triggers + Manual & automatic backups and sync + Every 30 minutes + Every hour + Every 3 hours + Syncing library failed + Syncing library complete + Sync is already in progress + Host + Enter the host address for synchronizing your library + API key + Enter the API key to synchronize your library + Sync Actions + Sync now + Sync confirmation + Initiate immediate synchronization of your data + Syncing will overwrite your local library with the remote library. Are you sure you want to continue? + Service + Select the service to sync your library with + Sync + Automatic Synchronization + Synchronization frequency + Choose what to sync + Last sync timestamp reset + SyncYomi + Done in %1$s + Last Synchronization: %1$s + Google Drive + Sign in + Signed in successfully + Sign in failed + Authentication + Clear Sync Data from Google Drive + Sync data purged from Google Drive + No sync data found in Google Drive + Error purging sync data from Google Drive, Try to sign in again. + Logged in to Google Drive + Failed to log in to Google Drive: %s + Not signed in to Google Drive + Error uploading sync data to Google Drive + Error Deleting Google Drive Lock File + Error before sync: %s + Purge confirmation + Purging sync data will delete all your sync data from Google Drive. Are you sure you want to continue? + Create sync triggers + Can be used to set sync triggers + Sync on Chapter Read + Sync on Chapter Open + Sync on Episode Seen + Sync on Episode Open + Sync on App Start + Sync on App Resume + Sync library + Refresh extension page to update list. + Navbar + Show updates in the nav + Show history in the nav + Always show nav labels + Select a tracker + Entry is not tracked. + Fill from tracker + diff --git a/i18n-tail/src/commonMain/moko-resources/nl/strings.xml b/i18n-tail/src/commonMain/moko-resources/nl/strings.xml new file mode 100644 index 0000000000..89dc86bf92 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/nl/strings.xml @@ -0,0 +1,149 @@ + + + Tracking status + Labels + Ungrouped + Niet getrackt + Groeperen + Anime Library dynamische categorie updates + Manga Library dynamische categorie updates + Globale updates altijd starten + Globale updates alleen openen voor ongegroepeerde updates, categorie updates voor anderen + Categorieën bijwerken voortdurend + Labels resetten + Label toevoegen + Titel: %1$s + Omschrijving: %1$s + Auteur: %1$s + Artiest: %1$s + Aangepaste invoer informatie + Reset Info + Cast Instellingen + Casten in- of uitschakelen + Stuur naar Cast + Toon gedownloade aflevering bestand grootte + Instellingen vork + Info bewerken + Speciale diensten + Verbindingen + Discord, meer te komen.. + Speciale diensten die uniek zijn voor Animetail en die de manier waarop u de app gebruikt verbeteren + Onenigheid + Deze Discord Service werkt door token loggen. Gebruik op eigen risico. Je token wordt lokaal opgeslagen en Animetail deelt het nergens anders + Discord Rich Presence + Toon Afleveringen/Hoofdstukken Titels + Toon de titel van de aflevering/hoofdstuk die je aan het lezen bent + Discord Rich Presence inschakelen + Discord status + ⛔ Niet storen + 🌙 Idle + 🟢 Online + RPC Incognito + Discord Incognito modus + Overschreven wanneer Incognito modus is ingeschakeld + Invoer in opgenomen categorieën zal niet worden weergegeven in Discord + Browsen + Scrollen door + Messing rond met + Video + Strip + Amnis Player moet geïnstalleerd worden + TorrentServer Voorkeuren + TorrentServer Poort + Torrent Server is actief + Torrent Trackers + Reset standaard torrent trackers string + Voorlaad aantal pagina\'s + Behoud de leespositie van gelezen items + Lezer onderste knoppen + Pas aan welke knoppen worden weergegeven aan de onderkant van de lezer + Eerste pagina als afdekking instellen + Tweede pagina als afdekking instellen + Eerste pagina opslaan + Tweede pagina opslaan + Eerste pagina delen + Tweede pagina delen + Gecombineerde pagina opslaan + Deel gecombineerde pagina + %1$s: %2$s, pagina\'s %3$s + Pagina lay-out + Eén pagina over verplaatsen + Dubbele pagina\'s + Enkele pagina + Automatisch (gebaseerd op oriëntatie) + Tijdens het gebruik van automatische pagina-lay-out kunt u nog steeds schakelen tussen lay-outs tijdens het lezen zonder deze instelling te overschrijven + Dubbele pagina\'s omkeren + Centreer marge + geen + Aan dubbele pagina toevoegen + Aan brede pagina toevoegen + Voeg toe aan beide + Centraal marchetype + Geef ruimte aan ruimte op opvouwbare apparaten. + Aangepaste kleurkiezer + Kies een kleur voor het aangepaste thema + Aangepast Thema + Back-up + Synchroniseren + Triggeraars + Handmatige & automatische back-ups en synchronisatie + Elke 30 minuten + Elk uur + Elke 3 uur + Synchronisatie bibliotheek mislukt + Bibliotheek wordt gesynchroniseerd + Synchronisatie is al bezig + Hostnaam + Voer het hostadres in voor het synchroniseren van uw bibliotheek + API sleutel + Voer de API-sleutel in om uw bibliotheek te synchroniseren + Synchroniseer acties + Nu synchroniseren + Synchronisatie bevestigen + Begin onmiddellijke synchronisatie van uw gegevens + Synchroniseren overschrijft uw lokale bibliotheek met de externe bibliotheek. Weet u zeker dat u wilt doorgaan? + Diensten + Selecteer de service om uw bibliotheek met te synchroniseren + Synchroniseren + Automatische synchronisatie + Synchronisatie frequentie + Kies wat je wilt synchroniseren + Laatste synchronisatie tijdstempel gereset + SyncYomi + Klaar in %1$s + Laatste synchronisatie: %1$s + Google Drive + Log in + Succesvol ingelogd + Inloggen mislukt + Authenticatie + Verwijder Sync Data van Google Drive + Synchroniseer gegevens verwijderd van Google Drive + Geen synchronisatiegegevens gevonden in Google Drive + Fout bij het verwijderen van synchronisatiegegevens van Google Drive, probeer opnieuw aan te melden. + Ingelogd bij Google Drive + Fout bij het inloggen op Google Drive: %s + Niet ingelogd bij Google Drive + Fout bij het uploaden van synchronisatiegegevens naar Google Drive + Fout bij het verwijderen van Google Drive Lock Bestand + Fout vóór synchronisatie: %s + Opschonen bevestiging + Het verwijderen van synchronisatiegegevens zal al uw synchronisatiegegevens verwijderen van Google Drive. Weet u zeker dat u wilt doorgaan? + Creëer synchronisatie-triggers + Kan worden gebruikt om synchronisatie-triggers in te stellen + Synchroniseer met hoofdstuk lezen + Synchroniseer bij openen van hoofdstuk + Synchroniseren bij aflevering gezien + Synchroniseren bij open aflevering + Synchroniseer bij starten app + Synchroniseren met App Hervatten + Synchroniseer bibliotheek + Vernieuw de extensie pagina om de lijst bij te werken. + Navigatiebalk + Toon updates in nav + Toon geschiedenis in de nav + Altijd nav labels weergeven + Selecteer een tracker + Item wordt niet getrackt. + Vul van tracker + diff --git a/i18n-tail/src/commonMain/moko-resources/no/strings.xml b/i18n-tail/src/commonMain/moko-resources/no/strings.xml new file mode 100644 index 0000000000..b9134bc902 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/no/strings.xml @@ -0,0 +1,149 @@ + + + Sporingsstatus + Tagger + Ungrouped + Ikke sporet + Gruppe + Anime bibliotek dynamiske kategori oppdateringer + Oppdateringer om Manga bibliotek dynamisk kategori + Alltid starte globale oppdateringer + Start globale oppdateringer bare for ugruppert, kategorioppdateringer for andre + Start kategorioppdateringer hele tiden + Tilbakestill emneord + Legg til tagg + Tittel: %1$s + Beskrivelse: %1$s + Forfatter: %1$s + Artist: %1$s + Egendefinert oppføringsinformasjon + Reset Info + Innstillinger for søppelpost + Aktiver eller deaktiver Cast + Send til Cast + Vis nedlastede episode-filstørrelse + Fork innstillinger + Rediger info + Spesielle tjenester + Tilkoblinger + Discord, mer å komme. + Spesialtjenester som er unike for Animetail og forbedrer måten du bruker appen + Splid + Denne Discord tjenesten fungerer gjennom token logging. Bruk på egen risiko. Ditt token lagres lokalt og Animetail deler ikke det noe annet sted + Discord Rich Presence + Vis Episodes/kapitler + Vis tittelen på episode/kapittelet du leser + Aktiver Discord Rich Presence + Discord Status + :no_post: Ikke forstyrr + 🌙 Hvitt + 🟢 Online + RPC Incognito + Discord Incognito-modus + Overstyrt når inkognitomodus er aktivert + Oppføringer i inkluderte kategorier vil ikke bli vist i Discord + Surfing + Rulles gjennom + Messing rundt med + Video + Komisk + Amnis Player må installeres + TorrentServer innstillinger + TorrentServer port + Torrent-server kjører + Torrent Trackere + Tilbakestill standard torrent sporer streng + Sideinnlastings^beløp + Bevar leseposisjon på leste poster + Leser nederste knapper + Tilpass hvilke knapper som vises nederst på leseren + Angi første side som forsidebilde + Velg andre side som forsidebilde + Lagre første side + Lagre andre side + Del første side + Del andre side + Lagre kombinert side + Del kombinert side + %1$s: %2$s, sider %3$s + Sidens oppsett + Skift en side over + Doble sider + En side + Automatisk (basert på orientering) + Mens du benytter automatisk oppsett for siden, kan du fremdeles bytte mellom oppsett mens du leser uten at du overstyrer denne innstillingen + Inverter doble sider + Sentrer marg + Ingen + Legg til dobbel side + Legg til i bred side + Legg til begge + Midtstill marg type + Sett inn mellomrom for å tilpasse deadspace på sammenleggbare enheter. + Egendefinert fargevelger + Velg en farge for det egendefinerte temaet + Egendefinert tema + Sikkerhetskopi + Synkronisering + Triggere + Manuell & automatisk sikkerhetskopiering og synkronisering + Hvert 30. minutt + Hver time + Hver 3. time + Synkronisering av biblioteket mislyktes + Synkronisering av biblioteket fullført + Synkronisering allerede i gang + Vert + Angi vertsadressen for å synkronisere biblioteket ditt + API nøkkel + Skriv inn API-nøkkel for å synkronisere biblioteket + Synkroniser handlinger + Synkroniser nå + Bekreft synkronisering + Start umiddelbar synkronisering av dine data + Synkronisering vil overskrive det lokale biblioteket med fjernbiblioteket. Er du sikker på at du vil fortsette? + Tjeneste + Velg tjenesten for å synkronisere biblioteket med + Synkronisering + Automatisk synkronisering + Synkronisering frekvens + Velg hva som skal synkroniseres + Tidsstempel for siste synkronisering + SyncYomi + Ferdig i %1$s + Siste synkronisering: %1$s + Google Disk + Logg inn + Logget inn + Innlogging mislyktes + Autentisering + Slett synkroniseringsdata fra Google Drive + Synkroniser data tømt fra Google Drive + Ingen synkroniseringsdata funnet i Google Drive + Feil under tømming av synkroniseringsdata fra Google Drive, prøv å logge på nytt. + Logget på Google Drive + Kunne ikke logge på Google Drive: %s + Ikke logget på Google Drive + Feil under opplasting av synkroniseringsdata til Google Drive + Feil under sletting av Google Drive lås fil + Feil før synkronisering: %s + Fjern bekreftelse + Hvis du sletter synkroniseringsdata slettes alt synkroniseringsdata fra Google Drive. Er du sikker på at du vil fortsette? + Opprett synkroniseringsutløsere + Kan brukes til å angi synkroniseringsutløsere + Synkroniser på kapittel Les + Synkroniser på Kapittel Åpne + Synkroniser på Episode sett + Synkroniser på Episode åpne + Synkroniser fra App Start + Synkroniser igjen av appen + Synkroniser bibliotek + Oppdater utvidelsessiden for å oppdatere listen. + Navigasjonsfelt + Vis oppdateringer i nav + Vis historie i nav + Vis alltid av etiketter + Velg en tracker + Oppføringen kan ikke spores. + Fyll fra tracker + diff --git a/i18n-tail/src/commonMain/moko-resources/pl/strings.xml b/i18n-tail/src/commonMain/moko-resources/pl/strings.xml new file mode 100644 index 0000000000..08dbf7fc45 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/pl/strings.xml @@ -0,0 +1,149 @@ + + + Status śledzenia + Tagi + Ungrouped + Nieśledzone + Grupa + Dynamiczne aktualizacje kategorii Anime + Aktualizacje dynamicznych kategorii biblioteki Manga + Zawsze uruchamiaj globalne aktualizacje + Uruchom globalne aktualizacje tylko dla niegrupowanych, aktualizacje kategorii dla innych + Uruchom aktualizacje kategorii przez cały czas + Resetuj tagi + Dodaj tag + Tytuł: %1$s + Opis: %1$s + Autor: %1$s + Artysta: %1$s + Własne informacje o wpisach + Reset Info + Ustawienia wyglądu + Włącz lub wyłącz Cast + Wyślij do Cast + Pokaż rozmiar pliku pobranego odcinka + Ustawienia forka + Edytuj informacje + Usługi specjalne + Połączenia + Discord, jeszcze więcej. + Specjalne usługi, które są unikalne dla Animetail i ulepszają sposób korzystania z aplikacji + Discord + Ta usługa Discorda działa poprzez rejestrowanie tokenów. Używaj na własne ryzyko. Twój token jest przechowywany lokalnie, a Animetail nigdzie indziej nie udostępnia + Wzbogacona obecność Discorda + Pokaż tytuły odcinków/rozdziałów + Pokaż tytuł odcinka/rozdziału, który czytasz + Włącz Discord Rich Presence + Status Discorda + ⛔ Nie przeszkadzać + 🌙 Bezczynny + 🟢 Online + RPC Incognito + Tryb Discord Incognito + Zastąpione, gdy włączony jest tryb incognito + Wpisy w dołączonych kategoriach nie będą wyświetlane w Discordzie + Przeglądanie + Przewijanie przez + Komunikacja z + Wideo + Komiczny + Amnis Player musi być zainstalowany + Ustawienia serwera TorrentServer + Port TorrentServer + Serwer torrent jest uruchomiony + Torrent Trackers + Resetuj domyślny ciąg tropicieli torrent + Wstępne ładowanie strony + Zachowaj pozycję czytania przy odczytywanych wpisach + Dół czytnika + Dostosuj jakie przyciski pojawiają się na dole czytnika + Ustaw pierwszą stronę jako okładkę + Ustaw drugą stronę jako okładkę + Zapisz pierwszą stronę + Zapisz drugą stronę + Udostępnij pierwszą stronę + Udostępnij drugą stronę + Zapisz połączoną stronę + Udostępnij połączoną stronę + %1$s: %2$s, strony %3$s + Układ strony + Przenieś jedną stronę + Podwójne strony + Pojedyncza strona + Automatycznie (w oparciu o orientację) + Używając automatycznego układu strony, nadal możesz przełączać się między układami podczas czytania bez nadpisywania tego ustawienia + Odwróć podwójne strony + Wyśrodkuj margines + Brak + Dodaj do podwójnej strony + Dodaj do szerokiej strony + Dodaj do obu + Wyśrodkuj typ marginesu + Włóż spacer, aby pomieścić przestrzeń na składanych urządzeniach. + Niestandardowy wybór kolorów + Wybierz kolor niestandardowego motywu + Niestandardowy motyw + Kopia zapasowa + Synchronizacja + Wyzwalacze + Ręcznie & automatyczne kopie zapasowe i synchronizacja + Co 30 minut + Co godzinę + Co 3 godziny + Synchronizacja biblioteki nie powiodła się + Synchronizacja biblioteki zakończona + Synchronizacja jest już w toku + Host + Wprowadź adres hosta do synchronizacji biblioteki + Klucz API + Wprowadź klucz API, aby zsynchronizować swoją bibliotekę + Akcje synchronizacji + Synchronizuj teraz + Potwierdzenie synchronizacji + Zainicjuj natychmiastową synchronizację danych + Synchronizacja zastąpi Twoją lokalną bibliotekę zdalną biblioteką. Czy na pewno chcesz kontynuować? + Usługa + Wybierz usługę do synchronizacji z biblioteką + Synchronizacja + Automatyczna synchronizacja + Częstotliwość synchronizacji + Wybierz co zsynchronizować + Ostatnia synchronizacja zresetowana znacznik czasu + SyncYomi + Wykonano w %1$s + Ostatnia synchronizacja: %1$s + Dysk Google + Zaloguj się + Zalogowano pomyślnie + Logowanie nie powiodło się + Uwierzytelnianie + Wyczyść dane synchronizacji z Dysku Google + Synchronizacja danych usunięta z Dysku Google + Nie znaleziono danych synchronizacji na Dysku Google + Błąd czyszczenia danych synchronizacji z Dysku Google, spróbuj zalogować się ponownie. + Zalogowano do Dysku Google + Nie udało się zalogować do Dysku Google: %s + Nie zalogowano się na Dysku Google + Błąd podczas przesyłania danych synchronizacji na Dysku Google + Błąd podczas usuwania pliku Blokady Dysku Google + Błąd przed synchronizacją: %s + Potwierdzenie wyczyszczenia + Przenoszenie danych synchronizacji spowoduje usunięcie wszystkich danych synchronizacji z Dysku Google. Czy na pewno chcesz kontynuować? + Utwórz wyzwalacze synchronizacji + Może być użyty do ustawiania wyzwalaczy synchronizacji + Synchronizuj przy przeczytaniu rozdziału + Synchronizuj przy otwarciu rozdziału + Synchronizuj na widoku odcinka + Synchronizuj na otwartym odcinku + Synchronizacja przy starcie aplikacji + Synchronizacja przy Wznawianiu aplikacji + Synchronizuj bibliotekę + Odśwież stronę rozszerzenia, aby zaktualizować listę. + Pasek nawigacyjny + Pokaż aktualizacje w nav + Pokaż historię w nav + Zawsze pokazuj etykiety nawigacyjne + Wybierz tracker + Wpis nie jest śledzony. + Wypełnij z trackera + diff --git a/i18n-tail/src/commonMain/moko-resources/pt/strings.xml b/i18n-tail/src/commonMain/moko-resources/pt/strings.xml new file mode 100644 index 0000000000..34a0afe448 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/pt/strings.xml @@ -0,0 +1,149 @@ + + + Status do rastreamento + Etiquetas + Ungrouped + Não controlado + grupo + Biblioteca de Anime - atualizações das categorias dinâmicas + Biblioteca de Manga atualizações das categorias dinâmicas + Sempre iniciar atualizações globais + Lançar atualizações globais apenas para ungrouped, categorias de atualizações para outros + Iniciar atualizações de categoria o tempo todo + Redefinir as Etiquetas + Adicionar Tag + Título: %1$s + Descrição: %1$s + Autor: %1$s + Artista: %1$s + Informação de entrada personalizada + Reset Info + Configurações de transmissão + Habilitar ou desabilitar o elenco + Enviar para elenco + Exibir tamanho do arquivo episódio baixado + Configurações de bifurcação + Editar informações + Serviços Especiais + Conexões + Discord, mais para vir... + Serviços especiais que são exclusivos do Animetail e aprimoram a maneira como você usa o aplicativo + Discord + Este serviço do Discord funciona com registro de tokens. Use por sua conta e risco. Seu token é armazenado localmente e o Animetail não compartilha-o em nenhum outro lugar + Rich Presence do Discord + Mostrar títulos de Episódios/Capítulos + Mostrar o título do episódio/capítulo que você lê + Habilitar o Rich Presence do Discord + Status do Discord + ⛔ Não perturbe + 🌙 Idle + 🟢 Online + RPC Incognito + Modo incógnito do Discord + Substituído quando o Modo Anônimo está ativado + As entradas nas categorias incluídas não serão exibidas no Discord + Navegação + Rolagem através + Envia mensagens com + Vídeo + Quadrinhos + O Amnis Player precisa ser instalado + Preferências do TorrentServer + Porta TorrentServer + Torrent servidor está em execução + Rastreadores de Torrent + Redefinir a string padrão do rastreador do torrent + Valor de pré-carregamento da página + Preservar posição de leitura em entradas de leitura + Leitor Bottom Buttons + Personalizar quais botões aparecem na parte inferior do leitor + Definir a primeira página como capa + Definir a segunda página como capa + Salvar primeira página + Salvar segunda página + Compartilhar primeira página + Compartilhar a segunda página + Salvar página combinada + Compartilhar página combinada + %1$s: %2$s, páginas %3$s + Layout de página + Mover uma página acima de + Páginas duplas + Página única + Automático (com base na orientação) + Ao usar o layout de página automática, você ainda pode alternar entre layouts durante a leitura sem sobrescrever essa configuração + Inverter páginas duplas + Margem do centro + Nenhuma + Adicionar à página dupla + Adicionar à página ampla + Adicionar a ambos + Tipo de margem central + Insira um espaço para acomodar o espaço em dispositivos dobráveis. + Selecionador de Cor Personalizado + Escolha uma cor para o tema personalizado + Tema personalizado + Backup + Sincronizar + Desencadeadores + Manual & backups automáticos e sincronização + A cada 30 minutos + Toda hora + A cada 3 horas + A sincronização da biblioteca falhou + Sincronização da biblioteca completa + Sincronização já está em andamento + Servidor + Digite o endereço do host para sincronizar sua biblioteca + Chave da API + Digite a chave API para sincronizar sua biblioteca + Sincronizar Ações + Sincronizar agora + Confirmação da sincronização + Iniciar sincronização imediata de seus dados + A sincronização sobrescreverá a sua biblioteca local com a biblioteca remota. Tem certeza que deseja continuar? + Serviço + Selecione o serviço para sincronizar a sua biblioteca com + Sincronizar + Sincronização automática + Frequência de sincronização + Escolha o que sincronizar + Última sincronização reset timestamp + SyncYomi + Concluído em %1$s + Última sincronização: %1$s + Google Drive + Iniciar sessão + Login efetuado com sucesso + Falha ao entrar + Autenticação + Limpar dados de sincronização do Google Drive + Sincronizar dados excluídos do Google Drive + Nenhum dado de sincronização encontrado no Google Drive + Erro ao remover dados de sincronização do Google Drive, tente fazer o login novamente. + Conectado ao Google Drive + Falha ao fazer login no Google Drive: %s + Não conectado ao Google Drive + Erro ao carregar dados de sincronização para o Google Drive + Erro ao excluir arquivo de bloqueio do Google Drive + Erro antes da sincronização: %s + Confirmação de limpeza + Limpando a sincronização de dados irá apagar todos os seus dados de sincronização do Google Drive. Tem certeza que deseja continuar? + Criar gatilhos de sincronização + Pode ser usado para definir os gatilhos de sincronização + Sincronização na leitura do capítulo + Sincronização no Capítulo Aberto + Sincronizar ao ver o episódio + Sincronização ao abrir o episódio + Sincronizar ao Iniciar o App + Sincronizar ao Retomar o App + Sincronizar a biblioteca + Atualize a página da extensão para atualizar a lista. + Navbar + Mostrar atualizações na barra de navegação + Mostrar o histórico na navegação + Sempre mostrar rótulos de navegação + Selecione um rastreador + A entrada não está registrada. + Preencher do rastreador + diff --git a/i18n-tail/src/commonMain/moko-resources/ro/strings.xml b/i18n-tail/src/commonMain/moko-resources/ro/strings.xml new file mode 100644 index 0000000000..96564650a7 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/ro/strings.xml @@ -0,0 +1,149 @@ + + + Stare urmărire + Etichete + Ungrouped + Nu sunt urmărite + Grup + Actualizări ale categoriilor dinamice ale bibliotecii Anime + Actualizări ale categoriilor dinamice ale bibliotecii Manga + Lansează întotdeauna actualizări globale + Lansați actualizări globale numai pentru negrupate, actualizări categorii pentru altele + Lansează actualizări ale categoriei tot timpul + Resetare etichete + Adaugă etichetă + Titlu: %1$s + Descriere: %1$s + Autor: %1$s + Artist: %1$s + Informații despre intrare personalizate + Reset Info + Setări de distribuție + Activează sau dezactivează Cast + Trimite în Cast + Arată dimensiunea episodului descărcat + Setări furcă + Editare informaţii + Servicii speciale + Conexiuni + Discord, mai multe de făcut. + Servicii speciale care sunt unice pentru Animetail și îmbunătățesc modul în care utilizați aplicația + Discord + Acest Serviciu Discord funcționează prin înregistrarea simbolurilor. Folosiți pe propriul risc. Jetonul dvs. este stocat local și animetail nu îl partajează nicăieri altundeva + Prezență Discord Rich + Arată Episod / Capitole Titluri + Arată titlul episodului/capitolului pe care îl citești + Activează Discord Rich Presence + Stare Discord + ⛔ Nu deranja + :crescent_lună: Idle + 🟢 Online + RPC Incognito + Modul Incognito Discord + Suprascrie când modul Incognito este activat + Intrările în categoriile incluse nu vor fi afișate în Discord + Navigare + Defilare prin + Mesaje în jur cu + Video + Comă + Amnis Player trebuie să fie instalat + Preferințe TorrentServer + Port TorrentServer + Serverul Torent rulează + Trackeri Torent + Resetează șirul implicit al torentelor + Sumă preîncărcare pagină + Păstrează poziția de citire la citirea intrărilor + Butoane de citire + Personalizați ce butoane apar în partea de jos a cititorului + Setează prima pagină ca copertă + Setează a doua pagină ca copertă + Salvează prima pagină + Salvează a doua pagină + Distribuie prima pagină + Distribuie a doua pagină + Salvează pagina combinată + Distribuie pagina combinată + %1$s: %2$s, pagini %3$s + Aspect pagină + Schimbă o pagină peste + Pagini duble + O singură pagină + Automat (pe baza orientării) + În timp ce utilizați aspectul automat al paginii, încă puteți comuta între layout-uri în timp ce citiți fără a suprascrie această setare + Inversează pagini duble + Marginea centrului + Niciunul + Adaugă la pagina dublă + Adaugă la o pagină largă + Adaugă la ambele + Tip marjă centru + Introduceți spațiul liber pe dispozitivele pliabile. + Selector de culori personalizat + Alege o culoare pentru tema personalizată + Temă personalizată + Backup + Sincronizare + Declanșatori + Manual & Copii de rezervă automate şi sincronizare + La fiecare 30 minute + În fiecare oră + La fiecare 3 ore + Sincronizarea bibliotecii a eșuat + Sincronizarea bibliotecii completă + Sincronizarea este deja în desfășurare + Gazdă + Introduceți adresa gazdei pentru a vă sincroniza biblioteca + Cheie API + Introduceți cheia API pentru a sincroniza biblioteca + Sincronizare acțiuni + Sincronizează acum + Confirmare sincronizare + Inițiază sincronizarea imediată a datelor tale + Sincronizarea îți va suprascrie biblioteca locală cu biblioteca de la distanță. Ești sigur că vrei să continui? + Serviciu + Selectaţi serviciul pentru a sincroniza biblioteca cu + Sincronizare + Sincronizare automată + Frecvența de sincronizare + Alege ce să sincronizezi + Ultima sincronizare a fost resetată + SyncYomi + Adoptată în %1$s + Ultima sincronizare: %1$s + Google Drive + Autentificare + Conectat cu succes + Conectare eșuată + Autentificare + Ștergeți datele de sincronizare de pe Google Drive + Date de sincronizare șterse de pe Google Drive + Nu s-au găsit date de sincronizare în Google Drive + Eroare ștergere date sincronizate din Google Drive, încercați să vă conectați din nou. + Conectat la Google Drive + Conectarea la Google Drive a eșuat: %s + Nu este conectat la Google Drive + Eroare la încărcarea datelor sincronizate în Google Drive + Eroare la ștergerea fișierului Google Drive Lock + Eroare înainte de sincronizare: %s + Confirmare curățare + Curățând sincronizarea datelor va șterge toate datele sincronizate din Google Drive. Sigur doriți să continuați? + Crează declanșatoare de sincronizare + Poate fi folosit pentru a seta declanșatoare sincronizare + Sincronizare pe capitolul Citit + Sincronizare în capitolul deschis + Sincronizare pe Episod văzut + Sincronizare la deschiderea episodului + Sincronizare la pornirea aplicației + Sincronizare în reluarea aplicației + Sincronizează biblioteca + Reîmprospătează pagina extensiei pentru a actualiza lista. + Navbar + Afișare actualizări în navigator + Arată istoricul în navigația + Arată întotdeauna etichetele de navigație + Selectează un tracker + Intrarea nu este urmărită. + Completează de la tracker + diff --git a/i18n-tail/src/commonMain/moko-resources/ru/strings.xml b/i18n-tail/src/commonMain/moko-resources/ru/strings.xml new file mode 100644 index 0000000000..7a9043a36a --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/ru/strings.xml @@ -0,0 +1,149 @@ + + + Статус отслеживания + Теги + Ungrouped + Не отслеживается + Группа + Динамические обновления категорий Аниме Библиотека + Обновления библиотек Manga + Всегда запускать глобальные обновления + Запуск глобальных обновлений только для несгруппированных категорий обновлений + Запуск категории обновлён всё время + Сбросить теги + Добавить тег + Название: %1$s + Описание: %1$s + Автор: %1$s + Художник: %1$s + Дополнительная информация + Reset Info + Настройки отдачи + Включить или отключить Cast + Отправить в Заявку + Показать размер загруженного файла эпизода + Настройки Форка + Изменить информацию + Специальные услуги + Соединения + Discord, придётся больше.. + Специальные услуги, которые уникальны для Animetail и улучшают то, как вы используете приложение + Discord + Эта служба Discord работает через ведение журнала токенов. Используйте на свой страх и риск. Ваш токен хранится локально, а Animetail не делится им в другом месте + Discord Rich Presence + Показать заголовки эпизодов/глав + Показать заголовок эпизода/главы, которую вы читаете + Включить Discord Rich Presence + Статус Discord + ⛔ Не беспокоить + 🌙 бездействие + 🟢 Online + RPC Incognito + Режим инкогнито Discord + Переопределено, когда включен режим инкогнито + Записи в включённых категориях не будут отображаться в Discord + Просмотр + Прокрутка + Общение с + Видео + Комикс + Необходимо установить Amnis Player + Настройки TorrentServer + Порт TorrentServer + Torrent Server запущен + Трекеры торрентов + Восстановить стандартную строку трекеров торрентов + Сумма предварительной нагрузки страницы + Сохранять позицию чтения для прочитанных записей + Кнопки Читателя внизу + Настройка кнопок внизу читателя + Установить обложку первой страницы + Установить обложку второй страницы + Сохранить первую страницу + Сохранить вторую страницу + Поделиться первой страницей + Поделиться второй страницей + Сохранить объединенную страницу + Поделиться комбинированной страницей + %1$s: %2$s, страницы %3$s + Макет страницы + Сдвинуть на одну страницу + Двойные страницы + Одна страница + Автоматически (на основе ориентации) + При использовании автоматического макета страницы вы можете переключаться между раскладками при чтении без переопределения этой настройки + Инвертировать двойные страницы + Отступ по центру + Нет + Добавить на двойную страницу + Добавить на страницу + Добавить в оба + Тип поля по центру + Вставьте прокладку, чтобы разместить свободное пространство на складывающихся устройствах. + Пользовательский выбор цветов + Выберите цвет для пользовательской темы + Пользовательская тема + Резервное копирование + Синхр. + Триггеры + Ручное & автоматическое резервное копирование и синхронизация + Каждые 30 минут + Каждый час + Каждые 3 часа + Не удалось синхронизировать библиотеку + Синхронизация завершена + Синхронизация уже выполняется + Хост + Введите адрес хоста для синхронизации вашей библиотеки + API ключ + Введите API ключ для синхронизации вашей библиотеки + Синхронизация действий + Синхронизировать сейчас + Подтверждение синхронизации + Инициировать немедленную синхронизацию ваших данных + Синхронизация перезапишет вашу локальную библиотеку с удаленной библиотекой. Вы уверены, что хотите продолжить? + Сервис + Выберите службу синхронизации с вашей библиотекой + Синхр. + Автоматическая синхронизация + Частота синхронизации + Выберите, что нужно синхронизировать + Дата последней синхронизации сброса + SyncYomi + Выполнено на %1$s + Последняя синхронизация: %1$s + Google диск + Войти + Вход выполнен успешно + Не удалось войти + Проверка подлинности + Очистить данные синхронизации с Google Drive + Синхронизация данных очищена от Google Drive + В Google Drive нет данных синхронизации + Ошибка очистки данных синхронизации с Google Drive, попробуйте войти снова. + Вход выполнен в Google Drive + Не удалось войти в Google Drive: %s + Вы не вошли в Google Drive + Ошибка при загрузке данных в Google Drive + Ошибка при удалении файла блокировки Google Drive + Ошибка перед синхронизацией: %s + Подтверждение очистки + В процессе синхронизации все данные будут удалены из Google Drive. Вы уверены, что хотите продолжить? + Создать триггеры синхронизации + Может быть использовано для установки триггера синхронизации + Синхронизировать при чтении главы + Синхронизация при открытии главы + Синхронизация при просмотре эпизода + Синхронизация при открытии серии + Синхронизация при запуске приложения + Синхронизация в приложении Резюме + Синхронизировать библиотеку + Обновите страницу расширения для обновления списка. + Панель навигации + Показать обновления в nav + Показать историю в nav + Всегда показывать подписи nav + Выберите трекер + Запись не отслеживается. + Заполнить из трекера + diff --git a/i18n-tail/src/commonMain/moko-resources/sr/strings.xml b/i18n-tail/src/commonMain/moko-resources/sr/strings.xml new file mode 100644 index 0000000000..2b24372963 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/sr/strings.xml @@ -0,0 +1,149 @@ + + + Tracking status + Tags + Ungrouped + Not tracked + Group + Anime Library dynamic category updates + Manga Library dynamic category updates + Always launch global updates + Launch global updates only for ungrouped, category updates for others + Launch category updates all the time + Reset Tags + Add Tag + Title: %1$s + Description: %1$s + Author: %1$s + Artist: %1$s + Custom entry info + Reset Info + Cast Settings + Enable or disable Cast + Send to Cast + Show downloaded episode file size + Fork Settings + Edit info + Special Services + Connections + Discord, more to come.. + Special Services that are unique to Animetail and enhance the way you use the app + Discord + This Discord Service works through token logging. Use at your own risk. Your token is stored locally and Animetail does not share it anywhere else + Discord Rich Presence + Show Episodes/Chapters Titles + Show the title of the episode/chapter you are reading + Enable Discord Rich Presence + Discord Status + ⛔ Do Not Disturb + 🌙 Idle + 🟢 Online + RPC Incognito + Discord Incognito mode + Overridden when Incognito Mode is enabled + Entries in included categories will not be displayed in Discord + Browsing + Scrolling through + Messing around with + Video + Comic + Amnis Player needs to be installed + TorrentServer Preferences + TorrentServer Port + Torrent Server is running + Torrent Trackers + Reset default torrent trackers string + Page preload amount + Preserve reading position on read entries + Reader Bottom Buttons + Customize what buttons appear at the bottom of the reader + Set first page as cover + Set second page as cover + Save first page + Save second page + Share first page + Share second page + Save combined page + Share combined page + %1$s: %2$s, pages %3$s + Page layout + Shift one page over + Double pages + Single page + Automatic (based on orientation) + While using automatic page layout, you can still switch between layouts while reading without overriding this setting + Invert double pages + Center Margin + None + Add to double Page + Add to wide Page + Add to both + Center margin type + Insert spacer to accommodate deadspace on foldable devices. + Custom Color Picker + Pick a color for the custom Theme + Custom Theme + Backup + Sync + Triggers + Manual & automatic backups and sync + Every 30 minutes + Every hour + Every 3 hours + Syncing library failed + Syncing library complete + Sync is already in progress + Host + Enter the host address for synchronizing your library + API key + Enter the API key to synchronize your library + Sync Actions + Sync now + Sync confirmation + Initiate immediate synchronization of your data + Syncing will overwrite your local library with the remote library. Are you sure you want to continue? + Service + Select the service to sync your library with + Sync + Automatic Synchronization + Synchronization frequency + Choose what to sync + Last sync timestamp reset + SyncYomi + Done in %1$s + Last Synchronization: %1$s + Google Drive + Sign in + Signed in successfully + Sign in failed + Authentication + Clear Sync Data from Google Drive + Sync data purged from Google Drive + No sync data found in Google Drive + Error purging sync data from Google Drive, Try to sign in again. + Logged in to Google Drive + Failed to log in to Google Drive: %s + Not signed in to Google Drive + Error uploading sync data to Google Drive + Error Deleting Google Drive Lock File + Error before sync: %s + Purge confirmation + Purging sync data will delete all your sync data from Google Drive. Are you sure you want to continue? + Create sync triggers + Can be used to set sync triggers + Sync on Chapter Read + Sync on Chapter Open + Sync on Episode Seen + Sync on Episode Open + Sync on App Start + Sync on App Resume + Sync library + Refresh extension page to update list. + Navbar + Show updates in the nav + Show history in the nav + Always show nav labels + Select a tracker + Entry is not tracked. + Fill from tracker + diff --git a/i18n-tail/src/commonMain/moko-resources/sv/strings.xml b/i18n-tail/src/commonMain/moko-resources/sv/strings.xml new file mode 100644 index 0000000000..88dae9efd3 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/sv/strings.xml @@ -0,0 +1,149 @@ + + + Spårnings status + Taggar + Ungrouped + Inte spårad + Grupp + Anime Library dynamiska kategoriuppdateringar + Manga Library dynamiska kategoriuppdateringar + Starta alltid globala uppdateringar + Starta globala uppdateringar endast för ogrupperade, kategoriuppdateringar för andra + Starta kategoriuppdateringar hela tiden + Återställ taggar + Lägg till tagg + Titel: %1$s + Beskrivning: %1$s + Författare: %1$s + Konstnär: %1$s + Anpassad post info + Reset Info + Casta inställningar + Aktivera eller inaktivera Cast + Skicka till Cast + Visa hämtade avsnittets filstorlek + Fork Inställningar + Redigera information + Särskilda tjänster + Anslutningar + Discord, mer att komma.. + Specialtjänster som är unika för Animetail och förbättra hur du använder appen + Discord + Denna Discord-tjänst fungerar genom tokenloggning. Använd på egen risk. Din token lagras lokalt och Animetail delar den inte någon annanstans + Discord Rich Presence + Visa avsnitt/kapitel titlar + Visa titeln på avsnittet du läser + Aktivera Discord Rich Presence + Discords status + ⛔ Stör ej + 🌙 Idle + 🟢 Online + RPC Incognito + Discord inkognitoläge + Åsidosätt när inkognitoläge är aktiverat + Poster i inkluderade kategorier kommer inte att visas i Discord + Surfning + Rullar igenom + Ringer runt med + Video + Serie + Amnis Player måste installeras + Inställningar för TorrentServer + TorrentServer Port + Torrent Server körs + Torrent Trackers + Återställ standard torrent trackers sträng + Summa för sidförladdning + Bevara läsposition vid läsposter + Nedre knappar för läsare + Anpassa vilka knappar som visas längst ner på läsaren + Ange första sidan som omslag + Ange andra sidan som omslag + Spara första sidan + Spara andra sidan + Dela första sidan + Dela andra sidan + Spara kombinerad sida + Dela kombinerad sida + %1$s: %2$s, sidor %3$s + Sidans layout + Skifta en sida över + Dubbla sidor + Enda sidan + Automatisk (baserat på orientering) + När du använder automatisk sidlayout, kan du fortfarande växla mellan layouter när du läser utan att åsidosätta denna inställning + Invertera dubbla sidor + Centrera marginal + Ingen + Lägg till dubbel sida + Lägg till i bred sida + Lägg till i båda + Mitten marginaltyp + Infoga distans för att rymma deadspace på vikbara enheter. + Anpassad färgväljare + Välj en färg för det anpassade temat + Anpassat tema + Säkerhetskopiera + Synk + Utlösare + Manuell & automatiska säkerhetskopieringar och synkronisering + Var 30:e minut + Varje timme + Var 3:e timme + Synkronisering av bibliotek misslyckades + Synkronisering av bibliotek slutförd + Synkronisering pågår redan + Värd + Ange värdadressen för att synkronisera ditt bibliotek + API nyckel + Ange API-nyckel för att synkronisera ditt bibliotek + Synkronisera åtgärder + Synkronisera nu + Synkronisera bekräftelse + Initiera omedelbar synkronisering av dina data + Synkronisering kommer att skriva över ditt lokala bibliotek med fjärrbiblioteket. Är du säker på att du vill fortsätta? + Tjänst + Välj tjänsten för att synkronisera ditt bibliotek med + Synk + Automatisk synkronisering + Synkronisering frekvens + Välj vad du ska synkronisera + Senast synkroniserade tidsstämpel återställd + SyncYomi + Klar i %1$s + Senaste synkronisering: %1$s + Google Drive + Logga in + Inloggad framgångsrikt + Inloggning misslyckades + Autentisering + Rensa synkroniseringsdata från Google Drive + Synkroniseringsdata rensas från Google Drive + Inga synkroniseringsdata hittades i Google Drive + Fel vid rensning av synkroniseringsdata från Google Drive, försök att logga in igen. + Inloggad på Google Drive + Det gick inte att logga in på Google Drive: %s + Inte inloggad på Google Drive + Fel vid uppladdning av synkroniseringsdata till Google Drive + Fel vid borttagning av Google Drive Lock fil + Fel före synkronisering: %s + Rensa bekräftelse + Rensning av synkroniseringsdata raderar alla dina synkroniseringsdata från Google Drive. Är du säker på att du vill fortsätta? + Skapa synkroniseringsutlösare + Kan användas för att ställa in synkroniseringsutlösare + Synkronisera på kapitel Läs + Synkronisera på kapitel Öppet + Synkronisera vid episod Sett + Synkronisering vid episod öppen + Synkronisering vid appstart + Synkronisering vid Appens Återupptagande + Synkronisera bibliotek + Uppdatera tilläggssidan för att uppdatera listan. + Navbar + Visa uppdateringar i navigatorn + Visa historik i navigatorn + Visa alltid navigeringsetiketter + Välj en spårare + Inlägget spåras inte. + Fyll från tracker + diff --git a/i18n-tail/src/commonMain/moko-resources/tr/strings.xml b/i18n-tail/src/commonMain/moko-resources/tr/strings.xml new file mode 100644 index 0000000000..2b24372963 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/tr/strings.xml @@ -0,0 +1,149 @@ + + + Tracking status + Tags + Ungrouped + Not tracked + Group + Anime Library dynamic category updates + Manga Library dynamic category updates + Always launch global updates + Launch global updates only for ungrouped, category updates for others + Launch category updates all the time + Reset Tags + Add Tag + Title: %1$s + Description: %1$s + Author: %1$s + Artist: %1$s + Custom entry info + Reset Info + Cast Settings + Enable or disable Cast + Send to Cast + Show downloaded episode file size + Fork Settings + Edit info + Special Services + Connections + Discord, more to come.. + Special Services that are unique to Animetail and enhance the way you use the app + Discord + This Discord Service works through token logging. Use at your own risk. Your token is stored locally and Animetail does not share it anywhere else + Discord Rich Presence + Show Episodes/Chapters Titles + Show the title of the episode/chapter you are reading + Enable Discord Rich Presence + Discord Status + ⛔ Do Not Disturb + 🌙 Idle + 🟢 Online + RPC Incognito + Discord Incognito mode + Overridden when Incognito Mode is enabled + Entries in included categories will not be displayed in Discord + Browsing + Scrolling through + Messing around with + Video + Comic + Amnis Player needs to be installed + TorrentServer Preferences + TorrentServer Port + Torrent Server is running + Torrent Trackers + Reset default torrent trackers string + Page preload amount + Preserve reading position on read entries + Reader Bottom Buttons + Customize what buttons appear at the bottom of the reader + Set first page as cover + Set second page as cover + Save first page + Save second page + Share first page + Share second page + Save combined page + Share combined page + %1$s: %2$s, pages %3$s + Page layout + Shift one page over + Double pages + Single page + Automatic (based on orientation) + While using automatic page layout, you can still switch between layouts while reading without overriding this setting + Invert double pages + Center Margin + None + Add to double Page + Add to wide Page + Add to both + Center margin type + Insert spacer to accommodate deadspace on foldable devices. + Custom Color Picker + Pick a color for the custom Theme + Custom Theme + Backup + Sync + Triggers + Manual & automatic backups and sync + Every 30 minutes + Every hour + Every 3 hours + Syncing library failed + Syncing library complete + Sync is already in progress + Host + Enter the host address for synchronizing your library + API key + Enter the API key to synchronize your library + Sync Actions + Sync now + Sync confirmation + Initiate immediate synchronization of your data + Syncing will overwrite your local library with the remote library. Are you sure you want to continue? + Service + Select the service to sync your library with + Sync + Automatic Synchronization + Synchronization frequency + Choose what to sync + Last sync timestamp reset + SyncYomi + Done in %1$s + Last Synchronization: %1$s + Google Drive + Sign in + Signed in successfully + Sign in failed + Authentication + Clear Sync Data from Google Drive + Sync data purged from Google Drive + No sync data found in Google Drive + Error purging sync data from Google Drive, Try to sign in again. + Logged in to Google Drive + Failed to log in to Google Drive: %s + Not signed in to Google Drive + Error uploading sync data to Google Drive + Error Deleting Google Drive Lock File + Error before sync: %s + Purge confirmation + Purging sync data will delete all your sync data from Google Drive. Are you sure you want to continue? + Create sync triggers + Can be used to set sync triggers + Sync on Chapter Read + Sync on Chapter Open + Sync on Episode Seen + Sync on Episode Open + Sync on App Start + Sync on App Resume + Sync library + Refresh extension page to update list. + Navbar + Show updates in the nav + Show history in the nav + Always show nav labels + Select a tracker + Entry is not tracked. + Fill from tracker + diff --git a/i18n-tail/src/commonMain/moko-resources/uk/strings.xml b/i18n-tail/src/commonMain/moko-resources/uk/strings.xml new file mode 100644 index 0000000000..612b7e259f --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/uk/strings.xml @@ -0,0 +1,149 @@ + + + Статус відстеження + Мітки + Ungrouped + Без відстеження + Група + Аніме оновлення динамічної бібліотеки + Оновлення динамічної категорії бібліотеки Манга + Завжди запускати глобальні оновлення + Запустити глобальні оновлення тільки для негрупих, оновлень категорій для інших + Завантажувати оновлення категорії весь час + Скинути мітки + Добавити теґ + Title: %1$s + Description: %1$s + Автор: %1$s + Artist: %1$s + Додаткова інформація + Reset Info + Налаштування трансляції + Увімкнути або вимкнути Cast + Відправити в Cast + Показати завантажену серію розмір файлу + Налаштування Форка + Редагувати інформацію + Спеціальні послуги + З\'єднання + Discord, ще більше... + Спеціальні послуги, які унікальні для Animetail та підвищують спосіб використання додатку + Discord + Цей сервіс Discord працює з використанням протоколу жетонів. Використовуйте на ваш власний ризик. Ваш токен зберігається в місцевому та аніметрі не поширює його більше ніде + Rich Presence Discord + Показати заголовки епізодів/Розділів + Показувати назву епізоду/розділу, який ви читаєте + Увімкнути Rich Presence в Discord + Статус Discord + ⛔ Не турбувати + 🌙 Очікування + 🟢 Online + RPC Incognito + Режим інкогніто Discord + Перезаписувати, коли ввімкнено режим інкогніто + Категорії у базі даних не будуть відображатися в Discord + Перегляд + Прокрутка + Обмін інформацією з + Відео + Комікс + Для роботи Amnis Player потрібно встановити + Налаштування сервера TorrentServer + Порт TorrentServer + Torrent Server працює + Відслідковування торенту + Скинути рядок торрент трекерів за замовчуванням + Попередня сума завантаження сторінки + Зберегти позицію зчитування під час читання + Читач Кнопки внизу + Налаштуйте, які кнопки з’являються внизу читача + Встановити першу сторінку як обкладинку + Вказати другу сторінку як обкладинку + Зберегти першу сторінку + Зберегти другу сторінку + Поділитися першою сторінкою + Поділитися другою сторінкою + Зберегти комбіновану сторінку + Поділитися комбінованою сторінкою + %1$s: %2$s, сторінки %3$s + Сторінка + Пересунути на одну сторінку більше + Подвійні сторінки + Одна сторінка + Автоматично (в залежності від орієнтації) + Під час використання автоматичного макету сторінки ви можете переключитися між макетами під час читання без зміни цього налаштування + Інвертувати подвійні сторінки + Центральне поле + Без ефекту + Додати на подвійну сторінку + Додати на всю сторінку + Додати до обох + Тип центру + Вставте пробіл для розміщення у згорнутому вигляді кінцевого простору на пристроях. + Палітра кольорів + Вибрати колір для власної теми + Задана тема + Резервне копіювання + Синхр + Тріггери + Ручне & автоматичне резервне копіювання і синхронізації + Кожні 30 хвилин + Кожну годину + Кожні 3 години + Не вдалося синхронізувати бібліотеку + Синхронізація бібліотеки завершено + Синхронізація наразі триває + Хост + Введіть адресу хоста для синхронізації вашої бібліотеки + API ключ + Введіть ключ API для синхронізації вашої бібліотеки + Синхронізація дій + Синхронізувати зараз + Підтвердження синхронізації + Початкова негайна синхронізація ваших даних + Синхронізація перезапише вашу локальну бібліотеку з віддаленою бібліотекою. Справді продовжити? + Послуга + Виберіть сервіс для синхронізації бібліотеки з + Синхр + Автоматична синхронізація + Частота синхронізації + Виберіть, що потрібно синхронізувати + Час останньої синхронізації скинуто + SyncYomi + Готово в %1$s + Last Synchronization: %1$s + Диск Google + Увійти + Ви успішно увійшли + Помилка під час входу + Автентифікація + Очистити дані синхронізації з диску Google + Синхронізацію даних очищено з Google Drive + В Google Диску не знайдено даних синхронізації + Помилка очищення даних синхронізації з Google Drive, спробуйте ввійти знову. + Увійти до Диска Google + Не вдалося увійти в Google Driv: %s + Не ввійшли до Google Drive + Помилка завантаження даних синхронізації на Google Drive + Помилка видалення файлу блокування Google Drive + Error before sync: %s + Підтвердження видалення + Вилучення даних синхронізації видалить всі ваші дані синхронізації з Google Drive. Ви впевнені, що хочете продовжити? + Створити тригери синхронізації + Може бути використаний для встановлення тригерів синхронізації + Синхронізація прочитаних + Синхронізувати на Open Главі + Синхронізація через пробутий епізод + Синхронізація при відкритті Епізод + Синхронізація при запуску додатку + Синхронізувати в резюме програми + Синхронізація бібліотеки + Оновити сторінку розширення для оновлення списку. + Навігаційна панель + Показувати оновлення в наv + Показати історію в наv + Завжди відображати напроти міток + Вибрати трекер + Запис не відстежується. + Заповнити з трекера + diff --git a/i18n-tail/src/commonMain/moko-resources/vi/strings.xml b/i18n-tail/src/commonMain/moko-resources/vi/strings.xml new file mode 100644 index 0000000000..2b24372963 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/vi/strings.xml @@ -0,0 +1,149 @@ + + + Tracking status + Tags + Ungrouped + Not tracked + Group + Anime Library dynamic category updates + Manga Library dynamic category updates + Always launch global updates + Launch global updates only for ungrouped, category updates for others + Launch category updates all the time + Reset Tags + Add Tag + Title: %1$s + Description: %1$s + Author: %1$s + Artist: %1$s + Custom entry info + Reset Info + Cast Settings + Enable or disable Cast + Send to Cast + Show downloaded episode file size + Fork Settings + Edit info + Special Services + Connections + Discord, more to come.. + Special Services that are unique to Animetail and enhance the way you use the app + Discord + This Discord Service works through token logging. Use at your own risk. Your token is stored locally and Animetail does not share it anywhere else + Discord Rich Presence + Show Episodes/Chapters Titles + Show the title of the episode/chapter you are reading + Enable Discord Rich Presence + Discord Status + ⛔ Do Not Disturb + 🌙 Idle + 🟢 Online + RPC Incognito + Discord Incognito mode + Overridden when Incognito Mode is enabled + Entries in included categories will not be displayed in Discord + Browsing + Scrolling through + Messing around with + Video + Comic + Amnis Player needs to be installed + TorrentServer Preferences + TorrentServer Port + Torrent Server is running + Torrent Trackers + Reset default torrent trackers string + Page preload amount + Preserve reading position on read entries + Reader Bottom Buttons + Customize what buttons appear at the bottom of the reader + Set first page as cover + Set second page as cover + Save first page + Save second page + Share first page + Share second page + Save combined page + Share combined page + %1$s: %2$s, pages %3$s + Page layout + Shift one page over + Double pages + Single page + Automatic (based on orientation) + While using automatic page layout, you can still switch between layouts while reading without overriding this setting + Invert double pages + Center Margin + None + Add to double Page + Add to wide Page + Add to both + Center margin type + Insert spacer to accommodate deadspace on foldable devices. + Custom Color Picker + Pick a color for the custom Theme + Custom Theme + Backup + Sync + Triggers + Manual & automatic backups and sync + Every 30 minutes + Every hour + Every 3 hours + Syncing library failed + Syncing library complete + Sync is already in progress + Host + Enter the host address for synchronizing your library + API key + Enter the API key to synchronize your library + Sync Actions + Sync now + Sync confirmation + Initiate immediate synchronization of your data + Syncing will overwrite your local library with the remote library. Are you sure you want to continue? + Service + Select the service to sync your library with + Sync + Automatic Synchronization + Synchronization frequency + Choose what to sync + Last sync timestamp reset + SyncYomi + Done in %1$s + Last Synchronization: %1$s + Google Drive + Sign in + Signed in successfully + Sign in failed + Authentication + Clear Sync Data from Google Drive + Sync data purged from Google Drive + No sync data found in Google Drive + Error purging sync data from Google Drive, Try to sign in again. + Logged in to Google Drive + Failed to log in to Google Drive: %s + Not signed in to Google Drive + Error uploading sync data to Google Drive + Error Deleting Google Drive Lock File + Error before sync: %s + Purge confirmation + Purging sync data will delete all your sync data from Google Drive. Are you sure you want to continue? + Create sync triggers + Can be used to set sync triggers + Sync on Chapter Read + Sync on Chapter Open + Sync on Episode Seen + Sync on Episode Open + Sync on App Start + Sync on App Resume + Sync library + Refresh extension page to update list. + Navbar + Show updates in the nav + Show history in the nav + Always show nav labels + Select a tracker + Entry is not tracked. + Fill from tracker + diff --git a/i18n-tail/src/commonMain/moko-resources/zh/strings.xml b/i18n-tail/src/commonMain/moko-resources/zh/strings.xml new file mode 100644 index 0000000000..2b24372963 --- /dev/null +++ b/i18n-tail/src/commonMain/moko-resources/zh/strings.xml @@ -0,0 +1,149 @@ + + + Tracking status + Tags + Ungrouped + Not tracked + Group + Anime Library dynamic category updates + Manga Library dynamic category updates + Always launch global updates + Launch global updates only for ungrouped, category updates for others + Launch category updates all the time + Reset Tags + Add Tag + Title: %1$s + Description: %1$s + Author: %1$s + Artist: %1$s + Custom entry info + Reset Info + Cast Settings + Enable or disable Cast + Send to Cast + Show downloaded episode file size + Fork Settings + Edit info + Special Services + Connections + Discord, more to come.. + Special Services that are unique to Animetail and enhance the way you use the app + Discord + This Discord Service works through token logging. Use at your own risk. Your token is stored locally and Animetail does not share it anywhere else + Discord Rich Presence + Show Episodes/Chapters Titles + Show the title of the episode/chapter you are reading + Enable Discord Rich Presence + Discord Status + ⛔ Do Not Disturb + 🌙 Idle + 🟢 Online + RPC Incognito + Discord Incognito mode + Overridden when Incognito Mode is enabled + Entries in included categories will not be displayed in Discord + Browsing + Scrolling through + Messing around with + Video + Comic + Amnis Player needs to be installed + TorrentServer Preferences + TorrentServer Port + Torrent Server is running + Torrent Trackers + Reset default torrent trackers string + Page preload amount + Preserve reading position on read entries + Reader Bottom Buttons + Customize what buttons appear at the bottom of the reader + Set first page as cover + Set second page as cover + Save first page + Save second page + Share first page + Share second page + Save combined page + Share combined page + %1$s: %2$s, pages %3$s + Page layout + Shift one page over + Double pages + Single page + Automatic (based on orientation) + While using automatic page layout, you can still switch between layouts while reading without overriding this setting + Invert double pages + Center Margin + None + Add to double Page + Add to wide Page + Add to both + Center margin type + Insert spacer to accommodate deadspace on foldable devices. + Custom Color Picker + Pick a color for the custom Theme + Custom Theme + Backup + Sync + Triggers + Manual & automatic backups and sync + Every 30 minutes + Every hour + Every 3 hours + Syncing library failed + Syncing library complete + Sync is already in progress + Host + Enter the host address for synchronizing your library + API key + Enter the API key to synchronize your library + Sync Actions + Sync now + Sync confirmation + Initiate immediate synchronization of your data + Syncing will overwrite your local library with the remote library. Are you sure you want to continue? + Service + Select the service to sync your library with + Sync + Automatic Synchronization + Synchronization frequency + Choose what to sync + Last sync timestamp reset + SyncYomi + Done in %1$s + Last Synchronization: %1$s + Google Drive + Sign in + Signed in successfully + Sign in failed + Authentication + Clear Sync Data from Google Drive + Sync data purged from Google Drive + No sync data found in Google Drive + Error purging sync data from Google Drive, Try to sign in again. + Logged in to Google Drive + Failed to log in to Google Drive: %s + Not signed in to Google Drive + Error uploading sync data to Google Drive + Error Deleting Google Drive Lock File + Error before sync: %s + Purge confirmation + Purging sync data will delete all your sync data from Google Drive. Are you sure you want to continue? + Create sync triggers + Can be used to set sync triggers + Sync on Chapter Read + Sync on Chapter Open + Sync on Episode Seen + Sync on Episode Open + Sync on App Start + Sync on App Resume + Sync library + Refresh extension page to update list. + Navbar + Show updates in the nav + Show history in the nav + Always show nav labels + Select a tracker + Entry is not tracked. + Fill from tracker + diff --git a/i18n/build.gradle.kts b/i18n/build.gradle.kts index 09dff6452a..82b11658d5 100644 --- a/i18n/build.gradle.kts +++ b/i18n/build.gradle.kts @@ -1,11 +1,12 @@ import mihon.buildlogic.generatedBuildDir import mihon.buildlogic.tasks.getLocalesConfigTask -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi plugins { id("mihon.library") kotlin("multiplatform") alias(libs.plugins.moko) + id("com.github.ben-manes.versions") } kotlin { @@ -20,6 +21,11 @@ kotlin { } } } + + @OptIn(ExperimentalKotlinGradlePluginApi::class) + compilerOptions { + freeCompilerArgs.add("-Xexpect-actual-classes") + } } val generatedAndroidResourceDir = generatedBuildDir.resolve("android/res") @@ -49,12 +55,4 @@ tasks { preBuild { dependsOn(localesConfigTask) } - - withType { - compilerOptions.freeCompilerArgs.addAll( - listOf( - "-Xexpect-actual-classes", - ), - ) - } } diff --git a/presentation-core/build.gradle.kts b/presentation-core/build.gradle.kts index ea2710cc44..536cc71d9a 100644 --- a/presentation-core/build.gradle.kts +++ b/presentation-core/build.gradle.kts @@ -16,6 +16,9 @@ android { dependencies { api(projects.core.common) api(projects.i18n) + // TAIL --> + api(projects.i18nTail) + // TAIL <-- // Compose implementation(compose.activity) diff --git a/settings.gradle.kts b/settings.gradle.kts index 6dd68f81f3..86aa0d5241 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -45,6 +45,9 @@ include(":core:common") include(":data") include(":domain") include(":i18n") +// TAIL --> +include(":i18n-tail") +// TAIL <-- include(":macrobenchmark") include(":presentation-core") include(":presentation-widget") diff --git a/source-api/build.gradle.kts b/source-api/build.gradle.kts index 284a30d1e7..2a516289a1 100644 --- a/source-api/build.gradle.kts +++ b/source-api/build.gradle.kts @@ -2,6 +2,7 @@ plugins { id("mihon.library") kotlin("multiplatform") kotlin("plugin.serialization") + id("com.github.ben-manes.versions") } kotlin { @@ -13,7 +14,9 @@ kotlin { api(libs.injekt) api(libs.rxjava) api(libs.jsoup) - + // TAIL + api(projects.i18nTail) + // TAIL implementation(project.dependencies.platform(compose.bom)) implementation(compose.runtime) } diff --git a/source-local/build.gradle.kts b/source-local/build.gradle.kts index 06e08cd452..1af6d3f0cc 100644 --- a/source-local/build.gradle.kts +++ b/source-local/build.gradle.kts @@ -10,7 +10,9 @@ kotlin { dependencies { implementation(projects.sourceApi) api(projects.i18n) - + // TAIL --> + api(projects.i18nTail) + // TAIL <-- implementation(libs.unifile) } }