diff --git a/app/src/main/java/app/terraplanet/terraplanet/BaseApplication.kt b/app/src/main/java/app/terraplanet/terraplanet/BaseApplication.kt
index a7b6e57..dd66bed 100644
--- a/app/src/main/java/app/terraplanet/terraplanet/BaseApplication.kt
+++ b/app/src/main/java/app/terraplanet/terraplanet/BaseApplication.kt
@@ -42,8 +42,8 @@ class BaseApplication : Application() {
}
}
- fun startServer(auth: Auth, status: (String) -> Unit, result: (Boolean) -> Unit) {
- status("Server starting...")
+ fun startServer(auth: Auth, status: (Int) -> Unit, result: (Boolean) -> Unit) {
+ status(R.string.server_status_starting)
ioThread = Thread {
val nodeDir = applicationContext.filesDir.absolutePath + "/nodejs-project"
val nodeDirReference = File(nodeDir)
@@ -51,7 +51,7 @@ class BaseApplication : Application() {
AppUtil.deleteFolderRecursively(File(nodeDir))
}
AppUtil.copyAssetFolder(applicationContext.assets, "nodejs-project", nodeDir)
- uiThread.post { status("Server connecting...") }
+ uiThread.post { status(R.string.server_status_connecting) }
try {
startNodeWithArguments(
arrayOf("node", "$nodeDir/bin/www", auth.username, auth.password)
@@ -74,25 +74,25 @@ class BaseApplication : Application() {
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
disposable?.dispose()
- status("Server connected")
+ status(R.string.server_status_connected)
result(ping)
}, {
disposable?.dispose()
- status("Server error")
+ status(R.string.server_status_error)
result(ping)
Log.e(LOG_E, "${it.message}")
})
}
- fun checkServerStatus(status: (String) -> Unit, result: (Boolean) -> Unit) {
+ fun checkServerStatus(status: (Int) -> Unit, result: (Boolean) -> Unit) {
val auth = Storage.getAuth()
var value: Boolean
- status("Server status...")
+ status(R.string.server_status)
api.getStatus()
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ data ->
value = data.status == OK
- if (value) status("Server running...")
+ if (value) status(R.string.server_status_running)
result(value)
}, {
value = false
diff --git a/app/src/main/java/app/terraplanet/terraplanet/MainActivity.kt b/app/src/main/java/app/terraplanet/terraplanet/MainActivity.kt
index 403df25..7a5b37d 100644
--- a/app/src/main/java/app/terraplanet/terraplanet/MainActivity.kt
+++ b/app/src/main/java/app/terraplanet/terraplanet/MainActivity.kt
@@ -6,6 +6,7 @@ import android.os.Build
import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.annotation.RequiresApi
+import androidx.annotation.StringRes
import androidx.biometric.BiometricPrompt
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Column
@@ -19,6 +20,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.fragment.app.FragmentActivity
@@ -35,10 +37,10 @@ import app.terraplanet.terraplanet.util.bitmapDrawable
import app.terraplanet.terraplanet.viewmodel.State
import com.google.accompanist.systemuicontroller.rememberSystemUiController
-data class LoginState(val state: State, val status: String, val loading: Boolean)
+data class LoginState(val state: State, @StringRes val statusResId: Int, val loading: Boolean)
class MainActivity : FragmentActivity() {
- var status = mutableStateOf(LoginState(State.LOADING, "Server status...", true))
+ var status = mutableStateOf(LoginState(State.LOADING, R.string.server_status, true))
val app by lazy { (applicationContext as BaseApplication) }
val api = APIServiceImpl()
@@ -69,7 +71,7 @@ class MainActivity : FragmentActivity() {
goToInitScreen()
}
} else {
- status.value = LoginState(State.FAILED, "Server failed. Close the app and try again", false)
+ status.value = LoginState(State.FAILED, R.string.server_status_failed, false)
}
})
}
@@ -96,18 +98,18 @@ class MainActivity : FragmentActivity() {
object : BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
super.onAuthenticationSucceeded(result)
- status.value = LoginState(State.SUCCESS, "Auth Successful", false)
+ status.value = LoginState(State.SUCCESS, R.string.biometrics_successful, false)
goToHomeScreen()
}
override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
super.onAuthenticationError(errorCode, errString)
- status.value = LoginState(State.CANCELLED, "Auth Canceled", false)
+ status.value = LoginState(State.CANCELLED, R.string.biometrics_canceled, false)
}
override fun onAuthenticationFailed() {
super.onAuthenticationFailed()
- status.value = LoginState(State.CANCELLED, "Error. Try Again", false)
+ status.value = LoginState(State.CANCELLED, R.string.biometrics_error, false)
}
}
@@ -115,16 +117,16 @@ class MainActivity : FragmentActivity() {
private fun launchBiometric(context: Context, authenticationCallback: BiometricPrompt.AuthenticationCallback) {
if (checkBiometricSupport(context)) {
val biometricPromptInfo = BiometricPrompt.PromptInfo.Builder()
- .setTitle("Terra Planet")
- .setDescription("Authenticate with Biometrics")
- .setNegativeButtonText("Cancel")
+ .setTitle(getString(R.string.app_name))
+ .setDescription(getString(R.string.biometrics_authenticate))
+ .setNegativeButtonText(getString(R.string.biometrics_cancel))
.setConfirmationRequired(true)
.build()
val biometricPrompt = BiometricPrompt(this, mainExecutor, authenticationCallback)
biometricPrompt.authenticate(biometricPromptInfo)
} else {
- status.value = LoginState(State.SUCCESS, "Auth Successful", false)
+ status.value = LoginState(State.SUCCESS, R.string.biometrics_successful, false)
goToHomeScreen()
}
}
@@ -166,7 +168,7 @@ private fun LoadingScreen(state: LoginState, onBiometrics: () -> Unit) {
}
}
VSpacer(20)
- Text(state.status, color = Color.White, textAlign = TextAlign.Center)
+ Text(stringResource(state.statusResId), color = Color.White, textAlign = TextAlign.Center)
VSpacer(50)
}
}
diff --git a/app/src/main/java/app/terraplanet/terraplanet/nav/Screen.kt b/app/src/main/java/app/terraplanet/terraplanet/nav/Screen.kt
index c425ea4..edc1151 100644
--- a/app/src/main/java/app/terraplanet/terraplanet/nav/Screen.kt
+++ b/app/src/main/java/app/terraplanet/terraplanet/nav/Screen.kt
@@ -1,9 +1,11 @@
package app.terraplanet.terraplanet.nav
+import androidx.annotation.DrawableRes
+import androidx.annotation.StringRes
import app.terraplanet.terraplanet.R
-sealed class Screen(val title: String, val icon: Int, val route: String) {
- object Wallet : Screen("Wallet", icon = R.drawable.tab_wallet, route = "wallet_tab")
- object Transactions : Screen("Transactions", icon = R.drawable.tab_transactions, route = "transactions_tab")
- object Settings : Screen("Settings", icon = R.drawable.tab_settings, route = "settings_tab")
+sealed class Screen(@StringRes val title: Int, @DrawableRes val icon: Int, val route: String) {
+ object Wallet : Screen(R.string.bottom_navigation_wallet, icon = R.drawable.tab_wallet, route = "wallet_tab")
+ object Transactions : Screen(R.string.bottom_navigation_transactions, icon = R.drawable.tab_transactions, route = "transactions_tab")
+ object Settings : Screen(R.string.bottom_navigation_settings, icon = R.drawable.tab_settings, route = "settings_tab")
}
\ No newline at end of file
diff --git a/app/src/main/java/app/terraplanet/terraplanet/screen/CameraActivity.kt b/app/src/main/java/app/terraplanet/terraplanet/screen/CameraActivity.kt
index ef0a1ff..9b1469a 100644
--- a/app/src/main/java/app/terraplanet/terraplanet/screen/CameraActivity.kt
+++ b/app/src/main/java/app/terraplanet/terraplanet/screen/CameraActivity.kt
@@ -33,6 +33,7 @@ import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.layout.onSizeChanged
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.IntSize
@@ -40,6 +41,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.ui.viewinterop.AndroidView
import androidx.core.content.ContextCompat
+import app.terraplanet.terraplanet.R
import app.terraplanet.terraplanet.ui.theme.TerraPlanetTheme
import app.terraplanet.terraplanet.ui.util.Center
import app.terraplanet.terraplanet.ui.util.Expandable
@@ -157,7 +159,7 @@ fun CameraScreen(onResult: (String) -> Unit) {
) {}
VSpacer(20)
Text(
- text = "Scan a Terra address QR Code",
+ stringResource(R.string.camera_qr_scan),
textAlign = TextAlign.Center,
color = Color.White,
fontSize = 18.sp,
diff --git a/app/src/main/java/app/terraplanet/terraplanet/screen/HomeActivity.kt b/app/src/main/java/app/terraplanet/terraplanet/screen/HomeActivity.kt
index 0733418..0f7b737 100644
--- a/app/src/main/java/app/terraplanet/terraplanet/screen/HomeActivity.kt
+++ b/app/src/main/java/app/terraplanet/terraplanet/screen/HomeActivity.kt
@@ -11,15 +11,19 @@ import androidx.compose.material.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.sp
import androidx.fragment.app.FragmentActivity
import androidx.navigation.NavController
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
+import app.terraplanet.terraplanet.R
import app.terraplanet.terraplanet.nav.Screen
import app.terraplanet.terraplanet.nav.SetupNavGraph
import app.terraplanet.terraplanet.network.APIServiceImpl
-import app.terraplanet.terraplanet.ui.theme.*
+import app.terraplanet.terraplanet.ui.theme.TerraPlanetTheme
+import app.terraplanet.terraplanet.ui.theme.bgColor
+import app.terraplanet.terraplanet.ui.theme.bottomNavBgColor
import app.terraplanet.terraplanet.util.Biometrics
import com.google.accompanist.systemuicontroller.rememberSystemUiController
@@ -52,15 +56,15 @@ class HomeActivity : FragmentActivity() {
@RequiresApi(Build.VERSION_CODES.Q)
fun launchBiometric(
context: Context,
- description: String = "Authenticate with Biometrics",
+ description: String,
authenticationCallback: BiometricPrompt.AuthenticationCallback,
unsupportedCallback: () -> Unit
) {
if (Biometrics.checkBiometricSupport(context)) {
val biometricPromptInfo = BiometricPrompt.PromptInfo.Builder()
- .setTitle("Terra Planet")
+ .setTitle(getString(R.string.app_name))
.setDescription(description)
- .setNegativeButtonText("Cancel")
+ .setNegativeButtonText(getString(R.string.biometrics_cancel))
.setConfirmationRequired(true)
.build()
@@ -109,8 +113,8 @@ private fun BottomNavigation(navController: NavController) {
tabs.forEach { tab ->
BottomNavigationItem(
- icon = { Icon(painter = painterResource(id = tab.icon), tab.title) },
- label = { Text(tab.title, fontSize = 12.sp) },
+ icon = { Icon(painter = painterResource(id = tab.icon), stringResource(tab.title)) },
+ label = { Text(text = stringResource(tab.title), fontSize = 12.sp) },
selected = currentRoute == tab.route,
onClick = {
navController.navigate(tab.route) {
diff --git a/app/src/main/java/app/terraplanet/terraplanet/screen/ImportWalletActivity.kt b/app/src/main/java/app/terraplanet/terraplanet/screen/ImportWalletActivity.kt
index 0769a9e..bd15ecc 100644
--- a/app/src/main/java/app/terraplanet/terraplanet/screen/ImportWalletActivity.kt
+++ b/app/src/main/java/app/terraplanet/terraplanet/screen/ImportWalletActivity.kt
@@ -15,9 +15,11 @@ import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalFocusManager
+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 app.terraplanet.terraplanet.R
import app.terraplanet.terraplanet.network.APIServiceImpl
import app.terraplanet.terraplanet.ui.theme.MainColor
import app.terraplanet.terraplanet.ui.theme.TerraPlanetTheme
@@ -82,7 +84,7 @@ private fun ImportWallet(loading: Boolean, onContinue: (String) -> Unit) {
) {
VSpacer(30)
Text(
- "Import Wallet",
+ stringResource(R.string.import_wallet_import_wallet),
fontSize = 40.sp,
fontWeight = FontWeight.Bold,
)
@@ -91,7 +93,7 @@ private fun ImportWallet(loading: Boolean, onContinue: (String) -> Unit) {
modifier = Modifier.fillMaxWidth()
) {
Text(
- "Seed Phrase:",
+ stringResource(R.string.import_wallet_seed_phrase),
fontSize = 18.sp,
fontWeight = FontWeight.Bold
)
@@ -118,7 +120,7 @@ private fun ImportWallet(loading: Boolean, onContinue: (String) -> Unit) {
)
) {
Text(
- text = "CONTINUE",
+ stringResource(R.string.import_wallet_continue),
color = MainColor,
fontWeight = FontWeight.Bold,
)
diff --git a/app/src/main/java/app/terraplanet/terraplanet/screen/InitActivity.kt b/app/src/main/java/app/terraplanet/terraplanet/screen/InitActivity.kt
index 8de8526..8a2229c 100644
--- a/app/src/main/java/app/terraplanet/terraplanet/screen/InitActivity.kt
+++ b/app/src/main/java/app/terraplanet/terraplanet/screen/InitActivity.kt
@@ -13,6 +13,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
@@ -79,7 +80,7 @@ private fun InitScreen(onWallet: () -> Unit, onImport: () -> Unit) {
)
VSpacer(30)
Text(
- text = "The open source non-custodial Terra Wallet.",
+ stringResource(R.string.init_app_description),
color = Color.White,
fontSize = 18.sp,
textAlign = TextAlign.Center,
@@ -93,7 +94,7 @@ private fun InitScreen(onWallet: () -> Unit, onImport: () -> Unit) {
shape = RoundedCornerShape(25)
) {
Text(
- text = "CREATE NEW WALLET",
+ stringResource(R.string.init_create_wallet),
color = MainColor,
fontWeight = FontWeight.Bold,
)
@@ -110,7 +111,7 @@ private fun InitScreen(onWallet: () -> Unit, onImport: () -> Unit) {
)
) {
Text(
- text = "IMPORT WALLET",
+ stringResource(R.string.init_import_wallet),
color = Color.White,
fontWeight = FontWeight.Bold,
)
diff --git a/app/src/main/java/app/terraplanet/terraplanet/screen/InitWalletActivity.kt b/app/src/main/java/app/terraplanet/terraplanet/screen/InitWalletActivity.kt
index 8bd155e..c7d38a3 100644
--- a/app/src/main/java/app/terraplanet/terraplanet/screen/InitWalletActivity.kt
+++ b/app/src/main/java/app/terraplanet/terraplanet/screen/InitWalletActivity.kt
@@ -13,10 +13,12 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
+import app.terraplanet.terraplanet.R
import app.terraplanet.terraplanet.model.Wallet
import app.terraplanet.terraplanet.network.APIServiceImpl
import app.terraplanet.terraplanet.network.APIServiceImpl.Companion.LOG_E
@@ -86,7 +88,7 @@ private fun YourWallet(loading: Boolean, wallet: Wallet?, onContinue: () -> Unit
) {
VSpacer(30)
Text(
- "Your Wallet",
+ stringResource(R.string.init_wallet_your_wallet),
fontSize = 40.sp,
fontWeight = FontWeight.Bold,
)
@@ -95,7 +97,7 @@ private fun YourWallet(loading: Boolean, wallet: Wallet?, onContinue: () -> Unit
modifier = Modifier.fillMaxWidth()
) {
Text(
- "Address:",
+ stringResource(R.string.init_wallet_address),
fontSize = 18.sp,
fontWeight = FontWeight.Bold
)
@@ -120,7 +122,7 @@ private fun YourWallet(loading: Boolean, wallet: Wallet?, onContinue: () -> Unit
modifier = Modifier.fillMaxWidth()
) {
Text(
- "Seed Phrase:",
+ stringResource(R.string.init_wallet_seed_phrase),
fontSize = 18.sp,
fontWeight = FontWeight.Bold
)
@@ -139,9 +141,7 @@ private fun YourWallet(loading: Boolean, wallet: Wallet?, onContinue: () -> Unit
)
}
VSpacer(10)
- Text(
- "Please store your seed phrase securely. We would not be able to recover your wallet if you lose it. We suggest copying it on paper.",
- )
+ Text(stringResource(R.string.init_wallet_description))
Expandable()
Button(
onClick = { onContinue() },
@@ -154,7 +154,7 @@ private fun YourWallet(loading: Boolean, wallet: Wallet?, onContinue: () -> Unit
)
) {
Text(
- text = "CONTINUE",
+ stringResource(R.string.init_wallet_continue),
color = MainColor,
fontWeight = FontWeight.Bold,
)
diff --git a/app/src/main/java/app/terraplanet/terraplanet/screen/modal/EarnModal.kt b/app/src/main/java/app/terraplanet/terraplanet/screen/modal/EarnModal.kt
index cc35360..9c2ba8c 100644
--- a/app/src/main/java/app/terraplanet/terraplanet/screen/modal/EarnModal.kt
+++ b/app/src/main/java/app/terraplanet/terraplanet/screen/modal/EarnModal.kt
@@ -2,6 +2,7 @@ package app.terraplanet.terraplanet.screen.modal
import android.os.Build
import androidx.activity.compose.BackHandler
+import androidx.annotation.StringRes
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
@@ -20,12 +21,14 @@ import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
+import app.terraplanet.terraplanet.R
import app.terraplanet.terraplanet.model.Coin
import app.terraplanet.terraplanet.screen.HomeActivity
import app.terraplanet.terraplanet.ui.theme.MainBlue
@@ -36,9 +39,9 @@ import app.terraplanet.terraplanet.ui.util.*
import app.terraplanet.terraplanet.util.bitmapDrawable
import app.terraplanet.terraplanet.util.roundDecimal
-enum class EarnTab {
- Deposit,
- Withdraw
+enum class EarnTab(@StringRes val resId: Int) {
+ Deposit(R.string.earn_deposit),
+ Withdraw(R.string.earn_withdraw)
}
@Composable
@@ -52,8 +55,8 @@ fun EarnModal(
modal: ModalTransitionDialogHelper
) {
val scrollState = rememberScrollState()
- val earnSegment = remember { listOf(EarnTab.Deposit.name, EarnTab.Withdraw.name) }
- var selectedSegment by remember { mutableStateOf(if (isDeposit) EarnTab.Deposit.name else EarnTab.Withdraw.name) }
+ val earnSegment = remember { listOf(EarnTab.Deposit, EarnTab.Withdraw) }
+ var selectedSegment by remember { mutableStateOf(if (isDeposit) EarnTab.Deposit else EarnTab.Withdraw) }
var deposit by remember { mutableStateOf(isDeposit) }
val ust by remember { mutableStateOf(coin) }
@@ -86,30 +89,36 @@ fun EarnModal(
)
}
}
- Text("Earn", fontSize = 40.sp, fontWeight = FontWeight.Bold)
+ Text(stringResource(R.string.earn_title), fontSize = 40.sp, fontWeight = FontWeight.Bold)
VSpacer(30)
SegmentedControl(
segments = earnSegment,
selectedSegment = selectedSegment,
onSegmentSelected = {
selectedSegment = it
- deposit = selectedSegment == EarnTab.Deposit.name
+ deposit = selectedSegment == EarnTab.Deposit
amount = 0.0
}
) {
- SegmentText(it)
+ SegmentText(stringResource(it.resId))
}
VSpacer(30)
Row {
- Text("Amount:", fontSize = 18.sp, fontWeight = FontWeight.Bold)
+ Text(stringResource(R.string.earn_amount), fontSize = 18.sp, fontWeight = FontWeight.Bold)
Expandable()
Text(
- "Balance: ${if (deposit) coin.amount.roundDecimal(4) else earn.roundDecimal(4)}",
+ stringResource(
+ R.string.earn_balance,
+ if (deposit)
+ coin.amount.roundDecimal(4)
+ else
+ earn.roundDecimal(4)
+ ),
fontSize = 18.sp
)
HSpacer(10)
Text(
- text = "Max.",
+ stringResource(R.string.earn_max),
fontSize = 18.sp,
color = MainBlue,
modifier = Modifier.clickable {
@@ -158,7 +167,9 @@ fun EarnModal(
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
context.launchBiometric(
context,
- "Authenticate to ${if (deposit) "deposit" else "withdraw"}",
+ context.getString(
+ if (deposit) R.string.earn_deposit_authenticate else R.string.earn_withdraw_authenticate
+ ),
context.authenticationCallback(onSuccess = {
onSubmit(amount, deposit)
}), unsupportedCallback = {
@@ -174,7 +185,7 @@ fun EarnModal(
enabled = if (deposit) amount >= 1.0 else amount >= 0.5 && coin.amount >= 0.5
) {
Text(
- text = selectedSegment.uppercase(),
+ stringResource(selectedSegment.resId).uppercase(),
color = Color.White,
fontWeight = FontWeight.Bold,
)
@@ -182,7 +193,7 @@ fun EarnModal(
if (deposit) {
VSpacer(10)
Text(
- "We suggest you to keep 1 UST at least to pay gas. Remember that in the Earn Section the gas will be paid always in UST",
+ stringResource(R.string.earn_deposit_description),
color = Color.Gray,
fontSize = 14.sp
)
@@ -191,8 +202,7 @@ fun EarnModal(
if (!deposit && coin.amount < 0.5) {
VSpacer(10)
Text(
- "You don't have enough UST to pay fees and Withdraw your earnings. Please, deposit more funds or" +
- " select a lower amount.",
+ stringResource(R.string.earn_withdraw_not_enough_balance),
color = Color.Gray,
fontSize = 14.sp
)
@@ -201,7 +211,7 @@ fun EarnModal(
if (!deposit) {
VSpacer(10)
Text(
- "When you withdraw your funds, it will take up to a minute to be reflected in your balance",
+ stringResource(R.string.earn_withdraw_description),
color = Color.Gray,
fontSize = 14.sp
)
diff --git a/app/src/main/java/app/terraplanet/terraplanet/screen/modal/ReceiveModal.kt b/app/src/main/java/app/terraplanet/terraplanet/screen/modal/ReceiveModal.kt
index a626fec..971e4f6 100644
--- a/app/src/main/java/app/terraplanet/terraplanet/screen/modal/ReceiveModal.kt
+++ b/app/src/main/java/app/terraplanet/terraplanet/screen/modal/ReceiveModal.kt
@@ -19,10 +19,12 @@ import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
+import app.terraplanet.terraplanet.R
import app.terraplanet.terraplanet.ui.theme.*
import app.terraplanet.terraplanet.ui.util.Container
import app.terraplanet.terraplanet.ui.util.ModalTransitionDialogHelper
@@ -72,7 +74,7 @@ fun ReceiveQrScreen(modal: ModalTransitionDialogHelper, address: String) {
}
VSpacer(20)
Container(modifier = Modifier.align(Alignment.Start)) {
- Text("Address:", fontSize = 18.sp, fontWeight = FontWeight.Bold)
+ Text(stringResource(R.string.receive_address), fontSize = 18.sp, fontWeight = FontWeight.Bold)
}
VSpacer(8)
Container(modifier = Modifier.align(Alignment.Start)) {
@@ -80,9 +82,11 @@ fun ReceiveQrScreen(modal: ModalTransitionDialogHelper, address: String) {
}
VSpacer(20)
Button(
- onClick = { context.copyToClipboard("Wallet Address", address) {
- Toast.makeText(context, "Address copied", Toast.LENGTH_SHORT).show()
- }},
+ onClick = {
+ context.copyToClipboard(context.getString(R.string.receive_address_clipboard_clip), address) {
+ Toast.makeText(context, R.string.receive_address_clipboard_message, Toast.LENGTH_SHORT).show()
+ }
+ },
colors = ButtonDefaults.buttonColors(backgroundColor = Color.Transparent),
modifier = Modifier.fillMaxWidth(),
shape = RoundedCornerShape(25),
@@ -92,7 +96,7 @@ fun ReceiveQrScreen(modal: ModalTransitionDialogHelper, address: String) {
)
) {
Text(
- text = "Copy Address",
+ stringResource(R.string.receive_address_copy),
color = MainBlue,
fontWeight = FontWeight.Bold,
fontSize = 20.sp
diff --git a/app/src/main/java/app/terraplanet/terraplanet/screen/modal/SendModal.kt b/app/src/main/java/app/terraplanet/terraplanet/screen/modal/SendModal.kt
index c243fba..49e04d2 100644
--- a/app/src/main/java/app/terraplanet/terraplanet/screen/modal/SendModal.kt
+++ b/app/src/main/java/app/terraplanet/terraplanet/screen/modal/SendModal.kt
@@ -30,6 +30,7 @@ import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.input.ImeAction
@@ -95,10 +96,10 @@ fun SendModal(
if (valid) {
address = data
} else {
- Toast.makeText(context, "Not a valid Terra address", Toast.LENGTH_SHORT).show()
+ Toast.makeText(context, R.string.send_address_invalid, Toast.LENGTH_SHORT).show()
}
}, {
- Toast.makeText(context, "Not a valid Terra address", Toast.LENGTH_SHORT).show()
+ Toast.makeText(context, R.string.send_address_invalid, Toast.LENGTH_SHORT).show()
})
}
}
@@ -117,7 +118,11 @@ fun SendModal(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.padding(top = 8.dp)
) {
- Text("Select Coin", fontWeight = FontWeight.Bold, modifier = Modifier.padding(16.dp))
+ Text(
+ stringResource(R.string.send_coin_select),
+ fontWeight = FontWeight.Bold,
+ modifier = Modifier.padding(16.dp)
+ )
LazyColumn {
items(wallet.value.coins.size) {
ListItem(
@@ -162,10 +167,14 @@ fun SendModal(
)
}
}
- Text("Send To", fontSize = 40.sp, fontWeight = FontWeight.Bold)
+ Text(stringResource(R.string.send_title), fontSize = 40.sp, fontWeight = FontWeight.Bold)
VSpacer(30)
Container(modifier = Modifier.align(Alignment.Start)) {
- Text("Address:", fontSize = 18.sp, fontWeight = FontWeight.Bold)
+ Text(
+ stringResource(R.string.send_address_title),
+ fontSize = 18.sp,
+ fontWeight = FontWeight.Bold
+ )
}
VSpacer(10)
Row(verticalAlignment = Alignment.CenterVertically) {
@@ -188,11 +197,11 @@ fun SendModal(
if (valid) {
address = data
} else {
- Toast.makeText(context, "Not a valid Terra address", Toast.LENGTH_SHORT)
+ Toast.makeText(context, R.string.send_address_invalid, Toast.LENGTH_SHORT)
.show()
}
}, {
- Toast.makeText(context, "Not a valid Terra address", Toast.LENGTH_SHORT).show()
+ Toast.makeText(context, R.string.send_address_invalid, Toast.LENGTH_SHORT).show()
})
}
},
@@ -201,7 +210,7 @@ fun SendModal(
elevation = ButtonDefaults.elevation(defaultElevation = 0.dp, pressedElevation = 0.dp)
) {
Text(
- text = "Paste",
+ stringResource(R.string.send_address_paste),
color = MainBlue,
fontSize = 16.sp,
fontWeight = FontWeight.Bold
@@ -219,7 +228,7 @@ fun SendModal(
}
VSpacer(30)
Container(modifier = Modifier.align(Alignment.Start)) {
- Text("Coin:", fontSize = 18.sp, fontWeight = FontWeight.Bold)
+ Text(stringResource(R.string.send_coin_title), fontSize = 18.sp, fontWeight = FontWeight.Bold)
}
VSpacer(10)
Surface(
@@ -237,15 +246,18 @@ fun SendModal(
}
VSpacer(40)
Row(verticalAlignment = Alignment.CenterVertically) {
- Text("Amount:", fontSize = 18.sp, fontWeight = FontWeight.Bold)
+ Text(stringResource(R.string.send_amount_title), fontSize = 18.sp, fontWeight = FontWeight.Bold)
Expandable()
- Text("Balance:")
+ Text(stringResource(R.string.send_balance))
HSpacer(4)
Text(totalBalance.roundDecimal(if (coin.denom == Denom.UST) 2 else 4))
HSpacer(15)
- Text("Max", fontSize = 18.sp, color = MainBlue, modifier = Modifier.clickable {
- amount = ValidInput("$totalBalance", true)
- })
+ Text(
+ stringResource(R.string.send_max),
+ fontSize = 18.sp,
+ color = MainBlue,
+ modifier = Modifier.clickable { amount = ValidInput("$totalBalance", true) }
+ )
}
VSpacer(10)
Row(verticalAlignment = Alignment.CenterVertically) {
@@ -296,12 +308,15 @@ fun SendModal(
memo
)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
- context.launchBiometric(context, "Authenticate to send transaction",
+ context.launchBiometric(
+ context,
+ context.getString(R.string.send_authenticate),
context.authenticationCallback(onSuccess = {
onSubmit(send!!)
}), unsupportedCallback = {
onSubmit(send!!)
- })
+ }
+ )
} else {
onSubmit(send!!)
}
@@ -313,7 +328,7 @@ fun SendModal(
address.isNotEmpty()
) {
Text(
- text = "SEND",
+ stringResource(R.string.send_action),
color = Color.White,
fontSize = 18.sp,
fontWeight = FontWeight.Bold,
@@ -323,7 +338,7 @@ fun SendModal(
}
VSpacer(20)
Container(modifier = Modifier.align(Alignment.Start)) {
- Text("Memo (optional):")
+ Text(stringResource(R.string.send_memo))
}
VSpacer(10)
Surface(
@@ -345,7 +360,7 @@ fun SendModal(
LoadingOverlay(Color.White)
}
- ShowSwapDialog(send, showDialog, onConfirm, onDismiss)
+ ShowSendDialog(send, showDialog, onConfirm, onDismiss)
}
}
@@ -416,7 +431,7 @@ private fun CoinSelector(coin: Coin) {
}
@Composable
-private fun ShowSwapDialog(
+private fun ShowSendDialog(
sendData: Send?,
show: Boolean,
onConfirm: () -> Unit,
@@ -455,7 +470,12 @@ private fun ShowSwapDialog(
) else null,
title = {
Text(
- if (haveBalance) "SEND" else "ATTENTION",
+ stringResource(
+ if (haveBalance)
+ R.string.send_dialog_title
+ else
+ R.string.send_dialog_title_attention
+ ),
textAlign = TextAlign.Center,
fontSize = 20.sp,
fontWeight = FontWeight.Bold
@@ -463,11 +483,13 @@ private fun ShowSwapDialog(
},
text = {
Text(
- text = if (haveBalance) "From: ${wallet?.address}\n\n" +
- "To: ${send.address}\n\n" +
- "Amount: ${send.amount}\n\n" +
- "Fee: ${send.fee} ${send.gas.label}"
- else "You don't have enough ${send.gas.label} balance to pay fees and perform this action.",
+ if (haveBalance)
+ stringResource(R.string.send_dialog_description_from, wallet?.address ?: "") + "\n\n" +
+ stringResource(R.string.send_dialog_description_to, send.address) + "\n\n" +
+ stringResource(R.string.send_dialog_description_amount, send.amount) + "\n\n" +
+ stringResource(R.string.send_dialog_description_fee, send.fee, send.gas.label)
+ else
+ stringResource(R.string.send_dialog_description_not_enough_balance, send.gas.label),
textAlign = TextAlign.Center,
modifier = Modifier.fillMaxWidth(),
fontSize = 18.sp
@@ -481,11 +503,11 @@ private fun ShowSwapDialog(
@Composable
private fun ConfirmButton(onConfirm: () -> Unit) {
TextButton(onClick = onConfirm)
- { Text(text = "Sign it!", fontSize = 18.sp) }
+ { Text(stringResource(R.string.send_dialog_sign), fontSize = 18.sp) }
}
@Composable
private fun DismissButton(onDismiss: () -> Unit) {
TextButton(onClick = onDismiss)
- { Text(text = "Cancel", fontSize = 18.sp) }
+ { Text(stringResource(R.string.send_dialog_cancel), fontSize = 18.sp) }
}
diff --git a/app/src/main/java/app/terraplanet/terraplanet/screen/modal/SwapModal.kt b/app/src/main/java/app/terraplanet/terraplanet/screen/modal/SwapModal.kt
index 776725c..ba96902 100644
--- a/app/src/main/java/app/terraplanet/terraplanet/screen/modal/SwapModal.kt
+++ b/app/src/main/java/app/terraplanet/terraplanet/screen/modal/SwapModal.kt
@@ -25,6 +25,7 @@ import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.input.ImeAction
@@ -108,7 +109,7 @@ fun SwapModal(
)
}
}
- Text("Swap", fontSize = 40.sp, fontWeight = FontWeight.Bold)
+ Text(stringResource(R.string.swap_title), fontSize = 40.sp, fontWeight = FontWeight.Bold)
VSpacer(30)
Surface(
border = BorderStroke(3.dp, MainColor),
@@ -223,7 +224,7 @@ fun SwapModal(
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
context.launchBiometric(
context,
- "Authenticate to swap",
+ context.getString(R.string.swap_authenticate),
context.authenticationCallback(onSuccess = {
onSubmit(swapData)
}), unsupportedCallback = {
@@ -239,7 +240,7 @@ fun SwapModal(
enabled = (uusd.valid && uusd.input.parseToDouble() > 0.0) && (luna.valid && luna.input.parseToDouble() > 0.0)
) {
Text(
- text = "SWAP",
+ stringResource(R.string.swap_dialog_title),
color = Color.White,
fontWeight = FontWeight.Bold,
modifier = Modifier.padding(5.dp)
@@ -342,15 +343,15 @@ private fun ShowSwapDialog(
properties = DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false),
confirmButton = {
TextButton(onClick = onConfirm)
- { Text(text = "Sign it!", fontSize = 18.sp) }
+ { Text(stringResource(R.string.swap_dialog_sign), fontSize = 18.sp) }
},
dismissButton = {
TextButton(onClick = onDismiss)
- { Text(text = "Cancel", fontSize = 18.sp) }
+ { Text(stringResource(R.string.swap_dialog_cancel), fontSize = 18.sp) }
},
title = {
Text(
- "SWAP",
+ stringResource(R.string.swap_dialog_title),
textAlign = TextAlign.Center,
fontSize = 20.sp,
fontWeight = FontWeight.Bold
@@ -358,10 +359,15 @@ private fun ShowSwapDialog(
},
text = {
Text(
- text = "From: ${it.from.denom.label}\n" +
- "To: ${it.to.denom.label}\n\n" +
- "Amount: ${if (it.from.denom == Denom.LUNA) it.amount * lunaPrice else it.amount / lunaPrice}\n\n" +
- "Fee: ${swap.fee} ${swap.pay.label}",
+ stringResource(R.string.swap_dialog_description_from, it.from.denom.label) + "\n" +
+ stringResource(R.string.swap_dialog_description_to, it.to.denom.label) + "\n\n" +
+ stringResource(R.string.swap_dialog_description_amount,
+ if (it.from.denom == Denom.LUNA)
+ it.amount * lunaPrice
+ else
+ it.amount / lunaPrice
+ ) + "\n\n" +
+ stringResource(R.string.swap_dialog_description_fee, swap.fee, swap.pay.label),
textAlign = TextAlign.Center,
modifier = Modifier.fillMaxWidth(),
fontSize = 18.sp
diff --git a/app/src/main/java/app/terraplanet/terraplanet/screen/tab/SettingsTab.kt b/app/src/main/java/app/terraplanet/terraplanet/screen/tab/SettingsTab.kt
index b0aaca7..3456318 100644
--- a/app/src/main/java/app/terraplanet/terraplanet/screen/tab/SettingsTab.kt
+++ b/app/src/main/java/app/terraplanet/terraplanet/screen/tab/SettingsTab.kt
@@ -12,10 +12,12 @@ import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
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 androidx.compose.ui.unit.sp
import androidx.compose.ui.window.DialogProperties
+import app.terraplanet.terraplanet.R
import app.terraplanet.terraplanet.network.APIServiceImpl
import app.terraplanet.terraplanet.network.Denom
import app.terraplanet.terraplanet.network.Net
@@ -39,7 +41,7 @@ fun SettingsTab(activity: ComponentActivity, settings: SettingsViewModel) {
horizontalAlignment = Alignment.CenterHorizontally
) {
VSpacer(30)
- Text("Settings", fontSize = 40.sp, fontWeight = FontWeight.Bold)
+ Text(stringResource(R.string.settings_title), fontSize = 40.sp, fontWeight = FontWeight.Bold)
VSpacer(30)
Surface(
border = BorderStroke(3.dp, MainColor),
@@ -51,7 +53,7 @@ fun SettingsTab(activity: ComponentActivity, settings: SettingsViewModel) {
modifier = Modifier.padding(horizontal = 16.dp, vertical = 24.dp),
verticalAlignment = Alignment.CenterVertically
) {
- Text("Pay gas with:", fontSize = 18.sp)
+ Text(stringResource(R.string.settings_pay_gas), fontSize = 18.sp)
Expandable()
PayGasSegmented(settings)
}
@@ -67,7 +69,7 @@ fun SettingsTab(activity: ComponentActivity, settings: SettingsViewModel) {
modifier = Modifier.padding(horizontal = 16.dp, vertical = 24.dp),
verticalAlignment = Alignment.CenterVertically
) {
- Text("Network:", fontSize = 18.sp)
+ Text(stringResource(R.string.settings_network), fontSize = 18.sp)
Expandable()
NetworkSegmented(settings)
}
@@ -76,7 +78,7 @@ fun SettingsTab(activity: ComponentActivity, settings: SettingsViewModel) {
Button(
onClick = {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
- context.launchBiometric(context, "Authenticate to show Seed Phrase",
+ context.launchBiometric(context, context.getString(R.string.settings_authenticate),
context.authenticationCallback(onSuccess = {
settings.openSeedDialog()
}), unsupportedCallback = {
@@ -91,7 +93,7 @@ fun SettingsTab(activity: ComponentActivity, settings: SettingsViewModel) {
shape = RoundedCornerShape(25)
) {
Text(
- text = "See my Seed Phrase",
+ stringResource(R.string.settings_show_seed_phrase),
color = Color.White,
fontSize = 18.sp
)
@@ -108,7 +110,7 @@ fun SettingsTab(activity: ComponentActivity, settings: SettingsViewModel) {
)
) {
Text(
- text = "Log Out",
+ stringResource(R.string.settings_logout),
color = Color.Red,
fontSize = 18.sp
)
@@ -146,9 +148,9 @@ private fun ShowSeedDialog(
properties = DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false),
confirmButton = {
TextButton(onClick = onConfirm)
- { Text(text = "OK", fontWeight = FontWeight.Bold) }
+ { Text(stringResource(R.string.settings_show_seed_phrase_ok), fontWeight = FontWeight.Bold) }
},
- title = { Text("Your seed phrase is:", fontSize = 18.sp, fontWeight = FontWeight.Bold) },
+ title = { Text(stringResource(R.string.settings_show_seed_phrase_title), fontSize = 18.sp, fontWeight = FontWeight.Bold) },
text = { Text(seedPhrase, fontSize = 16.sp) }
)
}
@@ -166,15 +168,14 @@ private fun ShowLogoutDialog(
properties = DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false),
confirmButton = {
TextButton(onClick = onConfirm)
- { Text(text = "Confirm", color = Color.Red) }
+ { Text(stringResource(R.string.settings_logout_confirm), color = Color.Red) }
},
dismissButton = {
TextButton(onClick = onDismiss)
- { Text(text = "Cancel", fontWeight = FontWeight.Bold) }
+ { Text(stringResource(R.string.settings_logout_cancel), fontWeight = FontWeight.Bold) }
},
- title = { Text("ATTENTION", fontSize = 18.sp, fontWeight = FontWeight.Bold) },
- text = { Text("Make sure your Seed Phrase is saved. If you don't have your Seed Phrase you will lose " +
- "access to your Wallet forever.", fontSize = 16.sp) }
+ title = { Text(stringResource(R.string.settings_logout_title), fontSize = 18.sp, fontWeight = FontWeight.Bold) },
+ text = { Text(stringResource(R.string.settings_logout_description), fontSize = 16.sp) }
)
}
}
diff --git a/app/src/main/java/app/terraplanet/terraplanet/screen/tab/WalletTab.kt b/app/src/main/java/app/terraplanet/terraplanet/screen/tab/WalletTab.kt
index 322e233..280fe1d 100644
--- a/app/src/main/java/app/terraplanet/terraplanet/screen/tab/WalletTab.kt
+++ b/app/src/main/java/app/terraplanet/terraplanet/screen/tab/WalletTab.kt
@@ -3,10 +3,13 @@ package app.terraplanet.terraplanet.screen.tab
import android.annotation.SuppressLint
import android.widget.Toast
import androidx.activity.ComponentActivity
+import androidx.annotation.DrawableRes
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.compose.material.*
+import androidx.compose.material.Icon
+import androidx.compose.material.Surface
+import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Refresh
import androidx.compose.runtime.*
@@ -16,6 +19,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
@@ -85,7 +89,7 @@ fun WalletTab(activity: ComponentActivity,
.clickable { navigateToSettings() }, color = Orange) {
Center {
Text(
- text = Net.TEST.label.uppercase(),
+ Net.TEST.label.uppercase(),
color = Color.White,
fontWeight = FontWeight.Bold,
fontSize = 20.sp,
@@ -96,7 +100,7 @@ fun WalletTab(activity: ComponentActivity,
}
VSpacer(20)
Row {
- Text("Total Balance", fontSize = 20.sp)
+ Text(stringResource(R.string.wallet_tab_total_balance), fontSize = 20.sp)
HSpacer(5)
Icon(
painter = rememberVectorPainter(image = Icons.Default.Refresh),
@@ -107,7 +111,7 @@ fun WalletTab(activity: ComponentActivity,
VSpacer(6)
Text("$${wallet.value.amount}", fontSize = 50.sp, fontWeight = FontWeight.Bold)
VSpacer(30)
- Text("Your Coins", fontSize = 24.sp, fontWeight = FontWeight.Bold)
+ Text(stringResource(R.string.wallet_tab_your_coins), fontSize = 24.sp, fontWeight = FontWeight.Bold)
VSpacer(6)
Surface(
shape = RoundedCornerShape(10),
@@ -121,7 +125,7 @@ fun WalletTab(activity: ComponentActivity,
when(wallet.value.state) {
State.SUCCESS -> {
if (wallet.value.coins.isEmpty()) {
- Text(text = "You don't own coins yet",
+ Text(stringResource(R.string.wallet_tab_no_coins),
color = Color.LightGray,
fontStyle = FontStyle.Italic,
modifier = Modifier.padding(horizontal = 8.dp, vertical = 16.dp)
@@ -134,12 +138,12 @@ fun WalletTab(activity: ComponentActivity,
}
}
}
- State.FAILED -> Text(text = "Error getting coins, try again",
+ State.FAILED -> Text(stringResource(R.string.wallet_tab_error_getting_coins),
color = Color.LightGray,
fontStyle = FontStyle.Italic,
modifier = Modifier.padding(horizontal = 8.dp, vertical = 16.dp)
)
- State.LOADING -> Text(text = "Getting coins...",
+ State.LOADING -> Text(stringResource(R.string.wallet_tab_getting_coins),
color = Color.LightGray,
fontStyle = FontStyle.Italic,
modifier = Modifier.padding(horizontal = 8.dp, vertical = 16.dp)
@@ -149,7 +153,7 @@ fun WalletTab(activity: ComponentActivity,
}
}
VSpacer(30)
- Text("Actions", fontSize = 24.sp, fontWeight = FontWeight.Bold)
+ Text(stringResource(R.string.wallet_tab_actions), fontSize = 24.sp, fontWeight = FontWeight.Bold)
VSpacer(8)
Row(
horizontalArrangement = Arrangement.SpaceEvenly,
@@ -159,7 +163,7 @@ fun WalletTab(activity: ComponentActivity,
onDismissRequest = { showReceiveModal = false },
showReceiveModal = showReceiveModal
) { WalletAction(
- text = "Receive",
+ stringResource(R.string.wallet_tab_receive),
icon = R.drawable.icon_receive,
enabled = true,
onClick = { showReceiveModal = true }
@@ -201,7 +205,7 @@ fun WalletTab(activity: ComponentActivity,
isSwapLoading = false
}
) { WalletAction(
- text = "Swap",
+ stringResource(R.string.wallet_tab_swap),
icon = R.drawable.icon_swap,
enabled = wallet.value.coins.isNotEmpty(),
onClick = { showSwapModal = true }
@@ -242,14 +246,17 @@ fun WalletTab(activity: ComponentActivity,
isSendLoading = false
}
) { WalletAction(
- text = "Send",
+ stringResource(R.string.wallet_tab_send),
icon = R.drawable.icon_send,
enabled = wallet.value.coins.isNotEmpty(),
onClick = { showSendModal = true }
) }
}
VSpacer(40)
- Text("Earn (${wallet.value.rate.roundDecimal(2)}% APY)", fontSize = 24.sp, fontWeight = FontWeight.Bold)
+ Text(stringResource(R.string.wallet_tab_earn_apy, wallet.value.rate.roundDecimal(2)),
+ fontSize = 24.sp,
+ fontWeight = FontWeight.Bold
+ )
VSpacer(8)
Surface(
border = BorderStroke(3.dp, MainColor),
@@ -262,7 +269,7 @@ fun WalletTab(activity: ComponentActivity,
modifier = Modifier.padding(16.dp)
) {
Text(
- text = "$${wallet.value.earn.roundDecimal(2)}",
+ "$${wallet.value.earn.roundDecimal(2)}",
fontSize = 30.sp,
fontWeight = FontWeight.Bold
)
@@ -302,7 +309,7 @@ fun WalletTab(activity: ComponentActivity,
},
onError = {
isEarnLoading = false
- Toast.makeText(context, "Error. Please, try again.", Toast.LENGTH_SHORT).show()
+ Toast.makeText(context, R.string.wallet_tab_earn_modal_error, Toast.LENGTH_SHORT).show()
}
)
} else {
@@ -315,7 +322,7 @@ fun WalletTab(activity: ComponentActivity,
},
onError = {
isEarnLoading = false
- Toast.makeText(context, "Error. Please, try again.", Toast.LENGTH_SHORT).show()
+ Toast.makeText(context, R.string.wallet_tab_earn_modal_error, Toast.LENGTH_SHORT).show()
}
)
}
@@ -455,7 +462,7 @@ fun CoinItem(coin: Coin) {
@Composable
fun RowScope.WalletAction(
text: String,
- icon: Int,
+ @DrawableRes icon: Int,
enabled: Boolean,
onClick: () -> Unit
) {
@@ -499,7 +506,7 @@ fun DepositEarn(
HSpacer(16)
Icon(painter = painterResource(id = R.drawable.icon_deposit), contentDescription = null, tint = Color.White)
HSpacer(8)
- Text("Deposit", color = Color.White, fontSize = 20.sp)
+ Text(stringResource(R.string.wallet_tab_earn_deposit), color = Color.White, fontSize = 20.sp)
HSpacer(16)
}
}
@@ -529,7 +536,7 @@ fun WithdrawEarn(
tint = Color.White
)
HSpacer(8)
- Text("Withdraw", color = Color.White, fontSize = 20.sp)
+ Text(stringResource(R.string.wallet_tab_earn_withdraw), color = Color.White, fontSize = 20.sp)
HSpacer(16)
}
}
diff --git a/app/src/main/java/app/terraplanet/terraplanet/ui/theme/Common.kt b/app/src/main/java/app/terraplanet/terraplanet/ui/theme/Common.kt
index 953d29a..28fa2d1 100644
--- a/app/src/main/java/app/terraplanet/terraplanet/ui/theme/Common.kt
+++ b/app/src/main/java/app/terraplanet/terraplanet/ui/theme/Common.kt
@@ -4,8 +4,11 @@ import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.sp
+import app.terraplanet.terraplanet.R
@Composable
fun isDark(): Boolean = isSystemInDarkTheme()
@@ -19,10 +22,11 @@ fun bottomNavBgColor(): Color = if (isDark()) BnvDark else BnvLight
@Composable
fun colorAware(): Color = if (isDark()) Color.White else Color.Black
+@Preview
@Composable
fun Title() {
Text(
- text = "Terra Planet",
+ stringResource(R.string.app_name),
color = Color.White,
fontSize = 40.sp,
fontWeight = FontWeight.Bold,
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
new file mode 100644
index 0000000..a073ae9
--- /dev/null
+++ b/app/src/main/res/values-es/strings.xml
@@ -0,0 +1,147 @@
+
+
+ Terra Planet
+
+
+ Estado del servidor...
+ El servidor falló. Cierra la app e intent nuevamente
+ Iniciando el servidor...
+ Conectando con el servidor...
+ Conectado con el servidor
+ Error del servidor
+ Ejecutando el servidor...
+
+
+
+ Autenticar con datos biométricos
+ Cancelar
+ Autenticación exitosa
+ Autenticación cancelada
+ Error. Intente nuevamente
+
+
+
+ La Billetera de Terra no-custodiada y de código abierto.
+ CREAR NUEVA BILLETERA
+ IMPORTAR BILLETERA
+
+
+
+ Tu Billetera
+ Dirección:
+ Frase semilla:
+ Por favor, guarda tu frase semilla de forma segura. No podremos recuperar
+ tu billetera si la pierdes. Sugerimos que la escribas en papel.
+ CONTINUAR
+
+
+
+ Importar Billetera
+ Frase semilla:
+ CONTINUAR
+
+
+
+ Billetera
+ Transacciones
+ Ajustes
+
+
+
+ Balance Total
+ Tus Monedas
+ No tienes monedas todavía
+ Error obteniendo monedas, intente nuevamente
+ Obteniendo monedas...
+ Acciones
+ Cambiar
+ Enviar
+ Recibir
+ Error. Por favor, intente nuevamente.
+ Depositar
+ Retirar
+ Ganar (%1$s%% APY)
+
+
+
+ Dirección:
+ Copiar Dirección
+ Dirección de la Billetera
+ Dirección copiada
+
+
+
+ Cambiar
+ Cambiar
+ Cancelar
+ ¡Firmar!
+ CAMBIAR
+ De: %1$s
+ Para: %1$s
+ Monto: %1$s
+ Comisión: %1$s %2$s
+ Autenticar para cambiar
+
+
+
+ Enviar a
+ Dirección:
+ Pegar
+ Dirección Terra inválida
+ Moneda:
+ Seleccione Moneda
+ Monto:
+ Balance:
+ Máx
+ ENVIAR
+ Memo (opcional):
+ Cancelar
+ ¡Firmar!
+ ENVIAR
+ ATENCIÓN
+ De: %1$s
+ Para: %1$s
+ Monto: %1$s
+ Comisión: %1$s %2$s
+ No tienes suficiente %1$s en tu balance para pagar
+ comisiones y realizar esta acción.
+ Autenticar para enviar la transacción
+
+
+
+ Ganar
+ Monto:
+ Balance: %1$s
+ Máx
+ Depositar
+ Retirar
+ Autenticar para depositar
+ Autenticar para retirar
+ Sugerimos que mantengas al menos 1 UST para pagar comisiones. Recuerda
+ que en la Sección de Ganar la comisión se pagará siempre en UST.
+ No dispones de UST suficientes para pagar comisiones y Retirar tus
+ ganancias. Por favor, deposita más fondos o selecciona un monto menor.
+ Cuando retires tus fondos, va a tomar hasta un minuto para que se
+ refleje en tu balance.
+
+
+
+ Ajustes
+ Pagar el gas con:
+ Red:
+ Mostrar mi Frase Semilla
+ Cerrar sesión
+ Autenticar para mostrar la Frase Semilla
+ OK
+ Tu frase semilla es:
+ Confirmar
+ Cancelar
+ ATENCIÓN
+ Asegúrate de tener guardada la Frase Semilla. Si no tienes tu Frase
+ semilla perderás acceso a tu Billetera para siempre.
+
+
+
+ Escanea un Código QR de una dirección Terra
+
+
\ 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 8b7e029..4a18b7a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,3 +1,146 @@
+
Terra Planet
+
+
+ Server status...
+ Server failed. Close the app and try again
+ Server starting...
+ Server connecting...
+ Server connected
+ Server error
+ Server running...
+
+
+
+ Authenticate with Biometrics
+ Cancel
+ Auth Successful
+ Auth Canceled
+ Error. Try Again
+
+
+
+ The open source non-custodial Terra Wallet.
+ CREATE NEW WALLET
+ IMPORT WALLET
+
+
+
+ Your Wallet
+ Address:
+ Seed Phrase:
+ Please store your seed phrase securely. We would not be able to recover your wallet if you lose it. We suggest copying it on paper.
+ CONTINUE
+
+
+
+ Import Wallet
+ Seed Phrase:
+ CONTINUE
+
+
+
+ Wallet
+ Transactions
+ Settings
+
+
+
+ Total Balance
+ Your Coins
+ You don\'t own coins yet
+ Error getting coins, try again
+ Getting coins...
+ Actions
+ Swap
+ Send
+ Receive
+ Error. Please, try again.
+ Deposit
+ Withdraw
+ Earn (%1$s%% APY)
+
+
+
+ Address:
+ Copy Address
+ Wallet Address
+ Address copied
+
+
+
+ Swap
+ Swap
+ Cancel
+ Sign it!
+ SWAP
+ From: %1$s
+ To: %1$s
+ Amount: %1$s
+ Fee: %1$s %2$s
+ Authenticate to swap
+
+
+
+ Send To
+ Address:
+ Paste
+ Not a valid Terra address
+ Coin:
+ Select Coin
+ Amount:
+ Balance:
+ Max
+ SEND
+ Memo (optional):
+ Cancel
+ Sign it!
+ SEND
+ ATTENTION
+ From: %1$s
+ To: %1$s
+ Amount: %1$s
+ Fee: %1$s %2$s
+ You don\'t have enough %1$s balance to pay fees and
+ perform this action.
+ Authenticate to send transaction
+
+
+
+ Earn
+ Amount:
+ Balance: %1$s
+ Max
+ Deposit
+ Withdraw
+ Authenticate to deposit
+ Authenticate to withdraw
+ We suggest you to keep 1 UST at least to pay gas. Remember that in the
+ Earn Section the gas will be paid always in UST.
+ You don\'t have enough UST to pay fees and Withdraw your earnings.
+ Please, deposit more funds or select a lower amount.
+ When you withdraw your funds, it will take up to a minute to be
+ reflected in your balance.
+
+
+
+ Settings
+ Pay gas with:
+ Network:
+ Show my Seed Phrase
+ Log Out
+ Authenticate to show Seed Phrase
+ OK
+ Your seed phrase is:
+ Confirm
+ Cancel
+ ATTENTION
+ Make sure your Seed Phrase is saved. If you don\'t have your Seed
+ Phrase you will lose access to your Wallet forever.
+
+
+
+ Scan a Terra address QR Code
+
\ No newline at end of file