diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsActivity.kt index 19e72d53..a618581f 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/ContentSettingsActivity.kt @@ -29,7 +29,7 @@ class ContentSettingsActivity : BaseActivity( } override fun setupView() { - binding.toolbar.tvBack.text = "콘텐츠 보기 설정" + binding.toolbar.tvBack.text = getString(R.string.screen_content_settings_title) binding.toolbar.tvBack.setOnClickListener { handleFinish() } // 본인 인증 체크 diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsActivity.kt index 7afc82a2..73279c96 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsActivity.kt @@ -9,6 +9,7 @@ import android.widget.Toast import androidx.activity.viewModels import androidx.media3.common.util.UnstableApi import com.google.android.gms.oss.licenses.OssLicensesMenuActivity +import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.BuildConfig import kr.co.vividnext.sodalive.audio_content.AudioContentPlayService import kr.co.vividnext.sodalive.audio_content.player.AudioContentPlayerService @@ -33,11 +34,11 @@ class SettingsActivity : BaseActivity(ActivitySettingsB SodaDialog( activity = this, layoutInflater = layoutInflater, - title = "알림", - desc = "로그아웃 하시겠어요?", - confirmButtonTitle = "확인", + title = getString(R.string.dialog_alert_title), + desc = getString(R.string.dialog_logout_message), + confirmButtonTitle = getString(R.string.confirm), confirmButtonClick = { logout() }, - cancelButtonTitle = "취소", + cancelButtonTitle = getString(R.string.cancel), cancelButtonClick = {} ) } @@ -46,11 +47,11 @@ class SettingsActivity : BaseActivity(ActivitySettingsB SodaDialog( activity = this, layoutInflater = layoutInflater, - title = "알림", - desc = "모든 기기에서 로그아웃 하시겠어요?", - confirmButtonTitle = "확인", + title = getString(R.string.dialog_alert_title), + desc = getString(R.string.dialog_logout_all_message), + confirmButtonTitle = getString(R.string.confirm), confirmButtonClick = { logoutAllDevice() }, - cancelButtonTitle = "취소", + cancelButtonTitle = getString(R.string.cancel), cancelButtonClick = {} ) } @@ -68,7 +69,7 @@ class SettingsActivity : BaseActivity(ActivitySettingsB @SuppressLint("SetTextI18n") override fun setupView() { - binding.toolbar.tvBack.text = "설정" + binding.toolbar.tvBack.text = getString(R.string.screen_settings_title) binding.toolbar.tvBack.setOnClickListener { finish() } loadingDialog = LoadingDialog(this, layoutInflater) @@ -112,10 +113,15 @@ class SettingsActivity : BaseActivity(ActivitySettingsB binding.rlOssLicense.setOnClickListener { startActivity(Intent(applicationContext, OssLicensesMenuActivity::class.java)) - OssLicensesMenuActivity.setActivityTitle("오픈소스 라이선스") + OssLicensesMenuActivity.setActivityTitle( + getString(R.string.screen_settings_oss_license) + ) } - binding.tvVersion.text = "ver ${BuildConfig.VERSION_NAME}" + binding.tvVersion.text = getString( + R.string.screen_settings_version_format, + BuildConfig.VERSION_NAME + ) binding.tvLogOut.setOnClickListener { logoutDialog.show(screenWidth) @@ -141,7 +147,10 @@ class SettingsActivity : BaseActivity(ActivitySettingsB } viewModel.toastLiveData.observe(this) { - it?.let { Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() } + val text = it?.message ?: it?.resId?.let { resId -> getString(resId) } + text?.let { message -> + Toast.makeText(applicationContext, message, Toast.LENGTH_LONG).show() + } } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsViewModel.kt index cc4cd913..e65e5de0 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsViewModel.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.chat.talk.room.ChatRepository +import kr.co.vividnext.sodalive.common.ToastMessage import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.user.UserRepository @@ -14,8 +16,8 @@ class SettingsViewModel( private val userRepository: UserRepository, private val chatRepository: ChatRepository ) : BaseViewModel() { - private val _toastLiveData = MutableLiveData() - val toastLiveData: LiveData + private val _toastLiveData = MutableLiveData() + val toastLiveData: LiveData get() = _toastLiveData private var _isLoading = MutableLiveData(false) @@ -44,17 +46,19 @@ class SettingsViewModel( .let { disposable -> compositeDisposable.add(disposable) } } else { if (it.message != null) { - _toastLiveData.postValue(it.message) + _toastLiveData.postValue(ToastMessage(message = it.message)) } else { _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + ToastMessage(resId = R.string.common_error_unknown) ) } } }, { it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue( + ToastMessage(resId = R.string.common_error_unknown) + ) } ) ) @@ -80,17 +84,19 @@ class SettingsViewModel( .let { disposable -> compositeDisposable.add(disposable) } } else { if (it.message != null) { - _toastLiveData.postValue(it.message) + _toastLiveData.postValue(ToastMessage(message = it.message)) } else { _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + ToastMessage(resId = R.string.common_error_unknown) ) } } }, { it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue( + ToastMessage(resId = R.string.common_error_unknown) + ) } ) ) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/event/EventActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/event/EventActivity.kt index 6bcbe1f2..03c7aad6 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/event/EventActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/event/EventActivity.kt @@ -9,6 +9,7 @@ import android.view.View import android.widget.Toast import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.base.BaseActivity import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.common.LoadingDialog @@ -27,14 +28,17 @@ class EventActivity : BaseActivity(ActivityEventBinding::i viewModel.isLoading.observe(this) { if (it) { - loadingDialog.show(screenWidth, "이벤트를 불러오고 있습니다.") + loadingDialog.show(screenWidth, getString(R.string.screen_event_loading)) } else { loadingDialog.dismiss() } } viewModel.toastLiveData.observe(this) { - it?.let { Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() } + val text = it?.message ?: it?.resId?.let { resId -> getString(resId) } + text?.let { message -> + Toast.makeText(applicationContext, message, Toast.LENGTH_LONG).show() + } } viewModel.getEvents() @@ -42,7 +46,7 @@ class EventActivity : BaseActivity(ActivityEventBinding::i @SuppressLint("NotifyDataSetChanged") override fun setupView() { - binding.toolbar.tvBack.text = "이벤트" + binding.toolbar.tvBack.text = getString(R.string.screen_event_title) binding.toolbar.tvBack.setOnClickListener { finish() } loadingDialog = LoadingDialog(this, layoutInflater) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/event/EventDetailActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/event/EventDetailActivity.kt index 13a83098..2805742c 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/event/EventDetailActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/event/EventDetailActivity.kt @@ -7,6 +7,7 @@ import android.widget.FrameLayout import android.widget.RelativeLayout import androidx.core.content.IntentCompat import coil.load +import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.base.BaseActivity import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.databinding.ActivityEventDetailBinding @@ -23,7 +24,7 @@ class EventDetailActivity : BaseActivity( EventItem::class.java )!! - binding.toolbar.tvBack.text = "이벤트 상세" + binding.toolbar.tvBack.text = getString(R.string.screen_event_detail_title) binding.toolbar.tvBack.setOnClickListener { finish() } if (!event.link.isNullOrBlank()) { diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/event/EventViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/event/EventViewModel.kt index fd91fc2e..19d4b037 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/event/EventViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/event/EventViewModel.kt @@ -5,7 +5,9 @@ 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.ToastMessage import kr.co.vividnext.sodalive.common.SharedPreferenceManager class EventViewModel(private val repository: EventRepository) : BaseViewModel() { @@ -13,8 +15,8 @@ class EventViewModel(private val repository: EventRepository) : BaseViewModel() val eventLiveData: LiveData> get() = _eventLiveData - private val _toastLiveData = MutableLiveData() - val toastLiveData: LiveData + private val _toastLiveData = MutableLiveData() + val toastLiveData: LiveData get() = _toastLiveData private var _isLoading = MutableLiveData(false) @@ -45,10 +47,12 @@ class EventViewModel(private val repository: EventRepository) : BaseViewModel() page += 1 } else { if (it.message != null) { - _toastLiveData.postValue(it.message) + _toastLiveData.postValue( + ToastMessage(message = it.message) + ) } else { _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + ToastMessage(resId = R.string.common_error_unknown) ) } } @@ -57,7 +61,9 @@ class EventViewModel(private val repository: EventRepository) : BaseViewModel() { _isLoading.value = false it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue( + ToastMessage(resId = R.string.common_error_unknown) + ) } ) ) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/notice/NoticeActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/notice/NoticeActivity.kt index 0e08066f..42e4808a 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/notice/NoticeActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/notice/NoticeActivity.kt @@ -8,6 +8,7 @@ import android.view.View import android.widget.Toast import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.base.BaseActivity import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.common.LoadingDialog @@ -26,14 +27,17 @@ class NoticeActivity : BaseActivity(ActivityNoticeBinding viewModel.isLoading.observe(this) { if (it) { - loadingDialog.show(screenWidth, "공지사항을 불러오고 있습니다.") + loadingDialog.show(screenWidth, getString(R.string.screen_notice_loading)) } else { loadingDialog.dismiss() } } viewModel.toastLiveData.observe(this) { - it?.let { Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() } + val text = it?.message ?: it?.resId?.let { resId -> getString(resId) } + text?.let { message -> + Toast.makeText(applicationContext, message, Toast.LENGTH_LONG).show() + } } viewModel.getNotices() @@ -41,7 +45,7 @@ class NoticeActivity : BaseActivity(ActivityNoticeBinding @SuppressLint("NotifyDataSetChanged") override fun setupView() { - binding.toolbar.tvBack.text = "공지사항" + binding.toolbar.tvBack.text = getString(R.string.screen_notice_title) binding.toolbar.tvBack.setOnClickListener { finish() } loadingDialog = LoadingDialog(this, layoutInflater) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/notice/NoticeDetailActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/notice/NoticeDetailActivity.kt index de5620cf..cc6b4ffc 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/notice/NoticeDetailActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/notice/NoticeDetailActivity.kt @@ -4,6 +4,7 @@ import android.annotation.SuppressLint import androidx.core.content.IntentCompat import androidx.webkit.WebSettingsCompat import androidx.webkit.WebViewFeature +import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.base.BaseActivity import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.databinding.ActivityNoticeDetailBinding @@ -28,7 +29,7 @@ class NoticeDetailActivity : BaseActivity( NoticeItem::class.java )!! - binding.toolbar.tvBack.text = "공지사항 상세" + binding.toolbar.tvBack.text = getString(R.string.screen_notice_detail_title) binding.toolbar.tvBack.setOnClickListener { finish() } binding.tvTitle.text = notice.title diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/notice/NoticeViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/notice/NoticeViewModel.kt index 4c790f13..ef51b412 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/notice/NoticeViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/notice/NoticeViewModel.kt @@ -5,7 +5,9 @@ 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.ToastMessage import kr.co.vividnext.sodalive.common.SharedPreferenceManager class NoticeViewModel(private val repository: NoticeRepository) : BaseViewModel() { @@ -13,8 +15,8 @@ class NoticeViewModel(private val repository: NoticeRepository) : BaseViewModel( val noticeLiveData: LiveData> get() = _noticeLiveData - private val _toastLiveData = MutableLiveData() - val toastLiveData: LiveData + private val _toastLiveData = MutableLiveData() + val toastLiveData: LiveData get() = _toastLiveData private var _isLoading = MutableLiveData(false) @@ -45,10 +47,12 @@ class NoticeViewModel(private val repository: NoticeRepository) : BaseViewModel( page += 1 } else { if (it.message != null) { - _toastLiveData.postValue(it.message) + _toastLiveData.postValue( + ToastMessage(message = it.message) + ) } else { _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + ToastMessage(resId = R.string.common_error_unknown) ) } } @@ -57,7 +61,9 @@ class NoticeViewModel(private val repository: NoticeRepository) : BaseViewModel( { _isLoading.value = false it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue( + ToastMessage(resId = R.string.common_error_unknown) + ) } ) ) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/notification/NotificationSettingsActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/notification/NotificationSettingsActivity.kt index 46947d4b..cffec3b7 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/notification/NotificationSettingsActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/notification/NotificationSettingsActivity.kt @@ -23,7 +23,7 @@ class NotificationSettingsActivity : BaseActivity getString(resId) } + text?.let { message -> + Toast.makeText(applicationContext, message, Toast.LENGTH_LONG).show() + } } } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/notification/NotificationSettingsViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/notification/NotificationSettingsViewModel.kt index 8cec88c3..e4fffe5d 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/notification/NotificationSettingsViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/notification/NotificationSettingsViewModel.kt @@ -5,15 +5,17 @@ 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.ToastMessage import kr.co.vividnext.sodalive.user.UserRepository class NotificationSettingsViewModel( private val userRepository: UserRepository ) : BaseViewModel() { - private val _toastLiveData = MutableLiveData() - val toastLiveData: LiveData + private val _toastLiveData = MutableLiveData() + val toastLiveData: LiveData get() = _toastLiveData private var _isLoading = MutableLiveData(false) @@ -52,10 +54,10 @@ class NotificationSettingsViewModel( data.followingChannelLiveNotice ?: false } else { if (it.message != null) { - _toastLiveData.postValue(it.message) + _toastLiveData.postValue(ToastMessage(message = it.message)) } else { _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + ToastMessage(resId = R.string.common_error_unknown) ) } } @@ -64,7 +66,7 @@ class NotificationSettingsViewModel( _isLoading.value = false it.message?.let { message -> Logger.e(message) } _toastLiveData.postValue( - "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." + ToastMessage(resId = R.string.retry) ) } ) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/signout/SignOutActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/signout/SignOutActivity.kt index 91390789..c8b298ed 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/signout/SignOutActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/signout/SignOutActivity.kt @@ -7,6 +7,7 @@ import android.widget.Toast import com.jakewharton.rxbinding4.widget.textChanges 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.BaseActivity import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.databinding.ActivitySignOutBinding @@ -28,7 +29,10 @@ class SignOutActivity : BaseActivity(ActivitySignOutBind private fun bindData() { viewModel.toastLiveData.observe(this) { - it?.let { Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() } + val text = it?.message ?: it?.resId?.let { resId -> getString(resId) } + text?.let { message -> + Toast.makeText(applicationContext, message, Toast.LENGTH_LONG).show() + } } viewModel.isLoading.observe(this) { @@ -74,15 +78,16 @@ class SignOutActivity : BaseActivity(ActivitySignOutBind reasonButtons.add(binding.tvReason10) loadingDialog = LoadingDialog(this, layoutInflater) - binding.toolbar.tvBack.text = "회원탈퇴" + binding.toolbar.tvBack.text = getString(R.string.screen_sign_out_title) binding.toolbar.tvBack.setOnClickListener { finish() } + val etcLabel = getString(R.string.screen_sign_out_reason_etc) for (reasonButton in reasonButtons) { - val reason = reasonButton.text.toString() reasonButton.setOnClickListener { checkboxSelectedFalse() reasonButton.isSelected = true - viewModel.reason = if (reason == "기타") { + val reason = reasonButton.text.toString() + viewModel.reason = if (reason == etcLabel) { binding.etReasonEtc.text.toString() } else { reasonButton.text.toString() diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/signout/SignOutViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/signout/SignOutViewModel.kt index af0411ef..743d15fa 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/signout/SignOutViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/signout/SignOutViewModel.kt @@ -5,14 +5,16 @@ 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.ToastMessage import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.user.UserRepository class SignOutViewModel(private val repository: UserRepository) : BaseViewModel() { - private val _toastLiveData = MutableLiveData() - val toastLiveData: LiveData + private val _toastLiveData = MutableLiveData() + val toastLiveData: LiveData get() = _toastLiveData private var _isLoading = MutableLiveData(false) @@ -25,7 +27,9 @@ class SignOutViewModel(private val repository: UserRepository) : BaseViewModel() fun signOut(onSuccess: () -> Unit) { if (!_isLoading.value!!) { if (reason.isBlank()) { - _toastLiveData.postValue("계정을 삭제하려는 이유를 선택해 주세요.") + _toastLiveData.postValue( + ToastMessage(resId = R.string.screen_sign_out_reason_required) + ) return } @@ -38,27 +42,29 @@ class SignOutViewModel(private val repository: UserRepository) : BaseViewModel() .observeOn(AndroidSchedulers.mainThread()) .subscribe( { - _isLoading.value = false + _isLoading.value = false - if (it.message != null) { - _toastLiveData.postValue(it.message) - } else { - _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." - ) - } + if (it.message != null) { + _toastLiveData.postValue(ToastMessage(message = it.message)) + } else { + _toastLiveData.postValue( + ToastMessage(resId = R.string.common_error_unknown) + ) + } if (it.success) { SharedPreferenceManager.clear() onSuccess() } - }, - { - _isLoading.value = false - it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") - } - ) + }, + { + _isLoading.value = false + it.message?.let { message -> Logger.e(message) } + _toastLiveData.postValue( + ToastMessage(resId = R.string.common_error_unknown) + ) + } + ) ) } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/terms/TermsActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/terms/TermsActivity.kt index 08fd2de6..cab7cd67 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/terms/TermsActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/terms/TermsActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.widget.Toast import androidx.webkit.WebSettingsCompat import androidx.webkit.WebViewFeature +import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.base.BaseActivity import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.common.LoadingDialog @@ -56,14 +57,17 @@ class TermsActivity : BaseActivity(ActivityTermsBinding::i private fun bindData() { viewModel.isLoading.observe(this) { if (it) { - loadingDialog.show(screenWidth, "공지사항을 불러오고 있습니다.") + loadingDialog.show(screenWidth, getString(R.string.screen_terms_loading)) } else { loadingDialog.dismiss() } } viewModel.toastLiveData.observe(this) { - it?.let { Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() } + val text = it?.message ?: it?.resId?.let { resId -> getString(resId) } + text?.let { message -> + Toast.makeText(applicationContext, message, Toast.LENGTH_LONG).show() + } } viewModel.titleLiveData.observe(this) { diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/terms/TermsViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/terms/TermsViewModel.kt index e8237a05..4a6d74c4 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/terms/TermsViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/terms/TermsViewModel.kt @@ -5,7 +5,9 @@ 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.ToastMessage class TermsViewModel(private val repository: TermsRepository) : BaseViewModel() { private val _titleLiveData = MutableLiveData() @@ -16,8 +18,8 @@ class TermsViewModel(private val repository: TermsRepository) : BaseViewModel() val termsLiveData: LiveData get() = _termsLiveData - private val _toastLiveData = MutableLiveData() - val toastLiveData: LiveData + private val _toastLiveData = MutableLiveData() + val toastLiveData: LiveData get() = _toastLiveData private var _isLoading = MutableLiveData(false) @@ -40,10 +42,10 @@ class TermsViewModel(private val repository: TermsRepository) : BaseViewModel() _termsLiveData.postValue(it.data.description) } else { if (it.message != null) { - _toastLiveData.postValue(it.message) + _toastLiveData.postValue(ToastMessage(message = it.message)) } else { _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + ToastMessage(resId = R.string.common_error_unknown) ) } } @@ -51,7 +53,9 @@ class TermsViewModel(private val repository: TermsRepository) : BaseViewModel() { _isLoading.value = false it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue( + ToastMessage(resId = R.string.common_error_unknown) + ) } ) ) @@ -73,10 +77,10 @@ class TermsViewModel(private val repository: TermsRepository) : BaseViewModel() _termsLiveData.postValue(it.data.description) } else { if (it.message != null) { - _toastLiveData.postValue(it.message) + _toastLiveData.postValue(ToastMessage(message = it.message)) } else { _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + ToastMessage(resId = R.string.common_error_unknown) ) } } @@ -84,7 +88,9 @@ class TermsViewModel(private val repository: TermsRepository) : BaseViewModel() { _isLoading.value = false it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue( + ToastMessage(resId = R.string.common_error_unknown) + ) } ) ) diff --git a/app/src/main/res/layout/activity_content_settings.xml b/app/src/main/res/layout/activity_content_settings.xml index 46285129..87999caf 100644 --- a/app/src/main/res/layout/activity_content_settings.xml +++ b/app/src/main/res/layout/activity_content_settings.xml @@ -32,7 +32,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_bold" - android:text="민감한 콘텐츠 보기" + android:text="@string/screen_content_settings_adult_toggle" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -74,7 +74,7 @@ android:drawablePadding="13.3dp" android:fontFamily="@font/gmarket_sans_medium" android:gravity="center_vertical" - android:text="전체" + android:text="@string/screen_content_settings_all" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" app:drawableStartCompat="@drawable/ic_radio_button_select" /> @@ -89,7 +89,7 @@ android:drawablePadding="13.3dp" android:fontFamily="@font/gmarket_sans_medium" android:gravity="center_vertical" - android:text="남성향" + android:text="@string/screen_content_settings_male" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" app:drawableStartCompat="@drawable/ic_radio_button_select" /> @@ -103,7 +103,7 @@ android:drawablePadding="13.3dp" android:fontFamily="@font/gmarket_sans_medium" android:gravity="center_vertical" - android:text="여성향" + android:text="@string/screen_content_settings_female" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" app:drawableStartCompat="@drawable/ic_radio_button_select" /> diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index e7476c39..098a6e35 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -37,7 +37,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" android:paddingVertical="16dp" - android:text="이벤트 참여하기" + android:text="@string/screen_event_participate" android:textColor="@color/white" android:textSize="18.3sp" /> diff --git a/app/src/main/res/layout/activity_notification_settings.xml b/app/src/main/res/layout/activity_notification_settings.xml index 980ba3b3..e54422b3 100644 --- a/app/src/main/res/layout/activity_notification_settings.xml +++ b/app/src/main/res/layout/activity_notification_settings.xml @@ -30,7 +30,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_bold" - android:text="라이브 알림" + android:text="@string/notification_settings_live" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -62,7 +62,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_bold" - android:text="콘텐츠 업로드 알림" + android:text="@string/notification_settings_upload" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -94,7 +94,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_bold" - android:text="메시지 알림" + android:text="@string/notification_settings_message" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index c31a90d6..6e7de90c 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -40,7 +40,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_bold" - android:text="알림 설정" + android:text="@string/screen_settings_notification" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -74,7 +74,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_bold" - android:text="콘텐츠 보기 설정" + android:text="@string/screen_settings_content" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -109,7 +109,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_bold" - android:text="이용약관" + android:text="@string/screen_settings_terms" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -142,7 +142,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_bold" - android:text="개인정보처리방침" + android:text="@string/screen_settings_privacy" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -175,7 +175,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_bold" - android:text="오픈소스 라이선스" + android:text="@string/screen_settings_oss_license" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -204,7 +204,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_bold" - android:text="앱 버전 정보" + android:text="@string/screen_settings_app_version" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -228,15 +228,7 @@ android:layout_marginHorizontal="13.3dp" android:layout_marginTop="16.7dp" android:fontFamily="@font/gmarket_sans_medium" - android:text=" -- 회사명 : 주식회사 소다라이브\n\n -- 대표자 : 이재형\n\n -- 주소 : 경기도 성남시 분당구 황새울로335번길 10, 5층 563A호\n\n -- 사업자등록번호 : 870-81-03220\n\n -- 통신판매업신고 : 제2024-성남분당B-1012호\n\n -- 고객센터 : 02.2055.1477(이용시간 10:00~19:00)\n\n -- 대표 이메일 : sodalive.official@gmail.com -" + android:text="@string/company_info" android:textColor="@color/color_777777" android:textSize="11sp" /> @@ -250,7 +242,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" android:paddingVertical="19.3dp" - android:text="로그아웃" + android:text="@string/screen_settings_logout" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -261,7 +253,7 @@ android:layout_gravity="center" android:layout_marginTop="26.7dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="모든 기기에서 로그아웃" + android:text="@string/screen_settings_logout_all" android:textColor="@color/color_777777" android:textSize="14.7sp" /> @@ -272,7 +264,7 @@ android:layout_gravity="center" android:layout_marginTop="26.7dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="회원탈퇴" + android:text="@string/screen_settings_sign_out" android:textColor="@color/color_777777" android:textSize="14.7sp" /> diff --git a/app/src/main/res/layout/activity_sign_out.xml b/app/src/main/res/layout/activity_sign_out.xml index 1c7273ec..5f3573e6 100644 --- a/app/src/main/res/layout/activity_sign_out.xml +++ b/app/src/main/res/layout/activity_sign_out.xml @@ -29,7 +29,7 @@ android:layout_marginHorizontal="13.3dp" android:layout_marginTop="13.3dp" android:fontFamily="@font/gmarket_sans_bold" - android:text="정말로 탈퇴하실 거에요?\n한 번 더 생각해보지 않으실래요?" + android:text="@string/screen_sign_out_question" android:textColor="@color/color_3bb9f1" android:textSize="20sp" /> @@ -40,7 +40,7 @@ android:layout_marginTop="6.7dp" android:fontFamily="@font/gmarket_sans_medium" android:letterSpacing="0" - android:text="계정을 삭제하려는 이유를 선택해주세요.\n서비스 개선에 중요한 자료로 활용하겠습니다." + android:text="@string/screen_sign_out_description" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" /> @@ -53,7 +53,7 @@ android:button="@null" android:drawablePadding="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="닉네임을 변경하고 싶어서" + android:text="@string/screen_sign_out_reason_change_nickname" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" app:drawableStartCompat="@drawable/ic_radio_button_select" /> @@ -67,7 +67,7 @@ android:button="@null" android:drawablePadding="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="다른 사용자와의 다툼이 있어서" + android:text="@string/screen_sign_out_reason_conflict_user" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" app:drawableStartCompat="@drawable/ic_radio_button_select" /> @@ -81,7 +81,7 @@ android:button="@null" android:drawablePadding="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="이용이 불편하고 장애가 많아서" + android:text="@string/screen_sign_out_reason_inconvenient" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" app:drawableStartCompat="@drawable/ic_radio_button_select" /> @@ -95,7 +95,7 @@ android:button="@null" android:drawablePadding="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="서비스 운영이 마음에 들지 않아서" + android:text="@string/screen_sign_out_reason_unhappy_service" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" app:drawableStartCompat="@drawable/ic_radio_button_select" /> @@ -109,7 +109,7 @@ android:button="@null" android:drawablePadding="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="다른 서비스가 더 좋아서" + android:text="@string/screen_sign_out_reason_other_service" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" app:drawableStartCompat="@drawable/ic_radio_button_select" /> @@ -123,7 +123,7 @@ android:button="@null" android:drawablePadding="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="삭제하고 싶은 내용이 있어서" + android:text="@string/screen_sign_out_reason_remove_content" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" app:drawableStartCompat="@drawable/ic_radio_button_select" /> @@ -137,7 +137,7 @@ android:button="@null" android:drawablePadding="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="사용빈도가 낮아서" + android:text="@string/screen_sign_out_reason_low_usage" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" app:drawableStartCompat="@drawable/ic_radio_button_select" /> @@ -151,7 +151,7 @@ android:button="@null" android:drawablePadding="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="원하는 콘텐츠나 크리에이터가 없어서" + android:text="@string/screen_sign_out_reason_missing_content" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" app:drawableStartCompat="@drawable/ic_radio_button_select" /> @@ -165,7 +165,7 @@ android:button="@null" android:drawablePadding="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="이용요금이 비싸서" + android:text="@string/screen_sign_out_reason_expensive" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" app:drawableStartCompat="@drawable/ic_radio_button_select" /> @@ -184,7 +184,7 @@ android:button="@null" android:drawablePadding="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="기타" + android:text="@string/screen_sign_out_reason_etc" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" app:drawableStartCompat="@drawable/ic_radio_button_select" /> @@ -202,7 +202,7 @@ android:background="@null" android:button="@null" android:fontFamily="@font/gmarket_sans_light" - android:hint="입력해 주세요" + android:hint="@string/screen_sign_out_reason_hint" android:importantForAutofill="no" android:inputType="textWebEditText" android:textColor="@color/color_eeeeee" @@ -230,7 +230,7 @@ android:layout_marginHorizontal="26.7dp" android:layout_marginTop="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="계정을 삭제하면 회원님의 모든 콘텐츠와 활동 길고, 캔충전 및 적립, 사용내역 등의 기록이 삭제됩니다. 삭제된 정보는 복구할 수 없으니 신중히 결정해주세요.\n캔 충전하기를 통해 적립한 캔은 계정 삭제시 환불이 불가합니다. 또한 환불 신청 후 환불처리가 되기 전에 계정을 삭제하는 경우 포인트 사용내역을 확인할 수 없어 환불이 불가합니다. " + android:text="@string/screen_sign_out_warning" android:textColor="@color/color_ff5c49" /> @@ -274,7 +274,7 @@ android:layout_marginHorizontal="26.7dp" android:layout_marginTop="8dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="※ 소셜 로그인 이용자는 비밀번호를 입력하지 말고 '탈퇴하기'를 클릭하면 자동 탈퇴됩니다." + android:text="@string/screen_sign_out_social_hint" android:textColor="@color/color_eeeeee" android:textSize="12sp" /> @@ -289,7 +289,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" android:paddingVertical="16dp" - android:text="탈퇴하기" + android:text="@string/screen_sign_out_submit" android:textColor="@color/white" android:textSize="15sp" /> diff --git a/app/src/main/res/layout/dialog_notification_settings.xml b/app/src/main/res/layout/dialog_notification_settings.xml index 047e86aa..a61759f2 100644 --- a/app/src/main/res/layout/dialog_notification_settings.xml +++ b/app/src/main/res/layout/dialog_notification_settings.xml @@ -13,7 +13,7 @@ android:layout_marginBottom="13.3dp" android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" - android:text="알림 설정" + android:text="@string/screen_notification_settings_title" android:textColor="@color/color_eeeeee" android:textSize="18sp" /> @@ -29,7 +29,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_bold" - android:text="라이브 알림" + android:text="@string/notification_settings_live" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -62,7 +62,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_bold" - android:text="콘텐츠 업로드 알림" + android:text="@string/notification_settings_upload" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -95,7 +95,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_bold" - android:text="메시지 알림" + android:text="@string/notification_settings_message" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -120,7 +120,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" android:paddingVertical="16dp" - android:text="설정하기" + android:text="@string/notification_settings_confirm" android:textColor="@color/white" android:textSize="18.3sp" /> diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index b1c39c23..5829e1c9 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -177,4 +177,57 @@ Contents Series No results found. + + + Settings + Notification settings + Content viewing settings + Terms of Service + Privacy Policy + Open source licenses + App version + ver %1$s + Log out + Log out from all devices + Delete account + Notice + Do you want to log out? + Log out from all devices? + Content viewing settings + Show sensitive content + All + Male-oriented + Female-oriented + Notification settings + Live notifications + Content upload notifications + Message notifications + Save + Loading terms… + Notices + Loading notices… + Notice details + Events + Loading events… + Event details + Join event + Delete account + Are you sure you want to leave?\nWould you like to reconsider? + Please choose why you want to delete your account.\nWe use this to improve the service. + I want to change my nickname + Conflict with another user + Service is inconvenient or unstable + Unhappy with service operation + Prefer another service + I want to remove my content + I rarely use it + No content or creators I want + Too expensive + Other + Please enter + Deleting your account will remove all of your content, activity history, can top-ups, accruals, and usage history. Deleted information cannot be recovered, so please decide carefully.\nCans earned via Charge Cans cannot be refunded when deleting your account. If you delete your account before a refund request is processed, the refund cannot be made because we cannot check your point usage history. + Password + ※ Social login users can tap \'Delete account\' without entering a password to proceed automatically. + Delete account + Please select a reason for deleting your account. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 0278554a..19210658 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -177,4 +177,57 @@ コンテンツ シリーズ 検索結果がありません。 + + + 設定 + 通知設定 + コンテンツ表示設定 + 利用規約 + 個人情報取扱方針 + オープンソースライセンス + アプリバージョン + ver %1$s + ログアウト + すべての端末でログアウト + 退会 + お知らせ + ログアウトしますか? + すべての端末からログアウトしますか? + コンテンツ表示設定 + センシティブなコンテンツを表示 + すべて + 男性向け + 女性向け + 通知設定 + ライブ通知 + コンテンツアップロード通知 + メッセージ通知 + 設定する + 規約を読み込み中です。 + お知らせ + お知らせを読み込み中です。 + お知らせ詳細 + イベント + イベントを読み込み中です。 + イベント詳細 + イベントに参加する + 退会 + 本当に退会しますか?\nもう一度考えてみませんか? + 退会理由を選択してください。\nサービス改善の参考にします。 + ニックネームを変更したい + 他のユーザーとのトラブルがある + 使いにくい・障害が多い + サービス運営に不満がある + 他のサービスの方が良い + 削除したい内容がある + 利用頻度が低い + 求めるコンテンツやクリエイターがいない + 利用料金が高い + その他 + 入力してください + アカウントを削除すると、すべてのコンテンツや活動履歴、CANチャージ・積立・利用履歴などが削除されます。削除された情報は復元できませんのでご注意ください。\nCANチャージで貯めたCANはアカウント削除時に返金できません。返金申請後に処理前の状態でアカウントを削除した場合、ポイント利用履歴を確認できないため返金できません。 + パスワード確認 + ※ ソーシャルログイン利用者はパスワードを入力せず「退会する」をタップすると自動で退会できます。 + 退会する + 退会理由を選択してください。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 743d6473..ef06a823 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -176,4 +176,57 @@ 콘텐츠 시리즈 검색 결과가 없습니다. + + + 설정 + 알림 설정 + 콘텐츠 보기 설정 + 이용약관 + 개인정보처리방침 + 오픈소스 라이선스 + 앱 버전 정보 + ver %1$s + 로그아웃 + 모든 기기에서 로그아웃 + 회원탈퇴 + 알림 + 로그아웃 하시겠어요? + 모든 기기에서 로그아웃 하시겠어요? + 콘텐츠 보기 설정 + 민감한 콘텐츠 보기 + 전체 + 남성향 + 여성향 + 알림 설정 + 라이브 알림 + 콘텐츠 업로드 알림 + 메시지 알림 + 설정하기 + 약관을 불러오고 있습니다. + 공지사항 + 공지사항을 불러오고 있습니다. + 공지사항 상세 + 이벤트 + 이벤트를 불러오고 있습니다. + 이벤트 상세 + 이벤트 참여하기 + 회원탈퇴 + 정말로 탈퇴하실 거에요?\n한 번 더 생각해보지 않으실래요? + 계정을 삭제하려는 이유를 선택해주세요.\n서비스 개선에 중요한 자료로 활용하겠습니다. + 닉네임을 변경하고 싶어서 + 다른 사용자와의 다툼이 있어서 + 이용이 불편하고 장애가 많아서 + 서비스 운영이 마음에 들지 않아서 + 다른 서비스가 더 좋아서 + 삭제하고 싶은 내용이 있어서 + 사용빈도가 낮아서 + 원하는 콘텐츠나 크리에이터가 없어서 + 이용요금이 비싸서 + 기타 + 입력해 주세요 + 계정을 삭제하면 회원님의 모든 콘텐츠와 활동 길고, 캔충전 및 적립, 사용내역 등의 기록이 삭제됩니다. 삭제된 정보는 복구할 수 없으니 신중히 결정해주세요.\n캔 충전하기를 통해 적립한 캔은 계정 삭제시 환불이 불가합니다. 또한 환불 신청 후 환불처리가 되기 전에 계정을 삭제하는 경우 포인트 사용내역을 확인할 수 없어 환불이 불가합니다. + 비밀번호 확인 + ※ 소셜 로그인 이용자는 비밀번호를 입력하지 말고 \'탈퇴하기\'를 클릭하면 자동 탈퇴됩니다. + 탈퇴하기 + 계정을 삭제하려는 이유를 선택해 주세요.