diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/components/CharacterEntry.kt b/app/src/main/java/com/github/nacabaro/vbhelper/components/CharacterEntry.kt index 9b929d5..539b044 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/components/CharacterEntry.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/components/CharacterEntry.kt @@ -36,6 +36,8 @@ import com.github.cfogrady.vbnfc.vb.SpecialMission import com.github.nacabaro.vbhelper.R import com.github.nacabaro.vbhelper.domain.device_data.SpecialMissions import com.github.nacabaro.vbhelper.utils.getObscuredBitmap +import androidx.compose.ui.res.stringResource + @Composable fun CharacterEntry( @@ -134,11 +136,23 @@ fun SpecialMissionsEntry( onClickCard: () -> Unit = { }, ) { val textValue = when (specialMission.missionType) { - SpecialMission.Type.NONE -> "No mission selected" - SpecialMission.Type.STEPS -> "Walk ${specialMission.goal} steps" - SpecialMission.Type.BATTLES -> "Battle ${specialMission.goal} times" - SpecialMission.Type.WINS -> "Win ${specialMission.goal} battles" - SpecialMission.Type.VITALS -> "Earn ${specialMission.goal} vitals" + SpecialMission.Type.NONE -> stringResource(R.string.special_mission_none) + SpecialMission.Type.STEPS -> stringResource( + R.string.special_mission_steps, + specialMission.goal + ) + SpecialMission.Type.BATTLES -> stringResource( + R.string.special_mission_battles, + specialMission.goal + ) + SpecialMission.Type.WINS -> stringResource( + R.string.special_mission_wins, + specialMission.goal + ) + SpecialMission.Type.VITALS -> stringResource( + R.string.special_mission_vitals, + specialMission.goal + ) } val progress = if (specialMission.status == SpecialMission.Status.COMPLETED) { @@ -149,10 +163,22 @@ fun SpecialMissionsEntry( val completion = when (specialMission.missionType) { SpecialMission.Type.NONE -> "" - SpecialMission.Type.STEPS -> "Walked $progress steps" - SpecialMission.Type.BATTLES -> "Battled $progress times" - SpecialMission.Type.WINS -> "Won $progress battles" - SpecialMission.Type.VITALS -> "Earned $progress vitals" + SpecialMission.Type.STEPS -> stringResource( + R.string.special_mission_steps_progress, + progress + ) + SpecialMission.Type.BATTLES -> stringResource( + R.string.special_mission_battles_progress, + progress + ) + SpecialMission.Type.WINS -> stringResource( + R.string.special_mission_wins_progress, + progress + ) + SpecialMission.Type.VITALS -> stringResource( + R.string.special_mission_vitals_progress, + progress + ) } val icon = when (specialMission.missionType) { @@ -193,7 +219,7 @@ fun SpecialMissionsEntry( ) { Icon( painter = painterResource(icon), - contentDescription = "Vitals", + contentDescription = stringResource(R.string.special_mission_icon_content_description), modifier = Modifier .fillMaxHeight() .padding(16.dp) diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/navigation/BottomNavigationBar.kt b/app/src/main/java/com/github/nacabaro/vbhelper/navigation/BottomNavigationBar.kt index 52560c1..96f4275 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/navigation/BottomNavigationBar.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/navigation/BottomNavigationBar.kt @@ -8,7 +8,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.res.painterResource import androidx.navigation.NavController import androidx.navigation.compose.currentBackStackEntryAsState - +import androidx.compose.ui.res.stringResource @Composable fun BottomNavigationBar(navController: NavController) { @@ -26,8 +26,8 @@ fun BottomNavigationBar(navController: NavController) { items.forEach { item -> NavigationBarItem ( - icon = { Icon(painter = painterResource(item.icon), contentDescription = item.label) }, - label = { Text(item.label) }, + icon = { Icon(painter = painterResource(item.icon), contentDescription = stringResource(item.label)) }, + label = { Text(text = stringResource(item.label)) }, selected = currentRoute == item.route, onClick = { navController.navigate(item.route) { diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/navigation/NavigationItems.kt b/app/src/main/java/com/github/nacabaro/vbhelper/navigation/NavigationItems.kt index ca187ea..77b9b91 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/navigation/NavigationItems.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/navigation/NavigationItems.kt @@ -1,25 +1,101 @@ package com.github.nacabaro.vbhelper.navigation import com.github.nacabaro.vbhelper.R +import androidx.annotation.DrawableRes +import androidx.annotation.StringRes -sealed class NavigationItems ( - var route: String, - var icon: Int, - var label: String +sealed class NavigationItems( + val route: String, + @DrawableRes val icon: Int, + @StringRes val label: Int ) { - object Scan : NavigationItems("Scan/{characterId}", R.drawable.baseline_nfc_24, "Scan") - object Battles : NavigationItems("Battle", R.drawable.baseline_swords_24, "Battle") - object Home : NavigationItems("Home", R.drawable.baseline_cottage_24, "Home") - object Dex : NavigationItems("Dex", R.drawable.baseline_menu_book_24, "Dex") - object CardAdventure : NavigationItems("CardAdventure/{cardId}", R.drawable.baseline_fort_24, "Card adventure") - object Storage : NavigationItems("Storage", R.drawable.baseline_catching_pokemon_24, "Storage") - object Settings : NavigationItems("Settings", R.drawable.baseline_settings_24, "Settings") - object Viewer : NavigationItems("Viewer", R.drawable.baseline_image_24, "Viewer") - object CardView : NavigationItems("Card/{cardId}", R.drawable.baseline_image_24, "Card") - object Items : NavigationItems("Items", R.drawable.baseline_data_24, "Items") - object MyItems : NavigationItems("MyItems", R.drawable.baseline_data_24, "My items") - object ItemsStore : NavigationItems("ItemsStore", R.drawable.baseline_data_24, "Items store") - object ApplyItem : NavigationItems("ApplyItem/{itemId}", R.drawable.baseline_data_24, "Apply item") - object Adventure : NavigationItems("Adventure", R.drawable.baseline_fort_24, "Adventure") - object Credits : NavigationItems("Credits", R.drawable.baseline_data_24, "Credits") + object Scan : NavigationItems( + "Scan/{characterId}", + R.drawable.baseline_nfc_24, + R.string.nav_scan + ) + + object Battles : NavigationItems( + "Battle", + R.drawable.baseline_swords_24, + R.string.nav_battle + ) + + object Home : NavigationItems( + "Home", + R.drawable.baseline_cottage_24, + R.string.nav_home + ) + + object Dex : NavigationItems( + "Dex", + R.drawable.baseline_menu_book_24, + R.string.nav_dex + ) + + object CardAdventure : NavigationItems( + "CardAdventure/{cardId}", + R.drawable.baseline_fort_24, + R.string.nav_card_adventure + ) + + object Storage : NavigationItems( + "Storage", + R.drawable.baseline_catching_pokemon_24, + R.string.nav_storage + ) + + object Settings : NavigationItems( + "Settings", + R.drawable.baseline_settings_24, + R.string.nav_settings + ) + + object Viewer : NavigationItems( + "Viewer", + R.drawable.baseline_image_24, + R.string.nav_viewer + ) + + object CardView : NavigationItems( + "Card/{cardId}", + R.drawable.baseline_image_24, + R.string.nav_card + ) + + object Items : NavigationItems( + "Items", + R.drawable.baseline_data_24, + R.string.nav_items + ) + + object MyItems : NavigationItems( + "MyItems", + R.drawable.baseline_data_24, + R.string.nav_my_items + ) + + object ItemsStore : NavigationItems( + "ItemsStore", + R.drawable.baseline_data_24, + R.string.nav_items_store + ) + + object ApplyItem : NavigationItems( + "ApplyItem/{itemId}", + R.drawable.baseline_data_24, + R.string.nav_apply_item + ) + + object Adventure : NavigationItems( + "Adventure", + R.drawable.baseline_fort_24, + R.string.nav_adventure + ) + + object Credits : NavigationItems( + "Credits", + R.drawable.baseline_data_24, + R.string.nav_credits + ) } \ No newline at end of file diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/BattlesScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/BattlesScreen.kt index b50ef12..0e5ad06 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/BattlesScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/BattlesScreen.kt @@ -10,13 +10,16 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import com.github.nacabaro.vbhelper.components.TopBanner +import androidx.compose.ui.res.stringResource +import com.github.nacabaro.vbhelper.R + @Composable fun BattlesScreen() { Scaffold ( topBar = { TopBanner( - text = "Online battles" + text = stringResource(R.string.battles_online_title) ) } ) { contentPadding -> @@ -27,7 +30,7 @@ fun BattlesScreen() { .padding(top = contentPadding.calculateTopPadding()) .fillMaxSize() ) { - Text("Coming soon") + Text(stringResource(R.string.battles_coming_soon)) } } } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/adventureScreen/AdventureScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/adventureScreen/AdventureScreen.kt index d7511ae..28fe0e9 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/adventureScreen/AdventureScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/adventureScreen/AdventureScreen.kt @@ -18,6 +18,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.navigation.NavController import com.github.nacabaro.vbhelper.screens.itemsScreen.ObtainedItemDialog import com.github.nacabaro.vbhelper.components.TopBanner @@ -29,6 +30,7 @@ import com.github.nacabaro.vbhelper.source.StorageRepository import com.github.nacabaro.vbhelper.utils.BitmapData import kotlinx.coroutines.delay import java.time.Instant +import com.github.nacabaro.vbhelper.R @Composable fun AdventureScreen( @@ -61,7 +63,7 @@ fun AdventureScreen( Scaffold( topBar = { TopBanner( - text = "Adventure", + text = stringResource(R.string.adventure_title), onBackClick = { navController.popBackStack() } @@ -76,7 +78,7 @@ fun AdventureScreen( .padding(top = contentPadding.calculateTopPadding()) .fillMaxSize() ) { - Text(text = "Nothing to see here") + Text(text = stringResource(R.string.adventure_empty_state)) } } else { LazyColumn( diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/CardAdventureScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/CardAdventureScreen.kt index 6f5527a..27ed42b 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/CardAdventureScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/CardAdventureScreen.kt @@ -11,6 +11,9 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.navigation.NavController import com.github.nacabaro.vbhelper.components.TopBanner +import androidx.compose.ui.res.stringResource +import com.github.nacabaro.vbhelper.R + @Composable fun CardAdventureScreen( @@ -28,7 +31,7 @@ fun CardAdventureScreen( Scaffold ( topBar = { TopBanner( - text = "Adventure missions", + text = stringResource(R.string.card_adventure_missions_title), onBackClick = { navController.popBackStack() } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/CardEntry.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/CardEntry.kt index 9d48d5a..1673969 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/CardEntry.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/CardEntry.kt @@ -24,6 +24,9 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import com.github.nacabaro.vbhelper.utils.BitmapData import com.github.nacabaro.vbhelper.utils.getBitmap +import androidx.compose.ui.res.stringResource +import com.github.nacabaro.vbhelper.R + @Composable fun CardEntry( @@ -75,7 +78,11 @@ fun CardEntry( modifier = Modifier ) Text( - text = "$obtainedCharacters of $totalCharacters characters obtained", + text = stringResource( + R.string.card_entry_characters_obtained, + obtainedCharacters, + totalCharacters + ), fontFamily = MaterialTheme.typography.labelSmall.fontFamily, fontSize = MaterialTheme.typography.labelSmall.fontSize, modifier = Modifier @@ -91,7 +98,7 @@ fun CardEntry( ) { Icon( imageVector = Icons.Default.Edit, - contentDescription = "Edit" + contentDescription = stringResource(R.string.card_entry_edit) ) } IconButton( @@ -99,7 +106,7 @@ fun CardEntry( ) { Icon( imageVector = Icons.Default.Delete, - contentDescription = "Delete" + contentDescription = stringResource(R.string.card_entry_delete) ) } } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/CardViewScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/CardViewScreen.kt index da95460..58f7f66 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/CardViewScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/CardViewScreen.kt @@ -10,6 +10,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.navigation.NavController import com.github.nacabaro.vbhelper.utils.BitmapData import com.github.nacabaro.vbhelper.components.CharacterEntry @@ -19,6 +20,8 @@ import com.github.nacabaro.vbhelper.dtos.CharacterDtos import com.github.nacabaro.vbhelper.navigation.NavigationItems import com.github.nacabaro.vbhelper.screens.cardScreen.dialogs.DexCharaDetailsDialog import com.github.nacabaro.vbhelper.source.DexRepository +import com.github.nacabaro.vbhelper.R + @Composable fun CardViewScreen( @@ -35,7 +38,7 @@ fun CardViewScreen( Scaffold ( topBar = { TopBanner( - text = "Discovered characters", + text = stringResource(R.string.card_view_discovered_characters), onBackClick = { navController.popBackStack() }, diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/CardsScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/CardsScreen.kt index fcb24b5..7908c4c 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/CardsScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/CardsScreen.kt @@ -24,6 +24,8 @@ import com.github.nacabaro.vbhelper.navigation.NavigationItems import com.github.nacabaro.vbhelper.screens.cardScreen.dialogs.CardDeleteDialog import com.github.nacabaro.vbhelper.screens.cardScreen.dialogs.CardRenameDialog import com.github.nacabaro.vbhelper.source.DexRepository +import androidx.compose.ui.res.stringResource +import com.github.nacabaro.vbhelper.R @Composable fun CardsScreen( @@ -43,7 +45,7 @@ fun CardsScreen( Scaffold ( topBar = { TopBanner( - text = "My cards", + text = stringResource(R.string.cards_my_cards_title), onModifyClick = { modifyCards = !modifyCards } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/dialogs/DexCharaDetailsDialog.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/dialogs/DexCharaDetailsDialog.kt index 364982e..2204be7 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/dialogs/DexCharaDetailsDialog.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/cardScreen/dialogs/DexCharaDetailsDialog.kt @@ -33,7 +33,8 @@ import com.github.nacabaro.vbhelper.dtos.CharacterDtos import com.github.nacabaro.vbhelper.source.DexRepository import com.github.nacabaro.vbhelper.utils.BitmapData import com.github.nacabaro.vbhelper.utils.getImageBitmap - +import androidx.compose.ui.res.stringResource +import com.github.nacabaro.vbhelper.R @Composable fun DexCharaDetailsDialog( @@ -119,7 +120,7 @@ fun DexCharaDetailsDialog( ) { Image( bitmap = charaImageBitmapData.imageBitmap, - contentDescription = "Icon", + contentDescription = stringResource(R.string.dex_chara_icon_description), modifier = Modifier .size(charaImageBitmapData.dpWidth) .padding(8.dp), @@ -138,7 +139,7 @@ fun DexCharaDetailsDialog( Column { Image( bitmap = nameImageBitmapData.imageBitmap, - contentDescription = "Icon", + contentDescription = stringResource(R.string.dex_chara_name_icon_description), modifier = Modifier .width(nameImageBitmapData.dpWidth) .height(nameImageBitmapData.dpHeight), @@ -147,17 +148,28 @@ fun DexCharaDetailsDialog( Spacer(modifier = Modifier.padding(4.dp)) if (currentChara.baseHp != 65535) { Text( - text = "HP: ${currentChara.baseHp}, BP: ${currentChara.baseBp}, AP: ${currentChara.baseAp}" + text = stringResource( + R.string.dex_chara_stats, + currentChara.baseHp, + currentChara.baseBp, + currentChara.baseAp + ) + ) + Text( + text = stringResource( + R.string.dex_chara_stage_attribute, + romanNumeralsStage, + currentChara.attribute.toString().substring(0, 2) + ) ) - Text(text = "Stg: ${romanNumeralsStage}, Atr: ${currentChara.attribute.toString().substring(0, 2)}") } } } else { Column { - Text(text = "????????????????") + Text(stringResource(R.string.dex_chara_unknown_name)) Spacer(modifier = Modifier.padding(4.dp)) - Text(text = "Stg: -, Atr: -") - Text(text = "HP: -, BP: -, AP: -") + Text(stringResource(R.string.dex_chara_stage_attribute_unknown)) + Text(stringResource(R.string.dex_chara_stats_unknown)) } } } @@ -198,7 +210,7 @@ fun DexCharaDetailsDialog( ) { Image( bitmap = selectedCharaImageBitmap.imageBitmap, - contentDescription = "Icon", + contentDescription = stringResource(R.string.dex_chara_icon_description), modifier = Modifier .size(selectedCharaImageBitmap.dpWidth) .padding(8.dp), @@ -214,8 +226,22 @@ fun DexCharaDetailsDialog( .padding(16.dp) ) Column { - Text("Tr: ${it.requiredTrophies}; Bt: ${it.requiredBattles}; Vr: ${it.requiredVitals}; Wr: ${it.requiredWinRate}%; Ct: ${it.changeTimerHours}h") - Text("AdvLvl ${it.requiredAdventureLevelCompleted + 1}") + Text( + text = stringResource( + R.string.dex_chara_requirements, + it.requiredTrophies, + it.requiredBattles, + it.requiredVitals, + it.requiredWinRate, + it.changeTimerHours + ) + ) + Text( + text = stringResource( + R.string.dex_chara_adventure_level, + it.requiredAdventureLevelCompleted + 1 + ) + ) } } } @@ -229,7 +255,7 @@ fun DexCharaDetailsDialog( showFusions = true } ) { - Text("Fusions") + Text(stringResource(R.string.dex_chara_fusions_button)) } } @@ -241,7 +267,7 @@ fun DexCharaDetailsDialog( Button( onClick = onClickClose ) { - Text("Close") + Text(stringResource(R.string.dex_chara_close_button)) } } } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/BetaWarning.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/BetaWarning.kt index fb9a567..77e0882 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/BetaWarning.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/BetaWarning.kt @@ -8,8 +8,10 @@ import androidx.compose.material3.Card import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog +import com.github.nacabaro.vbhelper.R @Composable fun BetaWarning( @@ -19,26 +21,26 @@ fun BetaWarning( onDismissRequest = onDismissRequest ) { Card { - Column ( + Column( modifier = Modifier .padding(16.dp) ) { Text( - text = "This application is currently in alpha and it is not complete. Do not use to store important characters for you, as any future updates might delete all your characters. Sorry for the inconvenience!" + text = stringResource(R.string.beta_warning_message_main) ) Spacer(modifier = Modifier.padding(8.dp)) Text( - text = "Application should work now with the original VB and the VH." + text = stringResource(R.string.beta_warning_message_compatibility) ) Spacer(modifier = Modifier.padding(8.dp)) Text( - text = "Thank you for your understanding and patience. Sincerely, the dev team." + text = stringResource(R.string.beta_warning_message_thanks) ) Spacer(modifier = Modifier.padding(8.dp)) Button( onClick = onDismissRequest ) { - Text(text = "Dismiss") + Text(text = stringResource(R.string.beta_warning_button_dismiss)) } } } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/HomeScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/HomeScreen.kt index 7cd4515..7036fb8 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/HomeScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/HomeScreen.kt @@ -19,6 +19,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog @@ -39,6 +40,7 @@ import com.github.nacabaro.vbhelper.screens.itemsScreen.ObtainedItemDialog import com.github.nacabaro.vbhelper.source.StorageRepository import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext +import com.github.nacabaro.vbhelper.R @Composable fun HomeScreen( @@ -81,7 +83,7 @@ fun HomeScreen( Scaffold ( topBar = { TopBanner( - text = "VB Helper", + text = stringResource(R.string.home_title), onScanClick = { navController.navigate(NavigationItems.Scan.route) }, @@ -99,7 +101,7 @@ fun HomeScreen( .fillMaxSize() .padding(top = contentPadding.calculateTopPadding()) ) { - Text(text = "Nothing to see here") + Text(text = stringResource(R.string.adventure_empty_state)) } } else { if (activeMon.value!!.isBemCard) { @@ -154,7 +156,7 @@ fun HomeScreen( .padding(16.dp) ) { Text( - text = "One of your characters has finished their adventure mission!", + text = stringResource(R.string.home_adventure_mission_finished), textAlign = TextAlign.Center ) Button( @@ -165,7 +167,7 @@ fun HomeScreen( .padding(8.dp) .fillMaxWidth() ) { - Text(text = "Dismiss") + Text(text = stringResource(R.string.beta_warning_button_dismiss)) } } } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/screens/VBDiMHomeScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/screens/VBDiMHomeScreen.kt index eeb9062..54fe76c 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/screens/VBDiMHomeScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/screens/VBDiMHomeScreen.kt @@ -25,6 +25,8 @@ import com.github.nacabaro.vbhelper.dtos.ItemDtos import com.github.nacabaro.vbhelper.screens.homeScreens.HomeScreenControllerImpl import com.github.nacabaro.vbhelper.utils.BitmapData import java.util.Locale +import androidx.compose.ui.res.stringResource + @Composable fun VBDiMHomeScreen( @@ -65,7 +67,7 @@ fun VBDiMHomeScreen( ItemDisplay( icon = R.drawable.baseline_vitals_24, textValue = activeMon.vitalPoints.toString(), - definition = "Vitals", + definition = stringResource(R.string.home_vbdim_vitals), modifier = Modifier .weight(0.5f) .aspectRatio(1f) @@ -74,7 +76,7 @@ fun VBDiMHomeScreen( ItemDisplay( icon = R.drawable.baseline_trophy_24, textValue = activeMon.trophies.toString(), - definition = "Trophies", + definition = stringResource(R.string.home_vbdim_trophies), modifier = Modifier .weight(0.5f) .aspectRatio(1f) @@ -89,7 +91,7 @@ fun VBDiMHomeScreen( ItemDisplay( icon = R.drawable.baseline_mood_24, textValue = activeMon.mood.toString(), - definition = "Mood", + definition = stringResource(R.string.home_vbdim_mood), modifier = Modifier .weight(1f) .aspectRatio(1f) @@ -102,7 +104,7 @@ fun VBDiMHomeScreen( 0 -> "${activeMon.transformationCountdown} m" else -> "$transformationCountdownInHours h" }, - definition = "Next timer", + definition = stringResource(R.string.home_vbdim_next_timer), modifier = Modifier .weight(1f) .aspectRatio(1f) @@ -122,7 +124,7 @@ fun VBDiMHomeScreen( ) + " %" // Specify locale } }, - definition = "Total battle win %", + definition = stringResource(R.string.home_vbdim_total_battle_win), modifier = Modifier .weight(1f) .aspectRatio(1f) @@ -142,7 +144,7 @@ fun VBDiMHomeScreen( ) + " %" // Specify locale } }, - definition = "Current phase win %", + definition = stringResource(R.string.home_vbdim_current_phase_win), modifier = Modifier .weight(1f) .aspectRatio(1f) @@ -165,7 +167,7 @@ fun VBDiMHomeScreen( .padding(16.dp) ) { Text( - text = "Special missions", + text = stringResource(R.string.home_vbdim_special_missions), fontSize = 24.sp ) } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ChooseCharacterScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ChooseCharacterScreen.kt index 5b2b884..b64d581 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ChooseCharacterScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ChooseCharacterScreen.kt @@ -15,6 +15,7 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.navigation.NavController import com.github.nacabaro.vbhelper.components.CharacterEntry import com.github.nacabaro.vbhelper.components.TopBanner @@ -26,7 +27,7 @@ import com.github.nacabaro.vbhelper.source.StorageRepository import com.github.nacabaro.vbhelper.utils.BitmapData import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch - +import com.github.nacabaro.vbhelper.R @Composable fun ChooseCharacterScreen( @@ -69,7 +70,7 @@ fun ChooseCharacterScreen( itemsScreenController.applyItem(itemId, selectedCharacter!!) { Toast.makeText( application.applicationContext, - "Item applied!", + application.getString(R.string.choose_character_item_applied), Toast.LENGTH_SHORT ).show() navController.popBackStack() @@ -80,7 +81,7 @@ fun ChooseCharacterScreen( Scaffold( topBar = { TopBanner( - text = "Choose character", + text = stringResource(R.string.choose_character_title), onBackClick = { navController.popBackStack() } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ItemDialog.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ItemDialog.kt index 3bd3e2d..97e63c2 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ItemDialog.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ItemDialog.kt @@ -17,6 +17,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -27,6 +28,8 @@ import com.github.nacabaro.vbhelper.domain.items.ItemType import com.github.nacabaro.vbhelper.dtos.ItemDtos import com.github.nacabaro.vbhelper.ui.theme.VBHelperTheme + + @Composable fun ItemDialog( item: ItemDtos.ItemsWithQuantities, @@ -95,7 +98,10 @@ fun ItemDialog( textAlign = TextAlign.Center, fontSize = MaterialTheme.typography.bodySmall.fontSize, fontFamily = MaterialTheme.typography.bodySmall.fontFamily, - text = "Costs ${item.price} credits", + text = stringResource( + R.string.item_dialog_costs_credits, + item.price + ), modifier = Modifier .fillMaxWidth() ) @@ -104,7 +110,10 @@ fun ItemDialog( textAlign = TextAlign.Center, fontSize = MaterialTheme.typography.bodySmall.fontSize, fontFamily = MaterialTheme.typography.bodySmall.fontFamily, - text = "You have ${item.quantity} of this item", + text = stringResource( + R.string.item_dialog_you_have_quantity, + item.quantity + ), modifier = Modifier .fillMaxWidth() ) @@ -118,7 +127,7 @@ fun ItemDialog( Button( onClick = onClickUse ) { - Text("Use item") + Text(stringResource(R.string.item_dialog_use)) } } @@ -126,7 +135,7 @@ fun ItemDialog( Button( onClick = onClickPurchase ) { - Text("Purchase") + Text(stringResource(R.string.item_dialog_purchase)) } } @@ -134,7 +143,7 @@ fun ItemDialog( Button( onClick = onClickCancel ) { - Text("Cancel") + Text(stringResource(R.string.item_dialog_cancel)) } } } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ItemElement.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ItemElement.kt index cd4645c..e08effa 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ItemElement.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ItemElement.kt @@ -14,6 +14,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import com.github.nacabaro.vbhelper.dtos.ItemDtos +import com.github.nacabaro.vbhelper.R @Composable fun ItemElement( diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ItemsScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ItemsScreen.kt index 8bbcbc3..63ca4c5 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ItemsScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ItemsScreen.kt @@ -17,6 +17,9 @@ import androidx.compose.ui.Modifier import androidx.navigation.NavController import com.github.nacabaro.vbhelper.components.TopBanner import com.github.nacabaro.vbhelper.navigation.NavigationItems +import androidx.compose.ui.res.stringResource +import com.github.nacabaro.vbhelper.R + @Composable fun ItemsScreen( @@ -30,14 +33,14 @@ fun ItemsScreen( Scaffold( topBar = { Column { - TopBanner("Items") + TopBanner(text = stringResource(R.string.items_title)) TabRow( selectedTabIndex = selectedTabItem, modifier = Modifier ) { items.forEachIndexed { index, item -> Tab( - text = { Text(item.label) }, + text = { Text(text = stringResource(item.label)) }, selected = selectedTabItem == index, onClick = { selectedTabItem = index } ) diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ItemsStore.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ItemsStore.kt index 4d4533c..e455e40 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ItemsStore.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ItemsStore.kt @@ -21,6 +21,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.navigation.NavController import com.github.nacabaro.vbhelper.database.AppDatabase @@ -30,6 +31,7 @@ import com.github.nacabaro.vbhelper.source.CurrencyRepository import com.github.nacabaro.vbhelper.source.ItemsRepository import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch +import com.github.nacabaro.vbhelper.R @Composable fun ItemsStore( @@ -52,7 +54,7 @@ fun ItemsStore( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier.fillMaxSize() ) { - Text("No items") + Text(stringResource(R.string.items_no_items)) } } else { Column() { @@ -62,7 +64,10 @@ fun ItemsStore( .fillMaxWidth() ) { Text( - text = "${currentCurrency.value} credits", + text = stringResource( + R.string.items_store_credits, + currentCurrency.value + ), modifier = Modifier .padding(8.dp) ) @@ -94,14 +99,15 @@ fun ItemsStore( scope.launch { Toast.makeText( application.applicationContext, - purchaseItem( - application.container.db, - myItems[selectedElementIndex!!], - currencyRepository + application.getString( + purchaseItem( + application.container.db, + myItems[selectedElementIndex!!], + currencyRepository + ) ), Toast.LENGTH_SHORT - ).show( - ) + ).show() } }, onClickCancel = { selectedElementIndex = null } @@ -113,9 +119,9 @@ suspend fun purchaseItem( db: AppDatabase, item: ItemDtos.ItemsWithQuantities, currencyRepository: CurrencyRepository -): String { - if (currencyRepository.currencyValue.first() < item.price) { - return "Not enough credits" +): Int { + return if (currencyRepository.currencyValue.first() < item.price) { + R.string.items_not_enough_credits } else { db .itemDao() @@ -129,6 +135,6 @@ suspend fun purchaseItem( currencyRepository.currencyValue.first() - item.price ) - return "Purchase successful!" + R.string.items_purchase_success } } \ No newline at end of file diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/MyItems.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/MyItems.kt index 39479a8..acf5c9e 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/MyItems.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/MyItems.kt @@ -17,11 +17,14 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.navigation.NavController import com.github.nacabaro.vbhelper.di.VBHelper import com.github.nacabaro.vbhelper.navigation.NavigationItems import com.github.nacabaro.vbhelper.source.ItemsRepository +import com.github.nacabaro.vbhelper.R + @Composable fun MyItems( @@ -39,7 +42,7 @@ fun MyItems( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier.fillMaxSize() ) { - Text("No items") + Text(stringResource(R.string.items_no_items)) } } else { LazyVerticalGrid( diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ObtainedItemDialog.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ObtainedItemDialog.kt index 9fbe416..67551c6 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ObtainedItemDialog.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/itemsScreen/ObtainedItemDialog.kt @@ -19,6 +19,8 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import com.github.nacabaro.vbhelper.dtos.ItemDtos +import androidx.compose.ui.res.stringResource +import com.github.nacabaro.vbhelper.R @Composable fun ObtainedItemDialog( @@ -82,7 +84,10 @@ fun ObtainedItemDialog( textAlign = TextAlign.Center, fontSize = MaterialTheme.typography.bodySmall.fontSize, fontFamily = MaterialTheme.typography.bodySmall.fontFamily, - text = "You have obtained ${obtainedItem.itemAmount} of this item", + text = stringResource( + R.string.obtained_item_you_have, + obtainedItem.itemAmount + ), modifier = Modifier .fillMaxWidth() .padding(top = 4.dp) @@ -91,7 +96,10 @@ fun ObtainedItemDialog( textAlign = TextAlign.Center, fontSize = MaterialTheme.typography.bodySmall.fontSize, fontFamily = MaterialTheme.typography.bodySmall.fontFamily, - text = "You also got $obtainedCurrency credits", + text = stringResource( + R.string.obtained_item_you_also_got_credits, + obtainedCurrency + ), modifier = Modifier .fillMaxWidth() .padding(bottom = 4.dp) @@ -101,7 +109,7 @@ fun ObtainedItemDialog( modifier = Modifier .fillMaxWidth() ) { - Text(text = "Dismiss") + Text(text = stringResource(R.string.obtained_item_dismiss)) } } } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ChooseConnectionScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ChooseConnectionScreen.kt index 34180ba..d2025aa 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ChooseConnectionScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ChooseConnectionScreen.kt @@ -12,10 +12,12 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.NavController import com.github.nacabaro.vbhelper.components.TopBanner +import com.github.nacabaro.vbhelper.R @Composable fun ChooseConnectOption( @@ -26,7 +28,7 @@ fun ChooseConnectOption( Scaffold( topBar = { TopBanner( - text = "Scan a Vital Bracelet", + text = stringResource(R.string.scan_title), onBackClick = { navController.popBackStack() } @@ -41,13 +43,13 @@ fun ChooseConnectOption( .padding(contentPadding) ) { ScanButton( - text = "Vital Bracelet to App", + text = stringResource(R.string.scan_vb_to_app), disabled = onClickRead == null, onClick = onClickRead?: { }, ) Spacer(modifier = Modifier.height(16.dp)) ScanButton( - text = "App to Vital Bracelet", + text = stringResource(R.string.scan_app_to_vb), disabled = onClickWrite == null, onClick = onClickWrite?: { }, ) diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ScanScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ScanScreen.kt index 8dec3b6..72fc520 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ScanScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ScanScreen.kt @@ -25,6 +25,7 @@ import com.github.nacabaro.vbhelper.source.proto.Secrets import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.withContext +import com.github.nacabaro.vbhelper.R const val SCAN_SCREEN_ACTIVITY_LIFECYCLE_LISTENER = "SCAN_SCREEN_ACTIVITY_LIFECYCLE_LISTENER" @@ -93,9 +94,9 @@ fun ScanScreen( else -> { { if(secrets == null) { - Toast.makeText(context, "Secrets is not yet initialized. Try again.", Toast.LENGTH_SHORT).show() + Toast.makeText(context, context.getString(R.string.scan_secrets_not_initialized), Toast.LENGTH_SHORT).show() } else if(secrets?.isMissingSecrets() == true) { - Toast.makeText(context, "Secrets not yet imported. Go to Settings and Import APK", Toast.LENGTH_SHORT).show() + Toast.makeText(context, context.getString(R.string.scan_secrets_not_imported), Toast.LENGTH_SHORT).show() } else { readingScreen = true // kicks off nfc adapter in DisposableEffect } @@ -107,9 +108,9 @@ fun ScanScreen( else -> { { if(secrets == null) { - Toast.makeText(context, "Secrets is not yet initialized. Try again.", Toast.LENGTH_SHORT).show() + Toast.makeText(context, context.getString(R.string.scan_secrets_not_initialized), Toast.LENGTH_SHORT).show() } else if(secrets?.isMissingSecrets() == true) { - Toast.makeText(context, "Secrets not yet imported. Go to Settings and Import APK", Toast.LENGTH_SHORT).show() + Toast.makeText(context, context.getString(R.string.scan_secrets_not_imported), Toast.LENGTH_SHORT).show() } else { writingScreen = true // kicks off nfc adapter in DisposableEffect } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ScanScreenControllerImpl.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ScanScreenControllerImpl.kt index 9ce42bc..487ab2d 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ScanScreenControllerImpl.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/ScanScreenControllerImpl.kt @@ -25,6 +25,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch +import com.github.nacabaro.vbhelper.R class ScanScreenControllerImpl( override val secretsFlow: Flow, @@ -38,7 +39,7 @@ class ScanScreenControllerImpl( init { val maybeNfcAdapter = NfcAdapter.getDefaultAdapter(componentActivity) if (maybeNfcAdapter == null) { - Toast.makeText(componentActivity, "No NFC on device!", Toast.LENGTH_SHORT).show() + Toast.makeText(componentActivity, componentActivity.getString(R.string.scan_no_nfc_on_device), Toast.LENGTH_SHORT).show() } nfcAdapter = maybeNfcAdapter checkSecrets() @@ -94,7 +95,7 @@ class ScanScreenControllerImpl( val nfcData = NfcA.get(tag) if (nfcData == null) { componentActivity.runOnUiThread { - Toast.makeText(componentActivity, "Tag detected is not VB", Toast.LENGTH_SHORT).show() + Toast.makeText(componentActivity, componentActivity.getString(R.string.scan_tag_not_vb), Toast.LENGTH_SHORT).show() } } nfcData.connect() @@ -112,7 +113,7 @@ class ScanScreenControllerImpl( componentActivity.lifecycleScope.launch(Dispatchers.IO) { if(secretsFlow.stateIn(componentActivity.lifecycleScope).value.isMissingSecrets()) { componentActivity.runOnUiThread { - Toast.makeText(componentActivity, "Missing Secrets. Go to settings and import Vital Arena APK", Toast.LENGTH_SHORT).show() + Toast.makeText(componentActivity, componentActivity.getString(R.string.scan_missing_secrets), Toast.LENGTH_SHORT).show() } } } @@ -135,10 +136,10 @@ class ScanScreenControllerImpl( tagCommunicator.sendCharacter(castNfcCharacter) } onComplete.invoke() - "Sent character successfully!" + componentActivity.getString(R.string.scan_sent_character_success) } catch (e: Throwable) { Log.e("TAG", e.stackTraceToString()) - "Whoops" + componentActivity.getString(R.string.scan_error_generic) } } } @@ -151,13 +152,13 @@ class ScanScreenControllerImpl( handleTag(secrets) { tagCommunicator -> tagCommunicator.prepareDIMForCharacter(nfcCharacter.dimId) onComplete.invoke() - "Sent DIM successfully!" + componentActivity.getString(R.string.scan_sent_dim_success) } } // EXTRACTED DIRECTLY FROM EXAMPLE APP private fun showWirelessSettings() { - Toast.makeText(componentActivity, "NFC must be enabled", Toast.LENGTH_SHORT).show() + Toast.makeText(componentActivity, componentActivity.getString(R.string.scan_nfc_must_be_enabled), Toast.LENGTH_SHORT).show() componentActivity.startActivity(Intent(Settings.ACTION_WIRELESS_SETTINGS)) } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/ActionScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/ActionScreen.kt index 8d216f2..5aaa7e7 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/ActionScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/ActionScreen.kt @@ -10,8 +10,10 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.github.nacabaro.vbhelper.components.TopBanner +import com.github.nacabaro.vbhelper.R @Composable fun ActionScreen( @@ -33,12 +35,12 @@ fun ActionScreen( .padding(innerPadding) .fillMaxSize() ) { - Text("Place your Vital Bracelet near the reader...") + Text(stringResource(R.string.action_place_near_reader)) Button( onClick = onClickCancel, modifier = Modifier.padding(16.dp) ) { - Text("Cancel") + Text(stringResource(R.string.action_cancel)) } } } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/ReadCharacterScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/ReadCharacterScreen.kt index 757cc49..9c37fea 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/ReadCharacterScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/ReadCharacterScreen.kt @@ -11,9 +11,11 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import com.github.nacabaro.vbhelper.components.TopBanner +import com.github.nacabaro.vbhelper.R @Composable fun ReadCharacterScreen( @@ -23,7 +25,7 @@ fun ReadCharacterScreen( Scaffold( topBar = { TopBanner( - text = "Read character", + text = stringResource(R.string.read_character_title), onBackClick = onClickCancel ) } @@ -36,12 +38,12 @@ fun ReadCharacterScreen( .fillMaxSize() ) { Text( - text = "Prepare your device!", + text = stringResource(R.string.read_character_prepare_device), textAlign = TextAlign.Center ) Text( - text = "Go to connect and when ready press confirm!", + text = stringResource(R.string.read_character_go_to_connect), textAlign = TextAlign.Center ) @@ -52,7 +54,7 @@ fun ReadCharacterScreen( Button( onClick = onClickConfirm, ) { - Text("Confirm") + Text(stringResource(R.string.read_character_confirm)) } } } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/ReadingScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/ReadingScreen.kt index 58432ce..633be72 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/ReadingScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/ReadingScreen.kt @@ -7,11 +7,14 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.ui.res.stringResource import com.github.nacabaro.vbhelper.ActivityLifecycleListener import com.github.nacabaro.vbhelper.domain.card.Card import com.github.nacabaro.vbhelper.screens.cardScreen.ChooseCard import com.github.nacabaro.vbhelper.screens.scanScreen.SCAN_SCREEN_ACTIVITY_LIFECYCLE_LISTENER import com.github.nacabaro.vbhelper.screens.scanScreen.ScanScreenController +import com.github.nacabaro.vbhelper.R + @Composable fun ReadingScreen( @@ -92,7 +95,7 @@ fun ReadingScreen( } if (readingScreen) { - ActionScreen("Reading character") { + ActionScreen(topBannerText = stringResource(R.string.reading_character_title),) { readingScreen = false scanScreenController.cancelRead() onCancel() diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/WriteCardScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/WriteCardScreen.kt index db47745..78964f9 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/WriteCardScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/WriteCardScreen.kt @@ -24,6 +24,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.FilterQuality import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.github.nacabaro.vbhelper.components.TopBanner import com.github.nacabaro.vbhelper.di.VBHelper @@ -31,6 +32,7 @@ import com.github.nacabaro.vbhelper.domain.card.Card import com.github.nacabaro.vbhelper.source.ScanRepository import com.github.nacabaro.vbhelper.utils.BitmapData import com.github.nacabaro.vbhelper.utils.getImageBitmap +import com.github.nacabaro.vbhelper.R @Composable fun WriteCardScreen( @@ -55,7 +57,7 @@ fun WriteCardScreen( Scaffold( topBar = { TopBanner( - text = "Writing card details", + text = stringResource(R.string.write_card_title), onBackClick = onClickCancel ) } @@ -101,7 +103,9 @@ fun WriteCardScreen( ) { Image( bitmap = charaImageBitmapData.imageBitmap, - contentDescription = "Icon", + contentDescription = stringResource( + R.string.write_card_icon_description + ), modifier = Modifier .size(charaImageBitmapData.dpWidth) .padding(8.dp), @@ -115,8 +119,14 @@ fun WriteCardScreen( ) Column { - Text("Get your device Ready!") - Text("You will need ${cardDetails.name} card!") + Text(stringResource(R.string.write_card_device_ready)) + Text( + stringResource( + R.string.write_card_required_card, + cardDetails.name + ) + ) + } } @@ -125,7 +135,7 @@ fun WriteCardScreen( Button( onClick = onClickConfirm, ) { - Text("Confirm") + Text(stringResource(R.string.write_card_confirm)) } } } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/WriteCharacterScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/WriteCharacterScreen.kt index abd2606..59db0ef 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/WriteCharacterScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/WriteCharacterScreen.kt @@ -25,6 +25,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.FilterQuality import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.github.nacabaro.vbhelper.components.TopBanner import com.github.nacabaro.vbhelper.di.VBHelper @@ -32,6 +33,8 @@ import com.github.nacabaro.vbhelper.domain.card.Card import com.github.nacabaro.vbhelper.source.ScanRepository import com.github.nacabaro.vbhelper.utils.BitmapData import com.github.nacabaro.vbhelper.utils.getImageBitmap +import com.github.nacabaro.vbhelper.R + @Composable fun WriteCharacterScreen( @@ -56,7 +59,7 @@ fun WriteCharacterScreen( Scaffold( topBar = { TopBanner( - text = "Writing character", + text = stringResource(R.string.write_character_title), onBackClick = onClickCancel ) } @@ -102,7 +105,7 @@ fun WriteCharacterScreen( ) { Image( bitmap = charaImageBitmapData.imageBitmap, - contentDescription = "Icon", + contentDescription = stringResource(R.string.write_character_icon_description), modifier = Modifier .size(charaImageBitmapData.dpWidth) .padding(8.dp), @@ -116,8 +119,8 @@ fun WriteCharacterScreen( ) Column { - Text("Card installed successfully!!") - Text("Wait until your device is ready, then tap 'Confirm'") + Text(stringResource(R.string.write_character_success)) + Text(stringResource(R.string.write_character_wait_ready)) } } @@ -128,7 +131,7 @@ fun WriteCharacterScreen( Button( onClick = onClickConfirm, ) { - Text("Confirm") + Text(stringResource(R.string.write_character_confirm)) } } } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/WritingScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/WritingScreen.kt index 9680f41..8542bd0 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/WritingScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/screens/WritingScreen.kt @@ -17,6 +17,8 @@ import com.github.nacabaro.vbhelper.screens.scanScreen.ScanScreenController import com.github.nacabaro.vbhelper.source.StorageRepository import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext +import androidx.compose.ui.res.stringResource +import com.github.nacabaro.vbhelper.R @Composable fun WritingScreen( @@ -97,7 +99,7 @@ fun WritingScreen( ) } else if (!isDoneSendingCard) { writing = true - ActionScreen("Sending card") { + ActionScreen( topBannerText = stringResource(R.string.sending_card_title)) { scanScreenController.cancelRead() onCancel() } @@ -115,7 +117,7 @@ fun WritingScreen( ) } else if (!isDoneWritingCharacter) { writing = true - ActionScreen("Writing character") { + ActionScreen(topBannerText = stringResource(R.string.writing_character_action_title)) { isDoneSendingCard = false scanScreenController.cancelRead() onCancel() diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/settingsScreen/CreditsScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/settingsScreen/CreditsScreen.kt index 1b8f41a..ad09456 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/settingsScreen/CreditsScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/settingsScreen/CreditsScreen.kt @@ -6,8 +6,10 @@ import androidx.compose.foundation.layout.padding import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.navigation.NavController import com.github.nacabaro.vbhelper.components.TopBanner +import com.github.nacabaro.vbhelper.R @Composable fun CreditsScreen( @@ -16,7 +18,7 @@ fun CreditsScreen( Scaffold ( topBar = { TopBanner( - text = "Credits", + text = stringResource(R.string.credits_title), onBackClick = { navController.popBackStack() } @@ -29,13 +31,13 @@ fun CreditsScreen( modifier = Modifier .padding(top = contentPadding.calculateTopPadding()) ) { - SettingsSection("Reverse engineering") - SettingsEntry(title = "cyanic", description = "Reversed the firmware and helped us during development.") { } - SettingsSection("Application development") - SettingsEntry(title = "cfogrady", description = "Developed vb-lib-nfc and part of this application.") { } - SettingsEntry(title = "nacabaro", description = "Developed this application.") { } - SettingsEntry(title = "lightheel", description = "Developing the battling part for this application, including server. Still in the works.") { } - SettingsEntry(title = "shvstrz", description = "Designing the app icon in SVG.") { } + SettingsSection(stringResource(R.string.credits_section_reverse_engineering)) + SettingsEntry(title = "cyanic", description = stringResource(R.string.credits_cyanic_description)) { } + SettingsSection(stringResource(R.string.credits_section_app_development)) + SettingsEntry(title = "cfogrady", description = stringResource(R.string.credits_cfogrady_description)) { } + SettingsEntry(title = "nacabaro", description = stringResource(R.string.credits_nacabaro_description)) { } + SettingsEntry(title = "lightheel", description = stringResource(R.string.credits_lightheel_description)) { } + SettingsEntry(title = "shvstrz", description = stringResource(R.string.credits_shvstrz_description)) { } } } } \ No newline at end of file diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/settingsScreen/SettingsScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/settingsScreen/SettingsScreen.kt index 691e610..6a71765 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/settingsScreen/SettingsScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/settingsScreen/SettingsScreen.kt @@ -16,12 +16,15 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.NavController import com.github.nacabaro.vbhelper.components.TopBanner import com.github.nacabaro.vbhelper.navigation.NavigationItems +import com.github.nacabaro.vbhelper.R + @Composable fun SettingsScreen( @@ -30,10 +33,10 @@ fun SettingsScreen( ) { val context = LocalContext.current - Scaffold ( + Scaffold( topBar = { TopBanner( - text = "Settings", + text = stringResource(R.string.settings_title), onBackClick = { navController.popBackStack() } @@ -42,34 +45,57 @@ fun SettingsScreen( modifier = Modifier .fillMaxSize() ) { contentPadding -> - Column ( + Column( modifier = Modifier .padding(top = contentPadding.calculateTopPadding()) .fillMaxSize() .verticalScroll(rememberScrollState()) ) { - SettingsSection("NFC Communication") - SettingsEntry(title = "Import APK", description = "Import Secrets From Vital Arena 2.1.0 APK") { + SettingsSection(title = stringResource(R.string.settings_section_nfc)) + SettingsEntry( + title = stringResource(R.string.settings_import_apk_title), + description = stringResource(R.string.settings_import_apk_desc) + ) { settingsScreenController.onClickImportApk() } - SettingsSection("DiM/BEm management") - SettingsEntry(title = "Import card", description = "Import DiM/BEm card file") { + + SettingsSection(title = stringResource(R.string.settings_section_dim_bem)) + SettingsEntry( + title = stringResource(R.string.settings_import_card_title), + description = stringResource(R.string.settings_import_card_desc) + ) { settingsScreenController.onClickImportCard() } - SettingsSection("About and credits") - SettingsEntry(title = "Credits", description = "Credits") { + + SettingsSection(title = stringResource(R.string.settings_section_about)) + SettingsEntry( + title = stringResource(R.string.settings_credits_title), + description = stringResource(R.string.settings_credits_desc) + ) { navController.navigate(NavigationItems.Credits.route) } - SettingsEntry(title = "About", description = "About") { + SettingsEntry( + title = stringResource(R.string.settings_about_title), + description = stringResource(R.string.settings_about_desc) + ) { val browserIntent = Intent( - Intent.ACTION_VIEW, Uri.parse("https://github.com/nacabaro/vbhelper/")) + Intent.ACTION_VIEW, + Uri.parse("https://github.com/nacabaro/vbhelper/") + ) context.startActivity(browserIntent) } - SettingsSection("Data management") - SettingsEntry(title = "Export data", description = "Export application database") { + + SettingsSection(title = stringResource(R.string.settings_section_data)) + SettingsEntry( + title = stringResource(R.string.settings_export_data_title), + description = stringResource(R.string.settings_export_data_desc) + ) { settingsScreenController.onClickOpenDirectory() } - SettingsEntry(title = "Import data", description = "Import application database") { + SettingsEntry( + title = stringResource(R.string.settings_import_data_title), + description = stringResource(R.string.settings_import_data_desc) + ) { settingsScreenController.onClickImportDatabase() } } @@ -101,9 +127,9 @@ fun SettingsEntry( fun SettingsSection( title: String ) { - Box ( + Box( modifier = Modifier - .padding(start = 16.dp) + .padding(start = 16.dp, top = 16.dp, bottom = 4.dp) ) { Text( text = title, @@ -112,4 +138,4 @@ fun SettingsSection( color = MaterialTheme.colorScheme.primary ) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/storageScreen/StorageDialog.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/storageScreen/StorageDialog.kt index eebb1e6..33ac860 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/storageScreen/StorageDialog.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/storageScreen/StorageDialog.kt @@ -33,6 +33,9 @@ import com.github.nacabaro.vbhelper.source.StorageRepository import com.github.nacabaro.vbhelper.utils.BitmapData import com.github.nacabaro.vbhelper.utils.getBitmap import kotlinx.coroutines.launch +import androidx.compose.ui.res.stringResource +import com.github.nacabaro.vbhelper.R + @Composable fun StorageDialog( @@ -94,7 +97,7 @@ fun StorageDialog( val dpSize = (characterSprite.value!!.width * 4 / density).dp Image( bitmap = imageBitmap, - contentDescription = "Character image", + contentDescription = stringResource(R.string.storage_character_image_description), filterQuality = FilterQuality.None, modifier = Modifier .size(dpSize) @@ -104,7 +107,7 @@ fun StorageDialog( val nameDpSize = (characterName.value!!.width * 4 / density).dp Image( bitmap = nameImageBitmap, - contentDescription = "Character image", + contentDescription = stringResource(R.string.storage_character_image_description), filterQuality = FilterQuality.None, modifier = Modifier .size(nameDpSize) @@ -121,7 +124,7 @@ fun StorageDialog( modifier = Modifier .weight(1f) ) { - Text(text = "Send to watch") + Text(text = stringResource(R.string.storage_send_to_watch)) } Spacer( modifier = Modifier @@ -130,7 +133,7 @@ fun StorageDialog( Button( onClick = onClickSetActive, ) { - Text(text = "Set active") + Text(text = stringResource(R.string.storage_set_active)) } } Button( @@ -140,21 +143,21 @@ fun StorageDialog( modifier = Modifier .fillMaxWidth() ) { - Text(text = "Send on adventure") + Text(text = stringResource(R.string.storage_send_on_adventure)) } Button( modifier = Modifier .fillMaxWidth(), onClick = onClickDelete ) { - Text(text = "Delete character") + Text(text = stringResource(R.string.storage_delete_character)) } Button( modifier = Modifier .fillMaxWidth(), onClick = onDismissRequest ) { - Text(text = "Close") + Text(text = stringResource(R.string.storage_close)) } } } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/storageScreen/StorageScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/storageScreen/StorageScreen.kt index 9a7bde8..e33e6dd 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/storageScreen/StorageScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/storageScreen/StorageScreen.kt @@ -34,6 +34,8 @@ import com.github.nacabaro.vbhelper.navigation.NavigationItems import com.github.nacabaro.vbhelper.screens.adventureScreen.AdventureScreenControllerImpl import com.github.nacabaro.vbhelper.source.StorageRepository import com.github.nacabaro.vbhelper.utils.BitmapData +import androidx.compose.ui.res.stringResource +import com.github.nacabaro.vbhelper.R @Composable @@ -51,7 +53,7 @@ fun StorageScreen( Scaffold ( topBar = { TopBanner( - text = "My characters", + text = stringResource(R.string.storage_my_characters_title), onAdventureClick = { navController.navigate(NavigationItems.Adventure.route) } @@ -67,7 +69,7 @@ fun StorageScreen( .fillMaxSize() ) { Text( - text = "Nothing to see here", + text = stringResource(R.string.storage_nothing_to_see_here), textAlign = TextAlign.Center, modifier = Modifier ) @@ -92,7 +94,7 @@ fun StorageScreen( } else { Toast.makeText( application, - "This character is in an adventure", + application.getString(R.string.storage_in_adventure_toast), Toast.LENGTH_SHORT ).show() navController.navigate( diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml new file mode 100644 index 0000000..fdc0104 --- /dev/null +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -0,0 +1,220 @@ + + VBHelper + + Este aplicativo ainda está em versão alfa e não está completo. Não o use para armazenar personagens importantes para você, pois futuras atualizações podem apagar todos os seus personagens. Desculpe pelo transtorno! + + + O aplicativo agora deve funcionar com o VB original e com o VH. + + + Obrigado pela compreensão e pela paciência. Atenciosamente, a equipe de desenvolvimento. + + Fechar + + + Escanear + Batalhas + Início + Dex + Aventura do card + Armazenamento + Configurações + Visualizador + Card + Itens + Meus itens + Loja de itens + Aplicar item + Aventura + Créditos + + Aventura + Nada para ver aqui + + VB Helper + + Um dos seus personagens terminou a missão de aventura! + + + + Os segredos ainda não foram inicializados. Tente novamente. + + + Os segredos ainda não foram importados. Vá em Configurações e importe o APK. + + + Escanear um Vital Bracelet + Vital Bracelet para o app + App para o Vital Bracelet + + O dispositivo não possui NFC! + A tag detectada não é do Vital Bracelet. + + Segredos ausentes. Vá em Configurações e importe o APK do Vital Arena. + + Personagem enviado com sucesso! + Ops! + DIM enviado com sucesso! + O NFC precisa estar ativado. + + Configurações + + Comunicação NFC + Gerenciamento de DiM/BEm + Sobre e créditos + Gerenciamento de dados + + Importar APK + + Importar segredos do APK do Vital Arena 2.1.0 + + + Importar card + + Importar arquivo de card DiM/BEm + + + Créditos + Créditos + + Sobre + Sobre + + Exportar dados + + Exportar banco de dados do aplicativo + + + Importar dados + + Importar banco de dados do aplicativo + + + Créditos + Engenharia reversa + Desenvolvimento do aplicativo + + + Reverteu o firmware e nos ajudou durante o desenvolvimento. + + + Desenvolveu vb-lib-nfc e parte deste aplicativo. + + + Desenvolveu este aplicativo. + + + Está desenvolvendo a parte de batalhas deste aplicativo, incluindo o servidor. Ainda em desenvolvimento. + + + Responsável pelo design do ícone do aplicativo em SVG. + + + Aproxime o seu Vital Bracelet do leitor... + Cancelar + + Ler personagem + Prepare seu dispositivo! + Vá em conectar e, quando estiver pronto, pressione confirmar! + Confirmar + + Lendo personagem + + Escrevendo detalhes do cartão + Ícone do cartão + Prepare o seu dispositivo! + Você vai precisar do cartão %1$s! + Confirmar + + Escrevendo personagem + Ícone do personagem + + Cartão instalado com sucesso!! + + + Aguarde até que seu dispositivo esteja pronto e então toque em Confirmar + + Confirmar + + Enviando cartão + Escrevendo personagem + + Itens + Nenhum item + + %1$d créditos + Créditos insuficientes + Compra realizada com sucesso! + + Você obteve %1$d deste item + Você também recebeu %1$d créditos + Fechar + + Escolher personagem + Item aplicado! + + Custa %1$d créditos + Você tem %1$d deste item + Usar item + Comprar + Cancelar + + Batalhas online + Em breve + + Meus cards + + Personagens descobertos + + Ícone do personagem + Nome do personagem + HP: %1$d, BP: %2$d, AP: %3$d + Stg: %1$s, Atr: %2$s + \?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\? + Stg: -, Atr: - + HP: -, BP: -, AP: - + + Tr: %1$d; Bt: %2$d; Vr: %3$d; Wr: %4$d%%; Ct: %5$dh + + AdvLvl %1$d + Fusões + Fechar + + Missões de aventura + + %1$d de %2$d personagens obtidos + Editar card + Excluir card + + Meus personagens + Nada para ver aqui + Este personagem está em uma aventura + + Imagem do personagem + Enviar para o relógio + Definir como ativo + Enviar para aventura + Excluir personagem + Fechar + + Vitais + Troféus + Humor + Próximo timer + % vitórias totais + % vitórias fase atual + Missões especiais + + Nenhuma missão selecionada + Ande %1$d passos + Lute %1$d vezes + Vença %1$d batalhas + Ganhe %1$d vitals + Andou %1$d passos + Lutou %1$d vezes + Venceu %1$d batalhas + Ganhou %1$d vitals + Ícone de missão especial + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9dbd136..c9f31a3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,226 @@ VBHelper + + This application is currently in alpha and it is not complete. Do not use it to store important characters for you, as any future updates might delete all your characters. Sorry for the inconvenience! + + + + The application should now work with the original VB and the VH. + + + + Thank you for your understanding and patience. Sincerely, the dev team. + + + + Dismiss + + + Scan + Battle + Home + Dex + Card adventure + Storage + Settings + Viewer + Card + Items + My items + Items store + Apply item + Adventure + Credits + + Adventure + Nothing to see here + + VB Helper + + One of your characters has finished their adventure mission! + + + + Secrets is not yet initialized. Try again. + + + Secrets not yet imported. Go to Settings and Import APK. + + + Scan a Vital Bracelet + Vital Bracelet to App + App to Vital Bracelet + + No NFC on device! + Tag detected is not VB + + Missing Secrets. Go to settings and import Vital Arena APK. + + Sent character successfully! + Whoops + Sent DIM successfully! + NFC must be enabled + + + Settings + + NFC Communication + DiM/BEm management + About and credits + Data management + + Import APK + + Import Secrets From Vital Arena 2.1.0 APK + + + Import card + + Import DiM/BEm card file + + + Credits + Credits + + About + About + + Export data + + Export application database + + + Import data + + Import application database + + + Credits + Reverse engineering + Application development + + + Reversed the firmware and helped us during development. + + + Developed vb-lib-nfc and part of this application. + + + Developed this application. + + + Developing the battling part for this application, including server. Still in the works. + + + Designing the app icon in SVG. + + + Place your Vital Bracelet near the reader... + Cancel + + Read character + Prepare your device! + Go to connect and when ready press confirm! + Confirm + + Reading character + + Writing card details + Card icon + Get your device ready! + You will need %1$s card! + Confirm + + + Writing character + Character icon + + Card installed successfully!! + + + Wait until your device is ready, then tap Confirm + + Confirm + + Sending card + Writing character + + Items + No items + + %1$d credits + Not enough credits + Purchase successful! + + You have obtained %1$d of this item + You also got %1$d credits + Dismiss + + Choose character + Item applied! + + Costs %1$d credits + You have %1$d of this item + Use item + Purchase + Cancel + + Online battles + Coming soon + + My cards + + Discovered characters + + + Character icon + Character name + HP: %1$d, BP: %2$d, AP: %3$d + Stg: %1$s, Atr: %2$s + \?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\? + Stg: -, Atr: - + HP: -, BP: -, AP: - + + Tr: %1$d; Bt: %2$d; Vr: %3$d; Wr: %4$d%%; Ct: %5$dh + + AdvLvl %1$d + Fusions + Close + + Adventure missions + + %1$d of %2$d characters obtained + Edit card + Delete card + + My characters + Nothing to see here + This character is in an adventure + + Character image + Send to watch + Set active + Send on adventure + Delete character + Close + + Vitals + Trophies + Mood + Next timer + Total battle win % + Current phase win % + Special missions + + No mission selected + Walk %1$d steps + Battle %1$d times + Win %1$d battles + Earn %1$d vitals + Walked %1$d steps + Battled %1$d times + Won %1$d battles + Earned %1$d vitals + Special mission icon + \ No newline at end of file