27 Commits

Author SHA1 Message Date
Peter Smit
ef2062071a Add Discord and Weblate to README
All checks were successful
CI / checks (push) Successful in 59s
2025-09-04 20:36:24 +02:00
Peter Smit
86a20d6b23 Use "everyone" in the expense card if it was paid for all participants (#398) 2025-09-04 20:15:00 +02:00
Peter Smit
a21f0646b5 Merge branch 'ita-localization' of github.com:scollovati/spliit into scollovati-ita-localization
# Conflicts:
#	messages/de-DE.json
#	messages/fr-FR.json
#	messages/it-IT.json
#	messages/nl-NL.json
#	messages/pl-PL.json
2025-09-04 20:09:45 +02:00
Weblate (bot)
4c1a6b9e55 Sync Weblate translations (#404) 2025-09-04 19:46:35 +02:00
Peter Smit
ff42f0ab66 Filter out English strings from non-english translations 2025-09-04 19:21:14 +02:00
Peter Smit
6ea6cfac3e Use deepmerge function from existing dependency 2025-09-04 19:11:26 +02:00
Peter Smit
e3f70d0635 Merge branch 'bug-missing-translation' of github.com:Uli-Z/spliit-room into Uli-Z-bug-missing-translation 2025-09-04 18:54:16 +02:00
jannikac
5bf31e5b99 update de-DE translation for recurrenceRule (#339)
* update de-DE translation

* Update messages/de-DE.json

Co-authored-by: Benjamin Kästner <bkaestner@users.noreply.github.com>
2025-09-04 17:26:40 +02:00
Peter Smit
ed321f9880 Merge branch 'GuillemUJ-main'
# Conflicts:
#	src/i18n.ts
2025-09-04 17:15:19 +02:00
Peter Smit
070f6623b7 Add catalan to the list of locales 2025-09-04 17:13:45 +02:00
starforman
c556c18dc5 Add Czech translation (#358) 2025-09-04 16:59:46 +02:00
susui
65c9e01ad3 Add Japanese translation (#341) 2025-09-04 16:58:17 +02:00
Luca Bizzotto
4bcc9291a4 Update it-IT.json to latest features (#328) 2025-09-04 16:52:08 +02:00
Peter Smit
5fd3204990 Fix formatting of #382 2025-09-04 16:43:12 +02:00
Bernhard Bliem
436aff00d2 Fix missing translation string in de-DE (#382)
* Fix missing translation string in de-DE

* Make placeholder for "paid by" field translatable
2025-09-04 16:32:06 +02:00
Vick Airfull
2710afd560 Update es.json (#348) 2025-09-04 16:29:34 +02:00
Joachim Kołodziejski
4b69306f50 Fix polish translation (#364) 2025-09-04 16:27:18 +02:00
Vick Airfull
d6550e34c1 Update es.json (#349)
Minor update to translation:
"owes" translate to "debe a" in spanish
2025-09-04 16:26:06 +02:00
albanobattistella
de0cbb75ff Update it-IT.json (#392) 2025-09-04 16:24:40 +02:00
Peter Smit
a33b578027 Update Dutch translation (#399) 2025-09-04 16:24:20 +02:00
TO
de930cc9ad Fix french recurrenceRule translation (#402) 2025-09-04 16:08:43 +02:00
scollovati
a8ea05eae8 [localization] add new message notInvolved in ExpenseCard 2025-07-23 15:22:23 +02:00
scollovati
6c995ebd54 [localization] removing expense from the Recurrence field in order to make it suitable also for an income 2025-07-23 12:57:12 +02:00
scollovati
069554836b [localization] italian translation for recurrentRule 2025-07-23 12:55:08 +02:00
scollovati
c5726670e7 [localization] fixed recurrentRule json position 2025-07-23 12:54:52 +02:00
Uli-Z
81c42e5b8b Add English fallback for i18n messages
Introduced a mergeDeep helper to merge locale-specific messages with the English defaults. src/i18n.ts now loads both the en-US messages and the selected locale’s messages, merges them, and supplies the result so missing translations appear in English instead of as placeholders.
2025-06-24 11:55:30 +02:00
GuillemUJ
feec11f99c Traducció al català 2025-06-03 14:48:30 +02:00
21 changed files with 1443 additions and 189 deletions

View File

@@ -35,13 +35,24 @@ Spliit is a free and open source alternative to Splitwise. You can either use th
## Contribute
The project is open to contributions. Feel free to open an issue or even a pull-request!
The project is open to contributions. Feel free to open an issue or even a pull-request!
Join the discussion in [the Spliit Discord server](https://discord.gg/YSyVXbwvSY).
If you want to contribute financially and help us keep the application free and without ads, you can also:
- 💜 [Sponsor me (Sebastien)](https://github.com/sponsors/scastiel), or
- 💙 [Make a small one-time donation](https://donate.stripe.com/28o3eh96G7hH8k89Ba).
### Translation
The project's translations are managed using [our Weblate project](https://hosted.weblate.org/projects/spliit/spliit/).
You can easily add missing translations to the project or even add a new language!
Here is the current state of translation:
<a href="https://hosted.weblate.org/engage/spliit/">
<img src="https://hosted.weblate.org/widget/spliit/spliit/horizontal-auto.svg" alt="Translation status" />
</a>
## Run locally
1. Clone the repository (or fork it if you intend to contribute)

398
messages/ca.json Normal file
View File

@@ -0,0 +1,398 @@
{
"Homepage": {
"title": "Comparteix <strong>Despeses</strong> amb <strong>Família i Amics</strong>",
"description": "benvinguda a <strong>Spliit</strong>!",
"button": {
"groups": "Veure els grups",
"github": "GitHub"
}
},
"Header": {
"groups": "Grups"
},
"Footer": {
"madeIn": "Fet a Montréal, Québec 🇨🇦",
"builtBy": "Desenvolupat per <author>Sebastien Castiel</author> i <source>col·laboradors</source>"
},
"Expenses": {
"title": "Despeses",
"description": "Aquí trobaràs les despeses que has creat al teu grup.",
"create": "Afegir despesa",
"createFirst": "Crea la primera",
"noExpenses": "El teu grup encara no té despeses.",
"exportJson": "Exportar a JSON",
"exportCsv": "Exportar a CSV",
"searchPlaceholder": "Cerca una despesa.",
"ActiveUserModal": {
"title": "Qui ets?",
"description": "Duige'ns quin participant ets, perquè puguem personalitzar com es mostra la informació.",
"nobody": "No vull seleccionar a ningú",
"save": "Desar canvis",
"footer": "Aquesta configuració pot modificar-se amb posterioritat, a la configuració del grup."
},
"Groups": {
"upcoming": "Pròximament",
"thisWeek": "Aquesta setmana",
"earlierThisMonth": "A inicis d'aquest mes",
"lastMonth": "El mes anterior",
"earlierThisYear": "A inicis d'aquest any",
"lastYear": "L'any passat",
"older": "Més antics"
}
},
"ExpenseCard": {
"paidBy": "Pagada per <strong>{paidBy}</strong> per a <paidFor></paidFor>",
"receivedBy": "Debuda per <strong>{paidBy}</strong> para <paidFor></paidFor>",
"yourBalance": "El teu balanç: balance:"
},
"Groups": {
"myGroups": "Els meus grups",
"create": "Crear",
"loadingRecent": "Arregant els grups recents…",
"NoRecent": {
"description": "No has format part de cap grup darrerament.",
"create": "Crea'n un",
"orAsk": "o demana a una amiga que et comparteixi l'enllaç a un grup ja existent"
},
"recent": "Grups recents",
"starred": "Grups preferits",
"archived": "Grups arxivats",
"archive": "Arxivar el grup",
"unarchive": "Desarxivar el grup",
"removeRecent": "Suprimeix dels grups recents",
"RecentRemovedToast": {
"title": "El grup ha estat eliminat",
"description": "El grup ha estat eliminat de la tebva llista de grups recents",
"undoAlt": "Reverteix la suoressió del grup",
"undo": "Desfer"
},
"AddByURL": {
"button": "Afegir mitjançant un enllaç",
"title": "Afegir un grup mitjançant un enllaç",
"description": "Si t'han compartit un grup, pots enganxar aqui el seu enllaç per afegir-lo a la teva llista",
"error": "Vatua lolla! No podem trobar el grup des de l'enllaç que has proporcionat..."
},
"NotFound": {
"text": "Aquest grup no existeix.",
"link": "Anar als darrers grups visitats."
}
},
"GroupForm": {
"title": "Informació del grup",
"NameField": {
"label": "Nom del grup",
"placeholder": "Calçotada amb la colla",
"description": "Afegeix un nom per al teu nou grup."
},
"InformationField": {
"label": "Informació del grupo",
"placeholder": "Quina informació és rellevant per les participants?"
},
"CurrencyField": {
"label": "Símbol de la divisa",
"placeholder": "$, €, £…",
"description": "Ho farem servir per mostrar el balanç."
},
"Participants": {
"title": "Participants",
"description": "Afegeix el nom de totes les participants.",
"protectedParticipant": "Aquestes participants ténen despeses al seu nom i no poden ser esborrades.",
"new": "Nou",
"add": "Afegir participants",
"John": "Ermessenda",
"Jane": "Guillem",
"Jack": "Jaume"
},
"Settings": {
"title": "Configuració local",
"description": "Aquesta configuració s'estableix per aquest diposotiu i s'utilitzarà per personalitzar la teva experiència.",
"ActiveUserField": {
"label": "Usuària activa",
"placeholder": "Selecciona una participant...",
"none": "Cap",
"description": "Usuària que paga les despeses de manera predeterminada."
},
"save": "Desar",
"saving": "Desant",
"create": "Crear",
"creating": "Creant",
"cancel": "Cancel·lar"
}
},
"ExpenseForm": {
"Income": {
"create": "Afegir despesa",
"edit": "Editar despesa",
"TitleField": {
"label": "Títol de la despesa",
"placeholder": "Berenar-sopar",
"description": "Introdueix una descripció per aquesta despesa."
},
"DateField": {
"label": "Data de la despesa",
"description": "Adegeix la data de la despesa."
},
"categoryFieldDescription": "Selecciona la categoria de la despesa.",
"paidByField": {
"label": "Pagat per",
"description": "Selecciona la participant que ha fet el pagament."
},
"recurrenceRule": {
"label": "Recurrència de la despesa",
"description": "Selecciona amb quina freqüència cal que es repeteixi la despesa.",
"none": "Puntual",
"daily": "Diària",
"weekly": "Setmanal",
"monthly": "Mensual"
},
"paidFor": {
"title": "Pagat per a",
"description": "Selecciona per a qui s'ha efectuat el pagament."
},
"splitModeDescription": "Selecciona com vols dividir la despesa.",
"attachDescription": "Veure i adjuntar tiquets a la despesa."
},
"Expense": {
"create": "Crear despesa",
"edit": "Editar despesa",
"TitleField": {
"label": "Títol de la despesa",
"placeholder": "Llaunes del queviures",
"description": "Afegeix una descripció per la despesa."
},
"DateField": {
"label": "Data de la despesa",
"description": "Afegeix la data en que es va realitzar la despesa."
},
"categoryFieldDescription": "Selecciona la cateogria de la despesa.",
"paidByField": {
"label": "Pagat per",
"description": "Selecciona la participant que ha pagat la despesa."
},
"paidFor": {
"title": "Pagado per a",
"description": "Sleecciona per a qui s'ha pagat la despesa."
},
"splitModeDescription": "Selecciona com vols dividir la despesa.",
"attachDescription": "eure i adjuntar tiquets a la despesa."
},
"amountField": {
"label": "Quantitat"
},
"isReimbursementField": {
"label": "Això és un reemborsament"
},
"categoryField": {
"label": "Categoria"
},
"notesField": {
"label": "Notes"
},
"selectNone": "No en seleccionis cap",
"selectAll": "Selecciona'ls tots",
"shares": "parts",
"advancedOptions": "Opciones avanzadas",
"SplitModeField": {
"label": "Mode de divisió",
"evenly": "Uniforme",
"byShares": "Desigual: per parts",
"byPercentage": "Desigual: per percentatge",
"byAmount": "Desigual: Per quantitat",
"saveAsDefault": "Desa com a mode preferit"
},
"DeletePopup": {
"label": "Esborrar",
"title": "Esborrar la despesa?",
"description": "Segur que vols suprimir aquesta despesa? Aquesta acció és irreversible.",
"yes": "Sí",
"cancel": "Cancel·lar"
},
"attachDocuments": "Adjuntar documents",
"create": "Crear",
"creating": "Creant",
"save": "Desar",
"saving": "Desant",
"cancel": "Cancel·lar",
"reimbursement": "Reemborsament"
},
"ExpenseDocumentsInput": {
"TooBigToast": {
"title": "L'arxiu és massa gran",
"description": "La mida màxima que pot tenir l'arxiu és de {maxSize}. El teu pesa {size}."
},
"ErrorToast": {
"title": "Error al carregar el document",
"description": "Hi ha hagut un error al carregar el document. Torna a intentar-ho més tard o selecciona un altre arxiu.",
"retry": "Tornar-ho a intentar"
}
},
"CreateFromReceipt": {
"Dialog": {
"triggerTitle": "Crear una despesa des d'un tiquet",
"title": "Crear des del tiquet",
"description": "Extreure la informació de despeses de la foto d'un tiquet.",
"body": "Puja la foto d'un tiquet i l'escanejarem per extreure'n, si podem, la informaició de la despesa.",
"selectImage": "Seleccionar la imatge…",
"titleLabel": "Títol:",
"categoryLabel": "Categoria:",
"amountLabel": "Quantitat:",
"dateLabel": "Data:",
"editNext": "A continuació, podràs editar la informació de les despeses.",
"continue": "Continuar"
},
"unknown": "Desconegut",
"TooBigToast": {
"title": "L'arxiu és massa gran",
"description": "La mida màxima que pot tenir l'arxiu és de {maxSize}. El teu pesa {size}."
},
"ErrorToast": {
"title": "Error al carregar el document",
"description": "Hi ha hagut un error al carregar el document. Torna a intentar-ho més tard o selecciona un altre arxiu.",
"retry": "Tornar-ho a intentar"
}
},
"Balances": {
"title": "Balanç",
"description": "L'import total que ha pagat o rebut cada participant.",
"Reimbursements": {
"title": "Proposta de reemborsaments",
"description": "Suggerència per optimitzar els reemborsaments entre participants.",
"noImbursements": "Sembla que el teu grup no necessita cap reemborsament 😁",
"owes": "<strong>{from}</strong> deu a <strong>{to}</strong>",
"markAsPaid": "Marcar com a pagat"
}
},
"Stats": {
"title": "Estadístiques",
"Totals": {
"title": "Totals",
"description": "Resum de les despeses de tot el grup.",
"groupSpendings": "Despeses totals del grup",
"groupEarnings": "Ingressos totals del grup",
"yourSpendings": "Suma de les teves despeses",
"yourEarnings": "Suma dels teus ingressos",
"yourShare": "El teu percentatge"
}
},
"Activity": {
"title": "Activitat",
"description": "Aquí trobaràs totes les activitats recents del grup.",
"noActivity": "No hi ha activitat recent a aquest grup.",
"someone": "Algú",
"settingsModified": "La configuració del grup ha estat modificada per <strong>{participant}</strong>.",
"expenseCreated": "Despesa <em>{expense}</em> creada per <strong>{participant}</strong>.",
"expenseUpdated": "Despesa <em>{expense}</em> actualitzada per <strong>{participant}</strong>.",
"expenseDeleted": "Despesa <em>{expense}</em> esborrada per <strong>{participant}</strong>.",
"Groups": {
"today": "Avui",
"yesterday": "Ahir",
"earlierThisWeek": "A inicis d'aquesta setmana",
"lastWeek": "La setmana passada",
"earlierThisMonth": "A inicis d'aquest mes",
"lastMonth": "El mes passat",
"earlierThisYear": "A inicis d'aquest any",
"lastYear": "El darrer any",
"older": "Més antigues"
}
},
"Information": {
"title": "Informació",
"description": "Utilitza aquest apartat per afegir informació rellevant per als participants del grup.",
"empty": "Encara no hi ha informació sobre el grup."
},
"Settings": {
"title": "Configuració"
},
"Share": {
"title": "Compartir",
"description": "Comparteix l'enllaç al grup amb altres participants perquè puguin veure el grup i afegir-hi despeses.",
"warning": "Alerta!",
"warningHelp": "Tothom qui tingui l'enllaç del grup podrà veure i editar les despeses. Comparteix-lo amb cautela!"
},
"SchemaErrors": {
"min1": "Introdueix com a mínim un caràcter.",
"min2": "Introdueix com a mínim dos caràcters.",
"max5": "Introdueix com a màxim cinc caràcters.",
"max50": "Introdueix com a màxim cinquanta caràcters.",
"duplicateParticipantName": "Una altra participant ja té el mateix nom",
"titleRequired": "Si us plau, afegeix un títol",
"invalidNumber": "Número invàlid",
"amountRequired": "Cal introduïr un import",
"amountNotZero": "L'import no por ser zero.",
"amountTenMillion": "L'import ha de ser inferior a 10.000.000.",
"paidByRequired": "Cal seleccionar una participant",
"paidForMin1": "La despesa ha de ser pagada com a mínim per a una participant",
"noZeroShares": "Totes les participacions han de ser superiors a 0",
"amountSum": "La suma dels imports ha de ser igual a la suma de la despesa",
"percentageSum": "La suma dels percentatges ha de ser igual a 100"
},
"Categories": {
"search": "Cercar categoria...",
"noCategory": "Categoria no trobada!",
"Uncategorized": {
"heading": "Sense categoria",
"General": "General",
"Payment": "Pagament"
},
"Entertainment": {
"heading": "Oci",
"Entertainment": "Oci",
"Games": "Jocs",
"Movies": "Pel·lícules",
"Music": "Música",
"Sports": "Esport"
},
"Food and Drink": {
"heading": "Menjar i beure",
"Food and Drink": "Menjar i beure",
"Dining Out": "Menjar fora",
"Groceries": "Menjar",
"Liquor": "Licors"
},
"Home": {
"heading": "Casa",
"Home": "Casa",
"Electronics": "Elecrtònica",
"Furniture": "Mobles",
"Household Supplies": "Subministres",
"Maintenance": " Manteniment",
"Mortgage": "Hipoteca",
"Pets": "Mascotes",
"Rent": "Lloguer",
"Services": "Serveis"
},
"Life": {
"heading": "Vida",
"Childcare": "Cura de criatures",
"Clothing": "Roba",
"Education": "Ensenyament",
"Gifts": "Regals",
"Insurance": "Assegurança",
"Medical Expenses": "Despeses mèdiques",
"Taxes": "Impostos"
},
"Transportation": {
"heading": "Transport",
"Transportation": "Transport",
"Bicycle": "Bicicleta",
"Bus/Train": "Autobús/Tren",
"Car": "Cotxe",
"Gas/Fuel": "Gasolina/Combustible",
"Hotel": "Hotel",
"Parking": "Aparcament",
"Plane": "Avió",
"Taxi": "Taxi"
},
"Utilities": {
"heading": "Utilitats",
"Utilities": "Utilitats",
"Cleaning": "Neteja",
"Electricity": "Electricitat",
"Heat/Gas": "Calefacció/Gas",
"Trash": "Ecombraries",
"TV/Phone/Internet": "TV/Telèfon/Internet",
"Water": "Aigua"
}
}
}

400
messages/cs-CZ.json Normal file
View File

@@ -0,0 +1,400 @@
{
"Homepage": {
"title": "Sdílejte <strong>výdaje</strong> s <strong>přáteli a rodinou</strong>",
"description": "Vítejte ve své nové instanci <strong>Spliitu</strong>!",
"button": {
"groups": "Přejít na skupiny",
"github": "GitHub"
}
},
"Header": {
"groups": "Skupiny"
},
"Footer": {
"madeIn": "Vyrobeno v Montréalu, Québec 🇨🇦",
"builtBy": "Vytvořil <author>Sebastien Castiel</author> a <source>další přispěvatelé</source>"
},
"Expenses": {
"title": "Výdaje",
"description": "Zde jsou výdaje, které jste vytvořili pro svou skupinu.",
"create": "Vytvořit výdaj",
"createFirst": "Vytvořit první",
"noExpenses": "Vaše skupina zatím neobsahuje žádné výdaje.",
"export": "Exportovat",
"exportJson": "Exportovat do JSON",
"exportCsv": "Exportovat do CSV",
"searchPlaceholder": "Hledat výdaj…",
"ActiveUserModal": {
"title": "Kdo jste?",
"description": "Řekněte nám, který účastník jste, abychom mohli přizpůsobit zobrazení informací.",
"nobody": "Nechci nikoho vybírat",
"save": "Uložit změny",
"footer": "Toto nastavení můžete později změnit v nastavení skupiny."
},
"Groups": {
"upcoming": "Nadcházející",
"thisWeek": "Tento týden",
"earlierThisMonth": "Dříve tento měsíc",
"lastMonth": "Minulý měsíc",
"earlierThisYear": "Dříve tento rok",
"lastYear": "Minulý rok",
"older": "Starší"
}
},
"ExpenseCard": {
"paidBy": "Zaplatil/a <strong>{paidBy}</strong> za <paidFor></paidFor>",
"receivedBy": "Obdržel/a <strong>{paidBy}</strong> od <paidFor></paidFor>",
"yourBalance": "Váš zůstatek:"
},
"Groups": {
"myGroups": "Moje skupiny",
"create": "Vytvořit",
"loadingRecent": "Načítání nedávných skupin…",
"NoRecent": {
"description": "Nedávno jste nenavštívili žádnou skupinu.",
"create": "Vytvořit skupinu",
"orAsk": "nebo požádejte přítele, aby vám poslal odkaz na existující."
},
"recent": "Nedávné skupiny",
"starred": "Oblíbené skupiny",
"archived": "Archivované skupiny",
"archive": "Archivovat skupinu",
"unarchive": "Zrušit archivaci skupiny",
"removeRecent": "Odebrat z nedávných skupin",
"RecentRemovedToast": {
"title": "Skupina byla odebrána",
"description": "Skupina byla odebrána ze seznamu vašich nedávných skupin.",
"undoAlt": "Vrátit zpět odebrání skupiny",
"undo": "Vrátit zpět"
},
"AddByURL": {
"button": "Přidat pomocí URL",
"title": "Přidat skupinu pomocí URL",
"description": "Pokud s vámi byla skupina sdílena, můžete sem vložit její URL a přidat ji do svého seznamu.",
"error": "Bohužel se nám nepodařilo najít skupinu podle zadané URL…"
},
"NotFound": {
"text": "Tato skupina neexistuje.",
"link": "Přejít na nedávno navštívené skupiny"
}
},
"GroupForm": {
"title": "Informace o skupině",
"NameField": {
"label": "Název skupiny",
"placeholder": "Letní dovolená",
"description": "Zadejte název své skupiny."
},
"InformationField": {
"label": "Informace o skupině",
"placeholder": "Jaké informace jsou důležité pro účastníky skupiny?"
},
"CurrencyField": {
"label": "Symbol měny",
"placeholder": "CZK, Kč, $, €, £…",
"description": "Použijeme ho pro zobrazení částek."
},
"Participants": {
"title": "Účastníci",
"description": "Zadejte jméno každého účastníka.",
"protectedParticipant": "Tento účastník je součástí výdajů a nelze jej odebrat.",
"new": "Nový",
"add": "Přidat účastníka",
"John": "Jan",
"Jane": "Jana",
"Jack": "Jakub"
},
"Settings": {
"title": "Místní nastavení",
"description": "Tato nastavení jsou specifická pro toto zařízení a slouží k přizpůsobení vašeho zážitku.",
"ActiveUserField": {
"label": "Aktivní uživatel",
"placeholder": "Vyberte účastníka",
"none": "Žádný",
"description": "Uživatel použitý jako výchozí pro placení výdajů."
},
"save": "Uložit",
"saving": "Ukládání…",
"create": "Vytvořit",
"creating": "Vytváření…",
"cancel": "Zrušit"
}
},
"ExpenseForm": {
"Income": {
"create": "Vytvořit příjem",
"edit": "Upravit příjem",
"TitleField": {
"label": "Název příjmu",
"placeholder": "Pondělní večerní restaurace",
"description": "Zadejte popis příjmu."
},
"DateField": {
"label": "Datum příjmu",
"description": "Zadejte datum, kdy byl příjem přijat."
},
"categoryFieldDescription": "Vyberte kategorii příjmu.",
"paidByField": {
"label": "Obdržel/a",
"description": "Vyberte účastníka, který příjem obdržel."
},
"paidFor": {
"title": "Obdrženo pro",
"description": "Vyberte, pro koho byl příjem obdržen."
},
"splitModeDescription": "Vyberte, jak rozdělit příjem.",
"attachDescription": "Zobrazit a připojit účtenky k příjmu."
},
"Expense": {
"create": "Vytvořit výdaj",
"edit": "Upravit výdaj",
"TitleField": {
"label": "Název výdaje",
"placeholder": "Pondělní večerní restaurace",
"description": "Zadejte popis výdaje."
},
"DateField": {
"label": "Datum výdaje",
"description": "Zadejte datum, kdy byl výdaj zaplacen."
},
"categoryFieldDescription": "Vyberte kategorii výdaje.",
"paidByField": {
"label": "Zaplatil/a",
"description": "Vyberte účastníka, který výdaj zaplatil."
},
"recurrenceRule": {
"label": "Opakování výdaje",
"description": "Vyberte, jak často se má výdaj opakovat.",
"none": "Žádné",
"daily": "Denně",
"weekly": "Týdně",
"monthly": "Měsíčně"
},
"paidFor": {
"title": "Zaplaceno pro",
"description": "Vyberte, pro koho byl výdaj zaplacen."
},
"splitModeDescription": "Vyberte, jak rozdělit výdaj.",
"attachDescription": "Zobrazit a připojit účtenky k výdaji."
},
"amountField": {
"label": "Částka"
},
"isReimbursementField": {
"label": "Toto je proplacení"
},
"categoryField": {
"label": "Kategorie"
},
"notesField": {
"label": "Poznámky"
},
"selectNone": "Nevybrat nic",
"selectAll": "Vybrat vše",
"shares": "podíl(y)",
"advancedOptions": "Pokročilé možnosti rozdělení…",
"SplitModeField": {
"label": "Způsob rozdělení",
"evenly": "Rovnoměrně",
"byShares": "Nerovnoměrně podle podílů",
"byPercentage": "Nerovnoměrně podle procent",
"byAmount": "Nerovnoměrně podle částky",
"saveAsDefault": "Uložit jako výchozí možnosti rozdělení"
},
"DeletePopup": {
"label": "Smazat",
"title": "Smazat tento výdaj?",
"description": "Opravdu chcete tento výdaj smazat? Tato akce je nevratná.",
"yes": "Ano",
"cancel": "Zrušit"
},
"attachDocuments": "Připojit dokumenty",
"create": "Vytvořit",
"creating": "Vytváření…",
"save": "Uložit",
"saving": "Ukládání…",
"cancel": "Zrušit",
"reimbursement": "Proplacení"
},
"ExpenseDocumentsInput": {
"TooBigToast": {
"title": "Soubor je příliš velký",
"description": "Maximální velikost souboru, který můžete nahrát, je {maxSize}. Váš má {size}."
},
"ErrorToast": {
"title": "Chyba při nahrávání dokumentu",
"description": "Při nahrávání dokumentu došlo k chybě. Zkuste to prosím později nebo vyberte jiný soubor.",
"retry": "Zkusit znovu"
}
},
"CreateFromReceipt": {
"Dialog": {
"triggerTitle": "Vytvořit výdaj z účtenky",
"title": "Vytvořit z účtenky",
"description": "Získat informace o výdaji z fotografie účtenky.",
"body": "Nahrajte fotografii účtenky a my se pokusíme z ní získat informace o výdaji.",
"selectImage": "Vybrat obrázek…",
"titleLabel": "Název:",
"categoryLabel": "Kategorie:",
"amountLabel": "Částka:",
"dateLabel": "Datum:",
"editNext": "Informace o výdaji budete moci upravit v dalším kroku.",
"continue": "Pokračovat"
},
"unknown": "Neznámé",
"TooBigToast": {
"title": "Soubor je příliš velký",
"description": "Maximální velikost souboru, který můžete nahrát, je {maxSize}. Váš má {size}."
},
"ErrorToast": {
"title": "Chyba při nahrávání dokumentu",
"description": "Při nahrávání dokumentu došlo k chybě. Zkuste to prosím později nebo vyberte jiný soubor.",
"retry": "Zkusit znovu"
}
},
"Balances": {
"title": "Zůstatky",
"description": "Toto je částka, kterou každý účastník zaplatil nebo za kterou bylo zaplaceno.",
"Reimbursements": {
"title": "Navrhovaná proplacení",
"description": "Zde jsou návrhy na optimalizovaná proplacení mezi účastníky.",
"noImbursements": "Vypadá to, že vaše skupina nepotřebuje žádné proplacení 😁",
"owes": "<strong>{from}</strong> dluží <strong>{to}</strong>",
"markAsPaid": "Označit jako zaplaceno"
}
},
"Stats": {
"title": "Statistiky",
"Totals": {
"title": "Celkové součty",
"description": "Shrnutí výdajů celé skupiny.",
"groupSpendings": "Celkové výdaje skupiny",
"groupEarnings": "Celkové příjmy skupiny",
"yourSpendings": "Vaše celkové výdaje",
"yourEarnings": "Vaše celkové příjmy",
"yourShare": "Váš celkový podíl"
}
},
"Activity": {
"title": "Aktivita",
"description": "Přehled veškeré aktivity v této skupině.",
"noActivity": "Ve vaší skupině zatím není žádná aktivita.",
"someone": "Někdo",
"settingsModified": "Nastavení skupiny upravil <strong>{participant}</strong>.",
"expenseCreated": "Výdaj <em>{expense}</em> vytvořil <strong>{participant}</strong>.",
"expenseUpdated": "Výdaj <em>{expense}</em> upravil <strong>{participant}</strong>.",
"expenseDeleted": "Výdaj <em>{expense}</em> smazal <strong>{participant}</strong>.",
"Groups": {
"today": "Dnes",
"yesterday": "Včera",
"earlierThisWeek": "Dříve tento týden",
"lastWeek": "Minulý týden",
"earlierThisMonth": "Dříve tento měsíc",
"lastMonth": "Minulý měsíc",
"earlierThisYear": "Dříve tento rok",
"lastYear": "Minulý rok",
"older": "Starší"
}
},
"Information": {
"title": "Informace",
"description": "Použijte toto místo k přidání informací, které mohou být důležité pro účastníky skupiny.",
"empty": "Zatím žádné informace o skupině."
},
"Settings": {
"title": "Nastavení"
},
"Share": {
"title": "Sdílet",
"description": "Aby ostatní účastníci mohli vidět skupinu a přidávat výdaje, sdílejte s nimi její URL.",
"warning": "Varování!",
"warningHelp": "Každý, kdo má URL skupiny, bude moci zobrazit a upravovat výdaje. Sdílejte opatrně!"
},
"SchemaErrors": {
"min1": "Zadejte alespoň jeden znak.",
"min2": "Zadejte alespoň dva znaky.",
"max5": "Zadejte nejvýše pět znaků.",
"max50": "Zadejte nejvýše 50 znaků.",
"duplicateParticipantName": "Jiný účastník už toto jméno má.",
"titleRequired": "Zadejte prosím název.",
"invalidNumber": "Neplatné číslo.",
"amountRequired": "Musíte zadat částku.",
"amountNotZero": "Částka nesmí být nula.",
"amountTenMillion": "Částka musí být nižší než 10 000 000.",
"paidByRequired": "Musíte vybrat účastníka.",
"paidForMin1": "Výdaj musí být zaplacen alespoň za jednoho účastníka.",
"noZeroShares": "Všechny podíly musí být větší než 0.",
"amountSum": "Součet částek se musí rovnat částce výdaje.",
"percentageSum": "Součet procent musí být 100."
},
"Categories": {
"search": "Hledat kategorii...",
"noCategory": "Nebyla nalezena žádná kategorie.",
"Uncategorized": {
"heading": "Nezařazené",
"General": "Obecné",
"Payment": "Platba"
},
"Entertainment": {
"heading": "Zábava",
"Entertainment": "Zábava",
"Games": "Hry",
"Movies": "Filmy",
"Music": "Hudba",
"Sports": "Sport"
},
"Food and Drink": {
"heading": "Jídlo a pití",
"Food and Drink": "Jídlo a pití",
"Dining Out": "Restaurace",
"Groceries": "Potraviny",
"Liquor": "Alkohol"
},
"Home": {
"heading": "Domov",
"Home": "Domov",
"Electronics": "Elektronika",
"Furniture": "Nábytek",
"Household Supplies": "Domácí potřeby",
"Maintenance": "Údržba",
"Mortgage": "Hypotéka",
"Pets": "Domácí mazlíčci",
"Rent": "Nájem",
"Services": "Služby"
},
"Life": {
"heading": "Život",
"Childcare": "Péče o děti",
"Clothing": "Oblečení",
"Donation": "Dar",
"Education": "Vzdělání",
"Gifts": "Dárky",
"Insurance": "Pojištění",
"Medical Expenses": "Zdravotní výdaje",
"Taxes": "Daně"
},
"Transportation": {
"heading": "Doprava",
"Transportation": "Doprava",
"Bicycle": "Kolo",
"Bus/Train": "Autobus/Vlak",
"Car": "Auto",
"Gas/Fuel": "Benzín/Palivo",
"Hotel": "Hotel",
"Parking": "Parkování",
"Plane": "Letadlo",
"Taxi": "Taxi"
},
"Utilities": {
"heading": "Služby",
"Utilities": "Služby",
"Cleaning": "Úklid",
"Electricity": "Elektřina",
"Heat/Gas": "Topení/Plyn",
"Trash": "Odpad",
"TV/Phone/Internet": "TV/Telefon/Internet",
"Water": "Voda"
}
}
}

View File

@@ -138,13 +138,13 @@
"description": "Wähle das Mitglied, das die Einnahme erhalten hat."
},
"recurrenceRule": {
"label": "Expense Recurrence",
"description": "Select how often the expense should repeat.",
"label": "Wiederholung der Einnahme",
"description": "Wähle aus, wie oft die Einnahme wiederholt werden soll.",
"none": "None",
"daily": "Daily",
"weekly": "Weekly",
"monthly": "Monthly"
"none": "Keine Wiederholung",
"daily": "Täglich",
"weekly": "Wöchentlich",
"monthly": "Monatlich"
},
"paidFor": {
"title": "Empfangen für",
@@ -168,8 +168,18 @@
"categoryFieldDescription": "Wähle eine Kategorie für die Ausgabe.",
"paidByField": {
"label": "Gezahlt von",
"placeholder": "Wähle ein Mitglied",
"description": "Wähle das Mitglied, das die Ausgabe bezahlt hat."
},
"recurrenceRule": {
"label": "Wiederholung der Ausgabe",
"description": "Wähle aus, wie oft die Ausgabe wiederholt werden soll.",
"none": "Keine Wiederholung",
"daily": "Täglich",
"weekly": "Wöchentlich",
"monthly": "Monatlich"
},
"paidFor": {
"title": "Gezahlt für",
"description": "Wähle für wen die Ausgabe gezahlt wurde."
@@ -396,4 +406,4 @@
"Water": "Wasser"
}
}
}
}

View File

@@ -43,8 +43,10 @@
},
"ExpenseCard": {
"paidBy": "Paid by <strong>{paidBy}</strong> for <paidFor></paidFor>",
"everyone": "everyone",
"receivedBy": "Received by <strong>{paidBy}</strong> for <paidFor></paidFor>",
"yourBalance": "Your balance:"
"yourBalance": "Your balance:",
"notInvolved": "You are not involved"
},
"Groups": {
"myGroups": "My groups",
@@ -160,6 +162,7 @@
"categoryFieldDescription": "Select the expense category.",
"paidByField": {
"label": "Paid by",
"placeholder": "Select a participant",
"description": "Select the participant who paid the expense."
},
"recurrenceRule": {
@@ -397,4 +400,4 @@
"Water": "Water"
}
}
}
}

View File

@@ -20,6 +20,7 @@
"create": "Crear gasto",
"createFirst": "Crea el primero",
"noExpenses": "Tu grupo aun no tiene gastos.",
"export": "Exportar",
"exportJson": "Exportar a JSON",
"exportCsv": "Exportar a CSV",
"searchPlaceholder": "Busca un gasto…",
@@ -137,15 +138,6 @@
"label": "Recibido por",
"description": "Seleccione el participante que recibió los ingresos."
},
"recurrenceRule": {
"label": "Recurrencia del gasto",
"description": "Seleccione con qué frecuencia debe repetirse el gasto.",
"none": "Ninguno",
"daily": "Diario",
"weekly": "Semanal",
"monthly": "Mensual"
},
"paidFor": {
"title": "Recibido para for",
"description": "Seleccione para quién se recibió el ingreso."
@@ -169,6 +161,24 @@
"paidByField": {
"label": "Pagado por",
"description": "Seleccione el participante que pagó el gasto."
},
"recurrenceRule": {
"label": "Recurrencia del gasto",
"description": "Seleccione con qué frecuencia debe repetirse el gasto.",
"none": "Ninguno",
"daily": "Diario",
"weekly": "Semanal",
"monthly": "Mensual"
},
"recurrenceRule": {
"label": "Recurrencia",
"description": "Seleccione con qué frecuencia debe repetirse el gasto.",
"none": "Ninguno",
"daily": "Diario",
"weekly": "Semanal",
"monthly": "Mensual"
},
"paidFor": {
"title": "Pagado para",
@@ -259,7 +269,7 @@
"title": "Reembolsos propuestos",
"description": "He aquí algunas sugerencias para optimizar los reembolsos entre los participantes.",
"noImbursements": "Parece que tu grupo no necesita ningún reembolso 😁",
"owes": "<strong>{from}</strong> debe <strong>{to}</strong>",
"owes": "<strong>{from}</strong> debe a <strong>{to}</strong>",
"markAsPaid": "Marcar como pagado"
}
},
@@ -395,4 +405,4 @@
"Water": "Agua"
}
}
}
}

View File

@@ -137,15 +137,6 @@
"label": "Vastaanottaja",
"description": "Valitse kuka vastaanotti tulon."
},
"recurrenceRule": {
"label": "Expense Recurrence",
"description": "Select how often the expense should repeat.",
"none": "None",
"daily": "Daily",
"weekly": "Weekly",
"monthly": "Monthly"
},
"paidFor": {
"title": "Tulon jakaminen",
"description": "Valitse kenelle tulo jaetaan."
@@ -240,16 +231,6 @@
"dateLabel": "Päivä:",
"editNext": "Voit muokata kulun tietoja seuraavaksi.",
"continue": "Jatka"
},
"unknown": "Unknown",
"TooBigToast": {
"title": "The file is too big",
"description": "The maximum file size you can upload is {maxSize}. Yours is {size}."
},
"ErrorToast": {
"title": "Error while uploading document",
"description": "Something wrong happened when uploading the document. Please retry later or select a different file.",
"retry": "Retry"
}
},
"Balances": {

View File

@@ -138,13 +138,13 @@
"description": "Sélectionnez le participant qui a reçu le revenu."
},
"recurrenceRule": {
"label": "Expense Recurrence",
"description": "Select how often the expense should repeat.",
"label": "Récurrence de la dépense",
"description": "Sélectionnez la fréquence de répétition de la dépense.",
"none": "None",
"daily": "Daily",
"weekly": "Weekly",
"monthly": "Monthly"
"none": "Aucune",
"daily": "Quotidienne",
"weekly": "Hebdomadaire",
"monthly": "Mensuelle"
},
"paidFor": {
"title": "Reçu pour",
@@ -170,6 +170,15 @@
"label": "Payé par",
"description": "Sélectionnez le participant qui a réglé la dépense."
},
"recurrenceRule": {
"label": "Récurrence de la dépense",
"description": "Sélectionnez la fréquence de répétition de la dépense.",
"none": "Aucune",
"daily": "Quotidienne",
"weekly": "Hebdomadaire",
"monthly": "Mensuelle"
},
"paidFor": {
"title": "Payé pour",
"description": "Sélectionnez les participants concernés"
@@ -395,4 +404,4 @@
"Water": "Eau"
}
}
}
}

