Closes the physical↔digital loop the labels opened: the QR on a printed envelope (tane://seed, already encoded by seed_label_codec) can now be scanned from the inventory bar. A known label opens its variety; an unknown one asks before adding anything, then creates the variety (species linked by exact scientific name when bundled) with a lot carrying the label's year and origin. Scanner is pure ZXing (zxing_barcode_scanner, MIT) — no ML Kit, no Play Services, F-Droid-safe, the stack Ğ1nkgo ships. Mobile-only; other platforms don't show the button (OCR precedent). The post-scan flow is a plain function (handleScannedPayload) so it's widget-tested without a camera.
2163 lines
109 KiB
Dart
2163 lines
109 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$avatar$es avatar = _Translations$avatar$es._(_root);
|
||
@override late final _Translations$favorites$es favorites = _Translations$favorites$es._(_root);
|
||
@override late final _Translations$savedSearches$es savedSearches = _Translations$savedSearches$es._(_root);
|
||
@override late final _Translations$seedSaving$es seedSaving = _Translations$seedSaving$es._(_root);
|
||
@override late final _Translations$calendar$es calendar = _Translations$calendar$es._(_root);
|
||
@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$scan$es scan = _Translations$scan$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);
|
||
@override late final _Translations$yourPeople$es yourPeople = _Translations$yourPeople$es._(_root);
|
||
@override late final _Translations$ratings$es ratings = _Translations$ratings$es._(_root);
|
||
@override late final _Translations$notifications$es notifications = _Translations$notifications$es._(_root);
|
||
@override late final _Translations$plantare$es plantare = _Translations$plantare$es._(_root);
|
||
@override late final _Translations$handover$es handover = _Translations$handover$es._(_root);
|
||
@override late final _Translations$history$es history = _Translations$history$es._(_root);
|
||
@override late final _Translations$sale$es sale = _Translations$sale$es._(_root);
|
||
@override late final _Translations$legal$es legal = _Translations$legal$es._(_root);
|
||
@override late final _Translations$marketGate$es marketGate = _Translations$marketGate$es._(_root);
|
||
@override late final _Translations$report$es report = _Translations$report$es._(_root);
|
||
@override late final _Translations$block$es block = _Translations$block$es._(_root);
|
||
}
|
||
|
||
// Path: avatar
|
||
class _Translations$avatar$es extends Translations$avatar$en {
|
||
_Translations$avatar$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String get title => 'Tu foto o avatar';
|
||
@override String get fromPhoto => 'Hacer o elegir una foto';
|
||
@override String get illustration => 'O elige un dibujo';
|
||
@override String get remove => 'Quitar';
|
||
}
|
||
|
||
// Path: favorites
|
||
class _Translations$favorites$es extends Translations$favorites$en {
|
||
_Translations$favorites$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String get title => 'Favoritos';
|
||
@override String get empty => 'Aún no tienes favoritos. Guarda ofertas que te gusten del mercado.';
|
||
@override String get save => 'Guardar en favoritos';
|
||
@override String get remove => 'Quitar de favoritos';
|
||
@override String get unavailable => 'Ya no está disponible';
|
||
}
|
||
|
||
// Path: savedSearches
|
||
class _Translations$savedSearches$es extends Translations$savedSearches$en {
|
||
_Translations$savedSearches$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String get title => 'Búsquedas guardadas';
|
||
@override String get empty => 'Aún no tienes búsquedas guardadas. Guarda una búsqueda desde el mercado y te avisaremos cuando aparezca algo así en tu zona.';
|
||
@override String get save => 'Guardar esta búsqueda';
|
||
@override String get nameLabel => 'Nombra esta búsqueda';
|
||
@override String get namePlaceholder => 'p. ej. Tomates cerca';
|
||
@override String get saved => 'Búsqueda guardada — te avisaremos de lo nuevo que encaje cerca';
|
||
@override String get openTooltip => 'Búsquedas guardadas';
|
||
@override String get delete => 'Eliminar';
|
||
@override String get deleteConfirm => '¿Eliminar esta búsqueda guardada?';
|
||
@override String newMatchesBadge({required Object n}) => '${n} nuevas';
|
||
@override String alert({required Object label}) => 'Semillas nuevas cerca: ${label}';
|
||
}
|
||
|
||
// Path: seedSaving
|
||
class _Translations$seedSaving$es extends Translations$seedSaving$en {
|
||
_Translations$seedSaving$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String get title => 'Conservar su semilla';
|
||
@override String get subtitle => 'Lo que hace falta para mantener la variedad fiel';
|
||
@override String get lifeCycle => 'Ciclo';
|
||
@override String get cycleAnnual => 'Anual';
|
||
@override String get cycleBiennial => 'Bienal — da semilla el 2.º año';
|
||
@override String get cyclePerennial => 'Perenne';
|
||
@override String get pollination => 'Polinización';
|
||
@override String get pollSelf => 'Se autopoliniza';
|
||
@override String get pollCross => 'Se cruza con otras';
|
||
@override String get pollMixed => 'Se autopoliniza, pero se cruza a veces';
|
||
@override String get byInsect => 'por insectos';
|
||
@override String get byWind => 'por el viento';
|
||
@override String get isolation => 'Sepárala';
|
||
@override String isolationRange({required Object min, required Object max}) => '${min}–${max} m de otras variedades';
|
||
@override String isolationSingle({required Object min}) => '${min} m de otras variedades';
|
||
@override String get plants => 'Guarda de varias plantas';
|
||
@override String plantsValue({required Object n}) => 'De al menos ${n} plantas';
|
||
@override String get processing => 'Cómo limpiarla';
|
||
@override String get procDry => 'Semilla seca (trillar)';
|
||
@override String get procWet => 'Semilla húmeda (fermentar y lavar)';
|
||
@override String get difficulty => 'Dificultad';
|
||
@override String get diffEasy => 'Fácil';
|
||
@override String get diffMedium => 'Media';
|
||
@override String get diffHard => 'Difícil';
|
||
@override String get advisory => 'Orientativo — adáptalo a tu clima y variedad.';
|
||
@override String get sourcePrefix => 'Fuente';
|
||
}
|
||
|
||
// Path: calendar
|
||
class _Translations$calendar$es extends Translations$calendar$en {
|
||
_Translations$calendar$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String get title => 'Este mes';
|
||
@override String get filterChip => 'Este mes';
|
||
@override String get selfNote => 'Lo que has anotado en tus variedades.';
|
||
@override String nothing({required Object month}) => 'Nada anotado para ${month}.';
|
||
}
|
||
|
||
// 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 => 'Tane';
|
||
}
|
||
|
||
// 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 => 'Tane 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 => 'Favoritos';
|
||
@override String get following => 'Siguiendo';
|
||
@override String get plantares => 'Plantares';
|
||
@override String get sales => 'Ventas';
|
||
@override String get calendar => 'Calendario';
|
||
@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 langFr => 'Français';
|
||
@override String get langDe => 'Deutsch';
|
||
@override String get langJa => '日本語';
|
||
@override String get about => 'Acerca de';
|
||
@override String get aboutText => 'Inventario local y cifrado para semillas tradicionales. AGPL-3.0.';
|
||
@override String get aboutOpen => 'Acerca de Tane';
|
||
}
|
||
|
||
// 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, required Object days}) => 'Última copia el ${date} · cada ${days} días';
|
||
@override String autoBackupNone({required Object days}) => 'Se guarda una copia automáticamente cada ${days} días';
|
||
@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 Tane';
|
||
@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 => 'Tane — 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 => 'Tane (種, «semilla» en japonés) 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. Su nombre viene de tanemaki (種まき), «sembrar / esparcir semillas». 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). Tane 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 sourceCode => 'Código fuente';
|
||
@override String get translate => 'Ayuda a traducir';
|
||
@override String get translateSubtitle => 'Ayuda a traer Tane a tu idioma';
|
||
@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 Tane';
|
||
@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';
|
||
@override String get loadError => 'No se pudo abrir tu banco de semillas. Quizá estaba ocupado: inténtalo de nuevo.';
|
||
@override String get retry => 'Reintentar';
|
||
}
|
||
|
||
// 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 price => 'Precio';
|
||
@override String get priceHint => 'Déjalo vacío para acordarlo luego';
|
||
@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: scan
|
||
class _Translations$scan$es extends Translations$scan$en {
|
||
_Translations$scan$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String get action => 'Escanear una etiqueta';
|
||
@override String get title => 'Escanear etiqueta';
|
||
@override String get notALabel => 'Ese código no es una etiqueta de semillas';
|
||
@override String get addTitle => 'No está en tu colección';
|
||
@override String addBody({required Object label}) => '¿Añadir «${label}» a tus semillas?';
|
||
@override String get add => 'Añadirla';
|
||
@override String get added => 'Añadida a tu colección';
|
||
}
|
||
|
||
// 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 editorHint => 'Anota tú los meses típicos de esta variedad en tu zona — son tus propias notas.';
|
||
@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 => 'Tú';
|
||
@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 => 'Elige qué servidores usar. Déjalo así si no sabes.';
|
||
@override String get serversAdvanced => 'Añadir otro servidor';
|
||
@override String get serverAddress => 'Dirección del servidor';
|
||
@override String get serverInvalid => 'Introduce una dirección válida (wss://…)';
|
||
@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';
|
||
@override String get photo => 'Foto';
|
||
}
|
||
|
||
// 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';
|
||
@override String get identities => 'Tus identidades';
|
||
@override String get identitiesHelp => 'Ten identidades separadas — cada una con sus mensajes y contactos. Todas salen de tu única copia de seguridad, así que cambiar no añade nada que recordar.';
|
||
@override String identityLabel({required Object n}) => 'Identidad ${n}';
|
||
@override String get current => 'En uso';
|
||
@override String get newIdentity => 'Nueva identidad';
|
||
@override String get switchTitle => '¿Cambiar de identidad?';
|
||
@override String get switchBody => 'Los mensajes y contactos se guardan por separado para cada identidad. Puedes volver cuando quieras.';
|
||
@override String get switchAction => 'Cambiar';
|
||
}
|
||
|
||
// 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';
|
||
@override String get today => 'Hoy';
|
||
@override String get yesterday => 'Ayer';
|
||
@override String get sendError => 'No se pudo enviar — revisa tu conexión';
|
||
@override String get noLinks => 'No se permiten enlaces en los mensajes';
|
||
}
|
||
|
||
// 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: yourPeople
|
||
class _Translations$yourPeople$es extends Translations$yourPeople$en {
|
||
_Translations$yourPeople$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String get title => 'Tu gente';
|
||
@override String get help => 'Personas que conoces y avalas, y personas que te avalan.';
|
||
@override String get youVouchFor => 'Tú avalas a';
|
||
@override String get vouchesForYou => 'Te avalan';
|
||
@override String get youVouchForEmpty => 'Aún no avalas a nadie. Cuando conozcas a alguien, abre vuestro chat y toca "Conozco a esta persona".';
|
||
@override String get vouchesForYouEmpty => 'Nadie te avala todavía';
|
||
@override String get revoke => 'Dejar de avalar';
|
||
@override String get revokeConfirm => '¿Dejar de avalar a esta persona?';
|
||
@override String get offline => 'Sin conexión — inténtalo cuando estés en línea';
|
||
}
|
||
|
||
// Path: ratings
|
||
class _Translations$ratings$es extends Translations$ratings$en {
|
||
_Translations$ratings$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String get rate => 'Valorar a esta persona';
|
||
@override String get edit => 'Editar tu valoración';
|
||
@override String get commentHint => '¿Qué tal fue? (opcional)';
|
||
@override String fromYourCircle({required Object n}) => '${n} de gente que conoces';
|
||
@override String get retract => 'Quitar tu valoración';
|
||
@override String get saved => 'Valoración guardada';
|
||
}
|
||
|
||
// Path: notifications
|
||
class _Translations$notifications$es extends Translations$notifications$en {
|
||
_Translations$notifications$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String newMessageFrom({required Object name}) => 'Nuevo mensaje de ${name}';
|
||
}
|
||
|
||
// Path: plantare
|
||
class _Translations$plantare$es extends Translations$plantare$en {
|
||
_Translations$plantare$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String get title => 'Plantares';
|
||
@override String get help => 'Un Plantare es el compromiso de reproducir una semilla y devolver una parte — así una variedad sigue viajando de mano en mano. No es una venta.';
|
||
@override String get add => 'Añadir compromiso';
|
||
@override String get empty => 'Aún no hay compromisos. Cuando compartas o recibas semilla con el compromiso de reproducirla y devolver algo, anótalo aquí.';
|
||
@override String get iReturn => 'La reproduzco y devuelvo yo';
|
||
@override String get owedToMe => 'Me la devuelven a mí';
|
||
@override String get direction => 'Quién reproduce y devuelve';
|
||
@override String get counterparty => '¿Con quién?';
|
||
@override String get counterpartyHint => 'Una persona o un colectivo (opcional)';
|
||
@override String get owed => '¿Qué se devuelve?';
|
||
@override String get owedHint => 'p. ej. un puñado la próxima temporada (opcional)';
|
||
@override String get note => 'Nota (opcional)';
|
||
@override String get save => 'Guardar';
|
||
@override String get markReturned => 'Marcar devuelto';
|
||
@override String get markForgiven => 'Dar por saldado';
|
||
@override String get reopen => 'Reabrir';
|
||
@override String get delete => 'Quitar';
|
||
@override String get statusReturned => 'Devuelto';
|
||
@override String get statusForgiven => 'Saldado';
|
||
@override String get openSection => 'Pendientes';
|
||
@override String get settledSection => 'Hechos';
|
||
@override String get removeConfirm => '¿Quitar este compromiso?';
|
||
@override String returnBy({required Object date}) => 'Devolver antes del ${date}';
|
||
@override String get overdue => 'vencido';
|
||
@override String get dueByLabel => 'Devolver antes de (opcional)';
|
||
@override String get dueByHint => 'Un recordatorio suave, nunca obligatorio';
|
||
@override String get pickDate => 'Elegir fecha';
|
||
@override String get clearDate => 'Quitar fecha';
|
||
@override String get sectionTitle => 'Compromisos';
|
||
@override String get propose => 'Proponer un Plantaré firmado';
|
||
@override String get proposeHelp => 'Los dos guardáis la misma promesa, firmada por ambos: prueba de que esta semilla cambió de manos y se cultivará y devolverá.';
|
||
@override String proposeTo({required Object name}) => 'Con ${name}';
|
||
@override String get sent => 'Propuesta enviada — esperando su firma';
|
||
@override String get seedLabel => '¿Qué semilla?';
|
||
@override String get seedHint => 'La variedad a la que se refiere la promesa';
|
||
@override String get returnKindLabel => '¿Qué se devuelve?';
|
||
@override String get returnSimilar => 'Una cantidad similar de semilla';
|
||
@override String get returnSimilarNote => 'polinización abierta · no transgénica · cultivada en ecológico';
|
||
@override String get returnWork => 'Unas horas de trabajo';
|
||
@override String get returnOther => 'Otra cosa';
|
||
@override String get workHoursLabel => '¿Cuántas horas?';
|
||
@override String get proposalsSection => 'Esperando tu respuesta';
|
||
@override String incomingFrom({required Object name}) => '${name} te propone un Plantaré';
|
||
@override String get accept => 'Aceptar y firmar';
|
||
@override String get declineAction => 'Rechazar';
|
||
@override String get declineReasonHint => 'Motivo (opcional)';
|
||
@override String get acceptedToast => 'Firmado — ahora lo guardáis los dos';
|
||
@override String get declinedToast => 'Rechazado';
|
||
@override String get badgeAwaiting => 'Falta firma';
|
||
@override String get badgeSigned => 'Firmado por ambos';
|
||
@override String get badgeDeclined => 'Rechazado';
|
||
@override String get offline => 'Estás sin conexión — se enviará al reconectar';
|
||
}
|
||
|
||
// Path: handover
|
||
class _Translations$handover$es extends Translations$handover$en {
|
||
_Translations$handover$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String get title => 'Di o recibí semillas';
|
||
@override String get help => 'Un regalo, un trueque o una venta: apúntalo, con promesa de devolver semilla o sin ella.';
|
||
@override String get iGave => 'Di semillas';
|
||
@override String get iReceived => 'Recibí semillas';
|
||
@override String get whichLot => '¿De qué lote?';
|
||
@override String get howMuch => '¿Cuánto?';
|
||
@override String get allOfIt => 'Todo';
|
||
@override String get partOfIt => 'Una parte';
|
||
@override String get paymentChip => 'Hubo dinero por medio';
|
||
@override String get promiseGave => 'Me devolverán semilla';
|
||
@override String get promiseReceived => 'Devolveré semilla';
|
||
}
|
||
|
||
// Path: history
|
||
class _Translations$history$es extends Translations$history$en {
|
||
_Translations$history$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String get title => 'Historia de este lote';
|
||
@override String get tooltip => 'Historia';
|
||
@override String get sowToday => 'Sembrado hoy';
|
||
@override String get harvestToday => 'Cosechado hoy';
|
||
@override String get sownRecorded => 'Siembra anotada';
|
||
@override String get harvestRecorded => 'Cosecha anotada';
|
||
@override String get movementReceived => 'Recibido';
|
||
@override String get movementGiven => 'Regalado';
|
||
@override String get movementSown => 'Sembrado';
|
||
@override String get movementHarvested => 'Cosechado';
|
||
@override String get movementGerminationTest => 'Prueba de germinación';
|
||
@override String get movementSplit => 'Repartido en lotes';
|
||
@override String get movementDiscarded => 'Descartado';
|
||
@override String get created => 'Entró en tu colección';
|
||
@override String from({required Object origin}) => 'De ${origin}';
|
||
@override String germinationResult({required Object percent}) => 'Prueba de germinación — ${percent}%';
|
||
@override String get linkedEarlier => 'Viene de un lote anterior';
|
||
@override String get outcomeQuestion => '¿Qué tal se dio?';
|
||
@override String get outcomeGood => 'Bien';
|
||
@override String get outcomeMixed => 'Regular';
|
||
@override String get outcomePoor => 'Mal';
|
||
@override String get outcomeNoteHint => 'Una nota para tu yo del futuro (opcional)';
|
||
@override String get outcomeSaved => 'Anotado';
|
||
@override String get ratedGood => 'Se dio bien';
|
||
@override String get ratedMixed => 'Se dio regular';
|
||
@override String get ratedPoor => 'Se dio mal';
|
||
@override String get outcomeTitle => 'Nota de temporada';
|
||
@override String outcomeYear({required Object year}) => 'Temporada ${year}';
|
||
}
|
||
|
||
// Path: sale
|
||
class _Translations$sale$es extends Translations$sale$en {
|
||
_Translations$sale$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String get title => 'Ventas';
|
||
@override String get help => 'Registra semilla vendida o comprada — dinero, Ğ1 o cualquier moneda. Un modelo aparte del regalo y del Plantare. Nunca se cobra comisión por las semillas.';
|
||
@override String get add => 'Registrar venta';
|
||
@override String get empty => 'Aún no hay ventas. Anota aquí lo que vendes o compras.';
|
||
@override String get iSold => 'Vendí';
|
||
@override String get iBought => 'Compré';
|
||
@override String get direction => '¿Vendes o compras?';
|
||
@override String get counterparty => '¿Con quién?';
|
||
@override String get counterpartyHint => 'Una persona o un colectivo (opcional)';
|
||
@override String get amount => 'Importe';
|
||
@override String get currency => 'Moneda';
|
||
@override String get currencyHint => '€, Ğ1, horas… (opcional)';
|
||
@override String get hours => 'horas';
|
||
@override String get note => 'Nota (opcional)';
|
||
@override String get save => 'Guardar';
|
||
@override String get delete => 'Quitar';
|
||
@override String get removeConfirm => '¿Quitar esta venta?';
|
||
}
|
||
|
||
// Path: legal
|
||
class _Translations$legal$es extends Translations$legal$en {
|
||
_Translations$legal$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String get title => 'Privacidad y normas';
|
||
@override String get subtitle => 'Tu privacidad, las normas del mercado y la legalidad de las semillas';
|
||
@override String get privacyTitle => 'Tu privacidad';
|
||
@override String get privacyBody => 'Tane funciona sin cuenta, y todo lo que registras se queda en tu dispositivo, cifrado. No hay publicidad, ni rastreadores, ni servidor de Tane.\n\nNo se comparte nada salvo que tú quieras: cuando publicas una oferta o tu perfil, o envías un mensaje, viaja por servidores comunitarios. Las ofertas solo llevan una zona aproximada — nunca tu dirección.\n\nLo que publicas es público, y pueden quedar copias incluso después de retirarlo — así que comparte con cuidado.';
|
||
@override String get rulesTitle => 'Las reglas del juego';
|
||
@override String get rulesBody => 'Tane es una herramienta, no una tienda: los intercambios se acuerdan directamente entre personas y nadie se lleva comisión. Eso también significa que tú respondes de lo que ofreces y envías.\n\nEn el mercado: sé honesto con tus semillas, ofrece solo lo que puedas compartir, trata bien a la gente y no hagas spam. Puedes bloquear a cualquiera y denunciar ofertas o personas que incumplan las normas — las denuncias se atienden en los servidores comunitarios.';
|
||
@override String get seedsTitle => 'Sobre compartir semillas y plantones';
|
||
@override String get seedsBody => 'Regalar e intercambiar semillas entre aficionados está ampliamente reconocido en la mayoría de países. Vender puede ser distinto: en muchos sitios, vender semilla de variedades no registradas oficialmente está restringido — consulta tu normativa antes de pedir un precio.\n\nEnviar semillas a otro país también suele estar restringido, y las variedades protegidas comercialmente no pueden propagarse sin permiso. Ante la duda, mejor local y mejor regalo.\n\nLo mismo vale para plantones y plantas jóvenes, pero la planta viva puede tener reglas de transporte y fitosanitarias más estrictas que la semilla: moverla entre regiones o países puede requerir controles adicionales.';
|
||
@override String get readFull => 'Leer los documentos completos en la web';
|
||
}
|
||
|
||
// Path: marketGate
|
||
class _Translations$marketGate$es extends Translations$marketGate$en {
|
||
_Translations$marketGate$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String get title => 'Antes de entrar al mercado';
|
||
@override String get intro => 'El mercado es un espacio compartido entre vecinas y vecinos. Al continuar, aceptas unas pocas normas sencillas:';
|
||
@override String get ruleHonest => 'Sé honesto con las semillas que ofreces';
|
||
@override String get ruleLegal => 'Comparte solo lo que puedas compartir donde vives';
|
||
@override String get ruleRespect => 'Trata bien a la gente — sin spam ni abusos';
|
||
@override String get publicNote => 'Lo que publiques aquí es público, y pueden quedar copias aunque lo retires después.';
|
||
@override String get viewLegal => 'Privacidad y normas';
|
||
@override String get accept => 'Acepto';
|
||
@override String get decline => 'Ahora no';
|
||
}
|
||
|
||
// Path: report
|
||
class _Translations$report$es extends Translations$report$en {
|
||
_Translations$report$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String get offer => 'Denunciar esta oferta';
|
||
@override String get person => 'Denunciar a esta persona';
|
||
@override String get title => 'Denunciar';
|
||
@override String get prompt => '¿Qué ocurre?';
|
||
@override String get reasonSpam => 'Spam o un engaño';
|
||
@override String get reasonAbuse => 'Abusivo o irrespetuoso';
|
||
@override String get reasonIllegal => 'Semillas que no deberían ofrecerse';
|
||
@override String get reasonOther => 'Otra cosa';
|
||
@override String get detailsHint => 'Añade detalles (opcional)';
|
||
@override String get send => 'Enviar denuncia';
|
||
@override String get sentHidden => 'Denuncia enviada — ya no verás esto';
|
||
@override String get failed => 'No se pudo enviar la denuncia — revisa tu conexión';
|
||
@override String get alsoBlock => 'Bloquear también a esta persona';
|
||
}
|
||
|
||
// Path: block
|
||
class _Translations$block$es extends Translations$block$en {
|
||
_Translations$block$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||
|
||
final TranslationsEs _root; // ignore: unused_field
|
||
|
||
// Translations
|
||
@override String get action => 'Bloquear a esta persona';
|
||
@override String get confirmTitle => '¿Bloquear a esta persona?';
|
||
@override String get confirmBody => 'Dejarás de ver sus ofertas y mensajes. Puedes desbloquearla más adelante en Personas bloqueadas, en la configuración de compartir.';
|
||
@override String get confirm => 'Bloquear';
|
||
@override String get blockedToast => 'Persona bloqueada — sus ofertas y mensajes quedan ocultos';
|
||
@override String get manageTitle => 'Personas bloqueadas';
|
||
@override String get manageEmpty => 'No has bloqueado a nadie';
|
||
@override String get unblock => 'Desbloquear';
|
||
}
|
||
|
||
// 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) {
|
||
'avatar.title' => 'Tu foto o avatar',
|
||
'avatar.fromPhoto' => 'Hacer o elegir una foto',
|
||
'avatar.illustration' => 'O elige un dibujo',
|
||
'avatar.remove' => 'Quitar',
|
||
'favorites.title' => 'Favoritos',
|
||
'favorites.empty' => 'Aún no tienes favoritos. Guarda ofertas que te gusten del mercado.',
|
||
'favorites.save' => 'Guardar en favoritos',
|
||
'favorites.remove' => 'Quitar de favoritos',
|
||
'favorites.unavailable' => 'Ya no está disponible',
|
||
'savedSearches.title' => 'Búsquedas guardadas',
|
||
'savedSearches.empty' => 'Aún no tienes búsquedas guardadas. Guarda una búsqueda desde el mercado y te avisaremos cuando aparezca algo así en tu zona.',
|
||
'savedSearches.save' => 'Guardar esta búsqueda',
|
||
'savedSearches.nameLabel' => 'Nombra esta búsqueda',
|
||
'savedSearches.namePlaceholder' => 'p. ej. Tomates cerca',
|
||
'savedSearches.saved' => 'Búsqueda guardada — te avisaremos de lo nuevo que encaje cerca',
|
||
'savedSearches.openTooltip' => 'Búsquedas guardadas',
|
||
'savedSearches.delete' => 'Eliminar',
|
||
'savedSearches.deleteConfirm' => '¿Eliminar esta búsqueda guardada?',
|
||
'savedSearches.newMatchesBadge' => ({required Object n}) => '${n} nuevas',
|
||
'savedSearches.alert' => ({required Object label}) => 'Semillas nuevas cerca: ${label}',
|
||
'seedSaving.title' => 'Conservar su semilla',
|
||
'seedSaving.subtitle' => 'Lo que hace falta para mantener la variedad fiel',
|
||
'seedSaving.lifeCycle' => 'Ciclo',
|
||
'seedSaving.cycleAnnual' => 'Anual',
|
||
'seedSaving.cycleBiennial' => 'Bienal — da semilla el 2.º año',
|
||
'seedSaving.cyclePerennial' => 'Perenne',
|
||
'seedSaving.pollination' => 'Polinización',
|
||
'seedSaving.pollSelf' => 'Se autopoliniza',
|
||
'seedSaving.pollCross' => 'Se cruza con otras',
|
||
'seedSaving.pollMixed' => 'Se autopoliniza, pero se cruza a veces',
|
||
'seedSaving.byInsect' => 'por insectos',
|
||
'seedSaving.byWind' => 'por el viento',
|
||
'seedSaving.isolation' => 'Sepárala',
|
||
'seedSaving.isolationRange' => ({required Object min, required Object max}) => '${min}–${max} m de otras variedades',
|
||
'seedSaving.isolationSingle' => ({required Object min}) => '${min} m de otras variedades',
|
||
'seedSaving.plants' => 'Guarda de varias plantas',
|
||
'seedSaving.plantsValue' => ({required Object n}) => 'De al menos ${n} plantas',
|
||
'seedSaving.processing' => 'Cómo limpiarla',
|
||
'seedSaving.procDry' => 'Semilla seca (trillar)',
|
||
'seedSaving.procWet' => 'Semilla húmeda (fermentar y lavar)',
|
||
'seedSaving.difficulty' => 'Dificultad',
|
||
'seedSaving.diffEasy' => 'Fácil',
|
||
'seedSaving.diffMedium' => 'Media',
|
||
'seedSaving.diffHard' => 'Difícil',
|
||
'seedSaving.advisory' => 'Orientativo — adáptalo a tu clima y variedad.',
|
||
'seedSaving.sourcePrefix' => 'Fuente',
|
||
'calendar.title' => 'Este mes',
|
||
'calendar.filterChip' => 'Este mes',
|
||
'calendar.selfNote' => 'Lo que has anotado en tus variedades.',
|
||
'calendar.nothing' => ({required Object month}) => 'Nada anotado para ${month}.',
|
||
'app.title' => 'Tane',
|
||
'bootstrap.failed' => 'Tane 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' => 'Favoritos',
|
||
'menu.following' => 'Siguiendo',
|
||
'menu.plantares' => 'Plantares',
|
||
'menu.sales' => 'Ventas',
|
||
'menu.calendar' => 'Calendario',
|
||
'menu.settings' => 'Ajustes',
|
||
'settings.language' => 'Idioma',
|
||
'settings.systemLanguage' => 'Idioma del sistema',
|
||
'settings.langEs' => 'Español',
|
||
'settings.langEn' => 'English',
|
||
'settings.langPt' => 'Português',
|
||
'settings.langFr' => 'Français',
|
||
'settings.langDe' => 'Deutsch',
|
||
'settings.langJa' => '日本語',
|
||
'settings.about' => 'Acerca de',
|
||
'settings.aboutText' => 'Inventario local y cifrado para semillas tradicionales. AGPL-3.0.',
|
||
'settings.aboutOpen' => 'Acerca de Tane',
|
||
'backup.title' => 'Copia de seguridad',
|
||
'backup.autoBackupTitle' => 'Copias automáticas',
|
||
'backup.autoBackupLast' => ({required Object date, required Object days}) => 'Última copia el ${date} · cada ${days} días',
|
||
'backup.autoBackupNone' => ({required Object days}) => 'Se guarda una copia automáticamente cada ${days} días',
|
||
'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 Tane',
|
||
'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' => 'Tane — 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' => 'Tane (種, «semilla» en japonés) 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. Su nombre viene de tanemaki (種まき), «sembrar / esparcir semillas». 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). Tane es el Plantare digital.',
|
||
'about.version' => 'Versión',
|
||
'about.license' => 'Licencia',
|
||
'about.licenseValue' => 'AGPL-3.0',
|
||
'about.website' => 'Sitio web',
|
||
'about.sourceCode' => 'Código fuente',
|
||
'about.translate' => 'Ayuda a traducir',
|
||
'about.translateSubtitle' => 'Ayuda a traer Tane a tu idioma',
|
||
'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 Tane',
|
||
'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',
|
||
'inventory.loadError' => 'No se pudo abrir tu banco de semillas. Quizá estaba ocupado: inténtalo de nuevo.',
|
||
'inventory.retry' => 'Reintentar',
|
||
'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.price' => 'Precio',
|
||
'share.priceHint' => 'Déjalo vacío para acordarlo luego',
|
||
'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',
|
||
'scan.action' => 'Escanear una etiqueta',
|
||
'scan.title' => 'Escanear etiqueta',
|
||
'scan.notALabel' => 'Ese código no es una etiqueta de semillas',
|
||
'scan.addTitle' => 'No está en tu colección',
|
||
'scan.addBody' => ({required Object label}) => '¿Añadir «${label}» a tus semillas?',
|
||
'scan.add' => 'Añadirla',
|
||
'scan.added' => 'Añadida a tu colección',
|
||
'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.editorHint' => 'Anota tú los meses típicos de esta variedad en tu zona — son tus propias notas.',
|
||
'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' => 'Tú',
|
||
'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' => 'Elige qué servidores usar. Déjalo así si no sabes.',
|
||
'market.serversAdvanced' => 'Añadir otro servidor',
|
||
'market.serverAddress' => 'Dirección del servidor',
|
||
'market.serverInvalid' => 'Introduce una dirección válida (wss://…)',
|
||
'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',
|
||
'market.photo' => 'Foto',
|
||
'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',
|
||
'profile.identities' => 'Tus identidades',
|
||
'profile.identitiesHelp' => 'Ten identidades separadas — cada una con sus mensajes y contactos. Todas salen de tu única copia de seguridad, así que cambiar no añade nada que recordar.',
|
||
'profile.identityLabel' => ({required Object n}) => 'Identidad ${n}',
|
||
'profile.current' => 'En uso',
|
||
'profile.newIdentity' => 'Nueva identidad',
|
||
'profile.switchTitle' => '¿Cambiar de identidad?',
|
||
'profile.switchBody' => 'Los mensajes y contactos se guardan por separado para cada identidad. Puedes volver cuando quieras.',
|
||
'profile.switchAction' => 'Cambiar',
|
||
'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',
|
||
'chat.today' => 'Hoy',
|
||
'chat.yesterday' => 'Ayer',
|
||
'chat.sendError' => 'No se pudo enviar — revisa tu conexión',
|
||
'chat.noLinks' => 'No se permiten enlaces en los mensajes',
|
||
'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',
|
||
'yourPeople.title' => 'Tu gente',
|
||
'yourPeople.help' => 'Personas que conoces y avalas, y personas que te avalan.',
|
||
'yourPeople.youVouchFor' => 'Tú avalas a',
|
||
'yourPeople.vouchesForYou' => 'Te avalan',
|
||
'yourPeople.youVouchForEmpty' => 'Aún no avalas a nadie. Cuando conozcas a alguien, abre vuestro chat y toca "Conozco a esta persona".',
|
||
'yourPeople.vouchesForYouEmpty' => 'Nadie te avala todavía',
|
||
'yourPeople.revoke' => 'Dejar de avalar',
|
||
'yourPeople.revokeConfirm' => '¿Dejar de avalar a esta persona?',
|
||
'yourPeople.offline' => 'Sin conexión — inténtalo cuando estés en línea',
|
||
'ratings.rate' => 'Valorar a esta persona',
|
||
'ratings.edit' => 'Editar tu valoración',
|
||
'ratings.commentHint' => '¿Qué tal fue? (opcional)',
|
||
'ratings.fromYourCircle' => ({required Object n}) => '${n} de gente que conoces',
|
||
'ratings.retract' => 'Quitar tu valoración',
|
||
'ratings.saved' => 'Valoración guardada',
|
||
'notifications.newMessageFrom' => ({required Object name}) => 'Nuevo mensaje de ${name}',
|
||
'plantare.title' => 'Plantares',
|
||
'plantare.help' => 'Un Plantare es el compromiso de reproducir una semilla y devolver una parte — así una variedad sigue viajando de mano en mano. No es una venta.',
|
||
'plantare.add' => 'Añadir compromiso',
|
||
'plantare.empty' => 'Aún no hay compromisos. Cuando compartas o recibas semilla con el compromiso de reproducirla y devolver algo, anótalo aquí.',
|
||
'plantare.iReturn' => 'La reproduzco y devuelvo yo',
|
||
'plantare.owedToMe' => 'Me la devuelven a mí',
|
||
'plantare.direction' => 'Quién reproduce y devuelve',
|
||
'plantare.counterparty' => '¿Con quién?',
|
||
'plantare.counterpartyHint' => 'Una persona o un colectivo (opcional)',
|
||
'plantare.owed' => '¿Qué se devuelve?',
|
||
'plantare.owedHint' => 'p. ej. un puñado la próxima temporada (opcional)',
|
||
'plantare.note' => 'Nota (opcional)',
|
||
'plantare.save' => 'Guardar',
|
||
'plantare.markReturned' => 'Marcar devuelto',
|
||
'plantare.markForgiven' => 'Dar por saldado',
|
||
'plantare.reopen' => 'Reabrir',
|
||
'plantare.delete' => 'Quitar',
|
||
'plantare.statusReturned' => 'Devuelto',
|
||
'plantare.statusForgiven' => 'Saldado',
|
||
'plantare.openSection' => 'Pendientes',
|
||
'plantare.settledSection' => 'Hechos',
|
||
'plantare.removeConfirm' => '¿Quitar este compromiso?',
|
||
_ => null,
|
||
} ?? switch (path) {
|
||
'plantare.returnBy' => ({required Object date}) => 'Devolver antes del ${date}',
|
||
'plantare.overdue' => 'vencido',
|
||
'plantare.dueByLabel' => 'Devolver antes de (opcional)',
|
||
'plantare.dueByHint' => 'Un recordatorio suave, nunca obligatorio',
|
||
'plantare.pickDate' => 'Elegir fecha',
|
||
'plantare.clearDate' => 'Quitar fecha',
|
||
'plantare.sectionTitle' => 'Compromisos',
|
||
'plantare.propose' => 'Proponer un Plantaré firmado',
|
||
'plantare.proposeHelp' => 'Los dos guardáis la misma promesa, firmada por ambos: prueba de que esta semilla cambió de manos y se cultivará y devolverá.',
|
||
'plantare.proposeTo' => ({required Object name}) => 'Con ${name}',
|
||
'plantare.sent' => 'Propuesta enviada — esperando su firma',
|
||
'plantare.seedLabel' => '¿Qué semilla?',
|
||
'plantare.seedHint' => 'La variedad a la que se refiere la promesa',
|
||
'plantare.returnKindLabel' => '¿Qué se devuelve?',
|
||
'plantare.returnSimilar' => 'Una cantidad similar de semilla',
|
||
'plantare.returnSimilarNote' => 'polinización abierta · no transgénica · cultivada en ecológico',
|
||
'plantare.returnWork' => 'Unas horas de trabajo',
|
||
'plantare.returnOther' => 'Otra cosa',
|
||
'plantare.workHoursLabel' => '¿Cuántas horas?',
|
||
'plantare.proposalsSection' => 'Esperando tu respuesta',
|
||
'plantare.incomingFrom' => ({required Object name}) => '${name} te propone un Plantaré',
|
||
'plantare.accept' => 'Aceptar y firmar',
|
||
'plantare.declineAction' => 'Rechazar',
|
||
'plantare.declineReasonHint' => 'Motivo (opcional)',
|
||
'plantare.acceptedToast' => 'Firmado — ahora lo guardáis los dos',
|
||
'plantare.declinedToast' => 'Rechazado',
|
||
'plantare.badgeAwaiting' => 'Falta firma',
|
||
'plantare.badgeSigned' => 'Firmado por ambos',
|
||
'plantare.badgeDeclined' => 'Rechazado',
|
||
'plantare.offline' => 'Estás sin conexión — se enviará al reconectar',
|
||
'handover.title' => 'Di o recibí semillas',
|
||
'handover.help' => 'Un regalo, un trueque o una venta: apúntalo, con promesa de devolver semilla o sin ella.',
|
||
'handover.iGave' => 'Di semillas',
|
||
'handover.iReceived' => 'Recibí semillas',
|
||
'handover.whichLot' => '¿De qué lote?',
|
||
'handover.howMuch' => '¿Cuánto?',
|
||
'handover.allOfIt' => 'Todo',
|
||
'handover.partOfIt' => 'Una parte',
|
||
'handover.paymentChip' => 'Hubo dinero por medio',
|
||
'handover.promiseGave' => 'Me devolverán semilla',
|
||
'handover.promiseReceived' => 'Devolveré semilla',
|
||
'history.title' => 'Historia de este lote',
|
||
'history.tooltip' => 'Historia',
|
||
'history.sowToday' => 'Sembrado hoy',
|
||
'history.harvestToday' => 'Cosechado hoy',
|
||
'history.sownRecorded' => 'Siembra anotada',
|
||
'history.harvestRecorded' => 'Cosecha anotada',
|
||
'history.movementReceived' => 'Recibido',
|
||
'history.movementGiven' => 'Regalado',
|
||
'history.movementSown' => 'Sembrado',
|
||
'history.movementHarvested' => 'Cosechado',
|
||
'history.movementGerminationTest' => 'Prueba de germinación',
|
||
'history.movementSplit' => 'Repartido en lotes',
|
||
'history.movementDiscarded' => 'Descartado',
|
||
'history.created' => 'Entró en tu colección',
|
||
'history.from' => ({required Object origin}) => 'De ${origin}',
|
||
'history.germinationResult' => ({required Object percent}) => 'Prueba de germinación — ${percent}%',
|
||
'history.linkedEarlier' => 'Viene de un lote anterior',
|
||
'history.outcomeQuestion' => '¿Qué tal se dio?',
|
||
'history.outcomeGood' => 'Bien',
|
||
'history.outcomeMixed' => 'Regular',
|
||
'history.outcomePoor' => 'Mal',
|
||
'history.outcomeNoteHint' => 'Una nota para tu yo del futuro (opcional)',
|
||
'history.outcomeSaved' => 'Anotado',
|
||
'history.ratedGood' => 'Se dio bien',
|
||
'history.ratedMixed' => 'Se dio regular',
|
||
'history.ratedPoor' => 'Se dio mal',
|
||
'history.outcomeTitle' => 'Nota de temporada',
|
||
'history.outcomeYear' => ({required Object year}) => 'Temporada ${year}',
|
||
'sale.title' => 'Ventas',
|
||
'sale.help' => 'Registra semilla vendida o comprada — dinero, Ğ1 o cualquier moneda. Un modelo aparte del regalo y del Plantare. Nunca se cobra comisión por las semillas.',
|
||
'sale.add' => 'Registrar venta',
|
||
'sale.empty' => 'Aún no hay ventas. Anota aquí lo que vendes o compras.',
|
||
'sale.iSold' => 'Vendí',
|
||
'sale.iBought' => 'Compré',
|
||
'sale.direction' => '¿Vendes o compras?',
|
||
'sale.counterparty' => '¿Con quién?',
|
||
'sale.counterpartyHint' => 'Una persona o un colectivo (opcional)',
|
||
'sale.amount' => 'Importe',
|
||
'sale.currency' => 'Moneda',
|
||
'sale.currencyHint' => '€, Ğ1, horas… (opcional)',
|
||
'sale.hours' => 'horas',
|
||
'sale.note' => 'Nota (opcional)',
|
||
'sale.save' => 'Guardar',
|
||
'sale.delete' => 'Quitar',
|
||
'sale.removeConfirm' => '¿Quitar esta venta?',
|
||
'legal.title' => 'Privacidad y normas',
|
||
'legal.subtitle' => 'Tu privacidad, las normas del mercado y la legalidad de las semillas',
|
||
'legal.privacyTitle' => 'Tu privacidad',
|
||
'legal.privacyBody' => 'Tane funciona sin cuenta, y todo lo que registras se queda en tu dispositivo, cifrado. No hay publicidad, ni rastreadores, ni servidor de Tane.\n\nNo se comparte nada salvo que tú quieras: cuando publicas una oferta o tu perfil, o envías un mensaje, viaja por servidores comunitarios. Las ofertas solo llevan una zona aproximada — nunca tu dirección.\n\nLo que publicas es público, y pueden quedar copias incluso después de retirarlo — así que comparte con cuidado.',
|
||
'legal.rulesTitle' => 'Las reglas del juego',
|
||
'legal.rulesBody' => 'Tane es una herramienta, no una tienda: los intercambios se acuerdan directamente entre personas y nadie se lleva comisión. Eso también significa que tú respondes de lo que ofreces y envías.\n\nEn el mercado: sé honesto con tus semillas, ofrece solo lo que puedas compartir, trata bien a la gente y no hagas spam. Puedes bloquear a cualquiera y denunciar ofertas o personas que incumplan las normas — las denuncias se atienden en los servidores comunitarios.',
|
||
'legal.seedsTitle' => 'Sobre compartir semillas y plantones',
|
||
'legal.seedsBody' => 'Regalar e intercambiar semillas entre aficionados está ampliamente reconocido en la mayoría de países. Vender puede ser distinto: en muchos sitios, vender semilla de variedades no registradas oficialmente está restringido — consulta tu normativa antes de pedir un precio.\n\nEnviar semillas a otro país también suele estar restringido, y las variedades protegidas comercialmente no pueden propagarse sin permiso. Ante la duda, mejor local y mejor regalo.\n\nLo mismo vale para plantones y plantas jóvenes, pero la planta viva puede tener reglas de transporte y fitosanitarias más estrictas que la semilla: moverla entre regiones o países puede requerir controles adicionales.',
|
||
'legal.readFull' => 'Leer los documentos completos en la web',
|
||
'marketGate.title' => 'Antes de entrar al mercado',
|
||
'marketGate.intro' => 'El mercado es un espacio compartido entre vecinas y vecinos. Al continuar, aceptas unas pocas normas sencillas:',
|
||
'marketGate.ruleHonest' => 'Sé honesto con las semillas que ofreces',
|
||
'marketGate.ruleLegal' => 'Comparte solo lo que puedas compartir donde vives',
|
||
'marketGate.ruleRespect' => 'Trata bien a la gente — sin spam ni abusos',
|
||
'marketGate.publicNote' => 'Lo que publiques aquí es público, y pueden quedar copias aunque lo retires después.',
|
||
'marketGate.viewLegal' => 'Privacidad y normas',
|
||
'marketGate.accept' => 'Acepto',
|
||
'marketGate.decline' => 'Ahora no',
|
||
'report.offer' => 'Denunciar esta oferta',
|
||
'report.person' => 'Denunciar a esta persona',
|
||
'report.title' => 'Denunciar',
|
||
'report.prompt' => '¿Qué ocurre?',
|
||
'report.reasonSpam' => 'Spam o un engaño',
|
||
'report.reasonAbuse' => 'Abusivo o irrespetuoso',
|
||
'report.reasonIllegal' => 'Semillas que no deberían ofrecerse',
|
||
'report.reasonOther' => 'Otra cosa',
|
||
'report.detailsHint' => 'Añade detalles (opcional)',
|
||
'report.send' => 'Enviar denuncia',
|
||
'report.sentHidden' => 'Denuncia enviada — ya no verás esto',
|
||
'report.failed' => 'No se pudo enviar la denuncia — revisa tu conexión',
|
||
'report.alsoBlock' => 'Bloquear también a esta persona',
|
||
'block.action' => 'Bloquear a esta persona',
|
||
'block.confirmTitle' => '¿Bloquear a esta persona?',
|
||
'block.confirmBody' => 'Dejarás de ver sus ofertas y mensajes. Puedes desbloquearla más adelante en Personas bloqueadas, en la configuración de compartir.',
|
||
'block.confirm' => 'Bloquear',
|
||
'block.blockedToast' => 'Persona bloqueada — sus ofertas y mensajes quedan ocultos',
|
||
'block.manageTitle' => 'Personas bloqueadas',
|
||
'block.manageEmpty' => 'No has bloqueado a nadie',
|
||
'block.unblock' => 'Desbloquear',
|
||
_ => null,
|
||
};
|
||
}
|
||
}
|