라이브룸 화면 문자열 리소스화

This commit is contained in:
2025-12-02 17:12:35 +09:00
parent b356591aba
commit 4ed6437ce3
5 changed files with 356 additions and 104 deletions

View File

@@ -167,7 +167,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
removeNoChatRoom()
Toast.makeText(
applicationContext,
"채팅금지가 해제되었습니다.",
getString(R.string.screen_live_room_no_chat_ended),
Toast.LENGTH_SHORT
).show()
}
@@ -180,7 +180,10 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
isNoChatting = true
Toast.makeText(
applicationContext,
"${viewModel.getManagerNickname()}님이 3분간 채팅을 금지하였습니다.",
getString(
R.string.screen_live_room_no_chat_started,
viewModel.getManagerNickname()
),
Toast.LENGTH_SHORT
).show()
countDownTimer.start()
@@ -221,7 +224,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
this.roomId = intent.getLongExtra(Constants.EXTRA_ROOM_ID, 0)
if (roomId <= 0) {
showToast("해당하는 라이브가 없습니다.")
showToast(getString(R.string.screen_live_room_not_found))
finish()
return
}
@@ -313,7 +316,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
if (speakerListAdapter.itemCount <= 5) {
inviteSpeaker(memberId)
} else {
showToast("스피커 정원이 초과했습니다.")
showToast(getString(R.string.screen_live_room_speaker_full))
}
},
onClickChangeListener = { memberId ->
@@ -346,11 +349,14 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
LiveDialog(
activity = this,
layoutInflater = layoutInflater,
title = "내보내기",
desc = "${viewModel.getUserNickname(it.toInt())}님을 내보내시겠어요?",
confirmButtonTitle = "내보내기",
title = getString(R.string.screen_live_room_kick_title),
desc = getString(
R.string.screen_live_room_kick_message,
viewModel.getUserNickname(it.toInt())
),
confirmButtonTitle = getString(R.string.screen_live_room_kick_confirm),
confirmButtonClick = { kickOut(it) },
cancelButtonTitle = "취소",
cancelButtonTitle = getString(R.string.cancel),
cancelButtonClick = {}
).show(screenWidth)
},
@@ -371,7 +377,10 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
viewModel.setManager(roomId = roomId, userId = it) {
setManagerMessage()
showDialog(
content = "${viewModel.getUserNickname(it.toInt())}님을 스탭으로 지정했습니다."
content = getString(
R.string.screen_live_room_staff_assigned,
viewModel.getUserNickname(it.toInt())
)
)
}
},
@@ -396,7 +405,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
if (speakerListAdapter.itemCount <= 5) {
inviteSpeaker(it)
} else {
showToast("스피커 정원이 초과했습니다.")
showToast(getString(R.string.screen_live_room_speaker_full))
}
},
onClickChangeListener = { changeListenerMessage(it) },
@@ -404,11 +413,14 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
LiveDialog(
activity = this,
layoutInflater = layoutInflater,
title = "내보내기",
desc = "${viewModel.getUserNickname(it.toInt())}님을 내보내시겠어요?",
confirmButtonTitle = "내보내기",
title = getString(R.string.screen_live_room_kick_title),
desc = getString(
R.string.screen_live_room_kick_message,
viewModel.getUserNickname(it.toInt())
),
confirmButtonTitle = getString(R.string.screen_live_room_kick_confirm),
confirmButtonClick = { kickOut(it) },
cancelButtonTitle = "취소",
cancelButtonTitle = getString(R.string.cancel),
cancelButtonClick = {}
).show(screenWidth)
},
@@ -436,7 +448,10 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
if (isNoChatting && hasFocus) {
Toast.makeText(
applicationContext,
"${remainingNoChattingTime}초 동안 채팅하실 수 없습니다",
getString(
R.string.screen_live_room_no_chat_warning,
remainingNoChattingTime
),
Toast.LENGTH_SHORT
).show()
view.clearFocus()
@@ -479,9 +494,11 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
isLiveDonation = true
) { can, message, isSecret ->
if (isSecret && can < 10) {
showToast("비밀 미션은 최소 10캔 이상부터 이용이 가능합니다.")
showToast(
getString(R.string.screen_live_room_secret_mission_minimum)
)
} else if (can < 1) {
showToast("1캔 이상 후원하실 수 있습니다.")
showToast(getString(R.string.screen_live_room_donation_minimum))
} else {
donation(can, message, isSecret)
}
@@ -578,25 +595,17 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
private fun showMemberBlockDialog(userId: Long, nickname: String) {
val message = if (SharedPreferenceManager.role == MemberRole.CREATOR.name) {
"""
${nickname}님을 차단하시겠습니까?
사용자를 차단하면 사용자는 아래 기능이 제한됩니다.
- 내가 개설한 라이브 입장 불가
- 나에게 메시지 보내기 불가
- 내 채널의 팬Talk 작성불가
""".trimIndent()
getString(
R.string.screen_live_room_block_message_creator,
nickname
)
} else {
"""
${nickname}님을 차단하시겠습니까?
- 사용자를 차단하면 '차단한 사용자의 라이브 중 채팅'이 보이지 않습니다.
""".trimIndent()
getString(R.string.screen_live_room_block_message_user, nickname)
}
val dialog = AlertDialog.Builder(this)
dialog.setTitle("사용자 차단")
dialog.setTitle(getString(R.string.screen_live_room_block_title))
dialog.setMessage(message)
dialog.setPositiveButton("차단") { _, _ ->
dialog.setPositiveButton(getString(R.string.screen_live_room_block_confirm)) { _, _ ->
roomUserProfileDialog.dismiss()
viewModel.memberBlock(userId) {
viewModel.addBlockedMember(memberId = userId)
@@ -605,7 +614,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
}
}
}
dialog.setNegativeButton("취소") { _, _ -> }
dialog.setNegativeButton(getString(R.string.cancel)) { _, _ -> }
dialog.show()
}
@@ -643,7 +652,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
viewModel.isBgOn.observe(this) {
if (it) {
binding.ivCover.visibility = View.VISIBLE
binding.tvBgSwitch.text = "배경 ON"
binding.tvBgSwitch.text = getString(R.string.screen_live_room_bg_on)
binding.tvBgSwitch.setTextColor(
ContextCompat.getColor(
applicationContext,
@@ -654,7 +663,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
.setBackgroundResource(R.drawable.bg_round_corner_5_3_transparent_3bb9f1)
} else {
binding.ivCover.visibility = View.GONE
binding.tvBgSwitch.text = "배경 OFF"
binding.tvBgSwitch.text = getString(R.string.screen_live_room_bg_off)
binding.tvBgSwitch.setTextColor(
ContextCompat.getColor(
applicationContext,
@@ -668,7 +677,8 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
viewModel.isSignatureOn.observe(this) {
if (it) {
binding.tvSignatureSwitch.text = "시그 ON"
binding.tvSignatureSwitch.text =
getString(R.string.screen_live_room_signature_on)
binding.tvSignatureSwitch.setTextColor(
ContextCompat.getColor(
applicationContext,
@@ -678,7 +688,8 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
binding.tvSignatureSwitch
.setBackgroundResource(R.drawable.bg_round_corner_5_3_transparent_3bb9f1)
} else {
binding.tvSignatureSwitch.text = "시그 OFF"
binding.tvSignatureSwitch.text =
getString(R.string.screen_live_room_signature_off)
binding.tvSignatureSwitch.setTextColor(
ContextCompat.getColor(
applicationContext,
@@ -710,9 +721,9 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
SodaDialog(
this@LiveRoomActivity,
layoutInflater,
"알림",
"지금 참여하던 라이브는 '19세 이상' 연령제한이 설정되어 정보통신망 이용촉진 및 정보 보호 등에 관한 법률 및 청소년 보호법의 규정에 의해 만 19세 미만의 청소년은 이용할 수 없습니다.\n마이페이지에서 본인인증 후 다시 이용하시기 바랍니다.",
"확인",
getString(R.string.screen_live_room_age_limit_title),
getString(R.string.screen_live_room_age_limit_message),
getString(R.string.screen_live_room_ok),
{ finish() }
).show(screenWidth)
}
@@ -773,7 +784,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
copyMessage = {
val clipboard = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
clipboard.setPrimaryClip(ClipData.newPlainText(it, it))
showToast("후원 히스토리가 복사되었습니다.")
showToast(getString(R.string.screen_live_room_copy_history))
}
).show()
}
@@ -807,17 +818,17 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
newTitle,
newContent,
newCoverImageFile,
isActivateMenu,
menuId,
menu,
isAdult,
onSuccess = {
cropper.cleanup()
Toast.makeText(
applicationContext,
"라이브 정보가 수정되었습니다.",
Toast.LENGTH_LONG
).show()
isActivateMenu,
menuId,
menu,
isAdult,
onSuccess = {
cropper.cleanup()
Toast.makeText(
applicationContext,
getString(R.string.screen_live_room_info_updated),
Toast.LENGTH_LONG
).show()
agora.sendRawMessageToGroup(
rawMessage = Gson().toJson(
@@ -840,7 +851,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
}
binding.ivEdit.visibility = View.VISIBLE
binding.tvQuit.text = "라이브 종료"
binding.tvQuit.text = getString(R.string.screen_live_room_quit)
handler.postDelayed({
binding.tvQuit.requestLayout()
@@ -860,7 +871,10 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
intent.type = "text/plain"
intent.putExtra(Intent.EXTRA_TEXT, it)
val shareIntent = Intent.createChooser(intent, "라이브 공유")
val shareIntent = Intent.createChooser(
intent,
getString(R.string.screen_live_room_share_title)
)
startActivity(shareIntent)
}
}
@@ -1034,26 +1048,22 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
LiveDialog(
activity = this,
layoutInflater = layoutInflater,
title = "라이브 종료",
desc = "라이브를 종료하시겠습니까?\n" +
"라이브를 종료하면 대화내용은\n" +
"저장되지 않고 사라집니다.\n" +
"참여자들 또한 라이브가 종료되어\n" +
"강제퇴장 됩니다.",
confirmButtonTitle = "",
title = getString(R.string.screen_live_room_end_title),
desc = getString(R.string.screen_live_room_end_message),
confirmButtonTitle = getString(R.string.screen_live_room_yes),
confirmButtonClick = { finish() },
cancelButtonTitle = "아니오",
cancelButtonTitle = getString(R.string.screen_live_room_no),
cancelButtonClick = {}
).show(screenWidth)
} else {
LiveDialog(
activity = this,
layoutInflater = layoutInflater,
title = "라이브 나가기",
desc = "라이브에서 나가시겠습니까?",
confirmButtonTitle = "",
title = getString(R.string.screen_live_room_exit_title),
desc = getString(R.string.screen_live_room_exit_message),
confirmButtonTitle = getString(R.string.screen_live_room_yes),
confirmButtonClick = { finish() },
cancelButtonTitle = "아니오",
cancelButtonTitle = getString(R.string.screen_live_room_no),
cancelButtonClick = {}
).show(screenWidth)
}
@@ -1136,7 +1146,9 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
requestType = LiveRoomRequestType.INVITE_SPEAKER
) {
handler.post {
showDialog(content = "스피커 요청을 보냈습니다.\n잠시만 기다려 주세요.")
showDialog(
content = getString(R.string.screen_live_room_request_speaker)
)
}
}
}
@@ -1179,13 +1191,19 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
handler.post {
showDialog(
content = "${viewModel.getUserNickname(peerId.toInt())}님을 스탭에서 해제했어요."
content = getString(
R.string.screen_live_room_unstaffed,
viewModel.getUserNickname(peerId.toInt())
)
)
}
} else {
handler.post {
showDialog(
content = "${viewModel.getUserNickname(peerId.toInt())}님을 리스너로 변경했어요."
content = getString(
R.string.screen_live_room_changed_to_listener,
viewModel.getUserNickname(peerId.toInt())
)
)
}
}
@@ -1227,7 +1245,10 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
) {
handler.post {
showDialog(
content = "${viewModel.getUserNickname(userId.toInt())}님을 내보냈습니다."
content = getString(
R.string.screen_live_room_ban_message,
viewModel.getUserNickname(userId.toInt())
)
)
}
}
@@ -1239,7 +1260,12 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
requestType = LiveRoomRequestType.NO_CHATTING
) {
handler.post {
showDialog(content = "${nickname}님을 3분간 채팅금지를 하였습니다.")
showDialog(
content = getString(
R.string.screen_live_room_no_chat_applied,
nickname
)
)
}
}
}
@@ -1293,7 +1319,10 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
if (isNoChatting) {
Toast.makeText(
applicationContext,
"${remainingNoChattingTime}초 동안 채팅하실 수 없습니다",
getString(
R.string.screen_live_room_no_chat_warning,
remainingNoChattingTime
),
Toast.LENGTH_SHORT
).show()
} else if (binding.etChat.text.isNotBlank() && nickname.isNotBlank() && profileUrl.isNotBlank()) {
@@ -1312,7 +1341,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
agora.inputChat(message) {
Toast.makeText(
applicationContext,
"라이브 접속에 문제가 발생했습니다.\n재접속 해주세요",
getString(R.string.screen_live_room_connection_issue),
Toast.LENGTH_SHORT
).show()
}
@@ -1341,9 +1370,9 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
private fun donation(can: Int, message: String, isSecret: Boolean) {
val rawMessage = if (isSecret) {
"${can}캔으로 비밀미션을 보냈습니다.\uD83E\uDD2B"
getString(R.string.screen_live_room_secret_mission_sent, can)
} else {
"${can}캔을 후원하셨습니다.\uD83D\uDCB0\uD83E\uDE99"
getString(R.string.screen_live_room_donation_sent, can)
}
viewModel.donation(roomId, can, message, isSecret) { signature ->
@@ -1506,7 +1535,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
Logger.e("onUserOffline - uid: $uid")
if (viewModel.isEqualToHostId(uid)) {
handler.post {
showToast("라이브가 종료되었습니다.")
showToast(getString(R.string.screen_live_room_closed))
finish()
}
} else {
@@ -1553,17 +1582,21 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
) {
handler.post {
showDialog(
content = "스피커로 초대되었어요",
cancelTitle = "다음에요",
content = getString(R.string.screen_live_room_invited_speaker),
cancelTitle = getString(R.string.screen_live_room_invited_later),
cancelAction = {},
confirmTitle = "스피커로 참여하기",
confirmTitle = getString(R.string.screen_live_room_invited_join),
confirmAction = {
handler.post {
viewModel.setSpeaker(
roomId,
SharedPreferenceManager.userId
) {
showDialog(content = "스피커가 되었어요!")
showDialog(
content = getString(
R.string.screen_live_room_became_speaker
)
)
setBroadcaster()
viewModel.getRoomInfo(roomId)
binding.tvChangeListener.visibility = View.VISIBLE
@@ -1591,7 +1624,10 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
handler.post {
finish()
showToast(
"${viewModel.getManagerNickname()}님이 라이브에서 내보냈습니다."
getString(
R.string.screen_live_room_kicked,
viewModel.getManagerNickname()
)
)
}
@@ -1604,7 +1640,10 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
}
handler.post {
showDialog(
content = "${viewModel.getManagerNickname()}님이 스탭으로 지정했습니다."
content = getString(
R.string.screen_live_room_staff_assigned,
viewModel.getManagerNickname()
)
)
}
return
@@ -1613,7 +1652,10 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
if (rawMessage == LiveRoomRequestType.RELEASE_MANAGER.toString()) {
handler.post {
showDialog(
content = "${viewModel.getManagerNickname()}님이 스탭에서 해제했습니다."
content = getString(
R.string.screen_live_room_staff_removed,
viewModel.getManagerNickname()
)
)
}
viewModel.getRoomInfo(roomId = roomId)
@@ -1781,7 +1823,10 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
}
private fun joinChannel(roomInfo: GetRoomInfoResponse) {
loadingDialog.show(width = screenWidth, message = "라이브에 입장하고 있습니다.")
loadingDialog.show(
width = screenWidth,
message = getString(R.string.screen_live_room_loading)
)
val userId = SharedPreferenceManager.userId
agora.joinRtcChannel(
@@ -1806,7 +1851,10 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
val intent = Intent(this, SodaLiveService::class.java)
intent.putExtra("roomId", roomId)
intent.putExtra("content", "라이브 진행중 - ${roomInfo.title}")
intent.putExtra(
"content",
getString(R.string.screen_live_room_now_playing, roomInfo.title)
)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(intent)
} else {
@@ -1828,7 +1876,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
private fun agoraConnectFail() {
handler.post {
loadingDialog.dismiss()
showToast("라이브에 접속하지 못했습니다.\n다시 시도해 주세요.")
showToast(getString(R.string.screen_live_room_connect_failed))
finish()
}
}
@@ -1952,9 +2000,9 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
SodaDialog(
activity = this@LiveRoomActivity,
layoutInflater = layoutInflater,
title = "안내",
desc = "'좋아해요'는 유료 후원입니다.\n클릭시 1캔이 소진됩니다.",
confirmButtonTitle = "확인",
title = getString(R.string.screen_live_room_like_paid_title),
desc = getString(R.string.screen_live_room_like_paid_message),
confirmButtonTitle = getString(R.string.screen_live_room_like_paid_confirm),
confirmButtonClick = { isAvailableLikeHeart = true }
).show(screenWidth)
return true
@@ -2089,9 +2137,9 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
SodaDialog(
activity = this@LiveRoomActivity,
layoutInflater = layoutInflater,
title = "안내",
desc = "'좋아해요'는 유료 후원입니다.\n클릭시 1캔이 소진됩니다.",
confirmButtonTitle = "확인",
title = getString(R.string.screen_live_room_like_paid_title),
desc = getString(R.string.screen_live_room_like_paid_message),
confirmButtonTitle = getString(R.string.screen_live_room_like_paid_confirm),
confirmButtonClick = { isAvailableLikeHeart = true }
).show(screenWidth)
}
@@ -2152,7 +2200,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
}
private fun showHeartMessage() {
val str = "'${heartNickname}'님이 마음을 전했습니다 : \uD83D\uDC95"
val str = getString(R.string.screen_live_room_heart_sent, heartNickname)
val spStr = SpannableString(str)
spStr.setSpan(