View File

@@ -1,7 +1,7 @@
{
"Homepage": {
"title": "Condividi <strong>Spese</strong> con <strong>Amici & Familiari</strong>",
"description": "Benvenuto nella tua nuova instanza di <strong>Spliit</strong>!",
"description": "Benvenuto nella tua nuova installazione di <strong>Spliit</strong>!",
"button": {
"groups": "Vai ai gruppi",
"github": "GitHub"
@@ -12,7 +12,7 @@
},
"Footer": {
"madeIn": "Realizzato a Montréal, Québec 🇨🇦",
"builtBy": "Costruito da <author>Sebastien Castiel</author> e <source>contributori</source>"
"builtBy": "Sviluppato da <author>Sebastien Castiel</author> e <source>contributori</source>"
},
"Expenses": {
"title": "Spese",
@@ -43,7 +43,8 @@
"ExpenseCard": {
"paidBy": "Pagato da <strong>{paidBy}</strong> per <paidFor></paidFor>",
"receivedBy": "Ricevuto da <strong>{paidBy}</strong> per <paidFor></paidFor>",
"yourBalance": "Il tuo bilancio:"
"yourBalance": "Il tuo saldo:",
"notInvolved": "Non sei coinvolto"
},
"Groups": {
"myGroups": "I miei gruppi",
@@ -51,8 +52,8 @@
"loadingRecent": "Caricamento gruppi recenti…",
"NoRecent": {
"description": "Non hai visitato nessun gruppo di recente.",
"create": "Creane una",
"orAsk": "oppure chiedi a un amico di inviarti il collegamento a uno esistente."
"create": "Creane uno",
"orAsk": "oppure chiedi a un amico di inviarti il collegamento ad uno esistente."
},
"recent": "Gruppi recenti",
"starred": "Gruppi speciali",
@@ -132,50 +133,59 @@
"label": "Data entrata",
"description": "Inserisci la data in cui è stato ricevuta l'entrata."
},
"categoryFieldDescription": "Seleziona categoria entrata.",
"categoryFieldDescription": "Seleziona la categoria dell'entrata.",
"paidByField": {
"label": "Ricevuto da",
"description": "Seleziona partecipante che ha ricevuto l'entrata."
"label": "Ricevuta da",
"description": "Seleziona il partecipante che ha ricevuto l'entrata."
},
"recurrenceRule": {
"label": "Expense Recurrence",
"description": "Select how often the expense should repeat.",
"label": "Spesa ricorrente",
"description": "Seleziona quanto spesso deve ripetersi.",
"none": "None",
"daily": "Daily",
"weekly": "Weekly",
"monthly": "Monthly"
"none": "Mai",
"daily": "Giornaliera",
"weekly": "Settimanale",
"monthly": "Mensile"
},
"paidFor": {
"title": "Ricevuto per",
"description": "Seleziona per chi è stato ricevuta l'entrata."
"description": "Seleziona per chi è stato ricevuto il reddito."
},
"splitModeDescription": "Seleziona come dividere l'entrata.",
"attachDescription": "Vedi allegati entrata."
"attachDescription": "Vedi ed allega la ricevuta per l'entrata."
},
"Expense": {
"create": "Crea spesa",
"edit": "Modifica spesa",
"edit": "Edita spesa",
"TitleField": {
"label": "Titolo spesa",
"label": "Titolo Spesa",
"placeholder": "Ristorante del lunedì sera",
"description": "Inserisci una descrizione per l'uscita."
"description": "Inserisci una descrizione per la spesa."
},
"DateField": {
"label": "Data spesa",
"description": "Inserisci la data di quando è stata fatta la spesa"
"description": "Inserisci la data in cui si è svolta la spesa."
},
"categoryFieldDescription": "Seleziona una categoria per la spesa.",
"categoryFieldDescription": "Seleziona la categoria della spesa.",
"paidByField": {
"label": "Pagato da",
"description": "Seleziona il partecipante che ha pagato la spesa."
},
"recurrenceRule": {
"label": "Spesa ricorrente",
"description": "Seleziona quanto spesso deve ripetersi.",
"none": "Mai",
"daily": "Giornaliera",
"weekly": "Settimanale",
"monthly": "Mensile"
},
"paidFor": {
"title": "Pagato per",
"description": "Seleziona per chi è stata pagato."
"description": "Seleleziona per chi è stato pagato."
},
"splitModeDescription": "Seleziona come dividere la spesa.",
"attachDescription": "Vedi allegati spesa."
"attachDescription": "Vedi ed allega la ricevuta per la spesa."
},
"amountField": {
"label": "Importo"
@@ -351,11 +361,11 @@
"Liquor": "Liquori"
},
"Home": {
"heading": "Home",
"Home": "Home",
"Electronics": "Elettronica",
"Furniture": "Mobilia",
"Household Supplies": "Forniture per la casa",
"heading": "Casa",
"Home": "Casa",
"Electronics": "Elettronica di consumo",
"Furniture": "Mobili",
"Household Supplies": "Prodotti per la casa",
"Maintenance": "Manutenzione",
"Mortgage": "Mutuo",
"Pets": "Animali",
@@ -363,12 +373,13 @@
"Services": "Servizi"
},
"Life": {
"heading": "Life",
"Childcare": "Assistenza all'infanzia",
"Clothing": "Vestiti",
"heading": "Vita",
"Childcare": "Cura dei bambini",
"Clothing": "Abbigliamento",
"Donation": "Donazioni",
"Education": "Istruzione",
"Gifts": "Regali",
"Insurance": "Assicurazione",
"Insurance": "Assicurazioni",
"Medical Expenses": "Spese Mediche",
"Taxes": "Tasse"
},
@@ -385,14 +396,14 @@
"Taxi": "Taxi"
},
"Utilities": {
"heading": "Utilità",
"Utilities": "Utilità",
"Cleaning": "Pulizia",
"heading": "Utenze",
"Utilities": "Utenze",
"Cleaning": "Pulizie",
"Electricity": "Elettricità",
"Heat/Gas": "Riscaldamento/Gas",
"Trash": "Spazzatura",
"Trash": "Rifiuti",
"TV/Phone/Internet": "TV/Telefono/Internet",
"Water": "Acqua"
}
}
}
}

