feat(costs): leave a category out of the totals for a look (#2819)

Seeing what a trip cost without, say, food meant adding it up by hand. A
click (or tap) on a category in the breakdown now leaves it out of the
total, your share and what you paid, dimmed in place with a line naming it
and Count all to undo. View only: nothing is saved, and what is owed, open
or settled stays whole. The desktop breakdown moves into its own component.
This commit is contained in:
Maurice
2026-11-13 10:04:57 +01:00
parent a70eea5bf2
commit 72fc61a016
40 changed files with 480 additions and 63 deletions
+5
View File
@@ -205,6 +205,11 @@ const budget: TranslationStrings = {
'costs.mode.label': 'تقسيم التكاليف بين المسافرين',
'costs.mode.hintSplit': 'من دفع ومن يتشارك كل مصروف، والتسوية في النهاية.',
'costs.mode.hintTotals': 'الإجماليات فقط: بلا دافعين ولا حصص ولا تسوية. ما قُسِّم من قبل يبقى محفوظًا.',
'costs.breakdown.hint': 'اختر فئة لاستبعادها من الإجماليات.',
'costs.breakdown.leaveOut': 'استبعاد {category} من الإجماليات',
'costs.breakdown.countIn': 'احتساب {category} في الإجماليات مجددًا',
'costs.breakdown.leftOut': 'مستبعد من الإجماليات: {categories}',
'costs.breakdown.countAll': 'احتساب الكل',
'costs.splitHint.ticket': 'اكتب ما ورد في الإيصال وحدّد من أخذ كل عنصر.',
'costs.filter.allCategories': 'كل الفئات',
'costs.filter.allDays': 'كل الأيام',
+5
View File
@@ -167,6 +167,11 @@ const budget: TranslationStrings = {
'costs.mode.label': 'Xərcləri səyahətçilər arasında bölmək',
'costs.mode.hintSplit': 'Hər xərci kimin ödədiyi və kimlərin bölüşdüyü, sonda isə hesablaşma.',
'costs.mode.hintTotals': 'Yalnız yekunlar: ödəyən, pay və hesablaşma yoxdur. Əvvəl bölünənlər saxlanılır.',
'costs.breakdown.hint': 'Kateqoriyanı yekunlardan çıxarmaq üçün onu seçin.',
'costs.breakdown.leaveOut': '{category} yekunlardan çıxarılsın',
'costs.breakdown.countIn': '{category} yenidən yekunlara daxil edilsin',
'costs.breakdown.leftOut': 'Yekunlardan çıxarılıb: {categories}',
'costs.breakdown.countAll': 'Hamısını say',
'costs.splitHint.ticket': 'Qəbzdə olanları sadalayın və hər elementi kimin götürdüyünü işarələyin.',
'costs.pickSomeone': 'Bölüşdürmək üçün ən azı bir nəfər seçin.',
'costs.splitSummary': '{count} nəfər arasında bölünüb · hərəsinə {amount}',
+5
View File
@@ -177,6 +177,11 @@ const budget: TranslationStrings = {
'costs.mode.label': 'Dividir os custos entre os viajantes',
'costs.mode.hintSplit': 'Quem pagou e quem divide cada despesa, e o acerto no final.',
'costs.mode.hintTotals': 'Só os totais: sem pagadores, partes ou acerto. O que foi dividido continua salvo.',
'costs.breakdown.hint': 'Selecione uma categoria para deixá-la fora dos totais.',
'costs.breakdown.leaveOut': 'Deixar {category} fora dos totais',
'costs.breakdown.countIn': 'Contar {category} nos totais de novo',
'costs.breakdown.leftOut': 'Fora dos totais: {categories}',
'costs.breakdown.countAll': 'Contar tudo',
'costs.splitHint.ticket': 'Liste o que estava no comprovante e marque quem consumiu cada item.',
'costs.filter.allCategories': 'Todas as categorias',
'costs.filter.allDays': 'Todos os dias',
+5
View File
@@ -142,6 +142,11 @@ const budget: TranslationStrings = {
'costs.mode.label': 'Repartir les despeses entre els viatgers',
'costs.mode.hintSplit': 'Qui ha pagat i qui comparteix cada despesa, i el saldo final.',
'costs.mode.hintTotals': 'Només els totals: sense pagadors, parts ni saldo. El que s’havia repartit es manté desat.',
'costs.breakdown.hint': 'Tria una categoria per deixar-la fora dels totals.',
'costs.breakdown.leaveOut': 'Deixa {category} fora dels totals',
'costs.breakdown.countIn': 'Torna a comptar {category} als totals',
'costs.breakdown.leftOut': 'Fora dels totals: {categories}',
'costs.breakdown.countAll': 'Comptar-ho tot',
'costs.splitHint.ticket': 'Llista el que hi havia al rebut i marca qui ha pres cada article.',
'costs.pickSomeone': 'Tria almenys una persona amb qui dividir-ho.',
'costs.splitSummary': 'Dividit entre {count} persones · {amount} cadascú',
+5
View File
@@ -184,6 +184,11 @@ const budget: TranslationStrings = {
'costs.mode.label': 'Dělit náklady mezi cestující',
'costs.mode.hintSplit': 'Kdo platil a kdo se na každém výdaji podílí, a vyrovnání na konci.',
'costs.mode.hintTotals': 'Jen součty: bez plátců, podílů a vyrovnání. Co už bylo rozděleno, zůstává uložené.',
'costs.breakdown.hint': 'Vyberte kategorii a vynechte ji ze součtů.',
'costs.breakdown.leaveOut': 'Vynechat {category} ze součtů',
'costs.breakdown.countIn': 'Znovu započítat {category} do součtů',
'costs.breakdown.leftOut': 'Vynecháno ze součtů: {categories}',
'costs.breakdown.countAll': 'Započítat vše',
'costs.splitHint.ticket': 'Vypište, co bylo na účtence, a zaškrtněte, kdo měl kterou položku.',
'costs.filter.allCategories': 'Všechny kategorie',
'costs.filter.allDays': 'Všechny dny',
+5
View File
@@ -182,6 +182,11 @@ const budget: TranslationStrings = {
'costs.mode.hintSplit': 'Wer bezahlt hat und wer sich jede Ausgabe teilt, und am Ende das Ausgleichen.',
'costs.mode.hintTotals':
'Nur Summen: keine Zahler, Anteile oder Ausgleich. Was schon aufgeteilt war, bleibt gespeichert.',
'costs.breakdown.hint': 'Wähle eine Kategorie, um sie aus den Summen herauszunehmen.',
'costs.breakdown.leaveOut': '{category} aus den Summen herausnehmen',
'costs.breakdown.countIn': '{category} wieder in die Summen aufnehmen',
'costs.breakdown.leftOut': 'Nicht in den Summen: {categories}',
'costs.breakdown.countAll': 'Alle zählen',
'costs.splitHint.ticket': 'Liste auf, was auf dem Beleg steht, und hak ab, wer was hatte.',
'costs.ticketItemName': 'Artikelname',
'costs.ticketSplitting': 'Aufteilen auf:',
+5
View File
@@ -151,6 +151,11 @@ const budget: TranslationStrings = {
'costs.mode.label': 'Split costs between travelers',
'costs.mode.hintSplit': 'Who paid and who shares each expense, and settling up at the end.',
'costs.mode.hintTotals': 'Totals only: no payers, shares or settling up. What was split stays saved.',
'costs.breakdown.hint': 'Select a category to leave it out of the totals.',
'costs.breakdown.leaveOut': 'Leave {category} out of the totals',
'costs.breakdown.countIn': 'Count {category} in the totals again',
'costs.breakdown.leftOut': 'Left out of the totals: {categories}',
'costs.breakdown.countAll': 'Count all',
'costs.splitHint.ticket': 'List what was on the receipt and tick who had each item.',
'costs.pickSomeone': 'Pick at least one person to split with.',
'costs.splitSummary': 'Split {count} ways · {amount} each',
+5
View File
@@ -178,6 +178,11 @@ const budget: TranslationStrings = {
'costs.mode.hintSplit': 'Quién pagó y quién comparte cada gasto, y el ajuste de cuentas al final.',
'costs.mode.hintTotals':
'Solo totales: sin pagadores, partes ni ajuste de cuentas. Lo que ya estaba repartido se conserva.',
'costs.breakdown.hint': 'Elige una categoría para dejarla fuera de los totales.',
'costs.breakdown.leaveOut': 'Dejar {category} fuera de los totales',
'costs.breakdown.countIn': 'Volver a contar {category} en los totales',
'costs.breakdown.leftOut': 'Fuera de los totales: {categories}',
'costs.breakdown.countAll': 'Contar todo',
'costs.splitHint.ticket': 'Enumera lo que había en el recibo y marca quién tomó cada artículo.',
'costs.filter.allCategories': 'Todas las categorías',
'costs.filter.allDays': 'Todos los días',
+5
View File
@@ -151,6 +151,11 @@ const budget: TranslationStrings = {
'costs.mode.label': 'Jaga kulud reisijate vahel',
'costs.mode.hintSplit': 'Kes maksis ja kes iga kulu jagab, ning lõpus arveldamine.',
'costs.mode.hintTotals': 'Ainult summad: maksjaid, osasid ega arveldamist pole. Varem jagatu jääb salvestatuks.',
'costs.breakdown.hint': 'Vali kategooria, et see summadest välja jätta.',
'costs.breakdown.leaveOut': 'Jäta {category} summadest välja',
'costs.breakdown.countIn': 'Arvesta {category} jälle summadesse',
'costs.breakdown.leftOut': 'Summadest välja jäetud: {categories}',
'costs.breakdown.countAll': 'Arvesta kõik',
'costs.splitHint.ticket': 'Loetle, mis tšekil oli, ja märgi iga kirje juurde, kellele see kuulus.',
'costs.pickSomeone': 'Vali jagamiseks vähemalt üks inimene.',
'costs.splitSummary': 'Jaotatud {count} osaks · igaühele {amount}',
+5
View File
@@ -179,6 +179,11 @@ const budget: TranslationStrings = {
'costs.mode.hintSplit': 'Qui a payé et qui partage chaque dépense, puis le règlement à la fin.',
'costs.mode.hintTotals':
'Totaux seulement : ni payeurs, ni parts, ni règlement. Ce qui était partagé reste enregistré.',
'costs.breakdown.hint': 'Choisissez une catégorie pour l’exclure des totaux.',
'costs.breakdown.leaveOut': 'Exclure {category} des totaux',
'costs.breakdown.countIn': 'Compter de nouveau {category} dans les totaux',
'costs.breakdown.leftOut': 'Exclu des totaux : {categories}',
'costs.breakdown.countAll': 'Tout compter',
'costs.splitHint.ticket': 'Listez ce qui figurait sur le reçu et cochez qui a pris chaque article.',
'costs.filter.allCategories': 'Toutes les catégories',
'costs.filter.allDays': 'Tous les jours',
+5
View File
@@ -179,6 +179,11 @@ const budget: TranslationStrings = {
'costs.mode.label': 'Μοιρασιά των εξόδων μεταξύ των ταξιδιωτών',
'costs.mode.hintSplit': 'Ποιος πλήρωσε και ποιοι μοιράζονται κάθε έξοδο, και η εκκαθάριση στο τέλος.',
'costs.mode.hintTotals': 'Μόνο σύνολα: χωρίς πληρωτές, μερίδια ή εκκαθάριση. Ό,τι είχε μοιραστεί μένει αποθηκευμένο.',
'costs.breakdown.hint': 'Επιλέξτε μια κατηγορία για να την αφήσετε έξω από τα σύνολα.',
'costs.breakdown.leaveOut': 'Εξαίρεση του {category} από τα σύνολα',
'costs.breakdown.countIn': 'Επαναφορά του {category} στα σύνολα',
'costs.breakdown.leftOut': 'Εκτός συνόλων: {categories}',
'costs.breakdown.countAll': 'Μέτρηση όλων',
'costs.splitHint.ticket': 'Καταγράψτε τι είχε η απόδειξη και σημειώστε ποιος πήρε κάθε είδος.',
'costs.filter.allCategories': 'Όλες οι κατηγορίες',
'costs.filter.allDays': 'Όλες οι ημέρες',
+5
View File
@@ -155,6 +155,11 @@ const budget: TranslationStrings = {
'costs.mode.label': 'חלוקת ההוצאות בין המטיילים',
'costs.mode.hintSplit': 'מי שילם ומי מתחלק בכל הוצאה, והתחשבנות בסוף.',
'costs.mode.hintTotals': 'סכומים בלבד: בלי משלמים, חלקים או התחשבנות. מה שחולק כבר נשאר שמור.',
'costs.breakdown.hint': 'בחרו קטגוריה כדי להוציא אותה מהסכומים.',
'costs.breakdown.leaveOut': 'להוציא את {category} מהסכומים',
'costs.breakdown.countIn': 'לכלול שוב את {category} בסכומים',
'costs.breakdown.leftOut': 'לא נכלל בסכומים: {categories}',
'costs.breakdown.countAll': 'לכלול הכול',
'costs.splitHint.ticket': 'רשמו מה היה בקבלה וסמנו מי לקח כל פריט.',
'costs.pickSomeone': 'בחרו לפחות אדם אחד לחלוקה.',
'costs.splitSummary': 'חלוקה ל-{count} · {amount} לכל אחד',
+5
View File
@@ -180,6 +180,11 @@ const budget: TranslationStrings = {
'costs.mode.hintSplit': 'Ki fizetett és kik osztoznak az egyes kiadásokon, a végén pedig az elszámolás.',
'costs.mode.hintTotals':
'Csak összesítés: nincs fizető, részesedés vagy elszámolás. Ami már fel volt osztva, megmarad.',
'costs.breakdown.hint': 'Válassz egy kategóriát, hogy kimaradjon az összesítésből.',
'costs.breakdown.leaveOut': '{category} kihagyása az összesítésből',
'costs.breakdown.countIn': '{category} visszavétele az összesítésbe',
'costs.breakdown.leftOut': 'Kimarad az összesítésből: {categories}',
'costs.breakdown.countAll': 'Minden beszámítása',
'costs.splitHint.ticket': 'Sorold fel, mi szerepelt a nyugtán, és minden tételnél jelöld be, kié volt.',
'costs.filter.allCategories': 'Összes kategória',
'costs.filter.allDays': 'Összes nap',
+5
View File
@@ -171,6 +171,11 @@ const budget: TranslationStrings = {
'costs.mode.hintSplit':
'Siapa yang membayar dan siapa yang ikut menanggung tiap pengeluaran, lalu pelunasan di akhir.',
'costs.mode.hintTotals': 'Hanya total: tanpa pembayar, bagian, atau pelunasan. Yang sudah dibagi tetap tersimpan.',
'costs.breakdown.hint': 'Pilih kategori untuk mengecualikannya dari total.',
'costs.breakdown.leaveOut': 'Kecualikan {category} dari total',
'costs.breakdown.countIn': 'Hitung {category} lagi dalam total',
'costs.breakdown.leftOut': 'Dikecualikan dari total: {categories}',
'costs.breakdown.countAll': 'Hitung semua',
'costs.splitHint.ticket': 'Tuliskan isi kuitansi dan centang siapa yang mengambil tiap item.',
'costs.filter.allCategories': 'Semua kategori',
'costs.filter.allDays': 'Semua hari',
+5
View File
@@ -177,6 +177,11 @@ const budget: TranslationStrings = {
'costs.mode.label': 'Dividere le spese tra i viaggiatori',
'costs.mode.hintSplit': 'Chi ha pagato e chi condivide ogni spesa, e il saldo alla fine.',
'costs.mode.hintTotals': 'Solo totali: niente pagatori, quote o saldi. Ciò che era già diviso resta salvato.',
'costs.breakdown.hint': 'Seleziona una categoria per lasciarla fuori dai totali.',
'costs.breakdown.leaveOut': 'Escludi {category} dai totali',
'costs.breakdown.countIn': 'Conta di nuovo {category} nei totali',
'costs.breakdown.leftOut': 'Esclusi dai totali: {categories}',
'costs.breakdown.countAll': 'Conta tutto',
'costs.splitHint.ticket': "Elenca cosa c'era sulla ricevuta e spunta chi ha preso ciascun articolo.",
'costs.filter.allCategories': 'Tutte le categorie',
'costs.filter.allDays': 'Tutti i giorni',
+5
View File
@@ -169,6 +169,11 @@ const budget: TranslationStrings = {
'costs.mode.label': '旅行者の間で費用を分ける',
'costs.mode.hintSplit': '誰が支払い、誰が各支出を分担するか、そして最後に精算します。',
'costs.mode.hintTotals': '合計のみ:支払者・分担・精算はありません。分担済みの内容は保存されたままです。',
'costs.breakdown.hint': 'カテゴリを選ぶと合計から除外できます。',
'costs.breakdown.leaveOut': '{category}を合計から除外',
'costs.breakdown.countIn': '{category}を合計に戻す',
'costs.breakdown.leftOut': '合計から除外中:{categories}',
'costs.breakdown.countAll': 'すべて含める',
'costs.splitHint.ticket': 'レシートの品目を書き出し、それぞれ誰の分かにチェックを入れます。',
'costs.filter.allCategories': 'すべてのカテゴリー',
'costs.filter.allDays': 'すべての日',
+5
View File
@@ -169,6 +169,11 @@ const budget: TranslationStrings = {
'costs.mode.label': '여행자끼리 비용 나누기',
'costs.mode.hintSplit': '누가 냈고 누가 각 지출을 나누는지, 그리고 마지막 정산까지.',
'costs.mode.hintTotals': '합계만: 결제자, 분담, 정산이 없습니다. 이미 나눈 내용은 그대로 저장됩니다.',
'costs.breakdown.hint': '카테고리를 선택하면 합계에서 뺄 수 있습니다.',
'costs.breakdown.leaveOut': '{category}을(를) 합계에서 빼기',
'costs.breakdown.countIn': '{category}을(를) 다시 합계에 넣기',
'costs.breakdown.leftOut': '합계에서 제외됨: {categories}',
'costs.breakdown.countAll': '모두 포함',
'costs.splitHint.ticket': '영수증에 있던 항목을 적고, 항목마다 누구 몫인지 체크하세요.',
'costs.filter.allCategories': '모든 카테고리',
'costs.filter.allDays': '모든 날짜',
+5
View File
@@ -179,6 +179,11 @@ const budget: TranslationStrings = {
'costs.mode.hintSplit': 'Wie betaalde en wie elke uitgave deelt, en aan het eind de verrekening.',
'costs.mode.hintTotals':
'Alleen totalen: geen betalers, aandelen of verrekening. Wat al verdeeld was, blijft bewaard.',
'costs.breakdown.hint': 'Kies een categorie om die buiten de totalen te laten.',
'costs.breakdown.leaveOut': '{category} buiten de totalen laten',
'costs.breakdown.countIn': '{category} weer meetellen in de totalen',
'costs.breakdown.leftOut': 'Buiten de totalen: {categories}',
'costs.breakdown.countAll': 'Alles meetellen',
'costs.splitHint.ticket': 'Zet op een rij wat er op de bon stond en vink aan wie welk item had.',
'costs.filter.allCategories': 'Alle categorieën',
'costs.filter.allDays': 'Alle dagen',
+5
View File
@@ -192,6 +192,11 @@ const budget: TranslationStrings = {
'costs.mode.hintSplit': 'Kto zapłacił i kto dzieli każdy wydatek, a na koniec rozliczenie.',
'costs.mode.hintTotals':
'Tylko sumy: bez płacących, udziałów i rozliczeń. To, co już podzielono, pozostaje zapisane.',
'costs.breakdown.hint': 'Wybierz kategorię, aby pominąć ją w sumach.',
'costs.breakdown.leaveOut': 'Pomiń {category} w sumach',
'costs.breakdown.countIn': 'Uwzględnij {category} w sumach ponownie',
'costs.breakdown.leftOut': 'Pominięte w sumach: {categories}',
'costs.breakdown.countAll': 'Uwzględnij wszystko',
'costs.splitHint.ticket': 'Wypisz, co było na paragonie, i zaznacz, kto miał którą pozycję.',
'costs.filter.allCategories': 'Wszystkie kategorie',
'costs.filter.allDays': 'Wszystkie dni',
+5
View File
@@ -191,6 +191,11 @@ const budget: TranslationStrings = {
'costs.mode.hintSplit': 'Кто заплатил и кто делит каждый расход, а в конце взаиморасчёт.',
'costs.mode.hintTotals':
'Только итоги: без плательщиков, долей и взаиморасчётов. Уже разделённое остаётся сохранённым.',
'costs.breakdown.hint': 'Выберите категорию, чтобы не учитывать её в итогах.',
'costs.breakdown.leaveOut': 'Не учитывать {category} в итогах',
'costs.breakdown.countIn': 'Снова учитывать {category} в итогах',
'costs.breakdown.leftOut': 'Не учтено в итогах: {categories}',
'costs.breakdown.countAll': 'Учитывать всё',
'costs.splitHint.ticket': 'Перечислите, что было в чеке, и отметьте, кто что брал.',
'costs.filter.allCategories': 'Все категории',
'costs.filter.allDays': 'Все дни',
+5
View File
@@ -156,6 +156,11 @@ const budget: TranslationStrings = {
'costs.mode.label': 'Deliť náklady medzi cestujúcich',
'costs.mode.hintSplit': 'Kto platil a kto sa na každom výdavku podieľa, a na konci vyrovnanie.',
'costs.mode.hintTotals': 'Len súčty: bez platiteľov, podielov a vyrovnania. Čo už bolo rozdelené, zostáva uložené.',
'costs.breakdown.hint': 'Vyberte kategóriu a vynechajte ju zo súčtov.',
'costs.breakdown.leaveOut': 'Vynechať {category} zo súčtov',
'costs.breakdown.countIn': 'Znova započítať {category} do súčtov',
'costs.breakdown.leftOut': 'Vynechané zo súčtov: {categories}',
'costs.breakdown.countAll': 'Započítať všetko',
'costs.splitHint.ticket': 'Vypíšte, čo bolo na účtenke, a označte, kto mal ktorú položku.',
'costs.pickSomeone': 'Vyberte aspoň jednu osobu na rozdelenie.',
'costs.splitSummary': 'Rozdelené na {count} dielov · {amount} na osobu',
+5
View File
@@ -177,6 +177,11 @@ const budget: TranslationStrings = {
'costs.mode.label': 'Dela kostnaderna mellan resenärerna',
'costs.mode.hintSplit': 'Vem som betalade och vilka som delar varje utgift, och avräkning på slutet.',
'costs.mode.hintTotals': 'Bara summor: inga betalare, andelar eller avräkning. Det som redan delats sparas.',
'costs.breakdown.hint': 'Välj en kategori för att lämna den utanför summorna.',
'costs.breakdown.leaveOut': 'Lämna {category} utanför summorna',
'costs.breakdown.countIn': 'Räkna med {category} i summorna igen',
'costs.breakdown.leftOut': 'Utanför summorna: {categories}',
'costs.breakdown.countAll': 'Räkna allt',
'costs.splitHint.ticket': 'Lista det som stod på kvittot och bocka för vem som hade varje artikel.',
'costs.filter.allCategories': 'Alla kategorier',
'costs.filter.allDays': 'Alla dagar',
+5
View File
@@ -141,6 +141,11 @@ const budget: TranslationStrings = {
'costs.mode.label': 'แบ่งค่าใช้จ่ายระหว่างผู้ร่วมเดินทาง',
'costs.mode.hintSplit': 'ใครจ่ายและใครร่วมรับผิดชอบค่าใช้จ่ายแต่ละรายการ แล้วเคลียร์ยอดตอนท้าย',
'costs.mode.hintTotals': 'เฉพาะยอดรวม: ไม่มีผู้จ่าย ส่วนแบ่ง หรือการเคลียร์ยอด สิ่งที่แบ่งไว้แล้วยังคงบันทึกอยู่',
'costs.breakdown.hint': 'เลือกหมวดหมู่เพื่อไม่นับรวมในยอดรวม',
'costs.breakdown.leaveOut': 'ไม่นับ {category} ในยอดรวม',
'costs.breakdown.countIn': 'นับ {category} ในยอดรวมอีกครั้ง',
'costs.breakdown.leftOut': 'ไม่นับในยอดรวม: {categories}',
'costs.breakdown.countAll': 'นับทั้งหมด',
'costs.splitHint.ticket': 'ใส่รายการที่อยู่ในใบเสร็จ แล้วติ๊กว่าใครสั่งรายการไหน',
'costs.pickSomeone': 'เลือกอย่างน้อยหนึ่งคนที่จะแยกด้วย',
'costs.splitSummary': '{count} คน · คนละ {amount}',
+5
View File
@@ -177,6 +177,11 @@ const budget: TranslationStrings = {
'costs.mode.label': 'Masrafları yolcular arasında böl',
'costs.mode.hintSplit': 'Her harcamayı kimin ödediği ve kimlerin paylaştığı, sonunda da hesaplaşma.',
'costs.mode.hintTotals': 'Yalnızca toplamlar: ödeyen, pay veya hesaplaşma yok. Önceden bölünenler kayıtlı kalır.',
'costs.breakdown.hint': 'Toplamların dışında bırakmak için bir kategori seçin.',
'costs.breakdown.leaveOut': '{category} toplamların dışında bırakılsın',
'costs.breakdown.countIn': '{category} yeniden toplamlara katılsın',
'costs.breakdown.leftOut': 'Toplamların dışında: {categories}',
'costs.breakdown.countAll': 'Hepsini say',
'costs.splitHint.ticket': 'Fişte neler olduğunu listeleyin ve her kalemi kimin aldığını işaretleyin.',
'costs.filter.allCategories': 'Tüm kategoriler',
'costs.filter.allDays': 'Tüm günler',
+5
View File
@@ -191,6 +191,11 @@ const budget: TranslationStrings = {
'costs.mode.label': 'Ділити витрати між мандрівниками',
'costs.mode.hintSplit': 'Хто заплатив і хто ділить кожну витрату, а наприкінці розрахунок.',
'costs.mode.hintTotals': 'Лише підсумки: без платників, часток і розрахунків. Уже поділене залишається збереженим.',
'costs.breakdown.hint': 'Виберіть категорію, щоб не враховувати її в підсумках.',
'costs.breakdown.leaveOut': 'Не враховувати {category} в підсумках',
'costs.breakdown.countIn': 'Знову враховувати {category} в підсумках',
'costs.breakdown.leftOut': 'Не враховано в підсумках: {categories}',
'costs.breakdown.countAll': 'Враховувати все',
'costs.splitHint.ticket': 'Перелічіть, що було в чеку, і позначте, хто брав кожну позицію.',
'costs.filter.allCategories': 'Усі категорії',
'costs.filter.allDays': 'Усі дні',
+5
View File
@@ -170,6 +170,11 @@ const budget: TranslationStrings = {
'costs.mode.hintSplit': 'Ai đã trả và ai cùng chia từng khoản chi, rồi thanh toán bù trừ ở cuối.',
'costs.mode.hintTotals':
'Chỉ tổng cộng: không có người trả, phần chia hay thanh toán bù trừ. Những gì đã chia vẫn được lưu.',
'costs.breakdown.hint': 'Chọn một danh mục để loại nó khỏi tổng.',
'costs.breakdown.leaveOut': 'Loại {category} khỏi tổng',
'costs.breakdown.countIn': 'Tính lại {category} vào tổng',
'costs.breakdown.leftOut': 'Đã loại khỏi tổng: {categories}',
'costs.breakdown.countAll': 'Tính tất cả',
'costs.splitHint.ticket': 'Liệt kê các món trên hóa đơn và đánh dấu ai đã dùng từng món.',
'costs.filter.allCategories': 'Tất cả danh mục',
'costs.filter.allDays': 'Tất cả các ngày',
+5
View File
@@ -168,6 +168,11 @@ const budget: TranslationStrings = {
'costs.mode.label': '在旅伴之間分攤費用',
'costs.mode.hintSplit': '記錄誰付款、誰分攤每筆支出,最後結算。',
'costs.mode.hintTotals': '僅統計總額:沒有付款人、分攤或結算。已分攤的內容會保留。',
'costs.breakdown.hint': '選擇一個類別即可將其排除在合計之外。',
'costs.breakdown.leaveOut': '將{category}排除在合計之外',
'costs.breakdown.countIn': '將{category}重新計入合計',
'costs.breakdown.leftOut': '未計入合計:{categories}',
'costs.breakdown.countAll': '全部計入',
'costs.splitHint.ticket': '列出收據上的項目,並勾選每一項是誰的。',
'costs.filter.allCategories': '所有類別',
'costs.filter.allDays': '所有日期',
+5
View File
@@ -168,6 +168,11 @@ const budget: TranslationStrings = {
'costs.mode.label': '在旅伴之间分摊费用',
'costs.mode.hintSplit': '记录谁付款、谁分摊每笔支出,最后结算。',
'costs.mode.hintTotals': '仅统计总额:没有付款人、分摊或结算。已分摊的内容会保留。',
'costs.breakdown.hint': '选择一个类别即可将其排除在合计之外。',
'costs.breakdown.leaveOut': '将{category}排除在合计之外',
'costs.breakdown.countIn': '将{category}重新计入合计',
'costs.breakdown.leftOut': '未计入合计:{categories}',
'costs.breakdown.countAll': '全部计入',
'costs.splitHint.ticket': '列出收据上的项目,并勾选每一项是谁的。',
'costs.filter.allCategories': '所有类别',
'costs.filter.allDays': '所有日期',