feat(i18n): add French and German translations
Full fr/de translations of the app (625 keys each), wired into the Settings language picker and the small-screen overflow test. Material ships fr/de localizations, so chrome resolves natively.
This commit is contained in:
parent
adf396d49d
commit
b04d45c4b8
15 changed files with 5455 additions and 12 deletions
|
|
@ -95,6 +95,8 @@
|
|||
"langEn": "English",
|
||||
"langPt": "Português",
|
||||
"langAst": "Asturianu",
|
||||
"langFr": "Français",
|
||||
"langDe": "Deutsch",
|
||||
"about": "Tocante a",
|
||||
"aboutText": "Inventariu llocal y cifráu pa simiente tradicional. AGPL-3.0.",
|
||||
"aboutOpen": "Tocante a Tane"
|
||||
|
|
|
|||
720
apps/app_seeds/lib/i18n/de.i18n.json
Normal file
720
apps/app_seeds/lib/i18n/de.i18n.json
Normal file
|
|
@ -0,0 +1,720 @@
|
|||
{
|
||||
"avatar": {
|
||||
"title": "Dein Foto oder Avatar",
|
||||
"fromPhoto": "Foto machen oder auswählen",
|
||||
"illustration": "Oder wähle eine Illustration",
|
||||
"remove": "Entfernen"
|
||||
},
|
||||
"favorites": {
|
||||
"title": "Favoriten",
|
||||
"empty": "Noch keine Favoriten. Speichere Angebote, die dir auf dem Markt gefallen.",
|
||||
"save": "Zu Favoriten speichern",
|
||||
"remove": "Aus Favoriten entfernen",
|
||||
"unavailable": "Nicht mehr verfügbar"
|
||||
},
|
||||
"seedSaving": {
|
||||
"title": "Samen vervielfältigen",
|
||||
"subtitle": "Was nötig ist, um die Sorte echt zu erhalten",
|
||||
"lifeCycle": "Zyklus",
|
||||
"cycleAnnual": "Einjährig",
|
||||
"cycleBiennial": "Zweijährig - Samen im 2. Jahr",
|
||||
"cyclePerennial": "Mehrjährig",
|
||||
"pollination": "Bestäubung",
|
||||
"pollSelf": "Selbstbestäubend",
|
||||
"pollCross": "Kreuzt mit anderen",
|
||||
"pollMixed": "Selbstbestäubend, manchmal Fremdbefruchtung",
|
||||
"byInsect": "durch Insekten",
|
||||
"byWind": "durch Wind",
|
||||
"isolation": "Abstand halten",
|
||||
"isolationRange": "{min}–{max} m zu anderen Sorten",
|
||||
"isolationSingle": "{min} m zu anderen Sorten",
|
||||
"plants": "Samen von mehreren Pflanzen sammeln",
|
||||
"plantsValue": "Von mindestens {n} Pflanzen",
|
||||
"processing": "Samen reinigen",
|
||||
"procDry": "Trockensamen (ausdreschen)",
|
||||
"procWet": "Feuchtsamen (fermentieren und spülen)",
|
||||
"difficulty": "Schwierigkeit",
|
||||
"diffEasy": "Leicht",
|
||||
"diffMedium": "Mittel",
|
||||
"diffHard": "Schwer",
|
||||
"advisory": "Allgemeine Hinweise - passe sie an dein Klima und deine Sorte an.",
|
||||
"sourcePrefix": "Quelle"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Dieser Monat",
|
||||
"filterChip": "Dieser Monat",
|
||||
"selfNote": "Was du in deinen Sorten notiert hast.",
|
||||
"nothing": "Nichts für {month} notiert."
|
||||
},
|
||||
"app": {
|
||||
"title": "Tane"
|
||||
},
|
||||
"bootstrap": {
|
||||
"failed": "Tane konnte nicht starten",
|
||||
"retry": "Versuchen"
|
||||
},
|
||||
"common": {
|
||||
"save": "Speichern",
|
||||
"cancel": "Abbrechen",
|
||||
"delete": "Löschen",
|
||||
"edit": "Bearbeiten",
|
||||
"type": "Typ",
|
||||
"comingSoon": "Bald",
|
||||
"offline": "Offline - Teilen ist unterbrochen"
|
||||
},
|
||||
"home": {
|
||||
"tagline": "Teile und baue lokale Samen an",
|
||||
"openMarket": "Markt",
|
||||
"openMarketSubtitle": "Entdecke und teile Samen in deiner Nähe",
|
||||
"yourInventory": "Dein Bestand",
|
||||
"yourInventorySubtitle": "Verwalte deine Samen"
|
||||
},
|
||||
"photo": {
|
||||
"camera": "Foto machen",
|
||||
"gallery": "Aus Galerie wählen",
|
||||
"setAsCover": "Als Deckblatt setzen",
|
||||
"isCover": "Deckblatt-Foto",
|
||||
"deleteConfirm": "Dieses Foto löschen?"
|
||||
},
|
||||
"menu": {
|
||||
"tagline": "deine Saatgutbank",
|
||||
"inventory": "Bestand",
|
||||
"market": "Markt",
|
||||
"profile": "Dein Profil",
|
||||
"chat": "Chat",
|
||||
"wishlist": "Favoriten",
|
||||
"following": "Gefolgt",
|
||||
"plantares": "Plantares",
|
||||
"sales": "Verkäufe",
|
||||
"calendar": "Kalender",
|
||||
"settings": "Einstellungen"
|
||||
},
|
||||
"settings": {
|
||||
"language": "Sprache",
|
||||
"systemLanguage": "Systemsprache",
|
||||
"langEs": "Español",
|
||||
"langEn": "English",
|
||||
"langPt": "Português",
|
||||
"langAst": "Asturianu",
|
||||
"about": "Über",
|
||||
"aboutText": "Lokale, verschlüsselte Saatgutbank für traditionelle Samen. AGPL-3.0.",
|
||||
"aboutOpen": "Über Tane",
|
||||
"langDe": "Deutsch",
|
||||
"langFr": "Français"
|
||||
},
|
||||
"backup": {
|
||||
"title": "Sicherung und Wiederherstellung",
|
||||
"autoBackupTitle": "Automatische Sicherungen",
|
||||
"autoBackupLast": "Letzte Sicherung {date}",
|
||||
"autoBackupNone": "Eine Kopie wird automatisch im Hintergrund gespeichert",
|
||||
"exportJson": "Sicherung speichern",
|
||||
"exportJsonSubtitle": "Eine komplette Kopie zum sicheren Aufbewahren, später wiederherstellen oder auf ein anderes Gerät übertragen",
|
||||
"importJson": "Sicherung wiederherstellen",
|
||||
"importJsonSubtitle": "Bringe eine gespeicherte Kopie zurück - nichts wird dupliziert",
|
||||
"exportCsv": "In eine Tabelle exportieren",
|
||||
"exportCsvSubtitle": "Eine einfache Liste für Excel oder LibreOffice - ohne Fotos",
|
||||
"importCsv": "Eine Liste importieren",
|
||||
"importCsvSubtitle": "Einträge aus einer Tabelle hinzufügen",
|
||||
"importConfirmTitle": "Sicherung wiederherstellen?",
|
||||
"importConfirmBody": "Einträge werden mit deinem Bestand zusammengeführt; wenn ein Eintrag auf beiden Seiten existiert, gewinnt die neuere Version. Nichts wird dupliziert.",
|
||||
"importCsvConfirmTitle": "Liste importieren?",
|
||||
"importCsvConfirmBody": "Jede Zeile wird als neuer Eintrag hinzugefügt. Dies führt nicht zusammen und ersetzt nicht, also bringt zweimaliger Import dieselbe Datei zweimal ein.",
|
||||
"importAction": "Importieren",
|
||||
"exportSaved": "Kopie gespeichert",
|
||||
"cancelled": "Abgebrochen",
|
||||
"importDone": "Importiert: {added} neu, {updated} aktualisiert",
|
||||
"importCsvDone": "{count} Einträge hinzugefügt",
|
||||
"importFailed": "Diese Datei konnte nicht als Tane-Kopie gelesen werden",
|
||||
"failed": "Etwas ist schief gelaufen",
|
||||
"recoveryTitle": "Dein Wiederherstellungscode",
|
||||
"recoverySubtitle": "Drucke ihn und bewahre ihn auf - er öffnet deine Kopien auf einem neuen Gerät",
|
||||
"recoveryIntro": "Dieser Code öffnet deine gespeicherten Kopien und stellt deine Bank auf jedem Gerät wieder her. Bewahre zwei Papierkopien an sicheren Orten auf, wie dein bestes Saatgut. Jeder, der ihn hat, kann deine Kopien lesen, also teile ihn mit niemandem.",
|
||||
"recoveryCopy": "Kopieren",
|
||||
"recoverySave": "Blatt speichern",
|
||||
"recoverySheetTitle": "Tane - dein Wiederherstellungsblatt",
|
||||
"recoveryPromptTitle": "Gib deinen Wiederherstellungscode ein",
|
||||
"recoveryPromptBody": "Diese Kopie wurde mit einem anderen Code gespeichert. Gib den Code von deinem Wiederherstellungsblatt ein, um sie zu öffnen.",
|
||||
"recoveryWrongCode": "Dieser Code öffnet diese Kopie nicht"
|
||||
},
|
||||
"about": {
|
||||
"title": "Über",
|
||||
"kanji": "種",
|
||||
"tagline": "Eine lokal speichernde, dezentralisierte App zum Verwalten und Teilen traditioneller Samen und Setzlinge.",
|
||||
"intro": "Tane (種, 'Samen' auf Japanisch) hilft Menschen und Gemeinschaften, eine freundliche Saatgutbank zu führen, zu entscheiden, was sie anbieten, und es lokal zu teilen - ohne einen zentralen Vermittler, der es kontrollieren, zensieren oder dafür bestraft werden könnte. Der Name kommt von tanemaki (種まき), 'säen / Samen verstreuen'. Das Ziel ist praktisch und politisch zugleich: traditionelle Samensorten unterstützen und gegen das Saatgutmonopol angehen.",
|
||||
"heritage": "Der Name würdigt alte japanische Traditionen der gegenseitigen Hilfe rund um Reis - yui (gemeinsame Gemeinschaftsarbeit) und tanomoshi (Gegenseitigkeitsfonds) - die das Papier Plantare inspiriert haben, die 'Gemeinschaftswährung für Samenaustausch' (BAH-Semillero, 2009, CC-BY-SA). Tane ist das digitale Plantare.",
|
||||
"version": "Version",
|
||||
"license": "Lizenz",
|
||||
"licenseValue": "AGPL-3.0",
|
||||
"website": "Webseite",
|
||||
"openSourceLicenses": "Open-Source-Lizenzen",
|
||||
"openSourceLicensesSubtitle": "Bibliotheken von Drittanbietern und ihre Lizenzen",
|
||||
"copyright": "© {years} Comunes Association, unter AGPLv3"
|
||||
},
|
||||
"intro": {
|
||||
"skip": "Überspringen",
|
||||
"next": "Nächste",
|
||||
"start": "Anfangen",
|
||||
"menuEntry": "Wie Tane funktioniert",
|
||||
"slides": {
|
||||
"welcome": {
|
||||
"title": "Der Samen, der dich hierher brachte",
|
||||
"body": "Jeder traditionelle Samen ist ein Brief, geschrieben von Tausenden von Generationen, weitergegeben von Hand zu Hand. Wir sind, was wir sind, dank dieses Teilens."
|
||||
},
|
||||
"inventory": {
|
||||
"title": "Deine Saatgutbank in deiner Tasche",
|
||||
"body": "Notiere, was du hast, von welchem Jahr, wie viel und woher es kam - mit dem Namen, den du verwendest. Ein Foto und ein Name reichen aus, um zu beginnen."
|
||||
},
|
||||
"privacy": {
|
||||
"title": "Deins und nur deins",
|
||||
"body": "Kein Konto, kein Internet, keine Tracker. Deine Daten leben verschlüsselt auf deinem Gerät, und nur das, das du wählst, wird je geteilt."
|
||||
},
|
||||
"share": {
|
||||
"title": "Teilen, wie es immer gemacht wurde",
|
||||
"body": "Biete an, was du übrig hast - Geschenk, Tausch oder Verkauf - und lass jemanden in deiner Nähe es finden. Nur ein ungefährer Abstand wird gezeigt, nie deine Adresse; du schließt das Geschäft von Angesicht zu Angesicht."
|
||||
},
|
||||
"plantare": {
|
||||
"title": "Säen ist vervielfältigen",
|
||||
"body": "Bei einem Plantare verspricht, wer einen Samen erhält, später etwas zurückzugeben. Und da Zurückgeben bedeutet, es anzubauen, vervielfältigt jede Leihe das Gemeingut."
|
||||
}
|
||||
}
|
||||
},
|
||||
"inventory": {
|
||||
"title": "Bestand",
|
||||
"searchHint": "Samen suchen",
|
||||
"empty": "Noch keine Samen. Tippe +, um deine erste hinzuzufügen.",
|
||||
"noMatches": "Keine Samen passen zu deinen Filtern.",
|
||||
"clearFilters": "Filter löschen",
|
||||
"uncategorized": "Unkategorisiert",
|
||||
"needsReproductionFilter": "Zu vermehren",
|
||||
"loadError": "Konnte deine Saatgutbank nicht öffnen. Sie war vielleicht beschäftigt - versuche es erneut.",
|
||||
"retry": "Versuchen"
|
||||
},
|
||||
"draft": {
|
||||
"capture": "Fotos erfassen",
|
||||
"captured": "{n} erfasst zum Katalogisieren",
|
||||
"triageTitle": "Zum Katalogisieren",
|
||||
"triageCount": "{n} zum Katalogisieren",
|
||||
"untitled": "Unbenannt",
|
||||
"nameField": "Benenne diesen Samen",
|
||||
"nameHint": "Was ist es?",
|
||||
"suggestFromPhoto": "Namen aus Foto vorschlagen",
|
||||
"discard": "Verwerfen"
|
||||
},
|
||||
"quickAdd": {
|
||||
"title": "Einen Samen hinzufügen",
|
||||
"labelField": "Name",
|
||||
"labelRequired": "Gib ihm einen Namen",
|
||||
"addPhoto": "Foto hinzufügen",
|
||||
"quantity": "Wie viel?",
|
||||
"more": "Mehr hinzufügen…",
|
||||
"save": "Speichern",
|
||||
"saveAndAddAnother": "Speichern und noch einen hinzufügen",
|
||||
"addedCount": "{n} hinzugefügt",
|
||||
"cancel": "Abbrechen"
|
||||
},
|
||||
"detail": {
|
||||
"notFound": "Dieser Samen ist nicht mehr hier.",
|
||||
"lots": "Partien",
|
||||
"noLots": "Noch keine Partien.",
|
||||
"names": "Auch bekannt als",
|
||||
"addName": "Namen hinzufügen",
|
||||
"links": "Links",
|
||||
"addLink": "Link hinzufügen",
|
||||
"linkUrl": "URL",
|
||||
"linkTitle": "Titel (optional)",
|
||||
"reference": "Mehr erfahren",
|
||||
"refGbif": "GBIF",
|
||||
"refWikipedia": "Wikipedia",
|
||||
"refWikispecies": "Wikispecies",
|
||||
"notes": "Notizen",
|
||||
"addLot": "Partie hinzufügen",
|
||||
"editLot": "Partie bearbeiten",
|
||||
"deleteConfirm": "Diesen Samen löschen?",
|
||||
"year": "Jahr {year}",
|
||||
"noYear": "Jahr unbekannt"
|
||||
},
|
||||
"germination": {
|
||||
"title": "Keimung",
|
||||
"add": "Test hinzufügen",
|
||||
"sampleSize": "Stichprobengröße",
|
||||
"germinated": "Gekeimt",
|
||||
"none": "Noch keine Keimtests.",
|
||||
"result": "{percent}%"
|
||||
},
|
||||
"viability": {
|
||||
"expiringSoon": "Verwende oder vervielfältige diese Saison",
|
||||
"expiringSoonYears": "Verwende oder vervielfältige diese Saison · hält ~{years} Jahre",
|
||||
"expired": "Über typische Keimfähigkeit hinaus - zu vervielfältigen",
|
||||
"expiredYears": "Über typische Keimfähigkeit (~{years} Jahre) - zu vervielfältigen"
|
||||
},
|
||||
"editVariety": {
|
||||
"title": "Samen bearbeiten",
|
||||
"name": "Name",
|
||||
"category": "Kategorie",
|
||||
"notes": "Notizen",
|
||||
"species": "Art (aus Katalog)",
|
||||
"speciesHint": "Durchsuche eine Art…",
|
||||
"speciesSuggested": "Aus dem Namen vorgeschlagen",
|
||||
"organic": "Bio",
|
||||
"organicHint": "Biologisch angebaut (Öko)"
|
||||
},
|
||||
"addLot": {
|
||||
"title": "Partie hinzufügen",
|
||||
"year": "Erntedate",
|
||||
"quantity": "Wie viel?",
|
||||
"amount": "Menge"
|
||||
},
|
||||
"harvest": {
|
||||
"pickTitle": "Wähle Monat / Jahr",
|
||||
"anyMonth": "Jeder Monat",
|
||||
"noDate": "Erntedate setzen",
|
||||
"monthNames": [
|
||||
"Januar",
|
||||
"Februar",
|
||||
"März",
|
||||
"April",
|
||||
"Mai",
|
||||
"Juni",
|
||||
"Juli",
|
||||
"August",
|
||||
"September",
|
||||
"Oktober",
|
||||
"November",
|
||||
"Dezember"
|
||||
]
|
||||
},
|
||||
"lotType": {
|
||||
"seed": "Samen",
|
||||
"plant": "Pflanze",
|
||||
"seedling": "Setzling",
|
||||
"tree": "Baum / Strauch",
|
||||
"bulb": "Zwiebel / Knolle",
|
||||
"cutting": "Steckling"
|
||||
},
|
||||
"presentation": {
|
||||
"title": "Verpackung",
|
||||
"none": "Unspezifisch",
|
||||
"pot": "Topf",
|
||||
"tray": "Tablett",
|
||||
"plug": "Topfplatte",
|
||||
"bareRoot": "Nacktwurzel",
|
||||
"rootBall": "Wurzelballen"
|
||||
},
|
||||
"provenance": {
|
||||
"section": "Woher es kommt",
|
||||
"seedsFrom": "Samen von",
|
||||
"seedsFromHint": "Wer sie anbaute oder gab",
|
||||
"place": "Ort",
|
||||
"placeHint": "Woher sie kommen (mit Gegend)",
|
||||
"addSeedsFrom": "Samen von",
|
||||
"addPlace": "Ort"
|
||||
},
|
||||
"abundance": {
|
||||
"add": "Wie viel ich habe",
|
||||
"title": "Wie viel ich habe",
|
||||
"none": "Nicht gesetzt",
|
||||
"plentyToShare": "Reichlich zum Teilen",
|
||||
"enoughToShare": "Genug zum etwas Teilen",
|
||||
"enoughForMe": "Genug für mich",
|
||||
"runningLow": "Wird knapp"
|
||||
},
|
||||
"share": {
|
||||
"add": "Teilst du es?",
|
||||
"title": "Teilst du es?",
|
||||
"nudge": "Du hast reichlich - du könntest etwas teilen.",
|
||||
"price": "Preis",
|
||||
"priceHint": "Lass es leer, um es später zu vereinbaren",
|
||||
"private": "Nur für mich",
|
||||
"gift": "Zum Verschenken",
|
||||
"exchange": "Zum Tauschen",
|
||||
"sell": "Zum Verkauf",
|
||||
"filterChip": "Ich teile",
|
||||
"printCatalog": "Drucke, was ich teile",
|
||||
"catalogTitle": "Was ich teile",
|
||||
"catalogSaved": "Katalog gespeichert",
|
||||
"cancelled": "Abgebrochen"
|
||||
},
|
||||
"printLabels": {
|
||||
"action": "Etiketten drucken",
|
||||
"title": "Etiketten drucken",
|
||||
"selectHint": "Wähle die Samen, für die du Etiketten drucken möchtest",
|
||||
"selectAll": "Alles auswählen",
|
||||
"selected": "{n} ausgewählt",
|
||||
"none": "Wähle zuerst Samen aus",
|
||||
"format": "Etikettengröße",
|
||||
"formatStickers": "Kleine Aufkleber",
|
||||
"formatStickersHint": "Viele kleine Etiketten pro Seite - zum Aufkleben auf Päckchen",
|
||||
"formatCards": "Große Karten",
|
||||
"formatCardsHint": "Weniger, größere Etiketten - für Gläser und Boxen",
|
||||
"count": "{n} Etiketten",
|
||||
"save": "Etiketten speichern",
|
||||
"saved": "Etiketten gespeichert",
|
||||
"cancelled": "Abgebrochen"
|
||||
},
|
||||
"cropCalendar": {
|
||||
"add": "Anbaukalender",
|
||||
"title": "Anbaukalender",
|
||||
"sow": "Säen",
|
||||
"transplant": "Pflanzen",
|
||||
"flowering": "Blüte",
|
||||
"fruiting": "Fruchtbildung",
|
||||
"seedHarvest": "Samenernte",
|
||||
"editorHint": "Notiere die typischen Monate für diese Sorte in deinem Gebiet - das sind deine eigenen Notizen.",
|
||||
"unset": "—"
|
||||
},
|
||||
"needsReproduction": {
|
||||
"label": "Diese Saison vermehren",
|
||||
"hint": "Baue es an, bevor der Samen ausgeht",
|
||||
"badge": "Zu vermehren"
|
||||
},
|
||||
"preservation": {
|
||||
"add": "Wie es aufbewahrt wird",
|
||||
"title": "Wie es aufbewahrt wird",
|
||||
"none": "Unspezifisch",
|
||||
"jarWithDesiccant": "Glas mit Trockenmittel",
|
||||
"glassJar": "Glasgefäß",
|
||||
"paperEnvelope": "Papierumschlag",
|
||||
"paperBag": "Papierbeutel",
|
||||
"plasticBag": "Plastikbeutel"
|
||||
},
|
||||
"conditionCheck": {
|
||||
"advanced": "Lagerung und Saatgutbank-Details",
|
||||
"title": "Lagerchecks",
|
||||
"add": "Check hinzufügen",
|
||||
"containers": "Gläser / Behälter",
|
||||
"desiccant": "Trockenmittel",
|
||||
"none": "Noch keine Lagerchecks.",
|
||||
"summary": "{count} Glas(gläser) · {state}"
|
||||
},
|
||||
"desiccant": {
|
||||
"none": "Keine",
|
||||
"add": "Eine hinzufügen",
|
||||
"replace": "Austauschen",
|
||||
"dry": "Blau - trocken",
|
||||
"fresh": "Gerade erneuert"
|
||||
},
|
||||
"unit": {
|
||||
"aFew": "einige",
|
||||
"some": "einige",
|
||||
"plenty": "viele",
|
||||
"pinch": "eine Prise",
|
||||
"handful": {
|
||||
"singular": "Handvoll",
|
||||
"plural": "Handvoll"
|
||||
},
|
||||
"teaspoon": {
|
||||
"singular": "Teelöffel",
|
||||
"plural": "Teelöffel"
|
||||
},
|
||||
"spoon": {
|
||||
"singular": "Löffel",
|
||||
"plural": "Löffel"
|
||||
},
|
||||
"cup": {
|
||||
"singular": "Tasse",
|
||||
"plural": "Tassen"
|
||||
},
|
||||
"jar": {
|
||||
"singular": "Glas",
|
||||
"plural": "Gläser"
|
||||
},
|
||||
"sack": {
|
||||
"singular": "Sack",
|
||||
"plural": "Säcke"
|
||||
},
|
||||
"packet": {
|
||||
"singular": "Päckchen",
|
||||
"plural": "Päckchen"
|
||||
},
|
||||
"cob": {
|
||||
"singular": "Kolben",
|
||||
"plural": "Kolben"
|
||||
},
|
||||
"pod": {
|
||||
"singular": "Schote",
|
||||
"plural": "Schoten"
|
||||
},
|
||||
"ear": {
|
||||
"singular": "Ähre",
|
||||
"plural": "Ähren"
|
||||
},
|
||||
"head": {
|
||||
"singular": "Kopf",
|
||||
"plural": "Köpfe"
|
||||
},
|
||||
"fruit": {
|
||||
"singular": "Frucht",
|
||||
"plural": "Früchte"
|
||||
},
|
||||
"bulb": {
|
||||
"singular": "Zwiebel",
|
||||
"plural": "Zwiebeln"
|
||||
},
|
||||
"tuber": {
|
||||
"singular": "Knolle",
|
||||
"plural": "Knollen"
|
||||
},
|
||||
"seedHead": {
|
||||
"singular": "Samenkopf",
|
||||
"plural": "Samenköpfe"
|
||||
},
|
||||
"bunch": {
|
||||
"singular": "Bund",
|
||||
"plural": "Bunde"
|
||||
},
|
||||
"plant": {
|
||||
"singular": "Pflanze",
|
||||
"plural": "Pflanzen"
|
||||
},
|
||||
"pot": {
|
||||
"singular": "Topf",
|
||||
"plural": "Töpfe"
|
||||
},
|
||||
"tray": {
|
||||
"singular": "Tablett",
|
||||
"plural": "Tabletts"
|
||||
},
|
||||
"seedling": {
|
||||
"singular": "Setzling",
|
||||
"plural": "Setzlinge"
|
||||
},
|
||||
"tree": {
|
||||
"singular": "Baum",
|
||||
"plural": "Bäume"
|
||||
},
|
||||
"cutting": {
|
||||
"singular": "Steckling",
|
||||
"plural": "Stecklinge"
|
||||
},
|
||||
"grams": {
|
||||
"singular": "Gramm",
|
||||
"plural": "Gramm"
|
||||
},
|
||||
"count": {
|
||||
"singular": "Samen",
|
||||
"plural": "Samen"
|
||||
}
|
||||
},
|
||||
"market": {
|
||||
"title": "Samen in deiner Nähe",
|
||||
"subtitle": "Was andere in der Nähe teilen",
|
||||
"notSetUp": "Teilen ist noch nicht eingerichtet",
|
||||
"notSetUpBody": "Aktiviere Teilen, um Samen zu sehen und mit Menschen in der Nähe zu teilen. Es bleibt ungefähr - deine Zone, nie deine genaue Adresse.",
|
||||
"setUp": "Teilen einrichten",
|
||||
"cantReach": "Kann die Gemeinschaftsserver gerade nicht erreichen",
|
||||
"cantReachBody": "Versuche es erneut, oder überprüfe die Server unter Erweiterte Einrichtung.",
|
||||
"retry": "Erneut versuchen",
|
||||
"setArea": "Stelle dein Gebiet ein",
|
||||
"setAreaBody": "Teile dem Markt ungefähr mit, wo du bist, um Samen in deiner Nähe zu sehen.",
|
||||
"searching": "Schaue nach deinem Gebiet…",
|
||||
"empty": "Noch keine Samen in deiner Nähe geteilt",
|
||||
"searchHint": "Suche nach diesen Samen",
|
||||
"noMatches": "Keine geteilten Samen passen zu deiner Suche",
|
||||
"near": "In deiner Nähe",
|
||||
"contact": "Nachricht",
|
||||
"mine": "Du",
|
||||
"configTitle": "Teilen-Einrichtung",
|
||||
"setupIntro": "Teilen mit Menschen in der Nähe ist optional. Gib einfach dein ungefähres Gebiet an - du bist bereits mit freigegebenen Gemeinschaftsservern verbunden, damit Leute das finden können, das du anbietest, ohne ein Unternehmen dazwischen.",
|
||||
"areaLabel": "Dein Gebiet",
|
||||
"areaHelp": "Absichtlich grob gehalten - deine Zone, nie ein genauer Punkt.",
|
||||
"areaSet": "Dein Gebiet ist gesetzt - grob, nie dein genauer Punkt",
|
||||
"areaNotSet": "Gebiet noch nicht gesetzt - verwende deinen Standort oder füge einen Code unter Erweiterte hinzu",
|
||||
"advanced": "Erweiterte",
|
||||
"areaCodeLabel": "Gebiets-Code",
|
||||
"areaCodeHint": "Ein kurzer Code wie sp3e9 - kein Ortsname",
|
||||
"serversLabel": "Gemeinschaftsserver",
|
||||
"serversHelp": "Eine Adresse pro Zeile (wss://…). Lass die Standardwerte, wenn du dir nicht sicher bist.",
|
||||
"serversAdvanced": "Füge einen weiteren Server hinzu",
|
||||
"save": "Speichern",
|
||||
"saved": "Gespeichert",
|
||||
"wanted": "Gesucht",
|
||||
"shareMine": "Meine Samen teilen",
|
||||
"sharedCount": "{n} Samen in der Nähe geteilt",
|
||||
"nothingToShare": "Markiere zuerst einige Samen zum Verschenken, Tauschen oder Verkaufen",
|
||||
"useLocation": "Meinen ungefähren Standort verwenden",
|
||||
"locationFailed": "Konnte deinen Standort nicht ermitteln - überprüfe, dass Standort aktiviert ist und die Berechtigung erteilt wurde",
|
||||
"queued": "Gespeichert - wir werden diese teilen, wenn du verbunden bist",
|
||||
"shareFailed": "Konnte die Gemeinschaftsserver nicht erreichen - deine Samen wurden nicht geteilt. Versuche es gleich erneut.",
|
||||
"rangeLabel": "Wie weit zum Suchen",
|
||||
"rangeNear": "Sehr nah",
|
||||
"rangeArea": "Um mich herum",
|
||||
"rangeRegion": "Meine Region",
|
||||
"sharedBy": "Geteilt von",
|
||||
"noProfile": "Diese Person hat noch kein Profil geteilt",
|
||||
"copyId": "Code kopieren",
|
||||
"idCopied": "Code kopiert",
|
||||
"photo": "Foto"
|
||||
},
|
||||
"profile": {
|
||||
"title": "Dein Profil",
|
||||
"name": "Anzeigename",
|
||||
"nameHint": "Wie dich andere sehen",
|
||||
"about": "Über",
|
||||
"aboutHint": "Eine kurze Zeile - was du anbaust, wo",
|
||||
"g1": "Ğ1-Adresse (optional)",
|
||||
"g1Hint": "Damit dich Leute in Ğ1 bezahlen können - getrennt von deinem Schlüssel",
|
||||
"yourId": "Deine Identität",
|
||||
"idHelp": "Teile dies, damit dich Leute erkennen",
|
||||
"copy": "Kopieren",
|
||||
"copied": "Kopiert",
|
||||
"save": "Speichern",
|
||||
"saved": "Profil gespeichert",
|
||||
"identities": "Deine Identitäten",
|
||||
"identitiesHelp": "Halte separate Identitäten - jede mit ihren eigenen Nachrichten und Kontakten. Alle kommen aus deiner einen Sicherung, also Wechsel fügt nichts hinzu, das man sich merken muss.",
|
||||
"identityLabel": "Identität {n}",
|
||||
"current": "In Gebrauch",
|
||||
"newIdentity": "Neue Identität",
|
||||
"switchTitle": "Identität wechseln?",
|
||||
"switchBody": "Nachrichten und Kontakte werden für jede Identität getrennt aufbewahrt. Du kannst jederzeit zurückwechseln.",
|
||||
"switchAction": "Wechsel"
|
||||
},
|
||||
"chatList": {
|
||||
"title": "Nachrichten",
|
||||
"empty": "Noch keine Gespräche. Schreibe jemanden vom Markt an."
|
||||
},
|
||||
"chat": {
|
||||
"title": "Chat",
|
||||
"hint": "Schreibe eine Nachricht…",
|
||||
"send": "Senden",
|
||||
"empty": "Noch keine Nachrichten - sag hallo",
|
||||
"offline": "Richte Teilen ein, um Nachrichten zu senden",
|
||||
"payG1": "In Ğ1 bezahlen",
|
||||
"g1Copied": "Ğ1-Adresse kopiert - füge sie in dein Portemonnaie ein",
|
||||
"today": "Heute",
|
||||
"yesterday": "Gestern",
|
||||
"sendError": "Konnte nicht senden - überprüfe deine Verbindung",
|
||||
"noLinks": "Links sind in Nachrichten nicht erlaubt"
|
||||
},
|
||||
"trust": {
|
||||
"none": "Noch niemand bürgt für sie",
|
||||
"count": "Von {n} bestätigt",
|
||||
"vouch": "Ich kenne diese Person",
|
||||
"vouched": "Du bürgst für sie",
|
||||
"circle": "In deinem Kreis"
|
||||
},
|
||||
"yourPeople": {
|
||||
"title": "Deine Leute",
|
||||
"help": "Menschen, die du kennst und für die du einstehst, und Menschen, die für dich einstehen.",
|
||||
"youVouchFor": "Du stehst ein für",
|
||||
"vouchesForYou": "Sie stehen für dich ein",
|
||||
"youVouchForEmpty": "Du stehst noch für niemanden ein. Wenn du jemanden triffst, öffne deinen Chat mit ihnen und tippe 'Ich kenne diese Person'.",
|
||||
"vouchesForYouEmpty": "Noch niemand steht für dich ein",
|
||||
"revoke": "Nicht mehr einstehen",
|
||||
"revokeConfirm": "Nicht mehr für diese Person einstehen?",
|
||||
"offline": "Du bist offline - versuche es, wenn du verbunden bist"
|
||||
},
|
||||
"ratings": {
|
||||
"rate": "Bewerte diese Person",
|
||||
"edit": "Bearbeite deine Bewertung",
|
||||
"commentHint": "Wie war es? (optional)",
|
||||
"fromYourCircle": "{n} von Leuten, die du kennst",
|
||||
"retract": "Entferne deine Bewertung",
|
||||
"saved": "Bewertung gespeichert"
|
||||
},
|
||||
"notifications": {
|
||||
"newMessageFrom": "Neue Nachricht von {name}"
|
||||
},
|
||||
"plantare": {
|
||||
"title": "Plantares",
|
||||
"help": "Ein Plantare ist ein Versprechen, einen Samen zu vervielfältigen und etwas zurückzugeben - wie eine Sorte von Hand zu Hand reist. Es ist kein Verkauf.",
|
||||
"add": "Verpflichtung hinzufügen",
|
||||
"empty": "Noch keine Verpflichtungen. Wenn du einen Samen mit dem Versprechen teilst oder erhältst, ihn anzubauen und etwas zurückzugeben, notiere es hier.",
|
||||
"iReturn": "Ich baue es an und gebe es zurück",
|
||||
"owedToMe": "Sie geben mir etwas zurück",
|
||||
"direction": "Wer baut an und gibt zurück",
|
||||
"counterparty": "Mit wem?",
|
||||
"counterpartyHint": "Eine Person oder ein Kollektiv (optional)",
|
||||
"owed": "Was kommt zurück?",
|
||||
"owedHint": "z.B. eine Handvoll nächste Saison (optional)",
|
||||
"note": "Notiz (optional)",
|
||||
"save": "Speichern",
|
||||
"markReturned": "Als zurückgegeben markieren",
|
||||
"markForgiven": "Absehen lassen",
|
||||
"reopen": "Erneut öffnen",
|
||||
"delete": "Entfernen",
|
||||
"statusReturned": "Zurückgegeben",
|
||||
"statusForgiven": "Erledigt",
|
||||
"openSection": "Offen",
|
||||
"settledSection": "Erledigt",
|
||||
"removeConfirm": "Diese Verpflichtung entfernen?"
|
||||
},
|
||||
"handover": {
|
||||
"title": "Samen wechselten den Besitzer",
|
||||
"help": "Ein Geschenk, ein Tausch oder ein Verkauf - notiere es auf, mit oder ohne Rückgabeversprechen.",
|
||||
"iGave": "Ich gab Samen",
|
||||
"iReceived": "Ich erhielt Samen",
|
||||
"whichLot": "Welche Partie?",
|
||||
"howMuch": "Wie viel?",
|
||||
"allOfIt": "Alles",
|
||||
"partOfIt": "Ein Teil",
|
||||
"paymentChip": "Geld wechselte den Besitzer",
|
||||
"promiseGave": "Sie geben mir Samen zurück",
|
||||
"promiseReceived": "Ich gebe Samen zurück"
|
||||
},
|
||||
"sale": {
|
||||
"title": "Verkäufe",
|
||||
"help": "Notiere Samen, die du verkauft oder gekauft hast - Geld, Ğ1 oder jede Währung. Ein eigenes Modell abseits Geschenk und Plantare. Es wird nie eine Kommission auf Samen erhoben.",
|
||||
"add": "Verkauf notieren",
|
||||
"empty": "Noch keine Verkäufe. Notiere hier, was du verkaufst oder kaufst.",
|
||||
"iSold": "Ich verkaufte",
|
||||
"iBought": "Ich kaufte",
|
||||
"direction": "Verkauft oder gekauft?",
|
||||
"counterparty": "Mit wem?",
|
||||
"counterpartyHint": "Eine Person oder ein Kollektiv (optional)",
|
||||
"amount": "Betrag",
|
||||
"currency": "Währung",
|
||||
"currencyHint": "€, Ğ1, Stunden… (optional)",
|
||||
"hours": "Stunden",
|
||||
"note": "Notiz (optional)",
|
||||
"save": "Speichern",
|
||||
"delete": "Entfernen",
|
||||
"removeConfirm": "Diesen Verkauf entfernen?"
|
||||
},
|
||||
"legal": {
|
||||
"title": "Datenschutz und Regeln",
|
||||
"subtitle": "Dein Datenschutz, die Marktregeln und die Legalität von Samen",
|
||||
"privacyTitle": "Dein Datenschutz",
|
||||
"privacyBody": "Tane funktioniert ohne Konto, und alles, das du notierst, bleibt auf deinem Gerät, verschlüsselt. Es gibt keine Werbung, keine Tracker und keinen Tane-Server.\n\nNichts wird geteilt, es sei denn, du wählst es: Wenn du ein Angebot oder dein Profil veröffentlichst oder eine Nachricht sendest, reist es durch Gemeinschaftsserver. Angebote tragen nur eine ungefähre Zone - nie deine Adresse.\n\nWas du veröffentlichst, ist öffentlich, und Kopien können bleiben, selbst nachdem du es entfernt hast - teile also mit Bedacht.",
|
||||
"rulesTitle": "Die Spielregeln",
|
||||
"rulesBody": "Tane ist ein Werkzeug, kein Laden: Austausch wird direkt zwischen Menschen vereinbart, und niemand nimmt eine Provision. Das bedeutet auch, dass du verantwortlich bist für das, das du anbietest und sendest.\n\nAuf dem Markt: Sei ehrlich mit deinen Samen, biete nur an, was du teilen darfst, behandle Menschen gut und spamme nicht. Du kannst jeden blockieren und Angebote oder Menschen melden, die die Regeln brechen - Meldungen werden auf den Gemeinschaftsservern bearbeitet.",
|
||||
"seedsTitle": "Über das Teilen von Samen",
|
||||
"seedsBody": "Das Verschenken und Tauschen von Samen zwischen Hobbyisten ist in den meisten Ländern weit verbreitet. Verkaufen kann anders sein: An vielen Orten ist der Verkauf von Samen nicht offiziell registrierter Sorten eingeschränkt - überprüfe deine örtlichen Vorschriften, bevor du einen Preis fragst.\n\nSamen in ein anderes Land zu schicken ist auch oft eingeschränkt, und kommerziell geschützte Sorten dürfen nicht ohne Genehmigung vermehrt werden. Im Zweifelsfall lieber lokal und lieber Geschenk.",
|
||||
"readFull": "Lese die vollständigen Dokumente online"
|
||||
},
|
||||
"marketGate": {
|
||||
"title": "Bevor du den Markt betrittst",
|
||||
"intro": "Der Markt ist ein gemeinsamer Raum zwischen Nachbarn. Wenn du fortfährst, akzeptierst du einige einfache Regeln:",
|
||||
"ruleHonest": "Sei ehrlich mit den Samen, die du anbietest",
|
||||
"ruleLegal": "Teile nur, was du teilen darfst, wo du lebst",
|
||||
"ruleRespect": "Behandle Menschen gut - kein Spam, kein Missbrauch",
|
||||
"publicNote": "Was du hier veröffentlichst, ist öffentlich, und Kopien können bleiben, selbst wenn du es später entfernst.",
|
||||
"viewLegal": "Datenschutz und Regeln",
|
||||
"accept": "Ich akzeptiere",
|
||||
"decline": "Nicht jetzt"
|
||||
},
|
||||
"report": {
|
||||
"offer": "Melde dieses Angebot",
|
||||
"person": "Melde diese Person",
|
||||
"title": "Melden",
|
||||
"prompt": "Was ist falsch?",
|
||||
"reasonSpam": "Spam oder Betrug",
|
||||
"reasonAbuse": "Beleidigend oder respektlos",
|
||||
"reasonIllegal": "Samen, die nicht angeboten werden sollten",
|
||||
"reasonOther": "Etwas anderes",
|
||||
"detailsHint": "Füge Details hinzu (optional)",
|
||||
"send": "Meldung senden",
|
||||
"sentHidden": "Meldung gesendet - du wirst dies nicht mehr sehen",
|
||||
"failed": "Konnte die Meldung nicht senden - überprüfe deine Verbindung",
|
||||
"alsoBlock": "Diese Person auch blockieren"
|
||||
},
|
||||
"block": {
|
||||
"action": "Diese Person blockieren",
|
||||
"confirmTitle": "Diese Person blockieren?",
|
||||
"confirmBody": "Du wirst ihre Angebote und Nachrichten nicht mehr sehen. Du kannst sie später unter Blockierte Leute in der Teilen-Einrichtung entsperren.",
|
||||
"confirm": "Blockieren",
|
||||
"blockedToast": "Blockiert - ihre Angebote und Nachrichten sind verborgen",
|
||||
"manageTitle": "Blockierte Leute",
|
||||
"manageEmpty": "Du hast niemanden blockiert",
|
||||
"unblock": "Entsperren"
|
||||
}
|
||||
}
|
||||
|
|
@ -96,6 +96,8 @@
|
|||
"langEn": "English",
|
||||
"langPt": "Português",
|
||||
"langAst": "Asturianu",
|
||||
"langFr": "Français",
|
||||
"langDe": "Deutsch",
|
||||
"about": "About",
|
||||
"aboutText": "Local-first, encrypted inventory for traditional seeds. AGPL-3.0.",
|
||||
"aboutOpen": "About Tane"
|
||||
|
|
|
|||
|
|
@ -95,6 +95,8 @@
|
|||
"langEs": "Español",
|
||||
"langEn": "English",
|
||||
"langPt": "Português",
|
||||
"langFr": "Français",
|
||||
"langDe": "Deutsch",
|
||||
"about": "Acerca de",
|
||||
"aboutText": "Inventario local y cifrado para semillas tradicionales. AGPL-3.0.",
|
||||
"aboutOpen": "Acerca de Tane"
|
||||
|
|
|
|||
720
apps/app_seeds/lib/i18n/fr.i18n.json
Normal file
720
apps/app_seeds/lib/i18n/fr.i18n.json
Normal file
|
|
@ -0,0 +1,720 @@
|
|||
{
|
||||
"avatar": {
|
||||
"title": "Votre photo ou avatar",
|
||||
"fromPhoto": "Prendre ou choisir une photo",
|
||||
"illustration": "Ou choisir une illustration",
|
||||
"remove": "Supprimer"
|
||||
},
|
||||
"favorites": {
|
||||
"title": "Favoris",
|
||||
"empty": "Pas encore de favoris. Enregistrez les offres que vous aimez du marché.",
|
||||
"save": "Ajouter aux favoris",
|
||||
"remove": "Retirer des favoris",
|
||||
"unavailable": "Plus disponible"
|
||||
},
|
||||
"seedSaving": {
|
||||
"title": "Conserver sa semence",
|
||||
"subtitle": "Ce qu'il faut pour garder la variété fidèle",
|
||||
"lifeCycle": "Cycle",
|
||||
"cycleAnnual": "Annuelle",
|
||||
"cycleBiennial": "Bisannuelle — graines la 2e année",
|
||||
"cyclePerennial": "Vivace",
|
||||
"pollination": "Pollinisation",
|
||||
"pollSelf": "Autoféconde",
|
||||
"pollCross": "Se croise avec d'autres",
|
||||
"pollMixed": "S'autoféconde, parfois se croise",
|
||||
"byInsect": "par les insectes",
|
||||
"byWind": "par le vent",
|
||||
"isolation": "À isoler",
|
||||
"isolationRange": "{min}–{max} m des autres variétés",
|
||||
"isolationSingle": "{min} m des autres variétés",
|
||||
"plants": "Préserver plusieurs plantes",
|
||||
"plantsValue": "D'au moins {n} plantes",
|
||||
"processing": "Nettoyer la semence",
|
||||
"procDry": "Semence sèche (dépiquage)",
|
||||
"procWet": "Semence humide (fermentation et rinçage)",
|
||||
"difficulty": "Difficulté",
|
||||
"diffEasy": "Facile",
|
||||
"diffMedium": "Moyen",
|
||||
"diffHard": "Difficile",
|
||||
"advisory": "Guide général — adaptez-le à votre climat et à votre variété.",
|
||||
"sourcePrefix": "Source"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Ce mois",
|
||||
"filterChip": "Ce mois",
|
||||
"selfNote": "Ce que vous avez noté dans vos variétés.",
|
||||
"nothing": "Rien noté pour {month}."
|
||||
},
|
||||
"app": {
|
||||
"title": "Tane"
|
||||
},
|
||||
"bootstrap": {
|
||||
"failed": "Tane n'a pas pu démarrer",
|
||||
"retry": "Réessayer"
|
||||
},
|
||||
"common": {
|
||||
"save": "Enregistrer",
|
||||
"cancel": "Annuler",
|
||||
"delete": "Supprimer",
|
||||
"edit": "Modifier",
|
||||
"type": "Type",
|
||||
"comingSoon": "À venir",
|
||||
"offline": "Vous êtes hors ligne — le partage est en pause"
|
||||
},
|
||||
"home": {
|
||||
"tagline": "Partagez et cultivez des graines locales",
|
||||
"openMarket": "Marché",
|
||||
"openMarketSubtitle": "Découvrez et partagez des graines à proximité",
|
||||
"yourInventory": "Votre inventaire",
|
||||
"yourInventorySubtitle": "Gérez vos graines"
|
||||
},
|
||||
"photo": {
|
||||
"camera": "Prendre une photo",
|
||||
"gallery": "Choisir de la galerie",
|
||||
"setAsCover": "Mettre en couverture",
|
||||
"isCover": "Photo de couverture",
|
||||
"deleteConfirm": "Supprimer cette photo ?"
|
||||
},
|
||||
"menu": {
|
||||
"tagline": "votre grainothèque",
|
||||
"inventory": "Inventaire",
|
||||
"market": "Marché",
|
||||
"profile": "Votre profil",
|
||||
"chat": "Messages",
|
||||
"wishlist": "Favoris",
|
||||
"following": "Abonnements",
|
||||
"plantares": "Plantares",
|
||||
"sales": "Ventes",
|
||||
"calendar": "Calendrier",
|
||||
"settings": "Paramètres"
|
||||
},
|
||||
"settings": {
|
||||
"language": "Langue",
|
||||
"systemLanguage": "Langue du système",
|
||||
"langEs": "Español",
|
||||
"langEn": "English",
|
||||
"langPt": "Português",
|
||||
"langAst": "Asturianu",
|
||||
"langFr": "Français",
|
||||
"langDe": "Deutsch",
|
||||
"about": "À propos",
|
||||
"aboutText": "Inventaire local-first et chiffré pour les semences traditionnelles. AGPL-3.0.",
|
||||
"aboutOpen": "À propos de Tane"
|
||||
},
|
||||
"backup": {
|
||||
"title": "Sauvegarde & restauration",
|
||||
"autoBackupTitle": "Sauvegardes automatiques",
|
||||
"autoBackupLast": "Dernière copie sauvegardée {date}",
|
||||
"autoBackupNone": "Une copie est conservée automatiquement en arrière-plan",
|
||||
"exportJson": "Enregistrer une sauvegarde",
|
||||
"exportJsonSubtitle": "Une copie complète à conserver précieusement, restaurer plus tard ou transférer sur un autre appareil",
|
||||
"importJson": "Restaurer une sauvegarde",
|
||||
"importJsonSubtitle": "Récupérez une copie enregistrée — rien ne sera dupliqué",
|
||||
"exportCsv": "Exporter vers un tableur",
|
||||
"exportCsvSubtitle": "Une liste simple pour Excel ou LibreOffice — sans photos",
|
||||
"importCsv": "Importer une liste",
|
||||
"importCsvSubtitle": "Ajoutez des entrées depuis un tableur",
|
||||
"importConfirmTitle": "Restaurer une sauvegarde ?",
|
||||
"importConfirmBody": "Les entrées fusionnent avec votre inventaire ; si une entrée existe des deux côtés, c'est la version la plus récente qui gagne. Rien ne sera dupliqué.",
|
||||
"importCsvConfirmTitle": "Importer une liste ?",
|
||||
"importCsvConfirmBody": "Chaque ligne est ajoutée comme une nouvelle entrée. Cela ne fusionne ni ne remplace, donc importer le même fichier deux fois l'ajoute deux fois.",
|
||||
"importAction": "Importer",
|
||||
"exportSaved": "Copie enregistrée",
|
||||
"cancelled": "Annulé",
|
||||
"importDone": "Importé : {added} nouvelles, {updated} actualisées",
|
||||
"importCsvDone": "Ajoutées {count} entrées",
|
||||
"importFailed": "Ce fichier n'a pas pu être lu comme une sauvegarde Tane",
|
||||
"failed": "Quelque chose s'est mal passé",
|
||||
"recoveryTitle": "Votre code de récupération",
|
||||
"recoverySubtitle": "Imprimez-le et gardez-le en sécurité — il ouvre vos sauvegardes sur un nouvel appareil",
|
||||
"recoveryIntro": "Ce code ouvre vos sauvegardes et retrouve votre grainothèque sur n'importe quel appareil. Conservez deux copies imprimées en lieux sûrs, comme votre meilleure graine. Quiconque l'obtient peut lire vos sauvegardes, alors ne le partagez avec personne.",
|
||||
"recoveryCopy": "Copier",
|
||||
"recoverySave": "Enregistrer la feuille",
|
||||
"recoverySheetTitle": "Tane — votre feuille de récupération",
|
||||
"recoveryPromptTitle": "Entrez votre code de récupération",
|
||||
"recoveryPromptBody": "Cette sauvegarde a été enregistrée avec un autre code. Entrez le code de votre feuille de récupération pour l'ouvrir.",
|
||||
"recoveryWrongCode": "Ce code n'ouvre pas cette sauvegarde"
|
||||
},
|
||||
"about": {
|
||||
"title": "À propos",
|
||||
"kanji": "種",
|
||||
"tagline": "Une app local-first et décentralisée pour gérer et partager des semences et plantules traditionnelles.",
|
||||
"intro": "Tane (種, « graine » en japonais) aide les gens et les collectifs à gérer un inventaire bienveillant de leur grainothèque, décider ce qu'ils offrent et le partager localement — sans intermédiaire central qui pourrait contrôler, censurer ou être poursuivi pour cela. Son nom vient de tanemaki (種まき), « semer / disperser des graines ». L'objectif est à la fois pratique et politique : soutenir les variétés de semences traditionnelles et résister au monopole des semenciers.",
|
||||
"heritage": "Le nom honore les anciennes traditions d'entraide japonaises autour du riz — yui (travail communautaire partagé) et tanomoshi (caisses de secours mutuel) — qui ont inspiré le document Plantare, la « monnaie communautaire pour l'échange de semences » (BAH-Semillero, 2009, CC-BY-SA). Tane est le Plantare numérique.",
|
||||
"version": "Version",
|
||||
"license": "Licence",
|
||||
"licenseValue": "AGPL-3.0",
|
||||
"website": "Site web",
|
||||
"openSourceLicenses": "Licences open source",
|
||||
"openSourceLicensesSubtitle": "Bibliothèques tiers et leurs licences",
|
||||
"copyright": "© {years} Association Comunes, sous AGPLv3"
|
||||
},
|
||||
"intro": {
|
||||
"skip": "Passer",
|
||||
"next": "Suivant",
|
||||
"start": "Commencer",
|
||||
"menuEntry": "Comment fonctionne Tane",
|
||||
"slides": {
|
||||
"welcome": {
|
||||
"title": "La graine qui vous a menés ici",
|
||||
"body": "Chaque semence traditionnelle est une lettre écrite par des milliers de générations, passée de main en main. Nous sommes ce que nous sommes grâce à ce partage."
|
||||
},
|
||||
"inventory": {
|
||||
"title": "Votre grainothèque, dans votre poche",
|
||||
"body": "Notez ce que vous avez, de quelle année, combien et d'où ça vient — avec le nom que vous utilisez. Une photo et un nom suffisent pour commencer."
|
||||
},
|
||||
"privacy": {
|
||||
"title": "Vôtre, et uniquement vôtre",
|
||||
"body": "Pas de compte, pas d'internet, pas de trackers. Vos données vivent chiffrées sur votre appareil, et seul ce que vous choisissez est partagé."
|
||||
},
|
||||
"share": {
|
||||
"title": "Partager, comme cela s'est toujours fait",
|
||||
"body": "Offrez ce que vous avez en excédent — cadeau, échange ou vente — et laissez quelqu'un à proximité le trouver. Seule la distance approximative est affichée, jamais votre adresse ; vous fermez le marché en personne."
|
||||
},
|
||||
"plantare": {
|
||||
"title": "Semer c'est multiplier",
|
||||
"body": "Avec un Plantare, celui qui reçoit la graine promet d'en renvoyer plus tard. Et comme renvoyer signifie la cultiver, chaque prêt multiplie le bien commun."
|
||||
}
|
||||
}
|
||||
},
|
||||
"inventory": {
|
||||
"title": "Inventaire",
|
||||
"searchHint": "Rechercher des graines",
|
||||
"empty": "Pas encore de graines. Appuyez sur + pour ajouter votre première.",
|
||||
"noMatches": "Aucune graine ne correspond à vos filtres.",
|
||||
"clearFilters": "Effacer les filtres",
|
||||
"uncategorized": "Non catégorisé",
|
||||
"needsReproductionFilter": "À multiplier",
|
||||
"loadError": "Impossible d'ouvrir votre grainothèque. Elle était peut-être occupée — réessayez.",
|
||||
"retry": "Réessayer"
|
||||
},
|
||||
"draft": {
|
||||
"capture": "Capturer des photos",
|
||||
"captured": "{n} capturée(s) à cataloguer",
|
||||
"triageTitle": "À cataloguer",
|
||||
"triageCount": "{n} à cataloguer",
|
||||
"untitled": "Sans titre",
|
||||
"nameField": "Nommez cette graine",
|
||||
"nameHint": "Qu'est-ce que c'est ?",
|
||||
"suggestFromPhoto": "Suggérer un nom depuis la photo",
|
||||
"discard": "Abandonner"
|
||||
},
|
||||
"quickAdd": {
|
||||
"title": "Ajouter une graine",
|
||||
"labelField": "Nom",
|
||||
"labelRequired": "Donnez-lui un nom",
|
||||
"addPhoto": "Ajouter une photo",
|
||||
"quantity": "Combien ?",
|
||||
"more": "Ajouter plus…",
|
||||
"save": "Enregistrer",
|
||||
"saveAndAddAnother": "Enregistrer et ajouter une autre",
|
||||
"addedCount": "{n} ajoutée(s)",
|
||||
"cancel": "Annuler"
|
||||
},
|
||||
"detail": {
|
||||
"notFound": "Cette graine n'est plus ici.",
|
||||
"lots": "Lots",
|
||||
"noLots": "Pas encore de lots.",
|
||||
"names": "Aussi connue sous le nom de",
|
||||
"addName": "Ajouter un nom",
|
||||
"links": "Liens",
|
||||
"addLink": "Ajouter un lien",
|
||||
"linkUrl": "URL",
|
||||
"linkTitle": "Titre (optionnel)",
|
||||
"reference": "En savoir plus",
|
||||
"refGbif": "GBIF",
|
||||
"refWikipedia": "Wikipedia",
|
||||
"refWikispecies": "Wikispecies",
|
||||
"notes": "Notes",
|
||||
"addLot": "Ajouter un lot",
|
||||
"editLot": "Modifier le lot",
|
||||
"deleteConfirm": "Supprimer cette graine ?",
|
||||
"year": "Année {year}",
|
||||
"noYear": "Année inconnue"
|
||||
},
|
||||
"germination": {
|
||||
"title": "Germination",
|
||||
"add": "Ajouter un test",
|
||||
"sampleSize": "Échantillon",
|
||||
"germinated": "Germinées",
|
||||
"none": "Pas encore de tests de germination.",
|
||||
"result": "{percent}%"
|
||||
},
|
||||
"viability": {
|
||||
"expiringSoon": "Utilisez-la ou multipliez-la cette saison",
|
||||
"expiringSoonYears": "Utilisez-la ou multipliez-la cette saison · se garde ~{years} an(s)",
|
||||
"expired": "Au-delà de la viabilité typique — à multiplier",
|
||||
"expiredYears": "Au-delà de la viabilité typique (~{years} an(s)) — à multiplier"
|
||||
},
|
||||
"editVariety": {
|
||||
"title": "Modifier la graine",
|
||||
"name": "Nom",
|
||||
"category": "Catégorie",
|
||||
"notes": "Notes",
|
||||
"species": "Espèce (du catalogue)",
|
||||
"speciesHint": "Rechercher une espèce…",
|
||||
"speciesSuggested": "Suggérée par le nom",
|
||||
"organic": "Biologique",
|
||||
"organicHint": "Cultivée de manière biologique (bio)"
|
||||
},
|
||||
"addLot": {
|
||||
"title": "Ajouter un lot",
|
||||
"year": "Date de récolte",
|
||||
"quantity": "Combien ?",
|
||||
"amount": "Quantité"
|
||||
},
|
||||
"harvest": {
|
||||
"pickTitle": "Sélectionnez le mois / l'année",
|
||||
"anyMonth": "N'importe quel mois",
|
||||
"noDate": "Définir la date de récolte",
|
||||
"monthNames": [
|
||||
"janvier",
|
||||
"février",
|
||||
"mars",
|
||||
"avril",
|
||||
"mai",
|
||||
"juin",
|
||||
"juillet",
|
||||
"août",
|
||||
"septembre",
|
||||
"octobre",
|
||||
"novembre",
|
||||
"décembre"
|
||||
]
|
||||
},
|
||||
"lotType": {
|
||||
"seed": "Graines",
|
||||
"plant": "Plante",
|
||||
"seedling": "Plantule",
|
||||
"tree": "Arbre / arbuste",
|
||||
"bulb": "Bulbe / tubercule",
|
||||
"cutting": "Bouture"
|
||||
},
|
||||
"presentation": {
|
||||
"title": "Emballage",
|
||||
"none": "Non spécifié",
|
||||
"pot": "Pot",
|
||||
"tray": "Plateau",
|
||||
"plug": "Alvéole",
|
||||
"bareRoot": "Racines nues",
|
||||
"rootBall": "Motte"
|
||||
},
|
||||
"provenance": {
|
||||
"section": "D'où elle vient",
|
||||
"seedsFrom": "Graines de",
|
||||
"seedsFromHint": "Qui les a cultivées ou données",
|
||||
"place": "Lieu",
|
||||
"placeHint": "D'où elles viennent (avec région)",
|
||||
"addSeedsFrom": "Graines de",
|
||||
"addPlace": "Lieu"
|
||||
},
|
||||
"abundance": {
|
||||
"add": "Combien j'en ai",
|
||||
"title": "Combien j'en ai",
|
||||
"none": "Non défini",
|
||||
"plentyToShare": "De quoi partager généreusement",
|
||||
"enoughToShare": "Assez pour partager un peu",
|
||||
"enoughForMe": "Assez pour moi",
|
||||
"runningLow": "Ça commence à manquer"
|
||||
},
|
||||
"share": {
|
||||
"add": "La partagez-vous ?",
|
||||
"title": "La partagez-vous ?",
|
||||
"nudge": "Vous en avez beaucoup — vous pourriez en partager.",
|
||||
"price": "Prix",
|
||||
"priceHint": "Laissez vide pour en discuter plus tard",
|
||||
"private": "Juste pour moi",
|
||||
"gift": "À donner",
|
||||
"exchange": "À échanger",
|
||||
"sell": "À vendre",
|
||||
"filterChip": "Je partage",
|
||||
"printCatalog": "Imprimer ce que je partage",
|
||||
"catalogTitle": "Ce que je partage",
|
||||
"catalogSaved": "Catalogue enregistré",
|
||||
"cancelled": "Annulé"
|
||||
},
|
||||
"printLabels": {
|
||||
"action": "Imprimer les étiquettes",
|
||||
"title": "Imprimer les étiquettes",
|
||||
"selectHint": "Choisissez les graines pour lesquelles imprimer les étiquettes",
|
||||
"selectAll": "Tout sélectionner",
|
||||
"selected": "{n} sélectionnée(s)",
|
||||
"none": "Sélectionnez d'abord les graines",
|
||||
"format": "Taille d'étiquette",
|
||||
"formatStickers": "Petits autocollants",
|
||||
"formatStickersHint": "Beaucoup de petites étiquettes par page — à coller sur les sachets",
|
||||
"formatCards": "Grandes cartes",
|
||||
"formatCardsHint": "Moins d'étiquettes, plus grandes — pour les pots et boîtes",
|
||||
"count": "{n} étiquette(s)",
|
||||
"save": "Enregistrer les étiquettes",
|
||||
"saved": "Étiquettes enregistrées",
|
||||
"cancelled": "Annulé"
|
||||
},
|
||||
"cropCalendar": {
|
||||
"add": "Calendrier de culture",
|
||||
"title": "Calendrier de culture",
|
||||
"sow": "Semis",
|
||||
"transplant": "Repiquage",
|
||||
"flowering": "Floraison",
|
||||
"fruiting": "Fructification",
|
||||
"seedHarvest": "Récolte de semences",
|
||||
"editorHint": "Notez les mois typiques pour cette variété dans votre région — ce sont vos propres notes.",
|
||||
"unset": "—"
|
||||
},
|
||||
"needsReproduction": {
|
||||
"label": "À multiplier cette saison",
|
||||
"hint": "Cultivez-la avant que la semence ne manque",
|
||||
"badge": "À multiplier"
|
||||
},
|
||||
"preservation": {
|
||||
"add": "Comment c'est conservé",
|
||||
"title": "Comment c'est conservé",
|
||||
"none": "Non spécifié",
|
||||
"jarWithDesiccant": "Pot avec dessiccant",
|
||||
"glassJar": "Pot en verre",
|
||||
"paperEnvelope": "Enveloppe en papier",
|
||||
"paperBag": "Sac en papier",
|
||||
"plasticBag": "Sac en plastique"
|
||||
},
|
||||
"conditionCheck": {
|
||||
"advanced": "Conservation et détails de la grainothèque",
|
||||
"title": "Contrôles de conservation",
|
||||
"add": "Ajouter un contrôle",
|
||||
"containers": "Pots / récipients",
|
||||
"desiccant": "Dessiccant",
|
||||
"none": "Pas encore de contrôles.",
|
||||
"summary": "{count} pot(s) · {state}"
|
||||
},
|
||||
"desiccant": {
|
||||
"none": "Aucun",
|
||||
"add": "En ajouter",
|
||||
"replace": "À changer",
|
||||
"dry": "Bleu — sec",
|
||||
"fresh": "Fraîchement mis"
|
||||
},
|
||||
"unit": {
|
||||
"aFew": "quelques",
|
||||
"some": "quelques",
|
||||
"plenty": "beaucoup",
|
||||
"pinch": "une pincée",
|
||||
"handful": {
|
||||
"singular": "poignée",
|
||||
"plural": "poignées"
|
||||
},
|
||||
"teaspoon": {
|
||||
"singular": "cuillère à café",
|
||||
"plural": "cuillères à café"
|
||||
},
|
||||
"spoon": {
|
||||
"singular": "cuillère",
|
||||
"plural": "cuillères"
|
||||
},
|
||||
"cup": {
|
||||
"singular": "tasse",
|
||||
"plural": "tasses"
|
||||
},
|
||||
"jar": {
|
||||
"singular": "pot",
|
||||
"plural": "pots"
|
||||
},
|
||||
"sack": {
|
||||
"singular": "sac",
|
||||
"plural": "sacs"
|
||||
},
|
||||
"packet": {
|
||||
"singular": "sachet",
|
||||
"plural": "sachets"
|
||||
},
|
||||
"cob": {
|
||||
"singular": "épi",
|
||||
"plural": "épis"
|
||||
},
|
||||
"pod": {
|
||||
"singular": "gousse",
|
||||
"plural": "gousses"
|
||||
},
|
||||
"ear": {
|
||||
"singular": "épi",
|
||||
"plural": "épis"
|
||||
},
|
||||
"head": {
|
||||
"singular": "capitule",
|
||||
"plural": "capitules"
|
||||
},
|
||||
"fruit": {
|
||||
"singular": "fruit",
|
||||
"plural": "fruits"
|
||||
},
|
||||
"bulb": {
|
||||
"singular": "bulbe",
|
||||
"plural": "bulbes"
|
||||
},
|
||||
"tuber": {
|
||||
"singular": "tubercule",
|
||||
"plural": "tubercules"
|
||||
},
|
||||
"seedHead": {
|
||||
"singular": "tête de graines",
|
||||
"plural": "têtes de graines"
|
||||
},
|
||||
"bunch": {
|
||||
"singular": "botte",
|
||||
"plural": "bottes"
|
||||
},
|
||||
"plant": {
|
||||
"singular": "plante",
|
||||
"plural": "plantes"
|
||||
},
|
||||
"pot": {
|
||||
"singular": "pot",
|
||||
"plural": "pots"
|
||||
},
|
||||
"tray": {
|
||||
"singular": "plateau",
|
||||
"plural": "plateaux"
|
||||
},
|
||||
"seedling": {
|
||||
"singular": "plantule",
|
||||
"plural": "plantules"
|
||||
},
|
||||
"tree": {
|
||||
"singular": "arbre",
|
||||
"plural": "arbres"
|
||||
},
|
||||
"cutting": {
|
||||
"singular": "bouture",
|
||||
"plural": "boutures"
|
||||
},
|
||||
"grams": {
|
||||
"singular": "gramme",
|
||||
"plural": "grammes"
|
||||
},
|
||||
"count": {
|
||||
"singular": "graine",
|
||||
"plural": "graines"
|
||||
}
|
||||
},
|
||||
"market": {
|
||||
"title": "Graines près de vous",
|
||||
"subtitle": "Ce que les autres partagent à proximité",
|
||||
"notSetUp": "Le partage n'est pas encore configuré",
|
||||
"notSetUpBody": "Activez le partage pour voir et donner des graines aux gens à proximité. C'est volontairement approximatif — votre zone, jamais votre adresse exacte.",
|
||||
"setUp": "Configurer le partage",
|
||||
"cantReach": "Impossible de se connecter aux serveurs communautaires en ce moment",
|
||||
"cantReachBody": "Réessayez, ou vérifiez les serveurs sous Configuration avancée.",
|
||||
"retry": "Réessayer",
|
||||
"setArea": "Définir votre zone",
|
||||
"setAreaBody": "Dites au marché approximativement où vous êtes pour voir les graines à proximité.",
|
||||
"searching": "Recherche autour de votre zone…",
|
||||
"empty": "Aucune graine n'est encore partagée près de vous",
|
||||
"searchHint": "Rechercher parmi ces graines",
|
||||
"noMatches": "Aucune graine partagée ne correspond à votre recherche",
|
||||
"near": "Près de vous",
|
||||
"contact": "Message",
|
||||
"mine": "Vous",
|
||||
"configTitle": "Configuration du partage",
|
||||
"setupIntro": "Le partage avec les gens à proximité est optionnel. Définissez simplement votre zone approximative — vous êtes déjà connectés aux serveurs communautaires partagés pour que les gens trouvent ce que vous offrez, sans aucune entreprise au milieu.",
|
||||
"areaLabel": "Votre zone",
|
||||
"areaHelp": "Gardée approximative volontairement — votre zone, jamais un point exact.",
|
||||
"areaSet": "Votre zone est définie — approximative, jamais votre point exact",
|
||||
"areaNotSet": "Zone non définie — utilisez votre position, ou ajoutez un code sous Avancé",
|
||||
"advanced": "Avancé",
|
||||
"areaCodeLabel": "Code de zone",
|
||||
"areaCodeHint": "Un code court comme sp3e9 — pas un nom de lieu",
|
||||
"serversLabel": "Serveurs communautaires",
|
||||
"serversHelp": "Une adresse par ligne (wss://…). Laissez les valeurs par défaut si vous n'êtes pas sûr.",
|
||||
"serversAdvanced": "Ajouter un autre serveur",
|
||||
"save": "Enregistrer",
|
||||
"saved": "Enregistré",
|
||||
"wanted": "Recherché",
|
||||
"shareMine": "Partager mes graines",
|
||||
"sharedCount": "{n} graines partagées",
|
||||
"nothingToShare": "Marquez d'abord certaines graines à donner, échanger ou vendre",
|
||||
"useLocation": "Utiliser ma position approximative",
|
||||
"locationFailed": "Impossible d'obtenir votre position — vérifiez que la localisation est activée et la permission accordée",
|
||||
"queued": "Enregistré — nous partagerons cela quand vous serez connecté",
|
||||
"shareFailed": "Impossible de se connecter aux serveurs communautaires — vos graines n'ont pas été partagées. Réessayez dans un instant.",
|
||||
"rangeLabel": "Jusqu'où chercher",
|
||||
"rangeNear": "Très proche",
|
||||
"rangeArea": "Autour d'ici",
|
||||
"rangeRegion": "Ma région",
|
||||
"sharedBy": "Partagé par",
|
||||
"noProfile": "Cette personne n'a pas encore partagé son profil",
|
||||
"copyId": "Copier le code",
|
||||
"idCopied": "Code copié",
|
||||
"photo": "Photo"
|
||||
},
|
||||
"profile": {
|
||||
"title": "Votre profil",
|
||||
"name": "Nom d'affichage",
|
||||
"nameHint": "Comment les autres vous voient",
|
||||
"about": "À propos",
|
||||
"aboutHint": "Une courte ligne — ce que vous cultivez, où",
|
||||
"g1": "Adresse Ğ1 (optionnel)",
|
||||
"g1Hint": "Pour que les gens puissent vous payer en Ğ1 — séparé de votre clé",
|
||||
"yourId": "Votre identité",
|
||||
"idHelp": "Partagez-la pour que les gens vous reconnaissent",
|
||||
"copy": "Copier",
|
||||
"copied": "Copié",
|
||||
"save": "Enregistrer",
|
||||
"saved": "Profil enregistré",
|
||||
"identities": "Vos identités",
|
||||
"identitiesHelp": "Gardez des identités séparées — chacune avec ses propres messages et contacts. Elles proviennent toutes de votre unique sauvegarde, donc changer n'ajoute rien à retenir.",
|
||||
"identityLabel": "Identité {n}",
|
||||
"current": "En cours d'utilisation",
|
||||
"newIdentity": "Nouvelle identité",
|
||||
"switchTitle": "Changer d'identité ?",
|
||||
"switchBody": "Les messages et contacts sont conservés séparément pour chaque identité. Vous pouvez revenir en arrière à tout moment.",
|
||||
"switchAction": "Changer"
|
||||
},
|
||||
"chatList": {
|
||||
"title": "Messages",
|
||||
"empty": "Pas encore de conversations. Envoyez un message à quelqu'un depuis le marché."
|
||||
},
|
||||
"chat": {
|
||||
"title": "Messages",
|
||||
"hint": "Écrivez un message…",
|
||||
"send": "Envoyer",
|
||||
"empty": "Pas encore de messages — dites bonjour",
|
||||
"offline": "Configurez le partage pour envoyer des messages",
|
||||
"payG1": "Payer en Ğ1",
|
||||
"g1Copied": "Adresse Ğ1 copiée — collez-la dans votre portefeuille",
|
||||
"today": "Aujourd'hui",
|
||||
"yesterday": "Hier",
|
||||
"sendError": "Impossible d'envoyer — vérifiez votre connexion",
|
||||
"noLinks": "Les liens ne sont pas autorisés dans les messages"
|
||||
},
|
||||
"trust": {
|
||||
"none": "Personne ne les cautionne encore",
|
||||
"count": "Cautionnée par {n}",
|
||||
"vouch": "Je connais cette personne",
|
||||
"vouched": "Vous la cautionnez",
|
||||
"circle": "Dans votre cercle"
|
||||
},
|
||||
"yourPeople": {
|
||||
"title": "Vos contacts",
|
||||
"help": "Les gens que vous connaissez et cautionnez, et les gens qui vous cautionnent.",
|
||||
"youVouchFor": "Vous cautionnez",
|
||||
"vouchesForYou": "Ils vous cautionnent",
|
||||
"youVouchForEmpty": "Vous ne cautionnez personne pour l'instant. Quand vous rencontrez quelqu'un, ouvrez votre conversation avec lui et appuyez sur « Je connais cette personne ».",
|
||||
"vouchesForYouEmpty": "Personne ne vous cautionne pour l'instant",
|
||||
"revoke": "Arrêter de cautionner",
|
||||
"revokeConfirm": "Arrêter de cautionner cette personne ?",
|
||||
"offline": "Vous êtes hors ligne — réessayez quand vous êtes connecté"
|
||||
},
|
||||
"ratings": {
|
||||
"rate": "Évaluer cette personne",
|
||||
"edit": "Modifier votre évaluation",
|
||||
"commentHint": "Comment ça s'est passé ? (optionnel)",
|
||||
"fromYourCircle": "{n} de gens que vous connaissez",
|
||||
"retract": "Retirer votre évaluation",
|
||||
"saved": "Évaluation enregistrée"
|
||||
},
|
||||
"notifications": {
|
||||
"newMessageFrom": "Nouveau message de {name}"
|
||||
},
|
||||
"plantare": {
|
||||
"title": "Plantares",
|
||||
"help": "Un Plantare est un engagement à multiplier une semence et en rendre une partie — comment une variété continue son voyage de main en main. Ce n'est pas une vente.",
|
||||
"add": "Ajouter un engagement",
|
||||
"empty": "Pas encore d'engagements. Quand vous partagez ou recevez une graine avec la promesse de la cultiver et d'en renvoyer une partie, notez-le ici.",
|
||||
"iReturn": "Je la multiplie et la rends",
|
||||
"owedToMe": "Ils m'en renvoient",
|
||||
"direction": "Qui multiplie et rend",
|
||||
"counterparty": "Avec qui ?",
|
||||
"counterpartyHint": "Une personne ou un collectif (optionnel)",
|
||||
"owed": "Qu'est-ce qui revient ?",
|
||||
"owedHint": "p. ex. une poignée la saison prochaine (optionnel)",
|
||||
"note": "Note (optionnel)",
|
||||
"save": "Enregistrer",
|
||||
"markReturned": "Marquer comme rendu",
|
||||
"markForgiven": "Clore l'engagement",
|
||||
"reopen": "Rouvrir",
|
||||
"delete": "Retirer",
|
||||
"statusReturned": "Rendu",
|
||||
"statusForgiven": "Clôturé",
|
||||
"openSection": "En attente",
|
||||
"settledSection": "Fermés",
|
||||
"removeConfirm": "Retirer cet engagement ?"
|
||||
},
|
||||
"handover": {
|
||||
"title": "Graines échangées",
|
||||
"help": "Un cadeau, un échange ou une vente — notez-le, avec une promesse de retour ou pas.",
|
||||
"iGave": "J'ai donné des graines",
|
||||
"iReceived": "J'ai reçu des graines",
|
||||
"whichLot": "Quel lot ?",
|
||||
"howMuch": "Combien ?",
|
||||
"allOfIt": "Tout",
|
||||
"partOfIt": "Une partie",
|
||||
"paymentChip": "Il y a eu un échange d'argent",
|
||||
"promiseGave": "Ils me renverront de la graine",
|
||||
"promiseReceived": "Je rendrai de la graine"
|
||||
},
|
||||
"sale": {
|
||||
"title": "Ventes",
|
||||
"help": "Enregistrez les graines que vous avez vendues ou achetées — argent, Ğ1, ou n'importe quelle monnaie. Un modèle distinct d'un cadeau ou d'un Plantare. Aucune commission n'est jamais prélevée sur les graines.",
|
||||
"add": "Enregistrer une vente",
|
||||
"empty": "Pas encore de ventes. Notez ici ce que vous vendez ou achetez.",
|
||||
"iSold": "J'ai vendu",
|
||||
"iBought": "J'ai acheté",
|
||||
"direction": "Vendu ou acheté ?",
|
||||
"counterparty": "Avec qui ?",
|
||||
"counterpartyHint": "Une personne ou un collectif (optionnel)",
|
||||
"amount": "Montant",
|
||||
"currency": "Monnaie",
|
||||
"currencyHint": "€, Ğ1, heures… (optionnel)",
|
||||
"hours": "heures",
|
||||
"note": "Note (optionnel)",
|
||||
"save": "Enregistrer",
|
||||
"delete": "Retirer",
|
||||
"removeConfirm": "Retirer cette vente ?"
|
||||
},
|
||||
"legal": {
|
||||
"title": "Confidentialité & règles",
|
||||
"subtitle": "Votre confidentialité, les règles du marché et le partage légal de semences",
|
||||
"privacyTitle": "Votre confidentialité",
|
||||
"privacyBody": "Tane fonctionne sans compte, et tout ce que vous enregistrez reste sur votre appareil, chiffré. Il n'y a pas de publicités, pas de trackers, et pas de serveur Tane.\n\nRien n'est partagé sauf si vous le choisissez : quand vous publiez une offre ou votre profil, ou envoyez un message, cela passe par des serveurs gérés par la communauté. Les offres ne portent qu'une zone approximative — jamais votre adresse.\n\nCe que vous publiez est public, et des copies peuvent rester même après l'avoir retiré — alors partagez avec prudence.",
|
||||
"rulesTitle": "Les règles du jeu",
|
||||
"rulesBody": "Tane est un outil, pas un magasin : les échanges sont convenus directement entre les gens, et personne ne prend de commission. Cela signifie aussi que vous êtes responsable de ce que vous offrez et envoyez.\n\nSur le marché : soyez honnête avec vos graines, n'offrez que ce que vous pouvez partager, traitez les gens bien et ne faites pas de spam. Vous pouvez bloquer n'importe qui et signaler les offres ou les gens qui enfreignent les règles — les signalements sont traités sur les serveurs communautaires.",
|
||||
"seedsTitle": "À propos du partage de semences",
|
||||
"seedsBody": "Donner et échanger des graines entre amateurs est largement reconnu dans la plupart des pays. La vente peut être différente : dans de nombreux endroits, vendre des graines de variétés non officiellement enregistrées est restreint — vérifiez votre législation locale avant de demander un prix.\n\nEnvoyer des graines dans un autre pays est souvent restreint aussi, et les variétés protégées commercialement ne peuvent pas être reproduites sans permission. En cas de doute, gardez-le local et faites-en un cadeau.",
|
||||
"readFull": "Lire les documents complets en ligne"
|
||||
},
|
||||
"marketGate": {
|
||||
"title": "Avant de rejoindre le marché",
|
||||
"intro": "Le marché est un espace partagé entre voisins. En continuant, vous acceptez quelques règles simples :",
|
||||
"ruleHonest": "Soyez honnête avec les graines que vous offrez",
|
||||
"ruleLegal": "Partagez uniquement ce que vous êtes autorisé à partager où vous vivez",
|
||||
"ruleRespect": "Traitez les gens bien — pas de spam, pas d'abus",
|
||||
"publicNote": "Ce que vous publiez ici est public, et des copies peuvent rester même si vous le retirez plus tard.",
|
||||
"viewLegal": "Confidentialité & règles",
|
||||
"accept": "J'accepte",
|
||||
"decline": "Pas maintenant"
|
||||
},
|
||||
"report": {
|
||||
"offer": "Signaler cette offre",
|
||||
"person": "Signaler cette personne",
|
||||
"title": "Signaler",
|
||||
"prompt": "Qu'est-ce qui ne va pas ?",
|
||||
"reasonSpam": "Spam ou escroquerie",
|
||||
"reasonAbuse": "Abusif ou irrespectueux",
|
||||
"reasonIllegal": "Graines qui ne devraient pas être offertes",
|
||||
"reasonOther": "Autre chose",
|
||||
"detailsHint": "Ajouter des détails (optionnel)",
|
||||
"send": "Envoyer le signalement",
|
||||
"sentHidden": "Signalement envoyé — vous ne verrez plus cela",
|
||||
"failed": "Impossible d'envoyer le signalement — vérifiez votre connexion",
|
||||
"alsoBlock": "Bloquer aussi cette personne"
|
||||
},
|
||||
"block": {
|
||||
"action": "Bloquer cette personne",
|
||||
"confirmTitle": "Bloquer cette personne ?",
|
||||
"confirmBody": "Vous ne verrez plus ses offres ou messages. Vous pouvez la débloquer plus tard sous Personnes bloquées dans la configuration du partage.",
|
||||
"confirm": "Bloquer",
|
||||
"blockedToast": "Personne bloquée — ses offres et messages sont cachés",
|
||||
"manageTitle": "Personnes bloquées",
|
||||
"manageEmpty": "Vous n'avez bloqué personne",
|
||||
"unblock": "Débloquer"
|
||||
}
|
||||
}
|
||||
|
|
@ -96,6 +96,8 @@
|
|||
"langEn": "English",
|
||||
"langPt": "Português",
|
||||
"langAst": "Asturianu",
|
||||
"langFr": "Français",
|
||||
"langDe": "Deutsch",
|
||||
"about": "Acerca de",
|
||||
"aboutText": "Inventário local e cifrado para sementes tradicionais. AGPL-3.0.",
|
||||
"aboutOpen": "Acerca do Tane"
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@
|
|||
/// Source: lib/i18n
|
||||
/// To regenerate, run: `dart run slang`
|
||||
///
|
||||
/// Locales: 4
|
||||
/// Strings: 2236 (559 per locale)
|
||||
/// Locales: 6
|
||||
/// Strings: 3356 (559 per locale)
|
||||
///
|
||||
/// Built on 2026-07-13 at 15:47 UTC
|
||||
/// Built on 2026-07-13 at 16:11 UTC
|
||||
|
||||
// coverage:ignore-file
|
||||
// ignore_for_file: type=lint, unused_import
|
||||
|
|
@ -19,7 +19,9 @@ import 'package:slang_flutter/slang_flutter.dart';
|
|||
export 'package:slang_flutter/slang_flutter.dart';
|
||||
|
||||
import 'strings_ast.g.dart' as l_ast;
|
||||
import 'strings_de.g.dart' as l_de;
|
||||
import 'strings_es.g.dart' as l_es;
|
||||
import 'strings_fr.g.dart' as l_fr;
|
||||
import 'strings_pt.g.dart' as l_pt;
|
||||
part 'strings_en.g.dart';
|
||||
|
||||
|
|
@ -32,7 +34,9 @@ part 'strings_en.g.dart';
|
|||
enum AppLocale with BaseAppLocale<AppLocale, Translations> {
|
||||
en(languageCode: 'en'),
|
||||
ast(languageCode: 'ast'),
|
||||
de(languageCode: 'de'),
|
||||
es(languageCode: 'es'),
|
||||
fr(languageCode: 'fr'),
|
||||
pt(languageCode: 'pt');
|
||||
|
||||
const AppLocale({
|
||||
|
|
@ -77,12 +81,24 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
|
|||
cardinalResolver: cardinalResolver,
|
||||
ordinalResolver: ordinalResolver,
|
||||
);
|
||||
case AppLocale.de:
|
||||
return l_de.TranslationsDe(
|
||||
overrides: overrides,
|
||||
cardinalResolver: cardinalResolver,
|
||||
ordinalResolver: ordinalResolver,
|
||||
);
|
||||
case AppLocale.es:
|
||||
return l_es.TranslationsEs(
|
||||
overrides: overrides,
|
||||
cardinalResolver: cardinalResolver,
|
||||
ordinalResolver: ordinalResolver,
|
||||
);
|
||||
case AppLocale.fr:
|
||||
return l_fr.TranslationsFr(
|
||||
overrides: overrides,
|
||||
cardinalResolver: cardinalResolver,
|
||||
ordinalResolver: ordinalResolver,
|
||||
);
|
||||
case AppLocale.pt:
|
||||
return l_pt.TranslationsPt(
|
||||
overrides: overrides,
|
||||
|
|
|
|||
|
|
@ -263,6 +263,8 @@ class _Translations$settings$ast extends Translations$settings$en {
|
|||
@override String get langEn => 'English';
|
||||
@override String get langPt => 'Português';
|
||||
@override String get langAst => 'Asturianu';
|
||||
@override String get langFr => 'Français';
|
||||
@override String get langDe => 'Deutsch';
|
||||
@override String get about => 'Tocante a';
|
||||
@override String get aboutText => 'Inventariu llocal y cifráu pa simiente tradicional. AGPL-3.0.';
|
||||
@override String get aboutOpen => 'Tocante a Tane';
|
||||
|
|
@ -1484,6 +1486,8 @@ extension on TranslationsAst {
|
|||
'settings.langEn' => 'English',
|
||||
'settings.langPt' => 'Português',
|
||||
'settings.langAst' => 'Asturianu',
|
||||
'settings.langFr' => 'Français',
|
||||
'settings.langDe' => 'Deutsch',
|
||||
'settings.about' => 'Tocante a',
|
||||
'settings.aboutText' => 'Inventariu llocal y cifráu pa simiente tradicional. AGPL-3.0.',
|
||||
'settings.aboutOpen' => 'Tocante a Tane',
|
||||
|
|
@ -1919,10 +1923,10 @@ extension on TranslationsAst {
|
|||
'sale.iBought' => 'Mercué',
|
||||
'sale.direction' => '¿Vendes o merques?',
|
||||
'sale.counterparty' => '¿Con quién?',
|
||||
'sale.counterpartyHint' => 'Una persona o un coleutivu (opcional)',
|
||||
'sale.amount' => 'Importe',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'sale.counterpartyHint' => 'Una persona o un coleutivu (opcional)',
|
||||
'sale.amount' => 'Importe',
|
||||
'sale.currency' => 'Moneda',
|
||||
'sale.currencyHint' => '€, Ğ1, hores… (opcional)',
|
||||
'sale.hours' => 'hores',
|
||||
|
|
|
|||
1971
apps/app_seeds/lib/i18n/strings_de.g.dart
Normal file
1971
apps/app_seeds/lib/i18n/strings_de.g.dart
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -418,6 +418,12 @@ class Translations$settings$en {
|
|||
/// en: 'Asturianu'
|
||||
String get langAst => 'Asturianu';
|
||||
|
||||
/// en: 'Français'
|
||||
String get langFr => 'Français';
|
||||
|
||||
/// en: 'Deutsch'
|
||||
String get langDe => 'Deutsch';
|
||||
|
||||
/// en: 'About'
|
||||
String get about => 'About';
|
||||
|
||||
|
|
@ -2590,6 +2596,8 @@ extension on Translations {
|
|||
'settings.langEn' => 'English',
|
||||
'settings.langPt' => 'Português',
|
||||
'settings.langAst' => 'Asturianu',
|
||||
'settings.langFr' => 'Français',
|
||||
'settings.langDe' => 'Deutsch',
|
||||
'settings.about' => 'About',
|
||||
'settings.aboutText' => 'Local-first, encrypted inventory for traditional seeds. AGPL-3.0.',
|
||||
'settings.aboutOpen' => 'About Tane',
|
||||
|
|
@ -3024,10 +3032,10 @@ extension on Translations {
|
|||
'sale.add' => 'Record a sale',
|
||||
'sale.empty' => 'No sales yet. Note here what you sell or buy.',
|
||||
'sale.iSold' => 'I sold',
|
||||
'sale.iBought' => 'I bought',
|
||||
'sale.direction' => 'Sold or bought?',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'sale.iBought' => 'I bought',
|
||||
'sale.direction' => 'Sold or bought?',
|
||||
'sale.counterparty' => 'With whom?',
|
||||
'sale.counterpartyHint' => 'A person or a collective (optional)',
|
||||
'sale.amount' => 'Amount',
|
||||
|
|
|
|||
|
|
@ -263,6 +263,8 @@ class _Translations$settings$es extends Translations$settings$en {
|
|||
@override String get langEs => 'Español';
|
||||
@override String get langEn => 'English';
|
||||
@override String get langPt => 'Português';
|
||||
@override String get langFr => 'Français';
|
||||
@override String get langDe => 'Deutsch';
|
||||
@override String get about => 'Acerca de';
|
||||
@override String get aboutText => 'Inventario local y cifrado para semillas tradicionales. AGPL-3.0.';
|
||||
@override String get aboutOpen => 'Acerca de Tane';
|
||||
|
|
@ -1486,6 +1488,8 @@ extension on TranslationsEs {
|
|||
'settings.langEs' => 'Español',
|
||||
'settings.langEn' => 'English',
|
||||
'settings.langPt' => 'Português',
|
||||
'settings.langFr' => 'Français',
|
||||
'settings.langDe' => 'Deutsch',
|
||||
'settings.about' => 'Acerca de',
|
||||
'settings.aboutText' => 'Inventario local y cifrado para semillas tradicionales. AGPL-3.0.',
|
||||
'settings.aboutOpen' => 'Acerca de Tane',
|
||||
|
|
@ -1921,10 +1925,10 @@ extension on TranslationsEs {
|
|||
'sale.empty' => 'Aún no hay ventas. Anota aquí lo que vendes o compras.',
|
||||
'sale.iSold' => 'Vendí',
|
||||
'sale.iBought' => 'Compré',
|
||||
'sale.direction' => '¿Vendes o compras?',
|
||||
'sale.counterparty' => '¿Con quién?',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'sale.direction' => '¿Vendes o compras?',
|
||||
'sale.counterparty' => '¿Con quién?',
|
||||
'sale.counterpartyHint' => 'Una persona o un colectivo (opcional)',
|
||||
'sale.amount' => 'Importe',
|
||||
'sale.currency' => 'Moneda',
|
||||
|
|
|
|||
1971
apps/app_seeds/lib/i18n/strings_fr.g.dart
Normal file
1971
apps/app_seeds/lib/i18n/strings_fr.g.dart
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -264,6 +264,8 @@ class _Translations$settings$pt extends Translations$settings$en {
|
|||
@override String get langEn => 'English';
|
||||
@override String get langPt => 'Português';
|
||||
@override String get langAst => 'Asturianu';
|
||||
@override String get langFr => 'Français';
|
||||
@override String get langDe => 'Deutsch';
|
||||
@override String get about => 'Acerca de';
|
||||
@override String get aboutText => 'Inventário local e cifrado para sementes tradicionais. AGPL-3.0.';
|
||||
@override String get aboutOpen => 'Acerca do Tane';
|
||||
|
|
@ -1484,6 +1486,8 @@ extension on TranslationsPt {
|
|||
'settings.langEn' => 'English',
|
||||
'settings.langPt' => 'Português',
|
||||
'settings.langAst' => 'Asturianu',
|
||||
'settings.langFr' => 'Français',
|
||||
'settings.langDe' => 'Deutsch',
|
||||
'settings.about' => 'Acerca de',
|
||||
'settings.aboutText' => 'Inventário local e cifrado para sementes tradicionais. AGPL-3.0.',
|
||||
'settings.aboutOpen' => 'Acerca do Tane',
|
||||
|
|
@ -1918,10 +1922,10 @@ extension on TranslationsPt {
|
|||
'sale.direction' => 'Vendes ou compras?',
|
||||
'sale.counterparty' => 'Com quem?',
|
||||
'sale.counterpartyHint' => 'Uma pessoa ou um coletivo (opcional)',
|
||||
'sale.amount' => 'Montante',
|
||||
'sale.currency' => 'Moeda',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'sale.amount' => 'Montante',
|
||||
'sale.currency' => 'Moeda',
|
||||
'sale.currencyHint' => '€, Ğ1, horas… (opcional)',
|
||||
'sale.hours' => 'horas',
|
||||
'sale.note' => 'Nota (opcional)',
|
||||
|
|
|
|||
|
|
@ -50,6 +50,16 @@ class SettingsScreen extends StatelessWidget {
|
|||
selected: current == AppLocale.pt,
|
||||
onTap: () => pick(AppLocale.pt),
|
||||
),
|
||||
_LanguageTile(
|
||||
label: t.settings.langFr,
|
||||
selected: current == AppLocale.fr,
|
||||
onTap: () => pick(AppLocale.fr),
|
||||
),
|
||||
_LanguageTile(
|
||||
label: t.settings.langDe,
|
||||
selected: current == AppLocale.de,
|
||||
onTap: () => pick(AppLocale.de),
|
||||
),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.smartphone_outlined),
|
||||
title: Text(t.settings.systemLanguage),
|
||||
|
|
|
|||
|
|
@ -40,7 +40,14 @@ void main() {
|
|||
// iPhone-SE-class logical viewport: narrow AND short, where clipping shows.
|
||||
const small = Size(320, 568);
|
||||
// The locales whose strings are longest — English rarely overflows first.
|
||||
const longLocales = [AppLocale.es, AppLocale.pt, AppLocale.ast];
|
||||
// German is included for its long compound nouns; French for its verbosity.
|
||||
const longLocales = [
|
||||
AppLocale.es,
|
||||
AppLocale.pt,
|
||||
AppLocale.ast,
|
||||
AppLocale.de,
|
||||
AppLocale.fr,
|
||||
];
|
||||
|
||||
setUpAll(() => PackageInfo.setMockInitialValues(
|
||||
appName: 'Tane',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue