From d3dcbe685281f93dbbf4cb71f03e05790c44e064 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=BC=ED=98=81?= Date: Thu, 4 Jun 2026 16:01:03 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=ED=95=98=EB=93=9C=EC=BD=94?= =?UTF-8?q?=EB=94=A9=EB=90=9C=20=EB=AC=B8=EC=9E=90=EC=97=B4=EC=9D=84=20?= =?UTF-8?q?=EB=A6=AC=EC=86=8C=EC=8A=A4(strings.xml)=EB=A1=9C=20=EC=B6=94?= =?UTF-8?q?=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `SearchBar`, `CombinationCard` 등 디자인 시스템 컴포넌트 내 하드코딩된 텍스트를 `stringResource`로 변경 - `NavTab`의 `label` 속성 타입을 `String`에서 `@StringRes Int`로 변경하여 리소스 ID를 사용하도록 수정 - `BottomNavBar`에서 변경된 `NavTab` 라벨을 처리할 수 있도록 `stringResource` 적용 - `core/designsystem` 및 `app` 모듈의 `strings.xml`에 관련 문자열 정의 추가 --- .../presentation/navigation/BottomNavBar.kt | 5 +++-- .../hackathon/presentation/navigation/NavTab.kt | 16 +++++++++------- app/src/main/res/values/strings.xml | 5 +++++ .../designsystem/component/CombinationCard.kt | 6 ++++-- .../core/designsystem/component/SearchBar.kt | 8 +++++--- .../designsystem/src/main/res/values/strings.xml | 6 ++++++ 6 files changed, 32 insertions(+), 14 deletions(-) create mode 100644 core/designsystem/src/main/res/values/strings.xml diff --git a/app/src/main/java/com/example/hackathon/presentation/navigation/BottomNavBar.kt b/app/src/main/java/com/example/hackathon/presentation/navigation/BottomNavBar.kt index b197f44..4c76fe3 100644 --- a/app/src/main/java/com/example/hackathon/presentation/navigation/BottomNavBar.kt +++ b/app/src/main/java/com/example/hackathon/presentation/navigation/BottomNavBar.kt @@ -16,6 +16,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.hackathon.core.designsystem.theme.Gray400 @@ -71,7 +72,7 @@ fun BottomNavBar( ) { Icon( painter = painterResource(id = tab.icon), - contentDescription = tab.label, + contentDescription = stringResource(tab.label), tint = if (isSelected) { HackathonTheme.colors.black @@ -80,7 +81,7 @@ fun BottomNavBar( } ) Text( - text = tab.label, + text = stringResource(tab.label), fontSize = 12.sp, color = if (isSelected) { diff --git a/app/src/main/java/com/example/hackathon/presentation/navigation/NavTab.kt b/app/src/main/java/com/example/hackathon/presentation/navigation/NavTab.kt index 08b03b0..01086f2 100644 --- a/app/src/main/java/com/example/hackathon/presentation/navigation/NavTab.kt +++ b/app/src/main/java/com/example/hackathon/presentation/navigation/NavTab.kt @@ -1,18 +1,20 @@ package com.example.hackathon.presentation.navigation -import com.example.hackathon.core.designsystem.R +import androidx.annotation.StringRes +import com.example.hackathon.R +import com.example.hackathon.core.designsystem.R as DesignSystemR import com.example.hackathon.presentation.route.Route -enum class NavTab(val route: String, val label: String, val icon: Int) { - Home(Route.Home.route, label = "홈", icon = R.drawable.ic_home), +enum class NavTab(val route: String, @param:StringRes val label: Int, val icon: Int) { + Home(Route.Home.route, label = R.string.nav_home, icon = DesignSystemR.drawable.ic_home), Create( route = Route.Create.route, - label = "작성", - icon = R.drawable.ic_add + label = R.string.nav_create, + icon = DesignSystemR.drawable.ic_add ), My( route = Route.My.route, - label = "마이", - icon = R.drawable.ic_my + label = R.string.nav_my, + icon = DesignSystemR.drawable.ic_my ) } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b671eb8..565bbb6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,8 @@ Hackathon + + + 홈 + 작성 + 마이 \ No newline at end of file diff --git a/core/designsystem/src/main/java/com/example/hackathon/core/designsystem/component/CombinationCard.kt b/core/designsystem/src/main/java/com/example/hackathon/core/designsystem/component/CombinationCard.kt index 5b2c7c3..51b94f3 100644 --- a/core/designsystem/src/main/java/com/example/hackathon/core/designsystem/component/CombinationCard.kt +++ b/core/designsystem/src/main/java/com/example/hackathon/core/designsystem/component/CombinationCard.kt @@ -30,10 +30,12 @@ import androidx.compose.ui.graphics.Paint import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import coil3.compose.AsyncImage +import com.example.hackathon.core.designsystem.R import com.example.hackathon.core.designsystem.icon.HackathonIcons import com.example.hackathon.core.designsystem.theme.Gray50 import com.example.hackathon.core.designsystem.theme.Gray700 @@ -140,7 +142,7 @@ fun CombinationCard( contentAlignment = Alignment.Center ) { Text( - text = "이미지 없음", + text = stringResource(R.string.designsystem_no_image), style = HackathonTheme.typography.Body_medium, color = Gray700.copy(alpha = 0.5f) ) @@ -246,7 +248,7 @@ fun CombinationCard( } else { HackathonIcons.FavoriteBorder }, - contentDescription = "좋아요", + contentDescription = stringResource(R.string.designsystem_like), tint = Primary, modifier = Modifier.size(18.dp) ) diff --git a/core/designsystem/src/main/java/com/example/hackathon/core/designsystem/component/SearchBar.kt b/core/designsystem/src/main/java/com/example/hackathon/core/designsystem/component/SearchBar.kt index 4de1c38..61136d3 100644 --- a/core/designsystem/src/main/java/com/example/hackathon/core/designsystem/component/SearchBar.kt +++ b/core/designsystem/src/main/java/com/example/hackathon/core/designsystem/component/SearchBar.kt @@ -2,19 +2,21 @@ package com.example.hackathon.core.designsystem.component import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape -import com.example.hackathon.core.designsystem.icon.HackathonIcons import androidx.compose.material3.* import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import com.example.hackathon.core.designsystem.R +import com.example.hackathon.core.designsystem.icon.HackathonIcons @Composable fun SearchBar( query: String, onQueryChange: (String) -> Unit, modifier: Modifier = Modifier, - placeholder: String = "검색어를 입력하세요" + placeholder: String = stringResource(R.string.designsystem_search_hint) ) { OutlinedTextField( value = query, @@ -25,7 +27,7 @@ fun SearchBar( leadingIcon = { Icon( imageVector = HackathonIcons.Search, - contentDescription = "검색" + contentDescription = stringResource(R.string.designsystem_search) ) }, singleLine = true, diff --git a/core/designsystem/src/main/res/values/strings.xml b/core/designsystem/src/main/res/values/strings.xml new file mode 100644 index 0000000..6d5c8c1 --- /dev/null +++ b/core/designsystem/src/main/res/values/strings.xml @@ -0,0 +1,6 @@ + + 검색어를 입력하세요 + 검색 + 이미지 없음 + 좋아요 +