룰렛 설정/프리뷰 문자열 리소스화

This commit is contained in:
2025-12-03 11:40:03 +09:00
parent 82b09f2c63
commit 5a4b833516
9 changed files with 195 additions and 73 deletions

View File

@@ -212,7 +212,10 @@ class RoulettePreviewDialog(
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
private fun setRouletteData(roulettePreview: RoulettePreview) { private fun setRouletteData(roulettePreview: RoulettePreview) {
dialogView.tvSpinRoulette.text = "${roulettePreview.can}캔으로 룰렛 돌리기" dialogView.tvSpinRoulette.text = activity.getString(
R.string.screen_roulette_preview_spin_format,
roulettePreview.can
)
dialogView.tvSpinRoulette.setOnClickListener { dialogView.tvSpinRoulette.setOnClickListener {
if (onClickSpin != null) { if (onClickSpin != null) {
onClickSpin!!(roulettePreview.id) onClickSpin!!(roulettePreview.id)
@@ -240,9 +243,9 @@ class RoulettePreviewDialog(
dialogView.tvTitle.text = title.ifBlank { dialogView.tvTitle.text = title.ifBlank {
when (selectedRouletteLiveData.value) { when (selectedRouletteLiveData.value) {
SelectedRoulette.ROULETTE_2 -> "룰렛 2" SelectedRoulette.ROULETTE_2 -> activity.getString(R.string.screen_roulette_config_preset_2)
SelectedRoulette.ROULETTE_3 -> "룰렛 3" SelectedRoulette.ROULETTE_3 -> activity.getString(R.string.screen_roulette_config_preset_3)
else -> "룰렛 1" else -> activity.getString(R.string.screen_roulette_config_preset_1)
} }
} }
@@ -279,7 +282,11 @@ class RoulettePreviewDialog(
val tvItemTitle = itemView.findViewById<TextView>(R.id.tv_roulette_item_title) val tvItemTitle = itemView.findViewById<TextView>(R.id.tv_roulette_item_title)
val tvOrder = itemView.findViewById<TextView>(R.id.tv_order) val tvOrder = itemView.findViewById<TextView>(R.id.tv_order)
tvItemTitle.text = "${item.title} (${item.percent})" tvItemTitle.text = activity.getString(
R.string.screen_roulette_preview_item_title_format,
item.title,
item.percent
)
tvOrder.text = "${index + 1}" tvOrder.text = "${index + 1}"
return itemView return itemView

View File

@@ -59,7 +59,7 @@ class RouletteConfigActivity : BaseActivity<ActivityRouletteConfigBinding>(
} }
override fun setupView() { override fun setupView() {
binding.tvBack.text = "룰렛 설정" binding.tvBack.setText(R.string.screen_roulette_config_title)
binding.tvBack.setOnClickListener { finish() } binding.tvBack.setOnClickListener { finish() }
loadingDialog = LoadingDialog(this, layoutInflater) loadingDialog = LoadingDialog(this, layoutInflater)
@@ -118,7 +118,6 @@ class RouletteConfigActivity : BaseActivity<ActivityRouletteConfigBinding>(
} }
} }
@SuppressLint("SetTextI18n")
private fun bindData() { private fun bindData() {
viewModel.selectedRouletteLiveData.observe(this) { viewModel.selectedRouletteLiveData.observe(this) {
deselectAllRoulette() deselectAllRoulette()
@@ -151,11 +150,13 @@ class RouletteConfigActivity : BaseActivity<ActivityRouletteConfigBinding>(
viewModel.optionsLiveData.observe(this) { updateOptionUi(it) } viewModel.optionsLiveData.observe(this) { updateOptionUi(it) }
viewModel.toastLiveData.observe(this) { it?.let { showToast(it) } } viewModel.toastLiveData.observe(this) { uiText ->
uiText?.let { showToast(it.asString(this)) }
}
viewModel.canLiveData.observe(this) { viewModel.canLiveData.observe(this) {
if (it > 0) { if (it > 0) {
binding.etSetPrice.setText("$it") binding.etSetPrice.setText(it.toString())
} else { } else {
binding.etSetPrice.setText("") binding.etSetPrice.setText("")
} }
@@ -173,19 +174,16 @@ class RouletteConfigActivity : BaseActivity<ActivityRouletteConfigBinding>(
RoulettePreviewDialog( RoulettePreviewDialog(
activity = this@RouletteConfigActivity, activity = this@RouletteConfigActivity,
previewList = listOf(it), previewList = listOf(it),
title = "룰렛 미리보기", title = getString(R.string.screen_roulette_config_preview_title),
layoutInflater = layoutInflater layoutInflater = layoutInflater
).show() ).show()
} }
viewModel.totalPercentageLiveData.observe(this) { viewModel.totalPercentageLiveData.observe(this) {
binding.tvTotalPercentage.text = "( ${ binding.tvTotalPercentage.text = getString(
String.format( R.string.screen_roulette_config_option_total_format,
Locale.KOREAN, String.format(Locale.getDefault(), "%.2f", it)
"%.2f%%", )
it
)
} )"
} }
compositeDisposable.add( compositeDisposable.add(
@@ -229,7 +227,10 @@ class RouletteConfigActivity : BaseActivity<ActivityRouletteConfigBinding>(
val tvDelete = optionView.findViewById<TextView>(R.id.tv_delete) val tvDelete = optionView.findViewById<TextView>(R.id.tv_delete)
etOption.setText(option.title) etOption.setText(option.title)
tvOptionTitle.text = "옵션 ${index + 1}" tvOptionTitle.text = getString(
R.string.screen_roulette_config_option_title_format,
index + 1
)
try { try {
if (option.percentage.toFloat() > 0f) { if (option.percentage.toFloat() > 0f) {

View File

@@ -6,12 +6,16 @@ import com.orhanobut.logger.Logger
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.UiText
import kr.co.vividnext.sodalive.common.UiText.DynamicString
import kr.co.vividnext.sodalive.common.UiText.StringResource
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.live.roulette.GetNewRouletteResponse import kr.co.vividnext.sodalive.live.roulette.GetNewRouletteResponse
import kr.co.vividnext.sodalive.live.roulette.RouletteItem import kr.co.vividnext.sodalive.live.roulette.RouletteItem
import kr.co.vividnext.sodalive.live.roulette.RoulettePreview import kr.co.vividnext.sodalive.live.roulette.RoulettePreview
import kr.co.vividnext.sodalive.live.roulette.RoulettePreviewItem import kr.co.vividnext.sodalive.live.roulette.RoulettePreviewItem
import kr.co.vividnext.sodalive.live.roulette.RouletteRepository import kr.co.vividnext.sodalive.live.roulette.RouletteRepository
import kr.co.vividnext.sodalive.R
class RouletteSettingsViewModel(private val repository: RouletteRepository) : BaseViewModel() { class RouletteSettingsViewModel(private val repository: RouletteRepository) : BaseViewModel() {
@@ -23,8 +27,8 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba
val isLoading: LiveData<Boolean> val isLoading: LiveData<Boolean>
get() = _isLoading get() = _isLoading
private val _toastLiveData = MutableLiveData<String?>() private val _toastLiveData = MutableLiveData<UiText?>()
val toastLiveData: LiveData<String?> val toastLiveData: LiveData<UiText?>
get() = _toastLiveData get() = _toastLiveData
private val _optionsLiveData = MutableLiveData<List<RouletteOption>>(listOf()) private val _optionsLiveData = MutableLiveData<List<RouletteOption>>(listOf())
@@ -95,7 +99,8 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba
if (validationOptions()) { if (validationOptions()) {
for (option in options) { for (option in options) {
if (option.title.trim().isEmpty()) { if (option.title.trim().isEmpty()) {
_toastLiveData.value = "옵션은 빈칸을 할 수 없습니다." _toastLiveData.value =
StringResource(R.string.msg_roulette_config_option_title_required)
_isLoading.value = false _isLoading.value = false
return return
} }
@@ -127,19 +132,22 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba
var totalPercentage = 0f var totalPercentage = 0f
for (option in options) { for (option in options) {
if (option.title.trim().isEmpty()) { if (option.title.trim().isEmpty()) {
_toastLiveData.value = "옵션은 빈칸을 할 수 없습니다." _toastLiveData.value =
StringResource(R.string.msg_roulette_config_option_title_required)
_isLoading.value = false _isLoading.value = false
return false return false
} }
if (option.percentage.isBlank()) { if (option.percentage.isBlank()) {
_toastLiveData.value = "옵션의 확률은 빈칸일 수 없습니다." _toastLiveData.value =
StringResource(R.string.msg_roulette_config_option_percentage_required)
_isLoading.value = false _isLoading.value = false
return false return false
} }
if (option.percentage.toFloat() <= 0f) { if (option.percentage.toFloat() <= 0f) {
_toastLiveData.value = "옵션의 확률은 0%보다 커야합니다." _toastLiveData.value =
StringResource(R.string.msg_roulette_config_option_percentage_min)
_isLoading.value = false _isLoading.value = false
return false return false
} }
@@ -148,7 +156,7 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba
} }
if (totalPercentage > 100.1f || totalPercentage <= 99.99f) { if (totalPercentage > 100.1f || totalPercentage <= 99.99f) {
_toastLiveData.value = "확률이 100%가 아닙니다" _toastLiveData.value = StringResource(R.string.msg_roulette_config_percentage_invalid)
_isLoading.value = false _isLoading.value = false
return false return false
} }
@@ -168,7 +176,7 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba
selectedRoulette.can == can && selectedRoulette.can == can &&
selectedRoulette.items == items selectedRoulette.items == items
) { ) {
_toastLiveData.value = "변동사항이 없습니다." _toastLiveData.value = StringResource(R.string.msg_roulette_config_no_changes)
_isLoading.value = false _isLoading.value = false
return return
} }
@@ -180,20 +188,16 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba
items = items items = items
) )
val selectedRouletteTitle = when (_selectedRouletteLiveData.value!!) { val rouletteNumber = _selectedRouletteLiveData.value!!.ordinal + 1
SelectedRoulette.ROULETTE_1 -> "룰렛 1"
SelectedRoulette.ROULETTE_2 -> "룰렛 2"
SelectedRoulette.ROULETTE_3 -> "룰렛 3"
}
val successMessage = if (availableActive) { val successMessage = if (availableActive) {
if (isActive) { if (isActive) {
"${selectedRouletteTitle}을 활성화 했습니다." StringResource(R.string.msg_roulette_config_activate_success, rouletteNumber)
} else { } else {
"${selectedRouletteTitle}을 비활성화 했습니다." StringResource(R.string.msg_roulette_config_deactivate_success, rouletteNumber)
} }
} else { } else {
"${selectedRouletteTitle}을 변경했습니다." StringResource(R.string.msg_roulette_config_update_success, rouletteNumber)
} }
compositeDisposable.add( compositeDisposable.add(
@@ -211,10 +215,10 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba
onSuccess(it.data) onSuccess(it.data)
} else { } else {
if (it.message != null) { if (it.message != null) {
_toastLiveData.postValue(it.message) _toastLiveData.postValue(DynamicString(it.message))
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." StringResource(R.string.common_error_unknown)
) )
} }
} }
@@ -222,7 +226,7 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(StringResource(R.string.common_error_unknown))
} }
) )
) )
@@ -240,20 +244,22 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba
items = items items = items
) )
val selectedRouletteTitle = when (_selectedRouletteLiveData.value!!) { val rouletteNumber = _selectedRouletteLiveData.value!!.ordinal + 1
SelectedRoulette.ROULETTE_1 -> "룰렛 1"
SelectedRoulette.ROULETTE_2 -> "룰렛 2"
SelectedRoulette.ROULETTE_3 -> "룰렛 3"
}
val successMessage = if (availableActive) { val successMessage = if (availableActive) {
if (isActive) { if (isActive) {
"${selectedRouletteTitle}로 설정하였습니다." StringResource(
R.string.msg_roulette_config_create_activate_success,
rouletteNumber
)
} else { } else {
"${selectedRouletteTitle}을 설정했습니다." StringResource(
R.string.msg_roulette_config_create_deactivate_success,
rouletteNumber
)
} }
} else { } else {
"${selectedRouletteTitle}을 생성했습니다." StringResource(R.string.msg_roulette_config_create_success, rouletteNumber)
} }
compositeDisposable.add( compositeDisposable.add(
@@ -271,10 +277,10 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba
onSuccess(it.data) onSuccess(it.data)
} else { } else {
if (it.message != null) { if (it.message != null) {
_toastLiveData.postValue(it.message) _toastLiveData.postValue(DynamicString(it.message))
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." StringResource(R.string.common_error_unknown)
) )
} }
} }
@@ -282,7 +288,7 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(StringResource(R.string.common_error_unknown))
} }
) )
) )
@@ -307,10 +313,10 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba
selectRoulette(SelectedRoulette.ROULETTE_1) selectRoulette(SelectedRoulette.ROULETTE_1)
} else { } else {
if (it.message != null) { if (it.message != null) {
_toastLiveData.postValue(it.message) _toastLiveData.postValue(DynamicString(it.message))
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." StringResource(R.string.common_error_unknown)
) )
} }
} }
@@ -319,7 +325,7 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(StringResource(R.string.common_error_unknown))
} }
) )
) )
@@ -334,12 +340,14 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba
selectedRoulette == SelectedRoulette.ROULETTE_3 selectedRoulette == SelectedRoulette.ROULETTE_3
) )
) { ) {
_toastLiveData.value = "룰렛 1을 먼저 설정하세요" _toastLiveData.value =
StringResource(R.string.msg_roulette_config_first_required)
return return
} }
if (rouletteList.size == 1 && selectedRoulette == SelectedRoulette.ROULETTE_3) { if (rouletteList.size == 1 && selectedRoulette == SelectedRoulette.ROULETTE_3) {
_toastLiveData.value = "룰렛 1과 룰렛 2를 먼저 설정하세요" _toastLiveData.value =
StringResource(R.string.msg_roulette_config_first_second_required)
return return
} }

