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

@ -9,6 +9,12 @@ import 'theme.dart';
/// The app's public website. Shown as a tappable row in [AboutScreen].
const String _websiteUrl = 'https://tane.comunes.org';
/// The public source repository (AGPL). Shown as a tappable row in [AboutScreen].
const String _sourceUrl = 'https://git.comunes.org/comunes/tane';
/// The translation platform where anyone can help translate Tane.
const String _translateUrl = 'https://translate.comunes.org/projects/tane/';
/// The year Tane's copyright starts. Ğ1nkgo uses its own first year (2023);
/// Tane's is 2026.
const int _copyrightStartYear = 2026;
@ -69,6 +75,24 @@ class AboutScreen extends StatelessWidget {
mode: LaunchMode.externalApplication,
),
),
ListTile(
leading: const Icon(Icons.code, color: seedGreen),
title: Text(t.about.sourceCode),
subtitle: const Text(_sourceUrl),
onTap: () => launchUrl(
Uri.parse(_sourceUrl),
mode: LaunchMode.externalApplication,
),
),
ListTile(
leading: const Icon(Icons.translate, color: seedGreen),
title: Text(t.about.translate),
subtitle: Text(t.about.translateSubtitle),
onTap: () => launchUrl(
Uri.parse(_translateUrl),
mode: LaunchMode.externalApplication,
),
),
ListTile(
leading: const Icon(Icons.privacy_tip_outlined, color: seedGreen),
title: Text(t.legal.title),