From d47ad9e30322897d0bece4dfacfd499dd56f2c34 Mon Sep 17 00:00:00 2001 From: koalasat Date: Mon, 28 Jul 2025 11:47:47 +0200 Subject: [PATCH] Apply system locale --- .../main/java/com/robosats/MainActivity.kt | 48 +++------ .../main/java/com/robosats/WebAppInterface.kt | 7 -- .../com/robosats/models/LanguageManager.kt | 102 ++++++++++++------ .../java/com/robosats/models/NostrClient.kt | 11 +- .../robosats/services/NotificationsService.kt | 19 +++- .../app/src/main/res/values-ca/strings.xml | 11 ++ .../app/src/main/res/values-cs/strings.xml | 11 ++ .../app/src/main/res/values-de/strings.xml | 11 ++ .../app/src/main/res/values-es/strings.xml | 11 ++ .../app/src/main/res/values-eu/strings.xml | 11 ++ .../app/src/main/res/values-fr/strings.xml | 11 ++ .../app/src/main/res/values-it/strings.xml | 11 ++ .../app/src/main/res/values-ja/strings.xml | 11 ++ .../app/src/main/res/values-pl/strings.xml | 11 ++ .../app/src/main/res/values-pt/strings.xml | 11 ++ .../app/src/main/res/values-ru/strings.xml | 11 ++ .../app/src/main/res/values-sv/strings.xml | 11 ++ .../app/src/main/res/values-sw/strings.xml | 11 ++ .../app/src/main/res/values-th/strings.xml | 11 ++ .../src/main/res/values-zh-rCN/strings.xml | 11 ++ .../src/main/res/values-zh-rTW/strings.xml | 11 ++ android/app/src/main/res/values/strings.xml | 11 ++ 22 files changed, 297 insertions(+), 77 deletions(-) diff --git a/android/app/src/main/java/com/robosats/MainActivity.kt b/android/app/src/main/java/com/robosats/MainActivity.kt index c6a0ff8d..3fdbfe79 100644 --- a/android/app/src/main/java/com/robosats/MainActivity.kt +++ b/android/app/src/main/java/com/robosats/MainActivity.kt @@ -3,8 +3,6 @@ package com.robosats import android.Manifest import android.annotation.SuppressLint import android.app.Application -import android.content.Context -import android.content.ContextWrapper import android.content.Intent import android.content.pm.ActivityInfo import android.content.pm.PackageManager @@ -34,10 +32,7 @@ import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import com.robosats.models.EncryptedStorage import com.robosats.models.LanguageManager -import com.robosats.models.LanguageManager.LANGUAGE_KEY -import com.robosats.models.LanguageManager.applyLanguage import com.robosats.services.NotificationsService -import java.util.Locale import com.robosats.tor.TorKmp import com.robosats.tor.TorKmpManager import com.robosats.tor.TorKmpManager.getTorKmpObject @@ -59,10 +54,8 @@ class MainActivity : AppCompatActivity() { // Initialize EncryptedStorage EncryptedStorage.init(this) - // Initialize language manager and apply saved language setting + // Initialize language manager with system language LanguageManager.init(this) - val languageCode = EncryptedStorage.getEncryptedStorage(LANGUAGE_KEY) - changeAppLanguage(languageCode) // Lock the screen orientation to portrait mode requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT @@ -82,7 +75,7 @@ class MainActivity : AppCompatActivity() { } // Set initial status message - updateStatus("Initializing Tor connection...") + updateStatus(getString(R.string.init_tor)) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && ContextCompat.checkSelfPermission( @@ -140,7 +133,7 @@ class MainActivity : AppCompatActivity() { // Show a message to the user Toast.makeText( this, - "Using Orbot. Make sure it's running!", + getString(R.string.using_orbot), Toast.LENGTH_LONG ).show() @@ -148,8 +141,8 @@ class MainActivity : AppCompatActivity() { } /** - * Initialize Notifications service - */ + * Initialize Notifications service + */ fun initializeNotifications() { startForegroundService( Intent( @@ -195,7 +188,7 @@ class MainActivity : AppCompatActivity() { // Show error message on the loading screen runOnUiThread { - updateStatus("Critical error: Tor initialization failed. App cannot proceed securely.") + updateStatus(getString(R.string.tor_init_error)) } } } @@ -214,7 +207,7 @@ class MainActivity : AppCompatActivity() { try { // Display connecting message runOnUiThread { - updateStatus("Connecting to Tor network...") + updateStatus(getString(R.string.connecting_tor)) } // Wait for Tor to connect with retry mechanism @@ -228,7 +221,7 @@ class MainActivity : AppCompatActivity() { // Update status on UI thread every few retries if (retries % 3 == 0) { runOnUiThread { - updateStatus("Still connecting to Tor (attempt $retries/$maxRetries)...") + updateStatus(getString(R.string.still_connecting_tor)) } } } @@ -239,7 +232,7 @@ class MainActivity : AppCompatActivity() { // Show success message and proceed runOnUiThread { - updateStatus("Tor connected successfully. Setting up secure browser...") + updateStatus(getString(R.string.connected_tor)) HttpClientManager.setDefaultProxy(getTorKmpObject().proxy) @@ -251,14 +244,14 @@ class MainActivity : AppCompatActivity() { Log.e("TorInitialization", "Failed to connect to Tor after $maxRetries retries") runOnUiThread { - updateStatus("Failed to connect to Tor after multiple attempts. App cannot proceed securely.") + updateStatus(getString(R.string.fail_tor)) } } } catch (e: Exception) { Log.e("TorInitialization", "Error during Tor connection: ${e.message}", e) runOnUiThread { - updateStatus("Error connecting to Tor: ${e.message}") + updateStatus(getString(R.string.error_tor) + "${e.message}") } } } @@ -297,7 +290,7 @@ class MainActivity : AppCompatActivity() { // Show message that we're setting up secure browsing runOnUiThread { - updateStatus(if (useProxy) "Setting up secure Tor browsing..." else "Setting up Orbot browsing...") + updateStatus(if (useProxy) getString(R.string.setting_tor) else getString(R.string.setting_orbot)) } // Configure proxy for WebView in a background thread to avoid NetworkOnMainThreadException @@ -310,7 +303,7 @@ class MainActivity : AppCompatActivity() { // Success - now configure WebViewClient and load URL on UI thread runOnUiThread { - updateStatus("Secure connection established. Loading app...") + updateStatus(getString(R.string.loading_app)) // Set up WebViewClient that allows external links and deep links to be opened webView.webViewClient = object : WebViewClient() { @@ -457,9 +450,7 @@ class MainActivity : AppCompatActivity() { cookieManager.setAcceptThirdPartyCookies(webView, false) // Block 3rd party cookies // 10. Disable Service Workers (not needed for our local app) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - ServiceWorkerController.getInstance().setServiceWorkerClient(null) - } + ServiceWorkerController.getInstance().setServiceWorkerClient(null) // --- USABILITY SETTINGS --- @@ -474,17 +465,6 @@ class MainActivity : AppCompatActivity() { webSettings.textZoom = 100 } - /** - * Change the app's language and recreate the activity - * @param languageCode The language code to switch to (e.g., "en", "es", "fr") - */ - fun changeAppLanguage(languageCode: String) { - // Apply the language change - if (LanguageManager.applyLanguage(languageCode)) { - // Restart the activity to apply changes - recreate() - } - } /** * Clear all WebView data when activity is destroyed diff --git a/android/app/src/main/java/com/robosats/WebAppInterface.kt b/android/app/src/main/java/com/robosats/WebAppInterface.kt index 31a08573..20c49100 100644 --- a/android/app/src/main/java/com/robosats/WebAppInterface.kt +++ b/android/app/src/main/java/com/robosats/WebAppInterface.kt @@ -8,7 +8,6 @@ import android.webkit.JavascriptInterface import android.webkit.WebView import android.widget.Toast import com.robosats.models.EncryptedStorage -import com.robosats.models.LanguageManager import com.robosats.models.NostrClient import com.robosats.services.NotificationsService import com.robosats.tor.TorKmpManager.getTorKmpObject @@ -368,12 +367,6 @@ class WebAppInterface(private val context: MainActivity, private val webView: We EncryptedStorage.setEncryptedStorage(sanitizedKey, sanitizedValue) if (key == "garage_slots") NostrClient.refresh() - if (key == "settings_language") { - context.changeAppLanguage(value) - // Return immediately as recreate() will be called - resolvePromise(uuid, key) - return - } if (key == "settings_notifications") { val serviceIntent = Intent(context, NotificationsService::class.java) if (value == "true") { diff --git a/android/app/src/main/java/com/robosats/models/LanguageManager.kt b/android/app/src/main/java/com/robosats/models/LanguageManager.kt index 47225253..5abfd3f0 100644 --- a/android/app/src/main/java/com/robosats/models/LanguageManager.kt +++ b/android/app/src/main/java/com/robosats/models/LanguageManager.kt @@ -4,58 +4,100 @@ import android.content.res.Configuration import android.content.res.Resources import android.os.Build import android.os.LocaleList +import android.util.Log import com.robosats.MainActivity import java.util.Locale +/** + * Manages the app's language settings + * Uses the system's default language if it's one of the supported languages, + * otherwise defaults to English + */ object LanguageManager { lateinit var resources: Resources + private val TAG = "LanguageManager" + private val SETTINGS_KEY = "settings_language" - val LANGUAGE_KEY = "settings_language" + // List of supported language codes based on the app's supported languages + private val SUPPORTED_LANGUAGES = setOf( + "en", // English + "es", // Spanish + "de", // German + "pl", // Polish + "fr", // French + "sw", // Swahili + "ru", // Russian + "ja", // Japanese + "it", // Italian + "pt", // Portuguese + "zh-si", // Simplified Chinese (special handling required) + "zh-tr", // Traditional Chinese (special handling required) + "sv", // Swedish + "cs", // Czech + "th", // Thai + "ca", // Catalan + "eu" // Basque + ) fun init(context: MainActivity) { resources = context.resources + applySystemLanguage() } /** - * Apply the selected language to the app - * @param languageCode The language code to apply, or "system" for system default - * @return true if language was changed, false otherwise + * Apply the system's default language to the app if it's supported, + * otherwise use English as the default language + * This is called only once during app initialization */ - fun applyLanguage(languageCode: String): Boolean { - val locale = when { - languageCode == "system" -> { - // Use system default - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - Resources.getSystem().configuration.locales.get(0) - } else { - @Suppress("DEPRECATION") - Resources.getSystem().configuration.locale - } - } - languageCode == "zh-si" -> Locale.SIMPLIFIED_CHINESE - languageCode == "zh-tr" -> Locale.TRADITIONAL_CHINESE - else -> Locale(languageCode) + fun applySystemLanguage() { + // Get system locale + val systemLocale = + Resources.getSystem().configuration.locales.get(0) + + // Determine the locale to use + val localeToUse = getValidatedLocale(systemLocale) + Log.d(TAG, "System locale: ${systemLocale.language}, Using locale: ${localeToUse.language}") + + val lang = systemLocale.language + if (EncryptedStorage.getEncryptedStorage(SETTINGS_KEY) == "" && SUPPORTED_LANGUAGES.contains(lang)) { + EncryptedStorage.setEncryptedStorage(SETTINGS_KEY, lang) } - // Create configuration with the selected locale + // Create configuration with the validated locale val config = Configuration(resources.configuration) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - val localeList = LocaleList(locale) - LocaleList.setDefault(localeList) - config.setLocales(localeList) - } else { - config.locale = locale - @Suppress("DEPRECATION") - Locale.setDefault(locale) - } + val localeList = LocaleList(localeToUse) + LocaleList.setDefault(localeList) + config.setLocales(localeList) // Update the configuration @Suppress("DEPRECATION") resources.updateConfiguration(config, resources.displayMetrics) + } - EncryptedStorage.setEncryptedStorage(LANGUAGE_KEY, languageCode) + /** + * Validates if the system locale is supported by the app + * If not, returns the English locale as default + */ + private fun getValidatedLocale(systemLocale: Locale): Locale { + val languageCode = systemLocale.language - return true + // Handle Chinese special cases + if (languageCode == "zh") { + val country = systemLocale.country + // Check if it's Simplified (China, Singapore) or Traditional (Taiwan, Hong Kong) + return when (country) { + "CN", "SG" -> Locale.SIMPLIFIED_CHINESE + "TW", "HK" -> Locale.TRADITIONAL_CHINESE + else -> Locale.ENGLISH // Default to English for other Chinese variants + } + } + + // For other languages, check if they're in our supported list + return if (SUPPORTED_LANGUAGES.contains(languageCode.lowercase())) { + systemLocale + } else { + Locale.ENGLISH // Default to English if language not supported + } } } diff --git a/android/app/src/main/java/com/robosats/models/NostrClient.kt b/android/app/src/main/java/com/robosats/models/NostrClient.kt index dfbd3727..9fda0962 100644 --- a/android/app/src/main/java/com/robosats/models/NostrClient.kt +++ b/android/app/src/main/java/com/robosats/models/NostrClient.kt @@ -15,9 +15,18 @@ import org.json.JSONObject object NostrClient { private var subscriptionNotificationId = "robosatsNotificationId" private var authors = garagePubKeys() + private var initialized = false fun init() { - RelayPool.register(Client) + if (!initialized) { + try { + RelayPool.register(Client) + initialized = true + } catch (e: Exception) { + Log.e("NostrClient", "Error initializing NostrClient: ${e.message}", e) + // Don't set initialized to true if there was an error + } + } } fun stop() { diff --git a/android/app/src/main/java/com/robosats/services/NotificationsService.kt b/android/app/src/main/java/com/robosats/services/NotificationsService.kt index f0aad18f..1520850d 100644 --- a/android/app/src/main/java/com/robosats/services/NotificationsService.kt +++ b/android/app/src/main/java/com/robosats/services/NotificationsService.kt @@ -133,11 +133,20 @@ class NotificationsService : Service() { } override fun onCreate() { - val connectivityManager = - (getSystemService(ConnectivityManager::class.java) as ConnectivityManager) - connectivityManager.registerDefaultNetworkCallback(networkCallback) - NostrClient.init() - super.onCreate() + try { + val connectivityManager = + (getSystemService(ConnectivityManager::class.java) as ConnectivityManager) + connectivityManager.registerDefaultNetworkCallback(networkCallback) + + // Initialize NostrClient safely + NostrClient.init() + + super.onCreate() + } catch (e: Exception) { + Log.e("NotificationsService", "Error in onCreate", e) + // Call super.onCreate() even if there's an error to ensure proper service lifecycle + super.onCreate() + } } @RequiresPermission(Manifest.permission.POST_NOTIFICATIONS) diff --git a/android/app/src/main/res/values-ca/strings.xml b/android/app/src/main/res/values-ca/strings.xml index 131a6b5d..a9d6df3b 100644 --- a/android/app/src/main/res/values-ca/strings.xml +++ b/android/app/src/main/res/values-ca/strings.xml @@ -6,4 +6,15 @@ Robosats s\'està executant en segon pla cercant notificacions Notificacions Utilitzar Orbot + Inicialitzant connexió Tor... + Utilitzant Orbot. Assegureu-vos que està en execució! + Error crític: La inicialització de Tor ha fallat. L\'aplicació no pot continuar de manera segura. + Connectant a la xarxa Tor... + Encara connectant a Tor... + Tor connectat amb èxit. Configurant navegador segur... + No s\'ha pogut connectar a Tor després de diversos intents. L\'aplicació no pot continuar de manera segura. + "Error en connectar a Tor: " + Configurant navegació segura amb Tor... + Configurant navegació amb Orbot... + Connexió segura establerta. Carregant aplicació... diff --git a/android/app/src/main/res/values-cs/strings.xml b/android/app/src/main/res/values-cs/strings.xml index 3f40caed..b63b8340 100644 --- a/android/app/src/main/res/values-cs/strings.xml +++ b/android/app/src/main/res/values-cs/strings.xml @@ -6,4 +6,15 @@ Robosats běží na pozadí a vyhledává oznámení Oznámení Použít Orbot + Inicializace připojení Tor... + Používá se Orbot. Ujistěte se, že běží! + Kritická chyba: Inicializace Tor selhala. Aplikace nemůže bezpečně pokračovat. + Připojování k síti Tor... + Stále se připojuje k Tor... + Tor úspěšně připojen. Nastavování bezpečného prohlížeče... + Nepodařilo se připojit k Tor po několika pokusech. Aplikace nemůže bezpečně pokračovat. + "Chyba při připojování k Tor: " + Nastavování bezpečného prohlížení přes Tor... + Nastavování prohlížení přes Orbot... + Bezpečné připojení navázáno. Načítání aplikace... diff --git a/android/app/src/main/res/values-de/strings.xml b/android/app/src/main/res/values-de/strings.xml index e0a55371..0815e98d 100644 --- a/android/app/src/main/res/values-de/strings.xml +++ b/android/app/src/main/res/values-de/strings.xml @@ -6,4 +6,15 @@ Robosats läuft im Hintergrund und sucht nach Benachrichtigungen Benachrichtigungen Orbot verwenden + Tor-Verbindung wird initialisiert... + Orbot wird verwendet. Stellen Sie sicher, dass es läuft! + Kritischer Fehler: Tor-Initialisierung fehlgeschlagen. Die App kann nicht sicher fortfahren. + Verbindung zum Tor-Netzwerk wird hergestellt... + Verbindung zu Tor wird noch hergestellt... + Tor erfolgreich verbunden. Sicherer Browser wird eingerichtet... + Verbindung zu Tor nach mehreren Versuchen fehlgeschlagen. Die App kann nicht sicher fortfahren. + "Fehler bei der Verbindung zu Tor: " + Sichere Tor-Navigation wird eingerichtet... + Orbot-Navigation wird eingerichtet... + Sichere Verbindung hergestellt. App wird geladen... diff --git a/android/app/src/main/res/values-es/strings.xml b/android/app/src/main/res/values-es/strings.xml index c0c20c2f..4b7dc5ea 100644 --- a/android/app/src/main/res/values-es/strings.xml +++ b/android/app/src/main/res/values-es/strings.xml @@ -6,4 +6,15 @@ Robosats está ejecutándose en segundo plano buscando notificaciones Notificaciones Usar Orbot + Inicializando conexión Tor... + Usando Orbot. ¡Asegúrese de que esté ejecutándose! + Error crítico: Falló la inicialización de Tor. La aplicación no puede proceder de forma segura. + Conectando a la red Tor... + Todavía conectando a Tor... + Tor conectado exitosamente. Configurando navegador seguro... + No se pudo conectar a Tor después de múltiples intentos. La aplicación no puede proceder de forma segura. + "Error al conectar a Tor: " + Configurando navegación segura con Tor... + Configurando navegación con Orbot... + Conexión segura establecida. Cargando aplicación... diff --git a/android/app/src/main/res/values-eu/strings.xml b/android/app/src/main/res/values-eu/strings.xml index 7f7fbc54..b8664131 100644 --- a/android/app/src/main/res/values-eu/strings.xml +++ b/android/app/src/main/res/values-eu/strings.xml @@ -6,4 +6,15 @@ Robosats atzeko planoan exekutatzen ari da jakinarazpenak bilatzen Jakinarazpenak Orbot erabili + Tor konexioa hasieratzen... + Orbot erabiltzen. Ziurtatu martxan dagoela! + Errore kritikoa: Tor hasieratzeak huts egin du. Aplikazioak ezin du modu seguruan jarraitu. + Tor sarera konektatzen... + Oraindik Tor-era konektatzen... + Tor arrakastaz konektatu da. Nabigatzaile segurua konfiguratzen... + Ezin izan da Tor-era konektatu hainbat saiakera eta gero. Aplikazioak ezin du modu seguruan jarraitu. + "Errorea Tor-era konektatzean: " + Tor-en bidezko nabigazio segurua konfiguratzen... + Orbot nabigazioa konfiguratzen... + Konexio segurua ezarri da. Aplikazioa kargatzen... diff --git a/android/app/src/main/res/values-fr/strings.xml b/android/app/src/main/res/values-fr/strings.xml index e006b84f..d5f81e07 100644 --- a/android/app/src/main/res/values-fr/strings.xml +++ b/android/app/src/main/res/values-fr/strings.xml @@ -6,4 +6,15 @@ Robosats fonctionne en arrière-plan et recherche des notifications Notifications Utiliser Orbot + Initialisation de la connexion Tor... + Utilisation d\'Orbot. Assurez-vous qu\'il est en cours d\'exécution ! + Erreur critique : Échec de l\'initialisation de Tor. L\'application ne peut pas continuer en toute sécurité. + Connexion au réseau Tor... + Toujours en cours de connexion à Tor... + Tor connecté avec succès. Configuration du navigateur sécurisé... + Échec de la connexion à Tor après plusieurs tentatives. L\'application ne peut pas continuer en toute sécurité. + "Erreur lors de la connexion à Tor : " + Configuration de la navigation sécurisée avec Tor... + Configuration de la navigation avec Orbot... + Connexion sécurisée établie. Chargement de l\'application... diff --git a/android/app/src/main/res/values-it/strings.xml b/android/app/src/main/res/values-it/strings.xml index b6eac40e..062fab7a 100644 --- a/android/app/src/main/res/values-it/strings.xml +++ b/android/app/src/main/res/values-it/strings.xml @@ -6,4 +6,15 @@ Robosats è in esecuzione in background cercando notifiche Notifiche Usa Orbot + Inizializzazione connessione Tor... + Utilizzo di Orbot. Assicurati che sia in esecuzione! + Errore critico: Inizializzazione di Tor fallita. L\'app non può procedere in modo sicuro. + Connessione alla rete Tor... + Ancora in connessione a Tor... + Tor connesso con successo. Configurazione del browser sicuro... + Impossibile connettersi a Tor dopo diversi tentativi. L\'app non può procedere in modo sicuro. + "Errore durante la connessione a Tor: " + Configurazione della navigazione sicura con Tor... + Configurazione della navigazione con Orbot... + Connessione sicura stabilita. Caricamento dell\'app... diff --git a/android/app/src/main/res/values-ja/strings.xml b/android/app/src/main/res/values-ja/strings.xml index 464a0131..1a0c73a2 100644 --- a/android/app/src/main/res/values-ja/strings.xml +++ b/android/app/src/main/res/values-ja/strings.xml @@ -6,4 +6,15 @@ Robosatsはバックグラウンドで通知を取得しています 通知 Orbotを使用 + Tor接続を初期化中... + Orbotを使用中。実行中であることを確認してください! + 重大なエラー:Torの初期化に失敗しました。アプリは安全に続行できません。 + Torネットワークに接続中... + まだTorに接続中... + Torに正常に接続されました。セキュアなブラウザを設定中... + 複数回の試行後、Torに接続できませんでした。アプリは安全に続行できません。 + "Torへの接続エラー: " + セキュアなTorブラウジングを設定中... + Orbotブラウジングを設定中... + セキュアな接続が確立されました。アプリを読み込み中... diff --git a/android/app/src/main/res/values-pl/strings.xml b/android/app/src/main/res/values-pl/strings.xml index 259b44eb..4c04d50d 100644 --- a/android/app/src/main/res/values-pl/strings.xml +++ b/android/app/src/main/res/values-pl/strings.xml @@ -6,4 +6,15 @@ Robosats działa w tle, pobierając powiadomienia Powiadomienia Użyj Orbot + Inicjalizacja połączenia Tor... + Korzystanie z Orbot. Upewnij się, że jest uruchomiony! + Błąd krytyczny: Inicjalizacja Tor nie powiodła się. Aplikacja nie może bezpiecznie kontynuować. + Łączenie z siecią Tor... + Nadal łączenie z Tor... + Tor pomyślnie połączony. Konfigurowanie bezpiecznej przeglądarki... + Nie udało się połączyć z Tor po wielu próbach. Aplikacja nie może bezpiecznie kontynuować. + "Błąd podczas łączenia z Tor: " + Konfigurowanie bezpiecznego przeglądania przez Tor... + Konfigurowanie przeglądania przez Orbot... + Bezpieczne połączenie ustanowione. Ładowanie aplikacji... diff --git a/android/app/src/main/res/values-pt/strings.xml b/android/app/src/main/res/values-pt/strings.xml index 08800d89..4860b3a1 100644 --- a/android/app/src/main/res/values-pt/strings.xml +++ b/android/app/src/main/res/values-pt/strings.xml @@ -6,4 +6,15 @@ Robosats está rodando em segundo plano buscando notificações Notificações Usar Orbot + Inicializando conexão Tor... + Usando Orbot. Certifique-se de que está rodando! + Erro crítico: Falha na inicialização do Tor. O aplicativo não pode prosseguir com segurança. + Conectando à rede Tor... + Ainda conectando ao Tor... + Tor conectado com sucesso. Configurando navegador seguro... + Falha ao conectar ao Tor após várias tentativas. O aplicativo não pode prosseguir com segurança. + "Erro ao conectar ao Tor: " + Configurando navegação segura com Tor... + Configurando navegação com Orbot... + Conexão segura estabelecida. Carregando aplicativo... diff --git a/android/app/src/main/res/values-ru/strings.xml b/android/app/src/main/res/values-ru/strings.xml index c791f7e7..a8a30c4e 100644 --- a/android/app/src/main/res/values-ru/strings.xml +++ b/android/app/src/main/res/values-ru/strings.xml @@ -6,4 +6,15 @@ Robosats работает в фоновом режиме и ищет уведомления Уведомления Использовать Orbot + Инициализация соединения Tor... + Использование Orbot. Убедитесь, что он запущен! + Критическая ошибка: Не удалось инициализировать Tor. Приложение не может безопасно продолжить работу. + Подключение к сети Tor... + Всё ещё подключается к Tor... + Tor успешно подключен. Настройка безопасного браузера... + Не удалось подключиться к Tor после нескольких попыток. Приложение не может безопасно продолжить работу. + "Ошибка при подключении к Tor: " + Настройка безопасного просмотра через Tor... + Настройка просмотра через Orbot... + Безопасное соединение установлено. Загрузка приложения... diff --git a/android/app/src/main/res/values-sv/strings.xml b/android/app/src/main/res/values-sv/strings.xml index 9df6232d..627522d5 100644 --- a/android/app/src/main/res/values-sv/strings.xml +++ b/android/app/src/main/res/values-sv/strings.xml @@ -6,4 +6,15 @@ Robosats körs i bakgrunden och söker efter meddelanden Meddelanden Använd Orbot + Initierar Tor-anslutning... + Använder Orbot. Se till att den körs! + Kritiskt fel: Initiering av Tor misslyckades. Appen kan inte fortsätta säkert. + Ansluter till Tor-nätverket... + Fortfarande ansluter till Tor... + Tor ansluten framgångsrikt. Konfigurerar säker webbläsare... + Det gick inte att ansluta till Tor efter flera försök. Appen kan inte fortsätta säkert. + "Fel vid anslutning till Tor: " + Konfigurerar säker Tor-surfning... + Konfigurerar Orbot-surfning... + Säker anslutning etablerad. Laddar app... diff --git a/android/app/src/main/res/values-sw/strings.xml b/android/app/src/main/res/values-sw/strings.xml index 4051545e..ab0535bd 100644 --- a/android/app/src/main/res/values-sw/strings.xml +++ b/android/app/src/main/res/values-sw/strings.xml @@ -6,4 +6,15 @@ Robosats inaendesha katika usuli ikitafuta arifa Arifa Tumia Orbot + Inaanzisha muunganisho wa Tor... + Inatumia Orbot. Hakikisha inafanya kazi! + Hitilafu muhimu: Kuanzisha Tor kumeshindwa. Programu haiwezi kuendelea kwa usalama. + Inaunganisha kwa mtandao wa Tor... + Bado inaunganisha na Tor... + Tor imeunganishwa kwa mafanikio. Inaunda kivinjari salama... + Imeshindwa kuunganisha na Tor baada ya majaribio mengi. Programu haiwezi kuendelea kwa usalama. + "Hitilafu wakati wa kuunganisha na Tor: " + Inaunda uvinjari salama wa Tor... + Inaunda uvinjari wa Orbot... + Muunganisho salama umeundwa. Inapakia programu... diff --git a/android/app/src/main/res/values-th/strings.xml b/android/app/src/main/res/values-th/strings.xml index 6bc47d23..a660147e 100644 --- a/android/app/src/main/res/values-th/strings.xml +++ b/android/app/src/main/res/values-th/strings.xml @@ -6,4 +6,15 @@ Robosats กำลังทำงานในเบื้องหลังและค้นหาการแจ้งเตือน การแจ้งเตือน ใช้ Orbot + กำลังเริ่มต้นการเชื่อมต่อ Tor... + กำลังใช้ Orbot ตรวจสอบให้แน่ใจว่ากำลังทำงานอยู่! + ข้อผิดพลาดร้ายแรง: การเริ่มต้น Tor ล้มเหลว แอปพลิเคชันไม่สามารถดำเนินการต่อได้อย่างปลอดภัย + กำลังเชื่อมต่อกับเครือข่าย Tor... + ยังคงเชื่อมต่อกับ Tor... + เชื่อมต่อกับ Tor สำเร็จแล้ว กำลังตั้งค่าเบราว์เซอร์ที่ปลอดภัย... + ไม่สามารถเชื่อมต่อกับ Tor หลังจากพยายามหลายครั้ง แอปพลิเคชันไม่สามารถดำเนินการต่อได้อย่างปลอดภัย + "เกิดข้อผิดพลาดในการเชื่อมต่อกับ Tor: " + กำลังตั้งค่าการเบราว์ซิ่งที่ปลอดภัยด้วย Tor... + กำลังตั้งค่าการเบราว์ซิ่งด้วย Orbot... + การเชื่อมต่อที่ปลอดภัยถูกสร้างขึ้นแล้ว กำลังโหลดแอปพลิเคชัน... diff --git a/android/app/src/main/res/values-zh-rCN/strings.xml b/android/app/src/main/res/values-zh-rCN/strings.xml index fe628f60..e759496c 100644 --- a/android/app/src/main/res/values-zh-rCN/strings.xml +++ b/android/app/src/main/res/values-zh-rCN/strings.xml @@ -6,4 +6,15 @@ Robosats 正在后台运行获取通知 通知 使用 Orbot + 正在初始化 Tor 连接... + 正在使用 Orbot。请确保它正在运行! + 严重错误:Tor 初始化失败。应用无法安全地继续。 + 正在连接到 Tor 网络... + 仍在连接到 Tor... + Tor 成功连接。正在设置安全浏览器... + 多次尝试后无法连接到 Tor。应用无法安全地继续。 + "连接到 Tor 时出错: " + 正在设置安全的 Tor 浏览... + 正在设置 Orbot 浏览... + 安全连接已建立。正在加载应用... diff --git a/android/app/src/main/res/values-zh-rTW/strings.xml b/android/app/src/main/res/values-zh-rTW/strings.xml index 48f1d174..e6adb70e 100644 --- a/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/android/app/src/main/res/values-zh-rTW/strings.xml @@ -6,4 +6,15 @@ Robosats 正在背景執行獲取通知 通知 使用 Orbot + 正在初始化 Tor 連接... + 正在使用 Orbot。請確保它正在運行! + 嚴重錯誤:Tor 初始化失敗。應用無法安全地繼續。 + 正在連接到 Tor 網絡... + 仍在連接到 Tor... + Tor 成功連接。正在設置安全瀏覽器... + 多次嘗試後無法連接到 Tor。應用無法安全地繼續。 + "連接到 Tor 時出錯: " + 正在設置安全的 Tor 瀏覽... + 正在設置 Orbot 瀏覽... + 安全連接已建立。正在加載應用... diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 7ef60516..a4b4dfad 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -6,4 +6,15 @@ Robosats is running in background fetching for notifications Notifications Use Orbot + Initializing Tor connection... + Using Orbot. Make sure it\'s running! + Critical error: Tor initialization failed. App cannot proceed securely. + Connecting to Tor network... + Still connecting to Tor... + Tor connected successfully. Setting up secure browser... + Failed to connect to Tor after multiple attempts. App cannot proceed securely. + "Error connecting to Tor: " + Setting up secure Tor browsing... + Setting up Orbot browsing... + Secure connection established. Loading app...