View File

@@ -26,6 +26,7 @@
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:gravity="center" android:gravity="center"
android:minHeight="48dp" android:minHeight="48dp"
android:text="@string/screen_roulette_config_title"
android:textColor="@color/color_eeeeee" android:textColor="@color/color_eeeeee"
android:textSize="18.3sp" android:textSize="18.3sp"
app:drawableStartCompat="@drawable/ic_back" app:drawableStartCompat="@drawable/ic_back"
@@ -76,7 +77,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:text="룰렛 1" android:text="@string/screen_roulette_config_preset_1"
android:textColor="@color/color_3bb9f1" android:textColor="@color/color_3bb9f1"
android:textSize="14.7sp" /> android:textSize="14.7sp" />
</LinearLayout> </LinearLayout>
@@ -105,7 +106,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:text="룰렛 2" android:text="@string/screen_roulette_config_preset_2"
android:textColor="@color/color_555555" android:textColor="@color/color_555555"
android:textSize="14.7sp" /> android:textSize="14.7sp" />
</LinearLayout> </LinearLayout>
@@ -134,7 +135,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:text="룰렛 3" android:text="@string/screen_roulette_config_preset_3"
android:textColor="@color/color_555555" android:textColor="@color/color_555555"
android:textSize="14.7sp" /> android:textSize="14.7sp" />
</LinearLayout> </LinearLayout>
@@ -153,7 +154,7 @@
android:layout_alignParentStart="true" android:layout_alignParentStart="true"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:text="룰렛을 활성화 하시겠습니까?" android:text="@string/screen_roulette_config_activate_question"
android:textColor="@color/color_eeeeee" android:textColor="@color/color_eeeeee"
android:textSize="16sp" /> android:textSize="16sp" />
@@ -172,7 +173,7 @@
android:layout_marginTop="26.7dp" android:layout_marginTop="26.7dp"
android:layout_marginBottom="13.3dp" android:layout_marginBottom="13.3dp"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:text="룰렛 금액 설정" android:text="@string/screen_roulette_config_price_label"
android:textColor="@color/color_eeeeee" android:textColor="@color/color_eeeeee"
android:textSize="16sp" /> android:textSize="16sp" />
@@ -190,7 +191,7 @@
android:layout_toStartOf="@+id/tv_price_unit" android:layout_toStartOf="@+id/tv_price_unit"
android:background="@drawable/bg_round_corner_6_7_222222" android:background="@drawable/bg_round_corner_6_7_222222"
android:fontFamily="@font/gmarket_sans_medium" android:fontFamily="@font/gmarket_sans_medium"
android:hint="룰렛 금액을 입력해 주세요.(최소 5캔)" android:hint="@string/screen_roulette_config_price_hint"
android:importantForAutofill="no" android:importantForAutofill="no"
android:inputType="numberSigned" android:inputType="numberSigned"
android:paddingHorizontal="13.3dp" android:paddingHorizontal="13.3dp"
@@ -209,7 +210,7 @@
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:text="" android:text="@string/screen_live_room_create_price_unit"
android:textColor="@color/color_eeeeee" android:textColor="@color/color_eeeeee"
android:textSize="16.7sp" /> android:textSize="16.7sp" />
</RelativeLayout> </RelativeLayout>
@@ -219,7 +220,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="26.7dp" android:layout_marginTop="26.7dp"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:text="룰렛 옵션 설정" android:text="@string/screen_roulette_config_option_label"
android:textColor="@color/color_eeeeee" android:textColor="@color/color_eeeeee"
android:textSize="16sp" /> android:textSize="16sp" />
@@ -234,7 +235,7 @@
android:layout_alignParentStart="true" android:layout_alignParentStart="true"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:fontFamily="@font/gmarket_sans_medium" android:fontFamily="@font/gmarket_sans_medium"
android:text="※ 룰렛 옵션은 최소 2개,\n최대 10개까지 설정할 수 있습니다." android:text="@string/screen_roulette_config_option_limit"
android:textColor="@color/color_ff5c49" android:textColor="@color/color_ff5c49"
android:textSize="13.3sp" /> android:textSize="13.3sp" />
@@ -257,7 +258,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:text="옵션 확률 합계" android:text="@string/screen_roulette_config_option_total"
android:textColor="@color/color_eeeeee" android:textColor="@color/color_eeeeee"
android:textSize="14.7sp" android:textSize="14.7sp"
tools:ignore="RelativeOverlap" /> tools:ignore="RelativeOverlap" />
@@ -303,7 +304,7 @@
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:gravity="center" android:gravity="center"
android:paddingVertical="16dp" android:paddingVertical="16dp"
android:text="미리보기" android:text="@string/screen_roulette_config_preview"
android:textColor="@color/color_3bb9f1" android:textColor="@color/color_3bb9f1"
android:textSize="18.3sp" /> android:textSize="18.3sp" />
@@ -317,7 +318,7 @@
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:gravity="center" android:gravity="center"
android:paddingVertical="16dp" android:paddingVertical="16dp"
android:text="설정완료" android:text="@string/screen_roulette_config_save"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="18.3sp" /> android:textSize="18.3sp" />
</LinearLayout> </LinearLayout>

