From 60d898bf21890aa3928c97e4b7a4378b54a5af78 Mon Sep 17 00:00:00 2001 From: benya Date: Wed, 11 Mar 2026 05:52:42 +0300 Subject: [PATCH] Localization base: add EN/RU chat keys and wire chat info/member labels --- .../messenger/ui/chat/ChatScreen.kt | 42 ++++++++++--------- .../app/src/main/res/values-ru/strings.xml | 21 ++++++++++ android/app/src/main/res/values/strings.xml | 21 ++++++++++ 3 files changed, 65 insertions(+), 19 deletions(-) diff --git a/android/app/src/main/java/ru/daemonlord/messenger/ui/chat/ChatScreen.kt b/android/app/src/main/java/ru/daemonlord/messenger/ui/chat/ChatScreen.kt index cd6c7fd..742f325 100644 --- a/android/app/src/main/java/ru/daemonlord/messenger/ui/chat/ChatScreen.kt +++ b/android/app/src/main/java/ru/daemonlord/messenger/ui/chat/ChatScreen.kt @@ -111,6 +111,7 @@ import androidx.compose.ui.input.pointer.positionChange import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.layout.onSizeChanged +import androidx.annotation.StringRes import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.core.content.ContextCompat @@ -1317,7 +1318,7 @@ fun ChatScreen( contentAlignment = Alignment.Center, ) { Text( - text = tab.title, + text = stringResource(id = tab.titleRes), style = MaterialTheme.typography.labelMedium, fontWeight = if (selected) FontWeight.SemiBold else FontWeight.Normal, ) @@ -3450,16 +3451,16 @@ private fun openUrlExternally(context: Context, url: String) { } context.startActivity(intent) }.onFailure { - Toast.makeText(context, "Unable to open item", Toast.LENGTH_SHORT).show() + Toast.makeText(context, context.getString(R.string.chat_open_item_failed), Toast.LENGTH_SHORT).show() } } -private enum class ChatInfoTab(val title: String) { - Media("Media"), - Files("Files"), - Links("Links"), - Voice("Voice"), - Members("Members"), +private enum class ChatInfoTab(@StringRes val titleRes: Int) { + Media(R.string.chat_info_tab_media), + Files(R.string.chat_info_tab_files), + Links(R.string.chat_info_tab_links), + Voice(R.string.chat_info_tab_voice), + Members(R.string.chat_info_tab_members), } private enum class ChatInfoEntryType { @@ -3543,7 +3544,10 @@ private fun ChatInfoTabContent( contentAlignment = Alignment.Center, ) { Text( - text = "No ${tab.title.lowercase(Locale.getDefault())} yet", + text = stringResource( + id = R.string.chat_info_empty, + stringResource(id = tab.titleRes).lowercase(Locale.getDefault()), + ), style = MaterialTheme.typography.bodyMedium, color = MaterialTheme.colorScheme.onSurfaceVariant, ) @@ -3594,7 +3598,7 @@ private fun ChatInfoTabContent( .padding(6.dp), ) { Text( - text = "Video", + text = stringResource(id = R.string.chat_media_badge_video), modifier = Modifier.padding(horizontal = 6.dp, vertical = 2.dp), style = MaterialTheme.typography.labelSmall, color = Color.White, @@ -3782,7 +3786,7 @@ private fun ChatMembersTabContent( contentAlignment = Alignment.Center, ) { Text( - text = "No members data", + text = stringResource(id = R.string.chat_info_no_members_data), style = MaterialTheme.typography.bodyMedium, color = MaterialTheme.colorScheme.onSurfaceVariant, ) @@ -3799,7 +3803,7 @@ private fun ChatMembersTabContent( if (members.isNotEmpty()) { item { Text( - text = "Members (${members.size})", + text = stringResource(id = R.string.chat_members_header, members.size), style = MaterialTheme.typography.labelLarge, color = MaterialTheme.colorScheme.onSurfaceVariant, ) @@ -3852,7 +3856,7 @@ private fun ChatMembersTabContent( if (canPromote) { AssistChip( onClick = { onPromoteMember(member.userId) }, - label = { Text("Promote") }, + label = { Text(stringResource(id = R.string.chat_member_action_promote)) }, ) } if (canDemote) { @@ -3864,7 +3868,7 @@ private fun ChatMembersTabContent( onConfirm = { onDemoteMember(member.userId) }, ) }, - label = { Text("Demote") }, + label = { Text(stringResource(id = R.string.chat_member_action_demote)) }, ) } if (canTransfer) { @@ -3876,7 +3880,7 @@ private fun ChatMembersTabContent( onConfirm = { onTransferOwnership(member.userId) }, ) }, - label = { Text("Transfer owner") }, + label = { Text(stringResource(id = R.string.chat_member_action_transfer_owner)) }, ) } if (canManageTarget) { @@ -3888,7 +3892,7 @@ private fun ChatMembersTabContent( onConfirm = { onBanMember(member.userId) }, ) }, - label = { Text("Ban") }, + label = { Text(stringResource(id = R.string.chat_member_action_ban)) }, ) AssistChip( onClick = { @@ -3898,7 +3902,7 @@ private fun ChatMembersTabContent( onConfirm = { onKickMember(member.userId) }, ) }, - label = { Text("Kick") }, + label = { Text(stringResource(id = R.string.chat_member_action_kick)) }, ) } } @@ -3910,7 +3914,7 @@ private fun ChatMembersTabContent( if (bans.isNotEmpty()) { item { Text( - text = "Banned (${bans.size})", + text = stringResource(id = R.string.chat_banned_header, bans.size), style = MaterialTheme.typography.labelLarge, color = MaterialTheme.colorScheme.onSurfaceVariant, ) @@ -3940,7 +3944,7 @@ private fun ChatMembersTabContent( if (canManageMembers) { AssistChip( onClick = { onUnbanMember(ban.userId) }, - label = { Text("Unban") }, + label = { Text(stringResource(id = R.string.chat_member_action_unban)) }, ) } } diff --git a/android/app/src/main/res/values-ru/strings.xml b/android/app/src/main/res/values-ru/strings.xml index 133b0c6..acdb89c 100644 --- a/android/app/src/main/res/values-ru/strings.xml +++ b/android/app/src/main/res/values-ru/strings.xml @@ -66,6 +66,27 @@ Включить звук Выключить звук Видеокружок + Не удалось открыть элемент + в сети + был(а) недавно + группа + канал + Медиа + Файлы + Ссылки + Голосовые + Участники + Пока нет: %1$s + Нет данных об участниках + Участники (%1$d) + Заблокированные (%1$d) + Повысить + Понизить + Передать owner + Забанить + Кикнуть + Разбанить + Видео Пользователь АККАУНТЫ diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 0f3cec0..c31bf26 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -66,6 +66,27 @@ Enable sound Disable sound Circle video + Unable to open item + online + last seen recently + group + channel + Media + Files + Links + Voice + Members + No %1$s yet + No members data + Members (%1$d) + Banned (%1$d) + Promote + Demote + Transfer owner + Ban + Kick + Unban + Video User ACCOUNTS