400
messages/ja-JP.json Normal file
View File

@@ -0,0 +1,400 @@
{
"Homepage": {
"title": "友達や家族と<strong>費用</strong>を<strong>分担</strong>しよう",
"description": "新しい<strong>Spliit</strong>インスタンスへようこそ!",
"button": {
"groups": "グループへ移動",
"github": "GitHub"
}
},
"Header": {
"groups": "グループ"
},
"Footer": {
"madeIn": "モントリオール、ケベック 🇨🇦 で製作",
"builtBy": "<author>Sebastien Castiel</author>と<source>貢献者</source>によって構築"
},
"Expenses": {
"title": "支出",
"description": "グループのために作成した支出はこちらです。",
"create": "支出を作成",
"createFirst": "最初の支出を作成",
"noExpenses": "グループにはまだ支出がありません。",
"export": "エクスポート",
"exportJson": "JSONにエクスポート",
"exportCsv": "CSVにエクスポート",
"searchPlaceholder": "支出を検索...",
"ActiveUserModal": {
"title": "あなたは誰ですか?",
"description": "情報の表示方法をカスタマイズするために、あなたがどの参加者かを教えてください。",
"nobody": "誰も選択したくありません",
"save": "変更を保存",
"footer": "この設定は後でグループ設定で変更できます。"
},
"Groups": {
"upcoming": "今後",
"thisWeek": "今週",
"earlierThisMonth": "今月初め",
"lastMonth": "先月",
"earlierThisYear": "今年初め",
"lastYear": "昨年",
"older": "それ以前"
}
},
"ExpenseCard": {
"paidBy": "<strong>{paidBy}</strong>が<paidFor></paidFor>のために支払いました",
"receivedBy": "<strong>{paidBy}</strong>が<paidFor></paidFor>のために受け取りました",
"yourBalance": "あなたの残高:"
},
"Groups": {
"myGroups": "マイグループ",
"create": "作成",
"loadingRecent": "最近のグループをロード中...",
"NoRecent": {
"description": "最近訪れたグループはありません。",
"create": "グループを作成する",
"orAsk": "または友達に既存のグループへのリンクを送ってもらいましょう。"
},
"recent": "最近のグループ",
"starred": "スター付きグループ",
"archived": "アーカイブ済みグループ",
"archive": "グループをアーカイブ",
"unarchive": "グループのアーカイブを解除",
"removeRecent": "最近のグループから削除",
"RecentRemovedToast": {
"title": "グループが削除されました",
"description": "グループは最近のグループリストから削除されました。",
"undoAlt": "削除を元に戻す",
"undo": "元に戻す"
},
"AddByURL": {
"button": "URLで追加",
"title": "URLでグループを追加",
"description": "グループが共有された場合、そのURLをここに貼り付けてリストに追加できます。",
"error": "あら、提供されたURLからグループを見つけることができませんでした..."
},
"NotFound": {
"text": "このグループは存在しません。",
"link": "最近訪れたグループへ移動"
}
},
"GroupForm": {
"title": "グループ情報",
"NameField": {
"label": "グループ名",
"placeholder": "夏休み",
"description": "グループの名前を入力してください。"
},
"InformationField": {
"label": "グループ情報",
"placeholder": "グループ参加者に関連する情報は何ですか?"
},
"CurrencyField": {
"label": "通貨記号",
"placeholder": "$, €, £...",
"description": "金額の表示に使用します。"
},
"Participants": {
"title": "参加者",
"description": "各参加者の名前を入力してください。",
"protectedParticipant": "この参加者は支出の一部であり、削除できません。",
"new": "新規",
"add": "参加者を追加",
"John": "John",
"Jane": "Jane",
"Jack": "Jack"
},
"Settings": {
"title": "ローカル設定",
"description": "これらの設定はデバイスごとに設定され、あなたの体験をカスタマイズするために使用されます。",
"ActiveUserField": {
"label": "アクティブユーザー",
"placeholder": "参加者を選択",
"none": "なし",
"description": "支出の支払いのデフォルトとして使用されるユーザー。"
},
"save": "保存",
"saving": "保存中...",
"create": "作成",
"creating": "作成中...",
"cancel": "キャンセル"
}
},
"ExpenseForm": {
"Income": {
"create": "収入を作成",
"edit": "収入を編集",
"TitleField": {
"label": "収入タイトル",
"placeholder": "月曜日の夕食レストラン",
"description": "収入の説明を入力してください。"
},
"DateField": {
"label": "収入日",
"description": "収入を受け取った日付を入力してください。"
},
"categoryFieldDescription": "収入カテゴリーを選択してください。",
"paidByField": {
"label": "受取人",
"description": "収入を受け取った参加者を選択してください。"
},
"paidFor": {
"title": "受け取り対象",
"description": "誰のために収入が受け取られたかを選択してください。"
},
"splitModeDescription": "収入の分割方法を選択してください。",
"attachDescription": "領収書を確認し、収入に添付してください。"
},
"Expense": {
"create": "支出を作成",
"edit": "支出を編集",
"TitleField": {
"label": "支出タイトル",
"placeholder": "月曜日の夕食レストラン",
"description": "支出の説明を入力してください。"
},
"DateField": {
"label": "支出日",
"description": "支出が支払われた日付を入力してください。"
},
"categoryFieldDescription": "支出カテゴリーを選択してください。",
"paidByField": {
"label": "支払者",
"description": "支出を支払った参加者を選択してください。"
},
"recurrenceRule": {
"label": "支出の繰り返し",
"description": "支出の繰り返し頻度を選択してください。",
"none": "なし",
"daily": "毎日",
"weekly": "毎週",
"monthly": "毎月"
},
"paidFor": {
"title": "支払い対象",
"description": "誰のために支出が支払われたかを選択してください。"
},
"splitModeDescription": "支出の分割方法を選択してください。",
"attachDescription": "領収書を確認し、支出に添付してください。"
},
"amountField": {
"label": "金額"
},
"isReimbursementField": {
"label": "これは払い戻しです"
},
"categoryField": {
"label": "カテゴリー"
},
"notesField": {
"label": "メモ"
},
"selectNone": "選択解除",
"selectAll": "すべて選択",
"shares": "シェア",
"advancedOptions": "詳細な分割オプション...",
"SplitModeField": {
"label": "分割モード",
"evenly": "均等に",
"byShares": "不均等に - シェアで",
"byPercentage": "不均等に - パーセンテージで",
"byAmount": "不均等に - 金額で",
"saveAsDefault": "デフォルトの分割オプションとして保存"
},
"DeletePopup": {
"label": "削除",
"title": "この支出を削除しますか?",
"description": "本当にこの支出を削除しますか?この操作は元に戻せません。",
"yes": "はい",
"cancel": "キャンセル"
},
"attachDocuments": "書類を添付",
"create": "作成",
"creating": "作成中...",
"save": "保存",
"saving": "保存中...",
"cancel": "キャンセル",
"reimbursement": "払い戻し"
},
"ExpenseDocumentsInput": {
"TooBigToast": {
"title": "ファイルが大きすぎます",
"description": "アップロードできる最大ファイルサイズは{maxSize}です。あなたのファイルは{size}です。"
},
"ErrorToast": {
"title": "書類のアップロード中にエラーが発生しました",
"description": "書類のアップロード中に何か問題が発生しました。後で再試行するか、別のファイルを選択してください。",
"retry": "再試行"
}
},
"CreateFromReceipt": {
"Dialog": {
"triggerTitle": "領収書から支出を作成",
"title": "領収書から作成",
"description": "領収書の写真から支出情報を抽出します。",
"body": "領収書の写真をアップロードすると、可能であれば支出情報を抽出してスキャンします。",
"selectImage": "画像を選択...",
"titleLabel": "タイトル:",
"categoryLabel": "カテゴリー:",
"amountLabel": "金額:",
"dateLabel": "日付:",
"editNext": "次に支出情報を編集できます。",
"continue": "続ける"
},
"unknown": "不明",
"TooBigToast": {
"title": "ファイルが大きすぎます",
"description": "アップロードできる最大ファイルサイズは{maxSize}です。あなたのファイルは{size}です。"
},
"ErrorToast": {
"title": "書類のアップロード中にエラーが発生しました",
"description": "書類のアップロード中に何か問題が発生しました。後で再試行するか、別のファイルを選択してください。",
"retry": "再試行"
}
},
"Balances": {
"title": "残高",
"description": "これは各参加者が支払ったまたは支払われた金額です。",
"Reimbursements": {
"title": "提案される払い戻し",
"description": "参加者間の最適化された払い戻しの提案です。",
"noImbursements": "グループに払い戻しが必要ないようです 😁",
"owes": "<strong>{from}</strong>は<strong>{to}</strong>に借りがあります",
"markAsPaid": "支払い済みとしてマーク"
}
},
"Stats": {
"title": "統計",
"Totals": {
"title": "合計",
"description": "グループ全体の支出概要。",
"groupSpendings": "グループ総支出",
"groupEarnings": "グループ総収入",
"yourSpendings": "あなたの総支出",
"yourEarnings": "あなたの総収入",
"yourShare": "あなたの総シェア"
}
},
"Activity": {
"title": "アクティビティ",
"description": "このグループのすべてのアクティビティの概要。",
"noActivity": "グループにはまだアクティビティがありません。",
"someone": "誰か",
"settingsModified": "グループ設定が<strong>{participant}</strong>によって変更されました。",
"expenseCreated": "支出<em>{expense}</em>が<strong>{participant}</strong>によって作成されました。",
"expenseUpdated": "支出<em>{expense}</em>が<strong>{participant}</strong>によって更新されました。",
"expenseDeleted": "支出<em>{expense}</em>が<strong>{participant}</strong>によって削除されました。",
"Groups": {
"today": "今日",
"yesterday": "昨日",
"earlierThisWeek": "今週初め",
"lastWeek": "先週",
"earlierThisMonth": "今月初め",
"lastMonth": "先月",
"earlierThisYear": "今年初め",
"lastYear": "昨年",
"older": "それ以前"
}
},
"Information": {
"title": "情報",
"description": "グループ参加者に関連する情報を追加するためにこの場所を使用してください。",
"empty": "まだグループ情報がありません。"
},
"Settings": {
"title": "設定"
},
"Share": {
"title": "共有",
"description": "他の参加者がグループを見て支出を追加できるように、グループのURLを共有してください。",
"warning": "警告!",
"warningHelp": "グループURLを持つすべての人が支出を閲覧および編集できるようになります。注意して共有してください"
},
"SchemaErrors": {
"min1": "少なくとも1文字入力してください。",
"min2": "少なくとも2文字入力してください。",
"max5": "最大5文字まで入力してください。",
"max50": "最大50文字まで入力してください。",
"duplicateParticipantName": "別の参加者がすでにこの名前を使用しています。",
"titleRequired": "タイトルを入力してください。",
"invalidNumber": "無効な数字です。",
"amountRequired": "金額を入力する必要があります。",
"amountNotZero": "金額はゼロであってはなりません。",
"amountTenMillion": "金額は10,000,000未満である必要があります。",
"paidByRequired": "参加者を選択する必要があります。",
"paidForMin1": "支出は少なくとも1人の参加者のために支払われている必要があります。",
"noZeroShares": "すべてのシェアは0より大きくなければなりません。",
"amountSum": "金額の合計は支出金額と一致する必要があります。",
"percentageSum": "パーセンテージの合計は100である必要があります。"
},
"Categories": {
"search": "カテゴリーを検索...",
"noCategory": "カテゴリーが見つかりません。",
"Uncategorized": {
"heading": "未分類",
"General": "一般",
"Payment": "支払い"
},
"Entertainment": {
"heading": "エンターテイメント",
"Entertainment": "エンターテイメント",
"Games": "ゲーム",
"Movies": "映画",
"Music": "音楽",
"Sports": "スポーツ"
},
"Food and Drink": {
"heading": "食事と飲み物",
"Food and Drink": "食事と飲み物",
"Dining Out": "外食",
"Groceries": "食料品",
"Liquor": "酒類"
},
"Home": {
"heading": "住まい",
"Home": "住まい",
"Electronics": "電子機器",
"Furniture": "家具",
"Household Supplies": "家庭用品",
"Maintenance": "メンテナンス",
"Mortgage": "住宅ローン",
"Pets": "ペット",
"Rent": "家賃",
"Services": "サービス"
},
"Life": {
"heading": "生活",
"Childcare": "育児",
"Clothing": "衣類",
"Donation": "寄付",
"Education": "教育",
"Gifts": "贈り物",
"Insurance": "保険",
"Medical Expenses": "医療費",
"Taxes": "税金"
},
"Transportation": {
"heading": "交通",
"Transportation": "交通",
"Bicycle": "自転車",
"Bus/Train": "バス/電車",
"Car": "車",
"Gas/Fuel": "ガソリン/燃料",
"Hotel": "ホテル",
"Parking": "駐車場",
"Plane": "飛行機",
"Taxi": "タクシー"
},
"Utilities": {
"heading": "公共料金",
"Utilities": "公共料金",
"Cleaning": "清掃",
"Electricity": "電気",
"Heat/Gas": "暖房/ガス",
"Trash": "ゴミ",
"TV/Phone/Internet": "テレビ/電話/インターネット",
"Water": "水道"
}
}
}

