feat: cover seedlings (plantón) in copy + legal, backup cadence, server picker
Beta-tester feedback triage. The data model already had LotType.seedling as first class; the gaps were copy and UX. - Seedlings/plantones: broaden landing hero (EN/ES), in-app legal notice, and all legal texts (site + docs masters) from seeds-only to "seeds and seedlings", with a live-plant phytosanitary/transport caveat. Seeds stay the hero — targeted, not a blanket rename. - Backups: settings line now states the 7-day cadence explicitly; cadence lives in AutoBackupService.backupInterval as the single source for text and schedule. - Community servers: replace the manual wss:// text box with a checklist of the known servers (defaults visible/toggleable) plus an "add server" affordance with basic validation. No jargon in the UI. i18n across en/es/pt/fr/de/ast (ja falls back). Tests updated + a new server-picker widget test.
This commit is contained in:
parent
ab027a8779
commit
15385a26cf
36 changed files with 410 additions and 179 deletions
|
|
@ -280,8 +280,8 @@ class _Translations$backup$es extends Translations$backup$en {
|
|||
// Translations
|
||||
@override String get title => 'Copia de seguridad';
|
||||
@override String get autoBackupTitle => 'Copias automáticas';
|
||||
@override String autoBackupLast({required Object date}) => 'Última copia guardada el ${date}';
|
||||
@override String get autoBackupNone => 'Se guarda una copia automáticamente en segundo plano';
|
||||
@override String 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';
|
||||
|
|
@ -773,8 +773,10 @@ class _Translations$market$es extends Translations$market$en {
|
|||
@override String get areaCodeLabel => 'Código de zona';
|
||||
@override String get areaCodeHint => 'Un código corto como sp3e9 — no un nombre de lugar';
|
||||
@override String get serversLabel => 'Servidores de la comunidad';
|
||||
@override String get serversHelp => 'Una dirección por línea (wss://…). Déjalo así si no sabes.';
|
||||
@override String get 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';
|
||||
|
|
@ -1034,8 +1036,8 @@ class _Translations$legal$es extends Translations$legal$en {
|
|||
@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';
|
||||
@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.';
|
||||
@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';
|
||||
}
|
||||
|
||||
|
|
@ -1520,8 +1522,8 @@ extension on TranslationsEs {
|
|||
'settings.aboutOpen' => 'Acerca de Tane',
|
||||
'backup.title' => 'Copia de seguridad',
|
||||
'backup.autoBackupTitle' => 'Copias automáticas',
|
||||
'backup.autoBackupLast' => ({required Object date}) => 'Última copia guardada el ${date}',
|
||||
'backup.autoBackupNone' => 'Se guarda una copia automáticamente en segundo plano',
|
||||
'backup.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',
|
||||
|
|
@ -1828,8 +1830,10 @@ extension on TranslationsEs {
|
|||
'market.areaCodeLabel' => 'Código de zona',
|
||||
'market.areaCodeHint' => 'Un código corto como sp3e9 — no un nombre de lugar',
|
||||
'market.serversLabel' => 'Servidores de la comunidad',
|
||||
'market.serversHelp' => 'Una dirección por línea (wss://…). Déjalo así si no sabes.',
|
||||
'market.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',
|
||||
|
|
@ -1947,10 +1951,10 @@ extension on TranslationsEs {
|
|||
'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',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'plantare.accept' => 'Aceptar y firmar',
|
||||
'plantare.declineAction' => 'Rechazar',
|
||||
'plantare.declineReasonHint' => 'Motivo (opcional)',
|
||||
'plantare.acceptedToast' => 'Firmado — ahora lo guardáis los dos',
|
||||
'plantare.declinedToast' => 'Rechazado',
|
||||
|
|
@ -1992,8 +1996,8 @@ extension on TranslationsEs {
|
|||
'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',
|
||||
'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.',
|
||||
'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:',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue