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

@ -329,6 +329,9 @@ class _Translations$about$fr extends Translations$about$en {
@override String get license => 'Licence';
@override String get licenseValue => 'AGPL-3.0';
@override String get website => 'Site web';
@override String get sourceCode => 'Code source';
@override String get translate => 'Aider à traduire';
@override String get translateSubtitle => 'Aidez à traduire Tane dans votre langue';
@override String get openSourceLicenses => 'Licences open source';
@override String get openSourceLicensesSubtitle => 'Bibliothèques tiers et leurs licences';
@override String copyright({required Object years}) => '© ${years} Association Comunes, sous AGPLv3';
@ -1533,6 +1536,9 @@ extension on TranslationsFr {
'about.license' => 'Licence',
'about.licenseValue' => 'AGPL-3.0',
'about.website' => 'Site web',
'about.sourceCode' => 'Code source',
'about.translate' => 'Aider à traduire',
'about.translateSubtitle' => 'Aidez à traduire Tane dans votre langue',
'about.openSourceLicenses' => 'Licences open source',
'about.openSourceLicensesSubtitle' => 'Bibliothèques tiers et leurs licences',
'about.copyright' => ({required Object years}) => '© ${years} Association Comunes, sous AGPLv3',
@ -1919,11 +1925,11 @@ extension on TranslationsFr {
'sale.empty' => 'Pas encore de ventes. Notez ici ce que vous vendez ou achetez.',
'sale.iSold' => 'J\'ai vendu',
'sale.iBought' => 'J\'ai acheté',
_ => null,
} ?? switch (path) {
'sale.direction' => 'Vendu ou acheté ?',
'sale.counterparty' => 'Avec qui ?',
'sale.counterpartyHint' => 'Une personne ou un collectif (optionnel)',
_ => null,
} ?? switch (path) {
'sale.amount' => 'Montant',
'sale.currency' => 'Monnaie',
'sale.currencyHint' => '€, Ğ1, heures… (optionnel)',