diff --git a/lib-multisrc/machinetranslations/assets/i18n/messages_en.properties b/lib-multisrc/machinetranslations/assets/i18n/messages_en.properties index db1c4dfd2..5162eec62 100644 --- a/lib-multisrc/machinetranslations/assets/i18n/messages_en.properties +++ b/lib-multisrc/machinetranslations/assets/i18n/messages_en.properties @@ -4,3 +4,10 @@ font_size_message=Font size changed to %s default_font_size=Default disable_website_setting_title=Disable source settings disable_website_setting_summary=Site fonts will be disabled and your device's fonts will be applied. This does not apply to downloaded or cached chapters. +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 +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 diff --git a/lib-multisrc/machinetranslations/assets/i18n/messages_pt_br.properties b/lib-multisrc/machinetranslations/assets/i18n/messages_pt_br.properties index 8d66879ad..0a1a6c95c 100644 --- a/lib-multisrc/machinetranslations/assets/i18n/messages_pt_br.properties +++ b/lib-multisrc/machinetranslations/assets/i18n/messages_pt_br.properties @@ -4,3 +4,10 @@ font_size_message=Tamanho da fonte foi alterada para %s default_font_size=Padrão disable_website_setting_title=Desativar configurações do site disable_website_setting_summary=As fontes do site serão desativadas e as fontes de seu dispositivo serão aplicadas. Isso não se aplica a capítulos baixados ou armazenados em cache. +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 +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 diff --git a/lib-multisrc/machinetranslations/build.gradle.kts b/lib-multisrc/machinetranslations/build.gradle.kts index b21dd0bb4..e07fe6e71 100644 --- a/lib-multisrc/machinetranslations/build.gradle.kts +++ b/lib-multisrc/machinetranslations/build.gradle.kts @@ -2,7 +2,7 @@ plugins { id("lib-multisrc") } -baseVersionCode = 5 +baseVersionCode = 6 dependencies { api(project(":lib:i18n")) diff --git a/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/MachineTranslations.kt b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/MachineTranslations.kt index 3a8bc5d2f..0e20bb23e 100644 --- a/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/MachineTranslations.kt +++ b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/MachineTranslations.kt @@ -10,7 +10,12 @@ import androidx.preference.PreferenceScreen import androidx.preference.SwitchPreferenceCompat import eu.kanade.tachiyomi.lib.i18n.Intl import eu.kanade.tachiyomi.multisrc.machinetranslations.interceptors.ComposedImageInterceptor +import eu.kanade.tachiyomi.multisrc.machinetranslations.interceptors.TranslationInterceptor +import eu.kanade.tachiyomi.multisrc.machinetranslations.translator.TranslatorEngine +import eu.kanade.tachiyomi.multisrc.machinetranslations.translator.bing.BingTranslator +import eu.kanade.tachiyomi.multisrc.machinetranslations.translator.google.GoogleTranslator import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList @@ -68,6 +73,14 @@ abstract class MachineTranslations( get() = preferences.getString(FONT_SIZE_PREF, DEFAULT_FONT_SIZE)!!.toInt() set(value) = preferences.edit().putString(FONT_SIZE_PREF, value.toString()).apply() + protected var disableWordBreak: Boolean + get() = preferences.getBoolean(DISABLE_WORD_BREAK_PREF, language.disableWordBreak) + set(value) = preferences.edit().putBoolean(DISABLE_WORD_BREAK_PREF, value).apply() + + protected var disableTranslator: Boolean + get() = preferences.getBoolean(DISABLE_TRANSLATOR_PREF, language.disableTranslator) + set(value) = preferences.edit().putBoolean(DISABLE_TRANSLATOR_PREF, value).apply() + protected var disableSourceSettings: Boolean get() = preferences.getBoolean(DISABLE_SOURCE_SETTINGS_PREF, language.disableSourceSettings) set(value) = preferences.edit().putBoolean(DISABLE_SOURCE_SETTINGS_PREF, value).apply() @@ -81,12 +94,19 @@ abstract class MachineTranslations( private val settings get() = language.apply { fontSize = this@MachineTranslations.fontSize + disableWordBreak = this@MachineTranslations.disableWordBreak } - open val useDefaultComposedImageInterceptor: Boolean = true - override val client: OkHttpClient get() = clientInstance!! + private val translators = arrayOf( + "Bing", + "Google", + ) + + private val provider: String get() = + preferences.getString(TRANSLATOR_PROVIDER_PREF, translators.first())!! + /** * This ensures that the `OkHttpClient` instance is only created when required, and it is rebuilt * when there are configuration changes to ensure that the client uses the most up-to-date settings. @@ -99,10 +119,23 @@ abstract class MachineTranslations( return field } - protected open fun clientBuilder() = network.cloudflareClient.newBuilder() - .connectTimeout(1, TimeUnit.MINUTES) - .readTimeout(2, TimeUnit.MINUTES) - .addInterceptorIf(useDefaultComposedImageInterceptor, ComposedImageInterceptor(baseUrl, settings)) + private val clientUtils = network.cloudflareClient.newBuilder() + .rateLimit(3, 2, TimeUnit.SECONDS) + .build() + + protected fun clientBuilder(): OkHttpClient.Builder { + val translator: TranslatorEngine = when (provider) { + "Google" -> GoogleTranslator(clientUtils, headers) + else -> BingTranslator(clientUtils, headers) + } + + return network.cloudflareClient.newBuilder() + .connectTimeout(1, TimeUnit.MINUTES) + .readTimeout(2, TimeUnit.MINUTES) + .rateLimit(3) + .addInterceptorIf(!disableTranslator && language.lang != language.origin, TranslationInterceptor(settings, translator)) + .addInterceptor(ComposedImageInterceptor(baseUrl, settings)) + } private fun OkHttpClient.Builder.addInterceptorIf(condition: Boolean, interceptor: Interceptor): OkHttpClient.Builder { return this.takeIf { condition.not() } ?: this.addInterceptor(interceptor) @@ -311,13 +344,70 @@ abstract class MachineTranslations( key = DISABLE_SOURCE_SETTINGS_PREF title = "⚠ ${intl["disable_website_setting_title"]}" summary = intl["disable_website_setting_summary"] - setDefaultValue(false) + setDefaultValue(language.disableSourceSettings) setOnPreferenceChange { _, newValue -> disableSourceSettings = newValue as Boolean true } }.also(screen::addPreference) } + + SwitchPreferenceCompat(screen.context).apply { + key = DISABLE_WORD_BREAK_PREF + title = "⚠ ${intl["disable_word_break_title"]}" + summary = intl["disable_word_break_summary"] + setDefaultValue(language.disableWordBreak) + setOnPreferenceChange { _, newValue -> + disableWordBreak = newValue as Boolean + true + } + }.also(screen::addPreference) + + if (language.target == language.origin) { + return + } + + if (language.supportNativeTranslation) { + SwitchPreferenceCompat(screen.context).apply { + key = DISABLE_TRANSLATOR_PREF + title = "⚠ ${intl["disable_translator_title"]}" + summary = intl["disable_translator_summary"] + setDefaultValue(language.disableTranslator) + setOnPreferenceChange { _, newValue -> + disableTranslator = newValue as Boolean + true + } + }.also(screen::addPreference) + } + + if (!disableTranslator && language.supportNativeTranslation) { + ListPreference(screen.context).apply { + key = TRANSLATOR_PROVIDER_PREF + title = intl["translate_dialog_box_title"] + entries = translators + entryValues = translators + summary = buildString { + appendLine(intl["translate_dialog_box_summary"]) + append("\t* %s") + } + + setDefaultValue(translators.first()) + + setOnPreferenceChange { _, newValue -> + val selected = newValue as String + val index = this.findIndexOfValue(selected) + val entry = entries[index] as String + + Toast.makeText( + screen.context, + "${intl["translate_dialog_box_toast"]} '$entry'", + Toast.LENGTH_LONG, + ).show() + + true + } + }.also(screen::addPreference) + } } /** @@ -338,6 +428,9 @@ abstract class MachineTranslations( const val PREFIX_SEARCH = "id:" private const val FONT_SIZE_PREF = "fontSizePref" private const val DISABLE_SOURCE_SETTINGS_PREF = "disableSourceSettingsPref" + private const val DISABLE_WORD_BREAK_PREF = "disableWordBreakPref" + private const val DISABLE_TRANSLATOR_PREF = "disableWordBreakPref" + private const val TRANSLATOR_PROVIDER_PREF = "translatorProviderPref" private const val DEFAULT_FONT_SIZE = "24" private val dateFormat: SimpleDateFormat = SimpleDateFormat("dd MMMM yyyy", Locale.US) diff --git a/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/MachineTranslationsFactoryUtils.kt b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/MachineTranslationsFactoryUtils.kt index 7b87c533c..918230f98 100644 --- a/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/MachineTranslationsFactoryUtils.kt +++ b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/MachineTranslationsFactoryUtils.kt @@ -2,18 +2,13 @@ package eu.kanade.tachiyomi.multisrc.machinetranslations class MachineTranslationsFactoryUtils -interface Language { - val lang: String - val target: String - val origin: String - var fontSize: Int - var disableSourceSettings: Boolean -} - -data class LanguageImpl( - override val lang: String, - override val target: String = lang, - override val origin: String = "en", - override var fontSize: Int = 24, - override var disableSourceSettings: Boolean = false, -) : Language +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, +) diff --git a/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/interceptors/ComposedImageInterceptor.kt b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/interceptors/ComposedImageInterceptor.kt index 2a5013235..24e27ad21 100644 --- a/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/interceptors/ComposedImageInterceptor.kt +++ b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/interceptors/ComposedImageInterceptor.kt @@ -32,7 +32,7 @@ import java.io.InputStream @RequiresApi(Build.VERSION_CODES.O) class ComposedImageInterceptor( baseUrl: String, - var language: Language, + val language: Language, ) : Interceptor { private val json: Json by injectLazy() @@ -231,8 +231,13 @@ class ComposedImageInterceptor( return StaticLayout.Builder.obtain(text, 0, text.length, textPaint, dialog.width.toInt()).apply { setAlignment(Layout.Alignment.ALIGN_CENTER) - setIncludePad(false) + setIncludePad(language.disableSourceSettings) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + if (language.disableWordBreak) { + setBreakStrategy(LineBreaker.BREAK_STRATEGY_SIMPLE) + setHyphenationFrequency(Layout.HYPHENATION_FREQUENCY_NONE) + return@apply + } setBreakStrategy(LineBreaker.BREAK_STRATEGY_BALANCED) setHyphenationFrequency(Layout.HYPHENATION_FREQUENCY_FULL) } diff --git a/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/interceptors/TranslationInterceptor.kt b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/interceptors/TranslationInterceptor.kt similarity index 88% rename from src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/interceptors/TranslationInterceptor.kt rename to lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/interceptors/TranslationInterceptor.kt index 6e579993d..a94f6d692 100644 --- a/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/interceptors/TranslationInterceptor.kt +++ b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/interceptors/TranslationInterceptor.kt @@ -1,11 +1,11 @@ -package eu.kanade.tachiyomi.extension.all.snowmtl.interceptors +package eu.kanade.tachiyomi.multisrc.machinetranslations.interceptors import android.os.Build import androidx.annotation.RequiresApi -import eu.kanade.tachiyomi.extension.all.snowmtl.LanguageSetting -import eu.kanade.tachiyomi.extension.all.snowmtl.translator.TranslatorEngine 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 kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll @@ -19,7 +19,7 @@ import uy.kohesive.injekt.injectLazy @RequiresApi(Build.VERSION_CODES.O) class TranslationInterceptor( - var language: LanguageSetting, + val language: Language, private val translator: TranslatorEngine, ) : Interceptor { diff --git a/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/translator/TranslatorEngine.kt b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/translator/TranslatorEngine.kt similarity index 63% rename from src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/translator/TranslatorEngine.kt rename to lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/translator/TranslatorEngine.kt index c1bc273a6..d8a420361 100644 --- a/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/translator/TranslatorEngine.kt +++ b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/translator/TranslatorEngine.kt @@ -1,4 +1,4 @@ -package eu.kanade.tachiyomi.extension.all.snowmtl.translator +package eu.kanade.tachiyomi.multisrc.machinetranslations.translator interface TranslatorEngine { val capacity: Int diff --git a/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/translator/bing/BingTranslator.kt b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/translator/bing/BingTranslator.kt similarity index 94% rename from src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/translator/bing/BingTranslator.kt rename to lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/translator/bing/BingTranslator.kt index c3e49c89c..8ad067bb2 100644 --- a/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/translator/bing/BingTranslator.kt +++ b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/translator/bing/BingTranslator.kt @@ -1,6 +1,6 @@ -package eu.kanade.tachiyomi.extension.all.snowmtl.translator.bing +package eu.kanade.tachiyomi.multisrc.machinetranslations.translator.bing -import eu.kanade.tachiyomi.extension.all.snowmtl.translator.TranslatorEngine +import eu.kanade.tachiyomi.multisrc.machinetranslations.translator.TranslatorEngine import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.util.asJsoup @@ -15,8 +15,7 @@ import okhttp3.Response import org.jsoup.nodes.Element import uy.kohesive.injekt.injectLazy -class BingTranslator(private val client: OkHttpClient, private val headers: Headers) : - TranslatorEngine { +class BingTranslator(private val client: OkHttpClient, private val headers: Headers) : TranslatorEngine { private val baseUrl = "https://www.bing.com" diff --git a/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/translator/bing/BingTranslatorDto.kt b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/translator/bing/BingTranslatorDto.kt similarity index 87% rename from src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/translator/bing/BingTranslatorDto.kt rename to lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/translator/bing/BingTranslatorDto.kt index 7e37a6742..5ce502042 100644 --- a/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/translator/bing/BingTranslatorDto.kt +++ b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/translator/bing/BingTranslatorDto.kt @@ -1,4 +1,4 @@ -package eu.kanade.tachiyomi.extension.all.snowmtl.translator.bing +package eu.kanade.tachiyomi.multisrc.machinetranslations.translator.bing import kotlinx.serialization.Serializable diff --git a/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/translator/google/GoogleTranslator.kt b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/translator/google/GoogleTranslator.kt similarity index 95% rename from src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/translator/google/GoogleTranslator.kt rename to lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/translator/google/GoogleTranslator.kt index 58458fb66..1815ac597 100644 --- a/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/translator/google/GoogleTranslator.kt +++ b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/translator/google/GoogleTranslator.kt @@ -1,6 +1,6 @@ -package eu.kanade.tachiyomi.extension.all.snowmtl.translator.google +package eu.kanade.tachiyomi.multisrc.machinetranslations.translator.google -import eu.kanade.tachiyomi.extension.all.snowmtl.translator.TranslatorEngine +import eu.kanade.tachiyomi.multisrc.machinetranslations.translator.TranslatorEngine import eu.kanade.tachiyomi.network.GET import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonElement diff --git a/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/translator/google/GoogleTranslatorDto.kt b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/translator/google/GoogleTranslatorDto.kt similarity index 77% rename from src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/translator/google/GoogleTranslatorDto.kt rename to lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/translator/google/GoogleTranslatorDto.kt index 6a36cd4e0..a3737bc6b 100644 --- a/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/translator/google/GoogleTranslatorDto.kt +++ b/lib-multisrc/machinetranslations/src/eu/kanade/tachiyomi/multisrc/machinetranslations/translator/google/GoogleTranslatorDto.kt @@ -1,4 +1,4 @@ -package eu.kanade.tachiyomi.extension.all.snowmtl.translator.google +package eu.kanade.tachiyomi.multisrc.machinetranslations.translator.google import okhttp3.Response diff --git a/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/Snowmtl.kt b/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/Snowmtl.kt index c0a9ed6f1..9cb3cb3dd 100644 --- a/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/Snowmtl.kt +++ b/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/Snowmtl.kt @@ -1,97 +1,15 @@ package eu.kanade.tachiyomi.extension.all.snowmtl import android.os.Build -import android.widget.Toast import androidx.annotation.RequiresApi -import androidx.preference.ListPreference -import androidx.preference.PreferenceScreen -import eu.kanade.tachiyomi.extension.all.snowmtl.interceptors.TranslationInterceptor -import eu.kanade.tachiyomi.extension.all.snowmtl.translator.TranslatorEngine -import eu.kanade.tachiyomi.extension.all.snowmtl.translator.bing.BingTranslator -import eu.kanade.tachiyomi.extension.all.snowmtl.translator.google.GoogleTranslator +import eu.kanade.tachiyomi.multisrc.machinetranslations.Language import eu.kanade.tachiyomi.multisrc.machinetranslations.MachineTranslations -import eu.kanade.tachiyomi.multisrc.machinetranslations.interceptors.ComposedImageInterceptor -import eu.kanade.tachiyomi.network.interceptor.rateLimit -import okhttp3.OkHttpClient -import java.util.concurrent.TimeUnit @RequiresApi(Build.VERSION_CODES.O) class Snowmtl( - private val language: LanguageSetting, + language: Language, ) : MachineTranslations( name = "Snow Machine Translations", baseUrl = "https://snowmtl.ru", language, -) { - override val lang = language.lang - - private val translators = arrayOf( - "Bing", - "Google", - ) - - private val settings: LanguageSetting get() = language.copy( - fontSize = this@Snowmtl.fontSize, - disableSourceSettings = this@Snowmtl.disableSourceSettings, - ) - - private val provider: String get() = - preferences.getString(TRANSLATOR_PROVIDER_PREF, translators.first())!! - - private val clientUtils = network.cloudflareClient.newBuilder() - .rateLimit(3, 2, TimeUnit.SECONDS) - .build() - - override val useDefaultComposedImageInterceptor = false - - override fun clientBuilder(): OkHttpClient.Builder { - val translator: TranslatorEngine = when (provider) { - "Google" -> GoogleTranslator(clientUtils, headers) - else -> BingTranslator(clientUtils, headers) - } - - return super.clientBuilder() - .rateLimit(3) - .addInterceptor(TranslationInterceptor(settings, translator)) - .addInterceptor(ComposedImageInterceptor(baseUrl, settings)) - } - - override fun setupPreferenceScreen(screen: PreferenceScreen) { - super.setupPreferenceScreen(screen) - - if (language.target == language.origin) { - return - } - - ListPreference(screen.context).apply { - key = TRANSLATOR_PROVIDER_PREF - title = "Translator" - entries = translators - entryValues = translators - summary = buildString { - appendLine("Engine used to translate dialog boxes") - append("\t* %s") - } - - setDefaultValue(translators.first()) - - setOnPreferenceChange { _, newValue -> - val selected = newValue as String - val index = this.findIndexOfValue(selected) - val entry = entries[index] as String - - Toast.makeText( - screen.context, - "The translator has been changed to '$entry'", - Toast.LENGTH_LONG, - ).show() - - true - } - }.also(screen::addPreference) - } - - companion object { - private const val TRANSLATOR_PROVIDER_PREF = "translatorProviderPref" - } -} +) diff --git a/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/SnowmtlFactory.kt b/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/SnowmtlFactory.kt index 300d2091b..4592cc83e 100644 --- a/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/SnowmtlFactory.kt +++ b/src/all/snowmtl/src/eu/kanade/tachiyomi/extension/all/snowmtl/SnowmtlFactory.kt @@ -11,19 +11,11 @@ class SnowmtlFactory : SourceFactory { } private val languageList = listOf( - LanguageSetting("ar", disableSourceSettings = true), - LanguageSetting("en"), - LanguageSetting("es"), - LanguageSetting("fr"), - LanguageSetting("id"), - LanguageSetting("it"), - LanguageSetting("pt-BR", "pt"), + Language("ar", disableSourceSettings = true), + Language("en"), + Language("es"), + Language("fr"), + Language("id"), + Language("it"), + Language("pt-BR", "pt"), ) - -data class LanguageSetting( - override val lang: String, - override val target: String = lang, - override val origin: String = "en", - override var fontSize: Int = 24, - override var disableSourceSettings: Boolean = false, -) : Language diff --git a/src/all/solarmtl/src/eu/kanade/tachiyomi/extension/all/solarmtl/SolarmtlFactory.kt b/src/all/solarmtl/src/eu/kanade/tachiyomi/extension/all/solarmtl/SolarmtlFactory.kt index 10da66dbd..98bb455a3 100644 --- a/src/all/solarmtl/src/eu/kanade/tachiyomi/extension/all/solarmtl/SolarmtlFactory.kt +++ b/src/all/solarmtl/src/eu/kanade/tachiyomi/extension/all/solarmtl/SolarmtlFactory.kt @@ -1,17 +1,19 @@ -package eu.kanade.tachiyomi.extension.all.solarmtl +package eu.kanade.tachiyomi.extension.all.solarmtl -import android.os.Build -import androidx.annotation.RequiresApi -import eu.kanade.tachiyomi.multisrc.machinetranslations.LanguageImpl -import eu.kanade.tachiyomi.source.SourceFactory - -@RequiresApi(Build.VERSION_CODES.O) -class SolarmtlFactory : SourceFactory { - override fun createSources() = languageList.map(::Solarmtl) -} - -private val languageList = listOf( - LanguageImpl("en"), - LanguageImpl("fr"), - LanguageImpl("pt-BR", "pt"), -) +import android.os.Build +import androidx.annotation.RequiresApi +import eu.kanade.tachiyomi.multisrc.machinetranslations.Language +import eu.kanade.tachiyomi.source.SourceFactory + +@RequiresApi(Build.VERSION_CODES.O) +class SolarmtlFactory : SourceFactory { + override fun createSources() = languageList.map(::Solarmtl) +} + +private val languageList = listOf( + Language("ar", disableSourceSettings = true), + Language("en"), + Language("fr", disableTranslator = true, supportNativeTranslation = true), + Language("id"), + Language("pt-BR", "pt", disableTranslator = true, supportNativeTranslation = true), +)