From 5a4b83351614c898bdf1a35f5478ec31f642ef34 Mon Sep 17 00:00:00 2001 From: klaus Date: Wed, 3 Dec 2025 11:40:03 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A3=B0=EB=A0=9B=20=EC=84=A4=EC=A0=95/?= =?UTF-8?q?=ED=94=84=EB=A6=AC=EB=B7=B0=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 --- .../live/roulette/RoulettePreviewDialog.kt | 17 ++-- .../roulette/config/RouletteConfigActivity.kt | 27 +++---- .../config/RouletteSettingsViewModel.kt | 78 ++++++++++--------- .../res/layout/activity_roulette_config.xml | 25 +++--- .../res/layout/dialog_roulette_preview.xml | 8 +- .../res/layout/layout_roulette_option.xml | 8 +- app/src/main/res/values-en/strings.xml | 35 +++++++++ app/src/main/res/values-ja/strings.xml | 35 +++++++++ app/src/main/res/values/strings.xml | 35 +++++++++ 9 files changed, 195 insertions(+), 73 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/RoulettePreviewDialog.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/RoulettePreviewDialog.kt index 6d410d32..6f0b5dd4 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/RoulettePreviewDialog.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/RoulettePreviewDialog.kt @@ -212,7 +212,10 @@ class RoulettePreviewDialog( @SuppressLint("SetTextI18n") 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 { if (onClickSpin != null) { onClickSpin!!(roulettePreview.id) @@ -240,9 +243,9 @@ class RoulettePreviewDialog( dialogView.tvTitle.text = title.ifBlank { when (selectedRouletteLiveData.value) { - SelectedRoulette.ROULETTE_2 -> "룰렛 2" - SelectedRoulette.ROULETTE_3 -> "룰렛 3" - else -> "룰렛 1" + SelectedRoulette.ROULETTE_2 -> activity.getString(R.string.screen_roulette_config_preset_2) + SelectedRoulette.ROULETTE_3 -> activity.getString(R.string.screen_roulette_config_preset_3) + else -> activity.getString(R.string.screen_roulette_config_preset_1) } } @@ -279,7 +282,11 @@ class RoulettePreviewDialog( val tvItemTitle = itemView.findViewById(R.id.tv_roulette_item_title) val tvOrder = itemView.findViewById(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}" return itemView diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteConfigActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteConfigActivity.kt index 914ca970..e6d45fb5 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteConfigActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteConfigActivity.kt @@ -59,7 +59,7 @@ class RouletteConfigActivity : BaseActivity( } override fun setupView() { - binding.tvBack.text = "룰렛 설정" + binding.tvBack.setText(R.string.screen_roulette_config_title) binding.tvBack.setOnClickListener { finish() } loadingDialog = LoadingDialog(this, layoutInflater) @@ -118,7 +118,6 @@ class RouletteConfigActivity : BaseActivity( } } - @SuppressLint("SetTextI18n") private fun bindData() { viewModel.selectedRouletteLiveData.observe(this) { deselectAllRoulette() @@ -151,11 +150,13 @@ class RouletteConfigActivity : BaseActivity( 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) { if (it > 0) { - binding.etSetPrice.setText("$it") + binding.etSetPrice.setText(it.toString()) } else { binding.etSetPrice.setText("") } @@ -173,19 +174,16 @@ class RouletteConfigActivity : BaseActivity( RoulettePreviewDialog( activity = this@RouletteConfigActivity, previewList = listOf(it), - title = "룰렛 미리보기", + title = getString(R.string.screen_roulette_config_preview_title), layoutInflater = layoutInflater ).show() } viewModel.totalPercentageLiveData.observe(this) { - binding.tvTotalPercentage.text = "( ${ - String.format( - Locale.KOREAN, - "%.2f%%", - it - ) - } )" + binding.tvTotalPercentage.text = getString( + R.string.screen_roulette_config_option_total_format, + String.format(Locale.getDefault(), "%.2f", it) + ) } compositeDisposable.add( @@ -229,7 +227,10 @@ class RouletteConfigActivity : BaseActivity( val tvDelete = optionView.findViewById(R.id.tv_delete) etOption.setText(option.title) - tvOptionTitle.text = "옵션 ${index + 1}" + tvOptionTitle.text = getString( + R.string.screen_roulette_config_option_title_format, + index + 1 + ) try { if (option.percentage.toFloat() > 0f) { diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsViewModel.kt index 9b22d1cb..e0fbffe8 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsViewModel.kt @@ -6,12 +6,16 @@ import com.orhanobut.logger.Logger import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers 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.live.roulette.GetNewRouletteResponse import kr.co.vividnext.sodalive.live.roulette.RouletteItem import kr.co.vividnext.sodalive.live.roulette.RoulettePreview import kr.co.vividnext.sodalive.live.roulette.RoulettePreviewItem import kr.co.vividnext.sodalive.live.roulette.RouletteRepository +import kr.co.vividnext.sodalive.R class RouletteSettingsViewModel(private val repository: RouletteRepository) : BaseViewModel() { @@ -23,8 +27,8 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba val isLoading: LiveData get() = _isLoading - private val _toastLiveData = MutableLiveData() - val toastLiveData: LiveData + private val _toastLiveData = MutableLiveData() + val toastLiveData: LiveData get() = _toastLiveData private val _optionsLiveData = MutableLiveData>(listOf()) @@ -95,7 +99,8 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba if (validationOptions()) { for (option in options) { if (option.title.trim().isEmpty()) { - _toastLiveData.value = "옵션은 빈칸을 할 수 없습니다." + _toastLiveData.value = + StringResource(R.string.msg_roulette_config_option_title_required) _isLoading.value = false return } @@ -127,19 +132,22 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba var totalPercentage = 0f for (option in options) { if (option.title.trim().isEmpty()) { - _toastLiveData.value = "옵션은 빈칸을 할 수 없습니다." + _toastLiveData.value = + StringResource(R.string.msg_roulette_config_option_title_required) _isLoading.value = false return false } if (option.percentage.isBlank()) { - _toastLiveData.value = "옵션의 확률은 빈칸일 수 없습니다." + _toastLiveData.value = + StringResource(R.string.msg_roulette_config_option_percentage_required) _isLoading.value = false return false } if (option.percentage.toFloat() <= 0f) { - _toastLiveData.value = "옵션의 확률은 0%보다 커야합니다." + _toastLiveData.value = + StringResource(R.string.msg_roulette_config_option_percentage_min) _isLoading.value = false return false } @@ -148,7 +156,7 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba } if (totalPercentage > 100.1f || totalPercentage <= 99.99f) { - _toastLiveData.value = "확률이 100%가 아닙니다" + _toastLiveData.value = StringResource(R.string.msg_roulette_config_percentage_invalid) _isLoading.value = false return false } @@ -168,7 +176,7 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba selectedRoulette.can == can && selectedRoulette.items == items ) { - _toastLiveData.value = "변동사항이 없습니다." + _toastLiveData.value = StringResource(R.string.msg_roulette_config_no_changes) _isLoading.value = false return } @@ -180,20 +188,16 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba items = items ) - val selectedRouletteTitle = when (_selectedRouletteLiveData.value!!) { - SelectedRoulette.ROULETTE_1 -> "룰렛 1" - SelectedRoulette.ROULETTE_2 -> "룰렛 2" - SelectedRoulette.ROULETTE_3 -> "룰렛 3" - } + val rouletteNumber = _selectedRouletteLiveData.value!!.ordinal + 1 val successMessage = if (availableActive) { if (isActive) { - "${selectedRouletteTitle}을 활성화 했습니다." + StringResource(R.string.msg_roulette_config_activate_success, rouletteNumber) } else { - "${selectedRouletteTitle}을 비활성화 했습니다." + StringResource(R.string.msg_roulette_config_deactivate_success, rouletteNumber) } } else { - "${selectedRouletteTitle}을 변경했습니다." + StringResource(R.string.msg_roulette_config_update_success, rouletteNumber) } compositeDisposable.add( @@ -211,10 +215,10 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba onSuccess(it.data) } else { if (it.message != null) { - _toastLiveData.postValue(it.message) + _toastLiveData.postValue(DynamicString(it.message)) } else { _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + StringResource(R.string.common_error_unknown) ) } } @@ -222,7 +226,7 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba { _isLoading.value = false 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 ) - val selectedRouletteTitle = when (_selectedRouletteLiveData.value!!) { - SelectedRoulette.ROULETTE_1 -> "룰렛 1" - SelectedRoulette.ROULETTE_2 -> "룰렛 2" - SelectedRoulette.ROULETTE_3 -> "룰렛 3" - } + val rouletteNumber = _selectedRouletteLiveData.value!!.ordinal + 1 val successMessage = if (availableActive) { if (isActive) { - "${selectedRouletteTitle}로 설정하였습니다." + StringResource( + R.string.msg_roulette_config_create_activate_success, + rouletteNumber + ) } else { - "${selectedRouletteTitle}을 설정했습니다." + StringResource( + R.string.msg_roulette_config_create_deactivate_success, + rouletteNumber + ) } } else { - "${selectedRouletteTitle}을 생성했습니다." + StringResource(R.string.msg_roulette_config_create_success, rouletteNumber) } compositeDisposable.add( @@ -271,10 +277,10 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba onSuccess(it.data) } else { if (it.message != null) { - _toastLiveData.postValue(it.message) + _toastLiveData.postValue(DynamicString(it.message)) } else { _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + StringResource(R.string.common_error_unknown) ) } } @@ -282,7 +288,7 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba { _isLoading.value = false 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) } else { if (it.message != null) { - _toastLiveData.postValue(it.message) + _toastLiveData.postValue(DynamicString(it.message)) } else { _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + StringResource(R.string.common_error_unknown) ) } } @@ -319,7 +325,7 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba { _isLoading.value = false 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 ) ) { - _toastLiveData.value = "룰렛 1을 먼저 설정하세요" + _toastLiveData.value = + StringResource(R.string.msg_roulette_config_first_required) return } if (rouletteList.size == 1 && selectedRoulette == SelectedRoulette.ROULETTE_3) { - _toastLiveData.value = "룰렛 1과 룰렛 2를 먼저 설정하세요" + _toastLiveData.value = + StringResource(R.string.msg_roulette_config_first_second_required) return } diff --git a/app/src/main/res/layout/activity_roulette_config.xml b/app/src/main/res/layout/activity_roulette_config.xml index 1ed5e20b..881bd977 100644 --- a/app/src/main/res/layout/activity_roulette_config.xml +++ b/app/src/main/res/layout/activity_roulette_config.xml @@ -26,6 +26,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" android:minHeight="48dp" + android:text="@string/screen_roulette_config_title" android:textColor="@color/color_eeeeee" android:textSize="18.3sp" app:drawableStartCompat="@drawable/ic_back" @@ -76,7 +77,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/gmarket_sans_bold" - android:text="룰렛 1" + android:text="@string/screen_roulette_config_preset_1" android:textColor="@color/color_3bb9f1" android:textSize="14.7sp" /> @@ -105,7 +106,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/gmarket_sans_bold" - android:text="룰렛 2" + android:text="@string/screen_roulette_config_preset_2" android:textColor="@color/color_555555" android:textSize="14.7sp" /> @@ -134,7 +135,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/gmarket_sans_bold" - android:text="룰렛 3" + android:text="@string/screen_roulette_config_preset_3" android:textColor="@color/color_555555" android:textSize="14.7sp" /> @@ -153,7 +154,7 @@ android:layout_alignParentStart="true" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_bold" - android:text="룰렛을 활성화 하시겠습니까?" + android:text="@string/screen_roulette_config_activate_question" android:textColor="@color/color_eeeeee" android:textSize="16sp" /> @@ -172,7 +173,7 @@ android:layout_marginTop="26.7dp" android:layout_marginBottom="13.3dp" android:fontFamily="@font/gmarket_sans_bold" - android:text="룰렛 금액 설정" + android:text="@string/screen_roulette_config_price_label" android:textColor="@color/color_eeeeee" android:textSize="16sp" /> @@ -190,7 +191,7 @@ android:layout_toStartOf="@+id/tv_price_unit" android:background="@drawable/bg_round_corner_6_7_222222" android:fontFamily="@font/gmarket_sans_medium" - android:hint="룰렛 금액을 입력해 주세요.(최소 5캔)" + android:hint="@string/screen_roulette_config_price_hint" android:importantForAutofill="no" android:inputType="numberSigned" android:paddingHorizontal="13.3dp" @@ -209,7 +210,7 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_bold" - android:text="캔" + android:text="@string/screen_live_room_create_price_unit" android:textColor="@color/color_eeeeee" android:textSize="16.7sp" /> @@ -219,7 +220,7 @@ android:layout_height="wrap_content" android:layout_marginTop="26.7dp" android:fontFamily="@font/gmarket_sans_bold" - android:text="룰렛 옵션 설정" + android:text="@string/screen_roulette_config_option_label" android:textColor="@color/color_eeeeee" android:textSize="16sp" /> @@ -234,7 +235,7 @@ android:layout_alignParentStart="true" android:layout_centerVertical="true" 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:textSize="13.3sp" /> @@ -257,7 +258,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" - android:text="옵션 확률 합계" + android:text="@string/screen_roulette_config_option_total" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" tools:ignore="RelativeOverlap" /> @@ -303,7 +304,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" android:paddingVertical="16dp" - android:text="미리보기" + android:text="@string/screen_roulette_config_preview" android:textColor="@color/color_3bb9f1" android:textSize="18.3sp" /> @@ -317,7 +318,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" android:paddingVertical="16dp" - android:text="설정완료" + android:text="@string/screen_roulette_config_save" android:textColor="@color/white" android:textSize="18.3sp" /> diff --git a/app/src/main/res/layout/dialog_roulette_preview.xml b/app/src/main/res/layout/dialog_roulette_preview.xml index 1bb295ae..1e20b1ac 100644 --- a/app/src/main/res/layout/dialog_roulette_preview.xml +++ b/app/src/main/res/layout/dialog_roulette_preview.xml @@ -39,7 +39,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/gmarket_sans_bold" - android:text="룰렛 1" + android:text="@string/screen_roulette_config_preset_1" android:textColor="@color/color_3bb9f1" android:textSize="14.7sp" /> @@ -68,7 +68,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/gmarket_sans_bold" - android:text="룰렛 2" + android:text="@string/screen_roulette_config_preset_2" android:textColor="@color/color_ffcb14" android:textSize="14.7sp" /> @@ -98,7 +98,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/gmarket_sans_bold" - android:text="룰렛 3" + android:text="@string/screen_roulette_config_preset_3" android:textColor="@color/color_ff14d9" android:textSize="14.7sp" /> @@ -157,7 +157,7 @@ android:gravity="center" android:paddingHorizontal="18dp" android:paddingVertical="16dp" - android:text="취소" + android:text="@string/cancel" android:textColor="@color/color_3bb9f1" android:textSize="18.3sp" /> diff --git a/app/src/main/res/layout/layout_roulette_option.xml b/app/src/main/res/layout/layout_roulette_option.xml index 803936ca..83e20fe6 100644 --- a/app/src/main/res/layout/layout_roulette_option.xml +++ b/app/src/main/res/layout/layout_roulette_option.xml @@ -29,7 +29,7 @@ android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_medium" android:gravity="center" - android:text="삭제" + android:text="@string/screen_roulette_config_option_delete" android:textColor="@color/color_ff5c49" android:textSize="14.7sp" /> @@ -48,7 +48,7 @@ android:layout_weight="1" android:background="@drawable/bg_round_corner_6_7_222222" android:fontFamily="@font/gmarket_sans_medium" - android:hint="옵션을 입력하세요" + android:hint="@string/screen_roulette_config_option_hint" android:importantForAutofill="no" android:inputType="textWebEditText" android:paddingHorizontal="13.3dp" @@ -76,7 +76,7 @@ android:layout_height="wrap_content" android:background="@null" android:fontFamily="@font/gmarket_sans_medium" - android:hint="0.00" + android:hint="@string/screen_roulette_config_option_percentage_hint" android:importantForAutofill="no" android:lines="1" android:maxLength="5" @@ -90,7 +90,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/gmarket_sans_medium" - android:text="%" + android:text="@string/screen_roulette_config_option_percentage_unit" android:textColor="@color/color_eeeeee" 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 62023a09..c5d216ca 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -487,6 +487,41 @@ Menu settings Save menu Saved. + + Roulette settings + Roulette 1 + Roulette 2 + Roulette 3 + Enable roulette? + Roulette price + Enter roulette price (min 5 cans) + Roulette options + At least 2 options,\nup to 10. + Total probability + ( %1$s%% ) + Preview + Roulette preview + Save + Option %1$d + 0.00 + % + Spin roulette for %1$d cans + %1$s (%2$s) + Delete + Enter an option + Option title cannot be empty. + Option probability is required. + Option probability must be greater than 0%%. + Probabilities must total 100%%. + No changes to update. + Enabled roulette %1$d. + Disabled roulette %1$d. + Updated roulette %1$d. + Set roulette %1$d. + Saved roulette %1$d. + Created roulette %1$d. + Set roulette 1 first. + Set roulette 1 and 2 first. Invalid request. No changes to update. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 051540cb..f356864f 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -487,6 +487,41 @@ メニュー設定 メニュー保存 保存しました。 + + ルーレット設定 + ルーレット1 + ルーレット2 + ルーレット3 + ルーレットを有効にしますか? + ルーレット金額設定 + ルーレット金額を入力してください。(最小5CAN) + ルーレットオプション設定 + ※ルーレットオプションは最少2個、\n最大10個まで設定できます。 + オプション確率合計 + ( %1$s%% ) + プレビュー + ルーレットプレビュー + 設定完了 + オプション %1$d + 0.00 + % + %1$dCANでルーレットを回す + %1$s (%2$s) + 削除 + オプションを入力してください + オプションは空欄にできません。 + オプションの確率を入力してください。 + オプションの確率は0%より大きくする必要があります。 + 確率の合計が100%ではありません。 + 変更内容がありません。 + ルーレット%1$dを有効にしました。 + ルーレット%1$dを無効にしました。 + ルーレット%1$dを変更しました。 + ルーレット%1$dに設定しました。 + ルーレット%1$dを保存しました。 + ルーレット%1$dを作成しました。 + まずルーレット1を設定してください。 + まずルーレット1とルーレット2を設定してください。 不正なリクエストです。 変更内容がありません。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d3ca78ce..5c239b7b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -486,6 +486,41 @@ 메뉴 설정 메뉴 저장 저장되었습니다. + + 룰렛 설정 + 룰렛 1 + 룰렛 2 + 룰렛 3 + 룰렛을 활성화 하시겠습니까? + 룰렛 금액 설정 + 룰렛 금액을 입력해 주세요.(최소 5캔) + 룰렛 옵션 설정 + ※ 룰렛 옵션은 최소 2개,\n최대 10개까지 설정할 수 있습니다. + 옵션 확률 합계 + ( %1$s%% ) + 미리보기 + 룰렛 미리보기 + 설정완료 + 옵션 %1$d + 0.00 + % + %1$d캔으로 룰렛 돌리기 + %1$s (%2$s) + 삭제 + 옵션을 입력하세요 + 옵션은 빈칸일 수 없습니다. + 옵션의 확률은 빈칸일 수 없습니다. + 옵션의 확률은 0%%보다 커야합니다. + 확률 합계가 100%%가 아닙니다. + 변동사항이 없습니다. + 룰렛 %1$d을 활성화했습니다. + 룰렛 %1$d을 비활성화했습니다. + 룰렛 %1$d을 변경했습니다. + 룰렛 %1$d로 설정했습니다. + 룰렛 %1$d을 설정했습니다. + 룰렛 %1$d을 생성했습니다. + 룰렛 1을 먼저 설정하세요. + 룰렛 1과 룰렛 2를 먼저 설정하세요. 잘못된 요청입니다. 변경사항이 없습니다.