View File

@@ -39,7 +39,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:text="룰렛 1" android:text="@string/screen_roulette_config_preset_1"
android:textColor="@color/color_3bb9f1" android:textColor="@color/color_3bb9f1"
android:textSize="14.7sp" /> android:textSize="14.7sp" />
</LinearLayout> </LinearLayout>
@@ -68,7 +68,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:text="룰렛 2" android:text="@string/screen_roulette_config_preset_2"
android:textColor="@color/color_ffcb14" android:textColor="@color/color_ffcb14"
android:textSize="14.7sp" /> android:textSize="14.7sp" />
</LinearLayout> </LinearLayout>
@@ -98,7 +98,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:text="룰렛 3" android:text="@string/screen_roulette_config_preset_3"
android:textColor="@color/color_ff14d9" android:textColor="@color/color_ff14d9"
android:textSize="14.7sp" /> android:textSize="14.7sp" />
</LinearLayout> </LinearLayout>
@@ -157,7 +157,7 @@
android:gravity="center" android:gravity="center"
android:paddingHorizontal="18dp" android:paddingHorizontal="18dp"
android:paddingVertical="16dp" android:paddingVertical="16dp"
android:text="취소" android:text="@string/cancel"
android:textColor="@color/color_3bb9f1" android:textColor="@color/color_3bb9f1"
android:textSize="18.3sp" /> android:textSize="18.3sp" />

