diff --git a/gearslip/src/main/java/app/seb3thehacker/gearslip/ui/SettingsScreen.kt b/gearslip/src/main/java/app/seb3thehacker/gearslip/ui/SettingsScreen.kt
index e6d4e7d..a48b6f7 100644
--- a/gearslip/src/main/java/app/seb3thehacker/gearslip/ui/SettingsScreen.kt
+++ b/gearslip/src/main/java/app/seb3thehacker/gearslip/ui/SettingsScreen.kt
@@ -1,6 +1,7 @@
package app.seb3thehacker.gearslip.ui
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.res.vectorResource
import app.seb3thehacker.gearslip.R
import androidx.compose.runtime.withFrameNanos
import android.net.Uri
@@ -136,6 +137,7 @@ fun SettingsScreen(
icon = Icons.Filled.Star,
trailing = { Arrow() },
)
+ LanguageRow()
}
SettingsSection(
stringResource(R.string.settings_support),
@@ -167,6 +169,35 @@ private fun Arrow() = Icon(
tint = MaterialTheme.colorScheme.onSurfaceVariant,
)
+/**
+ * Android 13 and later choose an app's language in their own settings, from the languages
+ * Gearslip declares; this opens that page, which few people find on their own (issue #51).
+ */
+@Composable
+private fun LanguageRow() {
+ if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.TIRAMISU) return
+ val context = LocalContext.current
+ // A new choice arrives as a configuration change, since the manifest keeps the activity.
+ val chosen = remember(androidx.compose.ui.platform.LocalConfiguration.current) {
+ context.getSystemService(android.app.LocaleManager::class.java)?.applicationLocales?.get(0)
+ }
+ SettingsDivider()
+ SettingsRow(
+ stringResource(R.string.settings_language),
+ Modifier.clickable {
+ runCatching {
+ context.startActivity(
+ android.content.Intent(android.provider.Settings.ACTION_APP_LOCALE_SETTINGS, Uri.fromParts("package", context.packageName, null)),
+ )
+ }
+ },
+ subtitle = chosen?.let { it.getDisplayName(it).replaceFirstChar { c -> c.titlecase(it) } }
+ ?: stringResource(R.string.settings_language_phone),
+ icon = androidx.compose.ui.graphics.vector.ImageVector.vectorResource(R.drawable.ic_language),
+ trailing = { Arrow() },
+ )
+}
+
/** The setup guide replay, and where Gearslip lives outside the app. */
@Composable
private fun AboutSection(onReplayTutorial: () -> Unit) {
diff --git a/gearslip/src/main/res/drawable/ic_language.xml b/gearslip/src/main/res/drawable/ic_language.xml
new file mode 100644
index 0000000..6071d8b
--- /dev/null
+++ b/gearslip/src/main/res/drawable/ic_language.xml
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/gearslip/src/main/res/values-ar/strings.xml b/gearslip/src/main/res/values-ar/strings.xml
index 439d7a6..deedb66 100644
--- a/gearslip/src/main/res/values-ar/strings.xml
+++ b/gearslip/src/main/res/values-ar/strings.xml
@@ -863,4 +863,6 @@
جارٍ البحث…
لم يعثر Gearslip على موقعك. تأكد من تشغيل الموقع.
مسح
+ اللغة
+ مثل لغة الهاتف
diff --git a/gearslip/src/main/res/values-cs/strings.xml b/gearslip/src/main/res/values-cs/strings.xml
index 794b3b8..d599e0c 100644
--- a/gearslip/src/main/res/values-cs/strings.xml
+++ b/gearslip/src/main/res/values-cs/strings.xml
@@ -847,4 +847,6 @@
Hledám…
Gearslip nenašel vaši polohu. Zkontrolujte, že je poloha zapnutá.
Vymazat
+ Jazyk
+ Stejný jako v telefonu
diff --git a/gearslip/src/main/res/values-da/strings.xml b/gearslip/src/main/res/values-da/strings.xml
index 55344e5..2a571a9 100644
--- a/gearslip/src/main/res/values-da/strings.xml
+++ b/gearslip/src/main/res/values-da/strings.xml
@@ -1,3 +1,5 @@
+ Sprog
+ Samme som telefonen
\ No newline at end of file
diff --git a/gearslip/src/main/res/values-de/strings.xml b/gearslip/src/main/res/values-de/strings.xml
index 03be259..486519a 100644
--- a/gearslip/src/main/res/values-de/strings.xml
+++ b/gearslip/src/main/res/values-de/strings.xml
@@ -713,4 +713,6 @@
Auto verbindet sich nicht? Manche Autos ab etwa 2020 lehnen das aasdk-Zertifikat ab, dann importieren Sie Ihr eigenes. Änderungen gelten ab der nächsten Verbindung.
Abbiegekarte im Kombiinstrument
Für Autos mit einem zweiten Bildschirm im Kombiinstrument: Gearslip zeigt dort das nächste Abbiegen. Gilt ab der nächsten Verbindung.
+ Sprache
+ Wie auf dem Telefon
diff --git a/gearslip/src/main/res/values-es/strings.xml b/gearslip/src/main/res/values-es/strings.xml
index f1ebb55..8bad5d9 100644
--- a/gearslip/src/main/res/values-es/strings.xml
+++ b/gearslip/src/main/res/values-es/strings.xml
@@ -713,4 +713,6 @@
¿El coche no se conecta? Algunos coches de 2020 en adelante rechazan el certificado de aasdk, así que importa el tuyo. Los cambios se aplican en la próxima conexión.
Tarjeta de giro en la pantalla del cuadro
Para coches con una segunda pantalla en el cuadro de instrumentos: Gearslip muestra ahí el próximo giro. Se aplica en la próxima conexión.
+ Idioma
+ El mismo que el teléfono
diff --git a/gearslip/src/main/res/values-fr/strings.xml b/gearslip/src/main/res/values-fr/strings.xml
index 97457f8..efd9d95 100644
--- a/gearslip/src/main/res/values-fr/strings.xml
+++ b/gearslip/src/main/res/values-fr/strings.xml
@@ -839,4 +839,6 @@
Recherche…
Gearslip n’a pas trouvé votre position. Vérifiez que la localisation est activée.
Effacer
+ Langue
+ Comme le téléphone
diff --git a/gearslip/src/main/res/values-it/strings.xml b/gearslip/src/main/res/values-it/strings.xml
index fa55a70..8b44ad4 100644
--- a/gearslip/src/main/res/values-it/strings.xml
+++ b/gearslip/src/main/res/values-it/strings.xml
@@ -839,4 +839,6 @@
Ricerca…
Gearslip non ha trovato la tua posizione. Controlla che la localizzazione sia attiva.
Cancella
+ Lingua
+ Come il telefono
diff --git a/gearslip/src/main/res/values-ja/strings.xml b/gearslip/src/main/res/values-ja/strings.xml
index 687f917..cc7f440 100644
--- a/gearslip/src/main/res/values-ja/strings.xml
+++ b/gearslip/src/main/res/values-ja/strings.xml
@@ -823,4 +823,6 @@
検索中…
現在地が見つかりませんでした。位置情報がオンになっているか確認してください。
消去
+ 言語
+ スマートフォンと同じ
diff --git a/gearslip/src/main/res/values-ko/strings.xml b/gearslip/src/main/res/values-ko/strings.xml
index 196f204..b412491 100644
--- a/gearslip/src/main/res/values-ko/strings.xml
+++ b/gearslip/src/main/res/values-ko/strings.xml
@@ -823,4 +823,6 @@
찾는 중…
Gearslip이 현재 위치를 찾지 못했습니다. 위치가 켜져 있는지 확인하세요.
지우기
+ 언어
+ 휴대전화와 동일
diff --git a/gearslip/src/main/res/values-nl/strings.xml b/gearslip/src/main/res/values-nl/strings.xml
index ac40061..887d8a0 100644
--- a/gearslip/src/main/res/values-nl/strings.xml
+++ b/gearslip/src/main/res/values-nl/strings.xml
@@ -831,4 +831,6 @@
Zoeken…
Gearslip kon je locatie niet vinden. Staat locatie aan?
Wissen
+ Taal
+ Zelfde als de telefoon
diff --git a/gearslip/src/main/res/values-pl/strings.xml b/gearslip/src/main/res/values-pl/strings.xml
index 7318012..dea80c3 100644
--- a/gearslip/src/main/res/values-pl/strings.xml
+++ b/gearslip/src/main/res/values-pl/strings.xml
@@ -847,4 +847,6 @@
Szukam…
Gearslip nie znalazł Twojej lokalizacji. Sprawdź, czy lokalizacja jest włączona.
Wyczyść
+ Język
+ Taki sam jak w telefonie
diff --git a/gearslip/src/main/res/values-pt-rBR/strings.xml b/gearslip/src/main/res/values-pt-rBR/strings.xml
index 5648644..2b9ce89 100644
--- a/gearslip/src/main/res/values-pt-rBR/strings.xml
+++ b/gearslip/src/main/res/values-pt-rBR/strings.xml
@@ -839,4 +839,6 @@
Procurando…
O Gearslip não encontrou onde você está. Veja se a localização está ligada.
Limpar
+ Idioma
+ O mesmo do celular
diff --git a/gearslip/src/main/res/values-ro/strings.xml b/gearslip/src/main/res/values-ro/strings.xml
index 55344e5..28f0a3e 100644
--- a/gearslip/src/main/res/values-ro/strings.xml
+++ b/gearslip/src/main/res/values-ro/strings.xml
@@ -1,3 +1,5 @@
+ Limbă
+ La fel ca pe telefon
\ No newline at end of file
diff --git a/gearslip/src/main/res/values-ru/strings.xml b/gearslip/src/main/res/values-ru/strings.xml
index 45020d7..aae6635 100644
--- a/gearslip/src/main/res/values-ru/strings.xml
+++ b/gearslip/src/main/res/values-ru/strings.xml
@@ -847,4 +847,6 @@
Ищу…
Gearslip не нашёл, где вы. Проверьте, что геолокация включена.
Очистить
+ Язык
+ Как на телефоне
diff --git a/gearslip/src/main/res/values-sv/strings.xml b/gearslip/src/main/res/values-sv/strings.xml
index 04c11cc..ed531b0 100644
--- a/gearslip/src/main/res/values-sv/strings.xml
+++ b/gearslip/src/main/res/values-sv/strings.xml
@@ -831,4 +831,6 @@
Söker…
Gearslip hittade inte var du är. Kontrollera att platstjänster är på.
Rensa
+ Språk
+ Samma som telefonen
diff --git a/gearslip/src/main/res/values-tr/strings.xml b/gearslip/src/main/res/values-tr/strings.xml
index 4c31fa2..88688eb 100644
--- a/gearslip/src/main/res/values-tr/strings.xml
+++ b/gearslip/src/main/res/values-tr/strings.xml
@@ -831,4 +831,6 @@
Aranıyor…
Gearslip konumunuzu bulamadı. Konumun açık olduğundan emin olun.
Temizle
+ Dil
+ Telefonla aynı
diff --git a/gearslip/src/main/res/values-uk/strings.xml b/gearslip/src/main/res/values-uk/strings.xml
index acad89f..e93ab50 100644
--- a/gearslip/src/main/res/values-uk/strings.xml
+++ b/gearslip/src/main/res/values-uk/strings.xml
@@ -847,4 +847,6 @@
Шукаю…
Gearslip не знайшов, де ви. Перевірте, чи увімкнено геолокацію.
Очистити
+ Мова
+ Як на телефоні
diff --git a/gearslip/src/main/res/values-zh-rCN/strings.xml b/gearslip/src/main/res/values-zh-rCN/strings.xml
index 7e5f50a..9607302 100644
--- a/gearslip/src/main/res/values-zh-rCN/strings.xml
+++ b/gearslip/src/main/res/values-zh-rCN/strings.xml
@@ -823,4 +823,6 @@
正在定位…
Gearslip 找不到你的位置。请检查定位是否已开启。
清除
+ 语言
+ 与手机相同
diff --git a/gearslip/src/main/res/values/strings.xml b/gearslip/src/main/res/values/strings.xml
index fd515f8..d8b786a 100644
--- a/gearslip/src/main/res/values/strings.xml
+++ b/gearslip/src/main/res/values/strings.xml
@@ -875,4 +875,6 @@
Finding you…
Gearslip couldn’t find where you are. Check that location is on.
Clear
+ Language
+ Same as the phone