View File

@@ -20,14 +20,15 @@
"create": "Maak uitgave",
"createFirst": "Maak de eerste",
"noExpenses": "Je groep heeft nog geen uitgaven.",
"exportJson": "Exporteer naar JSON",
"exportCsv": "Exporteer naar CSV",
"export": "Exporteren",
"exportJson": "Exporteren naar JSON",
"exportCsv": "Exporteren naar CSV",
"searchPlaceholder": "Zoek naar een uitgave…",
"ActiveUserModal": {
"title": "Wie ben jij?",
"description": "Zeg ons welke deelnemer je bent zodat wij persoonlijke informatie kunnen aantonen.",
"nobody": "Ik wil niemand selecteren",
"save": "Sla op",
"save": "Opslaan",
"footer": "Deze instelling kan later worden gewijzigd in de instellingen van de groep."
},
"Groups": {
@@ -42,6 +43,7 @@
},
"ExpenseCard": {
"paidBy": "Betaald door <strong>{paidBy}</strong> voor <paidFor></paidFor>",
"everyone": "iedereen",
"receivedBy": "Ontvangen door <strong>{paidBy}</strong> voor <paidFor></paidFor>",
"yourBalance": "Jouw balans:"
},
@@ -112,11 +114,11 @@
"none": "Geen",
"description": "De deelnemer die automatisch wordt geselecteerd als je een uitgave maakt."
},
"save": "Sla op",
"saving": "Opslaan…",
"create": "Maak groep",
"creating": "Maken…",
"cancel": "Annuleer"
"save": "Opslaan",
"saving": "Aan het opslaan…",
"create": "Groep maken",
"creating": "Aan het maken…",
"cancel": "Annuleren"
}
},
"ExpenseForm": {
@@ -137,6 +139,14 @@
"label": "Ontvangen door",
"description": "Selecteer de deelnemer die het inkomen heeft ontvangen."
},
"recurrenceRule": {
"label": "Terugkerend inkomen",
"description": "Kies hoe vaak het inkomen herhaald wordt.",
"none": "Niet",
"daily": "Dagelijks",
"weekly": "Wekelijks",
"monthly": "Maandelijks"
},
"paidFor": {
"title": "Ontvangen voor",
"description": "Selecteer voor wie het inkomen is ontvangen."
@@ -161,6 +171,14 @@
"label": "Betaald door",
"description": "Selecteer de deelnemer die de uitgave heeft gedaan."
},
"recurrenceRule": {
"label": "Terugkerende uitgave",
"description": "Kies hoe vaak de uitgave herhaald wordt.",
"none": "Niet",
"daily": "Dagelijks",
"weekly": "Wekelijks",
"monthly": "Maandelijks"
},
"paidFor": {
"title": "Betaald voor",
"description": "Selecteer voor wie de uitgave is gedaan."
@@ -190,7 +208,7 @@
"byShares": "Ongelijk Met delen",
"byPercentage": "Ongelijk Met percentage",
"byAmount": "Ongelijk Met bedrag",
"saveAsDefault": "Sla op als standaard-optie"
"saveAsDefault": "Opslaan als standaard-optie"
},
"DeletePopup": {
"label": "Verwijderen",
@@ -200,11 +218,11 @@
"cancel": "Annuleer"
},
"attachDocuments": "Voeg documenten toe",
"create": "Maak",
"creating": "Maken…",
"save": "Sla op",
"saving": "Opslaan…",
"cancel": "Annuleer",
"create": "Maken",
"creating": "Aan het maken…",
"save": "Opslaan",
"saving": "Aan het opslaan…",
"cancel": "Annuleren",
"reimbursement": "Terugbetaling"
},
"ExpenseDocumentsInput": {
@@ -357,6 +375,7 @@
"heading": "Leven",
"Childcare": "Kinderopvang",
"Clothing": "Kleding",
"Donation": "Donatie",
"Education": "Onderwijs",
"Gifts": "Cadeaus",
"Insurance": "Verzekering",

View File

@@ -1,7 +1,7 @@
{
"Homepage": {
"title": "Podziel <strong>Wydatki</strong> z <strong>Rodziną i Przyjaciółmi</strong>",
"description": "Witaj na twojej nowej instancji <strong>Spliita</strong> !",
"title": "Dziel <strong>Wydatki</strong> z <strong>Rodziną i Przyjaciółmi</strong>",
"description": "Witaj na Twojej nowej instancji <strong>Spliit</strong> !",
"button": {
"groups": "Przejdź do grup",
"github": "GitHub"
@@ -11,18 +11,19 @@
"groups": "Grupy"
},
"Footer": {
"madeIn": "Stworzone Montréalu, Québec 🇨🇦",
"madeIn": "Stworzone w Montréalu, Québec 🇨🇦",
"builtBy": "Napisane przez <author>Sebastien Castiela</author> i <source>kontrybutorów</source>"
},
"Expenses": {
"title": "Wydatki",
"description": "Tutaj są wydatki, które utworzyłeś dla twojej grupy.",
"description": "Tutaj są wydatki, które utworzyłeś dla Twojej grupy.",
"create": "Dodaj wydatek",
"createFirst": "Stwórz swój pierwszy",
"noExpenses": "Twoja grupa nie ma jeszcze żadnych wydatków.",
"exportJson": "Eksportuj do JSONa",
"exportCsv": "Eksportuj do CSVa",
"searchPlaceholder": "Szukaj wydatku...",
"export": "Eksportuj",
"exportJson": "Eksportuj jako JSON",
"exportCsv": "Eksportuj jako CSV",
"searchPlaceholder": "Szukaj wydatku…",
"ActiveUserModal": {
"title": "Kim jesteś?",
"description": "Podaj, którym uczestnikiem jesteś aby pozwolić nam określić jakie informacje mają być wyświetlane.",
@@ -38,7 +39,8 @@
"earlierThisYear": "Wcześniej w tym roku",
"lastYear": "Poprzedni rok",
"older": "Starsze"
}
},
"export": "Eksportuj"
},
"ExpenseCard": {
"paidBy": "Opłacone przez <strong>{paidBy}</strong> dla <paidFor></paidFor>",
@@ -48,17 +50,17 @@
"Groups": {
"myGroups": "Moje grupy",
"create": "Stwórz",
"loadingRecent": "Wczytywanie ostatnich grup...",
"loadingRecent": "Wczytywanie ostatnich grup",
"NoRecent": {
"description": "Nie odwiedzałeś ostatnio żadnych grup.",
"create": "Stwórz",
"orAsk": "albo poproś przyjaciela, aby ci wysłał link do już istniejącej."
"orAsk": "albo poproś przyjaciela, aby wysłał Ci link do już istniejącej."
},
"recent": "Ostatnie grupy",
"starred": "Ogwiazdkowane grupy",
"starred": "Ulubione grupy",
"archived": "Zarchiwizowane grupy",
"archive": "Zarchiwizuj grupę",
"unarchive": "Odarchwiruj grupę",
"unarchive": "Cofnij archiwizację grupy",
"removeRecent": "Usuń z ostatnich grup",
"RecentRemovedToast": {
"title": "Grupa została usunięta",
@@ -67,10 +69,10 @@
"undo": "Cofnij"
},
"AddByURL": {
"button": "Dodaj poprzez link URL",
"title": "Dodaj grupę poprzez link URL",
"description": "Jeśli grupa została ci udostępniona możesz wkleić jej link tutaj, aby dodać ją do twojej listy.",
"error": "Ups, nie możemy znaleźć grupy z podanego linka..."
"button": "Dodaj poprzez adres URL",
"title": "Dodaj grupę poprzez adres URL",
"description": "Jeśli grupa została Ci udostępniona, możesz wkleić jej adres URL tutaj, aby dodać ją do Twojej listy.",
"error": "Ups, nie możemy znaleźć grupy o podanym adresie URL…"
},
"NotFound": {
"text": "Ta grupa nie istnieje.",
@@ -105,7 +107,7 @@
},
"Settings": {
"title": "Ustawienia lokalne",
"description": "Te ustawienia są zapisywane dla tego urządzenia i służą do dostosowania twoich doświadczeń z aplikacją.",
"description": "Te ustawienia są zapisywane na tym urządzeniu i służą do dostosowania Twoich doświadczeń z aplikacją.",
"ActiveUserField": {
"label": "Aktywny użytkownik",
"placeholder": "Wybierz użytkownika",
@@ -132,20 +134,11 @@
"label": "Data wpływu",
"description": "Podaj datę otrzymania wpływu."
},
"categoryFieldDescription": "Wybierz typ wpływu.",
"categoryFieldDescription": "Wybierz kategorię wpływu.",
"paidByField": {
"label": "Otrzymane przez",
"description": "Wybierz członka, który otrzymał wpływ."
},
"recurrenceRule": {
"label": "Expense Recurrence",
"description": "Select how often the expense should repeat.",
"none": "None",
"daily": "Daily",
"weekly": "Weekly",
"monthly": "Monthly"
},
"paidFor": {
"title": "Otrzymany dla",
"description": "Podaj dla kogo wpływ był przeznaczony."
@@ -170,6 +163,14 @@
"label": "Opłacone przez",
"description": "Wybierz członka, który zapłacił."
},
"recurrenceRule": {
"label": "Powtarzalnośc wydatku",
"description": "Wybierz jak często wydatek ma się powtarzać.",
"none": "Jednorazowo",
"daily": "Codziennie",
"weekly": "Co tydzień",
"monthly": "Co miesiąc"
},
"paidFor": {
"title": "Opłacone dla",
"description": "Wybierz kogo dotyczył wydatek."
@@ -192,7 +193,7 @@
"selectNone": "Nie wybieraj nikogo",
"selectAll": "Wybierz wszystkich",
"shares": "udział(y)",
"advancedOptions": "Zaawansowane opcje podziału...",
"advancedOptions": "Zaawansowane opcje podziału",
"SplitModeField": {
"label": "Typ podziału",
"evenly": "Równy",
@@ -219,7 +220,7 @@
"ExpenseDocumentsInput": {
"TooBigToast": {
"title": "Ten plik jest zbyt duży",
"description": "Maksymalny rozmiar pliku to: {maxSize}. Twój plik ma: {size}."
"description": "Maksymalny rozmiar pliku to {maxSize}. Twój plik ma {size}."
},
"ErrorToast": {
"title": "Błąd podczas wysyłania dokumentu",
@@ -231,9 +232,9 @@
"Dialog": {
"triggerTitle": "Utwórz wydatek z paragonu",
"title": "Utwórz z paragonu",
"description": "Wyodrębnianie informacji o wydatkach ze zdjęcia paragonu.",
"description": "Wyodrębnij informacje o wydatkach ze zdjęcia paragonu.",
"body": "Prześlij zdjęcie paragonu, a my zeskanujemy je, aby wyodrębnić informacje o wydatkach, jeśli to możliwe.",
"selectImage": "Wybierz obraz...",
"selectImage": "Wybierz obraz",
"titleLabel": "Tytuł:",
"categoryLabel": "Kategoria:",
"amountLabel": "Suma:",
@@ -244,7 +245,7 @@
"unknown": "Nieznany",
"TooBigToast": {
"title": "Ten plik jest zbyt duży",
"description": "Maksymalny rozmiar pliku to: {maxSize}. Twój plik ma: {size}."
"description": "Maksymalny rozmiar pliku to {maxSize}. Twój plik ma {size}."
},
"ErrorToast": {
"title": "Błąd podczas wysyłania dokumentu",
@@ -254,7 +255,7 @@
},
"Balances": {
"title": "Salda",
"description": "Jest to kwota, którą każdy członek zapłacił lub za którą otrzymał zapłatę.",
"description": "Jest to kwota, którą każdy członek zapłacił lub otrzymał.",
"Reimbursements": {
"title": "Sugerowane zwroty",
"description": "Oto sugestie dotyczące optymalizacji zwrotów między uczestnikami.",
@@ -298,7 +299,7 @@
},
"Information": {
"title": "Informacje",
"description": "Użyj tego miejsca, aby dodać wszelkie informacje, które mogą być istotne dla uczestników grupy..",
"description": "Użyj tego miejsca, aby dodać wszelkie informacje, które mogą być istotne dla uczestników grupy.",
"empty": "Jeszcze nic tu nie ma."
},
"Settings": {
@@ -320,7 +321,7 @@
"invalidNumber": "Niewłaściwa liczba.",
"amountRequired": "Należy wprowadzić kwotę.",
"amountNotZero": "Kwota nie może być zerem.",
"amountTenMillion": "Kwota musi być niższa niż 10,000,000.",
"amountTenMillion": "Kwota musi być niższa niż 10 000 000.",
"paidByRequired": "Musisz wybrać członka.",
"paidForMin1": "Wydatek musi zostać opłacony za co najmniej jednego uczestnika.",
"noZeroShares": "Wszystkie udziały muszą być większe niż 0.",
@@ -328,7 +329,7 @@
"percentageSum": "Suma procentów musi być równa 100."
},
"Categories": {
"search": "Szukaj kategorii...",
"search": "Szukaj kategorii",
"noCategory": "Nie znaleziono kategorii.",
"Uncategorized": {
"heading": "Bez kategorii",
@@ -341,7 +342,7 @@
"Games": "Gry",
"Movies": "Filmy",
"Music": "Muzyka",
"Sports": "Sporty"
"Sports": "Sport"
},
"Food and Drink": {
"heading": "Jedzenie i Napoje",
@@ -357,7 +358,7 @@
"Furniture": "Meble",
"Household Supplies": "Artykuły gospodarstwa domowego",
"Maintenance": "Utrzymanie",
"Mortgage": "Czynsz",
"Mortgage": "Kredyt",
"Pets": "Zwierzaki",
"Rent": "Czynsz",
"Services": "Usługi"
@@ -366,6 +367,7 @@
"heading": "Życie",
"Childcare": "Opieka nad dzieckiem",
"Clothing": "Ubrania",
"Donation": "Darowizna",
"Education": "Edukacja",
"Gifts": "Prezenty",
"Insurance": "Ubezpieczenie",
@@ -376,20 +378,20 @@
"heading": "Transport",
"Transportation": "Transport",
"Bicycle": "Rower",
"Bus/Train": "Bus/Pociąg",
"Bus/Train": "Autobus/Pociąg",
"Car": "Samochód",
"Gas/Fuel": "Paliwo",
"Hotel": "Hotel",
"Parking": "Parking",
"Plane": "Pociąg",
"Taxi": "Taxi"
"Plane": "Samolot",
"Taxi": "Taksówka"
},
"Utilities": {
"heading": "Media",
"Utilities": "Media",
"Cleaning": "Sprzątanie",
"Electricity": "Prąg",
"Heat/Gas": "Ogrzewanie",
"Electricity": "Prąd",
"Heat/Gas": "Ogrzewanie/Gaz",
"Trash": "Śmieci",
"TV/Phone/Internet": "TV/Telefon/Internet",
"Water": "Woda"

View File

@@ -128,15 +128,6 @@
"placeholder": "Cina de luni seară",
"description": "Adaugă o descriere pentru venit."
},
"recurrenceRule": {
"label": "Expense Recurrence",
"description": "Select how often the expense should repeat.",
"none": "None",
"daily": "Daily",
"weekly": "Weekly",
"monthly": "Monthly"
},
"DateField": {
"label": "Data venitului",
"description": "Adaugă data la care venitul a fost primit."

View File

@@ -137,15 +137,6 @@
"label": "Получивший",
"description": "Выберите участника, который получил этот доход."
},
"recurrenceRule": {
"label": "Expense Recurrence",
"description": "Select how often the expense should repeat.",
"none": "None",
"daily": "Daily",
"weekly": "Weekly",
"monthly": "Monthly"
},
"paidFor": {
"title": "Участники",
"description": "Выберите тех, между кем этот доход будет распределен."

View File

@@ -137,15 +137,6 @@
"label": "Отримав",
"description": "Оберіть учасника, який отримав дохід"
},
"recurrenceRule": {
"label": "Expense Recurrence",
"description": "Select how often the expense should repeat.",
"none": "None",
"daily": "Daily",
"weekly": "Weekly",
"monthly": "Monthly"
},
"paidFor": {
"title": "Учасники",
"description": "Виберіть тих, між ким цей дохід буде розподілено"

View File

@@ -137,15 +137,6 @@
"label": "接收到",
"description": "选择接收到这笔收入的群组成员。"
},
"recurrenceRule": {
"label": "Expense Recurrence",
"description": "Select how often the expense should repeat.",
"none": "None",
"daily": "Daily",
"weekly": "Weekly",
"monthly": "Monthly"
},
"paidFor": {
"title": "接收给",
"description": "选择收入是为谁而收。"

View File

@@ -18,7 +18,7 @@ export function ActiveUserBalance({ groupId, currency, expense }: Props) {
}
const balances = getBalances([expense])
let fmtBalance = <>You are not involved</>
let fmtBalance = <>{t('notInvolved')}</>
if (Object.hasOwn(balances, activeUserId)) {
const balance = balances[activeUserId]
let balanceDetail = <></>

View File

@@ -13,15 +13,27 @@ import { Fragment } from 'react'
type Expense = Awaited<ReturnType<typeof getGroupExpenses>>[number]
function Participants({ expense }: { expense: Expense }) {
function Participants({
expense,
participantCount,
}: {
expense: Expense
participantCount: number
}) {
const t = useTranslations('ExpenseCard')
const key = expense.amount > 0 ? 'paidBy' : 'receivedBy'
const paidFor = expense.paidFor.map((paidFor, index) => (
<Fragment key={index}>
{index !== 0 && <>, </>}
<strong>{paidFor.participant.name}</strong>
</Fragment>
))
const paidFor =
expense.paidFor.length == participantCount && participantCount >= 4 ? (
<strong>{t('everyone')}</strong>
) : (
expense.paidFor.map((paidFor, index) => (
<Fragment key={index}>
{index !== 0 && <>, </>}
<strong>{paidFor.participant.name}</strong>
</Fragment>
))
)
const participants = t.rich(key, {
strong: (chunks) => <strong>{chunks}</strong>,
paidBy: expense.paidBy.name,
@@ -35,9 +47,15 @@ type Props = {
expense: Expense
currency: string
groupId: string
participantCount: number
}
export function ExpenseCard({ expense, currency, groupId }: Props) {
export function ExpenseCard({
expense,
currency,
groupId,
participantCount,
}: Props) {
const router = useRouter()
const locale = useLocale()
@@ -61,7 +79,7 @@ export function ExpenseCard({ expense, currency, groupId }: Props) {
{expense.title}
</div>
<div className="text-xs text-muted-foreground">
<Participants expense={expense} />
<Participants expense={expense} participantCount={participantCount} />
</div>
<div className="text-xs text-muted-foreground">
<ActiveUserBalance {...{ groupId, currency, expense }} />

View File

@@ -474,7 +474,9 @@ export function ExpenseForm({
defaultValue={getSelectedPayer(field)}
>
<SelectTrigger>
<SelectValue placeholder="Select a participant" />
<SelectValue
placeholder={t(`${sExpense}.paidByField.placeholder`)}
/>
</SelectTrigger>
<SelectContent>
{group.participants.map(({ id, name }) => (

View File

@@ -172,6 +172,7 @@ const ExpenseListForSearch = ({
expense={expense}
currency={group.currency}
groupId={groupId}
participantCount={group.participants.length}
/>
))}
</div>

View File

@@ -1,3 +1,4 @@
import deepmerge from 'deepmerge'
import { getRequestConfig } from 'next-intl/server'
import { getUserLocale } from './lib/locale'
@@ -9,6 +10,7 @@ export const localeLabels = {
'de-DE': 'Deutsch',
'zh-CN': '简体中文',
'zh-TW': '正體中文',
'ja-JP': '日本語',
'pl-PL': 'Polski',
'ru-RU': 'Русский',
'it-IT': 'Italiano',
@@ -17,6 +19,8 @@ export const localeLabels = {
'tr-TR': 'Türkçe',
'pt-BR': 'Português Brasileiro',
'nl-NL': 'Nederlands',
ca: 'Català',
'cs-CZ': 'Česky',
} as const
export const locales: (keyof typeof localeLabels)[] = Object.keys(
@@ -28,9 +32,20 @@ export const defaultLocale: Locale = 'en-US'
export default getRequestConfig(async () => {
const locale = await getUserLocale()
const localeMessages = (await import(`../messages/${locale}.json`)).default
let messages: any
if (locale === defaultLocale) {
messages = localeMessages
} else {
messages = deepmerge(
(await import(`../messages/${defaultLocale}.json`)).default,
localeMessages,
) as any
}
return {
locale,
messages: (await import(`../messages/${locale}.json`)).default,
messages,
}
})