From f9c74c02a39aba60c4480f430f66e8876dd725e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?HAL=C4=B0L=20=C4=B0BRAH=C4=B0M=20=C3=96ZDEM=C4=B0R?= <94225244+halibiram@users.noreply.github.com> Date: Wed, 4 Mar 2026 01:43:14 +0300 Subject: [PATCH 1/4] feat(i18n): make NanoHTTP server pages i18n compatible --- .../nuvio/tv/core/server/AddonConfigServer.kt | 7 +- .../com/nuvio/tv/core/server/AddonWebPage.kt | 67 ++++++++++--------- .../tv/core/server/RepositoryConfigServer.kt | 7 +- .../nuvio/tv/core/server/RepositoryWebPage.kt | 59 ++++++++-------- .../ui/screens/addon/AddonManagerViewModel.kt | 1 + .../tv/ui/screens/plugin/PluginViewModel.kt | 1 + app/src/main/res/values/strings.xml | 38 +++++++++++ 7 files changed, 116 insertions(+), 64 deletions(-) diff --git a/app/src/main/java/com/nuvio/tv/core/server/AddonConfigServer.kt b/app/src/main/java/com/nuvio/tv/core/server/AddonConfigServer.kt index f048cb84..69c857a5 100644 --- a/app/src/main/java/com/nuvio/tv/core/server/AddonConfigServer.kt +++ b/app/src/main/java/com/nuvio/tv/core/server/AddonConfigServer.kt @@ -1,5 +1,6 @@ package com.nuvio.tv.core.server +import android.content.Context import com.google.gson.Gson import com.google.gson.reflect.TypeToken import fi.iki.elonen.NanoHTTPD @@ -8,6 +9,7 @@ import java.util.UUID import java.util.concurrent.ConcurrentHashMap class AddonConfigServer( + private val context: Context, private val currentPageStateProvider: () -> PageState, private val onChangeProposed: (PendingAddonChange) -> Unit, private val logoProvider: (() -> ByteArray?)? = null, @@ -71,7 +73,7 @@ class AddonConfigServer( } private fun serveWebPage(): Response { - return newFixedLengthResponse(Response.Status.OK, "text/html", AddonWebPage.getHtml()) + return newFixedLengthResponse(Response.Status.OK, "text/html", AddonWebPage.getHtml(context)) } private fun serveLogo(): Response { @@ -156,6 +158,7 @@ class AddonConfigServer( companion object { fun startOnAvailablePort( + context: Context, currentPageStateProvider: () -> PageState, onChangeProposed: (PendingAddonChange) -> Unit, logoProvider: (() -> ByteArray?)? = null, @@ -164,7 +167,7 @@ class AddonConfigServer( ): AddonConfigServer? { for (port in startPort until startPort + maxAttempts) { try { - val server = AddonConfigServer(currentPageStateProvider, onChangeProposed, logoProvider, port) + val server = AddonConfigServer(context, currentPageStateProvider, onChangeProposed, logoProvider, port) server.start(SOCKET_READ_TIMEOUT, false) return server } catch (e: Exception) { diff --git a/app/src/main/java/com/nuvio/tv/core/server/AddonWebPage.kt b/app/src/main/java/com/nuvio/tv/core/server/AddonWebPage.kt index 79cde214..6a8c8441 100644 --- a/app/src/main/java/com/nuvio/tv/core/server/AddonWebPage.kt +++ b/app/src/main/java/com/nuvio/tv/core/server/AddonWebPage.kt @@ -1,14 +1,17 @@ package com.nuvio.tv.core.server +import android.content.Context +import com.nuvio.tv.R + object AddonWebPage { - fun getHtml(): String = """ + fun getHtml(context: Context): String = """ -NuvioTV - Manage Addons +${context.getString(R.string.app_name)} - ${context.getString(R.string.web_manage_addons_title)}