From af04ff9bf7e6d7a3aa828e72b7b147e101fafda9 Mon Sep 17 00:00:00 2001 From: klaus Date: Tue, 2 Dec 2025 18:58:18 +0900 Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=EB=A3=B8=20?= =?UTF-8?q?=EC=83=81=EC=84=B8/=ED=83=9C=EA=B7=B8=20=EB=8B=A4=EC=9D=B4?= =?UTF-8?q?=EC=96=BC=EB=A1=9C=EA=B7=B8=20=EB=AC=B8=EC=9E=90=EC=97=B4=20?= =?UTF-8?q?=EB=A6=AC=EC=86=8C=EC=8A=A4=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../co/vividnext/sodalive/app/SodaLiveApp.kt | 2 ++ .../common/SodaLiveApplicationHolder.kt | 13 +++++++++ .../room/detail/LiveRoomDetailFragment.kt | 15 ++++++---- .../room/detail/LiveRoomDetailViewModel.kt | 10 +++++-- .../live/room/tag/LiveTagViewModel.kt | 10 +++++-- .../res/layout/fragment_live_room_detail.xml | 28 +++++++++---------- app/src/main/res/values-en/strings.xml | 15 ++++++++++ app/src/main/res/values-ja/strings.xml | 17 ++++++++++- app/src/main/res/values/strings.xml | 15 ++++++++++ 9 files changed, 101 insertions(+), 24 deletions(-) create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/common/SodaLiveApplicationHolder.kt diff --git a/app/src/main/java/kr/co/vividnext/sodalive/app/SodaLiveApp.kt b/app/src/main/java/kr/co/vividnext/sodalive/app/SodaLiveApp.kt index 4b7ffab9..8b9d2237 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/app/SodaLiveApp.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/app/SodaLiveApp.kt @@ -17,6 +17,7 @@ import com.orhanobut.logger.Logger import kr.co.vividnext.sodalive.BuildConfig import kr.co.vividnext.sodalive.common.ImageLoaderProvider import kr.co.vividnext.sodalive.common.SharedPreferenceManager +import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder import kr.co.vividnext.sodalive.di.AppDI import kr.co.vividnext.sodalive.tracking.FirebaseTracking import tech.notifly.Notifly @@ -36,6 +37,7 @@ class SodaLiveApp : Application(), DefaultLifecycleObserver { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) + SodaLiveApplicationHolder.init(this) SharedPreferenceManager.init(applicationContext) ImageLoaderProvider.init(applicationContext) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/common/SodaLiveApplicationHolder.kt b/app/src/main/java/kr/co/vividnext/sodalive/common/SodaLiveApplicationHolder.kt new file mode 100644 index 00000000..5ad4cfa1 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/common/SodaLiveApplicationHolder.kt @@ -0,0 +1,13 @@ +package kr.co.vividnext.sodalive.common + +import android.app.Application + +object SodaLiveApplicationHolder { + private lateinit var application: Application + + fun init(app: Application) { + application = app + } + + fun get(): Application = application +} diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt index 2ac2c072..4c5fe743 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt @@ -138,7 +138,7 @@ class LiveRoomDetailFragment( 0 ) } else { - binding.tvCan.text = "무료" + binding.tvCan.text = getString(R.string.screen_live_room_free) binding.tvCan.setCompoundDrawablesWithIntrinsicBounds( 0, 0, @@ -156,7 +156,7 @@ class LiveRoomDetailFragment( binding.ivShare2.setOnClickListener { shareRoom(response) } if (response.channelName.isNullOrBlank()) { - binding.tvParticipateExpression.text = "예약자" + binding.tvParticipateExpression.setText(R.string.live_reservation_complete) when { response.manager.id == SharedPreferenceManager.userId -> { binding.llStartDelete.visibility = View.VISIBLE @@ -225,7 +225,8 @@ class LiveRoomDetailFragment( binding.llProfiles.visibility = View.GONE binding.rvParticipate.visibility = View.VISIBLE binding.tvParticipateExpression.visibility = View.VISIBLE - binding.tvOpenAllProfile.text = "닫기" + binding.tvOpenAllProfile.text = + getString(R.string.screen_live_room_collapse) binding.tvOpenAllProfile.setCompoundDrawablesWithIntrinsicBounds( R.drawable.ic_live_detail_top, 0, @@ -236,7 +237,8 @@ class LiveRoomDetailFragment( binding.llProfiles.visibility = View.VISIBLE binding.rvParticipate.visibility = View.GONE binding.tvParticipateExpression.visibility = View.GONE - binding.tvOpenAllProfile.text = "펼쳐보기" + binding.tvOpenAllProfile.text = + getString(R.string.screen_live_room_expand) binding.tvOpenAllProfile.setCompoundDrawablesWithIntrinsicBounds( R.drawable.ic_live_detail_bottom, 0, @@ -358,7 +360,10 @@ class LiveRoomDetailFragment( 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) } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailViewModel.kt index 8a916bbf..466c5c8d 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailViewModel.kt @@ -5,8 +5,10 @@ import androidx.lifecycle.MutableLiveData import com.orhanobut.logger.Logger import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers +import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.common.SharedPreferenceManager +import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder import kr.co.vividnext.sodalive.common.Utils import kr.co.vividnext.sodalive.live.LiveRepository @@ -42,7 +44,8 @@ class LiveRoomDetailViewModel(private val repository: LiveRepository) : BaseView _toastLiveData.postValue(it.message) } else { _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + SodaLiveApplicationHolder.get() + .getString(R.string.screen_live_room_unknown_error) ) } onFailure() @@ -51,7 +54,10 @@ class LiveRoomDetailViewModel(private val repository: LiveRepository) : BaseView { _isLoading.value = false it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue( + SodaLiveApplicationHolder.get() + .getString(R.string.screen_live_room_unknown_error) + ) onFailure() } ) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/tag/LiveTagViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/tag/LiveTagViewModel.kt index 691b7fea..b0527fe0 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/tag/LiveTagViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/tag/LiveTagViewModel.kt @@ -5,8 +5,10 @@ import androidx.lifecycle.MutableLiveData import com.orhanobut.logger.Logger import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers +import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.common.SharedPreferenceManager +import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder class LiveTagViewModel(private val repository: LiveTagRepository) : BaseViewModel() { private val _toastLiveData = MutableLiveData() @@ -31,14 +33,18 @@ class LiveTagViewModel(private val repository: LiveTagRepository) : BaseViewMode _toastLiveData.postValue(it.message) } else { _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + SodaLiveApplicationHolder.get() + .getString(R.string.screen_live_room_unknown_error) ) } } }, { it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue( + SodaLiveApplicationHolder.get() + .getString(R.string.screen_live_room_unknown_error) + ) } ) ) diff --git a/app/src/main/res/layout/fragment_live_room_detail.xml b/app/src/main/res/layout/fragment_live_room_detail.xml index d993ae4f..aa34de54 100644 --- a/app/src/main/res/layout/fragment_live_room_detail.xml +++ b/app/src/main/res/layout/fragment_live_room_detail.xml @@ -118,12 +118,12 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" - android:fontFamily="@font/gmarket_sans_medium" - android:gravity="center_vertical" - android:text="참여자" - android:textColor="@color/color_eeeeee" - android:textSize="12sp" - android:visibility="gone" /> + android:fontFamily="@font/gmarket_sans_medium" + android:gravity="center_vertical" + android:text="@string/screen_live_room_participant_label" + android:textColor="@color/color_eeeeee" + android:textSize="12sp" + android:visibility="gone" /> @@ -294,7 +294,7 @@ android:fontFamily="@font/gmarket_sans_medium" android:paddingHorizontal="8.7dp" android:paddingVertical="10dp" - android:text="채널보기" + android:text="@string/screen_live_room_channel" android:textColor="@color/white" android:textSize="12sp" app:drawableStartCompat="@drawable/ic_thumb_play" /> @@ -374,7 +374,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" android:paddingVertical="16dp" - android:text="수정" + android:text="@string/screen_live_room_modify" android:textColor="@color/color_3bb9f1" android:textSize="18.3sp" /> @@ -388,7 +388,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" android:paddingVertical="16dp" - android:text="시작하기" + android:text="@string/screen_live_room_start" android:textColor="@color/white" android:textSize="18.3sp" /> @@ -403,7 +403,7 @@ android:fontFamily="@font/gmarket_sans_medium" android:gravity="center" android:padding="5.3dp" - android:text="예약삭제" + android:text="@string/screen_live_room_cancel_reservation" android:textColor="@color/color_ff5c49" android:textSize="14sp" /> @@ -433,7 +433,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" android:paddingVertical="16dp" - android:text="예약완료" + android:text="@string/screen_live_room_reservation_done" android:textColor="@color/color_777777" android:textSize="18.3sp" android:visibility="gone" /> @@ -447,7 +447,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" android:paddingVertical="16dp" - android:text="예약하기" + android:text="@string/screen_live_room_reserve" android:textColor="@color/white" android:textSize="18.3sp" android:visibility="gone" /> @@ -461,7 +461,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" android:paddingVertical="16dp" - android:text="지금 참여하기" + android:text="@string/screen_live_room_join_now" android:textColor="@color/white" android:textSize="18.3sp" android:visibility="gone" /> diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 2739696d..cd0a2c6d 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -414,6 +414,21 @@ Enter a message to send (up to 1000 chars) Enter 10 or more cans Enter at least 1 can + Free + Participants + Show more + Hide + View channel + Edit + Start + Cancel reservation + Reserved + Reserve + Join now + Select interests + You can select up to 3. + Confirm + An unknown error occurred. Please try again. Details Login Edit profile diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 03407f41..650b9115 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -357,7 +357,6 @@ 支援履歴をコピーしました。 ライブ情報を修正しました。 ライブ終了 - ライブを共有 ライブ終了 ライブを終了しますか?\n終了するとチャット内容は保存されず消えます。\n参加者もライブ終了とともに\n強制退出されます。 ライブ退出 @@ -414,6 +413,22 @@ 一緒に送るメッセージを入力(最大1000文字) 10CAN以上を入力してください 1CAN以上を入力してください + 無料 + 参加者 + もっと見る + 閉じる + チャンネルを見る + 修正 + 開始 + 予約削除 + 予約完了 + 予約する + 今すぐ参加 + ライブ共有 + 関心事を選択 + 最大3つまで選択できます。 + 確認 + 不明なエラーが発生しました。もう一度お試しください。 詳細 ログイン プロフィール編集 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cf4eaf32..cb61fb7b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -413,6 +413,21 @@ 함께 보낼 메시지 입력(최대 1000자) 10캔 이상 입력하세요 1캔 이상 입력하세요 + 무료 + 참여자 + 펼쳐보기 + 닫기 + 채널보기 + 수정 + 시작하기 + 예약삭제 + 예약완료 + 예약하기 + 지금 참여하기 + 관심사 선택 + 최대 3개까지 선택 가능합니다. + 확인 + 알 수 없는 오류가 발생했습니다. 다시 시도해 주세요. 자세히 LOGIN 프로필 수정