feat(links): surface source repo + Weblate links on site and in app

- site: set sourceURL (git.comunes.org/comunes/tane) and weblateURL
  (translate.comunes.org/projects/tane) — activates footer + collaborate links
- app About screen: add 'Source code' and 'Help translate' link tiles
- i18n: add about.sourceCode / about.translate / about.translateSubtitle
  (en base + es/pt/fr/de/ast; ja falls back to base), regenerate slang
- docs: add TRANSLATIONS.md runbook for the Weblate app component + git
  token + slang-regeneration workflow
This commit is contained in:
vjrj 2026-07-15 19:12:16 +02:00
parent 991785821f
commit 7d5f26ff4a
16 changed files with 187 additions and 16 deletions

View file

@ -328,6 +328,9 @@ class _Translations$about$es extends Translations$about$en {
@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';
@ -1561,6 +1564,9 @@ extension on TranslationsEs {
'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',
@ -1948,11 +1954,11 @@ extension on TranslationsEs {
'plantare.returnSimilarNote' => 'polinización abierta · no transgénica · cultivada en ecológico',
'plantare.returnWork' => 'Unas horas de trabajo',
'plantare.returnOther' => 'Otra cosa',
_ => null,
} ?? switch (path) {
'plantare.workHoursLabel' => '¿Cuántas horas?',
'plantare.proposalsSection' => 'Esperando tu respuesta',
'plantare.incomingFrom' => ({required Object name}) => '${name} te propone un Plantaré',
_ => null,
} ?? switch (path) {
'plantare.accept' => 'Aceptar y firmar',
'plantare.declineAction' => 'Rechazar',
'plantare.declineReasonHint' => 'Motivo (opcional)',