MachineTranslations: Fix bad fragments and settings (#10239)
* Fix bad fragments and settings * Bump version * Use keiyoushi.utils.parseAs * Avoid replacing default settings
This commit is contained in:
parent
8059156500
commit
41a275917d
@ -7,7 +7,7 @@ disable_website_setting_summary=Site fonts will be disabled and your device's fo
|
||||
disable_word_break_title=Disable word break
|
||||
disable_word_break_summary=This feature prevents words from being automatically broken in the middle of a line.
|
||||
disable_translator_title=Disable translator
|
||||
disable_translator_summary=Disable auto translation and enable source translation. This does not mean that a translation is available.
|
||||
disable_translator_summary=Disable auto translation and enable source translation. This does not mean that a translation is available. Make sure a translation is available before enabling this option.
|
||||
translate_dialog_box_title=Translator
|
||||
translate_dialog_box_summary=Engine used to translate dialog boxes
|
||||
translate_dialog_box_toast=The translator has been changed to
|
||||
|
@ -7,7 +7,7 @@ disable_website_setting_summary=As fontes do site serão desativadas e as fontes
|
||||
disable_word_break_title=Desativar quebra de palavras
|
||||
disable_word_break_summary=Esse recurso impede que palavras sejam quebradas automaticamente no meio da linha.
|
||||
disable_translator_title=Desativar tradutor
|
||||
disable_translator_summary=Desativar tradução automática e ativar tradução da fonte. Isso não significa que há uma tradução disponivel.
|
||||
disable_translator_summary=Desativar tradução automática e ativar tradução da fonte. Isso não significa que há uma tradução disponivel. Certifique-se de que exista uma tradução antes de ativar esta opção no site.
|
||||
translate_dialog_box_title=Tradutor
|
||||
translate_dialog_box_summary=Motor utilizado para traduzir caixas de diálogo
|
||||
translate_dialog_box_toast=O tradutor foi alterado para
|
||||
|
@ -2,7 +2,7 @@ plugins {
|
||||
id("lib-multisrc")
|
||||
}
|
||||
|
||||
baseVersionCode = 7
|
||||
baseVersionCode = 8
|
||||
|
||||
dependencies {
|
||||
api(project(":lib:i18n"))
|
||||
|
@ -25,7 +25,7 @@ import eu.kanade.tachiyomi.source.model.SChapter
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
|
||||
import keiyoushi.utils.getPreferencesLazy
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import keiyoushi.utils.parseAs
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||
@ -96,11 +96,12 @@ abstract class MachineTranslations(
|
||||
classLoader = this::class.java.classLoader!!,
|
||||
)
|
||||
|
||||
private val settings get() = language.apply {
|
||||
fontSize = this@MachineTranslations.fontSize
|
||||
disableWordBreak = this@MachineTranslations.disableWordBreak
|
||||
disableSourceSettings = this@MachineTranslations.disableSourceSettings
|
||||
}
|
||||
private val settings get() = language.copy(
|
||||
fontSize = this@MachineTranslations.fontSize,
|
||||
disableWordBreak = this@MachineTranslations.disableWordBreak,
|
||||
disableTranslator = this@MachineTranslations.disableTranslator,
|
||||
disableSourceSettings = this@MachineTranslations.disableSourceSettings,
|
||||
)
|
||||
|
||||
override val client: OkHttpClient get() = clientInstance!!
|
||||
|
||||
@ -267,7 +268,7 @@ abstract class MachineTranslations(
|
||||
val fragment = json.encodeToString<List<Dialog>>(
|
||||
dto.dialogues.filter { it.getTextBy(language).isNotBlank() },
|
||||
)
|
||||
Page(index, imageUrl = "$imageUrl#$fragment")
|
||||
Page(index, imageUrl = "$imageUrl${fragment.toFragment()}")
|
||||
}
|
||||
}
|
||||
|
||||
@ -294,9 +295,8 @@ abstract class MachineTranslations(
|
||||
}
|
||||
}
|
||||
|
||||
private inline fun <reified T> String.parseAs(): T {
|
||||
return json.decodeFromString(this)
|
||||
}
|
||||
// Prevent bad fragments
|
||||
fun String.toFragment(): String = "#${this.replace("#", "*")}"
|
||||
|
||||
private fun String.i18n(): String = when {
|
||||
enableMangaDetailsTranslation -> translator.translate(language.origin, language.target, this)
|
||||
|
@ -43,7 +43,10 @@ data class Dialog(
|
||||
private val bgColor: List<Int> = emptyList(),
|
||||
) {
|
||||
val text: String get() = textByLanguage["text"] ?: throw Exception("Dialog not found")
|
||||
fun getTextBy(language: Language) = textByLanguage[language.target] ?: text
|
||||
fun getTextBy(language: Language) = when {
|
||||
!language.disableTranslator -> textByLanguage[language.origin]
|
||||
else -> textByLanguage[language.target]
|
||||
} ?: text
|
||||
|
||||
val width get() = x2 - x1
|
||||
val height get() = y2 - y1
|
||||
|
@ -2,13 +2,13 @@ package eu.kanade.tachiyomi.multisrc.machinetranslations
|
||||
|
||||
class MachineTranslationsFactoryUtils
|
||||
|
||||
class Language(
|
||||
data class Language(
|
||||
val lang: String,
|
||||
val target: String = lang,
|
||||
val origin: String = "en",
|
||||
var fontSize: Int = 24,
|
||||
var disableSourceSettings: Boolean = false,
|
||||
var disableWordBreak: Boolean = false,
|
||||
var disableTranslator: Boolean = false,
|
||||
var supportNativeTranslation: Boolean = false,
|
||||
val fontSize: Int = 24,
|
||||
val disableSourceSettings: Boolean = false,
|
||||
val disableWordBreak: Boolean = false,
|
||||
val disableTranslator: Boolean = false,
|
||||
val supportNativeTranslation: Boolean = false,
|
||||
)
|
||||
|
@ -16,7 +16,7 @@ import eu.kanade.tachiyomi.multisrc.machinetranslations.Dialog
|
||||
import eu.kanade.tachiyomi.multisrc.machinetranslations.Language
|
||||
import eu.kanade.tachiyomi.multisrc.machinetranslations.MachineTranslations.Companion.PAGE_REGEX
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import keiyoushi.utils.parseAs
|
||||
import kotlinx.serialization.json.Json
|
||||
import okhttp3.Interceptor
|
||||
import okhttp3.MediaType.Companion.toMediaType
|
||||
@ -244,10 +244,6 @@ class ComposedImageInterceptor(
|
||||
}.build()
|
||||
}
|
||||
|
||||
private inline fun <reified T> String.parseAs(): T {
|
||||
return json.decodeFromString(this)
|
||||
}
|
||||
|
||||
private fun Canvas.draw(textPaint: TextPaint, layout: StaticLayout, dialog: Dialog, x: Float, y: Float) {
|
||||
save()
|
||||
translate(x, y)
|
||||
|
@ -6,11 +6,11 @@ import eu.kanade.tachiyomi.multisrc.machinetranslations.Dialog
|
||||
import eu.kanade.tachiyomi.multisrc.machinetranslations.Language
|
||||
import eu.kanade.tachiyomi.multisrc.machinetranslations.MachineTranslations.Companion.PAGE_REGEX
|
||||
import eu.kanade.tachiyomi.multisrc.machinetranslations.translator.TranslatorEngine
|
||||
import keiyoushi.utils.parseAs
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.awaitAll
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import okhttp3.Interceptor
|
||||
@ -58,8 +58,4 @@ class TranslationInterceptor(
|
||||
"text" to value,
|
||||
),
|
||||
)
|
||||
|
||||
private inline fun <reified T> String.parseAs(): T {
|
||||
return json.decodeFromString(this)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user