The quick-add sheet no longer closes on every save: a new 'Save & add another' action saves the seed, clears the form (keeping the chosen lot type), refocuses the name field and shows an 'N added' running count, so a whole shelf can be entered without reopening the sheet each time. Plain Save still closes it. Adds a dedicated label field with its own controller, submitAndAddAnother() on the cubit, and cubit + widget tests.
224 lines
8.3 KiB
JSON
224 lines
8.3 KiB
JSON
{
|
|
"app": {
|
|
"title": "Tanemaki"
|
|
},
|
|
"common": {
|
|
"save": "Save",
|
|
"cancel": "Cancel",
|
|
"delete": "Delete",
|
|
"edit": "Edit",
|
|
"type": "Type",
|
|
"comingSoon": "Coming soon"
|
|
},
|
|
"home": {
|
|
"tagline": "Share and grow local seeds",
|
|
"openMarket": "Open market",
|
|
"openMarketSubtitle": "Browse and exchange",
|
|
"yourInventory": "Your inventory",
|
|
"yourInventorySubtitle": "Manage your seeds"
|
|
},
|
|
"photo": {
|
|
"camera": "Take a photo",
|
|
"gallery": "Choose from gallery",
|
|
"setAsCover": "Set as cover",
|
|
"isCover": "Cover photo",
|
|
"deleteConfirm": "Delete this photo?"
|
|
},
|
|
"menu": {
|
|
"tagline": "your seed bank",
|
|
"inventory": "Inventory",
|
|
"market": "Market",
|
|
"profile": "Your profile",
|
|
"chat": "Chat",
|
|
"wishlist": "Wishlist",
|
|
"following": "Following",
|
|
"settings": "Settings"
|
|
},
|
|
"settings": {
|
|
"language": "Language",
|
|
"systemLanguage": "System language",
|
|
"langEs": "Español",
|
|
"langEn": "English",
|
|
"about": "About",
|
|
"aboutText": "Local-first, encrypted inventory for traditional seeds. AGPL-3.0.",
|
|
"aboutOpen": "About Tanemaki"
|
|
},
|
|
"backup": {
|
|
"title": "Backup",
|
|
"exportCsv": "Export as CSV",
|
|
"exportCsvSubtitle": "For spreadsheets — no photos",
|
|
"exportJson": "Export as JSON",
|
|
"exportJsonSubtitle": "Complete copy, can be imported back",
|
|
"importJson": "Import from JSON",
|
|
"importJsonSubtitle": "Merge a saved copy into this inventory",
|
|
"importCsv": "Import from CSV",
|
|
"importCsvSubtitle": "Add a list from a spreadsheet",
|
|
"importConfirmTitle": "Import a saved copy?",
|
|
"importConfirmBody": "Entries merge with your inventory; when the same entry exists on both sides, the newest version wins. Nothing gets duplicated.",
|
|
"importCsvConfirmTitle": "Import a CSV list?",
|
|
"importCsvConfirmBody": "Every row is added as a new entry. This does not merge or replace, so importing the same file twice adds it twice.",
|
|
"importAction": "Import",
|
|
"exportSaved": "Copy saved",
|
|
"cancelled": "Cancelled",
|
|
"importDone": "Imported: {added} new, {updated} updated",
|
|
"importCsvDone": "Imported {count} from CSV",
|
|
"importFailed": "This file could not be read as a Tanemaki copy",
|
|
"failed": "Something went wrong"
|
|
},
|
|
"about": {
|
|
"title": "About",
|
|
"kanji": "種まき",
|
|
"tagline": "A local-first, decentralized app for managing and sharing traditional seeds and seedlings.",
|
|
"intro": "Tanemaki (種まき, \"to sow / scatter seeds\" in Japanese; short name Tane, 種 \"seed\") helps people and collectives keep a friendly inventory of their seed bank, decide what they offer, and share it locally — without a central intermediary that could control, censor, or be fined for it. The goal is both practical and political: to support traditional seed varieties and push back against the seed monopoly.",
|
|
"heritage": "The name honors the old Japanese mutual-aid traditions around rice — yui (shared community labour) and tanomoshi (reciprocity funds) — that inspired the paper Plantare, the \"community currency for seed exchange\" (BAH-Semillero, 2009, CC-BY-SA). Tanemaki is the digital Plantare.",
|
|
"version": "Version",
|
|
"license": "License",
|
|
"licenseValue": "AGPL-3.0",
|
|
"website": "Website",
|
|
"openSourceLicenses": "Open-source licenses",
|
|
"openSourceLicensesSubtitle": "Third-party libraries and their licenses"
|
|
},
|
|
"intro": {
|
|
"skip": "Skip",
|
|
"next": "Next",
|
|
"start": "Get started",
|
|
"menuEntry": "How Tanemaki works",
|
|
"slides": {
|
|
"welcome": {
|
|
"title": "The seed that brought you here",
|
|
"body": "Every traditional seed is a letter written by thousands of generations, passed from hand to hand. We are what we are thanks to that sharing."
|
|
},
|
|
"inventory": {
|
|
"title": "Your seed bank, in your pocket",
|
|
"body": "Note what you have, from which year, how much and where it came from — with the name you use. A photo and a name are enough to start."
|
|
},
|
|
"privacy": {
|
|
"title": "Yours, and only yours",
|
|
"body": "No account, no internet, no trackers. Your data lives encrypted on your device, and only what you choose is ever shared."
|
|
},
|
|
"share": {
|
|
"title": "Share, the way it's always been done",
|
|
"body": "Offer what you have spare — gift, swap or sell — and let someone nearby find it. Only an approximate distance is shown, never your address; you close the deal in person."
|
|
},
|
|
"plantare": {
|
|
"title": "To sow is to multiply",
|
|
"body": "With a Plantare, whoever receives seed promises to return some later. And since returning it means growing it, every loan multiplies the commons."
|
|
}
|
|
}
|
|
},
|
|
"inventory": {
|
|
"title": "Inventory",
|
|
"searchHint": "Search seeds",
|
|
"empty": "No seeds yet. Tap + to add your first.",
|
|
"noMatches": "No seeds match your filters.",
|
|
"clearFilters": "Clear filters",
|
|
"uncategorized": "Uncategorized"
|
|
},
|
|
"quickAdd": {
|
|
"title": "Add a seed",
|
|
"labelField": "Name",
|
|
"labelRequired": "Give it a name",
|
|
"addPhoto": "Add photo",
|
|
"quantity": "How much?",
|
|
"more": "Add more…",
|
|
"save": "Save",
|
|
"saveAndAddAnother": "Save & add another",
|
|
"addedCount": "{n} added",
|
|
"cancel": "Cancel"
|
|
},
|
|
"detail": {
|
|
"notFound": "This seed is no longer here.",
|
|
"lots": "Lots",
|
|
"noLots": "No lots yet.",
|
|
"names": "Also known as",
|
|
"addName": "Add name",
|
|
"links": "Links",
|
|
"addLink": "Add link",
|
|
"linkUrl": "URL",
|
|
"linkTitle": "Title (optional)",
|
|
"notes": "Notes",
|
|
"addLot": "Add lot",
|
|
"editLot": "Edit lot",
|
|
"deleteConfirm": "Delete this seed?",
|
|
"year": "Year {year}",
|
|
"noYear": "Year unknown"
|
|
},
|
|
"germination": {
|
|
"title": "Germination",
|
|
"add": "Add test",
|
|
"sampleSize": "Sample size",
|
|
"germinated": "Germinated",
|
|
"none": "No germination tests yet.",
|
|
"result": "{percent}%"
|
|
},
|
|
"editVariety": {
|
|
"title": "Edit seed",
|
|
"name": "Name",
|
|
"category": "Category",
|
|
"notes": "Notes",
|
|
"species": "Species (from catalog)",
|
|
"speciesHint": "Search a species…"
|
|
},
|
|
"addLot": {
|
|
"title": "Add lot",
|
|
"year": "Harvest date",
|
|
"quantity": "How much?",
|
|
"amount": "Amount"
|
|
},
|
|
"harvest": {
|
|
"pickTitle": "Select month / year",
|
|
"anyMonth": "Any month",
|
|
"noDate": "Set harvest date",
|
|
"monthNames": [
|
|
"January", "February", "March", "April", "May", "June",
|
|
"July", "August", "September", "October", "November", "December"
|
|
]
|
|
},
|
|
"lotType": {
|
|
"seed": "Seeds",
|
|
"plant": "Plant",
|
|
"seedling": "Seedling",
|
|
"tree": "Tree / shrub",
|
|
"bulb": "Bulb / tuber",
|
|
"cutting": "Cutting"
|
|
},
|
|
"presentation": {
|
|
"title": "Packaging",
|
|
"none": "Unspecified",
|
|
"pot": "Pot",
|
|
"tray": "Tray",
|
|
"plug": "Plug",
|
|
"bareRoot": "Bare-root",
|
|
"rootBall": "Root-ball"
|
|
},
|
|
"unit": {
|
|
"aFew": "a few",
|
|
"some": "some",
|
|
"plenty": "plenty",
|
|
"pinch": "a pinch",
|
|
"handful": { "singular": "handful", "plural": "handfuls" },
|
|
"teaspoon": { "singular": "teaspoon", "plural": "teaspoons" },
|
|
"spoon": { "singular": "spoon", "plural": "spoons" },
|
|
"cup": { "singular": "cup", "plural": "cups" },
|
|
"jar": { "singular": "jar", "plural": "jars" },
|
|
"sack": { "singular": "sack", "plural": "sacks" },
|
|
"packet": { "singular": "packet", "plural": "packets" },
|
|
"cob": { "singular": "cob", "plural": "cobs" },
|
|
"pod": { "singular": "pod", "plural": "pods" },
|
|
"ear": { "singular": "ear", "plural": "ears" },
|
|
"head": { "singular": "head", "plural": "heads" },
|
|
"fruit": { "singular": "fruit", "plural": "fruits" },
|
|
"bulb": { "singular": "bulb", "plural": "bulbs" },
|
|
"tuber": { "singular": "tuber", "plural": "tubers" },
|
|
"seedHead": { "singular": "seed head", "plural": "seed heads" },
|
|
"bunch": { "singular": "bunch", "plural": "bunches" },
|
|
"plant": { "singular": "plant", "plural": "plants" },
|
|
"pot": { "singular": "pot", "plural": "pots" },
|
|
"tray": { "singular": "tray", "plural": "trays" },
|
|
"seedling": { "singular": "seedling", "plural": "seedlings" },
|
|
"tree": { "singular": "tree", "plural": "trees" },
|
|
"cutting": { "singular": "cutting", "plural": "cuttings" },
|
|
"grams": { "singular": "gram", "plural": "grams" },
|
|
"count": { "singular": "seed", "plural": "seeds" }
|
|
}
|
|
}
|