diff --git a/web/src/locales/de.json b/web/src/locales/de.json index 67a1aa4..37446c7 100644 --- a/web/src/locales/de.json +++ b/web/src/locales/de.json @@ -347,9 +347,9 @@ "skipCurrency": "andere Währung", "colBalance": "Kontostand (laufend)", "reconOk": "Saldo-Abgleich stimmt: alle {{n}} Schritte passen zur Kontostand-Spalte der Datei.", - "reconDiff": "Saldo-Abgleich weicht ab. Laut Datei: {{file}} · errechnet: {{app}} · Differenz: {{diff}}.", - "reconFirst": "Erste Abweichung am {{date}} bei „{{payee}}“: Bank {{expected}}, erkannt {{actual}}.", - "reconOpening": "Anfangssaldo laut Datei: {{value}} (trage ihn beim Konto ein, damit der Stand stimmt).", + "reconDiff": "Der Kontostand geht nicht auf. Die Datei endet bei {{file}}, aus den Zeilen errechnet sich aber {{app}} – es fehlen bzw. sind {{diff}} zu viel.", + "reconFirst": "Ab dem {{date}} laufen beide auseinander, bei „{{payee}}“: Die Kontostand-Spalte der Datei springt um {{expected}}, die Zeile selbst weist {{actual}} aus.", + "reconOpening": "Vor der ersten Zeile stand die Datei bei {{value}}. Trage das beim Konto als Anfangssaldo ein, mit einem Stichtag am Tag davor.", "needsTarget": "Gegenkonto wählen", "filterColumn": "Nur Zeilen aus Spalte", "filterValue": "mit dem Wert", @@ -357,7 +357,8 @@ "filterNone": "— kein Filter —", "filterHint": "Revolut legt alle Pockets (Giro, Erspartes, Anlagekonto …) in EINE Datei, jedes mit eigenem Kontostand. Filtere hier auf ein Produkt und lege für die anderen eigene Konten an – sonst zählen die Pocket-Bewegungen doppelt.", "removeEntry": "Eintrag entfernen", - "removeEntryConfirm": "Den Verlaufs-Eintrag „{{file}}“ entfernen? Die Buchungen sind bereits zurückgenommen." + "removeEntryConfirm": "Den Verlaufs-Eintrag „{{file}}“ entfernen? Die Buchungen sind bereits zurückgenommen.", + "reconMixedHint": "Enthält die Datei mehrere Konten oder Produkte? Revolut legt Giro, Erspartes und Anlagekonto in EINE Datei, jedes mit eigener Kontostand-Spalte. Dann greift der Abgleich erst, wenn du oben den Zeilenfilter setzt (z. B. Produkt = Giro) und die übrigen Produkte einzeln einliest." }, "password": { "show": "Passwort anzeigen", diff --git a/web/src/locales/en.json b/web/src/locales/en.json index 5d284c9..1926bce 100644 --- a/web/src/locales/en.json +++ b/web/src/locales/en.json @@ -347,9 +347,9 @@ "skipCurrency": "other currency", "colBalance": "Balance (running)", "reconOk": "Balance check passes: all {{n}} steps match the file's balance column.", - "reconDiff": "Balance check failed. Per file: {{file}} · computed: {{app}} · difference: {{diff}}.", - "reconFirst": "First mismatch on {{date}} at “{{payee}}”: bank {{expected}}, detected {{actual}}.", - "reconOpening": "Opening balance per file: {{value}} (enter it on the account so the balance matches).", + "reconDiff": "The balance doesn't add up. The file ends at {{file}}, but the rows add up to {{app}} – {{diff}} missing or too much.", + "reconFirst": "They start to diverge on {{date}} at “{{payee}}”: the file's balance column moves by {{expected}}, while the row itself states {{actual}}.", + "reconOpening": "Before the first row the file stood at {{value}}. Enter that as the account's opening balance, dated the day before.", "needsTarget": "pick account", "filterColumn": "Only rows from column", "filterValue": "with value", @@ -357,7 +357,8 @@ "filterNone": "— no filter —", "filterHint": "Revolut puts every pocket (Current, Savings, Investments …) into ONE file, each with its own balance. Filter to one product here and create separate accounts for the others – otherwise pocket movements are counted twice.", "removeEntry": "Remove entry", - "removeEntryConfirm": "Remove the history entry “{{file}}”? Its transactions have already been undone." + "removeEntryConfirm": "Remove the history entry “{{file}}”? Its transactions have already been undone.", + "reconMixedHint": "Does the file hold several accounts or products? Revolut puts current, savings and investment into ONE file, each with its own balance column. The check only works once you set the row filter above (e.g. Product = Current) and import the other products separately." }, "password": { "show": "Show password", diff --git a/web/src/pages/Import.jsx b/web/src/pages/Import.jsx index 92a0d17..ba3609a 100644 --- a/web/src/pages/Import.jsx +++ b/web/src/pages/Import.jsx @@ -615,6 +615,10 @@ export default function Import() { })} )} + {/* Häufigste Ursache: mehrere Konten in einer Datei, kein Zeilenfilter. */} + {config.filter_column == null && ( +