View File

@@ -29,7 +29,7 @@
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:fontFamily="@font/gmarket_sans_medium" android:fontFamily="@font/gmarket_sans_medium"
android:gravity="center" android:gravity="center"
android:text="삭제" android:text="@string/screen_roulette_config_option_delete"
android:textColor="@color/color_ff5c49" android:textColor="@color/color_ff5c49"
android:textSize="14.7sp" /> android:textSize="14.7sp" />
</RelativeLayout> </RelativeLayout>
@@ -48,7 +48,7 @@
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/bg_round_corner_6_7_222222" android:background="@drawable/bg_round_corner_6_7_222222"
android:fontFamily="@font/gmarket_sans_medium" android:fontFamily="@font/gmarket_sans_medium"
android:hint="옵션을 입력하세요" android:hint="@string/screen_roulette_config_option_hint"
android:importantForAutofill="no" android:importantForAutofill="no"
android:inputType="textWebEditText" android:inputType="textWebEditText"
android:paddingHorizontal="13.3dp" android:paddingHorizontal="13.3dp"
@@ -76,7 +76,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@null" android:background="@null"
android:fontFamily="@font/gmarket_sans_medium" android:fontFamily="@font/gmarket_sans_medium"
android:hint="0.00" android:hint="@string/screen_roulette_config_option_percentage_hint"
android:importantForAutofill="no" android:importantForAutofill="no"
android:lines="1" android:lines="1"
android:maxLength="5" android:maxLength="5"
@@ -90,7 +90,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_medium" android:fontFamily="@font/gmarket_sans_medium"
android:text="%" android:text="@string/screen_roulette_config_option_percentage_unit"
android:textColor="@color/color_eeeeee" android:textColor="@color/color_eeeeee"
android:textSize="14.7sp" /> android:textSize="14.7sp" />
</LinearLayout> </LinearLayout>

