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_title=Disable word break
|
||||||
disable_word_break_summary=This feature prevents words from being automatically broken in the middle of a line.
|
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_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_title=Translator
|
||||||
translate_dialog_box_summary=Engine used to translate dialog boxes
|
translate_dialog_box_summary=Engine used to translate dialog boxes
|
||||||
translate_dialog_box_toast=The translator has been changed to
|
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_title=Desativar quebra de palavras
|
||||||
disable_word_break_summary=Esse recurso impede que palavras sejam quebradas automaticamente no meio da linha.
|
disable_word_break_summary=Esse recurso impede que palavras sejam quebradas automaticamente no meio da linha.
|
||||||
disable_translator_title=Desativar tradutor
|
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_title=Tradutor
|
||||||
translate_dialog_box_summary=Motor utilizado para traduzir caixas de diálogo
|
translate_dialog_box_summary=Motor utilizado para traduzir caixas de diálogo
|
||||||
translate_dialog_box_toast=O tradutor foi alterado para
|
translate_dialog_box_toast=O tradutor foi alterado para
|
||||||
|
@ -2,7 +2,7 @@ plugins {
|
|||||||
id("lib-multisrc")
|
id("lib-multisrc")
|
||||||
}
|
}
|
||||||
|
|
||||||
baseVersionCode = 7
|
baseVersionCode = 8
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api(project(":lib:i18n"))
|
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.model.SManga
|
||||||
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
|
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
|
||||||
import keiyoushi.utils.getPreferencesLazy
|
import keiyoushi.utils.getPreferencesLazy
|
||||||
import kotlinx.serialization.decodeFromString
|
import keiyoushi.utils.parseAs
|
||||||
import kotlinx.serialization.encodeToString
|
import kotlinx.serialization.encodeToString
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||||
@ -96,11 +96,12 @@ abstract class MachineTranslations(
|
|||||||
classLoader = this::class.java.classLoader!!,
|
classLoader = this::class.java.classLoader!!,
|
||||||
)
|
)
|
||||||
|
|
||||||
private val settings get() = language.apply {
|
private val settings get() = language.copy(
|
||||||
fontSize = this@MachineTranslations.fontSize
|
fontSize = this@MachineTranslations.fontSize,
|
||||||
disableWordBreak = this@MachineTranslations.disableWordBreak
|
disableWordBreak = this@MachineTranslations.disableWordBreak,
|
||||||
disableSourceSettings = this@MachineTranslations.disableSourceSettings
|
disableTranslator = this@MachineTranslations.disableTranslator,
|
||||||
}
|
disableSourceSettings = this@MachineTranslations.disableSourceSettings,
|
||||||
|
)
|
||||||
|
|
||||||
override val client: OkHttpClient get() = clientInstance!!
|
override val client: OkHttpClient get() = clientInstance!!
|
||||||
|
|
||||||
@ -267,7 +268,7 @@ abstract class MachineTranslations(
|
|||||||
val fragment = json.encodeToString<List<Dialog>>(
|
val fragment = json.encodeToString<List<Dialog>>(
|
||||||
dto.dialogues.filter { it.getTextBy(language).isNotBlank() },
|
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 {
|
// Prevent bad fragments
|
||||||
return json.decodeFromString(this)
|
fun String.toFragment(): String = "#${this.replace("#", "*")}"
|
||||||
}
|
|
||||||
|
|
||||||
private fun String.i18n(): String = when {
|
private fun String.i18n(): String = when {
|
||||||
enableMangaDetailsTranslation -> translator.translate(language.origin, language.target, this)
|
enableMangaDetailsTranslation -> translator.translate(language.origin, language.target, this)
|
||||||
|
@ -43,7 +43,10 @@ data class Dialog(
|
|||||||
private val bgColor: List<Int> = emptyList(),
|
private val bgColor: List<Int> = emptyList(),
|
||||||
) {
|
) {
|
||||||
val text: String get() = textByLanguage["text"] ?: throw Exception("Dialog not found")
|
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 width get() = x2 - x1
|
||||||
val height get() = y2 - y1
|
val height get() = y2 - y1
|
||||||
|
@ -2,13 +2,13 @@ package eu.kanade.tachiyomi.multisrc.machinetranslations
|
|||||||
|
|
||||||
class MachineTranslationsFactoryUtils
|
class MachineTranslationsFactoryUtils
|
||||||
|
|
||||||
class Language(
|
data class Language(
|
||||||
val lang: String,
|
val lang: String,
|
||||||
val target: String = lang,
|
val target: String = lang,
|
||||||
val origin: String = "en",
|
val origin: String = "en",
|
||||||
var fontSize: Int = 24,
|
val fontSize: Int = 24,
|
||||||
var disableSourceSettings: Boolean = false,
|
val disableSourceSettings: Boolean = false,
|
||||||
var disableWordBreak: Boolean = false,
|
val disableWordBreak: Boolean = false,
|
||||||
var disableTranslator: Boolean = false,
|
val disableTranslator: Boolean = false,
|
||||||
var supportNativeTranslation: 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.Language
|
||||||
import eu.kanade.tachiyomi.multisrc.machinetranslations.MachineTranslations.Companion.PAGE_REGEX
|
import eu.kanade.tachiyomi.multisrc.machinetranslations.MachineTranslations.Companion.PAGE_REGEX
|
||||||
import eu.kanade.tachiyomi.network.GET
|
import eu.kanade.tachiyomi.network.GET
|
||||||
import kotlinx.serialization.decodeFromString
|
import keiyoushi.utils.parseAs
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import okhttp3.Interceptor
|
import okhttp3.Interceptor
|
||||||
import okhttp3.MediaType.Companion.toMediaType
|
import okhttp3.MediaType.Companion.toMediaType
|
||||||
@ -244,10 +244,6 @@ class ComposedImageInterceptor(
|
|||||||
}.build()
|
}.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) {
|
private fun Canvas.draw(textPaint: TextPaint, layout: StaticLayout, dialog: Dialog, x: Float, y: Float) {
|
||||||
save()
|
save()
|
||||||
translate(x, y)
|
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.Language
|
||||||
import eu.kanade.tachiyomi.multisrc.machinetranslations.MachineTranslations.Companion.PAGE_REGEX
|
import eu.kanade.tachiyomi.multisrc.machinetranslations.MachineTranslations.Companion.PAGE_REGEX
|
||||||
import eu.kanade.tachiyomi.multisrc.machinetranslations.translator.TranslatorEngine
|
import eu.kanade.tachiyomi.multisrc.machinetranslations.translator.TranslatorEngine
|
||||||
|
import keiyoushi.utils.parseAs
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.async
|
import kotlinx.coroutines.async
|
||||||
import kotlinx.coroutines.awaitAll
|
import kotlinx.coroutines.awaitAll
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import kotlinx.serialization.decodeFromString
|
|
||||||
import kotlinx.serialization.encodeToString
|
import kotlinx.serialization.encodeToString
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import okhttp3.Interceptor
|
import okhttp3.Interceptor
|
||||||
@ -58,8 +58,4 @@ class TranslationInterceptor(
|
|||||||
"text" to value,
|
"text" to value,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
private inline fun <reified T> String.parseAs(): T {
|
|
||||||
return json.decodeFromString(this)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user