From f0cd86b7a5cc5f83adab558aa62dae0060288bf6 Mon Sep 17 00:00:00 2001 From: wkawecki Date: Wed, 30 Mar 2022 23:14:02 +0200 Subject: [PATCH] #13 add an option to force language X --- .../java/com/geeksville/mesh/BaseActivity.kt | 40 +++++++++++++ .../java/com/geeksville/mesh/MainActivity.kt | 32 +++++++++- app/src/main/res/menu/menu_main.xml | 4 ++ app/src/main/res/values-cs/strings.xml | 2 + app/src/main/res/values-de/strings.xml | 2 + app/src/main/res/values-el/strings.xml | 2 + app/src/main/res/values-es/strings.xml | 2 + app/src/main/res/values-fi/strings.xml | 2 + app/src/main/res/values-fr/strings.xml | 2 + app/src/main/res/values-ga/strings.xml | 1 + app/src/main/res/values-hu/strings.xml | 2 + app/src/main/res/values-it/strings.xml | 2 + app/src/main/res/values-ja/strings.xml | 2 + app/src/main/res/values-ko-rKR/strings.xml | 2 + app/src/main/res/values-nl/strings.xml | 2 + app/src/main/res/values-no/strings.xml | 2 + app/src/main/res/values-pl/strings.xml | 2 + app/src/main/res/values-pt-rBR/strings.xml | 2 + app/src/main/res/values-pt/strings.xml | 2 + app/src/main/res/values-ro/strings.xml | 2 + app/src/main/res/values-ru/strings.xml | 2 + app/src/main/res/values-sk/strings.xml | 2 + app/src/main/res/values-sl/strings.xml | 4 +- app/src/main/res/values-sq/strings.xml | 2 + app/src/main/res/values-sv/strings.xml | 2 + app/src/main/res/values-tr/strings.xml | 2 + app/src/main/res/values-zh/strings.xml | 2 + app/src/main/res/values/arrays.xml | 59 +++++++++++++++++++ app/src/main/res/values/strings.xml | 2 + 29 files changed, 184 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/geeksville/mesh/BaseActivity.kt diff --git a/app/src/main/java/com/geeksville/mesh/BaseActivity.kt b/app/src/main/java/com/geeksville/mesh/BaseActivity.kt new file mode 100644 index 000000000..046387e12 --- /dev/null +++ b/app/src/main/java/com/geeksville/mesh/BaseActivity.kt @@ -0,0 +1,40 @@ +package com.geeksville.mesh + +import android.content.Context +import android.os.Build +import androidx.appcompat.app.AppCompatActivity +import com.geeksville.android.Logging +import com.geeksville.mesh.model.UIViewModel +import java.util.* + +open class BaseActivity: AppCompatActivity(), Logging { + + override fun attachBaseContext(newBase: Context) { + val res = newBase.resources + val config = res.configuration + + // get chosen language from preference + val prefs = UIViewModel.getPreferences(newBase) + val langCode = prefs.getString("lang","zz") + debug("langCode is $langCode") + + if (Build.VERSION.SDK_INT >= 17) { + val locale = if (langCode == "zz") + Locale.getDefault() + else + Locale(langCode) + config.setLocale(locale) + + if(Build.VERSION.SDK_INT > 24) { + //Using createNewConfigurationContext will cause CompanionDeviceManager to crash + applyOverrideConfiguration(config) + super.attachBaseContext(newBase) + }else { + super.attachBaseContext(newBase.createConfigurationContext(config)) + } + } else { + super.attachBaseContext(newBase) + } + } + +} diff --git a/app/src/main/java/com/geeksville/mesh/MainActivity.kt b/app/src/main/java/com/geeksville/mesh/MainActivity.kt index d7bf8c0dd..1386a3053 100644 --- a/app/src/main/java/com/geeksville/mesh/MainActivity.kt +++ b/app/src/main/java/com/geeksville/mesh/MainActivity.kt @@ -118,7 +118,7 @@ eventually: val utf8 = Charset.forName("UTF-8") @AndroidEntryPoint -class MainActivity : AppCompatActivity(), Logging, +class MainActivity : BaseActivity(), Logging, ActivityCompat.OnRequestPermissionsResultCallback { companion object { @@ -1079,6 +1079,10 @@ class MainActivity : AppCompatActivity(), Logging, chooseThemeDialog() return true } + R.id.preferences_language -> { + chooseLangDialog() + return true + } else -> super.onOptionsItemSelected(item) } } @@ -1167,4 +1171,30 @@ class MainActivity : AppCompatActivity(), Logging, } } + private fun chooseLangDialog() { + + /// Prepare dialog and its items + val builder = MaterialAlertDialogBuilder(this) + builder.setTitle(getString(R.string.preferences_language)) + + val languageLabels by lazy { resources.getStringArray(R.array.language_entries) } + val languageValues by lazy { resources.getStringArray(R.array.language_values) } + + /// Load preferences and its value + val prefs = UIViewModel.getPreferences(this) + val editor: SharedPreferences.Editor = prefs.edit() + val lang = prefs.getString("lang", "zz") + debug("Lang from prefs: $lang") + + builder.setSingleChoiceItems(languageLabels, languageValues.indexOf(lang)) { dialog, which -> + var lang = languageValues[which]; + debug("Set lang pref to $lang") + editor.putString("lang", lang) + editor.apply() + dialog.dismiss() + } + val dialog = builder.create() + dialog.show() + } + } diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index 37c9fad55..600836a5f 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -28,6 +28,10 @@ android:id="@+id/theme" android:title="@string/theme" app:showAsAction="withText" /> + Připomenout později Ohodnotit teď Ohodnoťte Meshtastic + Jazyk + Podle systému diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 6c29d3806..557521e25 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -28,4 +28,6 @@ Möchten Sie wirklich den Kanal wechseln? Die gesamte Kommunikation mit anderen Knoten wird unterbrochen, bis Sie die neuen Kanaleinstellungen freigeben. Neuen Kanal-Link empfangen Möchten Sie zum Kanal wechseln? \'%s\' + Sprache + System diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index b5743c54a..06655d6ec 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -73,4 +73,6 @@ Μικρή εμβέλεια (αργό) Μεσαία εμβέλεια (αργό) μεγάλη εμβέλεια (αργό) + Γλώσσα + Προκαθορισμένο του συστήματος diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 24e1c10b2..4832d241b 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -96,4 +96,6 @@ Curto alcance / lento Médio alcance / lento Largo alcance / lento) + Idioma + Predeterminado del sistema \ No newline at end of file diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index d8e413e55..6dc2b5f5a 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -28,4 +28,6 @@ Oletko varma, että haluat vaihtaa kanavaa? Kaikki yhteydet katkeavat, ennen kuin olet jakanut uudet kanavan asetukset. Vastaanotettu uuden kanavan URL Haluatko siirtyä kanavalle \'%s\'? + Kieli + Järjestelmän oletus \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 8af1f7007..491b00e6f 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -77,4 +77,6 @@ Courte distance (lent) Moyenne distance (lent) Longue distance (lent) + Langue + Valeur par défaut du système diff --git a/app/src/main/res/values-ga/strings.xml b/app/src/main/res/values-ga/strings.xml index 7ebffb92c..1b14b2349 100644 --- a/app/src/main/res/values-ga/strings.xml +++ b/app/src/main/res/values-ga/strings.xml @@ -43,4 +43,5 @@ Tá tú péireáilte faoi láthair le raidió %s Níl raidió péireálite agat fós. Athraigh raidió + Teanga \ No newline at end of file diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 04710ba72..654d74ab0 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -105,4 +105,6 @@ Rövid hatótáv (lassú) Közepes hatótáv (lassú) Távoli hatótáv (lassú) + Nyelv + Alapbeállítás diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 235d07cdc..74cd6d8d3 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -42,4 +42,6 @@ Attualmente sei associato alla radio %s Non hai ancora associato alcuna radio.. Cambia radio + Lingua + Predefinito di sistema \ No newline at end of file diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index b38ebb5aa..a2fb2d994 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -55,4 +55,6 @@ mapboxの有償プラン(または代替地図プロバイダ)を検討さ 接続されていません。下記のMeshtasticデバイスを選択してください。 接続しましたが、Meshtasticデバイスはスリープ状態です。 %s更新 + 言語 + システム既定 \ No newline at end of file diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index e96773a02..a6b747228 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -76,4 +76,6 @@ 짧은 거리 (느린 속도) 중간 거리 (느린 속도) >먼 거리 (느린 속도) + 언어 + 시스템 기본값 \ No newline at end of file diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 5b8653401..1bd37b686 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -73,4 +73,6 @@ Klein bereik (traag) Medium bereik (traag) Groot bereik (traag) + Taal + Systeemstandaard diff --git a/app/src/main/res/values-no/strings.xml b/app/src/main/res/values-no/strings.xml index 9155ecc4a..f675496a4 100644 --- a/app/src/main/res/values-no/strings.xml +++ b/app/src/main/res/values-no/strings.xml @@ -73,4 +73,6 @@ Kort rekkevidde (langsom) Medium rekkevidde (langsom) Lang rekkevidde (langsom) + Språk + System standard \ No newline at end of file diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 73729189d..ca72a2ef2 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -135,4 +135,6 @@ Ta opcja wymaga dostępu \"Pozwól cały czas\" do lokalizacji. Anuluj (brak dostępu) Pozwól + Język (wymagany restart) + Domyślny systemu diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index fc18bb8ce..02e373bae 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -123,4 +123,6 @@ Excluir Selecionar tudo + Idioma + Padrão do sistema diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 13521d704..3e3019895 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -123,4 +123,6 @@ Excluir Selecionar tudo + Idioma + Configuração por omissão diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 61085a5d8..f0dc195c5 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -73,4 +73,6 @@ Rază scurtă (încet) Rază medie (încet) Rază lungă (încet) + Limba + Setarea telefonului \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 8e7ae5a92..87ef9a607 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -37,4 +37,6 @@ Сообщить об ошибке Вы уверены, что хотите сообщить об ошибке? После сообщения, пожалуйста, напишите в meshtastic.discourse.group, чтобы мы могли сопоставить отчет с тем, что вы нашли. Отчет + Язык + По умолчанию diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 9a06917ae..c28077f89 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -121,4 +121,6 @@ Krátky dosah / Pomalé Stredný dosah / Pomalé Dlhý dosah / Pomalé + Jazyk + Predvolené nastavenie diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 1520b3344..289d7dc91 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -18,7 +18,7 @@ Anonimna statistika uporabe in poročila o zrušitvah. Iščem Meshtastic naprave… Ta aplikacija zahteva dostop do bluetooth. Dovolite dostop v nastavitvah za Android. - Napaka - aplikacija potrebuje Bluetooth povezavo + Gumb za skupno rabopovezavo Začetek seznanjanja naprav Napaka seznanjanja naprav URL za pridružitev Meshtastic mreže @@ -68,4 +68,6 @@ Kratek doseg (počasen) Srednji doseg (počasen) Dolg doseg (počasen) + Jezik + Privzeta sistemska \ No newline at end of file diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index 128ca8805..3074df403 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -28,4 +28,6 @@ Je i sigurtë për ndërrimin e kanalit radio ? I gjithë komunikimi me nyjet e tjera do të përfundojë derisa të shprëndani parametrat e reja të kanalit radio. Ju keni një kanal radio të ri URL Dëshiron të kalosh në këtë kanal radio ? \'%s\' ? + Gjuhë + Parazgjedhje sistemi \ No newline at end of file diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index eb71fdde9..dc558f61a 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -28,4 +28,6 @@ Är du säker på att du vill byta kanal? All kommunikation med andra noder avbryts tills du delar de nya kanalinställningarna. Ny kanal-länk mottagen Vill du växla till kanalen \'%s\' + Språk + Systemets standard \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 80346d790..3739a19b2 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -70,4 +70,6 @@ Kısa menzilli (yavaş) Orta menzilli (yavaş) Uzun menzilli (yavaş) + Sistem varsayılanı + Dil \ No newline at end of file diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 8ea70c221..6e27c241b 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -106,4 +106,6 @@ 短距离(速度慢) 中等距离(速度慢) 长距离(速度慢) + 语言 + 系统默认 \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index c0035db1a..4746f7e33 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -3,4 +3,63 @@ Use Custom URI? + + @string/preferences_system_default + English + Čeština + Chinese 中文 + Deutsch + Español + Français + Gaeilge + Greek ελληνικά + Haiti + Italiano + Japanese 日本語 + Korean 한국어 + Magyar + Nederlands + Norge + Polski + Português + Português do Brasil + Română + Russian Pусский + Shqip + Slovenský + Slovenščina + Suomi + Svenska + Türkçe + + + + zz + en + cs + zh + de + es + fr + ga + el + ht + it + ja + ko-rKR + hu + nl + no + pl + pt + pt_BR + ro + ru + sq + sk + sl + fi + sv + tr + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 99b4a2adc..404935fe9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -138,4 +138,6 @@ Download Region You are not connected to the internet, you cannot download an offline map Unable to download style pack + Language (restart needed) + System default \ No newline at end of file