오디오 콘텐츠 주문 화면 문자열 리소스화

주문 목록/확인 UI의 텍스트를 ko/en/ja 리소스로 이전
This commit is contained in:
2025-12-03 15:32:41 +09:00
parent dc00fd0277
commit 6ef19d53f4
12 changed files with 93 additions and 40 deletions

View File

@@ -1,7 +1,5 @@
package kr.co.vividnext.sodalive.audio_content.box
import android.os.Handler
import android.os.Looper
import android.widget.LinearLayout
import com.google.android.material.tabs.TabLayout
import kr.co.vividnext.sodalive.R

View File

@@ -1,6 +1,5 @@
package kr.co.vividnext.sodalive.audio_content.order
import android.annotation.SuppressLint
import android.app.Activity
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
@@ -17,7 +16,6 @@ import kr.co.vividnext.sodalive.databinding.DialogAudioContentOrderConfirmBindin
import kr.co.vividnext.sodalive.extensions.dpToPx
import kr.co.vividnext.sodalive.extensions.moneyFormat
@SuppressLint("SetTextI18n")
class AudioContentOrderConfirmDialog(
activity: Activity,
layoutInflater: LayoutInflater,
@@ -38,6 +36,7 @@ class AudioContentOrderConfirmDialog(
val dialogView = DialogAudioContentOrderConfirmBinding.inflate(layoutInflater)
init {
val context = dialogView.root.context
val dialogBuilder = AlertDialog.Builder(activity)
dialogBuilder.setView(dialogView.root)
@@ -82,7 +81,10 @@ class AudioContentOrderConfirmDialog(
dialogView.tvPoint.visibility = View.GONE
dialogView.tvPlus.visibility = View.GONE
dialogView.ivCan.visibility = View.GONE
dialogView.tvCan.text = "${(price * 110).moneyFormat()}"
dialogView.tvCan.text = context.getString(
R.string.audio_content_order_price_won_format,
(price * 110).moneyFormat()
)
} else {
if (usablePoint > 0) {
dialogView.ivPoint.visibility = View.VISIBLE
@@ -111,19 +113,19 @@ class AudioContentOrderConfirmDialog(
}
}
if (SharedPreferenceManager.userId == 17958L) {
dialogView.tvNotice.text = if (orderType == OrderType.RENTAL) {
"콘텐츠를 대여하시겠습니까?"
} else {
"콘텐츠를 소장하시겠습니까?"
}
} else {
dialogView.tvNotice.text = if (orderType == OrderType.RENTAL) {
"콘텐츠를 대여하시겠습니까?\n아래 금액이 차감됩니다."
} else {
"콘텐츠를 소장하시겠습니까?\n아래 금액이 차감됩니다."
}
val noticeResId = when {
SharedPreferenceManager.userId == 17958L && orderType == OrderType.RENTAL ->
R.string.audio_content_order_confirm_notice_rental_simple
SharedPreferenceManager.userId == 17958L && orderType == OrderType.KEEP ->
R.string.audio_content_order_confirm_notice_keep_simple
orderType == OrderType.RENTAL ->
R.string.audio_content_order_confirm_notice_rental
else -> R.string.audio_content_order_confirm_notice_keep
}
dialogView.tvNotice.text = dialogView.root.context.getString(noticeResId)
dialogView.tvCancel.setOnClickListener {
alertDialog.dismiss()

View File

@@ -1,11 +1,11 @@
package kr.co.vividnext.sodalive.audio_content.order
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.databinding.FragmentAudioContentOrderBinding
import kr.co.vividnext.sodalive.extensions.moneyFormat
@@ -28,23 +28,31 @@ class AudioContentOrderFragment(
return binding.root
}
@SuppressLint("SetTextI18n")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val context = requireContext()
if (SharedPreferenceManager.userId == 17958L) {
binding.tvKeepDate.text = "(이용기간 1년)"
binding.tvKeepDate.text =
context.getString(R.string.audio_content_order_keep_period_special)
binding.ivKeepCan.visibility = View.GONE
binding.ivRentalCan.visibility = View.GONE
} else {
binding.tvKeepDate.text = "(서비스 종료시까지)"
binding.tvKeepDate.text =
context.getString(R.string.audio_content_order_keep_period_default)
binding.ivKeepCan.visibility = View.VISIBLE
binding.ivRentalCan.visibility = View.VISIBLE
}
if (SharedPreferenceManager.userId == 17958L) {
binding.tvKeep.text = "${(price * 110).moneyFormat()}"
binding.tvRental.text = "${(ceil(price * 0.7).toInt() * 110).moneyFormat()}"
binding.tvKeep.text = context.getString(
R.string.audio_content_order_price_won_format,
(price * 110).moneyFormat()
)
binding.tvRental.text = context.getString(
R.string.audio_content_order_price_won_format,
(ceil(price * 0.7).toInt() * 110).moneyFormat()
)
} else {
binding.tvKeep.text = price.moneyFormat()
binding.tvRental.text = ceil(price * 0.7).toInt().moneyFormat()

View File

@@ -33,7 +33,7 @@ class AudioContentOrderListActivity : BaseActivity<ActivityAudioContentOrderList
}
private fun setupToolbar() {
binding.toolbar.tvBack.text = "콘텐츠 보관함"
binding.toolbar.tvBack.text = getString(R.string.screen_audio_content_order_title)
binding.toolbar.tvBack.setOnClickListener { finish() }
}
}

View File

@@ -122,7 +122,7 @@ class AudioContentOrderListFragment : BaseFragment<FragmentAudioContentOrderList
}
viewModel.totalCount.observe(viewLifecycleOwner) {
binding.tvTotalCount.text = "$it"
binding.tvTotalCount.text = it.toString()
}
}
}

View File

@@ -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.audio_content.AudioContentRepository
import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
class AudioContentOrderListViewModel(
@@ -34,6 +36,7 @@ class AudioContentOrderListViewModel(
private val size = 10
fun getAudioContentOrderList(onFailure: (() -> Unit)? = null) {
val unknownError = SodaLiveApplicationHolder.get().getString(R.string.common_error_unknown)
if (_isLoading.value == false) {
_isLoading.value = true
compositeDisposable.add(
@@ -59,9 +62,7 @@ class AudioContentOrderListViewModel(
if (it.message != null) {
_toastLiveData.postValue(it.message)
} else {
_toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
)
_toastLiveData.postValue(unknownError)
}
if (onFailure != null) {
@@ -73,7 +74,7 @@ class AudioContentOrderListViewModel(
{
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
_toastLiveData.postValue(unknownError)
if (onFailure != null) {
onFailure()
}