tane/apps/app_seeds/lib/i18n/strings_es.g.dart
vjrj 6c8a1ad129 Merge branch 'worktree-print-labels': print seed labels with QR
# Conflicts:
#	apps/app_seeds/lib/i18n/strings.g.dart
#	apps/app_seeds/lib/ui/inventory_list_screen.dart
2026-07-10 19:19:29 +02:00

1493 lines
70 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$bootstrap$es bootstrap = _Translations$bootstrap$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$printLabels$es printLabels = _Translations$printLabels$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);
@override late final _Translations$market$es market = _Translations$market$es._(_root);
@override late final _Translations$profile$es profile = _Translations$profile$es._(_root);
@override late final _Translations$chatList$es chatList = _Translations$chatList$es._(_root);
@override late final _Translations$chat$es chat = _Translations$chat$es._(_root);
@override late final _Translations$trust$es trust = _Translations$trust$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: bootstrap
class _Translations$bootstrap$es extends Translations$bootstrap$en {
_Translations$bootstrap$es._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get failed => 'Tanemaki no pudo arrancar';
@override String get retry => 'Reintentar';
}
// 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';
@override String get offline => 'Sin conexión — el compartir está en pausa';
}
// 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';
@override String get openMarketSubtitle => 'Descubre y comparte semillas cerca';
@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 langPt => 'Português';
@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 autoBackupTitle => 'Copias automáticas';
@override String autoBackupLast({required Object date}) => 'Última copia guardada el ${date}';
@override String get autoBackupNone => 'Se guarda una copia automáticamente en segundo plano';
@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';
@override String get recoveryTitle => 'Tu código de recuperación';
@override String get recoverySubtitle => 'Imprímelo y guárdalo bien: abre tus copias en otro dispositivo';
@override String get recoveryIntro => 'Este código abre tus copias guardadas y recupera tu banco en cualquier dispositivo. Guarda dos copias en papel en sitios seguros, como tu mejor semilla. Quien lo tenga puede leer tus copias, así que no lo compartas con nadie.';
@override String get recoveryCopy => 'Copiar';
@override String get recoverySave => 'Guardar la hoja';
@override String get recoverySheetTitle => 'Tanemaki — tu hoja de recuperación';
@override String get recoveryPromptTitle => 'Escribe tu código de recuperación';
@override String get recoveryPromptBody => 'Esta copia se guardó con otro código. Escribe el código de tu hoja de recuperación para abrirla.';
@override String get recoveryWrongCode => 'Ese código no abre esta copia';
}
// 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';
@override String copyright({required Object years}) => '© ${years} Asociación Comunes, bajo AGPLv3';
}
// 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 speciesSuggested => 'Sugerida por el nombre';
@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: printLabels
class _Translations$printLabels$es extends Translations$printLabels$en {
_Translations$printLabels$es._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get action => 'Imprimir etiquetas';
@override String get title => 'Imprimir etiquetas';
@override String get selectHint => 'Elige las semillas para imprimir sus etiquetas';
@override String get selectAll => 'Seleccionar todo';
@override String selected({required Object n}) => '${n} seleccionadas';
@override String get none => 'Selecciona semillas primero';
@override String get format => 'Tamaño de etiqueta';
@override String get formatStickers => 'Pegatinas pequeñas';
@override String get formatStickersHint => 'Muchas etiquetas pequeñas por hoja — para pegar en sobres';
@override String get formatCards => 'Tarjetas grandes';
@override String get formatCardsHint => 'Menos etiquetas, más grandes — para botes y cajas';
@override String count({required Object n}) => '${n} etiquetas';
@override String get save => 'Guardar etiquetas';
@override String get saved => 'Etiquetas guardadas';
@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: market
class _Translations$market$es extends Translations$market$en {
_Translations$market$es._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get title => 'Semillas cerca de ti';
@override String get subtitle => 'Lo que otras personas comparten cerca';
@override String get notSetUp => 'Aún no has configurado el compartir';
@override String get notSetUpBody => 'Activa el compartir para ver y dar semillas a gente cercana. Se mantiene aproximado — tu zona, nunca tu dirección exacta.';
@override String get setUp => 'Configurar el compartir';
@override String get cantReach => 'No se puede conectar con los servidores ahora mismo';
@override String get cantReachBody => 'Inténtalo de nuevo, o revisa los servidores en la configuración avanzada.';
@override String get retry => 'Reintentar';
@override String get setArea => 'Indica tu zona';
@override String get setAreaBody => 'Dile al mercado tu zona aproximada para ver semillas cerca.';
@override String get searching => 'Buscando por tu zona…';
@override String get empty => 'Aún no hay semillas compartidas cerca de ti';
@override String get searchHint => 'Buscar entre estas semillas';
@override String get noMatches => 'Ninguna semilla compartida coincide con tu búsqueda';
@override String get near => 'Cerca de ti';
@override String get contact => 'Mensaje';
@override String get mine => '';
@override String get configTitle => 'Configuración de compartir';
@override String get setupIntro => 'Compartir con gente cercana es opcional. Solo indica tu zona aproximada — ya estás conectado a servidores comunitarios compartidos para que otras personas encuentren lo que ofreces, sin ninguna empresa en medio.';
@override String get areaLabel => 'Tu zona';
@override String get areaHelp => 'Se mantiene aproximado a propósito — tu zona, nunca un punto exacto.';
@override String get areaSet => 'Tu zona está puesta — aproximada, nunca tu punto exacto';
@override String get areaNotSet => 'Zona sin definir — usa tu ubicación, o añade un código en Avanzado';
@override String get advanced => 'Avanzado';
@override String get areaCodeLabel => 'Código de zona';
@override String get areaCodeHint => 'Un código corto como sp3e9 — no un nombre de lugar';
@override String get serversLabel => 'Servidores de la comunidad';
@override String get serversHelp => 'Una dirección por línea (wss://…). Déjalo así si no sabes.';
@override String get serversAdvanced => 'Añadir otro servidor';
@override String get save => 'Guardar';
@override String get saved => 'Guardado';
@override String get wanted => 'Busco';
@override String get shareMine => 'Compartir mis semillas';
@override String sharedCount({required Object n}) => 'Compartidas ${n} semillas';
@override String get nothingToShare => 'Marca antes algunas semillas para regalar, cambiar o vender';
@override String get useLocation => 'Usar mi ubicación aproximada';
@override String get locationFailed => 'No se pudo obtener tu ubicación — comprueba que la ubicación está activada y el permiso concedido';
@override String get queued => 'Guardado — las compartiremos cuando tengas conexión';
@override String get shareFailed => 'No se pudo conectar con los servidores — tus semillas no se compartieron. Inténtalo de nuevo en un momento.';
@override String get rangeLabel => 'Hasta dónde buscar';
@override String get rangeNear => 'Muy cerca';
@override String get rangeArea => 'Por mi zona';
@override String get rangeRegion => 'Mi región';
@override String get sharedBy => 'Compartido por';
@override String get noProfile => 'Esta persona aún no ha compartido su perfil';
@override String get copyId => 'Copiar código';
@override String get idCopied => 'Código copiado';
}
// Path: profile
class _Translations$profile$es extends Translations$profile$en {
_Translations$profile$es._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get title => 'Tu perfil';
@override String get name => 'Nombre';
@override String get nameHint => 'Cómo te ven los demás';
@override String get about => 'Sobre ti';
@override String get aboutHint => 'Una línea — qué cultivas, dónde';
@override String get g1 => 'Dirección Ğ1 (opcional)';
@override String get g1Hint => 'Para que te paguen en Ğ1 — aparte de tu clave';
@override String get yourId => 'Tu identidad';
@override String get idHelp => 'Compártela para que te reconozcan';
@override String get copy => 'Copiar';
@override String get copied => 'Copiado';
@override String get save => 'Guardar';
@override String get saved => 'Perfil guardado';
}
// Path: chatList
class _Translations$chatList$es extends Translations$chatList$en {
_Translations$chatList$es._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get title => 'Mensajes';
@override String get empty => 'Aún no hay conversaciones. Escribe a alguien desde el mercado.';
}
// Path: chat
class _Translations$chat$es extends Translations$chat$en {
_Translations$chat$es._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get title => 'Chat';
@override String get hint => 'Escribe un mensaje…';
@override String get send => 'Enviar';
@override String get empty => 'Aún no hay mensajes — saluda';
@override String get offline => 'Configura el compartir para enviar mensajes';
@override String get payG1 => 'Pagar en Ğ1';
@override String get g1Copied => 'Dirección Ğ1 copiada — pégala en tu cartera';
}
// Path: trust
class _Translations$trust$es extends Translations$trust$en {
_Translations$trust$es._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get none => 'Nadie los avala aún';
@override String count({required Object n}) => 'Avalada por ${n}';
@override String get vouch => 'Conozco a esta persona';
@override String get vouched => 'Avalas a esta persona';
@override String get circle => 'En tu círculo';
}
// 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',
'bootstrap.failed' => 'Tanemaki no pudo arrancar',
'bootstrap.retry' => 'Reintentar',
'common.save' => 'Guardar',
'common.cancel' => 'Cancelar',
'common.delete' => 'Eliminar',
'common.edit' => 'Editar',
'common.type' => 'Tipo',
'common.comingSoon' => 'Pronto',
'common.offline' => 'Sin conexión — el compartir está en pausa',
'home.tagline' => 'Comparte y cultiva semillas locales',
'home.openMarket' => 'Mercado',
'home.openMarketSubtitle' => 'Descubre y comparte semillas cerca',
'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.langPt' => 'Português',
'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.autoBackupTitle' => 'Copias automáticas',
'backup.autoBackupLast' => ({required Object date}) => 'Última copia guardada el ${date}',
'backup.autoBackupNone' => 'Se guarda una copia automáticamente en segundo plano',
'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',
'backup.recoveryTitle' => 'Tu código de recuperación',
'backup.recoverySubtitle' => 'Imprímelo y guárdalo bien: abre tus copias en otro dispositivo',
'backup.recoveryIntro' => 'Este código abre tus copias guardadas y recupera tu banco en cualquier dispositivo. Guarda dos copias en papel en sitios seguros, como tu mejor semilla. Quien lo tenga puede leer tus copias, así que no lo compartas con nadie.',
'backup.recoveryCopy' => 'Copiar',
'backup.recoverySave' => 'Guardar la hoja',
'backup.recoverySheetTitle' => 'Tanemaki — tu hoja de recuperación',
'backup.recoveryPromptTitle' => 'Escribe tu código de recuperación',
'backup.recoveryPromptBody' => 'Esta copia se guardó con otro código. Escribe el código de tu hoja de recuperación para abrirla.',
'backup.recoveryWrongCode' => 'Ese código no abre esta copia',
'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',
'about.copyright' => ({required Object years}) => '© ${years} Asociación Comunes, bajo AGPLv3',
'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.speciesSuggested' => 'Sugerida por el nombre',
'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',
'printLabels.action' => 'Imprimir etiquetas',
'printLabels.title' => 'Imprimir etiquetas',
'printLabels.selectHint' => 'Elige las semillas para imprimir sus etiquetas',
'printLabels.selectAll' => 'Seleccionar todo',
'printLabels.selected' => ({required Object n}) => '${n} seleccionadas',
'printLabels.none' => 'Selecciona semillas primero',
'printLabels.format' => 'Tamaño de etiqueta',
'printLabels.formatStickers' => 'Pegatinas pequeñas',
'printLabels.formatStickersHint' => 'Muchas etiquetas pequeñas por hoja — para pegar en sobres',
'printLabels.formatCards' => 'Tarjetas grandes',
'printLabels.formatCardsHint' => 'Menos etiquetas, más grandes — para botes y cajas',
'printLabels.count' => ({required Object n}) => '${n} etiquetas',
'printLabels.save' => 'Guardar etiquetas',
'printLabels.saved' => 'Etiquetas guardadas',
'printLabels.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',
'market.title' => 'Semillas cerca de ti',
'market.subtitle' => 'Lo que otras personas comparten cerca',
'market.notSetUp' => 'Aún no has configurado el compartir',
'market.notSetUpBody' => 'Activa el compartir para ver y dar semillas a gente cercana. Se mantiene aproximado — tu zona, nunca tu dirección exacta.',
'market.setUp' => 'Configurar el compartir',
'market.cantReach' => 'No se puede conectar con los servidores ahora mismo',
'market.cantReachBody' => 'Inténtalo de nuevo, o revisa los servidores en la configuración avanzada.',
'market.retry' => 'Reintentar',
'market.setArea' => 'Indica tu zona',
'market.setAreaBody' => 'Dile al mercado tu zona aproximada para ver semillas cerca.',
'market.searching' => 'Buscando por tu zona…',
'market.empty' => 'Aún no hay semillas compartidas cerca de ti',
'market.searchHint' => 'Buscar entre estas semillas',
'market.noMatches' => 'Ninguna semilla compartida coincide con tu búsqueda',
'market.near' => 'Cerca de ti',
'market.contact' => 'Mensaje',
'market.mine' => '',
'market.configTitle' => 'Configuración de compartir',
'market.setupIntro' => 'Compartir con gente cercana es opcional. Solo indica tu zona aproximada — ya estás conectado a servidores comunitarios compartidos para que otras personas encuentren lo que ofreces, sin ninguna empresa en medio.',
'market.areaLabel' => 'Tu zona',
'market.areaHelp' => 'Se mantiene aproximado a propósito — tu zona, nunca un punto exacto.',
'market.areaSet' => 'Tu zona está puesta — aproximada, nunca tu punto exacto',
'market.areaNotSet' => 'Zona sin definir — usa tu ubicación, o añade un código en Avanzado',
'market.advanced' => 'Avanzado',
'market.areaCodeLabel' => 'Código de zona',
'market.areaCodeHint' => 'Un código corto como sp3e9 — no un nombre de lugar',
'market.serversLabel' => 'Servidores de la comunidad',
'market.serversHelp' => 'Una dirección por línea (wss://…). Déjalo así si no sabes.',
'market.serversAdvanced' => 'Añadir otro servidor',
'market.save' => 'Guardar',
'market.saved' => 'Guardado',
'market.wanted' => 'Busco',
'market.shareMine' => 'Compartir mis semillas',
'market.sharedCount' => ({required Object n}) => 'Compartidas ${n} semillas',
'market.nothingToShare' => 'Marca antes algunas semillas para regalar, cambiar o vender',
'market.useLocation' => 'Usar mi ubicación aproximada',
'market.locationFailed' => 'No se pudo obtener tu ubicación — comprueba que la ubicación está activada y el permiso concedido',
'market.queued' => 'Guardado — las compartiremos cuando tengas conexión',
'market.shareFailed' => 'No se pudo conectar con los servidores — tus semillas no se compartieron. Inténtalo de nuevo en un momento.',
'market.rangeLabel' => 'Hasta dónde buscar',
'market.rangeNear' => 'Muy cerca',
'market.rangeArea' => 'Por mi zona',
'market.rangeRegion' => 'Mi región',
'market.sharedBy' => 'Compartido por',
'market.noProfile' => 'Esta persona aún no ha compartido su perfil',
'market.copyId' => 'Copiar código',
'market.idCopied' => 'Código copiado',
'profile.title' => 'Tu perfil',
'profile.name' => 'Nombre',
'profile.nameHint' => 'Cómo te ven los demás',
'profile.about' => 'Sobre ti',
'profile.aboutHint' => 'Una línea — qué cultivas, dónde',
'profile.g1' => 'Dirección Ğ1 (opcional)',
'profile.g1Hint' => 'Para que te paguen en Ğ1 — aparte de tu clave',
'profile.yourId' => 'Tu identidad',
'profile.idHelp' => 'Compártela para que te reconozcan',
'profile.copy' => 'Copiar',
'profile.copied' => 'Copiado',
'profile.save' => 'Guardar',
'profile.saved' => 'Perfil guardado',
'chatList.title' => 'Mensajes',
'chatList.empty' => 'Aún no hay conversaciones. Escribe a alguien desde el mercado.',
'chat.title' => 'Chat',
'chat.hint' => 'Escribe un mensaje…',
'chat.send' => 'Enviar',
'chat.empty' => 'Aún no hay mensajes — saluda',
'chat.offline' => 'Configura el compartir para enviar mensajes',
'chat.payG1' => 'Pagar en Ğ1',
'chat.g1Copied' => 'Dirección Ğ1 copiada — pégala en tu cartera',
'trust.none' => 'Nadie los avala aún',
'trust.count' => ({required Object n}) => 'Avalada por ${n}',
'trust.vouch' => 'Conozco a esta persona',
'trust.vouched' => 'Avalas a esta persona',
'trust.circle' => 'En tu círculo',
_ => null,
};
}
}