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