From 756220798cad79639f8328663e3ccaf6d79269fc Mon Sep 17 00:00:00 2001 From: ashb155 Date: Sun, 14 Jun 2026 00:44:53 +0530 Subject: [PATCH 1/8] - reactive tutorial changes --- .../ui/screens/tutorial/TutorialContent.kt | 93 ++++++++++++++----- .../ui/screens/tutorial/TutorialNavigator.kt | 58 +++++++++++- 2 files changed, 125 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt index f55de975..44f3207f 100644 --- a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt +++ b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt @@ -8,47 +8,89 @@ package be.scri.ui.screens.tutorial * through a specific Scribe feature. */ object TutorialContent { + + private fun getLanguageName(languageCode: String): String { + return when (languageCode) { + "en" -> "English" + "es" -> "Spanish" + "fr" -> "French" + "it" -> "Italian" + "pt" -> "Portuguese" + "ru" -> "Russian" + "sv" -> "Swedish" + else -> "German" + } + } + /** * Chapter 1: Noun Annotation. * Teaches users about gender tags that appear when typing nouns. */ - val nounAnnotationSteps = - listOf( + fun getNounAnnotationSteps(languageCode: String): List { + val language = getLanguageName(languageCode) + val (fatherWord, fatherTag, fatherGender) = when (languageCode) { + "en" -> Triple("father", "M", "Masculine") + "es" -> Triple("padre", "M", "Masculino") + "fr" -> Triple("père", "M", "Masculin") + "it" -> Triple("padre", "M", "Maschile") + "pt" -> Triple("pai", "M", "Masculino") + "ru" -> Triple("отец", "M", "Мужской") + "sv" -> Triple("far", "C", "Common") + else -> Triple("Vater", "M", "Maskulin") + } + + val (motherWord, motherTag, motherGender) = when (languageCode) { + "en" -> Triple("mother", "F", "Feminine") + "es" -> Triple("madre", "F", "Femenino") + "fr" -> Triple("mère", "F", "Féminin") + "it" -> Triple("madre", "F", "Femminile") + "pt" -> Triple("mãe", "F", "Feminino") + "ru" -> Triple("мать", "F", "Женский") + "sv" -> Triple("mor", "C", "Common") + else -> Triple("Mutter", "F", "Feminin") + } + + return listOf( TutorialStep( instruction = - "Write the word \"Vater\". Notice the word suggestions " + + "Write the word \"$fatherWord\". Notice the word suggestions " + "that appear on the keyboard's top bar.\n\n" + "Then, press space. You will see the word's gender " + - "tag on the keyboard's top bar \u2013 in this case, \"M\" for Maskulin.", - expectedWord = "Vater", + "tag on the keyboard's top bar \u2013 in this case, \"$fatherTag\" for $fatherGender.", + hint = "If your second language is not $language, change the language in your keyboard.", + expectedWord = fatherWord, ), TutorialStep( instruction = - "Now write the word \"Mutter\" and then press space. " + - "The gender tag will be \"F\", for Feminin.", - expectedWord = "Mutter", + "Now write the word \"$motherWord\" and then press space. " + + "The gender tag will be \"$motherTag\", for $motherGender.", + hint = "If your second language is not $language, change the language in your keyboard.", + expectedWord = motherWord, ), ) + } /** * Chapter 2: Word Translation. * Teaches users how to use the Translate command via the Scribe key. */ - val wordTranslationSteps = - listOf( + fun wordTranslationSteps(languageCode: String): List{ + val language = getLanguageName(languageCode) + return listOf( TutorialStep( instruction = "Let's translate! Tap the \u27A1 Scribe key on the top-left " + "corner of your keyboard, and select \u00DCbersetzen.\n\n" + "Then write the word you want to translate, press \u25B6, " + "and the translation will be returned to you.", - hint = "If your second language is not German, change the language in your keyboard.", + hint = "If your second language is not $language, change the language in your keyboard.", requiresValidation = false, ), - ) + )} - val verbConjugationSteps = - listOf( + fun verbConjugationSteps(languageCode: String) : List{ + val language = getLanguageName(languageCode) + return listOf( TutorialStep( instruction = "On to the verbs. Tap the \u27A1 Scribe key on the top-left " + @@ -56,13 +98,14 @@ object TutorialContent { "Write the verb you want to conjugate, press \u25B6, and " + "you will see a table with all the verb tenses. Select " + "the one you need and it will be inserted!", - hint = "If your second language is not German, change the language in your keyboard.", + hint = "If your second language is not $language, change the language in your keyboard.", requiresValidation = false, ), - ) + )} - val nounPluralsSteps = - listOf( + fun nounPluralsSteps (languageCode: String) : List { + val language = getLanguageName(languageCode) + return listOf( TutorialStep( instruction = "Finding the plural of a noun with Scribe is easy. Tap " + @@ -70,17 +113,17 @@ object TutorialContent { "keyboard, and select Plural.\n\n" + "Then write the noun you want the plural for, press " + "\u25B6, and the plural will be returned to you.", - hint = "If your second language is not German, change the language in your keyboard.", + hint = "If your second language is not $language, change the language in your keyboard.", requiresValidation = false, ), - ) + )} /** Returns all chapters as a list of pairs (title, steps). */ - fun getAllChapters(): List>> = + fun getAllChapters(languageCode: String = "de"): List>> = listOf( - "Noun annotation" to nounAnnotationSteps, - "Word translation" to wordTranslationSteps, - "Verb conjugation" to verbConjugationSteps, - "Noun plurals" to nounPluralsSteps, + "Noun annotation" to getNounAnnotationSteps(languageCode), + "Word translation" to wordTranslationSteps(languageCode), + "Verb conjugation" to verbConjugationSteps(languageCode), + "Noun plurals" to nounPluralsSteps(languageCode), ) } diff --git a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialNavigator.kt b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialNavigator.kt index d82d2f0d..b7de2704 100644 --- a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialNavigator.kt +++ b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialNavigator.kt @@ -2,6 +2,10 @@ package be.scri.ui.screens.tutorial +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter import androidx.activity.compose.BackHandler import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -10,6 +14,30 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import android.provider.Settings +import androidx.compose.runtime.DisposableEffect +import androidx.compose.ui.platform.LocalContext + + + + +private fun getCurrentScribeLanguage(context: Context): String { + val currentImeId = Settings.Secure.getString( + context.contentResolver, + Settings.Secure.DEFAULT_INPUT_METHOD + ) ?: "" + + return when { + currentImeId.contains("EnglishKeyboardIME") -> "en" + currentImeId.contains("SpanishKeyboardIME") -> "es" + currentImeId.contains("FrenchKeyboardIME") -> "fr" + currentImeId.contains("ItalianKeyboardIME") -> "it" + currentImeId.contains("PortugueseKeyboardIME") -> "pt" + currentImeId.contains("RussianKeyboardIME") -> "ru" + currentImeId.contains("SwedishKeyboardIME") -> "sv" + else -> "de" + } +} /** * The main tutorial navigation controller. @@ -28,7 +56,35 @@ fun TutorialNavigator( var currentStepIndex by remember { mutableIntStateOf(0) } var isFullTutorial by remember { mutableStateOf(false) } - val allChapters = TutorialContent.getAllChapters() + val context = LocalContext.current + + var activeLanguageCode by remember { + mutableStateOf(getCurrentScribeLanguage(context)) + } + + DisposableEffect(context) { + val receiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + if (intent.action == Intent.ACTION_INPUT_METHOD_CHANGED) { + activeLanguageCode = getCurrentScribeLanguage(context) + } + } + } + + context.registerReceiver( + receiver, + IntentFilter(Intent.ACTION_INPUT_METHOD_CHANGED) + ) + + onDispose { + context.unregisterReceiver(receiver) + } + } + + + val allChapters = remember(activeLanguageCode) { + TutorialContent.getAllChapters(activeLanguageCode) + } BackHandler { if (currentScreen == "home") { From 0b07a93ad8ac4d062945495cf8233ae4a95327bd Mon Sep 17 00:00:00 2001 From: ashb155 Date: Sun, 14 Jun 2026 00:57:21 +0530 Subject: [PATCH 2/8] - formatting fixes --- .../ui/screens/tutorial/TutorialContent.kt | 63 ++++++++++--------- .../ui/screens/tutorial/TutorialNavigator.kt | 40 ++++++------ 2 files changed, 54 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt index 44f3207f..26b7735b 100644 --- a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt +++ b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt @@ -8,9 +8,8 @@ package be.scri.ui.screens.tutorial * through a specific Scribe feature. */ object TutorialContent { - - private fun getLanguageName(languageCode: String): String { - return when (languageCode) { + private fun getLanguageName(languageCode: String): String = + when (languageCode) { "en" -> "English" "es" -> "Spanish" "fr" -> "French" @@ -20,7 +19,6 @@ object TutorialContent { "sv" -> "Swedish" else -> "German" } - } /** * Chapter 1: Noun Annotation. @@ -28,27 +26,29 @@ object TutorialContent { */ fun getNounAnnotationSteps(languageCode: String): List { val language = getLanguageName(languageCode) - val (fatherWord, fatherTag, fatherGender) = when (languageCode) { - "en" -> Triple("father", "M", "Masculine") - "es" -> Triple("padre", "M", "Masculino") - "fr" -> Triple("père", "M", "Masculin") - "it" -> Triple("padre", "M", "Maschile") - "pt" -> Triple("pai", "M", "Masculino") - "ru" -> Triple("отец", "M", "Мужской") - "sv" -> Triple("far", "C", "Common") - else -> Triple("Vater", "M", "Maskulin") - } + val (fatherWord, fatherTag, fatherGender) = + when (languageCode) { + "en" -> Triple("father", "M", "Masculine") + "es" -> Triple("padre", "M", "Masculino") + "fr" -> Triple("père", "M", "Masculin") + "it" -> Triple("padre", "M", "Maschile") + "pt" -> Triple("pai", "M", "Masculino") + "ru" -> Triple("отец", "M", "Мужской") + "sv" -> Triple("far", "C", "Common") + else -> Triple("Vater", "M", "Maskulin") + } - val (motherWord, motherTag, motherGender) = when (languageCode) { - "en" -> Triple("mother", "F", "Feminine") - "es" -> Triple("madre", "F", "Femenino") - "fr" -> Triple("mère", "F", "Féminin") - "it" -> Triple("madre", "F", "Femminile") - "pt" -> Triple("mãe", "F", "Feminino") - "ru" -> Triple("мать", "F", "Женский") - "sv" -> Triple("mor", "C", "Common") - else -> Triple("Mutter", "F", "Feminin") - } + val (motherWord, motherTag, motherGender) = + when (languageCode) { + "en" -> Triple("mother", "F", "Feminine") + "es" -> Triple("madre", "F", "Femenino") + "fr" -> Triple("mère", "F", "Féminin") + "it" -> Triple("madre", "F", "Femminile") + "pt" -> Triple("mãe", "F", "Feminino") + "ru" -> Triple("мать", "F", "Женский") + "sv" -> Triple("mor", "C", "Common") + else -> Triple("Mutter", "F", "Feminin") + } return listOf( TutorialStep( @@ -74,7 +74,7 @@ object TutorialContent { * Chapter 2: Word Translation. * Teaches users how to use the Translate command via the Scribe key. */ - fun wordTranslationSteps(languageCode: String): List{ + fun wordTranslationSteps(languageCode: String): List { val language = getLanguageName(languageCode) return listOf( TutorialStep( @@ -86,9 +86,10 @@ object TutorialContent { hint = "If your second language is not $language, change the language in your keyboard.", requiresValidation = false, ), - )} + ) + } - fun verbConjugationSteps(languageCode: String) : List{ + fun verbConjugationSteps(languageCode: String): List { val language = getLanguageName(languageCode) return listOf( TutorialStep( @@ -101,9 +102,10 @@ object TutorialContent { hint = "If your second language is not $language, change the language in your keyboard.", requiresValidation = false, ), - )} + ) + } - fun nounPluralsSteps (languageCode: String) : List { + fun nounPluralsSteps(languageCode: String): List { val language = getLanguageName(languageCode) return listOf( TutorialStep( @@ -116,7 +118,8 @@ object TutorialContent { hint = "If your second language is not $language, change the language in your keyboard.", requiresValidation = false, ), - )} + ) + } /** Returns all chapters as a list of pairs (title, steps). */ fun getAllChapters(languageCode: String = "de"): List>> = diff --git a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialNavigator.kt b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialNavigator.kt index b7de2704..71d6cc8c 100644 --- a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialNavigator.kt +++ b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialNavigator.kt @@ -6,26 +6,24 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter +import android.provider.Settings import androidx.activity.compose.BackHandler import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier -import android.provider.Settings -import androidx.compose.runtime.DisposableEffect import androidx.compose.ui.platform.LocalContext - - - private fun getCurrentScribeLanguage(context: Context): String { - val currentImeId = Settings.Secure.getString( - context.contentResolver, - Settings.Secure.DEFAULT_INPUT_METHOD - ) ?: "" + val currentImeId = + Settings.Secure.getString( + context.contentResolver, + Settings.Secure.DEFAULT_INPUT_METHOD, + ) ?: "" return when { currentImeId.contains("EnglishKeyboardIME") -> "en" @@ -63,17 +61,21 @@ fun TutorialNavigator( } DisposableEffect(context) { - val receiver = object : BroadcastReceiver() { - override fun onReceive(context: Context, intent: Intent) { - if (intent.action == Intent.ACTION_INPUT_METHOD_CHANGED) { - activeLanguageCode = getCurrentScribeLanguage(context) + val receiver = + object : BroadcastReceiver() { + override fun onReceive( + context: Context, + intent: Intent, + ) { + if (intent.action == Intent.ACTION_INPUT_METHOD_CHANGED) { + activeLanguageCode = getCurrentScribeLanguage(context) + } } } - } context.registerReceiver( receiver, - IntentFilter(Intent.ACTION_INPUT_METHOD_CHANGED) + IntentFilter(Intent.ACTION_INPUT_METHOD_CHANGED), ) onDispose { @@ -81,10 +83,10 @@ fun TutorialNavigator( } } - - val allChapters = remember(activeLanguageCode) { - TutorialContent.getAllChapters(activeLanguageCode) - } + val allChapters = + remember(activeLanguageCode) { + TutorialContent.getAllChapters(activeLanguageCode) + } BackHandler { if (currentScreen == "home") { From 6ef752fdf298535fc723999395e776e2bc0cf7f0 Mon Sep 17 00:00:00 2001 From: ashb155 Date: Wed, 8 Jul 2026 19:19:25 +0530 Subject: [PATCH 3/8] - tutorial fixes --- .../ui/screens/tutorial/TutorialContent.kt | 76 +++++++++++-------- .../ui/screens/tutorial/TutorialStepScreen.kt | 34 +++++---- 2 files changed, 62 insertions(+), 48 deletions(-) diff --git a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt index 26b7735b..77c7560d 100644 --- a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt +++ b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt @@ -8,24 +8,11 @@ package be.scri.ui.screens.tutorial * through a specific Scribe feature. */ object TutorialContent { - private fun getLanguageName(languageCode: String): String = - when (languageCode) { - "en" -> "English" - "es" -> "Spanish" - "fr" -> "French" - "it" -> "Italian" - "pt" -> "Portuguese" - "ru" -> "Russian" - "sv" -> "Swedish" - else -> "German" - } - /** * Chapter 1: Noun Annotation. * Teaches users about gender tags that appear when typing nouns. */ fun getNounAnnotationSteps(languageCode: String): List { - val language = getLanguageName(languageCode) val (fatherWord, fatherTag, fatherGender) = when (languageCode) { "en" -> Triple("father", "M", "Masculine") @@ -53,19 +40,17 @@ object TutorialContent { return listOf( TutorialStep( instruction = - "Write the word \"$fatherWord\". Notice the word suggestions " + + "Write the word \"$motherWord\". Notice the word suggestions " + "that appear on the keyboard's top bar.\n\n" + "Then, press space. You will see the word's gender " + - "tag on the keyboard's top bar \u2013 in this case, \"$fatherTag\" for $fatherGender.", - hint = "If your second language is not $language, change the language in your keyboard.", - expectedWord = fatherWord, + "tag on the keyboard's top bar \u2013 in this case, \"$motherTag\" for $motherGender.", + expectedWord = motherWord, ), TutorialStep( instruction = - "Now write the word \"$motherWord\" and then press space. " + - "The gender tag will be \"$motherTag\", for $motherGender.", - hint = "If your second language is not $language, change the language in your keyboard.", - expectedWord = motherWord, + "Now write the word \"$fatherWord\" and then press space. " + + "The gender tag will be \"$fatherTag\", for $fatherGender.", + expectedWord = fatherWord, ), ) } @@ -75,47 +60,74 @@ object TutorialContent { * Teaches users how to use the Translate command via the Scribe key. */ fun wordTranslationSteps(languageCode: String): List { - val language = getLanguageName(languageCode) + val translation = + when (languageCode) { + "en" -> "Translate" + "es" -> "Traducir" + "fr" -> "Traduire" + "it" -> "Tradurre" + "pt" -> "Traduzir" + "ru" -> "Перевести" + "sv" -> "Översätt" + else -> "Übersetzen" + } return listOf( TutorialStep( instruction = - "Let's translate! Tap the \u27A1 Scribe key on the top-left " + - "corner of your keyboard, and select \u00DCbersetzen.\n\n" + + "Let's translate! Tap the pencil-like Scribe key on the top-left " + + "corner of your keyboard, and select $translation.\n\n" + "Then write the word you want to translate, press \u25B6, " + "and the translation will be returned to you.", - hint = "If your second language is not $language, change the language in your keyboard.", requiresValidation = false, ), ) } fun verbConjugationSteps(languageCode: String): List { - val language = getLanguageName(languageCode) + val conjugation = + when (languageCode) { + "en" -> "Conjugate" + "es" -> "Conjugar" + "fr" -> "Conjuguer" + "it" -> "Coniugare" + "pt" -> "Conjugar" + "ru" -> "Спрягать" + "sv" -> "Konjugera" + else -> "Konjugieren" + } return listOf( TutorialStep( instruction = - "On to the verbs. Tap the \u27A1 Scribe key on the top-left " + - "corner of your keyboard, and select Konjugieren.\n\n" + + "On to the verbs. Tap the pencil-like Scribe key on the top-left " + + "corner of your keyboard, and select $conjugation.\n\n" + "Write the verb you want to conjugate, press \u25B6, and " + "you will see a table with all the verb tenses. Select " + "the one you need and it will be inserted!", - hint = "If your second language is not $language, change the language in your keyboard.", requiresValidation = false, ), ) } fun nounPluralsSteps(languageCode: String): List { - val language = getLanguageName(languageCode) + val plural = + when (languageCode) { + "en" -> "Plural" + "es" -> "Plural" + "fr" -> "Pluriel" + "it" -> "Plurale" + "pt" -> "Plural" + "ru" -> "Множ-ое" + "sv" -> "Plural" + else -> "Plural" + } return listOf( TutorialStep( instruction = "Finding the plural of a noun with Scribe is easy. Tap " + "the \u27A1 Scribe key on the top-left corner of your " + - "keyboard, and select Plural.\n\n" + + "keyboard, and select $plural.\n\n" + "Then write the noun you want the plural for, press " + "\u25B6, and the plural will be returned to you.", - hint = "If your second language is not $language, change the language in your keyboard.", requiresValidation = false, ), ) diff --git a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialStepScreen.kt b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialStepScreen.kt index 6f2c725e..c9706e49 100644 --- a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialStepScreen.kt +++ b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialStepScreen.kt @@ -77,7 +77,7 @@ enum class InputValidationState { data class TutorialStep( val instruction: String, val expectedWord: String = "", - val hint: String = "If your second language is not German, change the language in your keyboard.", + val hint: String = "", val successMessage: String = "Great! Press Next to continue.", val errorMessage: String = "", val requiresValidation: Boolean = true, @@ -171,7 +171,7 @@ fun TutorialStepScreen( when { !step.requiresValidation -> InputValidationState.CORRECT userInput.isEmpty() -> InputValidationState.EMPTY - userInput.trim().equals(step.expectedWord, ignoreCase = false) -> InputValidationState.CORRECT + userInput.trim().equals(step.expectedWord, ignoreCase = true) -> InputValidationState.CORRECT else -> InputValidationState.INCORRECT } @@ -254,19 +254,21 @@ fun TutorialStepScreen( Spacer(modifier = Modifier.height(12.dp)) // Language hint - Row( - verticalAlignment = Alignment.Top, - ) { - Text( - text = "\uD83C\uDF10 ", - fontSize = 14.sp, - ) - Text( - text = step.hint, - color = textSecondaryColor, - fontSize = 13.sp, - lineHeight = 18.sp, - ) + if (step.hint.isNotEmpty()) { + Row( + verticalAlignment = Alignment.Top, + ) { + Text( + text = "\uD83C\uDF10 ", + fontSize = 14.sp, + ) + Text( + text = step.hint, + color = textSecondaryColor, + fontSize = 13.sp, + lineHeight = 18.sp, + ) + } } Spacer(modifier = Modifier.height(16.dp)) @@ -325,7 +327,7 @@ fun TutorialStepScreen( } } - Spacer(modifier = Modifier.weight(1f)) + Spacer(modifier = Modifier.height(32.dp)) // Next / Finish button Button( From ddf96408dbd5ee15ddefc65f9d0b7f512686de01 Mon Sep 17 00:00:00 2001 From: ashb155 Date: Sat, 25 Jul 2026 04:01:24 +0530 Subject: [PATCH 4/8] i18n update --- app/src/main/assets/i18n | 2 +- app/src/main/java/be/scri/App.kt | 6 +- .../be/scri/ui/screens/InstallationScreen.kt | 2 +- .../be/scri/ui/screens/about/AboutUtil.kt | 2 +- .../ui/screens/tutorial/TutorialContent.kt | 55 ++++--- .../ui/screens/tutorial/TutorialHomeScreen.kt | 22 +-- .../ui/screens/tutorial/TutorialNavigator.kt | 2 +- .../ui/screens/tutorial/TutorialStepScreen.kt | 9 +- .../screens/tutorial/WrongKeyboardScreen.kt | 8 +- app/src/main/res/values-ar/string.xml | 4 +- app/src/main/res/values-bn/string.xml | 2 +- app/src/main/res/values-de/string.xml | 4 +- app/src/main/res/values-el/string.xml | 4 +- app/src/main/res/values-es/string.xml | 4 +- app/src/main/res/values-fr/string.xml | 4 +- app/src/main/res/values-hi/string.xml | 4 +- app/src/main/res/values-id/string.xml | 4 +- app/src/main/res/values-in/string.xml | 4 +- app/src/main/res/values-kn/string.xml | 4 +- app/src/main/res/values-ko/string.xml | 4 +- app/src/main/res/values-ml/string.xml | 14 ++ app/src/main/res/values-mr/string.xml | 4 +- app/src/main/res/values-ne/string.xml | 143 ++++++++++++++++++ app/src/main/res/values-pt/string.xml | 4 +- app/src/main/res/values-sv/string.xml | 4 +- app/src/main/res/values-ta/string.xml | 4 +- app/src/main/res/values-tr/string.xml | 4 +- app/src/main/res/values/string.xml | 81 +++++++++- 28 files changed, 324 insertions(+), 84 deletions(-) diff --git a/app/src/main/assets/i18n b/app/src/main/assets/i18n index ef12a2bb..07c3dc20 160000 --- a/app/src/main/assets/i18n +++ b/app/src/main/assets/i18n @@ -1 +1 @@ -Subproject commit ef12a2bba6119f81f08001fb4f1adacc96c25d6c +Subproject commit 07c3dc20a8edb9ddd33d2fe1838fb03e00bd888f diff --git a/app/src/main/java/be/scri/App.kt b/app/src/main/java/be/scri/App.kt index 0eb31997..c52c7de5 100644 --- a/app/src/main/java/be/scri/App.kt +++ b/app/src/main/java/be/scri/App.kt @@ -235,7 +235,11 @@ fun ScribeApp( pagerState = pagerState, currentPageIndex = page, sharedPrefsKey = "hint_shown_settings", - hintMessageResId = R.string.i18n_app_settings_app_hint_tooltip, + hintMessageResId = if (be.scri.BuildConfig.FLAVOR == "conjugate") { + R.string.i18n_app_settings_conjugate_app_hint_tooltip + } else { + R.string.i18n_app_settings_keyboard_app_hint_tooltip + }, isHintChanged = isHintChanged[page] == true, onDismiss = { onDismiss(it) }, modifier = Modifier.padding(8.dp), diff --git a/app/src/main/java/be/scri/ui/screens/InstallationScreen.kt b/app/src/main/java/be/scri/ui/screens/InstallationScreen.kt index 23a0793f..898b6cac 100644 --- a/app/src/main/java/be/scri/ui/screens/InstallationScreen.kt +++ b/app/src/main/java/be/scri/ui/screens/InstallationScreen.kt @@ -320,7 +320,7 @@ fun InstallationScreen( ), ) { Text( - text = stringResource(R.string.i18n_app_installation_button_quick_tutorial), + text = stringResource(R.string.i18n_app__global_quick_tutorial), fontWeight = FontWeight.Bold, color = MaterialTheme.colorScheme.onPrimary, modifier = Modifier.padding(vertical = Dimensions.PaddingLarge), diff --git a/app/src/main/java/be/scri/ui/screens/about/AboutUtil.kt b/app/src/main/java/be/scri/ui/screens/about/AboutUtil.kt index 9782b47f..8f2933af 100644 --- a/app/src/main/java/be/scri/ui/screens/about/AboutUtil.kt +++ b/app/src/main/java/be/scri/ui/screens/about/AboutUtil.kt @@ -124,7 +124,7 @@ fun feedbackAndSupportList( listOf( ScribeItem.ExternalLinkItem( leadingIcon = R.drawable.tutorial, - title = R.string.i18n_app_installation_button_quick_tutorial, + title = R.string.i18n_app__global_quick_tutorial, trailingIcon = R.drawable.right_arrow, url = null, onClick = { onTutorialClick() }, diff --git a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt index 77c7560d..0f468448 100644 --- a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt +++ b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt @@ -2,6 +2,9 @@ package be.scri.ui.screens.tutorial +import android.content.Context +import be.scri.R + /** * Defines all tutorial chapters and their steps. * Each chapter contains one or more interactive steps that guide the user @@ -12,7 +15,7 @@ object TutorialContent { * Chapter 1: Noun Annotation. * Teaches users about gender tags that appear when typing nouns. */ - fun getNounAnnotationSteps(languageCode: String): List { + fun getNounAnnotationSteps(languageCode: String, context: Context): List { val (fatherWord, fatherTag, fatherGender) = when (languageCode) { "en" -> Triple("father", "M", "Masculine") @@ -40,16 +43,18 @@ object TutorialContent { return listOf( TutorialStep( instruction = - "Write the word \"$motherWord\". Notice the word suggestions " + - "that appear on the keyboard's top bar.\n\n" + - "Then, press space. You will see the word's gender " + - "tag on the keyboard's top bar \u2013 in this case, \"$motherTag\" for $motherGender.", + context.getString(R.string.i18n_app_keyboard_tutorial_noun_annotation_instruction_1) + .replace("{mother_word}", motherWord) + .replace("{mother_tag}", motherTag) + .replace("{mother_gender}", motherGender), expectedWord = motherWord, ), TutorialStep( instruction = - "Now write the word \"$fatherWord\" and then press space. " + - "The gender tag will be \"$fatherTag\", for $fatherGender.", + context.getString(R.string.i18n_app_keyboard_tutorial_noun_annotation_instruction_2) + .replace("{father_word}", fatherWord) + .replace("{father_tag}", fatherTag) + .replace("{father_gender}", fatherGender), expectedWord = fatherWord, ), ) @@ -59,7 +64,7 @@ object TutorialContent { * Chapter 2: Word Translation. * Teaches users how to use the Translate command via the Scribe key. */ - fun wordTranslationSteps(languageCode: String): List { + fun wordTranslationSteps(languageCode: String, context: Context): List { val translation = when (languageCode) { "en" -> "Translate" @@ -74,16 +79,14 @@ object TutorialContent { return listOf( TutorialStep( instruction = - "Let's translate! Tap the pencil-like Scribe key on the top-left " + - "corner of your keyboard, and select $translation.\n\n" + - "Then write the word you want to translate, press \u25B6, " + - "and the translation will be returned to you.", + context.getString(R.string.i18n_app_keyboard_tutorial_word_translation_instruction) + .replace("{translate}", translation), requiresValidation = false, ), ) } - fun verbConjugationSteps(languageCode: String): List { + fun verbConjugationSteps(languageCode: String, context: Context): List { val conjugation = when (languageCode) { "en" -> "Conjugate" @@ -98,17 +101,14 @@ object TutorialContent { return listOf( TutorialStep( instruction = - "On to the verbs. Tap the pencil-like Scribe key on the top-left " + - "corner of your keyboard, and select $conjugation.\n\n" + - "Write the verb you want to conjugate, press \u25B6, and " + - "you will see a table with all the verb tenses. Select " + - "the one you need and it will be inserted!", + context.getString(R.string.i18n_app_keyboard_tutorial_verb_conjugation_instruction) + .replace("{conjugate}", conjugation), requiresValidation = false, ), ) } - fun nounPluralsSteps(languageCode: String): List { + fun nounPluralsSteps(languageCode: String, context: Context): List { val plural = when (languageCode) { "en" -> "Plural" @@ -123,22 +123,19 @@ object TutorialContent { return listOf( TutorialStep( instruction = - "Finding the plural of a noun with Scribe is easy. Tap " + - "the \u27A1 Scribe key on the top-left corner of your " + - "keyboard, and select $plural.\n\n" + - "Then write the noun you want the plural for, press " + - "\u25B6, and the plural will be returned to you.", + context.getString(R.string.i18n_app_keyboard_tutorial_noun_plurals_instruction) + .replace("{plural}", plural), requiresValidation = false, ), ) } /** Returns all chapters as a list of pairs (title, steps). */ - fun getAllChapters(languageCode: String = "de"): List>> = + fun getAllChapters(languageCode: String = "de", context: Context): List>> = listOf( - "Noun annotation" to getNounAnnotationSteps(languageCode), - "Word translation" to wordTranslationSteps(languageCode), - "Verb conjugation" to verbConjugationSteps(languageCode), - "Noun plurals" to nounPluralsSteps(languageCode), + context.getString(R.string.i18n_app_keyboard_tutorial_noun_annotation) to getNounAnnotationSteps(languageCode, context), + context.getString(R.string.i18n_app_keyboard_tutorial_word_translation) to wordTranslationSteps(languageCode, context), + context.getString(R.string.i18n_app_keyboard_tutorial_verb_conjugation) to verbConjugationSteps(languageCode, context), + context.getString(R.string.i18n_app_keyboard_tutorial_noun_plurals) to nounPluralsSteps(languageCode, context), ) } diff --git a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialHomeScreen.kt b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialHomeScreen.kt index f8e70441..08bbe7cb 100644 --- a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialHomeScreen.kt +++ b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialHomeScreen.kt @@ -30,9 +30,11 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import be.scri.R /** * The tutorial home screen (Screen 0.0 from Figma). @@ -60,10 +62,10 @@ fun TutorialHomeScreen( val headerColor = MaterialTheme.colorScheme.onBackground val chapters = listOf( - TutorialChapter("Noun annotation", 0), - TutorialChapter("Word translation", 1), - TutorialChapter("Verb conjugation", 2), - TutorialChapter("Noun plurals", 3), + TutorialChapter(stringResource(R.string.i18n_app_keyboard_tutorial_noun_annotation), 0), + TutorialChapter(stringResource(R.string.i18n_app_keyboard_tutorial_word_translation), 1), + TutorialChapter(stringResource(R.string.i18n_app_keyboard_tutorial_verb_conjugation), 2), + TutorialChapter(stringResource(R.string.i18n_app_keyboard_tutorial_noun_plurals), 3), ) Column( @@ -85,7 +87,7 @@ fun TutorialHomeScreen( modifier = Modifier.size(24.dp), ) Text( - text = "About", + text = stringResource(R.string.i18n_app_about_title), color = MaterialTheme.colorScheme.onBackground, fontSize = 16.sp, ) @@ -93,7 +95,7 @@ fun TutorialHomeScreen( Spacer(modifier = Modifier.height(24.dp)) Text( - text = "Quick tutorial", + text = stringResource(R.string.i18n_app__global_quick_tutorial), color = headerColor, fontSize = 28.sp, fontWeight = FontWeight.Bold, @@ -109,9 +111,7 @@ fun TutorialHomeScreen( modifier = Modifier.fillMaxWidth(), ) { Text( - text = - "This quick tutorial will show you how to use Scribe to support writing in your second language. " + - "\nMake sure you select the desired Scribe keyboard by pressing \uD83C\uDF10 when typing.", + text = stringResource(R.string.i18n_app_keyboard_tutorial_description), color = textColor, fontSize = 14.sp, modifier = Modifier.padding(16.dp), @@ -122,7 +122,7 @@ fun TutorialHomeScreen( // Tutorial chapters header Text( - text = "Tutorial chapters", + text = stringResource(R.string.i18n_app_keyboard_tutorial_chapters), color = textColor, fontSize = 18.sp, fontWeight = FontWeight.Bold, @@ -185,7 +185,7 @@ fun TutorialHomeScreen( .height(52.dp), ) { Text( - text = "Start full tutorial", + text = stringResource(R.string.i18n_app_keyboard_tutorial_start_full_tutorial), fontSize = 18.sp, fontWeight = FontWeight.SemiBold, ) diff --git a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialNavigator.kt b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialNavigator.kt index 71d6cc8c..ecbadfe8 100644 --- a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialNavigator.kt +++ b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialNavigator.kt @@ -85,7 +85,7 @@ fun TutorialNavigator( val allChapters = remember(activeLanguageCode) { - TutorialContent.getAllChapters(activeLanguageCode) + TutorialContent.getAllChapters(activeLanguageCode, context) } BackHandler { diff --git a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialStepScreen.kt b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialStepScreen.kt index c9706e49..75ced7ce 100644 --- a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialStepScreen.kt +++ b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialStepScreen.kt @@ -41,8 +41,10 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight +import be.scri.R import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.Lifecycle @@ -179,7 +181,8 @@ fun TutorialStepScreen( if (step.errorMessage.isNotEmpty()) { step.errorMessage } else { - "Not quite! Try writing ${step.expectedWord}." + stringResource(R.string.i18n_app_keyboard_tutorial_not_quite) + .replace("{expected_word}", step.expectedWord) } Column( @@ -208,7 +211,7 @@ fun TutorialStepScreen( modifier = Modifier.size(24.dp), ) Text( - text = "Quick tutorial", + text = stringResource(R.string.i18n_app__global_quick_tutorial), color = headerColor, fontSize = 16.sp, ) @@ -348,7 +351,7 @@ fun TutorialStepScreen( .height(52.dp), ) { Text( - text = if (isLastStep) "Finish tutorial" else "Next", + text = if (isLastStep) stringResource(R.string.i18n_app_keyboard_tutorial_finish_tutorial) else stringResource(R.string.i18n_app_keyboard_tutorial_next), fontSize = 18.sp, fontWeight = FontWeight.SemiBold, ) diff --git a/app/src/main/java/be/scri/ui/screens/tutorial/WrongKeyboardScreen.kt b/app/src/main/java/be/scri/ui/screens/tutorial/WrongKeyboardScreen.kt index f0975828..71a77846 100644 --- a/app/src/main/java/be/scri/ui/screens/tutorial/WrongKeyboardScreen.kt +++ b/app/src/main/java/be/scri/ui/screens/tutorial/WrongKeyboardScreen.kt @@ -35,10 +35,12 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.platform.LocalSoftwareKeyboardController +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import be.scri.R /** * Screen displayed when the user has a non-Scribe keyboard active during the tutorial. @@ -100,7 +102,7 @@ fun WrongKeyboardScreen( modifier = Modifier.size(24.dp), ) Text( - text = "Quick tutorial", + text = stringResource(R.string.i18n_app__global_quick_tutorial), color = headerColor, fontSize = 16.sp, ) @@ -109,7 +111,7 @@ fun WrongKeyboardScreen( // Title Text( - text = "Non-Scribe keyboard", + text = stringResource(R.string.i18n_app_keyboard_tutorial_non_scribe_keyboard), color = headerColor, fontSize = 28.sp, fontWeight = FontWeight.Bold, @@ -132,7 +134,7 @@ fun WrongKeyboardScreen( ) { // Instruction text Text( - text = "Press the \uD83C\uDF10 button to select a Scribe keyboard.", + text = stringResource(R.string.i18n_app_keyboard_tutorial_select_keyboard), color = textColor, fontSize = 15.sp, lineHeight = 22.sp, diff --git a/app/src/main/res/values-ar/string.xml b/app/src/main/res/values-ar/string.xml index 15d67f34..cf303d8b 100644 --- a/app/src/main/res/values-ar/string.xml +++ b/app/src/main/res/values-ar/string.xml @@ -8,6 +8,7 @@ الألمانية الإيطالية البرتغالية + دليل سريع الروسية الإسبانية السويدية @@ -58,7 +59,6 @@ تحقق من البيانات الجديدة تحديث البيانات بانتظام اتبع التعليمات أدناه لتثبيت لوحات مفاتيح Scribe على جهازك. - دليل سريع افتح إعدادات لوحة المفاتيح لوحات المفاتيح افتح إعدادات Scribe @@ -68,7 +68,6 @@ لاختيار لوحات المفاتيح تثبيت لوحة المفاتيح تثبيت - توجد إعدادات التطبيق ولوحات المفاتيح اللغوية المثبتة هنا. تثبيت لوحات المفاتيح توضيح الاقتراحات/الاكتمال تسطير الاقتراحات والاكتملات لإظهار جنسها أثناء الكتابة. @@ -107,6 +106,7 @@ لغة الترجمة تغيير اللغة للترجمة منها. لغة مصدر الترجمة + توجد إعدادات التطبيق ولوحات المفاتيح اللغوية المثبتة هنا. الوضع الداكن تغيير عرض التطبيق إلى الوضع الداكن. لغة التطبيق diff --git a/app/src/main/res/values-bn/string.xml b/app/src/main/res/values-bn/string.xml index 2a3e9015..86c1e7a6 100644 --- a/app/src/main/res/values-bn/string.xml +++ b/app/src/main/res/values-bn/string.xml @@ -13,6 +13,7 @@ জার্মান ইতালীয় পর্তুগিজ + দ্রুত টিউটোরিয়াল রুশ স্প্যানিশ সুইডিশ @@ -63,7 +64,6 @@ নতুন ডেটার জন্য চেক করুন নিয়মিত ডেটা আপডেট করুন আপনার ডিভাইসে Scribe কীবোর্ড ইনস্টল করতে নিচের নির্দেশনাগুলি অনুসরণ করুন। - দ্রুত টিউটোরিয়াল কীবোর্ড সেটিংস খুলুন কীবোর্ডসমূহ Scribe সেটিংস খুলুন diff --git a/app/src/main/res/values-de/string.xml b/app/src/main/res/values-de/string.xml index 2bf61ca5..cbad4116 100644 --- a/app/src/main/res/values-de/string.xml +++ b/app/src/main/res/values-de/string.xml @@ -20,6 +20,7 @@ Italienisch Norwegisch Portugiesisch + Schnelltutorial Russisch Spanisch Schwedisch @@ -74,7 +75,6 @@ Nach neuen Daten prüfen Regelmäßig Daten aktualisieren Folge den Anweisungen unten, um Scribe-Tastaturen auf deinem Gerät zu installieren. - Schnelltutorial Tastatureinstellungen öffnen Tastaturen Scribe-Einstellungen öffnen @@ -84,7 +84,6 @@ um Tastaturen auszuwählen Tastaturinstallation Installation - Hier sind die Einstellungen der App und installierte Tastaturen zu finden. Tastaturen installieren Vorschläge annotieren Vorschläge unterstreichen, um ihr Genus beim Tippen anzuzeigen. @@ -125,6 +124,7 @@ Übersetzungssprache Wähle die Sprache, von der übersetzt wird. Ausgangssprache für die Übersetzung + Hier sind die Einstellungen der App und installierte Tastaturen zu finden. Dunkler Modus Die App-Darstellung auf dunkel umstellen. App-Sprache diff --git a/app/src/main/res/values-el/string.xml b/app/src/main/res/values-el/string.xml index 9778bdc2..9b9dfa76 100644 --- a/app/src/main/res/values-el/string.xml +++ b/app/src/main/res/values-el/string.xml @@ -26,6 +26,7 @@ Ιταλικά Νορβηγικά Πορτογαλικά + Γρήγορο μάθημα Ρωσικά Ισπανικά Σουηδικά @@ -83,7 +84,6 @@ Έλεγχος για νέα δεδομένα Τακτική ενημέρωση δεδομένων Ακολουθήστε τις παρακάτω οδηγίες για να εγκαταστήσετε πληκτρολόγια Scribe στη συσκευή σας. - Γρήγορο μάθημα Άνοιγμα ρυθμίσεων πληκτρολογίου Πληκτρολόγια Άνοιγμα ρυθμίσεων Scribe @@ -93,7 +93,6 @@ για να επιλέξετε πληκτρολόγια Εγκατάσταση πληκτρολογίου Εγκατάσταση - Οι ρυθμίσεις για την εφαρμογή και τα εγκατεστημένα πληκτρολόγια γλώσσας βρίσκονται εδώ. Εγκατάσταση πληκτρολογίων Σήμανση προτάσεων/συμπληρώσεων Υπογράμμιση προτάσεων και συμπληρώσεων για εμφάνιση του γένους τους καθώς πληκτρολογείτε. @@ -136,6 +135,7 @@ Γλώσσα μετάφρασης Αλλαγή της γλώσσας από την οποία γίνεται η μετάφραση. Γλώσσα πηγής μετάφρασης + Οι ρυθμίσεις για την εφαρμογή και τα εγκατεστημένα πληκτρολόγια γλώσσας βρίσκονται εδώ. Σκοτεινή λειτουργία Αλλαγή της εμφάνισης της εφαρμογής σε σκοτεινή λειτουργία. Γλώσσα εφαρμογής diff --git a/app/src/main/res/values-es/string.xml b/app/src/main/res/values-es/string.xml index 45b1fbe6..b3ddc558 100644 --- a/app/src/main/res/values-es/string.xml +++ b/app/src/main/res/values-es/string.xml @@ -8,6 +8,7 @@ Alemán Italiano Portugués + Tutorial rápido Ruso Español Sueco @@ -58,7 +59,6 @@ Verificar si hay nuevos datos Actualizar datos periódicamente Sigue las instrucciones para instalar los teclados Scribe en tu dispositivo. - Tutorial rápido Abrir los ajustes del teclado Teclados Abrir la configuración de Scribe @@ -68,7 +68,6 @@ para seleccionar teclados Instalación del teclado Instalación - La configuración de la aplicación y los teclados de idiomas instalados se encuentran aquí. Instalar teclados Anotar, sugerir/completar Subraya sugerencias y terminaciones para mostrar sus géneros mientras escribes. @@ -107,6 +106,7 @@ Idioma de la traducción Elige un idioma para traducir Idioma de origen de la traducción + La configuración de la aplicación y los teclados de idiomas instalados se encuentran aquí. Modo oscuro Cambia la visualización de la aplicación al modo oscuro. Idioma de la aplicación diff --git a/app/src/main/res/values-fr/string.xml b/app/src/main/res/values-fr/string.xml index af6a5a5e..7545eec2 100644 --- a/app/src/main/res/values-fr/string.xml +++ b/app/src/main/res/values-fr/string.xml @@ -8,6 +8,7 @@ Allemand Italien Portugais + Tutoriel rapide Russe Espagnol Suédois @@ -58,7 +59,6 @@ Vérifier s\'il y a de nouvelles données Mettre à jour les données régulièrement Suivez les indications ci-dessous pour installer les claviers Scribe sur votre appareil. - Tutoriel rapide Ouvrez les paramètres du clavier Claviers Ouvrez les paramètres de Scribe @@ -68,7 +68,6 @@ pour sélectionner le clavier Installation du clavier Installation - Les paramètres de l\'application et des claviers linguistiques installés se trouvent ici. Installer les claviers Annoter, suggérer/compléter Souligner les suggestions et les complétions pour indiquer leur genre au fur et à mesure de la saisie. @@ -107,6 +106,7 @@ Langue de traduction Modifier la langue à partir de laquelle la traduction doit être effectuée. Langue source de la traduction + Les paramètres de l\'application et des claviers linguistiques installés se trouvent ici. Thème sombre Modifier l\'affichage de l\'application en mode sombre. Langue de l\'application diff --git a/app/src/main/res/values-hi/string.xml b/app/src/main/res/values-hi/string.xml index af6fd674..085262f7 100644 --- a/app/src/main/res/values-hi/string.xml +++ b/app/src/main/res/values-hi/string.xml @@ -14,6 +14,7 @@ जर्मन इतालवी पुर्तगाली + त्वरित ट्यूटोरियल रूसी स्पेनिश स्वीडिश @@ -64,7 +65,6 @@ नए डेटा की जांच करें नियमित रूप से डेटा अपडेट करें अपने डिवाइस पर स्क्राइब कीबोर्ड इंस्टॉल करने के लिए नीचे दिए गए निर्देशों का पालन करें। - त्वरित ट्यूटोरियल कीबोर्ड सेटिंग्स खोलें कीबोर्ड स्क्राइब सेटिंग्स खोलें @@ -74,7 +74,6 @@ कीबोर्ड चुनने के लिए कीबोर्ड इंस्टॉलेशन इंस्टॉलेशन - ऐप और इंस्टॉल किए गए भाषा कीबोर्ड की सेटिंग्स यहाँ मिलेंगी। कीबोर्ड इंस्टॉल करें अनोटेट सुझाव/समाप्ति टाइप करते समय सुझाव और समाप्ति को रेखांकित करें ताकि उनके लिंग दिख सकें। @@ -113,6 +112,7 @@ अनुवाद भाषा जिस भाषा से अनुवाद करना है, उसे बदलें। अनुवाद स्रोत भाषा + ऐप और इंस्टॉल किए गए भाषा कीबोर्ड की सेटिंग्स यहाँ मिलेंगी। डार्क मोड ऐप प्रदर्शनी को डार्क मोड में बदलें। ऐप की भाषा diff --git a/app/src/main/res/values-id/string.xml b/app/src/main/res/values-id/string.xml index 81807940..fc7eedf6 100644 --- a/app/src/main/res/values-id/string.xml +++ b/app/src/main/res/values-id/string.xml @@ -8,6 +8,7 @@ Bahasa Jerman Bahasa Italia Bahasa Portugis + Tutorial singkat Bahasa Rusia Bahasa Spanyol Bahasa Swedia @@ -58,7 +59,6 @@ Periksa data baru Perbarui data secara rutin Ikuti petunjuk di bawah untuk memasang keyboard Scribe di perangkatmu. - Tutorial singkat Buka pengaturan keyboard Keyboard Buka pengaturan Scribe @@ -68,7 +68,6 @@ untuk memilih keyboard Instalasi Keyboard Instalasi - Pengaturan aplikasi dan keyboard bahasa yang terpasang bisa ditemukan di sini. Pasang keyboard Anotasi saran/pelengkapan Garis bawahi saran dan pelengkapan kata untuk menunjukkan gender saat kamu mengetik. @@ -107,6 +106,7 @@ Bahasa terjemahan Ubah bahasa untuk diterjemahkan dari. Bahasa asal terjemahan + Pengaturan aplikasi dan keyboard bahasa yang terpasang bisa ditemukan di sini. Mode gelap Aktifkan mode gelap untuk tampilan aplikasi. Bahasa aplikasi diff --git a/app/src/main/res/values-in/string.xml b/app/src/main/res/values-in/string.xml index 81807940..fc7eedf6 100644 --- a/app/src/main/res/values-in/string.xml +++ b/app/src/main/res/values-in/string.xml @@ -8,6 +8,7 @@ Bahasa Jerman Bahasa Italia Bahasa Portugis + Tutorial singkat Bahasa Rusia Bahasa Spanyol Bahasa Swedia @@ -58,7 +59,6 @@ Periksa data baru Perbarui data secara rutin Ikuti petunjuk di bawah untuk memasang keyboard Scribe di perangkatmu. - Tutorial singkat Buka pengaturan keyboard Keyboard Buka pengaturan Scribe @@ -68,7 +68,6 @@ untuk memilih keyboard Instalasi Keyboard Instalasi - Pengaturan aplikasi dan keyboard bahasa yang terpasang bisa ditemukan di sini. Pasang keyboard Anotasi saran/pelengkapan Garis bawahi saran dan pelengkapan kata untuk menunjukkan gender saat kamu mengetik. @@ -107,6 +106,7 @@ Bahasa terjemahan Ubah bahasa untuk diterjemahkan dari. Bahasa asal terjemahan + Pengaturan aplikasi dan keyboard bahasa yang terpasang bisa ditemukan di sini. Mode gelap Aktifkan mode gelap untuk tampilan aplikasi. Bahasa aplikasi diff --git a/app/src/main/res/values-kn/string.xml b/app/src/main/res/values-kn/string.xml index 93173914..4aecbbaa 100644 --- a/app/src/main/res/values-kn/string.xml +++ b/app/src/main/res/values-kn/string.xml @@ -8,6 +8,7 @@ ಜರ್ಮನ್ ಇಟಾಲಿಯನ್ ಪೋರ್ಚುಗೀಸ್ + ತ್ವರಿತ ಟ್ಯುಟೋರಿಯಲ್ ರಷ್ಯನ್ ಸ್ಪ್ಯಾನಿಷ್ ಸ್ವೀಡಿಷ್ @@ -58,7 +59,6 @@ ಹೊಸ ದತ್ತಾಂಶಕ್ಕಾಗಿ ಪರಿಶೀಲಿಸಿ ದತ್ತಾಂಶವನ್ನು ನಿಯಮಿತವಾಗಿ ನವೀಕರಿಸಿ ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ Scribe ಕೀಬೋರ್ಡ್‌ಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಕೆಳಗಿನ ಸೂಚನೆಗಳನ್ನು ಅನುಸರಿಸಿ. - ತ್ವರಿತ ಟ್ಯುಟೋರಿಯಲ್ ಕೀಬೋರ್ಡ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಿರಿ ಕೀಬೋರ್ಡ್‌ಗಳು Scribe ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಿರಿ @@ -68,7 +68,6 @@ ಕೀಬೋರ್ಡ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಕೀಬೋರ್ಡ್ ಇನ್‌ಸ್ಟಾಲೇಷನ್ ಇನ್‌ಸ್ಟಾಲೇಷನ್ - ಅಪ್ಲಿಕೇಶನ್ ಮತ್ತು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿದ ಭಾಷಾ ಕೀಬೋರ್ಡ್‌ಗಳಿಗಾಗಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಇಲ್ಲಿ ಲಭ್ಯವಿದೆ. ಕೀಬೋರ್ಡ್‌ಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ ಸೂಚನೆಗಳನ್ನು ಎದ್ದುಕಾಣುವಂತೆ ಮಾಡಿ ನೀವು ಟೈಪ್ ಮಾಡುವಾಗ ಅವುಗಳ ಲಿಂಗಗಳನ್ನು ತೋರಿಸಲು ಸೂಚನೆಗಳು ಮತ್ತು ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಯನ್ನು ಅಂಡರ್‌ಲೈನ್ ಮಾಡಿ. @@ -109,6 +108,7 @@ ಅನುವಾದ ಭಾಷೆ ಯಾವ ಭಾಷೆಯಿಂದ ಅನುವಾದಿಸಬೇಕು ಎಂಬುದನ್ನು ಬದಲಾಯಿಸಿ. ಅನುವಾದ ಮೂಲ ಭಾಷೆ + ಅಪ್ಲಿಕೇಶನ್ ಮತ್ತು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿದ ಭಾಷಾ ಕೀಬೋರ್ಡ್‌ಗಳಿಗಾಗಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಇಲ್ಲಿ ಲಭ್ಯವಿದೆ. ಡಾರ್ಕ್ ಮೋಡ್ ಅಪ್ಲಿಕೇಶನ್ ಪ್ರದರ್ಶನವನ್ನು ಡಾರ್ಕ್ ಮೋಡ್‌ಗೆ ಬದಲಾಯಿಸಿ. ಆಪ್ ಭಾಷೆ diff --git a/app/src/main/res/values-ko/string.xml b/app/src/main/res/values-ko/string.xml index 4fc56a66..54a4440d 100644 --- a/app/src/main/res/values-ko/string.xml +++ b/app/src/main/res/values-ko/string.xml @@ -8,6 +8,7 @@ 독일어 이탈리아어 포르투갈어 + 빠른 튜토리얼 러시아어 스페인어 스웨덴어 @@ -58,7 +59,6 @@ 새로운 데이터 확인하기 정기적으로 데이터 업데이트히기 아래 지침에 따라 Scribe 키보드를 기기에 설치하세요. - 빠른 튜토리얼 키보드 설정 열기 키보드 Scribe 설정 열기 @@ -68,7 +68,6 @@ 키보드를 선택할 수 있습니다. 키보드 설치 설치 - 앱 설정과 설치된 언어 키보드는 여기서 찾을 수 있습니다. 키보드 설치하기 추천 및 완성 설명 입력 시 성별에 따라 다른 단어가 제안될 때, 해당 단어에 밑줄 쳐서 성별을 나타낸다. @@ -107,6 +106,7 @@ 번역 언어 번역할 언어를 변경하세요. 번역할 언어 + 앱 설정과 설치된 언어 키보드는 여기서 찾을 수 있습니다. 다크 모드 앱 디스플레이를 다크 모드로 변경합니다. 언어 설정 diff --git a/app/src/main/res/values-ml/string.xml b/app/src/main/res/values-ml/string.xml index 4a51beba..d5290478 100644 --- a/app/src/main/res/values-ml/string.xml +++ b/app/src/main/res/values-ml/string.xml @@ -1,10 +1,24 @@ കുറിച്ച് + ആൻഡ്രോയിഡ് മാറ്റങ്ങളുടെ ലോഗ് + ലഭ്യമായ ഡാറ്റ + ബ്ലോഗ് പോസ്റ്റുകൾ + മാറ്റങ്ങളുടെ ലോഗ് + കോൺജുഗേറ്റ് ആപ്പുകൾ ഇൻഫ്രാസ്ട്രക്ചർ + ഡാറ്റാ സെർവർ മുദ്ര + ഐ.ഒ.എസ് മാറ്റങ്ങളുടെ ലോഗ് + കീബോർഡ് ആപ്പുകൾ കൂടുതൽ അറിയുക + നിയമപരം + ഞങ്ങളുടെ സമൂഹം സ്വകാര്യതാ നയം പിന്തുണക്കാർ വ്യാപാരമുദ്ര നയം + പരിശോധിക്കുക + എല്ലാം മായ്‌ക്കുക + സ്ഥിരീകരണം + ഇല്ലാതാക്കുക diff --git a/app/src/main/res/values-mr/string.xml b/app/src/main/res/values-mr/string.xml index 89799779..ebcc8795 100644 --- a/app/src/main/res/values-mr/string.xml +++ b/app/src/main/res/values-mr/string.xml @@ -8,6 +8,7 @@ जर्मन इटालियन पोर्तुगीज + त्वरित ट्युटोरियल रशियन स्पॅनिश स्वीडिश @@ -58,7 +59,6 @@ नवीन डेटाची तपासणी करा नियमित डेटा अद्ययावत करा तुमच्या डिव्हाइसवर स्क्राइब कीबोर्ड इंस्टॉल करण्यासाठी खालील सूचनांचे पालन करा. - त्वरित ट्युटोरियल कीबोर्ड सेटिंग्ज उघडा कीबोर्ड स्क्राइब सेटिंग्ज उघडा @@ -68,7 +68,6 @@ कीबोर्ड निवडण्यासाठी कीबोर्ड इंस्टॉलेशन इंस्टॉलेशन - अ‍ॅप आणि इंस्टॉल केलेल्या भाषा कीबोर्डची सेटिंग्ज इथे मिळतील. कीबोर्ड इंस्टॉल करा सुचवण्या/समाप्ति वर्णन करा टाइप करताना सुचवण्या आणि समाप्ति रेखांकित करा जेणेकरून त्यांच्या लिंगाची माहिती मिळू शकेल. @@ -107,6 +106,7 @@ अनुवाद भाषा अनुवाद करायची भाषा बदला. अनुवाद स्रोत भाषा + अ‍ॅप आणि इंस्टॉल केलेल्या भाषा कीबोर्डची सेटिंग्ज इथे मिळतील. डार्क मोड अ‍ॅप डिस्प्ले डार्क मोडमध्ये बदला. अ‍ॅपची भाषा diff --git a/app/src/main/res/values-ne/string.xml b/app/src/main/res/values-ne/string.xml index 790ec6ac..42a7e59f 100644 --- a/app/src/main/res/values-ne/string.xml +++ b/app/src/main/res/values-ne/string.xml @@ -1,10 +1,153 @@ बारेमा + Android चेन्जलग + उपलब्ध डेटा + ब्लग पोस्टहरू + परिवर्तन लग + कन्जुगेट एप्स पूर्वाधार + डेटा सर्भर छाप + iOS परिवर्तन लग + किबोर्ड एप्स थप जान्नुहोस् + कानुनी + हाम्रो समुदाय गोपनीयता नीति + स्क्राइबलाई समर्थन गर्नुहोस् समर्थकहरू ट्रेडमार्क नीति + डेटा डाउनलोड गर्नुहोस् + अंग्रेजी + फ्रान्सेली + जर्मन + इन्डोनेसियन + इटालियन + नर्वेजियन + पोर्चुगिज + छिटो ट्युटोरियल + रसियन + स्पेनिस् + स्विडिस् + यहाँ तपाईंले स्क्राइब र यसको समुदायबारे थप जान्न सक्नुहुन्छ। + गिटहबमा कोड हेर्नुहोस् + मास्टोडनमा फलो गर्नुहोस् + म्याट्रिक्समा टिमसँग कुराकानी गर्नुहोस् + स्क्राइब कन्जुगेट साझा गर्नुहोस् + स्क्राइब साझा गर्नुहोस् + समुदाय + स्क्राइब वेबसाइट भ्रमण गर्नुहोस् + विकिमिडिया र स्क्राइब + हामी कसरी साथ मिलेर काम गर्छौं + विकिमिडिया योगदानकर्ताहरूको अनगिन्ती योगदान बिना स्क्राइब सम्भव हुने थिएन। स्क्राइबले विकिडेटा शब्दकोश डेटा समुदायको डेटा र स्क्राइबले समर्थन गर्ने प्रत्येक भाषाका लागि विकिपिडियाको डेटा उपयोग गर्छ। + विकिडेटा विकिमिडिया फाउन्डेसनद्वारा संचालित सहयोगी रूपमा सम्पादित बहुभाषिक ज्ञान ग्राफ हो। यसले CC0 लाइसेन्स अन्तर्गत स्वतन्त्र रूपमा उपलब्ध डेटा प्रदान गर्छ। + विकिपिडिया स्वयंसेवकहरूको समुदायद्वारा लेखित र संचालित बहुभाषिक मुक्त ऑनलाइन विश्वकोश हो। स्क्राइबले भाषामा सबैभन्दा सामान्य शब्दहरू निकाल्न विकिपिडियाको डेटा उपयोग गर्छ। + बग रिपोर्ट गर्नुहोस् + स्क्राइब कन्जुगेटलाई मूल्याङ्कन गर्नुहोस् + स्क्राइबलाई मूल्याङ्कन गर्नुहोस् + एप संकेतहरू रिसेट गर्नुहोस् + हामीलाई इमेल पठाउनुहोस् + प्रतिक्रिया र समर्थन + संस्करण + तपाईंलाई सुरक्षित राख्दै + कृपया ध्यान दिनुहोस् कि यस नीतिको अंग्रेजी संस्करण अन्य सबै संस्करणभन्दा माथि रहन्छ। + तृतीय-पक्ष लाइसेन्सहरू + हामीले कुन कोड प्रयोग गर्यौं + Custom Keyboard\n• लेखक: EthanSK\n• लाइसेन्स: MIT\n• लिङ्क: https://github.com/EthanSK/CustomKeyboard/blob/master/LICENSE + Simple Keyboard\n• लेखक: Simple Mobile Tools\n• लाइसेन्स: GPL-3.0\n• लिङ्क: https://github.com/SimpleMobileTools/Simple-Keyboard/blob/main/LICENSE + स्क्राइब विकासकर्ताहरूले तृतीय-पक्ष कोड प्रयोग गरेर iOS एप्लिकेसन बनाएका छन्। + बारेमा + काल चयन गर्नुहोस् + तलको कन्जुगेसन चयन गर्नुहोस् + हालै कन्जुगेट गरिएका + कन्जुगेट + क्रियाहरू खोज्नुहोस् + क्रियाहरू कन्जुगेट गर्नुहोस् + स्क्राइब कन्जुगेटमा नयाँ डेटा थप्नुहोस्। + क्रिया डेटा डाउनलोड गर्नुहोस् + कन्जुगेट सुरु गर्न डेटा डाउनलोड गर्नुहोस्! + क्रिया डेटा + स्क्राइब किबोर्डमा नयाँ डेटा थप्नुहोस्। + किबोर्ड डेटा डाउनलोड गर्नुहोस् + भाषा डेटा + सबै भाषाहरू + डाउनलोड हुँदैछ + डाउनलोड गर्न डेटा चयन गर्नुहोस् + अद्यावधिक + अपडेट गर्नुहोस् + तपाईंसँग हाल कुनै स्क्राइब किबोर्ड स्थापना गरिएको छैन। किबोर्ड स्थापना गर्न तलको बटन क्लिक गर्नुहोस्। + भाषा बद्ल्नुहोस् + तपाईंले डाउनलोड गर्नुहुने डेटाले तपाईंलाई {source_language} बाट {target_language} मा अनुवाद गर्न दिनेछ। क्षमा गर्नुहोस्, कुन भाषाबाट अनुवाद गर्ने भाषा बद्ल्नुहुन्छ? + {source_language} प्रयोग गर्नुहोस् + डेटा अपडेट गर्नुहोस् + नयाँ डेटा जाँच गर्नुहोस् + नियमित रूपमा डेटा अपडेट गर्नुहोस् + तपाईंको उपकरणमा स्क्राइब किबोर्ड स्थापना गर्न तलका निर्देशनहरू पालना गर्नुहोस्। + किबोर्ड सेटिङ्स खोल्नुहोस् + किबोर्डहरू + स्क्राइब सेटिङ्स खोल्नुहोस् + चयन गर्नुहोस् + तपाईंले प्रयोग गर्न चाहनुभएका किबोर्डहरू सक्रिय गर्नुहोस् + टाइप गर्दा, थिच्नुहोस् + किबोर्ड चयन गर्न + किबोर्ड स्थापना + स्थापना + किबोर्ड स्थापना गर्नुहोस् + सुझाव/पूर्ण गर्नुहोस् टिप्पणी गर्नुहोस् + टाइप गर्दा लिङ्ग देखाउन सुझाव र पूर्णताहरूलाई रेखाङ्कन गर्नुहोस्। + इमोजी स्वतः सुझाव + थप अभिव्यक्तिपूर्ण टाइपिङ्का लागि इमोजी सुझाव र पूर्णता चालू गर्नुहोस्। + पूर्वनिर्धारित इमोजी चमडाको रङ + प्रयोग गरिने चमडाको रङ + इमोजी स्वतः सुझाव र पूर्णताका लागि पूर्वनिर्धारित चमडाको रङ सेट गर्नुहोस्। + लंबो थिच्नेमा शब्द दर शब्द मेट्नुहोस् + मेट्ने कुञजी थिचिरहेको बेला शब्द दर शब्द पाठ मेट्नुहोस्। + दोहोरो स्पेस पिरियड + स्पेस कुञजी दुई पटक थिच्नेमा स्वतः पिरियड राख्नुहोस्। + वैकल्पिक अक्षरहरूका लागि थिच्नुहोस् + कुञजीहरू थिचेर इच्छित अक्षरमा तानेर वैकल्पिक अक्षरहरू चयन गर्नुहोस्। + कुञजी थिच्नेमा पपअप देखाउनुहोस् + कुञजीहरू थिचिएको बेला पपअप देखाउनुहोस्। + विराम चिह्न स्पेसिङ् मेट्नुहोस् + विराम चिह्नहरूअगाडि अतिरिक्त स्पेस हटाउनुहोस्। + कार्यक्षमता + कुञजी थिच्नेमा आवाज बजाउनुहोस् + कुञजीहरू थिचिएको बेला उपकरणले आवाज बजाउने गराउनुहोस्। + कुञजी थिच्नेमा कम्पन गर्नुहोस् + कुञजीहरू थिचिएको बेला उपकरणले कम्पन गर्ने गराउनुहोस्। + पूर्वनिर्धारित मुद्रा चिह्न + 123 कुञजीका लागि चिह्न + नंबर कुञजीमा कुन मुद्रा चिह्न देखाउने चयन गर्नुहोस्। + पूर्वनिर्धारित किबोर्ड + प्रयोग गर्ने लेआउट + तपाईंको टाइपिङ् प्राथमिकता र भाषा आवश्यकताअनुसार किबोर्ड लेआउट चयन गर्नुहोस्। + उच्चारण अक्षरहरू अक्षम गर्नुहोस् + मुख्य किबोर्ड लेआउटबाट उच्चारण अक्षर कुञजीहरू हटाउनुहोस्। + ABC मा पिरियड र कमा + सुविधाजनक टाइपिङ्का लागि मुख्य किबोर्डमा पिरियड र कमा कुञजीहरू सामेल गर्नुहोस्। + लेआउट + स्थापित किबोर्ड चयन गर्नुहोस् + तपाईंले अनुवाद क्षमताको भाषा बद्ल्नुभएको छ। क्षमा गर्नुहोस्, {source_language} बाट अनुवाद गर्न नयाँ डेटा डाउनलोड गर्नुहुन्छ? + {source_language} राख्नुहोस् + भाषा चयन गर्नुहोस् + स्रोत भाषा कुन हो + अनुवाद भाषा + जुन भाषाबाट अनुवाद गर्ने हो त्यो बद्ल्नुहोस्। + अनुवाद स्रोत भाषा + एप र स्थापित भाषा किबोर्डहरूका सेटिङ्स यहाँ पाइन्छ। + डार्क मोड + एप्लिकेसन प्रदर्शन डार्क मोडमा बद्ल्नुहोस्। + एप भाषा + एप पाठहरूका लागि भाषा चयन गर्नुहोस् + तपाईंको उपकरणमा एउटा मात्र भाषा स्थापना गरिएको छ। कृपया सेटिङ्समा थप भाषाहरू स्थापना गर्नुहोस्। + एउटा मात्र उपकरण भाषा + स्क्राइब एप कुन भाषामा छ त्यो बद्ल्नुहोस्। + उच्च रङ कन्ट्रास्ट + सुधारित पहुँच र स्पष्ट देख्ने अनुभवका लागि रङ कन्ट्रास्ट बढाउनुहोस्। + एप पाठ आकार बढाउनुहोस् + राम्रो पठनीयताका लागि मेनु पाठहरूको आकार बढाउनुहोस्। + एप सेटिङ्स + सेटिङ्स + अनुवाद diff --git a/app/src/main/res/values-pt/string.xml b/app/src/main/res/values-pt/string.xml index ea347acf..5920df8a 100644 --- a/app/src/main/res/values-pt/string.xml +++ b/app/src/main/res/values-pt/string.xml @@ -8,6 +8,7 @@ Alemão Italiano Português + Tutorial rápido Russo Espanhol Sueco @@ -58,7 +59,6 @@ Verificar se há novos dados Atualizar dados continuamente Siga as instruções abaixo para instalar teclados Scribe no seu dispositivo. - Tutorial rápido Acesse as configurações de teclado Teclados Acesse as configurações do Scribe @@ -68,7 +68,6 @@ para selecionar teclados Como instalar um teclado Instalação - Aqui você encontra as configurações do aplicativo e teclados de idioma instalados. Instalar teclados Sugestões e autocompletar Sublinhar sugestões para indicar o gênero enquanto você digita. @@ -107,6 +106,7 @@ Idioma da tradução Altere o idioma a ser traduzido. Idioma de origem da tradução + Aqui você encontra as configurações do aplicativo e teclados de idioma instalados. Modo escuro Muda o visual do aplicativo para o modo escuro. Idioma do aplicativo diff --git a/app/src/main/res/values-sv/string.xml b/app/src/main/res/values-sv/string.xml index fddc101d..1a8cdaae 100644 --- a/app/src/main/res/values-sv/string.xml +++ b/app/src/main/res/values-sv/string.xml @@ -8,6 +8,7 @@ Tyska Italienska Portugisiska + Snabb genomgång Ryska Spanska Svenska @@ -58,7 +59,6 @@ Kolla efter ny data Uppdatera regelbundet data Följ instruktionerna nedan för att installera Scribe-tangentbord på din enhet. - Snabb genomgång Öppna tangentbords-inställningar Tangentbord Öppna Scribe-inställningar @@ -68,7 +68,6 @@ För att välja tangentbord Tangentbords-installation Installation - Inställningar för appen och installerade tangentbord finns här. Installera tangentbord Kommentera förslag/kompletteringar Stryk under förslag och kompletteringar och visa deras genus medan du skriver. @@ -107,6 +106,7 @@ Språk för översättning Välj ett språk att översätta ifrån Källspråk för översättning + Inställningar för appen och installerade tangentbord finns här. Mörkt läge Ändra programmets visning till mörkt läge. App-språk diff --git a/app/src/main/res/values-ta/string.xml b/app/src/main/res/values-ta/string.xml index 399687e7..1926d8af 100644 --- a/app/src/main/res/values-ta/string.xml +++ b/app/src/main/res/values-ta/string.xml @@ -14,6 +14,7 @@ ஜெர்மன் இத்தாலிய போர்ச்சுகீஸ் + விரைவு பயிற்சி ரஷ்ய ஸ்பானிஷ் ஸ்வீடிஷ் @@ -64,7 +65,6 @@ புதிய தரவைச் சரிபார்க்கவும் தரவை வழக்கமாக புதுப்பிக்கவும் உங்கள் சாధனத்தில் Scribe விசைப்பலகைகளை நிறுவ கீழே உள்ள வழிமுறைகளைப் பின்பற்றுங்கள். - விரைவு பயிற்சி விசைப்பலகை அமைப்புகளைத் திறக்கவும் விசைப்பலகைகள் Scribe அமைப்புகளைத் திறக்கவும் @@ -74,7 +74,6 @@ விசைப்பலகைகளைத் தேர்ந்தெடுக்க விசைப்பலகை நிறுவல் நிறுவல் - பயன்பாடு மற்றும் நிறுவப்பட்ட மொழி விசைப்பலகைகளுக்கான அமைப்புகள் இங்கே காணப்படுகின்றன. விசைப்பலகைகளை நிறுவுங்கள் பரிந்துரை/நிறைவுகளைக் குறிப்பிடுங்கள் நீங்கள் தட்டச்சு செய்யும் போது அவற்றின் பாலினத்தைக் காட்ட பரிந்துரைகள் மற்றும் நிறைவுகளுக்கு அடிக்கோடு இடுங்கள். @@ -115,6 +114,7 @@ மொழிபெயர்ப்பு மொழி எந்த மொழியிலிருந்து மொழிபெயர்க்க வேண்டும் என்பதை மாற்றவும். மொழிபெயர்ப்பு மூல மொழி + பயன்பாடு மற்றும் நிறுவப்பட்ட மொழி விசைப்பலகைகளுக்கான அமைப்புகள் இங்கே காணப்படுகின்றன. இருள் முறை பயன்பாட்டுக் காட்சியை இருள் முறைக்கு மாற்றவும். பயன்பாட்டு மொழி diff --git a/app/src/main/res/values-tr/string.xml b/app/src/main/res/values-tr/string.xml index c2893fd0..8638ee8e 100644 --- a/app/src/main/res/values-tr/string.xml +++ b/app/src/main/res/values-tr/string.xml @@ -9,6 +9,7 @@ Endonezce İtalyanca Portekizce + Hızlı eğitim Rusça İspanyolca İsveççe @@ -59,7 +60,6 @@ Yeni verileri kontrol et Veriyi düzenli olarak güncelle Scribe klavyelerini cihazına yüklemek için aşağıdaki talimatları izleyin. - Hızlı eğitim Klavye ayarlarını aç Klavye Scribe ayarlarını aç @@ -69,7 +69,6 @@ klavyeleri seçmek için Klavye kurulumu Kurulum - Uygulama ve yüklenmiş dil klavyelerinin ayarlarını burada bulun. Klavye yükle Önerileri/otomatik tamamlamayı etkinleştir Yazarken önerilerin ve otomatik tamamlamaların altını çizerek cinsiyetlerini gösterin. @@ -110,6 +109,7 @@ Çeviri dili Çevrilecek dili değiştirin. Çeviri kaynak dili + Uygulama ve yüklenmiş dil klavyelerinin ayarlarını burada bulun. Karanlık mod Uygulama görünümünü karanlık mod olarak değiştirin. Uygulama dili diff --git a/app/src/main/res/values/string.xml b/app/src/main/res/values/string.xml index 4cc3f481..8947637a 100644 --- a/app/src/main/res/values/string.xml +++ b/app/src/main/res/values/string.xml @@ -18,14 +18,21 @@ Support Scribe Supporters Trademark Policy + Check + Clear all + Confirmation + Delete + Download Download data English French German + Hint Indonesian Italian Norwegian Portuguese + Quick tutorial Russian Spanish Swedish @@ -57,12 +64,42 @@ Simple Keyboard\n• Author: Simple Mobile Tools\n• License: GPL-3.0\n• Link: https://github.com/SimpleMobileTools/Simple-Keyboard/blob/main/LICENSE The Scribe developers (SCRIBE) built the iOS application "Scribe - Language Keyboards" (SERVICE) using third party code. All source code used in the creation of this SERVICE comes from sources that allow its full use in the manner done so by the SERVICE. This section lists the source code on which the SERVICE was based as well as the coinciding licenses of each.\n\nThe following is a list of all used source code, the main author or authors of the code, the license under which it was released at time of usage, and a link to the license. About + Navigate to the About tab. + Back + Clear + Copy conjugation + Expand tenses + Leading icon + Play button + Right Arrow + Search + Trailing icon + Wikimedia Logo + Clipboard is empty + Close clipboard + Copied to clipboard + Copy to clipboard + Clipboard + Download verb data with the menu below to start conjugating verbs. Select tense Choose a conjugation below + Data not present in Wikidata + Loading conjugation tables... Recently conjugated Conjugate + Navigate to the Conjugate tab. + Data not in Wikidata Search for verbs Conjugate verbs + Database error: {error} + Decoding failed: {error} + Download failed: {error} + Invalid server response + Invalid URL + Network error: {error} + No internet connection. Please connect and try again. + Server error: {code} + Download timed out Add new data to Scribe Conjugate. Download verb data Download data to start conjugating! @@ -70,11 +107,17 @@ Add new data to Scribe keyboards. Download keyboard data Language data + {language} conjugate data is already up to date + {language} conjugate data downloaded successfully! All languages + {language} data is already up to date + {language} data downloaded successfully! Downloading + Already up to date! Select data to download Up to date Update + Update all You currently do not have any Scribe keyboard installed. Please click the Install keyboards button below to install a Scribe keyboard and then come back to download the needed data. Change language The data you will download will allow you to translate from {source_language} to {target_language}. Do you want to change the language you\'ll translate from? @@ -83,7 +126,6 @@ Check for new data Regularly update data Follow the directions below to install Scribe keyboards on your device. - Quick tutorial Open keyboard settings Keyboards Open Scribe settings @@ -92,9 +134,34 @@ When typing, press to select keyboards Keyboard installation + the Select Keyboard icon Installation - Settings for the app and installed language keyboards are found here. + Navigate to the Installation tab. + Change keyboard type + Command Bar + Enter + Scribe Key + Shift + Suggestion + Tutorial chapters + This quick tutorial will show you how to use Scribe to support writing in your second language.\nMake sure you select the desired Scribe keyboard by pressing 🌐 when typing. + Finish tutorial + Next + Non-Scribe Keyboard + Not quite! Try writing {expected_word}. + Noun annotation + Write the word "{mother_word}". Notice the word suggestions that appear on the keyboard\'s top bar.\n\nThen, press space. You will see the word\'s gender tag on the keyboard\'s top bar – in this case, "{mother_tag}" for {mother_gender}. + Now write the word "{father_word}" and then press space. The gender tag will be "{father_tag}", for {father_gender}. + Noun plurals + Scribe can easily find the plural of any noun that Wikidata has. Tap the pencil-like Scribe key on the top-left corner of your keyboard, and select {plural}.\n\nThen write the noun you want the plural for, press ▶, and the plural will be returned to you. + Press the 🌐 button to select a Scribe keyboard. + Start full tutorial + Verb conjugation + Scribe can conjugate any verb on Wikidata! Tap the pencil-like Scribe key on the top-left corner of your keyboard, and select {conjugate}.\n\nWrite the verb you want to conjugate, press ▶, and your will see a table with all the verb tenses. Select the one you need and it will be inserted! + Word translation + Let\'s translate with Wiktionary translations! Tap the pencil-like Scribe key on the top-left corner of your keyboard, and select {translate}.\n\nThen write the word you want to translate, press ▶, and the translation will be returned to you. Install keyboards + Settings for the app\'s language and interface are found here. Annotate suggest/complete Underline suggestions and completions to show their genders as you type. Autosuggest emojis @@ -136,6 +203,7 @@ Translation language Change the language to translate from. Translation source language + Settings for the app and installed language keyboards are found here. Dark mode Change the application display to dark mode. App language @@ -148,6 +216,15 @@ Increase app text size Increase the size of menu texts for better readability. App settings + Cancel + OK + You are selecting a theme that goes against your system default. Are you sure you want to proceed? + Theme override Settings + Navigate to the Settings tab. Translation + Check out Scribe Conjugate! + Share Scribe Conjugate via... + Check out Scribe! + Share Scribe via... From 3bf71e7075112116c8c91410d00ea716498c5668 Mon Sep 17 00:00:00 2001 From: ashb155 Date: Sat, 25 Jul 2026 13:40:15 +0530 Subject: [PATCH 5/8] formatting fixes --- .../ui/screens/tutorial/TutorialContent.kt | 40 ++++++++++++++----- .../ui/screens/tutorial/TutorialStepScreen.kt | 2 +- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt index 0f468448..29d84e55 100644 --- a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt +++ b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt @@ -15,7 +15,10 @@ object TutorialContent { * Chapter 1: Noun Annotation. * Teaches users about gender tags that appear when typing nouns. */ - fun getNounAnnotationSteps(languageCode: String, context: Context): List { + fun getNounAnnotationSteps( + languageCode: String, + context: Context, + ): List { val (fatherWord, fatherTag, fatherGender) = when (languageCode) { "en" -> Triple("father", "M", "Masculine") @@ -43,7 +46,8 @@ object TutorialContent { return listOf( TutorialStep( instruction = - context.getString(R.string.i18n_app_keyboard_tutorial_noun_annotation_instruction_1) + context + .getString(R.string.i18n_app_keyboard_tutorial_noun_annotation_instruction_1) .replace("{mother_word}", motherWord) .replace("{mother_tag}", motherTag) .replace("{mother_gender}", motherGender), @@ -51,7 +55,8 @@ object TutorialContent { ), TutorialStep( instruction = - context.getString(R.string.i18n_app_keyboard_tutorial_noun_annotation_instruction_2) + context + .getString(R.string.i18n_app_keyboard_tutorial_noun_annotation_instruction_2) .replace("{father_word}", fatherWord) .replace("{father_tag}", fatherTag) .replace("{father_gender}", fatherGender), @@ -64,7 +69,10 @@ object TutorialContent { * Chapter 2: Word Translation. * Teaches users how to use the Translate command via the Scribe key. */ - fun wordTranslationSteps(languageCode: String, context: Context): List { + fun wordTranslationSteps( + languageCode: String, + context: Context, + ): List { val translation = when (languageCode) { "en" -> "Translate" @@ -79,14 +87,18 @@ object TutorialContent { return listOf( TutorialStep( instruction = - context.getString(R.string.i18n_app_keyboard_tutorial_word_translation_instruction) + context + .getString(R.string.i18n_app_keyboard_tutorial_word_translation_instruction) .replace("{translate}", translation), requiresValidation = false, ), ) } - fun verbConjugationSteps(languageCode: String, context: Context): List { + fun verbConjugationSteps( + languageCode: String, + context: Context, + ): List { val conjugation = when (languageCode) { "en" -> "Conjugate" @@ -101,14 +113,18 @@ object TutorialContent { return listOf( TutorialStep( instruction = - context.getString(R.string.i18n_app_keyboard_tutorial_verb_conjugation_instruction) + context + .getString(R.string.i18n_app_keyboard_tutorial_verb_conjugation_instruction) .replace("{conjugate}", conjugation), requiresValidation = false, ), ) } - fun nounPluralsSteps(languageCode: String, context: Context): List { + fun nounPluralsSteps( + languageCode: String, + context: Context, + ): List { val plural = when (languageCode) { "en" -> "Plural" @@ -123,7 +139,8 @@ object TutorialContent { return listOf( TutorialStep( instruction = - context.getString(R.string.i18n_app_keyboard_tutorial_noun_plurals_instruction) + context + .getString(R.string.i18n_app_keyboard_tutorial_noun_plurals_instruction) .replace("{plural}", plural), requiresValidation = false, ), @@ -131,7 +148,10 @@ object TutorialContent { } /** Returns all chapters as a list of pairs (title, steps). */ - fun getAllChapters(languageCode: String = "de", context: Context): List>> = + fun getAllChapters( + languageCode: String = "de", + context: Context, + ): List>> = listOf( context.getString(R.string.i18n_app_keyboard_tutorial_noun_annotation) to getNounAnnotationSteps(languageCode, context), context.getString(R.string.i18n_app_keyboard_tutorial_word_translation) to wordTranslationSteps(languageCode, context), diff --git a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialStepScreen.kt b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialStepScreen.kt index dfa51996..b794b2f5 100644 --- a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialStepScreen.kt +++ b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialStepScreen.kt @@ -44,12 +44,12 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight -import be.scri.R import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.compose.LocalLifecycleOwner +import be.scri.R import kotlinx.coroutines.delay /** From c6a4283df428cc7ce7342e93bc697fd7ef0b8545 Mon Sep 17 00:00:00 2001 From: Andrew Tavis McAllister Date: Sun, 2 Aug 2026 16:32:55 +0200 Subject: [PATCH 6/8] Add invalid tutorial keys via Scribe-i18n --- app/src/main/assets/i18n | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/assets/i18n b/app/src/main/assets/i18n index 07c3dc20..59695ea9 160000 --- a/app/src/main/assets/i18n +++ b/app/src/main/assets/i18n @@ -1 +1 @@ -Subproject commit 07c3dc20a8edb9ddd33d2fe1838fb03e00bd888f +Subproject commit 59695ea900119f09a440050b6695129fecaf45f9 From 45a5dc9bb3cbb765b99a02a895c3833b07c82ed6 Mon Sep 17 00:00:00 2001 From: ashb155 Date: Fri, 7 Aug 2026 23:08:47 +0530 Subject: [PATCH 7/8] non-feature update --- .../be/scri/ui/screens/tutorial/TutorialContent.kt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt index 29d84e55..362733b0 100644 --- a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt +++ b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt @@ -21,7 +21,6 @@ object TutorialContent { ): List { val (fatherWord, fatherTag, fatherGender) = when (languageCode) { - "en" -> Triple("father", "M", "Masculine") "es" -> Triple("padre", "M", "Masculino") "fr" -> Triple("père", "M", "Masculin") "it" -> Triple("padre", "M", "Maschile") @@ -33,7 +32,6 @@ object TutorialContent { val (motherWord, motherTag, motherGender) = when (languageCode) { - "en" -> Triple("mother", "F", "Feminine") "es" -> Triple("madre", "F", "Femenino") "fr" -> Triple("mère", "F", "Féminin") "it" -> Triple("madre", "F", "Femminile") @@ -43,6 +41,17 @@ object TutorialContent { else -> Triple("Mutter", "F", "Feminin") } + if (languageCode == "en") { + return listOf( + TutorialStep( + instruction = + context + .getString(R.string.i18n_app_keyboard_tutorial_noun_annotation_invalid_language) + .replace("{language}","English"), + requiresValidation = false, + ), + ) + } return listOf( TutorialStep( instruction = From 380755e2755dd869b8bef66d4afa123643e2589d Mon Sep 17 00:00:00 2001 From: ashb155 Date: Fri, 7 Aug 2026 23:34:23 +0530 Subject: [PATCH 8/8] formatting fixes --- .../main/java/be/scri/ui/screens/tutorial/TutorialContent.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt index 362733b0..fb6fe500 100644 --- a/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt +++ b/app/src/main/java/be/scri/ui/screens/tutorial/TutorialContent.kt @@ -47,7 +47,7 @@ object TutorialContent { instruction = context .getString(R.string.i18n_app_keyboard_tutorial_noun_annotation_invalid_language) - .replace("{language}","English"), + .replace("{language}", "English"), requiresValidation = false, ), )