diff --git a/app/src/main/java/com/ivy/wallet/ui/edit/EditTransactionScreen.kt b/app/src/main/java/com/ivy/wallet/ui/edit/EditTransactionScreen.kt index 3a9e655b5f..564b96fd5f 100644 --- a/app/src/main/java/com/ivy/wallet/ui/edit/EditTransactionScreen.kt +++ b/app/src/main/java/com/ivy/wallet/ui/edit/EditTransactionScreen.kt @@ -11,6 +11,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.layout.positionInParent +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview @@ -335,7 +336,7 @@ private fun BoxWithConstraintsScope.UI( val nav = navigation() AddPrimaryAttributeButton( icon = R.drawable.ic_planned_payments, - text = "Add planned date of payment", + text = stringResource(R.string.add_planned_date_payment), onClick = { nav.back() nav.navigateTo( @@ -386,7 +387,7 @@ private fun BoxWithConstraintsScope.UI( } } else { //no changes, pay - ModalCheck(label = if (transactionType == TransactionType.EXPENSE) "Pay" else "Get") { + ModalCheck(label = if (transactionType == TransactionType.EXPENSE) stringResource(R.string.pay) else stringResource(R.string.get)) { onPayPlannedPayment() } } @@ -485,8 +486,8 @@ private fun BoxWithConstraintsScope.UI( DeleteModal( visible = deleteTrnModalVisible, - title = "Confirm deletion", - description = "Deleting this transaction will remove it from the transaction history and update the balance accordingly.", + title = stringResource(R.string.confirm_deletion), + description = stringResource(R.string.confirm_deletion_description), dismiss = { deleteTrnModalVisible = false } ) { onDelete() @@ -505,10 +506,9 @@ private fun BoxWithConstraintsScope.UI( DeleteModal( visible = accountChangeModal, - title = "Confirm Account Change", - description = "Note: You are trying to change the account associated with the loan with an account of different currency, " + - "\nAll the loan records will be re-calculated based on today's exchanges rates ", - buttonText = "Confirm", + title = stringResource(R.string.confirm_account_change), + description = stringResource(R.string.confirm_account_change_description), + buttonText = stringResource(R.string.confirm), iconStart = R.drawable.ic_agreed, dismiss = { accountChangeModal = false @@ -519,8 +519,8 @@ private fun BoxWithConstraintsScope.UI( } ProgressModal( - title = "Confirm Account Change", - description = "Please wait, re-calculating all loan records", + title = stringResource(R.string.confirm_account_change), + description = stringResource(R.string.account_change_recalculating), visible = waitModalVisible ) diff --git a/app/src/main/java/com/ivy/wallet/ui/edit/PrimaryAttributeColumn.kt b/app/src/main/java/com/ivy/wallet/ui/edit/PrimaryAttributeColumn.kt index 476c201c43..a6d36fc481 100644 --- a/app/src/main/java/com/ivy/wallet/ui/edit/PrimaryAttributeColumn.kt +++ b/app/src/main/java/com/ivy/wallet/ui/edit/PrimaryAttributeColumn.kt @@ -9,6 +9,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +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.dp @@ -66,7 +67,7 @@ private fun PreviewPrimaryAttributeColumn() { IvyWalletComponentPreview { PrimaryAttributeColumn( icon = R.drawable.ic_description, - title = "Description", + title = stringResource(R.string.description_text), onClick = { } ) { Spacer(Modifier.height(12.dp)) diff --git a/app/src/main/java/com/ivy/wallet/ui/edit/TransactionDateTime.kt b/app/src/main/java/com/ivy/wallet/ui/edit/TransactionDateTime.kt index a10a7379b3..dd7ac93b27 100644 --- a/app/src/main/java/com/ivy/wallet/ui/edit/TransactionDateTime.kt +++ b/app/src/main/java/com/ivy/wallet/ui/edit/TransactionDateTime.kt @@ -9,6 +9,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +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.dp @@ -50,7 +51,7 @@ fun TransactionDateTime( Spacer(Modifier.width(8.dp)) Text( - text = "Created on", + text = stringResource(R.string.created_on), style = UI.typo.b2.style( color = UI.colors.gray, fontWeight = FontWeight.Bold diff --git a/app/src/main/java/com/ivy/wallet/ui/edit/core/Category.kt b/app/src/main/java/com/ivy/wallet/ui/edit/core/Category.kt index 1b5817ee56..b43e101c52 100644 --- a/app/src/main/java/com/ivy/wallet/ui/edit/core/Category.kt +++ b/app/src/main/java/com/ivy/wallet/ui/edit/core/Category.kt @@ -3,6 +3,7 @@ package com.ivy.wallet.ui.edit.core import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI @@ -31,7 +32,7 @@ fun Category( modifier = Modifier.padding(start = 24.dp), iconStart = R.drawable.ic_plus, iconTint = UI.colors.pureInverse, - text = "Add category" + text = stringResource(R.string.add_category) ) { onChooseCategory() } diff --git a/app/src/main/java/com/ivy/wallet/ui/edit/core/Description.kt b/app/src/main/java/com/ivy/wallet/ui/edit/core/Description.kt index fd676f1fa4..3e1efa762f 100644 --- a/app/src/main/java/com/ivy/wallet/ui/edit/core/Description.kt +++ b/app/src/main/java/com/ivy/wallet/ui/edit/core/Description.kt @@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +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 @@ -33,7 +34,7 @@ fun Description( } else { AddPrimaryAttributeButton( icon = R.drawable.ic_description, - text = "Add description", + text = stringResource(R.string.add_description), onClick = onAddDescription ) } @@ -46,7 +47,7 @@ private fun DescriptionText( ) { PrimaryAttributeColumn( icon = R.drawable.ic_description, - title = "Description", + title = stringResource(R.string.description_text), onClick = onClick ) { Spacer(Modifier.height(12.dp)) diff --git a/app/src/main/java/com/ivy/wallet/ui/edit/core/DueDate.kt b/app/src/main/java/com/ivy/wallet/ui/edit/core/DueDate.kt index a9b3c0ecab..340ef8db74 100644 --- a/app/src/main/java/com/ivy/wallet/ui/edit/core/DueDate.kt +++ b/app/src/main/java/com/ivy/wallet/ui/edit/core/DueDate.kt @@ -9,6 +9,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +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.dp @@ -56,7 +57,7 @@ private fun DueDateCard( Spacer(Modifier.width(8.dp)) Text( - text = "Planned for", + text = stringResource(R.string.planned_for), style = UI.typo.b2.style( fontWeight = FontWeight.ExtraBold, color = UI.colors.pureInverse diff --git a/app/src/main/java/com/ivy/wallet/ui/edit/core/EditBottomSheet.kt b/app/src/main/java/com/ivy/wallet/ui/edit/core/EditBottomSheet.kt index aecf19e906..7feaf65cc7 100644 --- a/app/src/main/java/com/ivy/wallet/ui/edit/core/EditBottomSheet.kt +++ b/app/src/main/java/com/ivy/wallet/ui/edit/core/EditBottomSheet.kt @@ -22,6 +22,7 @@ import androidx.compose.ui.layout.layout import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.platform.LocalView import androidx.compose.ui.platform.testTag +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.Dp @@ -135,9 +136,9 @@ fun BoxWithConstraintsScope.EditBottomSheet( ) { //Accounts label val label = when (type) { - TransactionType.INCOME -> "Add money to" - TransactionType.EXPENSE -> "Pay with" - TransactionType.TRANSFER -> "From" + TransactionType.INCOME -> stringResource(R.string.add_money_to) + TransactionType.EXPENSE -> stringResource(R.string.pay_with) + TransactionType.TRANSFER -> stringResource(R.string.from) } SheetHeader( @@ -223,7 +224,7 @@ fun BoxWithConstraintsScope.EditBottomSheet( Text( modifier = Modifier.padding(start = 32.dp), - text = "Account", + text = stringResource(R.string.account), style = UI.typo.b1.style( color = UI.colors.pureInverse, fontWeight = FontWeight.ExtraBold @@ -439,7 +440,7 @@ private fun SheetHeader( Text( modifier = Modifier.padding(start = 32.dp), - text = "To", + text = stringResource(R.string.to), style = UI.typo.b1.style( color = UI.colors.pureInverse, fontWeight = FontWeight.ExtraBold @@ -588,7 +589,7 @@ private fun AddAccount( Text( modifier = Modifier.padding(vertical = 10.dp), - text = "Add account", + text = stringResource(R.string.add_account), style = UI.typo.b2.style( color = UI.colors.pureInverse, fontWeight = FontWeight.ExtraBold diff --git a/app/src/main/java/com/ivy/wallet/ui/edit/core/Title.kt b/app/src/main/java/com/ivy/wallet/ui/edit/core/Title.kt index d590db58ad..a2d17635fe 100644 --- a/app/src/main/java/com/ivy/wallet/ui/edit/core/Title.kt +++ b/app/src/main/java/com/ivy/wallet/ui/edit/core/Title.kt @@ -15,6 +15,7 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardCapitalization @@ -24,6 +25,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ivy.design.l0_system.UI import com.ivy.design.l0_system.style +import com.ivy.wallet.R import com.ivy.wallet.domain.data.TransactionType import com.ivy.wallet.ui.IvyWalletComponentPreview import com.ivy.wallet.ui.theme.components.IvyTitleTextField @@ -56,9 +58,9 @@ fun ColumnScope.Title( .padding(horizontal = 24.dp), value = titleTextFieldValue, hint = when (type) { - TransactionType.INCOME -> "Income title" - TransactionType.EXPENSE -> "Expense title" - TransactionType.TRANSFER -> "Transfer title" + TransactionType.INCOME -> stringResource(R.string.income_title) + TransactionType.EXPENSE -> stringResource(R.string.expense_title) + TransactionType.TRANSFER -> stringResource(R.string.transfer_title) }, keyboardOptions = KeyboardOptions( autoCorrect = true, diff --git a/app/src/main/java/com/ivy/wallet/ui/edit/core/Toolbar.kt b/app/src/main/java/com/ivy/wallet/ui/edit/core/Toolbar.kt index 611cff02ac..9f7e69824e 100644 --- a/app/src/main/java/com/ivy/wallet/ui/edit/core/Toolbar.kt +++ b/app/src/main/java/com/ivy/wallet/ui/edit/core/Toolbar.kt @@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.width 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.ivy.design.api.navigation import com.ivy.wallet.R @@ -38,7 +39,7 @@ fun Toolbar( when (type) { TransactionType.INCOME -> { IvyOutlinedButton( - text = "Income", + text = stringResource(R.string.income), iconStart = R.drawable.ic_income ) { onChangeTransactionTypeModal() @@ -48,7 +49,7 @@ fun Toolbar( } TransactionType.EXPENSE -> { IvyOutlinedButton( - text = "Expense", + text = stringResource(R.string.expense), iconStart = R.drawable.ic_expense ) { onChangeTransactionTypeModal() diff --git a/app/src/main/java/com/ivy/wallet/ui/home/HomeHeader.kt b/app/src/main/java/com/ivy/wallet/ui/home/HomeHeader.kt index fe4b31cfd1..baf16d0f45 100644 --- a/app/src/main/java/com/ivy/wallet/ui/home/HomeHeader.kt +++ b/app/src/main/java/com/ivy/wallet/ui/home/HomeHeader.kt @@ -16,6 +16,7 @@ import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.ivy.design.api.navigation @@ -120,7 +121,7 @@ private fun HeaderStickyRow( modifier = Modifier .alpha(percentExpanded) .testTag("home_greeting_text"), - text = if (name.isNotNullOrBlank()) "Hi $name" else "Hi", + text = if (name.isNotNullOrBlank()) stringResource(R.string.hi_name, name) else stringResource(R.string.hi), style = UI.typo.b1.style( fontWeight = FontWeight.ExtraBold, color = UI.colors.pureInverse @@ -234,7 +235,7 @@ fun CashFlowInfo( modifier = Modifier.padding( start = 24.dp ), - text = "Cashflow: ${if (cashflow > 0) "+" else ""}${cashflow.format(currency)} $currency", + text = stringResource(R.string.cashflow, (if (cashflow > 0) "+" else ""), cashflow.format(currency), currency), style = UI.typo.nB2.style( color = if (cashflow < 0) Gray else Green ) @@ -268,7 +269,7 @@ private fun IncomeExpenses( icon = R.drawable.ic_income, backgroundGradient = GradientGreen, textColor = White, - label = "Income", + label = stringResource(R.string.income), currency = currency, amount = monthlyIncome ) { @@ -286,7 +287,7 @@ private fun IncomeExpenses( icon = R.drawable.ic_expense, backgroundGradient = Gradient(UI.colors.pureInverse, UI.colors.gray), textColor = UI.colors.pure, - label = "Expenses", + label = stringResource(R.string.expenses), currency = currency, amount = monthlyExpenses.absoluteValue ) { diff --git a/app/src/main/java/com/ivy/wallet/ui/home/HomeMoreMenu.kt b/app/src/main/java/com/ivy/wallet/ui/home/HomeMoreMenu.kt index a84948bd97..a7427ab022 100644 --- a/app/src/main/java/com/ivy/wallet/ui/home/HomeMoreMenu.kt +++ b/app/src/main/java/com/ivy/wallet/ui/home/HomeMoreMenu.kt @@ -18,6 +18,7 @@ import androidx.compose.ui.layout.layout import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview @@ -250,7 +251,7 @@ private fun SearchButton( modifier = Modifier.padding( vertical = 12.dp, ), - text = "Search transactions", + text = stringResource(R.string.search_transactions), style = UI.typo.b2.style( fontWeight = FontWeight.SemiBold, color = UI.colors.pureInverse @@ -291,7 +292,7 @@ private fun ColumnScope.OpenSource() { .padding(start = 16.dp, end = 24.dp) ) { Text( - text = "Ivy Wallet is open-source", + text = stringResource(R.string.ivy_wallet_open_source), style = UI.typo.b2.style( fontWeight = FontWeight.ExtraBold ) @@ -330,7 +331,7 @@ private fun ColumnScope.Buffer( Spacer(Modifier.width(24.dp)) Text( - text = "Savings goal", + text = stringResource(R.string.savings_goal), style = UI.typo.b1.style( color = UI.colors.pureInverse, fontWeight = FontWeight.ExtraBold @@ -369,7 +370,7 @@ private fun QuickAccess( Text( modifier = Modifier.padding(start = 24.dp), - text = "Quick access" + text = stringResource(R.string.quick_access) ) Spacer(Modifier.height(16.dp)) @@ -383,7 +384,7 @@ private fun QuickAccess( MoreMenuButton( icon = R.drawable.home_more_menu_settings, - label = "Settings" + label = stringResource(R.string.settings) ) { nav.navigateTo(Settings) } @@ -392,7 +393,7 @@ private fun QuickAccess( MoreMenuButton( icon = R.drawable.home_more_menu_categories, - label = "Categories" + label = stringResource(R.string.categories) ) { nav.navigateTo(Categories) } @@ -406,9 +407,9 @@ private fun QuickAccess( Theme.AUTO -> R.drawable.home_more_menu_auto_mode }, label = when (theme) { - Theme.LIGHT -> "Light mode" - Theme.DARK -> "Dark mode" - Theme.AUTO -> "Auto mode" + Theme.LIGHT -> stringResource(R.string.light_mode) + Theme.DARK -> stringResource(R.string.dark_mode) + Theme.AUTO -> stringResource(R.string.auto_mode) }, backgroundColor = when (theme) { Theme.LIGHT -> UI.colors.pure @@ -428,7 +429,7 @@ private fun QuickAccess( MoreMenuButton( icon = R.drawable.home_more_menu_planned_payments, - label = "Planned\nPayments" + label = stringResource(R.string.planned_payments) ) { nav.navigateTo(PlannedPayments) } @@ -456,7 +457,7 @@ private fun QuickAccess( MoreMenuButton( icon = R.drawable.home_more_menu_share, - label = "Share Ivy" + label = stringResource(R.string.share_ivy) ) { (context as RootActivity).shareIvyWallet() } @@ -465,7 +466,7 @@ private fun QuickAccess( MoreMenuButton( icon = R.drawable.home_more_menu_reports, - label = "Reports", + label = stringResource(R.string.reports), ) { nav.navigateTo(Report) } @@ -474,7 +475,7 @@ private fun QuickAccess( MoreMenuButton( icon = R.drawable.home_more_menu_budgets, - label = "Budgets", + label = stringResource(R.string.budgets), ) { nav.navigateTo(BudgetScreen) } @@ -483,7 +484,7 @@ private fun QuickAccess( MoreMenuButton( icon = R.drawable.home_more_menu_loans, - label = "Loans", + label = stringResource(R.string.loans), ) { nav.navigateTo(Loans) } diff --git a/app/src/main/java/com/ivy/wallet/ui/home/HomeTab.kt b/app/src/main/java/com/ivy/wallet/ui/home/HomeTab.kt index 2ec26733aa..50d427b3b5 100644 --- a/app/src/main/java/com/ivy/wallet/ui/home/HomeTab.kt +++ b/app/src/main/java/com/ivy/wallet/ui/home/HomeTab.kt @@ -12,6 +12,7 @@ import androidx.compose.ui.geometry.Offset import androidx.compose.ui.input.nestedscroll.NestedScrollConnection import androidx.compose.ui.input.nestedscroll.NestedScrollSource import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Velocity import androidx.compose.ui.unit.dp @@ -20,12 +21,14 @@ import com.google.accompanist.insets.systemBarsPadding import com.ivy.design.api.navigation import com.ivy.design.l0_system.Theme import com.ivy.wallet.Constants +import com.ivy.wallet.R import com.ivy.wallet.domain.data.IvyCurrency import com.ivy.wallet.domain.data.TransactionHistoryItem import com.ivy.wallet.domain.data.entity.Account import com.ivy.wallet.domain.data.entity.Category import com.ivy.wallet.domain.data.entity.Transaction import com.ivy.wallet.domain.logic.model.CustomerJourneyCardData +import com.ivy.wallet.stringRes import com.ivy.wallet.ui.IvyWalletPreview import com.ivy.wallet.ui.Main import com.ivy.wallet.ui.ivyWalletCtx @@ -287,7 +290,7 @@ private fun BoxWithConstraintsScope.UI( } CurrencyModal( - title = "Set currency", + title = stringResource(R.string.set_currency), initialCurrency = IvyCurrency.fromCode(currencyCode), visible = currencyModalVisible, dismiss = { currencyModalVisible = false } @@ -441,10 +444,8 @@ fun HomeLazyColumn( overdueExpenses = overdueExpenses, history = history, onPayOrGet = onPayOrGet, - emptyStateTitle = "No transactions", - emptyStateText = "You don't have any transactions for ${ - period.toDisplayLong(ivyContext.startDayOfMonth) - }.\nYou can add one by tapping the \"+\" button." + emptyStateTitle = stringRes(R.string.no_transactions), + emptyStateText = stringRes(R.string.no_transactions_description, period.toDisplayLong(ivyContext.startDayOfMonth)) ) } } diff --git a/app/src/main/java/com/ivy/wallet/ui/loan/LoanBottomBar.kt b/app/src/main/java/com/ivy/wallet/ui/loan/LoanBottomBar.kt index fefa1b63e4..1da0afa3d2 100644 --- a/app/src/main/java/com/ivy/wallet/ui/loan/LoanBottomBar.kt +++ b/app/src/main/java/com/ivy/wallet/ui/loan/LoanBottomBar.kt @@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import com.ivy.wallet.R import com.ivy.wallet.ui.IvyWalletPreview @@ -20,7 +21,7 @@ internal fun BoxWithConstraintsScope.LoanBottomBar( ) { BackBottomBar(onBack = onClose) { IvyButton( - text = "Add loan", + text = stringResource(R.string.add_loan), iconStart = R.drawable.ic_plus ) { onAdd() diff --git a/app/src/main/java/com/ivy/wallet/ui/loan/LoansScreen.kt b/app/src/main/java/com/ivy/wallet/ui/loan/LoansScreen.kt index a5694cfcce..9469325d4b 100644 --- a/app/src/main/java/com/ivy/wallet/ui/loan/LoansScreen.kt +++ b/app/src/main/java/com/ivy/wallet/ui/loan/LoansScreen.kt @@ -12,6 +12,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview @@ -92,9 +93,8 @@ private fun BoxWithConstraintsScope.UI( Spacer(Modifier.weight(1f)) NoLoansEmptyState( - emptyStateTitle = "No loans", - emptyStateText = "You don't have any loans.\n" + - "Tap the \"+ Add loan\" to add one." + emptyStateTitle = stringResource(R.string.no_loans), + emptyStateText = stringResource(R.string.no_loans_description) ) Spacer(Modifier.weight(1f)) @@ -166,7 +166,7 @@ private fun Toolbar( .padding(start = 24.dp, end = 16.dp) ) { Text( - text = "Loans", + text = stringResource(R.string.loans), style = UI.typo.h2.style( color = UI.colors.pureInverse, fontWeight = FontWeight.ExtraBold diff --git a/app/src/main/java/com/ivy/wallet/ui/loandetails/LoanDetailsScreen.kt b/app/src/main/java/com/ivy/wallet/ui/loandetails/LoanDetailsScreen.kt index 664946a5b3..39872471fb 100644 --- a/app/src/main/java/com/ivy/wallet/ui/loandetails/LoanDetailsScreen.kt +++ b/app/src/main/java/com/ivy/wallet/ui/loandetails/LoanDetailsScreen.kt @@ -16,6 +16,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview @@ -242,16 +243,16 @@ private fun BoxWithConstraintsScope.UI( DeleteModal( visible = deleteModalVisible, - title = "Confirm deletion", - description = "Note: Deleting this loan will remove it permanently and delete all associated loan records with it.", + title = stringResource(R.string.confirm_deletion), + description = stringResource(R.string.confirm_loan_deletion_description), dismiss = { deleteModalVisible = false } ) { onDeleteLoan() } ProgressModal( - title = "Confirm Account Change", - description = "Please wait, re-calculating all loan records", + title = stringResource(R.string.confirm_account_change), + description = stringResource(R.string.confirm_account_loan_change), visible = waitModalVisible ) } @@ -404,7 +405,7 @@ private fun LoanInfoCard( ) { Text( modifier = Modifier.padding(top = 8.dp, start = 24.dp), - text = "Paid", + text = stringResource(R.string.paid), style = UI.typo.c.style( color = contrastColor, fontWeight = FontWeight.ExtraBold @@ -484,7 +485,7 @@ private fun LoanInfoCard( Text( modifier = Modifier .testTag("left_to_pay"), - text = "${leftToPay.format(baseCurrency)} $baseCurrency left", + text = stringResource(R.string.left_to_pay), style = UI.typo.nB2.style( color = Gray, fontWeight = FontWeight.ExtraBold @@ -515,7 +516,7 @@ private fun LoanInfoCard( Text( modifier = Modifier.padding(horizontal = 24.dp), - text = "Loan Interest", + text = stringResource(R.string.loan_interest), style = UI.typo.c.style( color = contrastColor, fontWeight = FontWeight.ExtraBold @@ -545,7 +546,7 @@ private fun LoanInfoCard( Text( modifier = Modifier .testTag("interest_paid"), - text = "${loanAmountPaid.format(baseCurrency)} $baseCurrency paid", + text = stringResource(R.string.interest_paid, loanAmountPaid.format(baseCurrency), baseCurrency), style = UI.typo.nB2.style( color = Gray, fontWeight = FontWeight.ExtraBold @@ -572,7 +573,7 @@ private fun LoanInfoCard( .fillMaxWidth() .padding(horizontal = 16.dp) .align(Alignment.CenterHorizontally), - text = "Add record", + text = stringResource(R.string.add_record), shadowAlpha = 0.1f, backgroundGradient = Gradient.solid(contrastColor), textStyle = UI.typo.b2.style( @@ -671,7 +672,7 @@ private fun LoanRecordItem( backgroundGradient = Gradient.solid(loan.color.toComposeColor()), hasGlow = false, iconTint = textIconColor, - text = "Interest", + text = stringResource(R.string.interest), iconStart = getCustomIconIdS( iconName = "currency", defaultIcon = R.drawable.ic_currency @@ -754,7 +755,7 @@ private fun NoLoanRecordsEmptyState() { Spacer(Modifier.height(24.dp)) Text( - text = "No records", + text = stringResource(R.string.no_records), style = UI.typo.b1.style( color = Gray, fontWeight = FontWeight.ExtraBold @@ -765,7 +766,7 @@ private fun NoLoanRecordsEmptyState() { Text( modifier = Modifier.padding(horizontal = 32.dp), - text = "You don't have any records for this loan. Tap \"Add record\" to create one.", + text = stringResource(R.string.no_records_for_the_loan), style = UI.typo.b2.style( color = Gray, fontWeight = FontWeight.Medium, diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6d40278ff9..77b397e235 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -68,4 +68,58 @@ Failed %1$d rows from CSV file not recognized Finish + Add description + Description + Planned for + Add money to + Pay with + From + Account + To + Add account + Income title + Expense title + Transfer title + Expense + Add planned date of payment + Pay + Get + Confirm deletion + Deleting this transaction will remove it from the transaction history and update the balance accordingly. + Confirm Account Change + Note: You are trying to change the account associated with the loan with an account of different currency, \nAll the loan records will be re-calculated based on today\'s exchanges rates + Confirm + Please wait, re-calculating all loan records + Created on + Hi + Hi %1$s + Cashflow: %1$s%2$s %3$s + Search transactions + Ivy Wallet is open-source + Savings goal + Quick access + Settings + Light mode + Dark mode + Auto mode + Planned\nPayments + Share Ivy + Reports + Loans + Set currency + No transactions + You don\'t have any transactions for %1$s.\nYou can add one by tapping the \"+\" button. + Add loan + No loans + You don\'t have any loans.\nTap the \"+ Add loan\" to add one. + Note: Deleting this loan will remove it permanently and delete all associated loan records with it. + Please wait, re-calculating all loan records + Paid + %1$s %2$s left + Loan Interest + %1$s %2$s paid + Add record + Interest + No records + You don\'t have any records for this loan. Tap "Add record" to create one.