Localization base: add EN/RU chat keys and wire chat info/member labels
This commit is contained in:
@@ -111,6 +111,7 @@ import androidx.compose.ui.input.pointer.positionChange
|
|||||||
import androidx.compose.ui.semantics.contentDescription
|
import androidx.compose.ui.semantics.contentDescription
|
||||||
import androidx.compose.ui.semantics.semantics
|
import androidx.compose.ui.semantics.semantics
|
||||||
import androidx.compose.ui.layout.onSizeChanged
|
import androidx.compose.ui.layout.onSizeChanged
|
||||||
|
import androidx.annotation.StringRes
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
@@ -1317,7 +1318,7 @@ fun ChatScreen(
|
|||||||
contentAlignment = Alignment.Center,
|
contentAlignment = Alignment.Center,
|
||||||
) {
|
) {
|
||||||
Text(
|
Text(
|
||||||
text = tab.title,
|
text = stringResource(id = tab.titleRes),
|
||||||
style = MaterialTheme.typography.labelMedium,
|
style = MaterialTheme.typography.labelMedium,
|
||||||
fontWeight = if (selected) FontWeight.SemiBold else FontWeight.Normal,
|
fontWeight = if (selected) FontWeight.SemiBold else FontWeight.Normal,
|
||||||
)
|
)
|
||||||
@@ -3450,16 +3451,16 @@ private fun openUrlExternally(context: Context, url: String) {
|
|||||||
}
|
}
|
||||||
context.startActivity(intent)
|
context.startActivity(intent)
|
||||||
}.onFailure {
|
}.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) {
|
private enum class ChatInfoTab(@StringRes val titleRes: Int) {
|
||||||
Media("Media"),
|
Media(R.string.chat_info_tab_media),
|
||||||
Files("Files"),
|
Files(R.string.chat_info_tab_files),
|
||||||
Links("Links"),
|
Links(R.string.chat_info_tab_links),
|
||||||
Voice("Voice"),
|
Voice(R.string.chat_info_tab_voice),
|
||||||
Members("Members"),
|
Members(R.string.chat_info_tab_members),
|
||||||
}
|
}
|
||||||
|
|
||||||
private enum class ChatInfoEntryType {
|
private enum class ChatInfoEntryType {
|
||||||
@@ -3543,7 +3544,10 @@ private fun ChatInfoTabContent(
|
|||||||
contentAlignment = Alignment.Center,
|
contentAlignment = Alignment.Center,
|
||||||
) {
|
) {
|
||||||
Text(
|
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,
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
)
|
)
|
||||||
@@ -3594,7 +3598,7 @@ private fun ChatInfoTabContent(
|
|||||||
.padding(6.dp),
|
.padding(6.dp),
|
||||||
) {
|
) {
|
||||||
Text(
|
Text(
|
||||||
text = "Video",
|
text = stringResource(id = R.string.chat_media_badge_video),
|
||||||
modifier = Modifier.padding(horizontal = 6.dp, vertical = 2.dp),
|
modifier = Modifier.padding(horizontal = 6.dp, vertical = 2.dp),
|
||||||
style = MaterialTheme.typography.labelSmall,
|
style = MaterialTheme.typography.labelSmall,
|
||||||
color = Color.White,
|
color = Color.White,
|
||||||
@@ -3782,7 +3786,7 @@ private fun ChatMembersTabContent(
|
|||||||
contentAlignment = Alignment.Center,
|
contentAlignment = Alignment.Center,
|
||||||
) {
|
) {
|
||||||
Text(
|
Text(
|
||||||
text = "No members data",
|
text = stringResource(id = R.string.chat_info_no_members_data),
|
||||||
style = MaterialTheme.typography.bodyMedium,
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
)
|
)
|
||||||
@@ -3799,7 +3803,7 @@ private fun ChatMembersTabContent(
|
|||||||
if (members.isNotEmpty()) {
|
if (members.isNotEmpty()) {
|
||||||
item {
|
item {
|
||||||
Text(
|
Text(
|
||||||
text = "Members (${members.size})",
|
text = stringResource(id = R.string.chat_members_header, members.size),
|
||||||
style = MaterialTheme.typography.labelLarge,
|
style = MaterialTheme.typography.labelLarge,
|
||||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
)
|
)
|
||||||
@@ -3852,7 +3856,7 @@ private fun ChatMembersTabContent(
|
|||||||
if (canPromote) {
|
if (canPromote) {
|
||||||
AssistChip(
|
AssistChip(
|
||||||
onClick = { onPromoteMember(member.userId) },
|
onClick = { onPromoteMember(member.userId) },
|
||||||
label = { Text("Promote") },
|
label = { Text(stringResource(id = R.string.chat_member_action_promote)) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if (canDemote) {
|
if (canDemote) {
|
||||||
@@ -3864,7 +3868,7 @@ private fun ChatMembersTabContent(
|
|||||||
onConfirm = { onDemoteMember(member.userId) },
|
onConfirm = { onDemoteMember(member.userId) },
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
label = { Text("Demote") },
|
label = { Text(stringResource(id = R.string.chat_member_action_demote)) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if (canTransfer) {
|
if (canTransfer) {
|
||||||
@@ -3876,7 +3880,7 @@ private fun ChatMembersTabContent(
|
|||||||
onConfirm = { onTransferOwnership(member.userId) },
|
onConfirm = { onTransferOwnership(member.userId) },
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
label = { Text("Transfer owner") },
|
label = { Text(stringResource(id = R.string.chat_member_action_transfer_owner)) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if (canManageTarget) {
|
if (canManageTarget) {
|
||||||
@@ -3888,7 +3892,7 @@ private fun ChatMembersTabContent(
|
|||||||
onConfirm = { onBanMember(member.userId) },
|
onConfirm = { onBanMember(member.userId) },
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
label = { Text("Ban") },
|
label = { Text(stringResource(id = R.string.chat_member_action_ban)) },
|
||||||
)
|
)
|
||||||
AssistChip(
|
AssistChip(
|
||||||
onClick = {
|
onClick = {
|
||||||
@@ -3898,7 +3902,7 @@ private fun ChatMembersTabContent(
|
|||||||
onConfirm = { onKickMember(member.userId) },
|
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()) {
|
if (bans.isNotEmpty()) {
|
||||||
item {
|
item {
|
||||||
Text(
|
Text(
|
||||||
text = "Banned (${bans.size})",
|
text = stringResource(id = R.string.chat_banned_header, bans.size),
|
||||||
style = MaterialTheme.typography.labelLarge,
|
style = MaterialTheme.typography.labelLarge,
|
||||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
)
|
)
|
||||||
@@ -3940,7 +3944,7 @@ private fun ChatMembersTabContent(
|
|||||||
if (canManageMembers) {
|
if (canManageMembers) {
|
||||||
AssistChip(
|
AssistChip(
|
||||||
onClick = { onUnbanMember(ban.userId) },
|
onClick = { onUnbanMember(ban.userId) },
|
||||||
label = { Text("Unban") },
|
label = { Text(stringResource(id = R.string.chat_member_action_unban)) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,6 +66,27 @@
|
|||||||
<string name="chat_enable_sound">Включить звук</string>
|
<string name="chat_enable_sound">Включить звук</string>
|
||||||
<string name="chat_disable_sound">Выключить звук</string>
|
<string name="chat_disable_sound">Выключить звук</string>
|
||||||
<string name="chat_circle_video">Видеокружок</string>
|
<string name="chat_circle_video">Видеокружок</string>
|
||||||
|
<string name="chat_open_item_failed">Не удалось открыть элемент</string>
|
||||||
|
<string name="chat_status_online">в сети</string>
|
||||||
|
<string name="chat_status_last_seen_recently">был(а) недавно</string>
|
||||||
|
<string name="chat_type_group">группа</string>
|
||||||
|
<string name="chat_type_channel">канал</string>
|
||||||
|
<string name="chat_info_tab_media">Медиа</string>
|
||||||
|
<string name="chat_info_tab_files">Файлы</string>
|
||||||
|
<string name="chat_info_tab_links">Ссылки</string>
|
||||||
|
<string name="chat_info_tab_voice">Голосовые</string>
|
||||||
|
<string name="chat_info_tab_members">Участники</string>
|
||||||
|
<string name="chat_info_empty">Пока нет: %1$s</string>
|
||||||
|
<string name="chat_info_no_members_data">Нет данных об участниках</string>
|
||||||
|
<string name="chat_members_header">Участники (%1$d)</string>
|
||||||
|
<string name="chat_banned_header">Заблокированные (%1$d)</string>
|
||||||
|
<string name="chat_member_action_promote">Повысить</string>
|
||||||
|
<string name="chat_member_action_demote">Понизить</string>
|
||||||
|
<string name="chat_member_action_transfer_owner">Передать owner</string>
|
||||||
|
<string name="chat_member_action_ban">Забанить</string>
|
||||||
|
<string name="chat_member_action_kick">Кикнуть</string>
|
||||||
|
<string name="chat_member_action_unban">Разбанить</string>
|
||||||
|
<string name="chat_media_badge_video">Видео</string>
|
||||||
|
|
||||||
<string name="settings_user_fallback">Пользователь</string>
|
<string name="settings_user_fallback">Пользователь</string>
|
||||||
<string name="settings_accounts_header">АККАУНТЫ</string>
|
<string name="settings_accounts_header">АККАУНТЫ</string>
|
||||||
|
|||||||
@@ -66,6 +66,27 @@
|
|||||||
<string name="chat_enable_sound">Enable sound</string>
|
<string name="chat_enable_sound">Enable sound</string>
|
||||||
<string name="chat_disable_sound">Disable sound</string>
|
<string name="chat_disable_sound">Disable sound</string>
|
||||||
<string name="chat_circle_video">Circle video</string>
|
<string name="chat_circle_video">Circle video</string>
|
||||||
|
<string name="chat_open_item_failed">Unable to open item</string>
|
||||||
|
<string name="chat_status_online">online</string>
|
||||||
|
<string name="chat_status_last_seen_recently">last seen recently</string>
|
||||||
|
<string name="chat_type_group">group</string>
|
||||||
|
<string name="chat_type_channel">channel</string>
|
||||||
|
<string name="chat_info_tab_media">Media</string>
|
||||||
|
<string name="chat_info_tab_files">Files</string>
|
||||||
|
<string name="chat_info_tab_links">Links</string>
|
||||||
|
<string name="chat_info_tab_voice">Voice</string>
|
||||||
|
<string name="chat_info_tab_members">Members</string>
|
||||||
|
<string name="chat_info_empty">No %1$s yet</string>
|
||||||
|
<string name="chat_info_no_members_data">No members data</string>
|
||||||
|
<string name="chat_members_header">Members (%1$d)</string>
|
||||||
|
<string name="chat_banned_header">Banned (%1$d)</string>
|
||||||
|
<string name="chat_member_action_promote">Promote</string>
|
||||||
|
<string name="chat_member_action_demote">Demote</string>
|
||||||
|
<string name="chat_member_action_transfer_owner">Transfer owner</string>
|
||||||
|
<string name="chat_member_action_ban">Ban</string>
|
||||||
|
<string name="chat_member_action_kick">Kick</string>
|
||||||
|
<string name="chat_member_action_unban">Unban</string>
|
||||||
|
<string name="chat_media_badge_video">Video</string>
|
||||||
|
|
||||||
<string name="settings_user_fallback">User</string>
|
<string name="settings_user_fallback">User</string>
|
||||||
<string name="settings_accounts_header">ACCOUNTS</string>
|
<string name="settings_accounts_header">ACCOUNTS</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user