diff --git a/mobile/src/main/java/ru/omni_devel/cards/FillTemplateActivity.kt b/mobile/src/main/java/ru/omni_devel/cards/FillTemplateActivity.kt index 1b178f8..bdeb6ab 100644 --- a/mobile/src/main/java/ru/omni_devel/cards/FillTemplateActivity.kt +++ b/mobile/src/main/java/ru/omni_devel/cards/FillTemplateActivity.kt @@ -69,12 +69,14 @@ fun FillTemplatePage(template: Template, innerPadding: PaddingValues) { val activityContext = LocalActivity.current val context = LocalContext.current + val language = getLanguage(context) + var filledFields by rememberSaveable { mutableStateOf(template.fields.associate { field -> field.id to (field.default ?: "") }) } Page( - template.name, + selectTemplateNameViaLanguage(template.names, language), innerPadding ) { val fieldModifier = Modifier.fillMaxWidth() @@ -88,7 +90,7 @@ fun FillTemplatePage(template: Template, innerPadding: PaddingValues) { } }, modifier = fieldModifier, - label = { Text((if (field.maybeEmpty) "" else "*") + field.name) } + label = { Text((if (field.maybeEmpty) "" else "*") + selectTemplateNameViaLanguage(field.names, language)) } ) } diff --git a/mobile/src/main/java/ru/omni_devel/cards/SelectTemplateActivity.kt b/mobile/src/main/java/ru/omni_devel/cards/SelectTemplateActivity.kt index 47091c5..1db161b 100644 --- a/mobile/src/main/java/ru/omni_devel/cards/SelectTemplateActivity.kt +++ b/mobile/src/main/java/ru/omni_devel/cards/SelectTemplateActivity.kt @@ -64,6 +64,8 @@ fun SelectTemplatePage(innerPadding: PaddingValues) { val activityContext = LocalActivity.current val context = LocalContext.current + val language = getLanguage(context) + var templates by remember { mutableStateOf?>(null) } var loadingError by remember { mutableStateOf(null) } @@ -134,7 +136,7 @@ fun SelectTemplatePage(innerPadding: PaddingValues) { fillTemplateLauncher.launch(intent) } ) { - Text(template.name) + Text(selectTemplateNameViaLanguage(template.names, language)) } } } diff --git a/mobile/src/main/java/ru/omni_devel/cards/Template.kt b/mobile/src/main/java/ru/omni_devel/cards/Template.kt index 68f326c..0ad4e91 100644 --- a/mobile/src/main/java/ru/omni_devel/cards/Template.kt +++ b/mobile/src/main/java/ru/omni_devel/cards/Template.kt @@ -4,17 +4,29 @@ import kotlinx.serialization.Serializable import org.json.JSONArray import org.json.JSONObject +private fun jsonObjectToMap(obj: JSONObject): LinkedHashMap { + val map = LinkedHashMap() + val keys = obj.keys() + + while (keys.hasNext()) { + val key = keys.next() + map[key] = obj.getString(key) + } + + return map +} + @Serializable class Field( val id: String, - val name: String, + val names: LinkedHashMap, val default: String? = null, val maybeEmpty: Boolean = false ) @Serializable class Template( - val name: String, + val names: LinkedHashMap, val fields: List, val template: String ) { @@ -30,14 +42,14 @@ class Template( fields.add(Field( id = fieldObj.getString("id"), - name = fieldObj.getString("name"), + names = jsonObjectToMap(fieldObj.getJSONObject("names")), default = fieldObj.optString("default"), maybeEmpty = fieldObj.optBoolean("maybeEmpty") )) } return Template( - name = obj.getString("name"), + names = jsonObjectToMap(obj.getJSONObject("names")), fields = fields, template = obj.getString("template") ) @@ -58,14 +70,14 @@ class Template( fields.add(Field( id = fieldObj.getString("id"), - name = fieldObj.getString("name"), + names = jsonObjectToMap(fieldObj.getJSONObject("names")), default = fieldObj.optString("default"), maybeEmpty = fieldObj.optBoolean("maybeEmpty") )) } templates.add(Template( - name = obj.getString("name"), + names = jsonObjectToMap(obj.getJSONObject("names")), fields = fields, template = obj.getString("template") )) diff --git a/mobile/src/main/java/ru/omni_devel/cards/Utils.kt b/mobile/src/main/java/ru/omni_devel/cards/Utils.kt index 69f4bf0..6529145 100644 --- a/mobile/src/main/java/ru/omni_devel/cards/Utils.kt +++ b/mobile/src/main/java/ru/omni_devel/cards/Utils.kt @@ -2,6 +2,7 @@ package ru.omni_devel.cards import android.content.Context import android.graphics.Bitmap +import android.os.LocaleList import com.google.android.gms.wearable.Wearable import com.google.zxing.BarcodeFormat import com.google.zxing.MultiFormatWriter @@ -66,3 +67,15 @@ fun checkCardData(name: String, value: String): Int? { return null } + +fun getLanguage(context: Context): String { + val locales: LocaleList = context.resources.configuration.locales + val primaryLocale = locales[0] + val languageCode = primaryLocale.language + + return languageCode +} + +fun selectTemplateNameViaLanguage(names: LinkedHashMap, language: String): String { + return names[language] ?: names.values.firstOrNull() ?: "???" +}