View File

@@ -487,6 +487,41 @@
<string name="screen_menu_config_title">Menu settings</string> <string name="screen_menu_config_title">Menu settings</string>
<string name="screen_menu_config_save">Save menu</string> <string name="screen_menu_config_save">Save menu</string>
<string name="msg_menu_config_saved">Saved.</string> <string name="msg_menu_config_saved">Saved.</string>
<!-- Roulette Config -->
<string name="screen_roulette_config_title">Roulette settings</string>
<string name="screen_roulette_config_preset_1">Roulette 1</string>
<string name="screen_roulette_config_preset_2">Roulette 2</string>
<string name="screen_roulette_config_preset_3">Roulette 3</string>
<string name="screen_roulette_config_activate_question">Enable roulette?</string>
<string name="screen_roulette_config_price_label">Roulette price</string>
<string name="screen_roulette_config_price_hint">Enter roulette price (min 5 cans)</string>
<string name="screen_roulette_config_option_label">Roulette options</string>
<string name="screen_roulette_config_option_limit">At least 2 options,\nup to 10.</string>
<string name="screen_roulette_config_option_total">Total probability</string>
<string name="screen_roulette_config_option_total_format">( %1$s%% )</string>
<string name="screen_roulette_config_preview">Preview</string>
<string name="screen_roulette_config_preview_title">Roulette preview</string>
<string name="screen_roulette_config_save">Save</string>
<string name="screen_roulette_config_option_title_format">Option %1$d</string>
<string name="screen_roulette_config_option_percentage_hint">0.00</string>
<string name="screen_roulette_config_option_percentage_unit">%</string>
<string name="screen_roulette_preview_spin_format">Spin roulette for %1$d cans</string>
<string name="screen_roulette_preview_item_title_format">%1$s (%2$s)</string>
<string name="screen_roulette_config_option_delete">Delete</string>
<string name="screen_roulette_config_option_hint">Enter an option</string>
<string name="msg_roulette_config_option_title_required">Option title cannot be empty.</string>
<string name="msg_roulette_config_option_percentage_required">Option probability is required.</string>
<string name="msg_roulette_config_option_percentage_min">Option probability must be greater than 0%%.</string>
<string name="msg_roulette_config_percentage_invalid">Probabilities must total 100%%.</string>
<string name="msg_roulette_config_no_changes">No changes to update.</string>
<string name="msg_roulette_config_activate_success">Enabled roulette %1$d.</string>
<string name="msg_roulette_config_deactivate_success">Disabled roulette %1$d.</string>
<string name="msg_roulette_config_update_success">Updated roulette %1$d.</string>
<string name="msg_roulette_config_create_activate_success">Set roulette %1$d.</string>
<string name="msg_roulette_config_create_deactivate_success">Saved roulette %1$d.</string>
<string name="msg_roulette_config_create_success">Created roulette %1$d.</string>
<string name="msg_roulette_config_first_required">Set roulette 1 first.</string>
<string name="msg_roulette_config_first_second_required">Set roulette 1 and 2 first.</string>
<!-- Live Room Edit --> <!-- Live Room Edit -->
<string name="msg_live_room_edit_invalid_request">Invalid request.</string> <string name="msg_live_room_edit_invalid_request">Invalid request.</string>
<string name="msg_live_room_edit_no_changes">No changes to update.</string> <string name="msg_live_room_edit_no_changes">No changes to update.</string>

