diff --git a/app/src/main/java/com/serranoie/app/minus/presentation/ui/history/History.kt b/app/src/main/java/com/serranoie/app/minus/presentation/ui/history/History.kt
index 5055e7c..38fc663 100644
--- a/app/src/main/java/com/serranoie/app/minus/presentation/ui/history/History.kt
+++ b/app/src/main/java/com/serranoie/app/minus/presentation/ui/history/History.kt
@@ -4,9 +4,9 @@ import androidx.compose.animation.animateContentSize
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.statusBarsPadding
-import androidx.compose.foundation.layout.height
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -20,11 +20,13 @@ 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.platform.LocalResources
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.unit.dp
import androidx.datastore.preferences.core.emptyPreferences
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
+import com.serranoie.app.minus.R
import com.serranoie.app.minus.domain.model.Transaction
import com.serranoie.app.minus.presentation.RECURRENT_PAYMENTS_VIEW_MODE_KEY
import com.serranoie.app.minus.presentation.settingsDataStore
@@ -59,6 +61,7 @@ fun History(
onShowInfoSnackbar: (message: String) -> Unit = {},
) {
val context = LocalContext.current
+ val resources = LocalResources.current
val view = LocalView.current
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
val preferences by context.settingsDataStore.data.collectAsStateWithLifecycle(initialValue = emptyPreferences())
@@ -67,9 +70,10 @@ fun History(
}
val scrollState = rememberLazyListState()
- val isAtEndOfList = remember(scrollState.canScrollForward, scrollState.layoutInfo.visibleItemsInfo) {
- !scrollState.canScrollForward && scrollState.layoutInfo.visibleItemsInfo.lastOrNull() != null
- }
+ val isAtEndOfList =
+ remember(scrollState.canScrollForward, scrollState.layoutInfo.visibleItemsInfo) {
+ !scrollState.canScrollForward && scrollState.layoutInfo.visibleItemsInfo.lastOrNull() != null
+ }
LaunchedEffect(isAtEndOfList) {
viewModel.processIntent(BudgetSystemIntent.SetLockSwipeable(!isAtEndOfList))
@@ -176,10 +180,16 @@ fun History(
fun queueDeleteWithUndo(transaction: Transaction) {
pendingRemovedTransactions = pendingRemovedTransactions + (transaction.id to transaction)
- onQueueDeleteWithUndo(transaction, "${transaction.comment.ifEmpty { "Gasto" }} eliminado", {
+ onQueueDeleteWithUndo(
+ transaction,
+ resources.getString(
+ R.string.expense_deleted_format,
+ transaction.comment.ifEmpty { resources.getString(R.string.generic_expense) },
+ ),
+ ) {
pendingRemovedTransactions = pendingRemovedTransactions - transaction.id
onCancelPendingDelete()
- })
+ }
}
fun toggleExpandedDate(date: LocalDate) {
@@ -194,7 +204,12 @@ fun History(
viewModel.processIntent(
BudgetTransactionIntent.EditTransactionTapped(updatedTransaction)
)
- onShowInfoSnackbar("${updatedTransaction.comment.ifEmpty { "Gasto" }} ha sido modificado")
+ onShowInfoSnackbar(
+ resources.getString(
+ R.string.expense_modified_format,
+ updatedTransaction.comment.ifEmpty { resources.getString(R.string.generic_expense) },
+ ),
+ )
onSaved()
}
diff --git a/app/src/main/java/com/serranoie/app/minus/presentation/ui/history/TransactionEditScreen.kt b/app/src/main/java/com/serranoie/app/minus/presentation/ui/history/TransactionEditScreen.kt
index 48f2f75..be4108a 100644
--- a/app/src/main/java/com/serranoie/app/minus/presentation/ui/history/TransactionEditScreen.kt
+++ b/app/src/main/java/com/serranoie/app/minus/presentation/ui/history/TransactionEditScreen.kt
@@ -58,6 +58,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.semantics.role
@@ -140,6 +141,10 @@ fun TransactionEditScreen(
var isCalculation by remember { mutableStateOf(false) }
+ // Calculate dynamic target height for numpad to take 48% of screen height
+ val configuration = LocalConfiguration.current
+ val screenHeight = configuration.screenHeightDp.dp
+ val targetNumpadHeight = screenHeight * 0.48f
val baseTextStyle = MaterialTheme.typography.displayLargeCondensed.copy(
fontWeight = FontWeight.W500
@@ -330,7 +335,7 @@ fun TransactionEditScreen(
Numpad(
modifier = Modifier
.fillMaxWidth()
- .weight(2f),
+ .height(targetNumpadHeight),
editorState = editorState,
onNumberInput = { digit ->
editedAmount = if (editedAmount == "0") {
@@ -886,4 +891,4 @@ private fun evaluateCalculation(input: String): String? {
} catch (e: Exception) {
null
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/serranoie/app/minus/presentation/ui/theme/component/numpad/Numpad.kt b/app/src/main/java/com/serranoie/app/minus/presentation/ui/theme/component/numpad/Numpad.kt
index d58fb0c..482a32a 100644
--- a/app/src/main/java/com/serranoie/app/minus/presentation/ui/theme/component/numpad/Numpad.kt
+++ b/app/src/main/java/com/serranoie/app/minus/presentation/ui/theme/component/numpad/Numpad.kt
@@ -9,7 +9,6 @@ import androidx.compose.animation.fadeOut
import androidx.compose.animation.slideInVertically
import androidx.compose.animation.slideOutVertically
import androidx.compose.animation.togetherWith
-import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.foundation.gestures.detectVerticalDragGestures
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@@ -36,6 +35,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clipToBounds
+import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.platform.LocalHapticFeedback
@@ -94,7 +94,7 @@ fun Numpad(
onApplyPressedForTutorial: (() -> Unit)? = null,
onDragProgressChanged: (Float) -> Unit = {},
dragProgress: Float = 0f,
- rowHeight: Dp = 55.dp,
+ rowHeight: Dp = 55.dp, // Still kept for backward compatibility but internal logic now uses weights
) {
val view = LocalView.current
val haptic = LocalHapticFeedback.current
@@ -186,14 +186,14 @@ fun Numpad(
Box(
Modifier
.fillMaxWidth()
- .height(rowHeight * effectiveDragProgress)
+ .weight(effectiveDragProgress.coerceAtLeast(0.01f)) // Ensure weight > 0 to prevent crash
.clipToBounds(),
contentAlignment = androidx.compose.ui.Alignment.BottomCenter
) {
Row(
Modifier
.fillMaxWidth()
- .height(rowHeight)
+ .fillMaxHeight()
.graphicsLayer(alpha = effectiveDragProgress)
) {
val operators = listOf('÷', '×', '+', '-')
@@ -216,7 +216,7 @@ fun Numpad(
Row(
Modifier
.fillMaxWidth()
- .height(rowHeight * 4)
+ .weight(4f) // Use weight instead of fixed height
) {
Column(
modifier = Modifier
@@ -279,7 +279,6 @@ fun Numpad(
text = i.toString(),
onClick = {
onNumberInput(i)
- onNumberPressedForTutorial?.invoke()
debugProgress = 0
haptic.performHapticFeedback(HapticFeedbackType.TextHandleMove)
})
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 63288c1..dc87054 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -85,7 +85,8 @@
Nuevo período de ahorro
%1$s eliminado
- Gastos
+ %1$s ha sido modificado
+ Gasto
Gasto sin nombre
Gasto recurrente — %1$s
Ocultar suscripciones fuera del período
@@ -108,8 +109,8 @@
- - %d día
- - %d días
+ - %d día left
+ - %d días left
Presupuesto total
@@ -325,7 +326,7 @@
Sobrante del presupuesto
- Puedes elegir como distribuir el balance del presupuesto al final de cada día.\n\nPor ejemplo, tienes un presupuesto de 500 al día, y ayer gastaste 400: puedes repartir 100 en los días que queda, o gastar 600 (presupuesto por día + sobrante del periodo anterior) hoy.
+ Puedes elegir como distribuir el balance del presupuesto al final de cada día.\n\nFor ejemplo, tienes un presupuesto de 500 al día, y ayer gastaste 400: puedes repartir 100 en los días que queda, o gastar 600 (presupuesto por día + sobrante del periodo anterior) hoy.
Preguntarme siempre
Al final del período te preguntaremos qué hacer con el sobrante
Repartir entre todos los días
@@ -338,4 +339,4 @@
Horizontal
Mostrar los pagos recurrentes como tarjetas horizontales
Vertical
-
+
\ No newline at end of file
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 399fe8d..9cef1e1 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -1,200 +1,201 @@
Minus
- Today
- Yesterday
- Tomorrow
- Apply
- Accept
- Cancel
+ Aujourd\'hui
+ Hier
+ Demain
+ Appliquer
+ Accepter
+ Annuler
OK
- Save
- Delete
- Edit
- Close
- Done
- Add
- Remove
- Back
- Next
- Period
- Previous values
+ Enregistrer
+ Supprimer
+ Modifier
+ Fermer
+ Terminé
+ Ajouter
+ Retirer
+ Retour
+ Suivant
+ Période
+ Valeurs précédentes
Budget
- Recurrent Expense
- Let\'s define the recurrent expense
- How often do you want to pay this expense?
- Weekly
- Biweekly
- Monthly
- Previous day
- Next day
- Day %1$d of each month
- Limit date
+ Dépense récurrente
+ Définissons la dépense récurrente
+ À quelle fréquence souhaitez-vous payer cette dépense ?
+ Hebdomadaire
+ Toutes les deux semaines
+ Mensuel
+ Jour précédent
+ Jour suivant
+ Le %1$d de chaque mois
+ Date limite
Date
- Change date
- It will be charged every week until %1$s.
- It will be charged every two weeks until %1$s.
- It will be charged every month on day %1$d until %2$s.
- Credit card cutoff date
- To track credit expenses, set the billing cutoff day (1-31).
- Cutoff day
+ Modifier la date
+ Il sera prélevé chaque semaine jusqu\'au %1$s.
+ Il sera prélevé toutes les deux semaines jusqu\'au %1$s.
+ Il sera prélevé chaque mois le %1$d jusqu\'au %2$s.
+ Date de clôture de la carte de crédit
+ Pour suivre les dépenses à crédit, définissez le jour de clôture de facturation (1-31).
+ Jour de clôture
- Period finished
- Remaining budget
- What do you want to do with the remaining money?
- Split equally
- Add %1$s to the budget for the next few days
- Carry to tomorrow
- Add %1$s to tomorrow\'s budget
- View analytics
- Review the summary of the finished period
+ Période terminée
+ Budget restant
+ Que voulez-vous faire de l\'argent restant ?
+ Répartir équitablement
+ Ajouter %1$s au budget pour les prochains jours
+ Reporter à demain
+ Ajouter %1$s au budget de demain
+ Voir les analyses
+ Consulter le résumé de la période terminée
- Edit recurrent expense
- Edit expense
- Cancel edit
- Configure recurrence
- Make recurrent
- Select time
- Billing day
- End date
- Frequency
- Weekly (every 7 days)
- Biweekly (every 14 days)
-
- Edit Budget
- New budget period
+ Modifier la dépense récurrente
+ Modifier la dépense
+ Annuler la modification
+ Configurer la récurrence
+ Rendre récurrent
+ Choisir l\'heure
+ Jour de facturation
+ Date de fin
+ Fréquence
+ Hebdomadaire (tous les 7 jours)
+ Bihebdomadaire (tous les 14 jours)
+
+ Modifier le budget
+ Nouvelle période budgétaire
- - %d expense for the next period
- - %d expenses for the next period
+ - %d dépense pour la période suivante
+ - %d dépenses pour la période suivante
- New Budget Period
- Quick view of your expenses and add new ones
- Total Expenses
- New Expense
- Daily average
- Expenses history
- Single expense
- + Add Expense
- Finalize period?
- Finalize budget period early
- This will close the current period and start a new one. Are you sure?
- Finalize
- No ending date
- How do you want to split the budget?
- New Budget Period
+ Nouvelle période budgétaire
+ Aperçu rapide de vos dépenses et ajout de nouvelles
+ Total des dépenses
+ Nouvelle dépense
+ Moyenne quotidienne
+ Historique des dépenses
+ Dépense unique
+ + Ajouter une dépense
+ Finaliser la période ?
+ Finaliser la période budgétaire plus tôt
+ Cela clôturera la période actuelle et en commencera une nouvelle. Êtes-vous sûr ?
+ Finaliser
+ Pas de date de fin
+ Comment voulez-vous répartir le budget ?
+ Nouvelle période budgétaire
- %1$s deleted
- Expense
+ %1$s supprimé
+ %1$s a été modifié
+ Dépense
Dépense sans nom
Dépense récurrente — %1$s
- Hide subscriptions outside of the period
- Show subscriptions outside of the period
- Hide past period expenses
- Show past period expenses
+ Masquer les abonnements hors période
+ Afficher les abonnements hors période
+ Masquer les dépenses de la période passée
+ Afficher les dépenses de la période passée
- Category
+ Catégorie
- Budget must be greater than 0
- No end date defined
- No days defined
- Budget must be for at least one day
+ Le budget doit être supérieur à 0
+ Aucune date de fin définie
+ Aucun jour défini
+ Le budget doit être d\'au moins un jour
- Analytics
+ Analyses
- - %d day
- - %d days
+ - %d jour
+ - %d jours
- - %d day left
- - %d days left
+ - %d jour restant
+ - %d jours restants
- Total budget
- Minimum spent
- Maximum spent
- Average per day spent
+ Budget total
+ Dépense minimale
+ Dépense maximale
+ Moyenne dépensée par jour
- Days\nremaining
+ Jours\nrestants
- See spent and remaining budget at a glance
- Countdown days remaining in budget period
- Full budget overview with top category and days left
- Heatmap calendar to see spending distribution
- Current month heatmap calendar
- Quick shortcut to add a new expense
- Add new expense
+ Consultez le budget dépensé et restant en un coup d\'œil
+ Compte à rebours des jours restants dans la période budgétaire
+ Aperçu complet du budget avec la catégorie principale et les jours restants
+ Calendrier thermique pour voir la répartition des dépenses
+ Calendrier thermique du mois en cours
+ Raccourci rapide pour ajouter une nouvelle dépense
+ Ajouter une nouvelle dépense
- Spent
- Left
- Remaining
- Total Spent
- days left
- Budget Overview
-
- Daily
- Weekly
- Biweekly
- Monthly
-
- Today\'s budget
- This week
- This fortnight
- This month
-
- Total: %1$s
-
- Welcome to Minus!
- Hi and welcome, lets start saving together.
- Set a budget
- Estimate how much money you need for a period and stay informed about how much you can save.
- Track every expense
- This app helps you calculate how much you can spend per day, week, biweekly period, or month so you stay on track and know what is left.
- Spend wisely
- Over time, you will learn how much you can save and how much you can spend.
- Set a budget
+ Dépensé
+ Restant
+ Restant
+ Total dépensé
+ jours restants
+ Aperçu du budget
+
+ Quotidien
+ Hebdomadaire
+ Bihebdomadaire
+ Mensuel
+
+ Budget d\'aujourd\'hui
+ Cette semaine
+ Cette quinzaine
+ Ce mois-ci
+
+ Total : %1$s
+
+ Bienvenue sur Minus !
+ Bonjour et bienvenue, commençons à épargner ensemble.
+ Définir un budget
+ Estimez l\'argent dont vous avez besoin pour une période et restez informé de ce que vous pouvez économiser.
+ Suivre chaque dépense
+ Cette application vous aide à calculer ce que vous pouvez dépenser par jour, semaine, quinzaine ou mois pour garder le cap.
+ Dépenser intelligemment
+ Au fil du temps, vous apprendrez combien vous pouvez économiser et combien vous pouvez dépenser.
+ Définir un budget
- Select the period
- %1$d days · %2$s - %3$s
- How do you want to view your budget?
+ Sélectionnez la période
+ %1$d jours · %2$s - %3$s
+ Comment souhaitez-vous visualiser votre budget ?
- Settings
- Appearance
+ Paramètres
+ Apparence
Notifications
- Features
- App information
- Data backup
- Tutorial
-
- Theme
- Change the app theme style
- Typography
- Change the app typography style
+ Fonctionnalités
+ Informations sur l\'application
+ Sauvegarde des données
+ Tutoriel
+
+ Thème
+ Changer le style de thème de l\'application
+ Typographie
+ Changer le style de typographie de l\'application
Material You
- Use wallpaper colors to apply a dynamic app theme
- Credit quick toggle in editor
- Tap to see details and controls
- When enabled, the credit-card quick toggle appears next to the recurrent button while typing an amount in the editor. If disabled, that button is hidden to keep the quick-capture UI cleaner.
- Enable credit quick toggle
-
- Period end time
- The notification will be shown the day after the period ends
- Exact alarms
- Enabled to try showing notifications at the selected time
- Disabled; Android may delay the notification
-
- About
- Learn more about the app and its development
- Found a bug?
- Create a bug report and we will fix it soon
+ Utiliser les couleurs du fond d\'écran pour appliquer un thème dynamique
+ Utiliser la carte de crédit comme paiement
+ Appuyez pour voir plus de détails
+ Une fois activé, vous pouvez marquer les paiements effectués avec une carte de crédit. \nEn déclarant une date de facturation, vous saurez combien payer à votre banque avant de devoir payer des intérêts.
+ Activer l\'usage CC
+
+ Heure de fin de période
+ La notification sera affichée le lendemain de la fin de la période
+ Alarmes exactes
+ Activé pour essayer d\'afficher les notifications à l\'heure sélectionnée
+ Désactivé ; Android peut retarder la notification
+
+ À propos
+ En savoir plus sur l\'application et son développement
+ Un bug ?
+ Créez un rapport de bug et nous le corrigerons bientôt
Version
@@ -228,108 +229,125 @@
Captures d’écran ou vidéos (jusqu’à 10 Mo)
%1$d pièce(s) jointe(s) sélectionnée(s)
- Back up data
- Back up data to minus_export.csv
- Import CSV
- Import data from a CSV file
-
- Reset tutorial
- You will see gesture hints, info, and actions across the app again.
-
- App theme
- Light
- Always use light theme
- Dark
- Always use dark theme
- Follow system
- Use the system theme setting
-
- App typography
- Default
- Use the base typography
- Condensed
- Use compact typography
+ Sauvegarder les données
+ Sauvegarder les données dans minus_export.csv
+ Importer un CSV
+ Importer des données à partir d\'un fichier CSV
+
+ Réinitialiser le tutoriel
+ Vous verrez à nouveau les indices de gestes, les infos et les actions dans l\'application.
+
+ Thème de l\'application
+ Clair
+ Toujours utiliser le thème clair
+ Sombre
+ Toujours utiliser le thème sombre
+ Suivre le système
+ Utiliser le paramètre de thème du système
+
+ Typographie de l\'application
+ Par défaut
+ Utiliser la typographie de base
+ Condensée
+ Utiliser une typographie compacte
Expressive
- Use expressive typography
+ Utiliser une typographie expressive
- Expand
- Collapse
+ Développer
+ Réduire
- Budget exhausted
- No budget
- daily
- weekly
- biweekly
- %1$s budget exhausted
- %1$s and %2$s budget exhausted
- %1$s, %2$s and %3$s budget exhausted
+ Budget épuisé
+ Aucun budget
+ quotidien
+ hebdomadaire
+ bihebdomadaire
+ Budget %1$s épuisé
+ Budgets %1$s et %2$s épuisés
+ Budgets %1$s, %2$s et %3$s épuisés
- Spent
- Available: %1$s%%
+ Dépensé
+ Disponible : %1$s%%
- Uncategorized
- Remaining
- We can\'t split your spending by categories
- Use tags to see the chart by categories
+ Non catégorisé
+ Restant
+ Nous ne pouvons pas répartir vos dépenses par catégories
+ Utilisez des étiquettes pour voir le graphique par catégories
- This chart shows money spent for each day in the period
+ Ce graphique montre l\'argent dépensé pour chaque jour de la période
- No recorded expenses
- Add an expense to get started
+ Aucune dépense enregistrée
+ Ajoutez une dépense pour commencer
- Upcoming recurrent payments
- Recurrent Payments on this period
+ Paiements récurrents à venir
+ Paiements récurrents sur cette période
- Today
- Tomorrow
- In %1$d days
- In %1$d weeks
- Unnamed recurrent expense
- Delete recurrent expense
- this recurrent expense
- Are you sure you want to delete "%1$s"?
- This action will remove the whole recurrent expense configuration and you will not receive more notifications.
+ Aujourd\'hui
+ Demain
+ Dans %1$d jours
+ Dans %1$d semaines
+ Dépense récurrente sans nom
+ Supprimer la dépense récurrente
+ cette dépense récurrente
+ Êtes-vous sûr de vouloir supprimer "%1$s" ?
+ Cette action supprimera toute la configuration de la dépense récurrente et vous ne recevrez plus de notifications.
- Unnamed subscription
- Weekly
- Biweekly
- Monthly
+ Abonnement sans nom
+ Hebdomadaire
+ Toutes les deux semaines
+ Mensuel
- Period finished
- What do you want to do with the remaining money?
- Split equally
- Add %1$s to the budget for the next days
- Carry to tomorrow
- Add %1$s to tomorrow\'s budget
- View analytics
- Review the summary of the finished period
+ Période terminée
+ Que voulez-vous faire de l\'argent restant ?
+ Répartir équitablement
+ Ajouter %1$s au budget pour les prochains jours
+ Reporter à demain
+ Ajouter %1$s au budget de demain
+ Voir les analyses
+ Consulter le résumé de la période terminée
- Period finished
- Huh? You didn\'t spend anything this period
- Watch out! You went over budget in this period
- Here are the stats for all your spending
+ Période terminée
+ Euh ? Vous n\'avez rien dépensé cette période
+ Attention ! Vous avez dépassé votre budget cette période
+ Voici les statistiques de toutes vos dépenses
- Savings recommendation
- The classic 50/30/20 method divides your budget into 50% needs, 30% wants, and 20% savings, helping you control spending and save consistently.
- Current savings
- Available: %1$s
- Ideal savings: %1$s
- Current savings: %1$s
- Recurring expenses
- One-time expenses
- If you save the 20% each period for about 6 months, you could build:
+ Recommandation d\'épargne
+ La méthode classique 50/30/20 divise votre budget en 50 % de besoins, 30 % d\'envies et 20 % d\'épargne, vous aidant ainsi à contrôler vos dépenses et à épargner régulièrement.
+ Épargne actuelle
+ Disponible : %1$s
+ Épargne idéale : %1$s
+ Épargne actuelle : %1$s
+ Dépenses récurrentes
+ Dépenses ponctuelles
+ Si vous épargnez les 20 % à chaque période pendant environ 6 mois, vous pourriez constituer :
- Show all expenses from the previous period…
+ Afficher toutes les dépenses de la période précédente…
+
+
+ Utiliser %d jours
+ Restant
+ Devise
+ Sélectionner la devise
+ Sélectionné
+
+
+ Surplus budgétaire
+ Vous pouvez choisir comment répartir votre solde budgétaire à la fin de chaque journée.\n\nPar exemple, vous avez un budget de 500 par jour et vous avez dépensé 400 hier : vous pouvez répartir les 100 sur les jours restants, ou dépenser 600 aujourd\'hui (budget quotidien + surplus de la période précédente).
+ Toujours me demander
+ À la fin de la période, nous vous demanderons quoi faire du surplus
+ Répartir sur tous les jours
+ Le surplus est divisé équitablement entre tous les jours de la nouvelle période
+ Ajouter au premier jour
+ Tout le surplus est ajouté au premier jour de la nouvelle période
\ 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 47d0ece..a147a11 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -89,6 +89,7 @@
%1$s deleted
+ %1$s has been modified
Expense
Unnamed expense
Recurrent expense — %1$s