From 824d5e22bc35a9b511929be21ffbc85b734e5fcd Mon Sep 17 00:00:00 2001 From: stevenyomi <95685115+stevenyomi@users.noreply.github.com> Date: Fri, 21 Oct 2022 05:48:13 +0800 Subject: [PATCH] Clean up strings and resources (#8253) * Clean up strings and resources * fix pringle's typo * restore catching file pick errors * add back file chooser title * revert #7740 and remove try-catch of chooser-wrapped intent * swap xmlns lines * swap xml tools lines --- .../browse/MigrateSourceScreen.kt | 2 +- .../manga/components/MangaInfoHeader.kt | 8 ++-- .../settings/screen/SettingsBackupScreen.kt | 43 ++++++++++++++---- .../settings/screen/SettingsDownloadScreen.kt | 6 +-- .../settings/screen/SettingsReaderScreen.kt | 23 ++++++++++ .../ui/download/DownloadController.kt | 1 - .../tachiyomi/ui/library/LibraryController.kt | 2 +- .../ui/manga/info/MangaFullCoverDialog.kt | 9 ++-- .../color-night-v31/text_primary_monet.xml | 5 --- .../color-night-v31/text_secondary_monet.xml | 5 --- .../main/res/color-v31/text_primary_monet.xml | 5 --- .../res/color-v31/text_secondary_monet.xml | 5 --- .../main/res/color/button_action_selector.xml | 5 --- .../res/color/library_item_foreground.xml | 5 --- .../sc_collections_bookmark_48dp.xml | 4 +- .../main/res/drawable-v26/sc_explore_48dp.xml | 4 +- .../main/res/drawable-v26/sc_history_48dp.xml | 4 +- .../res/drawable-v26/sc_new_releases_48dp.xml | 4 +- .../main/res/drawable/card_gradient_shape.xml | 13 ------ .../main/res/drawable/ic_filter_list_24dp.xml | 9 ---- app/src/main/res/drawable/ic_help_24dp.xml | 9 ---- .../res/drawable/ic_status_completed_24dp.xml | 9 ---- .../res/drawable/ic_status_licensed_24dp.xml | 9 ---- .../res/drawable/ic_status_ongoing_24dp.xml | 9 ---- .../res/drawable/ic_status_unknown_24dp.xml | 9 ---- .../library_item_selector_overlay.xml | 10 ----- .../list_item_selector_background.xml | 19 -------- .../drawable/sc_collections_bookmark_48dp.xml | 2 + app/src/main/res/drawable/sc_explore_48dp.xml | 2 + app/src/main/res/drawable/sc_history_48dp.xml | 2 + .../res/drawable/sc_new_releases_48dp.xml | 2 + .../main/res/layout/dialog_stub_textinput.xml | 19 -------- app/src/main/res/layout/pager_controller.xml | 5 --- app/src/main/res/menu/download_queue.xml | 44 ------------------- i18n/src/main/res/values/strings.xml | 23 ++++------ 35 files changed, 100 insertions(+), 235 deletions(-) delete mode 100644 app/src/main/res/color-night-v31/text_primary_monet.xml delete mode 100644 app/src/main/res/color-night-v31/text_secondary_monet.xml delete mode 100644 app/src/main/res/color-v31/text_primary_monet.xml delete mode 100644 app/src/main/res/color-v31/text_secondary_monet.xml delete mode 100644 app/src/main/res/color/button_action_selector.xml delete mode 100644 app/src/main/res/color/library_item_foreground.xml delete mode 100644 app/src/main/res/drawable/card_gradient_shape.xml delete mode 100644 app/src/main/res/drawable/ic_filter_list_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_help_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_status_completed_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_status_licensed_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_status_ongoing_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_status_unknown_24dp.xml delete mode 100644 app/src/main/res/drawable/library_item_selector_overlay.xml delete mode 100644 app/src/main/res/drawable/list_item_selector_background.xml delete mode 100644 app/src/main/res/layout/dialog_stub_textinput.xml delete mode 100644 app/src/main/res/layout/pager_controller.xml delete mode 100644 app/src/main/res/menu/download_queue.xml diff --git a/app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt index 7ad8a87d9..6857ba2a0 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt @@ -102,7 +102,7 @@ private fun MigrateSourceList( IconButton(onClick = onToggleSortingMode) { when (sortingMode) { SetMigrateSorting.Mode.ALPHABETICAL -> Icon(Icons.Outlined.SortByAlpha, contentDescription = stringResource(R.string.action_sort_alpha)) - SetMigrateSorting.Mode.TOTAL -> Icon(Icons.Outlined.Numbers, contentDescription = stringResource(R.string.action_sort_total)) + SetMigrateSorting.Mode.TOTAL -> Icon(Icons.Outlined.Numbers, contentDescription = stringResource(R.string.action_sort_count)) } } IconButton(onClick = onToggleSortingDirection) { diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt b/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt index 9357d6c27..b1a2eca4e 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt @@ -292,11 +292,12 @@ private fun MangaAndSourceTitlesLarge( MangaCover.Book( modifier = Modifier.fillMaxWidth(0.65f), data = coverDataProvider(), + contentDescription = stringResource(R.string.manga_cover), onClick = onCoverClick, ) Spacer(modifier = Modifier.height(16.dp)) Text( - text = title.takeIf { it.isNotBlank() } ?: stringResource(R.string.unknown), + text = title.ifBlank { stringResource(R.string.unknown_title) }, style = MaterialTheme.typography.titleLarge, modifier = Modifier.clickableNoIndication( onLongClick = { if (title.isNotBlank()) context.copyToClipboard(title, title) }, @@ -419,11 +420,12 @@ private fun MangaAndSourceTitlesSmall( .sizeIn(maxWidth = 100.dp) .align(Alignment.Top), data = coverDataProvider(), + contentDescription = stringResource(R.string.manga_cover), onClick = onCoverClick, ) Column(modifier = Modifier.padding(start = 16.dp)) { Text( - text = title.ifBlank { stringResource(R.string.unknown) }, + text = title.ifBlank { stringResource(R.string.unknown_title) }, style = MaterialTheme.typography.titleLarge, modifier = Modifier.clickableNoIndication( onLongClick = { @@ -583,7 +585,7 @@ private fun MangaSummary( val image = AnimatedImageVector.animatedVectorResource(R.drawable.anim_caret_down) Icon( painter = rememberAnimatedVectorPainter(image, !expanded), - contentDescription = null, + contentDescription = stringResource(if (expanded) R.string.manga_info_collapse else R.string.manga_info_expand), tint = MaterialTheme.colorScheme.onBackground, modifier = Modifier.background(Brush.radialGradient(colors = colors.asReversed())), ) diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBackupScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBackupScreen.kt index 73372ff6d..9f540cb17 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBackupScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBackupScreen.kt @@ -1,6 +1,8 @@ package eu.kanade.presentation.more.settings.screen import android.Manifest +import android.content.ActivityNotFoundException +import android.content.Context import android.content.Intent import android.net.Uri import android.widget.Toast @@ -111,7 +113,12 @@ class SettingsBackupScreen : SearchableSettings { onConfirm = { showCreateDialog = false flag = it - chooseBackupDir.launch(Backup.getBackupFilename()) + try { + chooseBackupDir.launch(Backup.getBackupFilename()) + } catch (e: ActivityNotFoundException) { + flag = 0 + context.toast(R.string.file_picker_error) + } }, onDismissRequest = { showCreateDialog = false }, ) @@ -260,12 +267,16 @@ class SettingsBackupScreen : SearchableSettings { onDismissRequest = onDismissRequest, title = { Text(text = stringResource(R.string.pref_restore_backup)) }, text = { - var msg = stringResource(R.string.backup_restore_content_full) - if (err.sources.isNotEmpty()) { - msg += "\n\n${stringResource(R.string.backup_restore_missing_sources)}\n${err.sources.joinToString("\n") { "- $it" }}" - } - if (err.sources.isNotEmpty()) { - msg += "\n\n${stringResource(R.string.backup_restore_missing_trackers)}\n${err.trackers.joinToString("\n") { "- $it" }}" + val msg = buildString { + append(stringResource(R.string.backup_restore_content_full)) + if (err.sources.isNotEmpty()) { + append("\n\n").append(stringResource(R.string.backup_restore_missing_sources)) + err.sources.joinTo(this, separator = "\n- ", prefix = "\n- ") + } + if (err.trackers.isNotEmpty()) { + append("\n\n").append(stringResource(R.string.backup_restore_missing_trackers)) + err.trackers.joinTo(this, separator = "\n- ", prefix = "\n- ") + } } Text(text = msg) }, @@ -285,7 +296,14 @@ class SettingsBackupScreen : SearchableSettings { } } - val chooseBackup = rememberLauncherForActivityResult(ActivityResultContracts.GetContent()) { + val chooseBackup = rememberLauncherForActivityResult( + object : ActivityResultContracts.GetContent() { + override fun createIntent(context: Context, input: String): Intent { + val intent = super.createIntent(context, input) + return Intent.createChooser(intent, context.getString(R.string.file_select_backup)) + } + }, + ) { if (it != null) { val results = try { BackupFileValidator().validate(context, it) @@ -311,6 +329,7 @@ class SettingsBackupScreen : SearchableSettings { if (DeviceUtil.isMiui && DeviceUtil.isMiuiOptimizationDisabled()) { context.toast(R.string.restore_miui_warning, Toast.LENGTH_LONG) } + // no need to catch because it's wrapped with a chooser chooseBackup.launch("*/*") } else { context.toast(R.string.restore_in_progress) @@ -363,7 +382,13 @@ class SettingsBackupScreen : SearchableSettings { subtitle = remember(backupDir) { UniFile.fromUri(context, backupDir.toUri()).filePath!! + "/automatic" }, - onClick = { pickBackupLocation.launch(null) }, + onClick = { + try { + pickBackupLocation.launch(null) + } catch (e: ActivityNotFoundException) { + context.toast(R.string.file_picker_error) + } + }, ), Preference.PreferenceItem.ListPreference( pref = backupPreferences.numberOfBackups(), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt index 8a6e5a89a..cfd281846 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt @@ -65,7 +65,7 @@ class SettingsDownloadScreen : SearchableSettings { downloadPreferences = downloadPreferences, categories = allCategories, ), - getDownloadNewChaptersGroup( + getAutoDownloadGroup( downloadPreferences = downloadPreferences, allCategories = allCategories, ), @@ -196,7 +196,7 @@ class SettingsDownloadScreen : SearchableSettings { } @Composable - private fun getDownloadNewChaptersGroup( + private fun getAutoDownloadGroup( downloadPreferences: DownloadPreferences, allCategories: List, ): Preference.PreferenceGroup { @@ -227,7 +227,7 @@ class SettingsDownloadScreen : SearchableSettings { } return Preference.PreferenceGroup( - title = stringResource(R.string.pref_download_new), + title = stringResource(R.string.pref_category_auto_download), preferenceItems = listOf( Preference.PreferenceItem.SwitchPreference( pref = downloadNewChaptersPref, 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 4e1d1bf30..d49b4f21a 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 @@ -67,6 +67,7 @@ class SettingsReaderScreen : SearchableSettings { title = stringResource(R.string.pref_page_transitions), ), getDisplayGroup(readerPreferences = readerPref), + getReadingGroup(readerPreferences = readerPref), getPagedGroup(readerPreferences = readerPref), getWebtoonGroup(readerPreferences = readerPref), getNavigationGroup(readerPreferences = readerPref), @@ -120,6 +121,27 @@ class SettingsReaderScreen : SearchableSettings { ) } + @Composable + private fun getReadingGroup(readerPreferences: ReaderPreferences): Preference.PreferenceGroup { + return Preference.PreferenceGroup( + title = stringResource(R.string.pref_category_reading), + preferenceItems = listOf( + Preference.PreferenceItem.SwitchPreference( + pref = readerPreferences.skipRead(), + title = stringResource(R.string.pref_skip_read_chapters), + ), + Preference.PreferenceItem.SwitchPreference( + pref = readerPreferences.skipFiltered(), + title = stringResource(R.string.pref_skip_filtered_chapters), + ), + Preference.PreferenceItem.SwitchPreference( + pref = readerPreferences.alwaysShowChapterTransition(), + title = stringResource(R.string.pref_always_show_chapter_transition), + ), + ), + ) + } + @Composable private fun getPagedGroup(readerPreferences: ReaderPreferences): Preference.PreferenceGroup { val navModePref = readerPreferences.navigationModePager() @@ -308,6 +330,7 @@ class SettingsReaderScreen : SearchableSettings { Preference.PreferenceItem.SwitchPreference( pref = readerPreferences.folderPerManga(), title = stringResource(R.string.pref_create_folder_per_manga), + subtitle = stringResource(R.string.pref_create_folder_per_manga_summary), ), ), ) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt index 4da7375e2..832a6ef02 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt @@ -70,7 +70,6 @@ import kotlin.math.roundToInt /** * Controller that shows the currently active downloads. - * Uses R.layout.fragment_download_queue. */ class DownloadController : FullComposeController(), diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index 50bce4558..f49229f70 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -56,7 +56,7 @@ class LibraryController( onClickFilter = ::showSettingsSheet, onClickRefresh = { val started = LibraryUpdateService.start(context, it) - context.toast(if (started) R.string.updating_library else R.string.update_already_running) + context.toast(if (started) R.string.updating_category else R.string.update_already_running) started }, onClickInvertSelection = { presenter.invertSelection(presenter.activeCategory) }, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaFullCoverDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaFullCoverDialog.kt index 8c7aac380..5023d47f7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaFullCoverDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaFullCoverDialog.kt @@ -6,8 +6,6 @@ import android.content.Intent import android.graphics.drawable.BitmapDrawable import android.net.Uri import android.os.Bundle -import androidx.activity.result.PickVisualMediaRequest -import androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.remember @@ -88,7 +86,7 @@ class MangaFullCoverDialog : FullComposeController { + // This will open new Photo Picker eventually. + // See https://github.com/tachiyomiorg/tachiyomi/pull/8253#issuecomment-1285747310 + val intent = Intent(Intent.ACTION_GET_CONTENT).apply { type = "image/*" } startActivityForResult( - PickVisualMedia().createIntent(activity!!, PickVisualMediaRequest(PickVisualMedia.ImageOnly)), + Intent.createChooser(intent, resources?.getString(R.string.file_select_cover)), REQUEST_IMAGE_OPEN, ) } diff --git a/app/src/main/res/color-night-v31/text_primary_monet.xml b/app/src/main/res/color-night-v31/text_primary_monet.xml deleted file mode 100644 index 97887072c..000000000 --- a/app/src/main/res/color-night-v31/text_primary_monet.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/src/main/res/color-night-v31/text_secondary_monet.xml b/app/src/main/res/color-night-v31/text_secondary_monet.xml deleted file mode 100644 index 532e203af..000000000 --- a/app/src/main/res/color-night-v31/text_secondary_monet.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/src/main/res/color-v31/text_primary_monet.xml b/app/src/main/res/color-v31/text_primary_monet.xml deleted file mode 100644 index 21d75f623..000000000 --- a/app/src/main/res/color-v31/text_primary_monet.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/src/main/res/color-v31/text_secondary_monet.xml b/app/src/main/res/color-v31/text_secondary_monet.xml deleted file mode 100644 index bd555089a..000000000 --- a/app/src/main/res/color-v31/text_secondary_monet.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/src/main/res/color/button_action_selector.xml b/app/src/main/res/color/button_action_selector.xml deleted file mode 100644 index f8e88896b..000000000 --- a/app/src/main/res/color/button_action_selector.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/src/main/res/color/library_item_foreground.xml b/app/src/main/res/color/library_item_foreground.xml deleted file mode 100644 index 0a0a946f1..000000000 --- a/app/src/main/res/color/library_item_foreground.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable-v26/sc_collections_bookmark_48dp.xml b/app/src/main/res/drawable-v26/sc_collections_bookmark_48dp.xml index e7cfad267..44e525ef6 100644 --- a/app/src/main/res/drawable-v26/sc_collections_bookmark_48dp.xml +++ b/app/src/main/res/drawable-v26/sc_collections_bookmark_48dp.xml @@ -1,5 +1,7 @@ - + - + - + - + - - - - - - diff --git a/app/src/main/res/drawable/ic_filter_list_24dp.xml b/app/src/main/res/drawable/ic_filter_list_24dp.xml deleted file mode 100644 index 781d5fb65..000000000 --- a/app/src/main/res/drawable/ic_filter_list_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_help_24dp.xml b/app/src/main/res/drawable/ic_help_24dp.xml deleted file mode 100644 index 1970dfab8..000000000 --- a/app/src/main/res/drawable/ic_help_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_status_completed_24dp.xml b/app/src/main/res/drawable/ic_status_completed_24dp.xml deleted file mode 100644 index 2e2413479..000000000 --- a/app/src/main/res/drawable/ic_status_completed_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_status_licensed_24dp.xml b/app/src/main/res/drawable/ic_status_licensed_24dp.xml deleted file mode 100644 index ba6217217..000000000 --- a/app/src/main/res/drawable/ic_status_licensed_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_status_ongoing_24dp.xml b/app/src/main/res/drawable/ic_status_ongoing_24dp.xml deleted file mode 100644 index feebf134f..000000000 --- a/app/src/main/res/drawable/ic_status_ongoing_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_status_unknown_24dp.xml b/app/src/main/res/drawable/ic_status_unknown_24dp.xml deleted file mode 100644 index 7fa2fa53e..000000000 --- a/app/src/main/res/drawable/ic_status_unknown_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/library_item_selector_overlay.xml b/app/src/main/res/drawable/library_item_selector_overlay.xml deleted file mode 100644 index 4c19540e3..000000000 --- a/app/src/main/res/drawable/library_item_selector_overlay.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/drawable/list_item_selector_background.xml b/app/src/main/res/drawable/list_item_selector_background.xml deleted file mode 100644 index 26682873a..000000000 --- a/app/src/main/res/drawable/list_item_selector_background.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/sc_collections_bookmark_48dp.xml b/app/src/main/res/drawable/sc_collections_bookmark_48dp.xml index 6cae83bc8..6b7189f35 100644 --- a/app/src/main/res/drawable/sc_collections_bookmark_48dp.xml +++ b/app/src/main/res/drawable/sc_collections_bookmark_48dp.xml @@ -1,5 +1,7 @@ - - - - - - - - - diff --git a/app/src/main/res/layout/pager_controller.xml b/app/src/main/res/layout/pager_controller.xml deleted file mode 100644 index a373fbbcb..000000000 --- a/app/src/main/res/layout/pager_controller.xml +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/app/src/main/res/menu/download_queue.xml b/app/src/main/res/menu/download_queue.xml deleted file mode 100644 index 4cc4d43df..000000000 --- a/app/src/main/res/menu/download_queue.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/i18n/src/main/res/values/strings.xml b/i18n/src/main/res/values/strings.xml index fe045cc0d..11870a69c 100644 --- a/i18n/src/main/res/values/strings.xml +++ b/i18n/src/main/res/values/strings.xml @@ -43,6 +43,7 @@ Tracked Unread Started + Remove filter Alphabetically Total manga @@ -63,11 +64,9 @@ Mark as unread Mark previous as read Download - Download unread chapters Bookmark chapter Unbookmark chapter Delete - Update Update library Enable all Disable all @@ -129,11 +128,11 @@ Share Save Reset + Undo Close Open log Tap to see details - Create Restore Back Forward @@ -467,8 +466,6 @@ Automatic backups Backup frequency Maximum backups - Not logged in: %1$s - Error: empty URI Backup created Invalid backup file Backup does not contain any manga. @@ -574,7 +571,6 @@ Log out from %1$s? Log out You are now logged out - Could not log in Unknown error @@ -586,6 +582,7 @@ Tabs + No more results No results found @@ -606,14 +603,11 @@ Order by Date - - This manga has been removed from the database. - - Description Ongoing Unknown Unknown author + Unknown status Licensed Publishing finished @@ -621,8 +615,9 @@ On hiatus Add to library In library + Remove from library - Title + Unknown title You have an entry in your library with the same name but from a different source (%1$s).\n\nDo you still wish to continue? Added to library Removed from library @@ -646,7 +641,6 @@ Paused Source title Chapter number - Sorting mode By source By chapter number By upload date @@ -708,14 +702,13 @@ Start date Finish date Type - Author - Invalid date supplied Please login to MAL again Source is not supported No match found A category with this name already exists! + Categories deleted @@ -733,7 +726,6 @@ %1$s: %2$s, page %3$d Page: %1$d Next chapter not found - Previous chapter not found The image couldn\'t be loaded Use this image as cover art? For this series @@ -830,6 +822,7 @@ Download Open on GitHub + This Android version is no longer supported No new updates available Searching for updates…