View File

@@ -487,6 +487,41 @@
<string name="screen_menu_config_title">メニュー設定</string> <string name="screen_menu_config_title">メニュー設定</string>
<string name="screen_menu_config_save">メニュー保存</string> <string name="screen_menu_config_save">メニュー保存</string>
<string name="msg_menu_config_saved">保存しました。</string> <string name="msg_menu_config_saved">保存しました。</string>
<!-- Roulette Config -->
<string name="screen_roulette_config_title">ルーレット設定</string>
<string name="screen_roulette_config_preset_1">ルーレット1</string>
<string name="screen_roulette_config_preset_2">ルーレット2</string>
<string name="screen_roulette_config_preset_3">ルーレット3</string>
<string name="screen_roulette_config_activate_question">ルーレットを有効にしますか?</string>
<string name="screen_roulette_config_price_label">ルーレット金額設定</string>
<string name="screen_roulette_config_price_hint">ルーレット金額を入力してください。(最小5CAN)</string>
<string name="screen_roulette_config_option_label">ルーレットオプション設定</string>
<string name="screen_roulette_config_option_limit">※ルーレットオプションは最少2個、\n最大10個まで設定できます。</string>
<string name="screen_roulette_config_option_total">オプション確率合計</string>
<string name="screen_roulette_config_option_total_format">( %1$s%% )</string>
<string name="screen_roulette_config_preview">プレビュー</string>
<string name="screen_roulette_config_preview_title">ルーレットプレビュー</string>
<string name="screen_roulette_config_save">設定完了</string>
<string name="screen_roulette_config_option_title_format">オプション %1$d</string>
<string name="screen_roulette_config_option_percentage_hint">0.00</string>
<string name="screen_roulette_config_option_percentage_unit">%</string>
<string name="screen_roulette_preview_spin_format">%1$dCANでルーレットを回す</string>
<string name="screen_roulette_preview_item_title_format">%1$s (%2$s)</string>
<string name="screen_roulette_config_option_delete">削除</string>
<string name="screen_roulette_config_option_hint">オプションを入力してください</string>
<string name="msg_roulette_config_option_title_required">オプションは空欄にできません。</string>
<string name="msg_roulette_config_option_percentage_required">オプションの確率を入力してください。</string>
<string name="msg_roulette_config_option_percentage_min">オプションの確率は0より大きくする必要があります。</string>
<string name="msg_roulette_config_percentage_invalid">確率の合計が100ではありません。</string>
<string name="msg_roulette_config_no_changes">変更内容がありません。</string>
<string name="msg_roulette_config_activate_success">ルーレット%1$dを有効にしました。</string>
<string name="msg_roulette_config_deactivate_success">ルーレット%1$dを無効にしました。</string>
<string name="msg_roulette_config_update_success">ルーレット%1$dを変更しました。</string>
<string name="msg_roulette_config_create_activate_success">ルーレット%1$dに設定しました。</string>
<string name="msg_roulette_config_create_deactivate_success">ルーレット%1$dを保存しました。</string>
<string name="msg_roulette_config_create_success">ルーレット%1$dを作成しました。</string>
<string name="msg_roulette_config_first_required">まずルーレット1を設定してください。</string>
<string name="msg_roulette_config_first_second_required">まずルーレット1とルーレット2を設定してください。</string>
<!-- Live Room Edit --> <!-- Live Room Edit -->
<string name="msg_live_room_edit_invalid_request">不正なリクエストです。</string> <string name="msg_live_room_edit_invalid_request">不正なリクエストです。</string>
<string name="msg_live_room_edit_no_changes">変更内容がありません。</string> <string name="msg_live_room_edit_no_changes">変更内容がありません。</string>

