diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekFragment.kt index 81874824..bcc6a039 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekFragment.kt @@ -8,7 +8,6 @@ import android.widget.Toast import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import kr.co.vividnext.sodalive.audio_content.series.SeriesListAdapter import kr.co.vividnext.sodalive.audio_content.series.detail.SeriesDetailActivity import kr.co.vividnext.sodalive.base.BaseFragment import kr.co.vividnext.sodalive.common.Constants @@ -61,7 +60,7 @@ class SeriesMainDayOfWeekFragment : BaseFragment Unit, ) : RecyclerView.Adapter() { @@ -20,17 +22,6 @@ class DayOfWeekAdapter( binding.tvDayOfWeek.text = dayOfWeek.dayOfWeekStr binding.tvDayOfWeek.isSelected = dayOfWeek.dayOfWeek == selectedDayOfWeek - val lp = binding.tvDayOfWeek.layoutParams - lp.height = screenWidth * 38 / 400 - - if (dayOfWeek.dayOfWeek == SeriesPublishedDaysOfWeek.RANDOM) { - lp.width = screenWidth * 54 / 400 - } else { - lp.width = screenWidth * 38 / 400 - } - - binding.tvDayOfWeek.layoutParams = lp - binding.root.setOnClickListener { onClickItem(dayOfWeek.dayOfWeek) selectedDayOfWeek = dayOfWeek.dayOfWeek @@ -42,14 +33,14 @@ class DayOfWeekAdapter( private var selectedDayOfWeek = SeriesPublishedDaysOfWeek.RANDOM private val dayOfWeekItems = listOf( - DayOfWeek(dayOfWeekStr = "월", dayOfWeek = SeriesPublishedDaysOfWeek.MON), - DayOfWeek(dayOfWeekStr = "화", dayOfWeek = SeriesPublishedDaysOfWeek.TUE), - DayOfWeek(dayOfWeekStr = "수", dayOfWeek = SeriesPublishedDaysOfWeek.WED), - DayOfWeek(dayOfWeekStr = "목", dayOfWeek = SeriesPublishedDaysOfWeek.THU), - DayOfWeek(dayOfWeekStr = "금", dayOfWeek = SeriesPublishedDaysOfWeek.FRI), - DayOfWeek(dayOfWeekStr = "토", dayOfWeek = SeriesPublishedDaysOfWeek.SAT), - DayOfWeek(dayOfWeekStr = "일", dayOfWeek = SeriesPublishedDaysOfWeek.SUN), - DayOfWeek(dayOfWeekStr = "랜덤", dayOfWeek = SeriesPublishedDaysOfWeek.RANDOM), + DayOfWeek(dayOfWeekStr = context.getString(R.string.day_mon_short), dayOfWeek = SeriesPublishedDaysOfWeek.MON), + DayOfWeek(dayOfWeekStr = context.getString(R.string.day_tue_short), dayOfWeek = SeriesPublishedDaysOfWeek.TUE), + DayOfWeek(dayOfWeekStr = context.getString(R.string.day_wed_short), dayOfWeek = SeriesPublishedDaysOfWeek.WED), + DayOfWeek(dayOfWeekStr = context.getString(R.string.day_thu_short), dayOfWeek = SeriesPublishedDaysOfWeek.THU), + DayOfWeek(dayOfWeekStr = context.getString(R.string.day_fri_short), dayOfWeek = SeriesPublishedDaysOfWeek.FRI), + DayOfWeek(dayOfWeekStr = context.getString(R.string.day_sat_short), dayOfWeek = SeriesPublishedDaysOfWeek.SAT), + DayOfWeek(dayOfWeekStr = context.getString(R.string.day_sun_short), dayOfWeek = SeriesPublishedDaysOfWeek.SUN), + DayOfWeek(dayOfWeekStr = context.getString(R.string.day_random), dayOfWeek = SeriesPublishedDaysOfWeek.RANDOM), ) // 요일 숫자에 맞춰 배열 diff --git a/app/src/main/java/kr/co/vividnext/sodalive/home/HomeFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/home/HomeFragment.kt index 9663ecc8..138c6bce 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/home/HomeFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/home/HomeFragment.kt @@ -6,9 +6,6 @@ import android.graphics.Rect import android.os.Bundle import android.os.Handler import android.os.Looper -import android.text.SpannableString -import android.text.Spanned -import android.text.style.ForegroundColorSpan import android.view.Gravity import android.view.View import android.widget.LinearLayout @@ -199,20 +196,6 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl } private fun setupLiveView() { - val spSectionTitle = SpannableString(binding.tvLiveTitle.text) - spSectionTitle.setSpan( - ForegroundColorSpan( - ContextCompat.getColor( - requireContext(), - R.color.color_3bb9f1 - ) - ), - 0, - 2, - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE - ) - binding.tvLiveTitle.text = spSectionTitle - liveAdapter = HomeLiveAdapter { if (SharedPreferenceManager.token.isNotBlank()) { val detailFragment = LiveRoomDetailFragment( @@ -282,20 +265,6 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl } fun setupSectionCreator() { - val spSectionTitle = SpannableString(binding.tvFamousCreatorTitle.text) - spSectionTitle.setSpan( - ForegroundColorSpan( - ContextCompat.getColor( - requireContext(), - R.color.color_3bb9f1 - ) - ), - 0, - 2, - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE - ) - binding.tvFamousCreatorTitle.text = spSectionTitle - creatorRankingAdapter = CreatorRankingAdapter( onClickItem = { if (SharedPreferenceManager.token.isNotBlank()) { @@ -372,20 +341,6 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl } private fun setupLatestContent() { - val spSectionTitle = SpannableString(binding.tvNewContent.text) - spSectionTitle.setSpan( - ForegroundColorSpan( - ContextCompat.getColor( - requireContext(), - R.color.color_3bb9f1 - ) - ), - 0, - 2, - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE - ) - binding.tvNewContent.text = spSectionTitle - latestContentThemeAdapter = HomeContentThemeAdapter { viewModel.getLatestContentByTheme(theme = it) } @@ -583,20 +538,6 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl } private fun setupOriginalSeries() { - val spSectionTitle = SpannableString(binding.tvSeriesOriginal.text) - spSectionTitle.setSpan( - ForegroundColorSpan( - ContextCompat.getColor( - requireContext(), - R.color.color_3bb9f1 - ) - ), - 0, - 2, - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE - ) - binding.tvSeriesOriginal.text = spSectionTitle - originalSeriesAdapter = HomeSeriesAdapter { if (SharedPreferenceManager.token.isNotBlank()) { startActivity( @@ -698,20 +639,6 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl } private fun setupSeriesDayOfWeek() { - val spSectionTitle = SpannableString(binding.tvSeriesDayOfWeek.text) - spSectionTitle.setSpan( - ForegroundColorSpan( - ContextCompat.getColor( - requireContext(), - R.color.color_3bb9f1 - ) - ), - 0, - 3, - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE - ) - binding.tvSeriesDayOfWeek.text = spSectionTitle - seriesDayOfWeekAdapter = HomeSeriesAdapter { if (SharedPreferenceManager.token.isNotBlank()) { startActivity( @@ -767,7 +694,7 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl } } - val dayOfWeekAdapter = DayOfWeekAdapter(screenWidth = screenWidth) { + val dayOfWeekAdapter = DayOfWeekAdapter(requireContext()) { viewModel.getDayOfWeekSeriesList(it) } @@ -778,7 +705,7 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl false ) { override fun canScrollVertically() = false - override fun canScrollHorizontally() = false + override fun canScrollHorizontally() = true } rvDayOfWeek.layoutManager = layoutManager @@ -889,20 +816,6 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl } private fun setupWeelyChart() { - val spSectionTitle = SpannableString(binding.tvWeeklyChart.text) - spSectionTitle.setSpan( - ForegroundColorSpan( - ContextCompat.getColor( - requireContext(), - R.color.color_3bb9f1 - ) - ), - 0, - 2, - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE - ) - binding.tvWeeklyChart.text = spSectionTitle - // 정렬 선택 RecyclerView 설정 val sortAdapter = ContentRankingSortAdapter { viewModel.getContentRanking(it) @@ -1009,20 +922,6 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl } private fun setupRecommendChannel() { - val spSectionTitle = SpannableString(binding.tvRecommendChannel.text) - spSectionTitle.setSpan( - ForegroundColorSpan( - ContextCompat.getColor( - requireContext(), - R.color.color_3bb9f1 - ) - ), - 0, - 2, - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE - ) - binding.tvRecommendChannel.text = spSectionTitle - recommendChannelAdapter = HomeRecommendChannelAdapter( onClickCreatorProfile = { if (SharedPreferenceManager.token.isNotBlank()) { @@ -1093,20 +992,6 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl } private fun setupFreeContent() { - val spSectionTitle = SpannableString(binding.tvFreeContent.text) - spSectionTitle.setSpan( - ForegroundColorSpan( - ContextCompat.getColor( - requireContext(), - R.color.color_3bb9f1 - ) - ), - 0, - 2, - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE - ) - binding.tvFreeContent.text = spSectionTitle - homeFreeContentAdapter = HomeContentAdapter { if (SharedPreferenceManager.token.isNotBlank()) { startActivity( @@ -1168,20 +1053,6 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl } private fun setupPointContent() { - val spSectionTitle = SpannableString(binding.tvPointContent.text) - spSectionTitle.setSpan( - ForegroundColorSpan( - ContextCompat.getColor( - requireContext(), - R.color.color_3bb9f1 - ) - ), - 0, - 3, - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE - ) - binding.tvPointContent.text = spSectionTitle - homePointContentAdapter = HomeContentAdapter { if (SharedPreferenceManager.token.isNotBlank()) { startActivity( @@ -1400,7 +1271,7 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl LivePaymentDialog( activity = requireActivity(), layoutInflater = layoutInflater, - title = "유료 라이브 입장", + title = getString(R.string.live_paid_title), startDateTime = if (hours >= 1) { dateFormat.format(beginDate) } else { @@ -1411,19 +1282,19 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl } else { null }, - desc = "${it.price}캔을 차감하고\n라이브에 입장 하시겠습니까?", + desc = getString(R.string.live_paid_desc, it.price), desc2 = if (hours >= 1) { - "라이브를 시작한 지 ${hours}시간 ${mins}분이 지났습니다. 라이브에 입장 후 30분 이내에 라이브가 종료될 수도 있습니다." + getString(R.string.live_paid_warning, hours, mins) } else { null }, - confirmButtonTitle = "결제 후 입장", + confirmButtonTitle = getString(R.string.live_paid_confirm), confirmButtonClick = { handler.postDelayed({ liveViewModel.enterRoom(roomId, onEnterRoomSuccess) }, 300) }, - cancelButtonTitle = "취소", + cancelButtonTitle = getString(R.string.cancel), cancelButtonClick = {} ).show(screenWidth) } @@ -1442,12 +1313,11 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl SodaDialog( activity = requireActivity(), layoutInflater = layoutInflater, - title = "본인인증", - desc = "보이스온의 오픈월드 캐릭터톡은\n청소년 보호를 위해 본인인증한\n성인만 이용이 가능합니다.\n" + - "캐릭터톡 서비스를 이용하시려면\n본인인증을 하고 이용해주세요.", - confirmButtonTitle = "본인인증 하러가기", + title = getString(R.string.auth_title), + desc = getString(R.string.auth_desc), + confirmButtonTitle = getString(R.string.auth_go), confirmButtonClick = { startAuthFlow() }, - cancelButtonTitle = "취소", + cancelButtonTitle = getString(R.string.cancel), cancelButtonClick = {}, descGravity = Gravity.CENTER ).show(screenWidth) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/main/MainActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/main/MainActivity.kt index 37fc63a2..9a0c22c0 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/main/MainActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/main/MainActivity.kt @@ -377,7 +377,7 @@ class MainActivity : BaseActivity(ActivityMainBinding::infl private fun setupBottomTabLayout() { setupTab( binding = binding.tabHome, - title = "홈", + title = getString(R.string.tab_home), imageSrc = R.drawable.ic_tabbar_home, colorStateList = ContextCompat.getColorStateList( applicationContext, @@ -388,7 +388,7 @@ class MainActivity : BaseActivity(ActivityMainBinding::infl setupTab( binding = binding.tabChat, - title = "채팅", + title = getString(R.string.tab_chat), imageSrc = R.drawable.ic_tabbar_chat, colorStateList = ContextCompat.getColorStateList( applicationContext, @@ -399,7 +399,7 @@ class MainActivity : BaseActivity(ActivityMainBinding::infl setupTab( binding = binding.tabLive, - title = "라이브", + title = getString(R.string.tab_live), imageSrc = R.drawable.ic_tabbar_live, colorStateList = ContextCompat.getColorStateList( applicationContext, @@ -410,7 +410,7 @@ class MainActivity : BaseActivity(ActivityMainBinding::infl setupTab( binding = binding.tabMy, - title = "마이", + title = getString(R.string.tab_my), imageSrc = R.drawable.ic_tabbar_my, colorStateList = ContextCompat.getColorStateList( applicationContext, diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index ef32e611..422fe239 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -78,7 +78,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="24dp" android:fontFamily="@font/pretendard_bold" - android:text="지금 라이브 중" + android:text="@string/live_now" android:textColor="@color/white" android:textSize="24sp" /> @@ -105,7 +105,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="24dp" android:fontFamily="@font/pretendard_bold" - android:text="인기 크리에이터" + android:text="@string/famous_creator" android:textColor="@color/white" android:textSize="24sp" /> @@ -136,7 +136,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/pretendard_bold" - android:text="최신 콘텐츠" + android:text="@string/latest_content" android:textColor="@color/color_eeeeee" android:textSize="24sp" /> @@ -147,7 +147,7 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:fontFamily="@font/pretendard_regular" - android:text="전체보기" + android:text="@string/view_all" android:textColor="@color/color_607d8b" /> @@ -213,7 +213,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:fontFamily="@font/pretendard_bold" - android:text="오직 보이스온에서만" + android:text="@string/voiceon_original_only" android:textColor="@color/white" android:textSize="24sp" /> @@ -222,7 +222,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/pretendard_regular" - android:text="전체보기" + android:text="@string/view_all" android:textColor="#90A4AE" android:textSize="14sp" /> @@ -266,7 +266,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:fontFamily="@font/pretendard_bold" - android:text="요일별 시리즈" + android:text="@string/series_by_weekday" android:textColor="@color/white" android:textSize="24sp" /> @@ -275,7 +275,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/pretendard_regular" - android:text="전체보기" + android:text="@string/view_all" android:textColor="#90A4AE" android:textSize="14sp" /> @@ -319,7 +319,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:fontFamily="@font/pretendard_bold" - android:text="인기 캐릭터 채팅" + android:text="@string/popular_character_chat" android:textColor="@color/white" android:textSize="24sp" /> @@ -328,7 +328,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/pretendard_regular" - android:text="전체보기" + android:text="@string/view_all" android:textColor="#90A4AE" android:textSize="14sp" /> @@ -356,7 +356,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="24dp" android:fontFamily="@font/pretendard_bold" - android:text="보온 주간 차트" + android:text="@string/weekly_chart" android:textColor="@color/white" android:textSize="24sp" /> @@ -393,7 +393,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="24dp" android:fontFamily="@font/pretendard_bold" - android:text="추천 채널" + android:text="@string/recommend_channel" android:textColor="@color/white" android:textSize="24sp" /> @@ -427,7 +427,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:fontFamily="@font/pretendard_bold" - android:text="무료 콘텐츠" + android:text="@string/free_content" android:textColor="@color/white" android:textSize="24sp" /> @@ -436,7 +436,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/pretendard_regular" - android:text="전체보기" + android:text="@string/view_all" android:textColor="#90A4AE" android:textSize="14sp" /> @@ -472,7 +472,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:fontFamily="@font/pretendard_bold" - android:text="포인트 대여 콘텐츠" + android:text="@string/point_rental_content" android:textColor="@color/white" android:textSize="24sp" /> @@ -481,7 +481,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/pretendard_regular" - android:text="전체보기" + android:text="@string/view_all" android:textColor="#90A4AE" android:textSize="14sp" /> @@ -517,7 +517,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:fontFamily="@font/pretendard_bold" - android:text="추천 콘텐츠" + android:text="@string/recommend_content" android:textColor="@color/white" android:textSize="24sp" /> @@ -543,14 +543,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="24dp" android:fontFamily="@font/pretendard_regular" - 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" app:animDuration="500" @@ -558,8 +551,8 @@ app:ellipsizeTextColor="@color/color_777777" app:expandType="layout" app:isExpanded="false" - app:readLessText="간략히" - app:readMoreText="더보기" + app:readLessText="@string/read_less" + app:readMoreText="@string/read_more" app:textMode="line" /> @@ -588,7 +581,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/pretendard_bold" - android:text="콘텐츠 업로드" + android:text="@string/action_upload_content" android:textColor="@color/white" android:textSize="13.3sp" /> diff --git a/app/src/main/res/layout/item_day_of_week.xml b/app/src/main/res/layout/item_day_of_week.xml index 64c99fde..12faa798 100644 --- a/app/src/main/res/layout/item_day_of_week.xml +++ b/app/src/main/res/layout/item_day_of_week.xml @@ -13,6 +13,8 @@ android:background="@drawable/bg_selectable_day_of_week" android:fontFamily="@font/pretendard_regular" android:gravity="center" + android:paddingHorizontal="10dp" + android:paddingVertical="6dp" android:textColor="@color/white" android:textSize="18sp" tools:text="월" /> diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index a7cd3aba..27a350c9 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -57,4 +57,41 @@ Could not sign in with Google. Please try again. Could not sign in. Please try again. Could not sign in with Kakao. Please try again. + + + Home + Chat + Live + My + Live now + Popular creators + Latest content + View all + Only on VoiceOn + Series by weekday + Popular character chat + Bo-on weekly chart + Recommended channels + Free content + Point rental content + Recommended content + Read more + Read less + Upload content + - Company: SodaLive Inc.\n\n- CEO: Jaehyung Lee\n\n- Address: 5F #563A, 10, Hwangsaeul-ro 335beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do\n\n- Business Registration No.: 870-81-03220\n\n- Mail-Order Sales Report: No. 2024-SeongnamBundangB-1012\n\n- Customer Center: 02-2055-1477 (10:00~19:00)\n\n- Contact Email: sodalive.official@gmail.com + Paid live entry + Spend %1$d cans and\nenter the live? + The live started %1$d hour(s) %2$d minute(s) ago. It may end within 30 minutes after you enter. + Enter after payment + Identity verification + VoiceOn open-world character chat is available only to verified adults to protect youth.\nPlease verify your identity to use the service. + Verify now + Mon + Tue + Wed + Thu + Fri + Sat + Sun + Random diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index ef67f2d1..042a687d 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -57,4 +57,41 @@ Googleでログインできませんでした。もう一度お試しください。 ログインできませんでした。もう一度お試しください。 Kakaoアカウントでログインできませんでした。もう一度お試しください。 + + + ホーム + チャット + ライブ + マイ + ライブ配信中 + 人気クリエイター + 最新コンテンツ + すべて見る + ボイスオン限定 + 曜日別シリーズ + 人気キャラクターチャット + ボオン週間チャート + おすすめチャンネル + 無料コンテンツ + ポイントレンタルコンテンツ + おすすめコンテンツ + もっと見る + 折りたたむ + コンテンツをアップロード + - 会社名: 株式会社ソダライブ\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 + 有料ライブ入場 + %1$dCANを消費して\nライブに入場しますか? + ライブ開始から%1$d時間%2$d分経過しています。入場後30分以内に終了する場合があります。 + 決済して入場 + 本人認証 + ボイスオンのオープンワールドキャラクタートークは、青少年保護のため本人認証済みの成人のみ利用できます。\n利用するには本人認証を行ってください。 + 本人認証へ進む + + + + + + + + ランダム diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 93e1a889..33bf31e5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -56,4 +56,41 @@ 구글 로그인을 하지 못했습니다. 다시 시도해 주세요 로그인을 하지 못했습니다. 다시 시도해 주세요 카카오 계정으로 로그인 하지 못했습니다. 다시 시도해 주세요 + + + + 채팅 + 라이브 + 마이 + 지금 라이브 중 + 인기 크리에이터 + 최신 콘텐츠 + 전체보기 + 오직 보이스온에서만 + 요일별 시리즈 + 인기 캐릭터 채팅 + 보온 주간 차트 + 추천 채널 + 무료 콘텐츠 + 포인트 대여 콘텐츠 + 추천 콘텐츠 + 더보기 + 간략히 + 콘텐츠 업로드 + - 회사명 : 주식회사 소다라이브\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 + 유료 라이브 입장 + %1$d캔을 차감하고\n라이브에 입장 하시겠습니까? + 라이브를 시작한 지 %1$d시간 %2$d분이 지났습니다. 라이브에 입장 후 30분 이내에 라이브가 종료될 수도 있습니다. + 결제 후 입장 + 본인인증 + 보이스온의 오픈월드 캐릭터톡은\n청소년 보호를 위해 본인인증한\n성인만 이용이 가능합니다.\n캐릭터톡 서비스를 이용하시려면\n본인인증을 하고 이용해주세요. + 본인인증 하러가기 + + + + + + + + 랜덤