fix(chat-room): 접근성 라벨 및 다국어 문자열 적용

- 레이아웃 contentDescription 하드코딩 제거 및 strings 리소스화
- ChatMessageAdapter 접근성 문구를 리소스 기반으로 변환
- values-en 추가로 안내/버튼/접근성/상태 문구 영문화
- 타이핑 인디케이터 접근성 라벨 추가
This commit is contained in:
2025-08-14 18:50:32 +09:00
parent c9b6623eac
commit c1012586ce
6 changed files with 61 additions and 16 deletions

View File

@@ -323,11 +323,12 @@ class ChatMessageAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
// 그룹 내부 간격 최소화 (상단 패딩 축소)
adjustTopPadding(isGrouped)
// 접근성: 상태 포함 설명
// 접근성: 상태 포함 설명 (리소스 기반)
val ctx = binding.root.context
val statusDesc = when (data.status) {
MessageStatus.SENDING -> "전송 중"
MessageStatus.FAILED -> "전송 실패"
MessageStatus.SENT -> "전송 완료"
MessageStatus.SENDING -> ctx.getString(R.string.status_sending)
MessageStatus.FAILED -> ctx.getString(R.string.status_failed)
MessageStatus.SENT -> ctx.getString(R.string.status_sent)
}
val timeDesc = if (showTime) {
@@ -336,8 +337,9 @@ class ChatMessageAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
""
}
val myPrefix = ctx.getString(R.string.a11y_my_message_prefix)
binding.root.contentDescription =
"내 메시지 ${binding.tvMessage.text}, $statusDesc, $timeDesc"
"$myPrefix ${binding.tvMessage.text}, $statusDesc, $timeDesc"
}
private fun adjustTopPadding(isGrouped: Boolean) {
@@ -379,13 +381,16 @@ class ChatMessageAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
// 그룹 내부 간격 최소화 (상단 패딩 축소)
adjustTopPadding(isGrouped)
// 접근성
// 접근성: 다국어 대응
val ctx = itemView.context
val messageWord = ctx.getString(R.string.a11y_message_word)
itemView.contentDescription = buildString {
if (!isGrouped && !binding.tvName.text.isNullOrEmpty()) {
append(binding.tvName.text)
append(" ")
}
append("메시지 ")
append(messageWord)
append(" ")
append(binding.tvMessage.text)
if (showTime) {
append(", ")