diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailActivity.kt index ffc990d2..fa11628e 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailActivity.kt @@ -38,7 +38,11 @@ class SeriesDetailActivity : BaseActivity( val seriesId = intent.getLongExtra(Constants.EXTRA_SERIES_ID, 0) if (seriesId <= 0) { - Toast.makeText(applicationContext, "잘못된 요청입니다.", Toast.LENGTH_LONG).show() + Toast.makeText( + applicationContext, + getString(R.string.screen_audio_content_error_invalid_request), + Toast.LENGTH_LONG + ).show() finish() } @@ -57,8 +61,14 @@ class SeriesDetailActivity : BaseActivity( private fun setupTab() { val tabs = binding.tabs - tabs.addTab(tabs.newTab().setText("홈").setTag("home")) - tabs.addTab(tabs.newTab().setText("작품소개").setTag("introduction")) + tabs.addTab( + tabs.newTab().setText(R.string.screen_series_detail_tab_home).setTag("home") + ) + tabs.addTab( + tabs.newTab() + .setText(R.string.screen_series_detail_tab_introduction) + .setTag("introduction") + ) tabs.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { override fun onTabSelected(tab: TabLayout.Tab) { @@ -152,7 +162,15 @@ class SeriesDetailActivity : BaseActivity( binding.tvTitle.text = seriesDetail.title binding.tvGenre.text = seriesDetail.genre - binding.tvPublishedDaysOfWeek.text = "${seriesDetail.publishedDaysOfWeek} 연재" + val publishedDays = if (seriesDetail.publishedDaysOfWeek == getString(R.string.day_random)) { + getString(R.string.day_random) + } else { + seriesDetail.publishedDaysOfWeek + } + binding.tvPublishedDaysOfWeek.text = getString( + R.string.screen_series_detail_published_days_format, + publishedDays + ) if (seriesDetail.isAdult) { binding.tvAge19.visibility = View.VISIBLE diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailHomeFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailHomeFragment.kt index f9753615..9eda0b74 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailHomeFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailHomeFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Build import android.os.Bundle import android.view.View +import androidx.annotation.OptIn +import androidx.media3.common.util.UnstableApi import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager +import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.audio_content.detail.AudioContentDetailActivity import kr.co.vividnext.sodalive.audio_content.series.content.SeriesContentAdapter import kr.co.vividnext.sodalive.audio_content.series.content.SeriesContentAllActivity @@ -44,9 +47,12 @@ class SeriesDetailHomeFragment : BaseFragment( } } - @SuppressLint("SetTextI18n") + @OptIn(UnstableApi::class) private fun setContent() { - binding.tvTotalCount.text = "(${seriesDetailResponse!!.contentCount})" + binding.tvTotalCount.text = getString( + R.string.screen_series_detail_content_count_format, + seriesDetailResponse!!.contentCount + ) binding.llContentAll.setOnClickListener { startActivity( Intent(requireActivity(), SeriesContentAllActivity::class.java).apply { diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailIntroductionFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailIntroductionFragment.kt index 70d88857..58198edc 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailIntroductionFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailIntroductionFragment.kt @@ -53,22 +53,36 @@ class SeriesDetailIntroductionFragment : BaseFragment Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue(unknownErrorMessage) } ) ) @@ -84,20 +84,14 @@ class SeriesDetailViewModel( if (it.success && it.data != null) { onSuccess() } else { - if (it.message != null) { - _toastLiveData.postValue(it.message) - } else { - _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." - ) - } + _toastLiveData.postValue(it.message ?: unknownErrorMessage) } _isLoading.value = false }, { _isLoading.value = false it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue(unknownErrorMessage) } ) ) diff --git a/app/src/main/res/layout/activity_series_detail.xml b/app/src/main/res/layout/activity_series_detail.xml index 0cbf82d6..8cf92cca 100644 --- a/app/src/main/res/layout/activity_series_detail.xml +++ b/app/src/main/res/layout/activity_series_detail.xml @@ -108,7 +108,7 @@ android:fontFamily="@font/gmarket_sans_medium" android:paddingHorizontal="5.3dp" android:paddingVertical="3.3dp" - android:text="전체연령가" + android:text="@string/screen_series_detail_age_all" android:textColor="@color/color_d2d2d2" android:textSize="12sp" /> @@ -121,7 +121,7 @@ android:fontFamily="@font/gmarket_sans_medium" android:paddingHorizontal="5.3dp" android:paddingVertical="3.3dp" - android:text="19세" + android:text="@string/screen_series_detail_age_19_badge" android:textColor="@color/color_f1291c" android:textSize="12sp" /> diff --git a/app/src/main/res/layout/fragment_series_detail_home.xml b/app/src/main/res/layout/fragment_series_detail_home.xml index a9c071d9..88a52fb0 100644 --- a/app/src/main/res/layout/fragment_series_detail_home.xml +++ b/app/src/main/res/layout/fragment_series_detail_home.xml @@ -20,7 +20,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/gmarket_sans_bold" - android:text="전체회차 듣기" + android:text="@string/screen_series_content_all_title_default" android:textColor="@color/color_3bb9f1" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/fragment_series_detail_introduction.xml b/app/src/main/res/layout/fragment_series_detail_introduction.xml index 859b80ea..c99ec7ca 100644 --- a/app/src/main/res/layout/fragment_series_detail_introduction.xml +++ b/app/src/main/res/layout/fragment_series_detail_introduction.xml @@ -12,7 +12,7 @@ android:layout_marginHorizontal="13.3dp" android:layout_marginTop="16dp" android:fontFamily="@font/gmarket_sans_bold" - android:text="키워드" + android:text="@string/screen_series_detail_section_keywords" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -35,7 +35,7 @@ android:layout_marginHorizontal="13.3dp" android:layout_marginTop="16dp" android:fontFamily="@font/gmarket_sans_bold" - android:text="작품 소개" + android:text="@string/screen_series_detail_section_introduction" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -62,7 +62,7 @@ android:layout_marginHorizontal="13.3dp" android:layout_marginTop="16dp" android:fontFamily="@font/gmarket_sans_bold" - android:text="상세정보" + android:text="@string/screen_series_detail_section_info" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -82,7 +82,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/gmarket_sans_medium" - android:text="장르" + android:text="@string/screen_series_detail_label_genre" android:textColor="@color/color_777777" android:textSize="14.7sp" /> @@ -91,7 +91,7 @@ android:layout_height="wrap_content" android:layout_marginTop="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="연령제한" + android:text="@string/screen_series_detail_label_age" android:textColor="@color/color_777777" android:textSize="14.7sp" /> @@ -101,7 +101,7 @@ android:layout_height="wrap_content" android:layout_marginTop="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="작가" + android:text="@string/screen_series_detail_label_writer" android:textColor="@color/color_777777" android:textSize="14.7sp" /> @@ -111,7 +111,7 @@ android:layout_height="wrap_content" android:layout_marginTop="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="제작사" + android:text="@string/screen_series_detail_label_studio" android:textColor="@color/color_777777" android:textSize="14.7sp" /> @@ -120,7 +120,7 @@ android:layout_height="wrap_content" android:layout_marginTop="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="연재" + android:text="@string/screen_series_detail_label_published_days" android:textColor="@color/color_777777" android:textSize="14.7sp" /> @@ -129,7 +129,7 @@ android:layout_height="wrap_content" android:layout_marginTop="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="출시일" + android:text="@string/screen_series_detail_label_published_date" android:textColor="@color/color_777777" android:textSize="14.7sp" /> @@ -207,7 +207,7 @@ android:layout_marginHorizontal="13.3dp" android:layout_marginTop="18.7dp" android:fontFamily="@font/gmarket_sans_bold" - android:text="가격" + android:text="@string/screen_series_detail_section_price" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -227,7 +227,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/gmarket_sans_medium" - android:text="대여" + android:text="@string/screen_series_detail_price_rental_label" android:textColor="@color/color_777777" android:textSize="14.7sp" /> @@ -236,7 +236,7 @@ android:layout_height="wrap_content" android:layout_marginTop="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="소장" + android:text="@string/screen_series_detail_price_keep_label" android:textColor="@color/color_777777" android:textSize="14.7sp" /> diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 706ae723..d70974c3 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -171,6 +171,30 @@ Full episodes Newest Oldest + Home + About + Serial on %1$s + All ages + 19+ + 19 + Keywords + Introduction + Details + Genre + Age rating + Writer + Studio + Schedule + Release date + Price + Rent + Own + Free (5 days) + %1$d cans (5 days) + %1$s ~ %2$d cans (5 days) + %1$d cans + %1$s ~ %2$d cans + (%1$d) All series Home By day diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index c7d2872a..d1a8070a 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -171,6 +171,30 @@ 全話を聴く 最新順 登録順 + ホーム + 作品紹介 + %1$s 連載 + 全年齢 + 19歳以上 + 19歳 + キーワード + 作品紹介 + 詳細情報 + ジャンル + 年齢制限 + 作家 + 制作会社 + 連載 + リリース日 + 価格 + レンタル + 購入 + 無料(5日) + %1$dキャン(5日) + %1$s ~ %2$dキャン (5日) + %1$dキャン + %1$s ~ %2$dキャン + (%1$d) シリーズ一覧 ホーム 曜日別 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 93f39247..7a9b8b0e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -170,6 +170,30 @@ 전체회차 듣기 최신순 등록순 + + 작품소개 + %1$s 연재 + 전체연령가 + 19세 이상 + 19세 + 키워드 + 작품 소개 + 상세정보 + 장르 + 연령제한 + 작가 + 제작사 + 연재 + 출시일 + 가격 + 대여 + 소장 + 무료(5일) + %1$d캔(5일) + %1$s ~ %2$d캔 (5일) + %1$d캔 + %1$s ~ %2$d캔 + (%1$d) 시리즈 전체보기 요일별