From 26e715372fbd1e64c911f668602590573ed937c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EC=A2=85=EC=88=98?= Date: Sun, 30 Aug 2026 23:54:37 +0900 Subject: [PATCH] =?UTF-8?q?-=20=EC=84=9C=EC=9A=B8=EC=8B=9C=20=EB=A1=9C?= =?UTF-8?q?=EA=B3=A0=20=EC=82=AC=EC=9D=B4=EC=A6=88=20=EC=A1=B0=EC=A0=95=20?= =?UTF-8?q?-=20=EC=8B=9D=EB=8B=B9=20=EC=9C=84=EC=B9=98=20=EB=8B=A4?= =?UTF-8?q?=EA=B5=AD=EC=96=B4=20=EB=B0=98=EC=98=81=20-=20=EC=B0=A9?= =?UTF-8?q?=ED=95=9C=EA=B0=80=EA=B2=A9=20=EA=B8=B0=EB=8A=A5=20=EB=8B=A4?= =?UTF-8?q?=EA=B5=AD=EC=96=B4=20=EB=B0=98=EC=98=81=20-=20=ED=83=AD=20?= =?UTF-8?q?=EB=B3=84=20=ED=97=A4=EB=8D=94=20=ED=8C=A8=EB=94=A9=20=EC=9D=BC?= =?UTF-8?q?=EC=B9=98=20-=20=EC=B0=9C=20=ED=95=98=EB=8B=A8=20=EB=A9=94?= =?UTF-8?q?=EB=89=B4=20=EC=A3=BC=EC=84=9D=EC=B2=98=EB=A6=AC=20-=20?= =?UTF-8?q?=ED=97=A4=EB=8D=94=20=EB=86=92=EC=9D=B4=20=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/presentation/MainActivity.kt | 12 +- .../cafeteria/info/InfoBottomSheetFragment.kt | 7 +- .../cafeteria/menu/MenuAdapter.kt | 3 +- .../presentation/favorite/FavoriteScreen.kt | 54 +++++-- .../goodprice/GoodPriceMapScreen.kt | 5 +- .../goodprice/component/GoodPriceFilterRow.kt | 3 +- .../component/GoodPriceStoreBottomSheet.kt | 3 +- .../android/presentation/login/LoginScreen.kt | 2 +- .../presentation/map/MapFragmentView.kt | 149 +++++++++--------- .../map/component/MapRestaurantBottomSheet.kt | 2 +- .../main/res/menu/menu_bottom_navigation.xml | 12 +- app/src/main/res/values-en/strings.xml | 86 +++++++--- app/src/main/res/values-ja/strings.xml | 86 +++++++--- app/src/main/res/values-vi/strings.xml | 84 +++++++--- app/src/main/res/values/strings.xml | 32 ++++ .../eatssu/common/enums/GoodPriceCategory.kt | 23 ++- .../com/eatssu/common/enums/Restaurant.kt | 69 +++++++- .../java/com/eatssu/common/enums/StoreType.kt | 16 +- .../common/src/main/res/values-en/strings.xml | 50 ++++++ .../common/src/main/res/values-ja/strings.xml | 50 ++++++ .../common/src/main/res/values-vi/strings.xml | 50 ++++++ core/common/src/main/res/values/strings.xml | 50 ++++++ .../design_system/component/EatSsuTopBar.kt | 12 +- language.csv | 115 +++++++++++++- 24 files changed, 787 insertions(+), 188 deletions(-) diff --git a/app/src/main/java/com/eatssu/android/presentation/MainActivity.kt b/app/src/main/java/com/eatssu/android/presentation/MainActivity.kt index 2e7239f24..8ac118af5 100644 --- a/app/src/main/java/com/eatssu/android/presentation/MainActivity.kt +++ b/app/src/main/java/com/eatssu/android/presentation/MainActivity.kt @@ -103,10 +103,11 @@ class MainActivity : BaseActivity( // false // } - R.id.favorite_menu -> { - navController.navigate(R.id.favoriteFragment) - true - } + //TODO 찜 기능 완성 시 +// R.id.favorite_menu -> { +// navController.navigate(R.id.favoriteFragment) +// true +// } R.id.mypage_menu -> { navController.navigate(R.id.myPageFragment) @@ -122,8 +123,7 @@ class MainActivity : BaseActivity( navController.addOnDestinationChangedListener { _, destination, _ -> val menuItemId = when (destination.id) { R.id.cafeteria_menu -> R.id.cafeteria_menu - R.id.mapFragment, R.id.favoriteDetailFragment -> R.id.map_menu - R.id.favoriteFragment -> R.id.favorite_menu + R.id.mapFragment, R.id.favoriteDetailFragment, R.id.favoriteFragment -> R.id.map_menu R.id.myPageFragment -> R.id.mypage_menu else -> null } diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/info/InfoBottomSheetFragment.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/info/InfoBottomSheetFragment.kt index 8db67db91..e5fbbe341 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/info/InfoBottomSheetFragment.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/info/InfoBottomSheetFragment.kt @@ -48,16 +48,15 @@ class InfoBottomSheetFragment : BottomSheetDialogFragment() { analyticsTracker.track(CafeteriaAnalyticsEvent.RestaurantInfoClicked(restaurantType)) binding.tvName.text = getString(restaurantType.displayNameResId) + binding.tvLocation.text = getString(restaurantType.locationResId) + binding.tvTime.text = getString(restaurantType.timeResId) + binding.tvEtc.text = getString(restaurantType.etcResId) viewLifecycleOwner.lifecycleScope.launch { val restaurantInfo = infoViewModel.getRestaurantInfo(restaurantType) val binding = _binding ?: return@launch restaurantInfo?.let { - binding.tvLocation.text = it.location - binding.tvTime.text = it.time - binding.tvEtc.text = it.etc - Glide.with(binding.ivCafeteriaPhoto) .load(it.image) .into(binding.ivCafeteriaPhoto) diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/menu/MenuAdapter.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/menu/MenuAdapter.kt index 546f234dc..651a44cdb 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/menu/MenuAdapter.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/menu/MenuAdapter.kt @@ -42,7 +42,8 @@ class MenuAdapter( } binding.tvCafeteria.text = binding.root.context.getString(sectionModel.cafeteria.displayNameResId) - binding.tvCafeteriaLocation.text = sectionModel.cafeteriaLocation + binding.tvCafeteriaLocation.text = + binding.root.context.getString(sectionModel.cafeteria.locationResId) binding.rvMenu.apply { setHasFixedSize(true) diff --git a/app/src/main/java/com/eatssu/android/presentation/favorite/FavoriteScreen.kt b/app/src/main/java/com/eatssu/android/presentation/favorite/FavoriteScreen.kt index 9b9958b3c..1b28e3183 100644 --- a/app/src/main/java/com/eatssu/android/presentation/favorite/FavoriteScreen.kt +++ b/app/src/main/java/com/eatssu/android/presentation/favorite/FavoriteScreen.kt @@ -19,6 +19,7 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth @@ -36,6 +37,7 @@ import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -59,6 +61,7 @@ import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.IntOffset @@ -74,7 +77,6 @@ import com.eatssu.common.enums.StoreType import com.eatssu.design_system.component.DelayedLoadingIndicator import com.eatssu.design_system.component.EatSsuSnackbar import com.eatssu.design_system.component.EatSsuSnackbarType -import com.eatssu.design_system.component.EatSsuTopBar import com.eatssu.design_system.theme.EatssuTheme import com.eatssu.design_system.theme.Error import com.eatssu.design_system.theme.Gray200 @@ -82,6 +84,7 @@ import com.eatssu.design_system.theme.Gray300 import com.eatssu.design_system.theme.Gray400 import com.eatssu.design_system.theme.Gray500 import com.eatssu.design_system.theme.Gray600 +import com.eatssu.design_system.theme.Gray700 import com.eatssu.design_system.theme.Primary import com.eatssu.design_system.theme.Secondary import com.eatssu.design_system.theme.White @@ -141,20 +144,47 @@ internal fun FavoriteScreen( TrackScreenViewEvent(ScreenId.MAP_FAVORITE) Scaffold( + contentWindowInsets = WindowInsets(0.dp), topBar = { - EatSsuTopBar( - title = stringResource(R.string.favorite_title), - onBack = { + Column( + modifier = Modifier + .fillMaxWidth() + .background(White) + ) { + Box( + modifier = Modifier + .fillMaxWidth() + .padding(top = 17.dp) + .height(56.dp), + contentAlignment = Alignment.Center, + ) { + Text( + text = stringResource(R.string.favorite_title), + style = EatssuTheme.typography.subtitle1, + color = Gray700, + textAlign = TextAlign.Center, + ) + if (isEditMode) { - isEditMode = false - selectedPartnershipIds = emptySet() - } else { - onBackToMap() + IconButton( + onClick = { + isEditMode = false + selectedPartnershipIds = emptySet() + }, + modifier = Modifier + .align(Alignment.CenterStart) + .padding(start = 12.dp), + ) { + Icon( + painter = painterResource(id = R.drawable.ic_arrow_left), + contentDescription = "뒤로가기", + tint = Gray500, + ) + } } - }, - ) - }, - modifier = Modifier.padding(top = 17.dp) + } + } + } ) { innerPadding -> Box( modifier = Modifier diff --git a/app/src/main/java/com/eatssu/android/presentation/goodprice/GoodPriceMapScreen.kt b/app/src/main/java/com/eatssu/android/presentation/goodprice/GoodPriceMapScreen.kt index 6606278aa..a9c5d505e 100644 --- a/app/src/main/java/com/eatssu/android/presentation/goodprice/GoodPriceMapScreen.kt +++ b/app/src/main/java/com/eatssu/android/presentation/goodprice/GoodPriceMapScreen.kt @@ -314,8 +314,9 @@ fun GoodPriceMapScreen( }, // 개별 마커 클릭 시 업소 상세 바텀시트 호출 onClickLeaf = { leaf, _ -> - val store = leaf.tag as? GoodPriceStore ?: return@Clustering true - onStoreClick(store) + (leaf.tag as? GoodPriceStore)?.let { store -> + onStoreClick(store) + } true }, ) diff --git a/app/src/main/java/com/eatssu/android/presentation/goodprice/component/GoodPriceFilterRow.kt b/app/src/main/java/com/eatssu/android/presentation/goodprice/component/GoodPriceFilterRow.kt index e4bdb1e53..011ec877c 100644 --- a/app/src/main/java/com/eatssu/android/presentation/goodprice/component/GoodPriceFilterRow.kt +++ b/app/src/main/java/com/eatssu/android/presentation/goodprice/component/GoodPriceFilterRow.kt @@ -16,6 +16,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.eatssu.common.enums.GoodPriceCategory @@ -54,7 +55,7 @@ fun GoodPriceFilterRow( contentAlignment = Alignment.Center, ) { Text( - text = category.displayName, + text = stringResource(id = category.displayNameResId), // Body3 글꼴을 사용하며, 선택된 경우에만 Bold 처리 style = EatssuTheme.typography.body3.copy( fontWeight = if (isSelected) FontWeight.Bold else FontWeight.Normal, diff --git a/app/src/main/java/com/eatssu/android/presentation/goodprice/component/GoodPriceStoreBottomSheet.kt b/app/src/main/java/com/eatssu/android/presentation/goodprice/component/GoodPriceStoreBottomSheet.kt index 2d42abccc..83ea10bae 100644 --- a/app/src/main/java/com/eatssu/android/presentation/goodprice/component/GoodPriceStoreBottomSheet.kt +++ b/app/src/main/java/com/eatssu/android/presentation/goodprice/component/GoodPriceStoreBottomSheet.kt @@ -21,6 +21,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import coil.compose.AsyncImage import com.eatssu.android.R @@ -99,7 +100,7 @@ fun GoodPriceStoreBottomSheet( modifier = Modifier.size(16.dp), ) Text( - text = storeDetail.category.displayName, + text = stringResource(id = storeDetail.category.displayNameResId), style = EatssuTheme.typography.body2, color = Gray600, ) diff --git a/app/src/main/java/com/eatssu/android/presentation/login/LoginScreen.kt b/app/src/main/java/com/eatssu/android/presentation/login/LoginScreen.kt index 12e8b2c58..ece83cbe4 100644 --- a/app/src/main/java/com/eatssu/android/presentation/login/LoginScreen.kt +++ b/app/src/main/java/com/eatssu/android/presentation/login/LoginScreen.kt @@ -166,7 +166,7 @@ fun LoginScreen( ) Text( - text = "내 주변 착한 한 끼를 찾아보세요", + text = stringResource(id = R.string.btn_browse_good_price_stores_subtitle), style = EatssuTheme.typography.caption2, color = Black, ) diff --git a/app/src/main/java/com/eatssu/android/presentation/map/MapFragmentView.kt b/app/src/main/java/com/eatssu/android/presentation/map/MapFragmentView.kt index d752317b7..fe2180344 100644 --- a/app/src/main/java/com/eatssu/android/presentation/map/MapFragmentView.kt +++ b/app/src/main/java/com/eatssu/android/presentation/map/MapFragmentView.kt @@ -18,23 +18,23 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.CenterAlignedTopAppBar import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Scaffold import androidx.compose.material3.SheetState -import androidx.compose.material3.Surface import androidx.compose.material3.Tab import androidx.compose.material3.TabRow import androidx.compose.material3.TabRowDefaults import androidx.compose.material3.TabRowDefaults.tabIndicatorOffset import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect @@ -53,6 +53,7 @@ import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.core.content.ContextCompat @@ -82,10 +83,10 @@ import com.eatssu.common.analytics.MapAnalyticsEvent import com.eatssu.common.enums.ScreenId import com.eatssu.common.enums.StoreType import com.eatssu.common.enums.ToastType -import com.eatssu.design_system.theme.Black import com.eatssu.design_system.theme.EatssuTheme import com.eatssu.design_system.theme.Gray300 import com.eatssu.design_system.theme.Gray500 +import com.eatssu.design_system.theme.Gray700 import com.eatssu.design_system.theme.Primary import com.eatssu.design_system.theme.White import com.naver.maps.geometry.LatLng @@ -249,22 +250,27 @@ fun MapRoute( } Scaffold( + contentWindowInsets = WindowInsets(0.dp), topBar = { - Column(modifier = Modifier.background(White)) { - // 상단 타이틀: 지도 - CenterAlignedTopAppBar( - title = { - Text( - text = stringResource(R.string.nav_map), - style = EatssuTheme.typography.subtitle1, - color = Black, - ) - }, - colors = TopAppBarDefaults.centerAlignedTopAppBarColors( - containerColor = White, - ), - windowInsets = TopAppBarDefaults.windowInsets, - ) + Column( + modifier = Modifier + .fillMaxWidth() + .background(White) + ) { + Box( + modifier = Modifier + .fillMaxWidth() + .padding(top = 17.dp) + .height(56.dp), + contentAlignment = Alignment.Center, + ) { + Text( + text = stringResource(R.string.nav_map), + style = EatssuTheme.typography.subtitle1, + color = Gray700, + textAlign = TextAlign.Center, + ) + } // 상단 탭: 학교 제휴 | 착한 가격 TabRow( @@ -518,38 +524,39 @@ internal fun MapScreen( } }, leafContent = { info -> - val partnership = info.tag as? Partnership ?: return@Clustering - - Row( - modifier = Modifier - .background(Color.White, RoundedCornerShape(13.dp)) - .border(1.dp, Gray300, RoundedCornerShape(13.dp)) - .padding( - start = 3.dp, - end = 7.dp, - top = 2.5.dp, - bottom = 2.5.dp, - ), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = spacedBy(3.dp), - ) { - val iconRes = when (partnership.restaurantType) { - StoreType.CAFE -> R.drawable.ic_map_marker_cafe - StoreType.PUB -> R.drawable.ic_map_marker_pub - else -> R.drawable.ic_map_marker_restaurant - } + val partnership = info.tag as? Partnership + if (partnership != null) { + Row( + modifier = Modifier + .background(Color.White, RoundedCornerShape(13.dp)) + .border(1.dp, Gray300, RoundedCornerShape(13.dp)) + .padding( + start = 3.dp, + end = 7.dp, + top = 2.5.dp, + bottom = 2.5.dp, + ), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = spacedBy(3.dp), + ) { + val iconRes = when (partnership.restaurantType) { + StoreType.CAFE -> R.drawable.ic_map_marker_cafe + StoreType.PUB -> R.drawable.ic_map_marker_pub + else -> R.drawable.ic_map_marker_restaurant + } - Image( - painter = painterResource(id = iconRes), - contentDescription = null, - modifier = Modifier.size(20.dp), - ) + Image( + painter = painterResource(id = iconRes), + contentDescription = null, + modifier = Modifier.size(20.dp), + ) - Text( - text = partnership.storeName, - style = EatssuTheme.typography.caption3, - color = Color.Black, - ) + Text( + text = partnership.storeName, + style = EatssuTheme.typography.caption3, + color = Color.Black, + ) + } } }, onClickCluster = { info, _ -> @@ -585,28 +592,28 @@ internal fun MapScreen( departmentName = departmentName.toString(), filters = mapState.availableFilters, ) - - Surface( - modifier = Modifier - .align(Alignment.BottomEnd) - .padding( - end = 18.dp, - bottom = dimensionResource(R.dimen.bottom_nav_height) + 18.dp, - ) - .size(48.dp), - shape = CircleShape, - color = Color.White, - shadowElevation = 4.dp, - onClick = onFavoriteClick, - ) { - Box(contentAlignment = Alignment.Center) { - Image( - painter = painterResource(R.drawable.ic_like_selected), - contentDescription = stringResource(R.string.favorite_open), - modifier = Modifier.size(24.dp), - ) - } - } +// TODO 찜 기능 완료 시 +// Surface( +// modifier = Modifier +// .align(Alignment.BottomEnd) +// .padding( +// end = 18.dp, +// bottom = dimensionResource(R.dimen.bottom_nav_height) + 18.dp, +// ) +// .size(48.dp), +// shape = CircleShape, +// color = Color.White, +// shadowElevation = 4.dp, +// onClick = onFavoriteClick, +// ) { +// Box(contentAlignment = Alignment.Center) { +// Image( +// painter = painterResource(R.drawable.ic_like_selected), +// contentDescription = stringResource(R.string.favorite_open), +// modifier = Modifier.size(24.dp), +// ) +// } +// } } } diff --git a/app/src/main/java/com/eatssu/android/presentation/map/component/MapRestaurantBottomSheet.kt b/app/src/main/java/com/eatssu/android/presentation/map/component/MapRestaurantBottomSheet.kt index 276de0830..3a2a89083 100644 --- a/app/src/main/java/com/eatssu/android/presentation/map/component/MapRestaurantBottomSheet.kt +++ b/app/src/main/java/com/eatssu/android/presentation/map/component/MapRestaurantBottomSheet.kt @@ -154,7 +154,7 @@ fun MapRestaurantBottomSheet( Spacer(modifier = Modifier.width(4.dp)) Text( - text = storeType.value, + text = stringResource(id = storeType.displayNameResId), style = EatssuTheme.typography.caption3, color = Gray400, ) diff --git a/app/src/main/res/menu/menu_bottom_navigation.xml b/app/src/main/res/menu/menu_bottom_navigation.xml index 6000e8239..5fc67b5a7 100644 --- a/app/src/main/res/menu/menu_bottom_navigation.xml +++ b/app/src/main/res/menu/menu_bottom_navigation.xml @@ -18,11 +18,13 @@ - + + + + + + + Report Widget Settings Partner Map + Good Price Stores Map Force Update + Campus Partners + Good Price Cafeteria - Partner Map + Map Lucky Game My Page Back @@ -134,6 +137,9 @@ Could not load open-source libraries. Your account has been deleted. Failed to delete your account. + Failed to load store information. + Explore Good Price Stores + Find an affordable meal near you @@ -149,19 +155,19 @@ Review Settings An error occurred. Show translation - Translate + 번역하기 Show original Translating... - Translated from Korean by AI - Translation unavailable - AI translations may not always be accurate. - AI translation is temporarily unavailable.\nPlease try again later. - Translation information - Profile image - Review menu - Review image + AI가 한국어에서 번역함 + 번역을 사용할 수 없음 + AI 번역은 항상 정확하지 않을 수 있습니다. + 현재 AI 번역을 사용할 수 없습니다.\n나중에 다시 시도해 주세요. + 번역 안내 + 프로필 이미지 + 리뷰 메뉴 + 리뷰 이미지 Failed to translate the review. - The translation is the same as the original. + 번역 결과가 원문과 동일합니다. Write a Review @@ -208,9 +214,9 @@ Log Out Delete Account App Version - Notifications and Activity - Service Info - etc. + 알림 및 활동 + 서비스 정보 + 기타 Push Notification Settings We\'ll send you a notification every day at 11:00 AM. @@ -265,7 +271,7 @@ Eat at - Soongsil + From Soongsil to all of Seoul @@ -275,8 +281,8 @@ Privacy Policy Privacy Policy Terms of Service - Terms and Policies - Creators + 약관 및 정책 + Credits Open-Source Libraries @@ -304,7 +310,7 @@ College/Department information unavailable KakaoMap Naver Map - Unable to open the map. Please try again later. + Failed to open the map. Please try again in a moment. @@ -313,13 +319,53 @@ Notes Hours Favorite Partners + + 메뉴 찜 + 제휴 찜 + 전체 + 아직 찜한 제휴가 없어요. + 관심 있는 제휴를 찜하고 빠르게 확인해 보세요! + 제휴 찜 열기 + 제휴 상세보기 + 편집 + 전체 선택 + 삭제 + 삭제 %d + 찜한 제휴에 추가했어요. + 찜한 제휴에서 삭제했어요. + 취소하기 My Partners - Festival + 축제 All Department - EAT-SSU Instagram + EAT-SSU 인스타그램 바로가기 + + + + + Student Union Building, 3F + 08:00~09:00(1,000-Won Breakfast)\n11:20~14:00(Lunch)\n14:00~17:00(Open Space Hours) + 3 Food Stations\nHot Pot(Ttukbaegi-style Meals), Rice Bowls, Western food\nClosed on weekends + Shinyang Hall, 2F + Weekdays\n11:20~14:00(Lunch)\n17:00~18:30(Dinner)\n\nWeekends\n11:20~13:30(Lunch) + 2 Food Stations\nStandard Meals, Healthy Meals + Residence Hall, B1 + Weekdays\n11:20~13:50(Lunch)\n17:00~18:30(Dinner)\n\nWeekends\n11:20~13:30(Lunch)\n17:00~18:20(Dinner) + Breakfast Not Available + Jeonsan Hall, B1 + 11:30~14:00(Lunch)\n14:00~17:00(Open Space Hours) + Closed on weekends + Student Union Building, 3F + 11:00~15:30(Lunch) + Bunsik(Korean Snacks), Old-school Lunch Box, Cup Rice, etc.\nClosed on weekends + Student Union Building, 2F + Closed + Coming Soon + Student Union Building, 2F + + diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index c39ec1835..a3d4c0ee2 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -29,7 +29,10 @@ 通報 ウィジェット設定 提携マップ + お手頃価格のお店マップ 強制アップデート + 学校提携 + お手頃価格 @@ -134,6 +137,9 @@ オープンソースライブラリを読み込めませんでした。 アカウントを削除しました。 アカウントの削除に失敗しました。 + 店舗情報の読み込みに失敗しました。 + お手頃価格のお店を見る + 近くでお手頃な一食を探してみましょう @@ -149,19 +155,19 @@ レビュー設定 エラーが発生しました。 翻訳を見る - 翻訳する + 번역하기 原文を見る 翻訳中... - AIによる韓国語からの翻訳 - 翻訳を利用できません - AI翻訳は必ずしも正確ではない場合があります。 - AI翻訳は一時的に利用できません。\n後でもう一度お試しください。 - 翻訳について - プロフィール画像 - レビューメニュー - レビュー画像 + AI가 한국어에서 번역함 + 번역을 사용할 수 없음 + AI 번역은 항상 정확하지 않을 수 있습니다. + 현재 AI 번역을 사용할 수 없습니다.\n나중에 다시 시도해 주세요. + 번역 안내 + 프로필 이미지 + 리뷰 메뉴 + 리뷰 이미지 レビューの翻訳に失敗しました。 - 翻訳結果は原文と同じです。 + 번역 결과가 원문과 동일합니다. レビューを書く @@ -208,9 +214,9 @@ ログアウト アカウント削除 アプリバージョン - Notifications and Activity - Service Info - など + 알림 및 활동 + 서비스 정보 + 기타 プッシュ通知設定 毎日午前11時に通知をお送りします。 @@ -265,7 +271,7 @@ 崇実大で - 食べよう + ソウルの街中へ @@ -275,7 +281,7 @@ プライバシーポリシー プライバシーポリシー 利用規約 - 規約と方針 + 약관 및 정책 開発者 オープンソースライブラリ @@ -302,9 +308,9 @@ 学科を入力 学科を入力して\n自分だけの提携特典を確認しましょう! 学部・学科情報を確認できません - カカオマップ - NAVERマップ - 地図を開けません。しばらくしてからもう一度お試しください。 + KakaoMap + Naver Map + 地図を開けませんでした。しばらくしてからもう一度お試しください。 @@ -313,13 +319,53 @@ 備考 営業時間 お気に入りの提携 + + 메뉴 찜 + 제휴 찜 + 전체 + 아직 찜한 제휴가 없어요. + 관심 있는 제휴를 찜하고 빠르게 확인해 보세요! + 제휴 찜 열기 + 제휴 상세보기 + 편집 + 전체 선택 + 삭제 + 삭제 %d + 찜한 제휴에 추가했어요. + 찜한 제휴에서 삭제했어요. + 취소하기 自分の提携 - 祭り + 축제 すべて 学科 - EAT-SSU Instagram + EAT-SSU 인스타그램 바로가기 + + + + + 学生会館 3階 + 08:00~09:00(千ウォン朝食)\n11:20~14:00(昼食)\n14:00~17:00(スペース開放) + 3つのコーナーを運営\nトゥッペギ料理、丼もの、洋食\n週末休業 + 信陽館 2階 + 平日\n11:20~14:00(昼食)\n17:00~18:30(夕食)\n\n週末\n11:20~13:30(昼食) + 2つのコーナーを運営\n一般食、ヘルシーメニュー + レジデンスホール 地下1階 + 平日\n11:20~13:50(昼食)\n17:00~18:30(夕食)\n\n週末\n11:20~13:30(昼食)\n17:00~18:20(夕食) + 朝食の提供なし + 電算館 地下1階 + 11:30~14:00(昼食)\n14:00~17:00(スペース開放) + 週末休業 + 学生会館 3階 + 11:00~15:30(昼食) + 粉食類、昔ながらのお弁当、カップご飯など\n週末休業 + 学生会館 2階 + 休業 + 準備中 + 学生会館 2階 + + diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 8ad3f17b0..9c2c125b7 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -29,7 +29,10 @@ Báo cáo Cài đặt widget Bản đồ đối tác + Bản đồ cửa hàng giá tốt Bắt buộc cập nhật + Đối tác trường + Giá tốt @@ -134,6 +137,9 @@ Không thể tải thư viện mã nguồn mở. Tài khoản của bạn đã được xóa. Không thể xóa tài khoản. + Không thể tải thông tin cửa hàng. + Khám phá cửa hàng giá tốt + Tìm một bữa ăn hợp túi tiền gần bạn @@ -149,19 +155,19 @@ Cài đặt đánh giá Đã xảy ra lỗi. Xem bản dịch - Dịch + 번역하기 Xem bản gốc Đang dịch... - Được AI dịch từ tiếng Hàn - Không thể dịch - Bản dịch AI không phải lúc nào cũng chính xác. - Tính năng dịch AI tạm thời không khả dụng.\nVui lòng thử lại sau. - Thông tin bản dịch - Ảnh hồ sơ - Menu đánh giá - Ảnh đánh giá + AI가 한국어에서 번역함 + 번역을 사용할 수 없음 + AI 번역은 항상 정확하지 않을 수 있습니다. + 현재 AI 번역을 사용할 수 없습니다.\n나중에 다시 시도해 주세요. + 번역 안내 + 프로필 이미지 + 리뷰 메뉴 + 리뷰 이미지 Không thể dịch đánh giá. - Bản dịch giống với nội dung gốc. + 번역 결과가 원문과 동일합니다. Viết đánh giá @@ -208,9 +214,9 @@ Đăng xuất Xóa tài khoản Phiên bản ứng dụng - Notifications and Activity - Service Info - và vân vân + 알림 및 활동 + 서비스 정보 + 기타 Cài đặt thông báo đẩy Bạn sẽ nhận được thông báo mỗi ngày lúc 11:00. @@ -265,7 +271,7 @@ Ăn tại - Soongsil + Khắp mọi nơi ở Seoul @@ -275,7 +281,7 @@ Chính sách quyền riêng tư Chính sách quyền riêng tư Điều khoản dịch vụ - Điều khoản và Chính sách + 약관 및 정책 Thông tin đội ngũ Thư viện mã nguồn mở @@ -303,8 +309,8 @@ Nhập ngành học của bạn\nvà xem các ưu đãi dành riêng cho bạn! Không có thông tin khoa/ngành KakaoMap - Bản đồ Naver - Không thể mở bản đồ. Vui lòng thử lại sau. + Naver Map + Không thể mở bản đồ. Vui lòng thử lại sau giây lát. @@ -313,13 +319,53 @@ Ghi chú Giờ mở cửa Ưu đãi yêu thích + + 메뉴 찜 + 제휴 찜 + 전체 + 아직 찜한 제휴가 없어요. + 관심 있는 제휴를 찜하고 빠르게 확인해 보세요! + 제휴 찜 열기 + 제휴 상세보기 + 편집 + 전체 선택 + 삭제 + 삭제 %d + 찜한 제휴에 추가했어요. + 찜한 제휴에서 삭제했어요. + 취소하기 Ưu đãi của tôi - các hoạt động lễ hội + 축제 Tất cả Ngành/Khoa - EAT-SSU Instagram + EAT-SSU 인스타그램 바로가기 + + + + + Tòa Student Union, tầng 3 + 08:00~09:00(Bữa sáng 1.000 won)\n11:20~14:00(Bữa trưa)\n14:00~17:00(Giờ mở không gian) + 3 quầy phục vụ\nMón kiểu ttukbaegi, cơm tô, món Âu\nĐóng cửa cuối tuần + Tòa Shinyang, tầng 2 + Ngày thường\n11:20~14:00(Bữa trưa)\n17:00~18:30(Bữa tối)\n\nCuối tuần\n11:20~13:30(Bữa trưa) + 2 quầy phục vụ\nSuất ăn thường, suất ăn lành mạnh + Residence Hall, tầng B1 + Ngày thường\n11:20~13:50(Bữa trưa)\n17:00~18:30(Bữa tối)\n\nCuối tuần\n11:20~13:30(Bữa trưa)\n17:00~18:20(Bữa tối) + Không phục vụ bữa sáng + Tòa Jeonsan, tầng B1 + 11:30~14:00(Bữa trưa)\n14:00~17:00(Giờ mở không gian) + Đóng cửa cuối tuần + Tòa Student Union, tầng 3 + 11:00~15:30(Bữa trưa) + Bunsik(đồ ăn vặt Hàn Quốc), cơm hộp kiểu xưa, cơm ly, v.v.\nĐóng cửa cuối tuần + Tòa Student Union, tầng 2 + Nghỉ + Đang chuẩn bị + Tòa Student Union, tầng 2 + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 23fd6aecd..710c50d1f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -136,6 +136,7 @@ 회원탈퇴에 실패했어요. 업소 정보를 불러오지 못했어요. 착한가격업소 둘러보기 + 내 주변 착한 한 끼를 찾아보세요 @@ -350,4 +351,35 @@ https://www.instagram.com/p/DVu1n6SEs5b/ https://eat-ssu.notion.site/1d2eeef75a1681ae800cf6ffa6faa37d?pvs=74 https://eat-ssu.notion.site/1d2eeef75a16814db1e5c5abaf40cf6a?pvs=73 + + + + + 학생회관 3층 + 08:00~09:00(천원의아침밥)\n11:20~14:00(점심)\n14:00~17:00(공간 개방) + 3개 코너 운영\n뚝배기, 덮밥, 양식\n주말 휴무 + + 신양관 2층 + 평일\n11:20~14:00(점심)\n17:00~18:30(저녁)\n\n주말\n11:20~13:30(점심) + 2개 코너 운영\n일반식, 웰빙코너 + + 레지던스홀 지하 1층 + 평일\n11:20~13:50(점심)\n17:00~18:30(저녁)\n\n주말\n11:20~13:30(점심)\n17:00~18:20(저녁) + 조식 미운영 + + 전산관 지하 1층 + 11:30~14:00(점심)\n14:00~17:00(공간개방) + 주말 휴무 + + 학생회관 3층 + 11:00~15:30(점심) + 분식류, 옛날도시락, 컵밥 등\n주말 휴무 + + 학생회관 2층 + 휴무 + 준비 중 + + 학생회관 2층 + + diff --git a/core/common/src/main/java/com/eatssu/common/enums/GoodPriceCategory.kt b/core/common/src/main/java/com/eatssu/common/enums/GoodPriceCategory.kt index 501110468..4dc5e1409 100644 --- a/core/common/src/main/java/com/eatssu/common/enums/GoodPriceCategory.kt +++ b/core/common/src/main/java/com/eatssu/common/enums/GoodPriceCategory.kt @@ -1,20 +1,27 @@ package com.eatssu.common.enums +import androidx.annotation.StringRes +import com.eatssu.common.R +import com.eatssu.common.UiText + /** * 착한가격업소 업종 카테고리 Enum * 필터 순서 명세: 전체 / 한식 / 일식 / 양식 / 중식 / 베이커리 / 기타 순 */ enum class GoodPriceCategory( - val displayName: String, + @StringRes val displayNameResId: Int, val serverKey: String?, // 서버 쿼리 파라미터 값 (null인 경우 전체) ) { - ALL("전체", null), - KOREAN("한식", "KOREAN"), - JAPANESE("일식", "JAPANESE"), - WESTERN("양식", "WESTERN"), - CHINESE("중식", "CHINESE"), - BAKERY("베이커리", "BAKERY"), - ETC("기타", "ETC"); + ALL(R.string.category_good_price_all, null), + KOREAN(R.string.category_good_price_korean, "KOREAN"), + JAPANESE(R.string.category_good_price_japanese, "JAPANESE"), + WESTERN(R.string.category_good_price_western, "WESTERN"), + CHINESE(R.string.category_good_price_chinese, "CHINESE"), + BAKERY(R.string.category_good_price_bakery, "BAKERY"), + ETC(R.string.category_good_price_etc, "ETC"); + + /** ViewModel에서 Context 없이 사용하기 위한 UiText 변환 */ + fun toUiText(): UiText = UiText.StringResource(displayNameResId) companion object { // 서버 응답 문자열로부터 Category 매핑 diff --git a/core/common/src/main/java/com/eatssu/common/enums/Restaurant.kt b/core/common/src/main/java/com/eatssu/common/enums/Restaurant.kt index f5928d17d..6ac59c7ab 100644 --- a/core/common/src/main/java/com/eatssu/common/enums/Restaurant.kt +++ b/core/common/src/main/java/com/eatssu/common/enums/Restaurant.kt @@ -9,18 +9,73 @@ import kotlinx.serialization.Serializable enum class Restaurant( val value: String, @field:StringRes val displayNameResId: Int, + @field:StringRes val locationResId: Int, + @field:StringRes val timeResId: Int, + @field:StringRes val etcResId: Int, val menuType: MenuType ) { - HAKSIK("haksik", R.string.restaurant_haksik, MenuType.VARIABLE), - DODAM("dodam", R.string.restaurant_dodam, MenuType.VARIABLE), - DORMITORY("dormitory", R.string.restaurant_dormitory, MenuType.VARIABLE), - FACULTY("faculty", R.string.restaurant_faculty, MenuType.VARIABLE), - FOOD_COURT("food_court", R.string.restaurant_food_court, MenuType.FIXED), - SNACK_CORNER("snack_corner", R.string.restaurant_snack_corner, MenuType.FIXED), - THE_KITCHEN("the_kitchen", R.string.restaurant_the_kitchen, MenuType.FIXED); + HAKSIK( + "haksik", + R.string.restaurant_haksik, + R.string.cafeteria_student_location, + R.string.cafeteria_student_time, + R.string.cafeteria_student_etc, + MenuType.VARIABLE + ), + DODAM( + "dodam", + R.string.restaurant_dodam, + R.string.cafeteria_dodam_location, + R.string.cafeteria_dodam_time, + R.string.cafeteria_dodam_etc, + MenuType.VARIABLE + ), + DORMITORY( + "dormitory", + R.string.restaurant_dormitory, + R.string.cafeteria_dormitory_location, + R.string.cafeteria_dormitory_time, + R.string.cafeteria_dormitory_etc, + MenuType.VARIABLE + ), + FACULTY( + "faculty", + R.string.restaurant_faculty, + R.string.cafeteria_faculty_location, + R.string.cafeteria_faculty_time, + R.string.cafeteria_faculty_etc, + MenuType.VARIABLE + ), + FOOD_COURT( + "food_court", + R.string.restaurant_food_court, + R.string.cafeteria_food_court_location, + R.string.cafeteria_food_court_time, + R.string.cafeteria_food_court_etc, + MenuType.FIXED + ), + SNACK_CORNER( + "snack_corner", + R.string.restaurant_snack_corner, + R.string.cafeteria_snack_corner_location, + R.string.cafeteria_snack_corner_time, + R.string.cafeteria_snack_corner_etc, + MenuType.FIXED + ), + THE_KITCHEN( + "the_kitchen", + R.string.restaurant_the_kitchen, + R.string.cafeteria_the_kitchen_location, + R.string.cafeteria_the_kitchen_time, + R.string.cafeteria_the_kitchen_etc, + MenuType.FIXED + ); /** ViewModel에서 Context 없이 사용하기 위한 UiText 변환 */ fun toUiText(): UiText = UiText.StringResource(displayNameResId) + fun toLocationUiText(): UiText = UiText.StringResource(locationResId) + fun toTimeUiText(): UiText = UiText.StringResource(timeResId) + fun toEtcUiText(): UiText = UiText.StringResource(etcResId) companion object { diff --git a/core/common/src/main/java/com/eatssu/common/enums/StoreType.kt b/core/common/src/main/java/com/eatssu/common/enums/StoreType.kt index d35667d93..a2a3f7a55 100644 --- a/core/common/src/main/java/com/eatssu/common/enums/StoreType.kt +++ b/core/common/src/main/java/com/eatssu/common/enums/StoreType.kt @@ -1,10 +1,18 @@ package com.eatssu.common.enums +import androidx.annotation.StringRes +import com.eatssu.common.R +import com.eatssu.common.UiText import kotlinx.serialization.Serializable @Serializable -enum class StoreType(val value: String) { - CAFE("카페"), - RESTAURANT("음식점"), - PUB("주점"), +enum class StoreType( + val value: String, + @field:StringRes val displayNameResId: Int, +) { + CAFE("카페", R.string.category_school_partnership_cafe), + RESTAURANT("음식점", R.string.category_school_partnership_restaurant), + PUB("주점", R.string.category_school_partnership_pub); + + fun toUiText(): UiText = UiText.StringResource(displayNameResId) } diff --git a/core/common/src/main/res/values-en/strings.xml b/core/common/src/main/res/values-en/strings.xml index 20ea9da23..a1ac80204 100644 --- a/core/common/src/main/res/values-en/strings.xml +++ b/core/common/src/main/res/values-en/strings.xml @@ -13,6 +13,37 @@ Snack Corner 더 키친 + + + + Student Union Building, 3F + 08:00~09:00(1,000-Won Breakfast)\n11:20~14:00(Lunch)\n14:00~17:00(Open Space Hours) + 3 Food Stations\nHot Pot(Ttukbaegi-style Meals), Rice Bowls, Western food\nClosed on weekends + + Shinyang Hall, 2F + Weekdays\n11:20~14:00(Lunch)\n17:00~18:30(Dinner)\n\nWeekends\n11:20~13:30(Lunch) + 2 Food Stations\nStandard Meals, Healthy Meals + + Residence Hall, B1 + Weekdays\n11:20~13:50(Lunch)\n17:00~18:30(Dinner)\n\nWeekends\n11:20~13:30(Lunch)\n17:00~18:20(Dinner) + Breakfast Not Available + + Jeonsan Hall, B1 + 11:30~14:00(Lunch)\n14:00~17:00(Open Space Hours) + Closed on weekends + + Student Union Building, 3F + 11:00~15:30(Lunch) + Bunsik(Korean Snacks), Old-school Lunch Box, Cup Rice, etc.\nClosed on weekends + + Student Union Building, 2F + Closed + Coming Soon + + Student Union Building, 2F + + + @@ -28,4 +59,23 @@ College Department + + + + + All + Korean + Japanese + Western + Chinese + Bakery + Others + + + + + All + Restaurant + Cafe + Pub diff --git a/core/common/src/main/res/values-ja/strings.xml b/core/common/src/main/res/values-ja/strings.xml index 270dc7ef5..34589cd73 100644 --- a/core/common/src/main/res/values-ja/strings.xml +++ b/core/common/src/main/res/values-ja/strings.xml @@ -13,6 +13,37 @@ スナックコーナー 더 키친 + + + + 学生会館 3階 + 08:00~09:00(千ウォン朝食)\n11:20~14:00(昼食)\n14:00~17:00(スペース開放) + 3つのコーナーを運営\nトゥッペギ料理、丼もの、洋食\n週末休業 + + 信陽館 2階 + 平日\n11:20~14:00(昼食)\n17:00~18:30(夕食)\n\n週末\n11:20~13:30(昼食) + 2つのコーナーを運営\n一般食、ヘルシーメニュー + + レジデンスホール 地下1階 + 平日\n11:20~13:50(昼食)\n17:00~18:30(夕食)\n\n週末\n11:20~13:30(昼食)\n17:00~18:20(夕食) + 朝食の提供なし + + 電算館 地下1階 + 11:30~14:00(昼食)\n14:00~17:00(スペース開放) + 週末休業 + + 学生会館 3階 + 11:00~15:30(昼食) + 粉食類、昔ながらのお弁当、カップご飯など\n週末休業 + + 学生会館 2階 + 休業 + 準備中 + + 学生会館 2階 + + + @@ -28,4 +59,23 @@ 学部 学科 + + + + + すべて + 韓国料理 + 日本料理 + 洋食 + 中華料理 + ベーカリー + その他 + + + + + すべて + 飲食店 + カフェ + 居酒屋 diff --git a/core/common/src/main/res/values-vi/strings.xml b/core/common/src/main/res/values-vi/strings.xml index d2cb0e201..062d3922a 100644 --- a/core/common/src/main/res/values-vi/strings.xml +++ b/core/common/src/main/res/values-vi/strings.xml @@ -13,6 +13,37 @@ Quầy đồ ăn nhẹ 더 키친 + + + + Tòa Student Union, tầng 3 + 08:00~09:00(Bữa sáng 1.000 won)\n11:20~14:00(Bữa trưa)\n14:00~17:00(Giờ mở không gian) + 3 quầy phục vụ\nMón kiểu ttukbaegi, cơm tô, món Âu\nĐóng cửa cuối tuần + + Tòa Shinyang, tầng 2 + Ngày thường\n11:20~14:00(Bữa trưa)\n17:00~18:30(Bữa tối)\n\nCuối tuần\n11:20~13:30(Bữa trưa) + 2 quầy phục vụ\nSuất ăn thường, suất ăn lành mạnh + + Residence Hall, tầng B1 + Ngày thường\n11:20~13:50(Bữa trưa)\n17:00~18:30(Bữa tối)\n\nCuối tuần\n11:20~13:30(Bữa trưa)\n17:00~18:20(Bữa tối) + Không phục vụ bữa sáng + + Tòa Jeonsan, tầng B1 + 11:30~14:00(Bữa trưa)\n14:00~17:00(Giờ mở không gian) + Đóng cửa cuối tuần + + Tòa Student Union, tầng 3 + 11:00~15:30(Bữa trưa) + Bunsik(đồ ăn vặt Hàn Quốc), cơm hộp kiểu xưa, cơm ly, v.v.\nĐóng cửa cuối tuần + + Tòa Student Union, tầng 2 + Nghỉ + Đang chuẩn bị + + Tòa Student Union, tầng 2 + + + @@ -28,4 +59,23 @@ Trường/Khoa Ngành/Khoa + + + + + Tất cả + Món Hàn + Món Nhật + Món Âu + Món Trung + Tiệm bánh + Khác + + + + + Tất cả + Nhà hàng + Quán cà phê + Quán nhậu diff --git a/core/common/src/main/res/values/strings.xml b/core/common/src/main/res/values/strings.xml index 0ccbadf80..e0d0c1001 100644 --- a/core/common/src/main/res/values/strings.xml +++ b/core/common/src/main/res/values/strings.xml @@ -10,6 +10,37 @@ 스낵 코너 더 키친 + + + + 학생회관 3층 + 08:00~09:00(천원의아침밥)\n11:20~14:00(점심)\n14:00~17:00(공간 개방) + 3개 코너 운영\n뚝배기, 덮밥, 양식\n주말 휴무 + + 신양관 2층 + 평일\n11:20~14:00(점심)\n17:00~18:30(저녁)\n\n주말\n11:20~13:30(점심) + 2개 코너 운영\n일반식, 웰빙코너 + + 레지던스홀 지하 1층 + 평일\n11:20~13:50(점심)\n17:00~18:30(저녁)\n\n주말\n11:20~13:30(점심)\n17:00~18:20(저녁) + 조식 미운영 + + 전산관 지하 1층 + 11:30~14:00(점심)\n14:00~17:00(공간개방) + 주말 휴무 + + 학생회관 3층 + 11:00~15:30(점심) + 분식류, 옛날도시락, 컵밥 등\n주말 휴무 + + 학생회관 2층 + 휴무 + 준비 중 + + 학생회관 2층 + + + @@ -25,4 +56,23 @@ 단과대 학과 + + + + + 전체 + 한식 + 일식 + 양식 + 중식 + 베이커리 + 기타 + + + + + 전체 + 음식점 + 카페 + 주점 diff --git a/core/design-system/src/main/java/com/eatssu/design_system/component/EatSsuTopBar.kt b/core/design-system/src/main/java/com/eatssu/design_system/component/EatSsuTopBar.kt index b37f1e66b..6813e6b17 100644 --- a/core/design-system/src/main/java/com/eatssu/design_system/component/EatSsuTopBar.kt +++ b/core/design-system/src/main/java/com/eatssu/design_system/component/EatSsuTopBar.kt @@ -18,6 +18,7 @@ import androidx.compose.ui.tooling.preview.Preview import com.eatssu.design_system.R import com.eatssu.design_system.theme.EatssuTheme import com.eatssu.design_system.theme.Gray500 +import com.eatssu.design_system.theme.White @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -42,7 +43,10 @@ fun EatSsuTopBar( tint = Gray500 ) } - } + }, + colors = TopAppBarDefaults.centerAlignedTopAppBarColors( + containerColor = White, + ), ) } @@ -55,7 +59,7 @@ fun CloseTopBar( modifier: Modifier = Modifier, ) { CenterAlignedTopAppBar( - modifier = modifier, + modifier = modifier.fillMaxWidth(), title = { Text( text = title, @@ -77,7 +81,7 @@ fun CloseTopBar( containerColor = MaterialTheme.colorScheme.surface, titleContentColor = MaterialTheme.colorScheme.onSurface, actionIconContentColor = MaterialTheme.colorScheme.onSurface, - ) + ), ) } @@ -92,7 +96,6 @@ fun TopBarPreview() { } @Preview(showBackground = true) - @Composable private fun CloseTopBarPreview() { EatssuTheme { @@ -100,3 +103,4 @@ private fun CloseTopBarPreview() { } } + diff --git a/language.csv b/language.csv index 5c3c1840e..6895fb6cb 100644 --- a/language.csv +++ b/language.csv @@ -137,7 +137,7 @@ report_sub,하나의 리뷰에 대해 24시간 내 한 번만 신고 가능합 report_write_hint,리뷰 신고 사유를 작성해 주세요,Please write the reason for reporting this review,レビューを通報する理由を入力してください,Vui lòng nhập lý do báo cáo đánh giá này max_150,최대 150자,Up to 150 characters,最大150文字,Tối đa 150 ký tự app_slogan_part1,숭실대에서,Eat at,崇実大で,Ăn tại -app_slogan_part2,먹자,Soongsil,食べよう,Soongsil +app_slogan_part2,서울 곳곳까지,From Soongsil to all of Seoul,ソウルの街中へ,Khắp mọi nơi ở Seoul inquire,문의하기,Contact Us,お問い合わせ,Liên hệ service_rule,서비스 이용약관,Terms of Service,利用規約,Điều khoản dịch vụ private_information,개인정보 처리방침,Privacy Policy,プライバシーポリシー,Chính sách quyền riêng tư @@ -182,3 +182,116 @@ recruiting_url,https://eat-ssu.notion.site/1d2eeef75a1681ae800cf6ffa6faa37d?pvs= ,저작권 도용 의심 (사진 등),Suspected copyright infringement (e.g. photos),著作権侵害の疑い(写真など),"Nghi ngờ vi phạm bản quyền (ảnh, v.v.)" ,기타 (하단 내용 작성),Other (write details below),その他(下部に内容を入力),Khác (viết nội dung bên dưới) ,리뷰 신고 사유를 알려주세요,Tell us why you are reporting this review,レビューを通報する理由を教えてください,Vui lòng cho biết lý do báo cáo đánh giá này +title_good_price_map,착한가격업소 지도,Good Price Stores Map,お手頃価格のお店マップ,Bản đồ cửa hàng giá tốt +tab_school_partnership,학교 제휴,Campus Partners,学校提携,Đối tác trường +tab_good_price,착한 가격,Good Price,お手頃価格,Giá tốt +btn_browse_good_price_stores,착한가격업소 둘러보기,Explore Good Price Stores,お手頃価格のお店を見る,Khám phá cửa hàng giá tốt +btn_browse_good_price_stores_subtitle,내 주변 착한 한 끼를 찾아보세요,Find an affordable meal near you,近くでお手頃な一食を探してみましょう,Tìm một bữa ăn hợp túi tiền gần bạn +toast_load_good_price_stores_failed,업소 정보를 불러오지 못했어요.,Failed to load store information.,店舗情報の読み込みに失敗しました。,Không thể tải thông tin cửa hàng. +toast_map_open_failed,지도를 열 수 없어요. 잠시 후 다시 시도해 주세요.,Failed to open the map. Please try again in a moment.,地図を開けませんでした。しばらくしてからもう一度お試しください。,Không thể mở bản đồ. Vui lòng thử lại sau giây lát. +map_open_kakao,카카오맵,KakaoMap,KakaoMap,KakaoMap +map_open_naver,네이버지도,Naver Map,Naver Map,Naver Map +category_good_price_all,전체,All,すべて,Tất cả +category_good_price_korean,한식,Korean,韓国料理,Món Hàn +category_good_price_japanese,일식,Japanese,日本料理,Món Nhật +category_good_price_western,양식,Western,洋食,Món Âu +category_good_price_chinese,중식,Chinese,中華料理,Món Trung +category_good_price_bakery,베이커리,Bakery,ベーカリー,Tiệm bánh +category_good_price_etc,기타,Others,その他,Khác +category_school_partnership_all,전체,All,すべて,Tất cả +category_school_partnership_restaurant,음식점,Restaurant,飲食店,Nhà hàng +category_school_partnership_cafe,카페,Cafe,カフェ,Quán cà phê +category_school_partnership_pub,주점,Pub,居酒屋,Quán nhậu +cafeteria_student_location,학생회관 3층,"Student Union Building, 3F",学生会館 3階,"Tòa Student Union, tầng 3" +cafeteria_student_time,"08:00~09:00(천원의아침밥) +11:20~14:00(점심) +14:00~17:00(공간 개방)","08:00~09:00(1,000-Won Breakfast) +11:20~14:00(Lunch) +14:00~17:00(Open Space Hours)","08:00~09:00(千ウォン朝食) +11:20~14:00(昼食) +14:00~17:00(スペース開放)","08:00~09:00(Bữa sáng 1.000 won) +11:20~14:00(Bữa trưa) +14:00~17:00(Giờ mở không gian)" +cafeteria_student_etc,"3개 코너 운영 +뚝배기, 덮밥, 양식 +주말 휴무","3 Food Stations +Hot Pot(Ttukbaegi-style Meals), Rice Bowls, Western food +Closed on weekends","3つのコーナーを運営 +トゥッペギ料理、丼もの、洋食 +週末休業","3 quầy phục vụ +Món kiểu ttukbaegi, cơm tô, món Âu +Đóng cửa cuối tuần" +cafeteria_dodam_location,신양관 2층,"Shinyang Hall, 2F",信陽館 2階,"Tòa Shinyang, tầng 2" +cafeteria_dodam_time,"평일 +11:20~14:00(점심) +17:00~18:30(저녁) + +주말 +11:20~13:30(점심)","Weekdays +11:20~14:00(Lunch) +17:00~18:30(Dinner) + +Weekends +11:20~13:30(Lunch)","平日 +11:20~14:00(昼食) +17:00~18:30(夕食) + +週末 +11:20~13:30(昼食)","Ngày thường +11:20~14:00(Bữa trưa) +17:00~18:30(Bữa tối) + +Cuối tuần +11:20~13:30(Bữa trưa)" +cafeteria_dodam_etc,"2개 코너 운영 +일반식, 웰빙코너","2 Food Stations +Standard Meals, Healthy Meals","2つのコーナーを運営 +一般食、ヘルシーメニュー","2 quầy phục vụ +Suất ăn thường, suất ăn lành mạnh" +cafeteria_dormitory_location,레지던스홀 지하 1층,"Residence Hall, B1",レジデンスホール 地下1階,"Residence Hall, tầng B1" +cafeteria_dormitory_time,"평일 +11:20~13:50(점심) +17:00~18:30(저녁) + +주말 +11:20~13:30(점심) +17:00~18:20(저녁)","Weekdays +11:20~13:50(Lunch) +17:00~18:30(Dinner) + +Weekends +11:20~13:30(Lunch) +17:00~18:20(Dinner)","平日 +11:20~13:50(昼食) +17:00~18:30(夕食) + +週末 +11:20~13:30(昼食) +17:00~18:20(夕食)","Ngày thường +11:20~13:50(Bữa trưa) +17:00~18:30(Bữa tối) + +Cuối tuần +11:20~13:30(Bữa trưa) +17:00~18:20(Bữa tối)" +cafeteria_dormitory_etc,조식 미운영,Breakfast Not Available,朝食の提供なし,Không phục vụ bữa sáng +cafeteria_faculty_location,전산관 지하 1층,"Jeonsan Hall, B1",電算館 地下1階,"Tòa Jeonsan, tầng B1" +cafeteria_faculty_time,"11:30~14:00(점심) +14:00~17:00(공간개방)","11:30~14:00(Lunch) +14:00~17:00(Open Space Hours)","11:30~14:00(昼食) +14:00~17:00(スペース開放)","11:30~14:00(Bữa trưa) +14:00~17:00(Giờ mở không gian)" +cafeteria_faculty_etc,주말 휴무,Closed on weekends,週末休業,Đóng cửa cuối tuần +cafeteria_snack_corner_location,학생회관 3층,"Student Union Building, 3F",学生会館 3階,"Tòa Student Union, tầng 3" +cafeteria_snack_corner_time,11:00~15:30(점심),11:00~15:30(Lunch),11:00~15:30(昼食),11:00~15:30(Bữa trưa) +cafeteria_snack_corner_etc,"분식류, 옛날도시락, 컵밥 등 +주말 휴무","Bunsik(Korean Snacks), Old-school Lunch Box, Cup Rice, etc. +Closed on weekends","粉食類、昔ながらのお弁当、カップご飯など +週末休業","Bunsik(đồ ăn vặt Hàn Quốc), cơm hộp kiểu xưa, cơm ly, v.v. +Đóng cửa cuối tuần" +cafeteria_food_court_location,학생회관 2층,"Student Union Building, 2F",学生会館 2階,"Tòa Student Union, tầng 2" +cafeteria_food_court_time,휴무,Closed,休業,Nghỉ +cafeteria_food_court_etc,준비 중,Coming Soon,準備中,Đang chuẩn bị +cafeteria_the_kitchen_location,학생회관 2층,"Student Union Building, 2F",学生会館 2階,"Tòa Student Union, tầng 2" +cafeteria_the_kitchen_time,,,, +cafeteria_the_kitchen_etc,,,,