Add a read-only "Learn more" section on the variety detail that surfaces verified external references for the linked species, built deterministically from bundled identifiers — no titles bundled, no network, offline-first: - GBIF taxon page from the backbone key - Wikipedia via Wikidata Special:GoToLinkedPage (locale-aware, RTL-safe, falls back to the Wikidata item when a language lacks the article) - Wikispecies from the scientific name Enrich the bundled catalog (species.json v3) with gbif_key + wikidata_qid for all 14 species, cross-checked (each QID carries GBIF ID P846 = the key). Schema already had the columns; seedBundled now persists and backfills them. The grower's own manual links stay but are demoted (progressive disclosure): the section only shows when links exist and "Add link" is a low-emphasis button, since hand-adding a link is the rarer power move. Pure-Dart link builder is unit-tested; repo persistence/backfill and the detail-screen section are covered too.
1209 lines
53 KiB
Dart
1209 lines
53 KiB
Dart
///
|
|
/// Generated file. Do not edit.
|
|
///
|
|
// coverage:ignore-file
|
|
// ignore_for_file: type=lint, unused_import
|
|
// dart format off
|
|
|
|
import 'package:flutter/widgets.dart';
|
|
import 'package:intl/intl.dart';
|
|
import 'package:slang/generated.dart';
|
|
import 'strings.g.dart';
|
|
|
|
// Path: <root>
|
|
class TranslationsEs extends Translations with BaseTranslations<AppLocale, Translations> {
|
|
/// You can call this constructor and build your own translation instance of this locale.
|
|
/// Constructing via the enum [AppLocale.build] is preferred.
|
|
TranslationsEs({Map<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? meta})
|
|
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
|
|
$meta = meta ?? TranslationMetadata(
|
|
locale: AppLocale.es,
|
|
overrides: overrides ?? {},
|
|
cardinalResolver: cardinalResolver,
|
|
ordinalResolver: ordinalResolver,
|
|
),
|
|
super(cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver) {
|
|
super.$meta.setFlatMapFunction($meta.getTranslation); // copy base translations to super.$meta
|
|
$meta.setFlatMapFunction(_flatMapFunction);
|
|
}
|
|
|
|
/// Metadata for the translations of <es>.
|
|
@override final TranslationMetadata<AppLocale, Translations> $meta;
|
|
|
|
/// Access flat map
|
|
@override dynamic operator[](String key) => $meta.getTranslation(key) ?? super.$meta.getTranslation(key);
|
|
|
|
late final TranslationsEs _root = this; // ignore: unused_field
|
|
|
|
@override
|
|
TranslationsEs $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsEs(meta: meta ?? this.$meta);
|
|
|
|
// Translations
|
|
@override late final _Translations$app$es app = _Translations$app$es._(_root);
|
|
@override late final _Translations$common$es common = _Translations$common$es._(_root);
|
|
@override late final _Translations$home$es home = _Translations$home$es._(_root);
|
|
@override late final _Translations$photo$es photo = _Translations$photo$es._(_root);
|
|
@override late final _Translations$menu$es menu = _Translations$menu$es._(_root);
|
|
@override late final _Translations$settings$es settings = _Translations$settings$es._(_root);
|
|
@override late final _Translations$backup$es backup = _Translations$backup$es._(_root);
|
|
@override late final _Translations$about$es about = _Translations$about$es._(_root);
|
|
@override late final _Translations$intro$es intro = _Translations$intro$es._(_root);
|
|
@override late final _Translations$inventory$es inventory = _Translations$inventory$es._(_root);
|
|
@override late final _Translations$draft$es draft = _Translations$draft$es._(_root);
|
|
@override late final _Translations$quickAdd$es quickAdd = _Translations$quickAdd$es._(_root);
|
|
@override late final _Translations$detail$es detail = _Translations$detail$es._(_root);
|
|
@override late final _Translations$germination$es germination = _Translations$germination$es._(_root);
|
|
@override late final _Translations$viability$es viability = _Translations$viability$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$harvest$es harvest = _Translations$harvest$es._(_root);
|
|
@override late final _Translations$lotType$es lotType = _Translations$lotType$es._(_root);
|
|
@override late final _Translations$presentation$es presentation = _Translations$presentation$es._(_root);
|
|
@override late final _Translations$provenance$es provenance = _Translations$provenance$es._(_root);
|
|
@override late final _Translations$abundance$es abundance = _Translations$abundance$es._(_root);
|
|
@override late final _Translations$share$es share = _Translations$share$es._(_root);
|
|
@override late final _Translations$cropCalendar$es cropCalendar = _Translations$cropCalendar$es._(_root);
|
|
@override late final _Translations$needsReproduction$es needsReproduction = _Translations$needsReproduction$es._(_root);
|
|
@override late final _Translations$preservation$es preservation = _Translations$preservation$es._(_root);
|
|
@override late final _Translations$conditionCheck$es conditionCheck = _Translations$conditionCheck$es._(_root);
|
|
@override late final _Translations$desiccant$es desiccant = _Translations$desiccant$es._(_root);
|
|
@override late final _Translations$unit$es unit = _Translations$unit$es._(_root);
|
|
}
|
|
|
|
// Path: app
|
|
class _Translations$app$es extends Translations$app$en {
|
|
_Translations$app$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get title => 'Tanemaki';
|
|
}
|
|
|
|
// Path: common
|
|
class _Translations$common$es extends Translations$common$en {
|
|
_Translations$common$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get save => 'Guardar';
|
|
@override String get cancel => 'Cancelar';
|
|
@override String get delete => 'Eliminar';
|
|
@override String get edit => 'Editar';
|
|
@override String get type => 'Tipo';
|
|
@override String get comingSoon => 'Pronto';
|
|
}
|
|
|
|
// Path: home
|
|
class _Translations$home$es extends Translations$home$en {
|
|
_Translations$home$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get tagline => 'Comparte y cultiva semillas locales';
|
|
@override String get openMarket => 'Mercado abierto';
|
|
@override String get openMarketSubtitle => 'Explora e intercambia';
|
|
@override String get yourInventory => 'Tu inventario';
|
|
@override String get yourInventorySubtitle => 'Gestiona tus semillas';
|
|
}
|
|
|
|
// Path: photo
|
|
class _Translations$photo$es extends Translations$photo$en {
|
|
_Translations$photo$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get camera => 'Hacer una foto';
|
|
@override String get gallery => 'Elegir de la galería';
|
|
@override String get setAsCover => 'Poner de portada';
|
|
@override String get isCover => 'Foto de portada';
|
|
@override String get deleteConfirm => '¿Borrar esta foto?';
|
|
}
|
|
|
|
// Path: menu
|
|
class _Translations$menu$es extends Translations$menu$en {
|
|
_Translations$menu$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get tagline => 'tu banco de semillas';
|
|
@override String get inventory => 'Inventario';
|
|
@override String get market => 'Mercado';
|
|
@override String get profile => 'Tu perfil';
|
|
@override String get chat => 'Chat';
|
|
@override String get wishlist => 'Lista de deseos';
|
|
@override String get following => 'Siguiendo';
|
|
@override String get settings => 'Ajustes';
|
|
}
|
|
|
|
// Path: settings
|
|
class _Translations$settings$es extends Translations$settings$en {
|
|
_Translations$settings$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get language => 'Idioma';
|
|
@override String get systemLanguage => 'Idioma del sistema';
|
|
@override String get langEs => 'Español';
|
|
@override String get langEn => 'English';
|
|
@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 Tanemaki';
|
|
}
|
|
|
|
// Path: backup
|
|
class _Translations$backup$es extends Translations$backup$en {
|
|
_Translations$backup$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get title => 'Copia de seguridad';
|
|
@override String get exportJson => 'Guardar una copia de seguridad';
|
|
@override String get exportJsonSubtitle => 'Una copia completa para guardar a salvo, restaurar luego o pasar a otro dispositivo';
|
|
@override String get importJson => 'Restaurar una copia';
|
|
@override String get importJsonSubtitle => 'Recupera una copia guardada — no se duplica nada';
|
|
@override String get exportCsv => 'Exportar a una hoja de cálculo';
|
|
@override String get exportCsvSubtitle => 'Una lista sencilla para Excel o LibreOffice — sin fotos';
|
|
@override String get importCsv => 'Importar una lista';
|
|
@override String get importCsvSubtitle => 'Añade entradas desde una hoja de cálculo';
|
|
@override String get importConfirmTitle => '¿Restaurar una copia?';
|
|
@override String get importConfirmBody => 'Las entradas se fusionan con tu inventario; si una entrada existe en ambos lados, gana la versión más reciente. No se duplica nada.';
|
|
@override String get importCsvConfirmTitle => '¿Importar una lista?';
|
|
@override String get importCsvConfirmBody => 'Cada fila se añade como una entrada nueva. No fusiona ni reemplaza, así que importar el mismo fichero dos veces lo añade dos veces.';
|
|
@override String get importAction => 'Importar';
|
|
@override String get exportSaved => 'Copia guardada';
|
|
@override String get cancelled => 'Cancelado';
|
|
@override String importDone({required Object added, required Object updated}) => 'Importado: ${added} nuevas, ${updated} actualizadas';
|
|
@override String importCsvDone({required Object count}) => 'Añadidas ${count} entradas';
|
|
@override String get importFailed => 'Este fichero no se pudo leer como una copia de Tanemaki';
|
|
@override String get failed => 'Algo ha salido mal';
|
|
}
|
|
|
|
// Path: about
|
|
class _Translations$about$es extends Translations$about$en {
|
|
_Translations$about$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get title => 'Acerca de';
|
|
@override String get kanji => '種まき';
|
|
@override String get tagline => 'Una app local-first y descentralizada para gestionar y compartir semillas y plantones tradicionales.';
|
|
@override String get intro => 'Tanemaki (種まき, «sembrar / esparcir semillas» en japonés; nombre corto Tane, 種 «semilla») ayuda a personas y colectivos a llevar un inventario amable de su banco de semillas, decidir qué ofrecen y compartirlo localmente — sin un intermediario central que pueda controlarlo, censurarlo o ser multado por ello. El objetivo es a la vez práctico y político: apoyar las variedades tradicionales de semillas y plantar cara al monopolio semillero.';
|
|
@override String get heritage => 'El nombre honra las viejas tradiciones japonesas de ayuda mutua en torno al arroz — yui (trabajo comunitario compartido) y tanomoshi (fondos de reciprocidad) — que inspiraron el papel Plantare, la «moneda comunitaria para el intercambio de semillas» (BAH-Semillero, 2009, CC-BY-SA). Tanemaki es el Plantare digital.';
|
|
@override String get version => 'Versión';
|
|
@override String get license => 'Licencia';
|
|
@override String get licenseValue => 'AGPL-3.0';
|
|
@override String get website => 'Sitio web';
|
|
@override String get openSourceLicenses => 'Licencias de código abierto';
|
|
@override String get openSourceLicensesSubtitle => 'Bibliotecas de terceros y sus licencias';
|
|
}
|
|
|
|
// Path: intro
|
|
class _Translations$intro$es extends Translations$intro$en {
|
|
_Translations$intro$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get skip => 'Saltar';
|
|
@override String get next => 'Siguiente';
|
|
@override String get start => 'Empezar';
|
|
@override String get menuEntry => 'Cómo funciona Tanemaki';
|
|
@override late final _Translations$intro$slides$es slides = _Translations$intro$slides$es._(_root);
|
|
}
|
|
|
|
// Path: inventory
|
|
class _Translations$inventory$es extends Translations$inventory$en {
|
|
_Translations$inventory$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get title => 'Inventario';
|
|
@override String get searchHint => 'Buscar semillas';
|
|
@override String get empty => 'Aún no hay semillas. Toca + para añadir la primera.';
|
|
@override String get noMatches => 'Ninguna semilla coincide con los filtros.';
|
|
@override String get clearFilters => 'Quitar filtros';
|
|
@override String get uncategorized => 'Sin categoría';
|
|
@override String get needsReproductionFilter => 'Por reproducir';
|
|
}
|
|
|
|
// Path: draft
|
|
class _Translations$draft$es extends Translations$draft$en {
|
|
_Translations$draft$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get capture => 'Capturar fotos';
|
|
@override String captured({required Object n}) => '${n} capturadas por catalogar';
|
|
@override String get triageTitle => 'Por catalogar';
|
|
@override String triageCount({required Object n}) => '${n} por catalogar';
|
|
@override String get untitled => 'Sin nombre';
|
|
@override String get nameField => 'Nombra esta semilla';
|
|
@override String get nameHint => '¿Qué es?';
|
|
@override String get suggestFromPhoto => 'Sugerir nombre de la foto';
|
|
@override String get discard => 'Descartar';
|
|
}
|
|
|
|
// Path: quickAdd
|
|
class _Translations$quickAdd$es extends Translations$quickAdd$en {
|
|
_Translations$quickAdd$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get title => 'Añadir una semilla';
|
|
@override String get labelField => 'Nombre';
|
|
@override String get labelRequired => 'Ponle un nombre';
|
|
@override String get addPhoto => 'Añadir foto';
|
|
@override String get quantity => '¿Cuánta?';
|
|
@override String get more => 'Añadir más…';
|
|
@override String get save => 'Guardar';
|
|
@override String get saveAndAddAnother => 'Guardar y añadir otra';
|
|
@override String addedCount({required Object n}) => '${n} añadidas';
|
|
@override String get cancel => 'Cancelar';
|
|
}
|
|
|
|
// Path: detail
|
|
class _Translations$detail$es extends Translations$detail$en {
|
|
_Translations$detail$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get notFound => 'Esta semilla ya no está aquí.';
|
|
@override String get lots => 'Lotes';
|
|
@override String get noLots => 'Aún no hay lotes.';
|
|
@override String get names => 'También conocida como';
|
|
@override String get addName => 'Añadir nombre';
|
|
@override String get links => 'Enlaces';
|
|
@override String get addLink => 'Añadir enlace';
|
|
@override String get linkUrl => 'URL';
|
|
@override String get linkTitle => 'Título (opcional)';
|
|
@override String get reference => 'Saber más';
|
|
@override String get refGbif => 'GBIF';
|
|
@override String get refWikipedia => 'Wikipedia';
|
|
@override String get refWikispecies => 'Wikispecies';
|
|
@override String get notes => 'Notas';
|
|
@override String get addLot => 'Añadir lote';
|
|
@override String get editLot => 'Editar lote';
|
|
@override String get deleteConfirm => '¿Eliminar esta semilla?';
|
|
@override String year({required Object year}) => 'Año ${year}';
|
|
@override String get noYear => 'Año desconocido';
|
|
}
|
|
|
|
// Path: germination
|
|
class _Translations$germination$es extends Translations$germination$en {
|
|
_Translations$germination$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get title => 'Germinación';
|
|
@override String get add => 'Añadir prueba';
|
|
@override String get sampleSize => 'Muestra';
|
|
@override String get germinated => 'Germinadas';
|
|
@override String get none => 'Aún no hay pruebas de germinación.';
|
|
@override String result({required Object percent}) => '${percent}%';
|
|
}
|
|
|
|
// Path: viability
|
|
class _Translations$viability$es extends Translations$viability$en {
|
|
_Translations$viability$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get expiringSoon => 'Úsala o multiplícala esta temporada';
|
|
@override String expiringSoonYears({required Object years}) => 'Úsala o multiplícala esta temporada · dura ~${years} años';
|
|
@override String get expired => 'Supera su viabilidad típica — a multiplicar';
|
|
@override String expiredYears({required Object years}) => 'Supera su viabilidad típica (~${years} años) — a multiplicar';
|
|
}
|
|
|
|
// Path: editVariety
|
|
class _Translations$editVariety$es extends Translations$editVariety$en {
|
|
_Translations$editVariety$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get title => 'Editar semilla';
|
|
@override String get name => 'Nombre';
|
|
@override String get category => 'Categoría';
|
|
@override String get notes => 'Notas';
|
|
@override String get species => 'Especie (del catálogo)';
|
|
@override String get speciesHint => 'Buscar una especie…';
|
|
@override String get organic => 'Ecológica';
|
|
@override String get organicHint => 'Cultivada de forma ecológica (eco)';
|
|
}
|
|
|
|
// Path: addLot
|
|
class _Translations$addLot$es extends Translations$addLot$en {
|
|
_Translations$addLot$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get title => 'Añadir lote';
|
|
@override String get year => 'Fecha de cosecha';
|
|
@override String get quantity => '¿Cuánta?';
|
|
@override String get amount => 'Cantidad';
|
|
}
|
|
|
|
// Path: harvest
|
|
class _Translations$harvest$es extends Translations$harvest$en {
|
|
_Translations$harvest$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get pickTitle => 'Seleccionar mes / año';
|
|
@override String get anyMonth => 'Cualquier mes';
|
|
@override String get noDate => 'Indicar fecha de cosecha';
|
|
@override List<String> get monthNames => [
|
|
'enero',
|
|
'febrero',
|
|
'marzo',
|
|
'abril',
|
|
'mayo',
|
|
'junio',
|
|
'julio',
|
|
'agosto',
|
|
'septiembre',
|
|
'octubre',
|
|
'noviembre',
|
|
'diciembre',
|
|
];
|
|
}
|
|
|
|
// 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 => 'Planta';
|
|
@override String get seedling => 'Plantón';
|
|
@override String get tree => 'Árbol / arbusto';
|
|
@override String get bulb => 'Bulbo / tubérculo';
|
|
@override String get cutting => 'Esqueje';
|
|
}
|
|
|
|
// Path: presentation
|
|
class _Translations$presentation$es extends Translations$presentation$en {
|
|
_Translations$presentation$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get title => 'Envase';
|
|
@override String get none => 'Sin especificar';
|
|
@override String get pot => 'Maceta';
|
|
@override String get tray => 'Bandeja';
|
|
@override String get plug => 'Alvéolo';
|
|
@override String get bareRoot => 'Raíz desnuda';
|
|
@override String get rootBall => 'Cepellón';
|
|
}
|
|
|
|
// Path: provenance
|
|
class _Translations$provenance$es extends Translations$provenance$en {
|
|
_Translations$provenance$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get section => 'De dónde viene';
|
|
@override String get seedsFrom => 'Semillas de';
|
|
@override String get seedsFromHint => 'Quién las cultivó o las dio';
|
|
@override String get place => 'Lugar';
|
|
@override String get placeHint => 'De dónde vienen (con provincia)';
|
|
@override String get addSeedsFrom => 'Semillas de';
|
|
@override String get addPlace => 'Lugar';
|
|
}
|
|
|
|
// Path: abundance
|
|
class _Translations$abundance$es extends Translations$abundance$en {
|
|
_Translations$abundance$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get add => 'Cuánta tengo';
|
|
@override String get title => 'Cuánta tengo';
|
|
@override String get none => 'Sin indicar';
|
|
@override String get plentyToShare => 'De sobra para compartir';
|
|
@override String get enoughToShare => 'Bastante, para compartir con moderación';
|
|
@override String get enoughForMe => 'Suficiente para mí';
|
|
@override String get runningLow => 'Queda poca';
|
|
}
|
|
|
|
// Path: share
|
|
class _Translations$share$es extends Translations$share$en {
|
|
_Translations$share$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get add => '¿La compartes?';
|
|
@override String get title => '¿La compartes?';
|
|
@override String get nudge => 'Tienes de sobra: podrías compartir un poco.';
|
|
@override String get private => 'Solo para mí';
|
|
@override String get gift => 'Para regalar';
|
|
@override String get exchange => 'Para intercambiar';
|
|
@override String get sell => 'En venta';
|
|
@override String get filterChip => 'Comparto';
|
|
@override String get printCatalog => 'Imprimir lo que comparto';
|
|
@override String get catalogTitle => 'Lo que comparto';
|
|
@override String get catalogSaved => 'Catálogo guardado';
|
|
@override String get cancelled => 'Cancelado';
|
|
}
|
|
|
|
// Path: cropCalendar
|
|
class _Translations$cropCalendar$es extends Translations$cropCalendar$en {
|
|
_Translations$cropCalendar$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get add => 'Calendario de cultivo';
|
|
@override String get title => 'Calendario de cultivo';
|
|
@override String get sow => 'Siembra';
|
|
@override String get transplant => 'Trasplante';
|
|
@override String get flowering => 'Floración';
|
|
@override String get fruiting => 'Fructificación';
|
|
@override String get seedHarvest => 'Cosecha de semilla';
|
|
@override String get unset => '—';
|
|
}
|
|
|
|
// Path: needsReproduction
|
|
class _Translations$needsReproduction$es extends Translations$needsReproduction$en {
|
|
_Translations$needsReproduction$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get label => 'Reproducir esta temporada';
|
|
@override String get hint => 'Cultívala antes de que se acabe la semilla';
|
|
@override String get badge => 'Por reproducir';
|
|
}
|
|
|
|
// Path: preservation
|
|
class _Translations$preservation$es extends Translations$preservation$en {
|
|
_Translations$preservation$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get add => 'Cómo se conserva';
|
|
@override String get title => 'Cómo se conserva';
|
|
@override String get none => 'Sin especificar';
|
|
@override String get jarWithDesiccant => 'Bote con desecante';
|
|
@override String get glassJar => 'Bote de cristal';
|
|
@override String get paperEnvelope => 'Sobre de papel';
|
|
@override String get paperBag => 'Bolsa de papel';
|
|
@override String get plasticBag => 'Bolsa de plástico';
|
|
}
|
|
|
|
// Path: conditionCheck
|
|
class _Translations$conditionCheck$es extends Translations$conditionCheck$en {
|
|
_Translations$conditionCheck$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get advanced => 'Conservación y detalles del banco';
|
|
@override String get title => 'Revisiones de conservación';
|
|
@override String get add => 'Añadir revisión';
|
|
@override String get containers => 'Botes / recipientes';
|
|
@override String get desiccant => 'Desecante';
|
|
@override String get none => 'Aún no hay revisiones.';
|
|
@override String summary({required Object count, required Object state}) => '${count} bote(s) · ${state}';
|
|
}
|
|
|
|
// Path: desiccant
|
|
class _Translations$desiccant$es extends Translations$desiccant$en {
|
|
_Translations$desiccant$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get none => 'No tiene';
|
|
@override String get add => 'Se pone';
|
|
@override String get replace => 'Se cambia';
|
|
@override String get dry => 'Azul — seco';
|
|
@override String get fresh => 'Recién puesto';
|
|
}
|
|
|
|
// 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
|
|
|
|
// Translations
|
|
@override String get aFew => 'unas pocas';
|
|
@override String get some => 'algunas';
|
|
@override String get plenty => 'muchas';
|
|
@override String get pinch => 'una pizca';
|
|
@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$seedling$es seedling = _Translations$unit$seedling$es._(_root);
|
|
@override late final _Translations$unit$tree$es tree = _Translations$unit$tree$es._(_root);
|
|
@override late final _Translations$unit$cutting$es cutting = _Translations$unit$cutting$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: intro.slides
|
|
class _Translations$intro$slides$es extends Translations$intro$slides$en {
|
|
_Translations$intro$slides$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override late final _Translations$intro$slides$welcome$es welcome = _Translations$intro$slides$welcome$es._(_root);
|
|
@override late final _Translations$intro$slides$inventory$es inventory = _Translations$intro$slides$inventory$es._(_root);
|
|
@override late final _Translations$intro$slides$privacy$es privacy = _Translations$intro$slides$privacy$es._(_root);
|
|
@override late final _Translations$intro$slides$share$es share = _Translations$intro$slides$share$es._(_root);
|
|
@override late final _Translations$intro$slides$plantare$es plantare = _Translations$intro$slides$plantare$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.seedling
|
|
class _Translations$unit$seedling$es extends Translations$unit$seedling$en {
|
|
_Translations$unit$seedling$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get singular => 'plántula';
|
|
@override String get plural => 'plántulas';
|
|
}
|
|
|
|
// Path: unit.tree
|
|
class _Translations$unit$tree$es extends Translations$unit$tree$en {
|
|
_Translations$unit$tree$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get singular => 'árbol';
|
|
@override String get plural => 'árboles';
|
|
}
|
|
|
|
// Path: unit.cutting
|
|
class _Translations$unit$cutting$es extends Translations$unit$cutting$en {
|
|
_Translations$unit$cutting$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get singular => 'esqueje';
|
|
@override String get plural => 'esquejes';
|
|
}
|
|
|
|
// 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';
|
|
}
|
|
|
|
// Path: intro.slides.welcome
|
|
class _Translations$intro$slides$welcome$es extends Translations$intro$slides$welcome$en {
|
|
_Translations$intro$slides$welcome$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get title => 'La semilla que te trajo hasta aquí';
|
|
@override String get body => 'Cada semilla tradicional es una carta escrita por miles de generaciones, que pasó de mano en mano. Somos lo que somos gracias a ese intercambio.';
|
|
}
|
|
|
|
// Path: intro.slides.inventory
|
|
class _Translations$intro$slides$inventory$es extends Translations$intro$slides$inventory$en {
|
|
_Translations$intro$slides$inventory$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get title => 'Tu banco de semillas, en el bolsillo';
|
|
@override String get body => 'Apunta qué tienes, de qué año, cuánto y de dónde vino, con el nombre que tú usas. Una foto y un nombre bastan para empezar.';
|
|
}
|
|
|
|
// Path: intro.slides.privacy
|
|
class _Translations$intro$slides$privacy$es extends Translations$intro$slides$privacy$en {
|
|
_Translations$intro$slides$privacy$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get title => 'Tuyo y solo tuyo';
|
|
@override String get body => 'Sin cuenta, sin internet, sin rastreadores. Tus datos viven cifrados en tu dispositivo y solo se comparte lo que tú decidas.';
|
|
}
|
|
|
|
// Path: intro.slides.share
|
|
class _Translations$intro$slides$share$es extends Translations$intro$slides$share$en {
|
|
_Translations$intro$slides$share$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get title => 'Compartir, como siempre se hizo';
|
|
@override String get body => 'Ofrece lo que te sobra —regalo, trueque o venta— y que alguien cerca lo encuentre. Solo se muestra la distancia aproximada, nunca tu dirección; el trato lo cierras en persona.';
|
|
}
|
|
|
|
// Path: intro.slides.plantare
|
|
class _Translations$intro$slides$plantare$es extends Translations$intro$slides$plantare$en {
|
|
_Translations$intro$slides$plantare$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
|
|
|
final TranslationsEs _root; // ignore: unused_field
|
|
|
|
// Translations
|
|
@override String get title => 'Sembrar es multiplicar';
|
|
@override String get body => 'Con el Plantare, quien recibe promete devolver semilla más adelante. Y como para devolverla hay que cultivarla, cada préstamo multiplica el común.';
|
|
}
|
|
|
|
/// The flat map containing all translations for locale <es>.
|
|
/// Only for edge cases! For simple maps, use the map function of this library.
|
|
///
|
|
/// The Dart AOT compiler has issues with very large switch statements,
|
|
/// so the map is split into smaller functions (512 entries each).
|
|
extension on TranslationsEs {
|
|
dynamic _flatMapFunction(String path) {
|
|
return switch (path) {
|
|
'app.title' => 'Tanemaki',
|
|
'common.save' => 'Guardar',
|
|
'common.cancel' => 'Cancelar',
|
|
'common.delete' => 'Eliminar',
|
|
'common.edit' => 'Editar',
|
|
'common.type' => 'Tipo',
|
|
'common.comingSoon' => 'Pronto',
|
|
'home.tagline' => 'Comparte y cultiva semillas locales',
|
|
'home.openMarket' => 'Mercado abierto',
|
|
'home.openMarketSubtitle' => 'Explora e intercambia',
|
|
'home.yourInventory' => 'Tu inventario',
|
|
'home.yourInventorySubtitle' => 'Gestiona tus semillas',
|
|
'photo.camera' => 'Hacer una foto',
|
|
'photo.gallery' => 'Elegir de la galería',
|
|
'photo.setAsCover' => 'Poner de portada',
|
|
'photo.isCover' => 'Foto de portada',
|
|
'photo.deleteConfirm' => '¿Borrar esta foto?',
|
|
'menu.tagline' => 'tu banco de semillas',
|
|
'menu.inventory' => 'Inventario',
|
|
'menu.market' => 'Mercado',
|
|
'menu.profile' => 'Tu perfil',
|
|
'menu.chat' => 'Chat',
|
|
'menu.wishlist' => 'Lista de deseos',
|
|
'menu.following' => 'Siguiendo',
|
|
'menu.settings' => 'Ajustes',
|
|
'settings.language' => 'Idioma',
|
|
'settings.systemLanguage' => 'Idioma del sistema',
|
|
'settings.langEs' => 'Español',
|
|
'settings.langEn' => 'English',
|
|
'settings.about' => 'Acerca de',
|
|
'settings.aboutText' => 'Inventario local y cifrado para semillas tradicionales. AGPL-3.0.',
|
|
'settings.aboutOpen' => 'Acerca de Tanemaki',
|
|
'backup.title' => 'Copia de seguridad',
|
|
'backup.exportJson' => 'Guardar una copia de seguridad',
|
|
'backup.exportJsonSubtitle' => 'Una copia completa para guardar a salvo, restaurar luego o pasar a otro dispositivo',
|
|
'backup.importJson' => 'Restaurar una copia',
|
|
'backup.importJsonSubtitle' => 'Recupera una copia guardada — no se duplica nada',
|
|
'backup.exportCsv' => 'Exportar a una hoja de cálculo',
|
|
'backup.exportCsvSubtitle' => 'Una lista sencilla para Excel o LibreOffice — sin fotos',
|
|
'backup.importCsv' => 'Importar una lista',
|
|
'backup.importCsvSubtitle' => 'Añade entradas desde una hoja de cálculo',
|
|
'backup.importConfirmTitle' => '¿Restaurar una copia?',
|
|
'backup.importConfirmBody' => 'Las entradas se fusionan con tu inventario; si una entrada existe en ambos lados, gana la versión más reciente. No se duplica nada.',
|
|
'backup.importCsvConfirmTitle' => '¿Importar una lista?',
|
|
'backup.importCsvConfirmBody' => 'Cada fila se añade como una entrada nueva. No fusiona ni reemplaza, así que importar el mismo fichero dos veces lo añade dos veces.',
|
|
'backup.importAction' => 'Importar',
|
|
'backup.exportSaved' => 'Copia guardada',
|
|
'backup.cancelled' => 'Cancelado',
|
|
'backup.importDone' => ({required Object added, required Object updated}) => 'Importado: ${added} nuevas, ${updated} actualizadas',
|
|
'backup.importCsvDone' => ({required Object count}) => 'Añadidas ${count} entradas',
|
|
'backup.importFailed' => 'Este fichero no se pudo leer como una copia de Tanemaki',
|
|
'backup.failed' => 'Algo ha salido mal',
|
|
'about.title' => 'Acerca de',
|
|
'about.kanji' => '種まき',
|
|
'about.tagline' => 'Una app local-first y descentralizada para gestionar y compartir semillas y plantones tradicionales.',
|
|
'about.intro' => 'Tanemaki (種まき, «sembrar / esparcir semillas» en japonés; nombre corto Tane, 種 «semilla») ayuda a personas y colectivos a llevar un inventario amable de su banco de semillas, decidir qué ofrecen y compartirlo localmente — sin un intermediario central que pueda controlarlo, censurarlo o ser multado por ello. El objetivo es a la vez práctico y político: apoyar las variedades tradicionales de semillas y plantar cara al monopolio semillero.',
|
|
'about.heritage' => 'El nombre honra las viejas tradiciones japonesas de ayuda mutua en torno al arroz — yui (trabajo comunitario compartido) y tanomoshi (fondos de reciprocidad) — que inspiraron el papel Plantare, la «moneda comunitaria para el intercambio de semillas» (BAH-Semillero, 2009, CC-BY-SA). Tanemaki es el Plantare digital.',
|
|
'about.version' => 'Versión',
|
|
'about.license' => 'Licencia',
|
|
'about.licenseValue' => 'AGPL-3.0',
|
|
'about.website' => 'Sitio web',
|
|
'about.openSourceLicenses' => 'Licencias de código abierto',
|
|
'about.openSourceLicensesSubtitle' => 'Bibliotecas de terceros y sus licencias',
|
|
'intro.skip' => 'Saltar',
|
|
'intro.next' => 'Siguiente',
|
|
'intro.start' => 'Empezar',
|
|
'intro.menuEntry' => 'Cómo funciona Tanemaki',
|
|
'intro.slides.welcome.title' => 'La semilla que te trajo hasta aquí',
|
|
'intro.slides.welcome.body' => 'Cada semilla tradicional es una carta escrita por miles de generaciones, que pasó de mano en mano. Somos lo que somos gracias a ese intercambio.',
|
|
'intro.slides.inventory.title' => 'Tu banco de semillas, en el bolsillo',
|
|
'intro.slides.inventory.body' => 'Apunta qué tienes, de qué año, cuánto y de dónde vino, con el nombre que tú usas. Una foto y un nombre bastan para empezar.',
|
|
'intro.slides.privacy.title' => 'Tuyo y solo tuyo',
|
|
'intro.slides.privacy.body' => 'Sin cuenta, sin internet, sin rastreadores. Tus datos viven cifrados en tu dispositivo y solo se comparte lo que tú decidas.',
|
|
'intro.slides.share.title' => 'Compartir, como siempre se hizo',
|
|
'intro.slides.share.body' => 'Ofrece lo que te sobra —regalo, trueque o venta— y que alguien cerca lo encuentre. Solo se muestra la distancia aproximada, nunca tu dirección; el trato lo cierras en persona.',
|
|
'intro.slides.plantare.title' => 'Sembrar es multiplicar',
|
|
'intro.slides.plantare.body' => 'Con el Plantare, quien recibe promete devolver semilla más adelante. Y como para devolverla hay que cultivarla, cada préstamo multiplica el común.',
|
|
'inventory.title' => 'Inventario',
|
|
'inventory.searchHint' => 'Buscar semillas',
|
|
'inventory.empty' => 'Aún no hay semillas. Toca + para añadir la primera.',
|
|
'inventory.noMatches' => 'Ninguna semilla coincide con los filtros.',
|
|
'inventory.clearFilters' => 'Quitar filtros',
|
|
'inventory.uncategorized' => 'Sin categoría',
|
|
'inventory.needsReproductionFilter' => 'Por reproducir',
|
|
'draft.capture' => 'Capturar fotos',
|
|
'draft.captured' => ({required Object n}) => '${n} capturadas por catalogar',
|
|
'draft.triageTitle' => 'Por catalogar',
|
|
'draft.triageCount' => ({required Object n}) => '${n} por catalogar',
|
|
'draft.untitled' => 'Sin nombre',
|
|
'draft.nameField' => 'Nombra esta semilla',
|
|
'draft.nameHint' => '¿Qué es?',
|
|
'draft.suggestFromPhoto' => 'Sugerir nombre de la foto',
|
|
'draft.discard' => 'Descartar',
|
|
'quickAdd.title' => 'Añadir una semilla',
|
|
'quickAdd.labelField' => 'Nombre',
|
|
'quickAdd.labelRequired' => 'Ponle un nombre',
|
|
'quickAdd.addPhoto' => 'Añadir foto',
|
|
'quickAdd.quantity' => '¿Cuánta?',
|
|
'quickAdd.more' => 'Añadir más…',
|
|
'quickAdd.save' => 'Guardar',
|
|
'quickAdd.saveAndAddAnother' => 'Guardar y añadir otra',
|
|
'quickAdd.addedCount' => ({required Object n}) => '${n} añadidas',
|
|
'quickAdd.cancel' => 'Cancelar',
|
|
'detail.notFound' => 'Esta semilla ya no está aquí.',
|
|
'detail.lots' => 'Lotes',
|
|
'detail.noLots' => 'Aún no hay lotes.',
|
|
'detail.names' => 'También conocida como',
|
|
'detail.addName' => 'Añadir nombre',
|
|
'detail.links' => 'Enlaces',
|
|
'detail.addLink' => 'Añadir enlace',
|
|
'detail.linkUrl' => 'URL',
|
|
'detail.linkTitle' => 'Título (opcional)',
|
|
'detail.reference' => 'Saber más',
|
|
'detail.refGbif' => 'GBIF',
|
|
'detail.refWikipedia' => 'Wikipedia',
|
|
'detail.refWikispecies' => 'Wikispecies',
|
|
'detail.notes' => 'Notas',
|
|
'detail.addLot' => 'Añadir lote',
|
|
'detail.editLot' => 'Editar lote',
|
|
'detail.deleteConfirm' => '¿Eliminar esta semilla?',
|
|
'detail.year' => ({required Object year}) => 'Año ${year}',
|
|
'detail.noYear' => 'Año desconocido',
|
|
'germination.title' => 'Germinación',
|
|
'germination.add' => 'Añadir prueba',
|
|
'germination.sampleSize' => 'Muestra',
|
|
'germination.germinated' => 'Germinadas',
|
|
'germination.none' => 'Aún no hay pruebas de germinación.',
|
|
'germination.result' => ({required Object percent}) => '${percent}%',
|
|
'viability.expiringSoon' => 'Úsala o multiplícala esta temporada',
|
|
'viability.expiringSoonYears' => ({required Object years}) => 'Úsala o multiplícala esta temporada · dura ~${years} años',
|
|
'viability.expired' => 'Supera su viabilidad típica — a multiplicar',
|
|
'viability.expiredYears' => ({required Object years}) => 'Supera su viabilidad típica (~${years} años) — a multiplicar',
|
|
'editVariety.title' => 'Editar semilla',
|
|
'editVariety.name' => 'Nombre',
|
|
'editVariety.category' => 'Categoría',
|
|
'editVariety.notes' => 'Notas',
|
|
'editVariety.species' => 'Especie (del catálogo)',
|
|
'editVariety.speciesHint' => 'Buscar una especie…',
|
|
'editVariety.organic' => 'Ecológica',
|
|
'editVariety.organicHint' => 'Cultivada de forma ecológica (eco)',
|
|
'addLot.title' => 'Añadir lote',
|
|
'addLot.year' => 'Fecha de cosecha',
|
|
'addLot.quantity' => '¿Cuánta?',
|
|
'addLot.amount' => 'Cantidad',
|
|
'harvest.pickTitle' => 'Seleccionar mes / año',
|
|
'harvest.anyMonth' => 'Cualquier mes',
|
|
'harvest.noDate' => 'Indicar fecha de cosecha',
|
|
'harvest.monthNames.0' => 'enero',
|
|
'harvest.monthNames.1' => 'febrero',
|
|
'harvest.monthNames.2' => 'marzo',
|
|
'harvest.monthNames.3' => 'abril',
|
|
'harvest.monthNames.4' => 'mayo',
|
|
'harvest.monthNames.5' => 'junio',
|
|
'harvest.monthNames.6' => 'julio',
|
|
'harvest.monthNames.7' => 'agosto',
|
|
'harvest.monthNames.8' => 'septiembre',
|
|
'harvest.monthNames.9' => 'octubre',
|
|
'harvest.monthNames.10' => 'noviembre',
|
|
'harvest.monthNames.11' => 'diciembre',
|
|
'lotType.seed' => 'Semillas',
|
|
'lotType.plant' => 'Planta',
|
|
'lotType.seedling' => 'Plantón',
|
|
'lotType.tree' => 'Árbol / arbusto',
|
|
'lotType.bulb' => 'Bulbo / tubérculo',
|
|
'lotType.cutting' => 'Esqueje',
|
|
'presentation.title' => 'Envase',
|
|
'presentation.none' => 'Sin especificar',
|
|
'presentation.pot' => 'Maceta',
|
|
'presentation.tray' => 'Bandeja',
|
|
'presentation.plug' => 'Alvéolo',
|
|
'presentation.bareRoot' => 'Raíz desnuda',
|
|
'presentation.rootBall' => 'Cepellón',
|
|
'provenance.section' => 'De dónde viene',
|
|
'provenance.seedsFrom' => 'Semillas de',
|
|
'provenance.seedsFromHint' => 'Quién las cultivó o las dio',
|
|
'provenance.place' => 'Lugar',
|
|
'provenance.placeHint' => 'De dónde vienen (con provincia)',
|
|
'provenance.addSeedsFrom' => 'Semillas de',
|
|
'provenance.addPlace' => 'Lugar',
|
|
'abundance.add' => 'Cuánta tengo',
|
|
'abundance.title' => 'Cuánta tengo',
|
|
'abundance.none' => 'Sin indicar',
|
|
'abundance.plentyToShare' => 'De sobra para compartir',
|
|
'abundance.enoughToShare' => 'Bastante, para compartir con moderación',
|
|
'abundance.enoughForMe' => 'Suficiente para mí',
|
|
'abundance.runningLow' => 'Queda poca',
|
|
'share.add' => '¿La compartes?',
|
|
'share.title' => '¿La compartes?',
|
|
'share.nudge' => 'Tienes de sobra: podrías compartir un poco.',
|
|
'share.private' => 'Solo para mí',
|
|
'share.gift' => 'Para regalar',
|
|
'share.exchange' => 'Para intercambiar',
|
|
'share.sell' => 'En venta',
|
|
'share.filterChip' => 'Comparto',
|
|
'share.printCatalog' => 'Imprimir lo que comparto',
|
|
'share.catalogTitle' => 'Lo que comparto',
|
|
'share.catalogSaved' => 'Catálogo guardado',
|
|
'share.cancelled' => 'Cancelado',
|
|
'cropCalendar.add' => 'Calendario de cultivo',
|
|
'cropCalendar.title' => 'Calendario de cultivo',
|
|
'cropCalendar.sow' => 'Siembra',
|
|
'cropCalendar.transplant' => 'Trasplante',
|
|
'cropCalendar.flowering' => 'Floración',
|
|
'cropCalendar.fruiting' => 'Fructificación',
|
|
'cropCalendar.seedHarvest' => 'Cosecha de semilla',
|
|
'cropCalendar.unset' => '—',
|
|
'needsReproduction.label' => 'Reproducir esta temporada',
|
|
'needsReproduction.hint' => 'Cultívala antes de que se acabe la semilla',
|
|
'needsReproduction.badge' => 'Por reproducir',
|
|
'preservation.add' => 'Cómo se conserva',
|
|
'preservation.title' => 'Cómo se conserva',
|
|
'preservation.none' => 'Sin especificar',
|
|
'preservation.jarWithDesiccant' => 'Bote con desecante',
|
|
'preservation.glassJar' => 'Bote de cristal',
|
|
'preservation.paperEnvelope' => 'Sobre de papel',
|
|
'preservation.paperBag' => 'Bolsa de papel',
|
|
'preservation.plasticBag' => 'Bolsa de plástico',
|
|
'conditionCheck.advanced' => 'Conservación y detalles del banco',
|
|
'conditionCheck.title' => 'Revisiones de conservación',
|
|
'conditionCheck.add' => 'Añadir revisión',
|
|
'conditionCheck.containers' => 'Botes / recipientes',
|
|
'conditionCheck.desiccant' => 'Desecante',
|
|
'conditionCheck.none' => 'Aún no hay revisiones.',
|
|
'conditionCheck.summary' => ({required Object count, required Object state}) => '${count} bote(s) · ${state}',
|
|
'desiccant.none' => 'No tiene',
|
|
'desiccant.add' => 'Se pone',
|
|
'desiccant.replace' => 'Se cambia',
|
|
'desiccant.dry' => 'Azul — seco',
|
|
'desiccant.fresh' => 'Recién puesto',
|
|
'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.seedling.singular' => 'plántula',
|
|
'unit.seedling.plural' => 'plántulas',
|
|
'unit.tree.singular' => 'árbol',
|
|
'unit.tree.plural' => 'árboles',
|
|
'unit.cutting.singular' => 'esqueje',
|
|
'unit.cutting.plural' => 'esquejes',
|
|
'unit.grams.singular' => 'gramo',
|
|
'unit.grams.plural' => 'gramos',
|
|
'unit.count.singular' => 'semilla',
|
|
'unit.count.plural' => 'semillas',
|
|
_ => null,
|
|
};
|
|
}
|
|
}
|