View File

@@ -486,6 +486,41 @@
<string name="screen_menu_config_title">메뉴 설정</string> <string name="screen_menu_config_title">메뉴 설정</string>
<string name="screen_menu_config_save">메뉴 저장</string> <string name="screen_menu_config_save">메뉴 저장</string>
<string name="msg_menu_config_saved">저장되었습니다.</string> <string name="msg_menu_config_saved">저장되었습니다.</string>
<!-- Roulette Config -->
<string name="screen_roulette_config_title">룰렛 설정</string>
<string name="screen_roulette_config_preset_1">룰렛 1</string>
<string name="screen_roulette_config_preset_2">룰렛 2</string>
<string name="screen_roulette_config_preset_3">룰렛 3</string>
<string name="screen_roulette_config_activate_question">룰렛을 활성화 하시겠습니까?</string>
<string name="screen_roulette_config_price_label">룰렛 금액 설정</string>
<string name="screen_roulette_config_price_hint">룰렛 금액을 입력해 주세요.(최소 5캔)</string>
<string name="screen_roulette_config_option_label">룰렛 옵션 설정</string>
<string name="screen_roulette_config_option_limit">※ 룰렛 옵션은 최소 2개,\n최대 10개까지 설정할 수 있습니다.</string>
<string name="screen_roulette_config_option_total">옵션 확률 합계</string>
<string name="screen_roulette_config_option_total_format">( %1$s%% )</string>
<string name="screen_roulette_config_preview">미리보기</string>
<string name="screen_roulette_config_preview_title">룰렛 미리보기</string>
<string name="screen_roulette_config_save">설정완료</string>
<string name="screen_roulette_config_option_title_format">옵션 %1$d</string>
<string name="screen_roulette_config_option_percentage_hint">0.00</string>
<string name="screen_roulette_config_option_percentage_unit">%</string>
<string name="screen_roulette_preview_spin_format">%1$d캔으로 룰렛 돌리기</string>
<string name="screen_roulette_preview_item_title_format">%1$s (%2$s)</string>
<string name="screen_roulette_config_option_delete">삭제</string>
<string name="screen_roulette_config_option_hint">옵션을 입력하세요</string>
<string name="msg_roulette_config_option_title_required">옵션은 빈칸일 수 없습니다.</string>
<string name="msg_roulette_config_option_percentage_required">옵션의 확률은 빈칸일 수 없습니다.</string>
<string name="msg_roulette_config_option_percentage_min">옵션의 확률은 0%%보다 커야합니다.</string>
<string name="msg_roulette_config_percentage_invalid">확률 합계가 100%%가 아닙니다.</string>
<string name="msg_roulette_config_no_changes">변동사항이 없습니다.</string>
<string name="msg_roulette_config_activate_success">룰렛 %1$d을 활성화했습니다.</string>
<string name="msg_roulette_config_deactivate_success">룰렛 %1$d을 비활성화했습니다.</string>
<string name="msg_roulette_config_update_success">룰렛 %1$d을 변경했습니다.</string>
<string name="msg_roulette_config_create_activate_success">룰렛 %1$d로 설정했습니다.</string>
<string name="msg_roulette_config_create_deactivate_success">룰렛 %1$d을 설정했습니다.</string>
<string name="msg_roulette_config_create_success">룰렛 %1$d을 생성했습니다.</string>
<string name="msg_roulette_config_first_required">룰렛 1을 먼저 설정하세요.</string>
<string name="msg_roulette_config_first_second_required">룰렛 1과 룰렛 2를 먼저 설정하세요.</string>
<!-- Live Room Edit --> <!-- Live Room Edit -->
<string name="msg_live_room_edit_invalid_request">잘못된 요청입니다.</string> <string name="msg_live_room_edit_invalid_request">잘못된 요청입니다.</string>
<string name="msg_live_room_edit_no_changes">변경사항이 없습니다.</string> <string name="msg_live_room_edit_no_changes">변경사항이 없습니다.</string>