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