feat(inventory): informal quantity scale (number + unit) + seed/plant lots
Rework quantities the way seeds are actually described — a number of an informal
unit — and let a lot hold seeds or plants (plantel).
Quantity model (commons_core):
- Quantity is now { kind, count?, label } — "3 cobs", "2 packets", "a few".
Count is optional; uncountable vibes (a few, some, pinch) carry no number.
- QuantityKind reorganised into an ascending scale: vibes → containers
(teaspoon/spoon/cup/jar/sack) → seed & fruit forms → plant units, each tagged
countable/not. Stored by name; count reuses the existing numeric column.
Lot type (schema v2):
- Lots gain a `type` (seed | plant); germination stays meaningful for seeds.
schemaVersion 2 with a from1To2 migration (adds the column), drift_schema_v2
exported, migration test covers v1→v2.
UI:
- New QuantityPicker: a horizontal scale of large seed-glyph icons + a number
stepper (shown only for countable units), plus a seed/plant SegmentedButton.
Used in quick-add and add-lot. Lot lines render "3 cobs" / "a few".
- i18n: unit singular/plural (ES/EN, Weblate-friendly), lot-type labels.
Build: slang moved to its CLI (disabled in build_runner to avoid a multi-file
collision); CI runs `dart run slang` before build_runner. 38 tests green,
Linux migrates the existing v1 DB and runs.
This commit is contained in:
parent
48e9d15772
commit
3942975dba
26 changed files with 4220 additions and 315 deletions
|
|
@ -6,7 +6,8 @@
|
|||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"delete": "Delete",
|
||||
"edit": "Edit"
|
||||
"edit": "Edit",
|
||||
"type": "Type"
|
||||
},
|
||||
"inventory": {
|
||||
"title": "Inventory",
|
||||
|
|
@ -54,26 +55,38 @@
|
|||
"addLot": {
|
||||
"title": "Add lot",
|
||||
"year": "Harvest year",
|
||||
"quantity": "Quantity"
|
||||
"quantity": "How much?",
|
||||
"amount": "Amount"
|
||||
},
|
||||
"quantityKind": {
|
||||
"lotType": {
|
||||
"seed": "Seeds",
|
||||
"plant": "Plants"
|
||||
},
|
||||
"unit": {
|
||||
"aFew": "a few",
|
||||
"some": "some",
|
||||
"plenty": "plenty",
|
||||
"handful": "a handful",
|
||||
"pinch": "a pinch",
|
||||
"jar": "a jar",
|
||||
"packet": "a packet",
|
||||
"cob": "a cob",
|
||||
"head": "a head",
|
||||
"pod": "a pod",
|
||||
"ear": "an ear",
|
||||
"fruit": "a fruit",
|
||||
"bulb": "a bulb",
|
||||
"tuber": "a tuber",
|
||||
"seedHead": "a seed head",
|
||||
"bunch": "a bunch",
|
||||
"grams": "grams",
|
||||
"count": "count"
|
||||
"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" },
|
||||
"grams": { "singular": "gram", "plural": "grams" },
|
||||
"count": { "singular": "seed", "plural": "seeds" }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,8 @@
|
|||
"save": "Guardar",
|
||||
"cancel": "Cancelar",
|
||||
"delete": "Eliminar",
|
||||
"edit": "Editar"
|
||||
"edit": "Editar",
|
||||
"type": "Tipo"
|
||||
},
|
||||
"inventory": {
|
||||
"title": "Inventario",
|
||||
|
|
@ -54,26 +55,38 @@
|
|||
"addLot": {
|
||||
"title": "Añadir lote",
|
||||
"year": "Año de cosecha",
|
||||
"quantity": "Cantidad"
|
||||
"quantity": "¿Cuánta?",
|
||||
"amount": "Cantidad"
|
||||
},
|
||||
"quantityKind": {
|
||||
"lotType": {
|
||||
"seed": "Semillas",
|
||||
"plant": "Plantel"
|
||||
},
|
||||
"unit": {
|
||||
"aFew": "unas pocas",
|
||||
"some": "algunas",
|
||||
"plenty": "muchas",
|
||||
"handful": "un puñado",
|
||||
"pinch": "una pizca",
|
||||
"jar": "un tarro",
|
||||
"packet": "un sobre",
|
||||
"cob": "una mazorca",
|
||||
"head": "una cabezuela",
|
||||
"pod": "una vaina",
|
||||
"ear": "una espiga",
|
||||
"fruit": "un fruto",
|
||||
"bulb": "un bulbo",
|
||||
"tuber": "un tubérculo",
|
||||
"seedHead": "una cabeza de semillas",
|
||||
"bunch": "un manojo",
|
||||
"grams": "gramos",
|
||||
"count": "unidades"
|
||||
"handful": { "singular": "puñado", "plural": "puñados" },
|
||||
"teaspoon": { "singular": "cucharadita", "plural": "cucharaditas" },
|
||||
"spoon": { "singular": "cuchara", "plural": "cucharas" },
|
||||
"cup": { "singular": "taza", "plural": "tazas" },
|
||||
"jar": { "singular": "bote", "plural": "botes" },
|
||||
"sack": { "singular": "saco", "plural": "sacos" },
|
||||
"packet": { "singular": "sobre", "plural": "sobres" },
|
||||
"cob": { "singular": "mazorca", "plural": "mazorcas" },
|
||||
"pod": { "singular": "vaina", "plural": "vainas" },
|
||||
"ear": { "singular": "espiga", "plural": "espigas" },
|
||||
"head": { "singular": "cabezuela", "plural": "cabezuelas" },
|
||||
"fruit": { "singular": "fruto", "plural": "frutos" },
|
||||
"bulb": { "singular": "bulbo", "plural": "bulbos" },
|
||||
"tuber": { "singular": "tubérculo", "plural": "tubérculos" },
|
||||
"seedHead": { "singular": "cabeza de semillas", "plural": "cabezas de semillas" },
|
||||
"bunch": { "singular": "manojo", "plural": "manojos" },
|
||||
"plant": { "singular": "planta", "plural": "plantas" },
|
||||
"pot": { "singular": "maceta", "plural": "macetas" },
|
||||
"tray": { "singular": "bandeja", "plural": "bandejas" },
|
||||
"grams": { "singular": "gramo", "plural": "gramos" },
|
||||
"count": { "singular": "semilla", "plural": "semillas" }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@
|
|||
/// To regenerate, run: `dart run slang`
|
||||
///
|
||||
/// Locales: 2
|
||||
/// Strings: 118 (59 per locale)
|
||||
/// Strings: 182 (91 per locale)
|
||||
///
|
||||
/// Built on 2026-07-07 at 19:58 UTC
|
||||
/// Built on 2026-07-08 at 08:39 UTC
|
||||
|
||||
// coverage:ignore-file
|
||||
// ignore_for_file: type=lint, unused_import
|
||||
|
|
|
|||
|
|
@ -48,7 +48,8 @@ class Translations with BaseTranslations<AppLocale, Translations> {
|
|||
late final Translations$germination$en germination = Translations$germination$en.internal(_root);
|
||||
late final Translations$editVariety$en editVariety = Translations$editVariety$en.internal(_root);
|
||||
late final Translations$addLot$en addLot = Translations$addLot$en.internal(_root);
|
||||
late final Translations$quantityKind$en quantityKind = Translations$quantityKind$en.internal(_root);
|
||||
late final Translations$lotType$en lotType = Translations$lotType$en.internal(_root);
|
||||
late final Translations$unit$en unit = Translations$unit$en.internal(_root);
|
||||
}
|
||||
|
||||
// Path: app
|
||||
|
|
@ -82,6 +83,9 @@ class Translations$common$en {
|
|||
|
||||
/// en: 'Edit'
|
||||
String get edit => 'Edit';
|
||||
|
||||
/// en: 'Type'
|
||||
String get type => 'Type';
|
||||
}
|
||||
|
||||
// Path: inventory
|
||||
|
|
@ -242,13 +246,31 @@ class Translations$addLot$en {
|
|||
/// en: 'Harvest year'
|
||||
String get year => 'Harvest year';
|
||||
|
||||
/// en: 'Quantity'
|
||||
String get quantity => 'Quantity';
|
||||
/// en: 'How much?'
|
||||
String get quantity => 'How much?';
|
||||
|
||||
/// en: 'Amount'
|
||||
String get amount => 'Amount';
|
||||
}
|
||||
|
||||
// Path: quantityKind
|
||||
class Translations$quantityKind$en {
|
||||
Translations$quantityKind$en.internal(this._root);
|
||||
// Path: lotType
|
||||
class Translations$lotType$en {
|
||||
Translations$lotType$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'Seeds'
|
||||
String get seed => 'Seeds';
|
||||
|
||||
/// en: 'Plants'
|
||||
String get plant => 'Plants';
|
||||
}
|
||||
|
||||
// Path: unit
|
||||
class Translations$unit$en {
|
||||
Translations$unit$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
|
|
@ -263,50 +285,345 @@ class Translations$quantityKind$en {
|
|||
/// en: 'plenty'
|
||||
String get plenty => 'plenty';
|
||||
|
||||
/// en: 'a handful'
|
||||
String get handful => 'a handful';
|
||||
|
||||
/// en: 'a pinch'
|
||||
String get pinch => 'a pinch';
|
||||
|
||||
/// en: 'a jar'
|
||||
String get jar => 'a jar';
|
||||
late final Translations$unit$handful$en handful = Translations$unit$handful$en.internal(_root);
|
||||
late final Translations$unit$teaspoon$en teaspoon = Translations$unit$teaspoon$en.internal(_root);
|
||||
late final Translations$unit$spoon$en spoon = Translations$unit$spoon$en.internal(_root);
|
||||
late final Translations$unit$cup$en cup = Translations$unit$cup$en.internal(_root);
|
||||
late final Translations$unit$jar$en jar = Translations$unit$jar$en.internal(_root);
|
||||
late final Translations$unit$sack$en sack = Translations$unit$sack$en.internal(_root);
|
||||
late final Translations$unit$packet$en packet = Translations$unit$packet$en.internal(_root);
|
||||
late final Translations$unit$cob$en cob = Translations$unit$cob$en.internal(_root);
|
||||
late final Translations$unit$pod$en pod = Translations$unit$pod$en.internal(_root);
|
||||
late final Translations$unit$ear$en ear = Translations$unit$ear$en.internal(_root);
|
||||
late final Translations$unit$head$en head = Translations$unit$head$en.internal(_root);
|
||||
late final Translations$unit$fruit$en fruit = Translations$unit$fruit$en.internal(_root);
|
||||
late final Translations$unit$bulb$en bulb = Translations$unit$bulb$en.internal(_root);
|
||||
late final Translations$unit$tuber$en tuber = Translations$unit$tuber$en.internal(_root);
|
||||
late final Translations$unit$seedHead$en seedHead = Translations$unit$seedHead$en.internal(_root);
|
||||
late final Translations$unit$bunch$en bunch = Translations$unit$bunch$en.internal(_root);
|
||||
late final Translations$unit$plant$en plant = Translations$unit$plant$en.internal(_root);
|
||||
late final Translations$unit$pot$en pot = Translations$unit$pot$en.internal(_root);
|
||||
late final Translations$unit$tray$en tray = Translations$unit$tray$en.internal(_root);
|
||||
late final Translations$unit$grams$en grams = Translations$unit$grams$en.internal(_root);
|
||||
late final Translations$unit$count$en count = Translations$unit$count$en.internal(_root);
|
||||
}
|
||||
|
||||
/// en: 'a packet'
|
||||
String get packet => 'a packet';
|
||||
// Path: unit.handful
|
||||
class Translations$unit$handful$en {
|
||||
Translations$unit$handful$en.internal(this._root);
|
||||
|
||||
/// en: 'a cob'
|
||||
String get cob => 'a cob';
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
/// en: 'a head'
|
||||
String get head => 'a head';
|
||||
// Translations
|
||||
|
||||
/// en: 'a pod'
|
||||
String get pod => 'a pod';
|
||||
/// en: 'handful'
|
||||
String get singular => 'handful';
|
||||
|
||||
/// en: 'an ear'
|
||||
String get ear => 'an ear';
|
||||
/// en: 'handfuls'
|
||||
String get plural => 'handfuls';
|
||||
}
|
||||
|
||||
/// en: 'a fruit'
|
||||
String get fruit => 'a fruit';
|
||||
// Path: unit.teaspoon
|
||||
class Translations$unit$teaspoon$en {
|
||||
Translations$unit$teaspoon$en.internal(this._root);
|
||||
|
||||
/// en: 'a bulb'
|
||||
String get bulb => 'a bulb';
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
/// en: 'a tuber'
|
||||
String get tuber => 'a tuber';
|
||||
// Translations
|
||||
|
||||
/// en: 'a seed head'
|
||||
String get seedHead => 'a seed head';
|
||||
/// en: 'teaspoon'
|
||||
String get singular => 'teaspoon';
|
||||
|
||||
/// en: 'a bunch'
|
||||
String get bunch => 'a bunch';
|
||||
/// en: 'teaspoons'
|
||||
String get plural => 'teaspoons';
|
||||
}
|
||||
|
||||
// Path: unit.spoon
|
||||
class Translations$unit$spoon$en {
|
||||
Translations$unit$spoon$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'spoon'
|
||||
String get singular => 'spoon';
|
||||
|
||||
/// en: 'spoons'
|
||||
String get plural => 'spoons';
|
||||
}
|
||||
|
||||
// Path: unit.cup
|
||||
class Translations$unit$cup$en {
|
||||
Translations$unit$cup$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'cup'
|
||||
String get singular => 'cup';
|
||||
|
||||
/// en: 'cups'
|
||||
String get plural => 'cups';
|
||||
}
|
||||
|
||||
// Path: unit.jar
|
||||
class Translations$unit$jar$en {
|
||||
Translations$unit$jar$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'jar'
|
||||
String get singular => 'jar';
|
||||
|
||||
/// en: 'jars'
|
||||
String get plural => 'jars';
|
||||
}
|
||||
|
||||
// Path: unit.sack
|
||||
class Translations$unit$sack$en {
|
||||
Translations$unit$sack$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'sack'
|
||||
String get singular => 'sack';
|
||||
|
||||
/// en: 'sacks'
|
||||
String get plural => 'sacks';
|
||||
}
|
||||
|
||||
// Path: unit.packet
|
||||
class Translations$unit$packet$en {
|
||||
Translations$unit$packet$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'packet'
|
||||
String get singular => 'packet';
|
||||
|
||||
/// en: 'packets'
|
||||
String get plural => 'packets';
|
||||
}
|
||||
|
||||
// Path: unit.cob
|
||||
class Translations$unit$cob$en {
|
||||
Translations$unit$cob$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'cob'
|
||||
String get singular => 'cob';
|
||||
|
||||
/// en: 'cobs'
|
||||
String get plural => 'cobs';
|
||||
}
|
||||
|
||||
// Path: unit.pod
|
||||
class Translations$unit$pod$en {
|
||||
Translations$unit$pod$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'pod'
|
||||
String get singular => 'pod';
|
||||
|
||||
/// en: 'pods'
|
||||
String get plural => 'pods';
|
||||
}
|
||||
|
||||
// Path: unit.ear
|
||||
class Translations$unit$ear$en {
|
||||
Translations$unit$ear$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'ear'
|
||||
String get singular => 'ear';
|
||||
|
||||
/// en: 'ears'
|
||||
String get plural => 'ears';
|
||||
}
|
||||
|
||||
// Path: unit.head
|
||||
class Translations$unit$head$en {
|
||||
Translations$unit$head$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'head'
|
||||
String get singular => 'head';
|
||||
|
||||
/// en: 'heads'
|
||||
String get plural => 'heads';
|
||||
}
|
||||
|
||||
// Path: unit.fruit
|
||||
class Translations$unit$fruit$en {
|
||||
Translations$unit$fruit$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'fruit'
|
||||
String get singular => 'fruit';
|
||||
|
||||
/// en: 'fruits'
|
||||
String get plural => 'fruits';
|
||||
}
|
||||
|
||||
// Path: unit.bulb
|
||||
class Translations$unit$bulb$en {
|
||||
Translations$unit$bulb$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'bulb'
|
||||
String get singular => 'bulb';
|
||||
|
||||
/// en: 'bulbs'
|
||||
String get plural => 'bulbs';
|
||||
}
|
||||
|
||||
// Path: unit.tuber
|
||||
class Translations$unit$tuber$en {
|
||||
Translations$unit$tuber$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'tuber'
|
||||
String get singular => 'tuber';
|
||||
|
||||
/// en: 'tubers'
|
||||
String get plural => 'tubers';
|
||||
}
|
||||
|
||||
// Path: unit.seedHead
|
||||
class Translations$unit$seedHead$en {
|
||||
Translations$unit$seedHead$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'seed head'
|
||||
String get singular => 'seed head';
|
||||
|
||||
/// en: 'seed heads'
|
||||
String get plural => 'seed heads';
|
||||
}
|
||||
|
||||
// Path: unit.bunch
|
||||
class Translations$unit$bunch$en {
|
||||
Translations$unit$bunch$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'bunch'
|
||||
String get singular => 'bunch';
|
||||
|
||||
/// en: 'bunches'
|
||||
String get plural => 'bunches';
|
||||
}
|
||||
|
||||
// Path: unit.plant
|
||||
class Translations$unit$plant$en {
|
||||
Translations$unit$plant$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'plant'
|
||||
String get singular => 'plant';
|
||||
|
||||
/// en: 'plants'
|
||||
String get plural => 'plants';
|
||||
}
|
||||
|
||||
// Path: unit.pot
|
||||
class Translations$unit$pot$en {
|
||||
Translations$unit$pot$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'pot'
|
||||
String get singular => 'pot';
|
||||
|
||||
/// en: 'pots'
|
||||
String get plural => 'pots';
|
||||
}
|
||||
|
||||
// Path: unit.tray
|
||||
class Translations$unit$tray$en {
|
||||
Translations$unit$tray$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'tray'
|
||||
String get singular => 'tray';
|
||||
|
||||
/// en: 'trays'
|
||||
String get plural => 'trays';
|
||||
}
|
||||
|
||||
// Path: unit.grams
|
||||
class Translations$unit$grams$en {
|
||||
Translations$unit$grams$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'gram'
|
||||
String get singular => 'gram';
|
||||
|
||||
/// en: 'grams'
|
||||
String get grams => 'grams';
|
||||
String get plural => 'grams';
|
||||
}
|
||||
|
||||
/// en: 'count'
|
||||
String get count => 'count';
|
||||
// Path: unit.count
|
||||
class Translations$unit$count$en {
|
||||
Translations$unit$count$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'seed'
|
||||
String get singular => 'seed';
|
||||
|
||||
/// en: 'seeds'
|
||||
String get plural => 'seeds';
|
||||
}
|
||||
|
||||
/// The flat map containing all translations for locale <en>.
|
||||
|
|
@ -322,6 +639,7 @@ extension on Translations {
|
|||
'common.cancel' => 'Cancel',
|
||||
'common.delete' => 'Delete',
|
||||
'common.edit' => 'Edit',
|
||||
'common.type' => 'Type',
|
||||
'inventory.title' => 'Inventory',
|
||||
'inventory.searchHint' => 'Search seeds',
|
||||
'inventory.empty' => 'No seeds yet. Tap + to add your first.',
|
||||
|
|
@ -357,25 +675,56 @@ extension on Translations {
|
|||
'editVariety.speciesHint' => 'Search a species…',
|
||||
'addLot.title' => 'Add lot',
|
||||
'addLot.year' => 'Harvest year',
|
||||
'addLot.quantity' => 'Quantity',
|
||||
'quantityKind.aFew' => 'a few',
|
||||
'quantityKind.some' => 'some',
|
||||
'quantityKind.plenty' => 'plenty',
|
||||
'quantityKind.handful' => 'a handful',
|
||||
'quantityKind.pinch' => 'a pinch',
|
||||
'quantityKind.jar' => 'a jar',
|
||||
'quantityKind.packet' => 'a packet',
|
||||
'quantityKind.cob' => 'a cob',
|
||||
'quantityKind.head' => 'a head',
|
||||
'quantityKind.pod' => 'a pod',
|
||||
'quantityKind.ear' => 'an ear',
|
||||
'quantityKind.fruit' => 'a fruit',
|
||||
'quantityKind.bulb' => 'a bulb',
|
||||
'quantityKind.tuber' => 'a tuber',
|
||||
'quantityKind.seedHead' => 'a seed head',
|
||||
'quantityKind.bunch' => 'a bunch',
|
||||
'quantityKind.grams' => 'grams',
|
||||
'quantityKind.count' => 'count',
|
||||
'addLot.quantity' => 'How much?',
|
||||
'addLot.amount' => 'Amount',
|
||||
'lotType.seed' => 'Seeds',
|
||||
'lotType.plant' => 'Plants',
|
||||
'unit.aFew' => 'a few',
|
||||
'unit.some' => 'some',
|
||||
'unit.plenty' => 'plenty',
|
||||
'unit.pinch' => 'a pinch',
|
||||
'unit.handful.singular' => 'handful',
|
||||
'unit.handful.plural' => 'handfuls',
|
||||
'unit.teaspoon.singular' => 'teaspoon',
|
||||
'unit.teaspoon.plural' => 'teaspoons',
|
||||
'unit.spoon.singular' => 'spoon',
|
||||
'unit.spoon.plural' => 'spoons',
|
||||
'unit.cup.singular' => 'cup',
|
||||
'unit.cup.plural' => 'cups',
|
||||
'unit.jar.singular' => 'jar',
|
||||
'unit.jar.plural' => 'jars',
|
||||
'unit.sack.singular' => 'sack',
|
||||
'unit.sack.plural' => 'sacks',
|
||||
'unit.packet.singular' => 'packet',
|
||||
'unit.packet.plural' => 'packets',
|
||||
'unit.cob.singular' => 'cob',
|
||||
'unit.cob.plural' => 'cobs',
|
||||
'unit.pod.singular' => 'pod',
|
||||
'unit.pod.plural' => 'pods',
|
||||
'unit.ear.singular' => 'ear',
|
||||
'unit.ear.plural' => 'ears',
|
||||
'unit.head.singular' => 'head',
|
||||
'unit.head.plural' => 'heads',
|
||||
'unit.fruit.singular' => 'fruit',
|
||||
'unit.fruit.plural' => 'fruits',
|
||||
'unit.bulb.singular' => 'bulb',
|
||||
'unit.bulb.plural' => 'bulbs',
|
||||
'unit.tuber.singular' => 'tuber',
|
||||
'unit.tuber.plural' => 'tubers',
|
||||
'unit.seedHead.singular' => 'seed head',
|
||||
'unit.seedHead.plural' => 'seed heads',
|
||||
'unit.bunch.singular' => 'bunch',
|
||||
'unit.bunch.plural' => 'bunches',
|
||||
'unit.plant.singular' => 'plant',
|
||||
'unit.plant.plural' => 'plants',
|
||||
'unit.pot.singular' => 'pot',
|
||||
'unit.pot.plural' => 'pots',
|
||||
'unit.tray.singular' => 'tray',
|
||||
'unit.tray.plural' => 'trays',
|
||||
'unit.grams.singular' => 'gram',
|
||||
'unit.grams.plural' => 'grams',
|
||||
'unit.count.singular' => 'seed',
|
||||
'unit.count.plural' => 'seeds',
|
||||
_ => null,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,8 @@ class TranslationsEs extends Translations with BaseTranslations<AppLocale, Trans
|
|||
@override late final _Translations$germination$es germination = _Translations$germination$es._(_root);
|
||||
@override late final _Translations$editVariety$es editVariety = _Translations$editVariety$es._(_root);
|
||||
@override late final _Translations$addLot$es addLot = _Translations$addLot$es._(_root);
|
||||
@override late final _Translations$quantityKind$es quantityKind = _Translations$quantityKind$es._(_root);
|
||||
@override late final _Translations$lotType$es lotType = _Translations$lotType$es._(_root);
|
||||
@override late final _Translations$unit$es unit = _Translations$unit$es._(_root);
|
||||
}
|
||||
|
||||
// Path: app
|
||||
|
|
@ -71,6 +72,7 @@ class _Translations$common$es extends Translations$common$en {
|
|||
@override String get cancel => 'Cancelar';
|
||||
@override String get delete => 'Eliminar';
|
||||
@override String get edit => 'Editar';
|
||||
@override String get type => 'Tipo';
|
||||
}
|
||||
|
||||
// Path: inventory
|
||||
|
|
@ -160,12 +162,24 @@ class _Translations$addLot$es extends Translations$addLot$en {
|
|||
// Translations
|
||||
@override String get title => 'Añadir lote';
|
||||
@override String get year => 'Año de cosecha';
|
||||
@override String get quantity => 'Cantidad';
|
||||
@override String get quantity => '¿Cuánta?';
|
||||
@override String get amount => 'Cantidad';
|
||||
}
|
||||
|
||||
// Path: quantityKind
|
||||
class _Translations$quantityKind$es extends Translations$quantityKind$en {
|
||||
_Translations$quantityKind$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
// Path: lotType
|
||||
class _Translations$lotType$es extends Translations$lotType$en {
|
||||
_Translations$lotType$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get seed => 'Semillas';
|
||||
@override String get plant => 'Plantel';
|
||||
}
|
||||
|
||||
// Path: unit
|
||||
class _Translations$unit$es extends Translations$unit$en {
|
||||
_Translations$unit$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
|
|
@ -173,21 +187,259 @@ class _Translations$quantityKind$es extends Translations$quantityKind$en {
|
|||
@override String get aFew => 'unas pocas';
|
||||
@override String get some => 'algunas';
|
||||
@override String get plenty => 'muchas';
|
||||
@override String get handful => 'un puñado';
|
||||
@override String get pinch => 'una pizca';
|
||||
@override String get jar => 'un tarro';
|
||||
@override String get packet => 'un sobre';
|
||||
@override String get cob => 'una mazorca';
|
||||
@override String get head => 'una cabezuela';
|
||||
@override String get pod => 'una vaina';
|
||||
@override String get ear => 'una espiga';
|
||||
@override String get fruit => 'un fruto';
|
||||
@override String get bulb => 'un bulbo';
|
||||
@override String get tuber => 'un tubérculo';
|
||||
@override String get seedHead => 'una cabeza de semillas';
|
||||
@override String get bunch => 'un manojo';
|
||||
@override String get grams => 'gramos';
|
||||
@override String get count => 'unidades';
|
||||
@override late final _Translations$unit$handful$es handful = _Translations$unit$handful$es._(_root);
|
||||
@override late final _Translations$unit$teaspoon$es teaspoon = _Translations$unit$teaspoon$es._(_root);
|
||||
@override late final _Translations$unit$spoon$es spoon = _Translations$unit$spoon$es._(_root);
|
||||
@override late final _Translations$unit$cup$es cup = _Translations$unit$cup$es._(_root);
|
||||
@override late final _Translations$unit$jar$es jar = _Translations$unit$jar$es._(_root);
|
||||
@override late final _Translations$unit$sack$es sack = _Translations$unit$sack$es._(_root);
|
||||
@override late final _Translations$unit$packet$es packet = _Translations$unit$packet$es._(_root);
|
||||
@override late final _Translations$unit$cob$es cob = _Translations$unit$cob$es._(_root);
|
||||
@override late final _Translations$unit$pod$es pod = _Translations$unit$pod$es._(_root);
|
||||
@override late final _Translations$unit$ear$es ear = _Translations$unit$ear$es._(_root);
|
||||
@override late final _Translations$unit$head$es head = _Translations$unit$head$es._(_root);
|
||||
@override late final _Translations$unit$fruit$es fruit = _Translations$unit$fruit$es._(_root);
|
||||
@override late final _Translations$unit$bulb$es bulb = _Translations$unit$bulb$es._(_root);
|
||||
@override late final _Translations$unit$tuber$es tuber = _Translations$unit$tuber$es._(_root);
|
||||
@override late final _Translations$unit$seedHead$es seedHead = _Translations$unit$seedHead$es._(_root);
|
||||
@override late final _Translations$unit$bunch$es bunch = _Translations$unit$bunch$es._(_root);
|
||||
@override late final _Translations$unit$plant$es plant = _Translations$unit$plant$es._(_root);
|
||||
@override late final _Translations$unit$pot$es pot = _Translations$unit$pot$es._(_root);
|
||||
@override late final _Translations$unit$tray$es tray = _Translations$unit$tray$es._(_root);
|
||||
@override late final _Translations$unit$grams$es grams = _Translations$unit$grams$es._(_root);
|
||||
@override late final _Translations$unit$count$es count = _Translations$unit$count$es._(_root);
|
||||
}
|
||||
|
||||
// Path: unit.handful
|
||||
class _Translations$unit$handful$es extends Translations$unit$handful$en {
|
||||
_Translations$unit$handful$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'puñado';
|
||||
@override String get plural => 'puñados';
|
||||
}
|
||||
|
||||
// Path: unit.teaspoon
|
||||
class _Translations$unit$teaspoon$es extends Translations$unit$teaspoon$en {
|
||||
_Translations$unit$teaspoon$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'cucharadita';
|
||||
@override String get plural => 'cucharaditas';
|
||||
}
|
||||
|
||||
// Path: unit.spoon
|
||||
class _Translations$unit$spoon$es extends Translations$unit$spoon$en {
|
||||
_Translations$unit$spoon$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'cuchara';
|
||||
@override String get plural => 'cucharas';
|
||||
}
|
||||
|
||||
// Path: unit.cup
|
||||
class _Translations$unit$cup$es extends Translations$unit$cup$en {
|
||||
_Translations$unit$cup$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'taza';
|
||||
@override String get plural => 'tazas';
|
||||
}
|
||||
|
||||
// Path: unit.jar
|
||||
class _Translations$unit$jar$es extends Translations$unit$jar$en {
|
||||
_Translations$unit$jar$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'bote';
|
||||
@override String get plural => 'botes';
|
||||
}
|
||||
|
||||
// Path: unit.sack
|
||||
class _Translations$unit$sack$es extends Translations$unit$sack$en {
|
||||
_Translations$unit$sack$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'saco';
|
||||
@override String get plural => 'sacos';
|
||||
}
|
||||
|
||||
// Path: unit.packet
|
||||
class _Translations$unit$packet$es extends Translations$unit$packet$en {
|
||||
_Translations$unit$packet$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'sobre';
|
||||
@override String get plural => 'sobres';
|
||||
}
|
||||
|
||||
// Path: unit.cob
|
||||
class _Translations$unit$cob$es extends Translations$unit$cob$en {
|
||||
_Translations$unit$cob$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'mazorca';
|
||||
@override String get plural => 'mazorcas';
|
||||
}
|
||||
|
||||
// Path: unit.pod
|
||||
class _Translations$unit$pod$es extends Translations$unit$pod$en {
|
||||
_Translations$unit$pod$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'vaina';
|
||||
@override String get plural => 'vainas';
|
||||
}
|
||||
|
||||
// Path: unit.ear
|
||||
class _Translations$unit$ear$es extends Translations$unit$ear$en {
|
||||
_Translations$unit$ear$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'espiga';
|
||||
@override String get plural => 'espigas';
|
||||
}
|
||||
|
||||
// Path: unit.head
|
||||
class _Translations$unit$head$es extends Translations$unit$head$en {
|
||||
_Translations$unit$head$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'cabezuela';
|
||||
@override String get plural => 'cabezuelas';
|
||||
}
|
||||
|
||||
// Path: unit.fruit
|
||||
class _Translations$unit$fruit$es extends Translations$unit$fruit$en {
|
||||
_Translations$unit$fruit$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'fruto';
|
||||
@override String get plural => 'frutos';
|
||||
}
|
||||
|
||||
// Path: unit.bulb
|
||||
class _Translations$unit$bulb$es extends Translations$unit$bulb$en {
|
||||
_Translations$unit$bulb$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'bulbo';
|
||||
@override String get plural => 'bulbos';
|
||||
}
|
||||
|
||||
// Path: unit.tuber
|
||||
class _Translations$unit$tuber$es extends Translations$unit$tuber$en {
|
||||
_Translations$unit$tuber$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'tubérculo';
|
||||
@override String get plural => 'tubérculos';
|
||||
}
|
||||
|
||||
// Path: unit.seedHead
|
||||
class _Translations$unit$seedHead$es extends Translations$unit$seedHead$en {
|
||||
_Translations$unit$seedHead$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'cabeza de semillas';
|
||||
@override String get plural => 'cabezas de semillas';
|
||||
}
|
||||
|
||||
// Path: unit.bunch
|
||||
class _Translations$unit$bunch$es extends Translations$unit$bunch$en {
|
||||
_Translations$unit$bunch$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'manojo';
|
||||
@override String get plural => 'manojos';
|
||||
}
|
||||
|
||||
// Path: unit.plant
|
||||
class _Translations$unit$plant$es extends Translations$unit$plant$en {
|
||||
_Translations$unit$plant$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'planta';
|
||||
@override String get plural => 'plantas';
|
||||
}
|
||||
|
||||
// Path: unit.pot
|
||||
class _Translations$unit$pot$es extends Translations$unit$pot$en {
|
||||
_Translations$unit$pot$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'maceta';
|
||||
@override String get plural => 'macetas';
|
||||
}
|
||||
|
||||
// Path: unit.tray
|
||||
class _Translations$unit$tray$es extends Translations$unit$tray$en {
|
||||
_Translations$unit$tray$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'bandeja';
|
||||
@override String get plural => 'bandejas';
|
||||
}
|
||||
|
||||
// Path: unit.grams
|
||||
class _Translations$unit$grams$es extends Translations$unit$grams$en {
|
||||
_Translations$unit$grams$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'gramo';
|
||||
@override String get plural => 'gramos';
|
||||
}
|
||||
|
||||
// Path: unit.count
|
||||
class _Translations$unit$count$es extends Translations$unit$count$en {
|
||||
_Translations$unit$count$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get singular => 'semilla';
|
||||
@override String get plural => 'semillas';
|
||||
}
|
||||
|
||||
/// The flat map containing all translations for locale <es>.
|
||||
|
|
@ -203,6 +455,7 @@ extension on TranslationsEs {
|
|||
'common.cancel' => 'Cancelar',
|
||||
'common.delete' => 'Eliminar',
|
||||
'common.edit' => 'Editar',
|
||||
'common.type' => 'Tipo',
|
||||
'inventory.title' => 'Inventario',
|
||||
'inventory.searchHint' => 'Buscar semillas',
|
||||
'inventory.empty' => 'Aún no hay semillas. Toca + para añadir la primera.',
|
||||
|
|
@ -238,25 +491,56 @@ extension on TranslationsEs {
|
|||
'editVariety.speciesHint' => 'Buscar una especie…',
|
||||
'addLot.title' => 'Añadir lote',
|
||||
'addLot.year' => 'Año de cosecha',
|
||||
'addLot.quantity' => 'Cantidad',
|
||||
'quantityKind.aFew' => 'unas pocas',
|
||||
'quantityKind.some' => 'algunas',
|
||||
'quantityKind.plenty' => 'muchas',
|
||||
'quantityKind.handful' => 'un puñado',
|
||||
'quantityKind.pinch' => 'una pizca',
|
||||
'quantityKind.jar' => 'un tarro',
|
||||
'quantityKind.packet' => 'un sobre',
|
||||
'quantityKind.cob' => 'una mazorca',
|
||||
'quantityKind.head' => 'una cabezuela',
|
||||
'quantityKind.pod' => 'una vaina',
|
||||
'quantityKind.ear' => 'una espiga',
|
||||
'quantityKind.fruit' => 'un fruto',
|
||||
'quantityKind.bulb' => 'un bulbo',
|
||||
'quantityKind.tuber' => 'un tubérculo',
|
||||
'quantityKind.seedHead' => 'una cabeza de semillas',
|
||||
'quantityKind.bunch' => 'un manojo',
|
||||
'quantityKind.grams' => 'gramos',
|
||||
'quantityKind.count' => 'unidades',
|
||||
'addLot.quantity' => '¿Cuánta?',
|
||||
'addLot.amount' => 'Cantidad',
|
||||
'lotType.seed' => 'Semillas',
|
||||
'lotType.plant' => 'Plantel',
|
||||
'unit.aFew' => 'unas pocas',
|
||||
'unit.some' => 'algunas',
|
||||
'unit.plenty' => 'muchas',
|
||||
'unit.pinch' => 'una pizca',
|
||||
'unit.handful.singular' => 'puñado',
|
||||
'unit.handful.plural' => 'puñados',
|
||||
'unit.teaspoon.singular' => 'cucharadita',
|
||||
'unit.teaspoon.plural' => 'cucharaditas',
|
||||
'unit.spoon.singular' => 'cuchara',
|
||||
'unit.spoon.plural' => 'cucharas',
|
||||
'unit.cup.singular' => 'taza',
|
||||
'unit.cup.plural' => 'tazas',
|
||||
'unit.jar.singular' => 'bote',
|
||||
'unit.jar.plural' => 'botes',
|
||||
'unit.sack.singular' => 'saco',
|
||||
'unit.sack.plural' => 'sacos',
|
||||
'unit.packet.singular' => 'sobre',
|
||||
'unit.packet.plural' => 'sobres',
|
||||
'unit.cob.singular' => 'mazorca',
|
||||
'unit.cob.plural' => 'mazorcas',
|
||||
'unit.pod.singular' => 'vaina',
|
||||
'unit.pod.plural' => 'vainas',
|
||||
'unit.ear.singular' => 'espiga',
|
||||
'unit.ear.plural' => 'espigas',
|
||||
'unit.head.singular' => 'cabezuela',
|
||||
'unit.head.plural' => 'cabezuelas',
|
||||
'unit.fruit.singular' => 'fruto',
|
||||
'unit.fruit.plural' => 'frutos',
|
||||
'unit.bulb.singular' => 'bulbo',
|
||||
'unit.bulb.plural' => 'bulbos',
|
||||
'unit.tuber.singular' => 'tubérculo',
|
||||
'unit.tuber.plural' => 'tubérculos',
|
||||
'unit.seedHead.singular' => 'cabeza de semillas',
|
||||
'unit.seedHead.plural' => 'cabezas de semillas',
|
||||
'unit.bunch.singular' => 'manojo',
|
||||
'unit.bunch.plural' => 'manojos',
|
||||
'unit.plant.singular' => 'planta',
|
||||
'unit.plant.plural' => 'plantas',
|
||||
'unit.pot.singular' => 'maceta',
|
||||
'unit.pot.plural' => 'macetas',
|
||||
'unit.tray.singular' => 'bandeja',
|
||||
'unit.tray.plural' => 'bandejas',
|
||||
'unit.grams.singular' => 'gramo',
|
||||
'unit.grams.plural' => 'gramos',
|
||||
'unit.count.singular' => 'semilla',
|
||||
'unit.count.plural' => 'semillas',
|
||||
_ => null,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue