Merge pull request #19 from FoggedLens/main

This commit is contained in:
Will Freeman
2025-10-04 10:44:17 -06:00
committed by GitHub
11 changed files with 95 additions and 165 deletions

View File

@@ -18,7 +18,7 @@ android {
namespace = "me.deflock.deflockapp"
// Matches current stable Flutter (compileSdk 34 as of July 2025)
compileSdk = 35
compileSdk = 36
// NDK only needed if you build native plugins; keep your pinned version
ndkVersion = "27.0.12077973"
@@ -40,7 +40,7 @@ android {
// oauth2_client 4.x & flutter_web_auth_2 5.x require minSdk 23
// ────────────────────────────────────────────────────────────
minSdk = 23
targetSdk = 34
targetSdk = 36
// Flutter tool injects these during `flutter build`
versionCode = flutter.versionCode

View File

@@ -1,130 +0,0 @@
🇺🇸 ENGLISH
DeFlock - Surveillance Transparency
DeFlock is a privacy-focused mobile app for mapping public surveillance infrastructure using OpenStreetMap. Document cameras, ALPRs, gunshot detectors, and other surveillance devices in your community to make this infrastructure visible and searchable.
• Offline-capable mapping with downloadable areas
• Upload directly to OpenStreetMap with OAuth2
• Built-in profiles for major manufacturers
• Privacy-respecting - no user data collected
• Multiple map tile providers (OSM, satellite imagery)
Part of the broader DeFlock initiative to promote surveillance transparency.
Visit: deflock.me
Built with Flutter • Open Source
---
🇪🇸 ESPAÑOL
DeFlock - Transparencia en Vigilancia
DeFlock es una aplicación móvil enfocada en la privacidad para mapear infraestructura de vigilancia pública usando OpenStreetMap. Documenta cámaras, ALPRs, detectores de disparos y otros dispositivos de vigilancia en tu comunidad para hacer visible y consultable esta infraestructura.
• Mapeo con capacidad offline con áreas descargables
• Subida directa a OpenStreetMap con OAuth2
• Perfiles integrados para fabricantes principales
• Respeta la privacidad - no se recopilan datos del usuario
• Múltiples proveedores de mapas (OSM, imágenes satelitales)
Parte de la iniciativa más amplia DeFlock para promover la transparencia en vigilancia.
Visita: deflock.me
Construido con Flutter • Código Abierto
---
🇫🇷 FRANÇAIS
DeFlock - Transparence de la Surveillance
DeFlock est une application mobile axée sur la confidentialité pour cartographier l'infrastructure de surveillance publique en utilisant OpenStreetMap. Documentez les caméras, ALPRs, détecteurs de coups de feu et autres dispositifs de surveillance dans votre communauté pour rendre cette infrastructure visible et consultable.
• Cartographie hors ligne avec zones téléchargeables
• Upload direct vers OpenStreetMap avec OAuth2
• Profils intégrés pour les principaux fabricants
• Respectueux de la confidentialité - aucune donnée utilisateur collectée
• Multiples fournisseurs de cartes (OSM, imagerie satellite)
Partie de l'initiative plus large DeFlock pour promouvoir la transparence de la surveillance.
Visitez : deflock.me
Construit avec Flutter • Source Ouverte
---
🇩🇪 DEUTSCH
DeFlock - Überwachungs-Transparenz
DeFlock ist eine datenschutzorientierte mobile App zur Kartierung öffentlicher Überwachungsinfrastruktür mit OpenStreetMap. Dokumentieren Sie Kameras, ALPRs, Schussdetektoren und andere Überwachungsgeräte in Ihrer Gemeinde, um diese Infrastruktur sichtbar und durchsuchbar zu machen.
• Offline-fähige Kartierung mit herunterladbaren Bereichen
• Direkter Upload zu OpenStreetMap mit OAuth2
• Integrierte Profile für große Hersteller
• Datenschutzfreundlich - keine Nutzerdaten gesammelt
• Multiple Kartenanbieter (OSM, Satellitenbilder)
Teil der breiteren DeFlock-Initiative zur Förderung von Überwachungstransparenz.
Besuchen Sie: deflock.me
Gebaut mit Flutter • Open Source
---
🇮🇹 ITALIANO
DeFlock - Trasparenza della Sorveglianza
DeFlock è un'app mobile orientata alla privacy per mappare l'infrastruttura di sorveglianza pubblica utilizzando OpenStreetMap. Documenta telecamere, ALPR, rilevatori di spari e altri dispositivi di sorveglianza nella tua comunità per rendere questa infrastruttura visibile e ricercabile.
• Mappatura con capacità offline con aree scaricabili
• Upload diretto su OpenStreetMap con OAuth2
• Profili integrati per i principali produttori
• Rispettoso della privacy - nessun dato utente raccolto
• Multipli fornitori di mappe (OSM, immagini satellitari)
Parte della più ampia iniziativa DeFlock per promuovere la trasparenza della sorveglianza.
Visita: deflock.me
Costruito con Flutter • Open Source
---
🇵🇹 PORTUGUÊS
DeFlock - Transparência da Vigilância
DeFlock é um aplicativo móvel focado na privacidade para mapear infraestrutura de vigilância pública usando OpenStreetMap. Documente câmeras, ALPRs, detectores de tiros e outros dispositivos de vigilância em sua comunidade para tornar essa infraestrutura visível e pesquisável.
• Mapeamento com capacidade offline com áreas para download
• Upload direto para OpenStreetMap com OAuth2
• Perfis integrados para principais fabricantes
• Respeitoso à privacidade - nenhum dado do usuário coletado
• Múltiplos provedores de mapas (OSM, imagens de satélite)
Parte da iniciativa mais ampla DeFlock para promover transparência na vigilância.
Visite: deflock.me
Construído com Flutter • Código Aberto
---
🇨🇳 中文
DeFlock - 监控透明化
DeFlock 是一款注重隐私的移动应用,使用 OpenStreetMap 绘制公共监控基础设施。记录您社区中的摄像头、车牌识别系统、枪击探测器和其他监控设备,使这些基础设施可见且可搜索。
• 具有可下载区域的离线映射功能
• 使用 OAuth2 直接上传到 OpenStreetMap
• 主要制造商的内置配置文件
• 尊重隐私 - 不收集用户数据
• 多个地图提供商OSM、卫星图像
DeFlock 更广泛倡议的一部分,旨在促进监控透明化。
访问deflock.me
使用 Flutter 构建 • 开源

View File

@@ -18,6 +18,11 @@ Want to add support for your language? It's simple:
"app": {
"title": "DeFlock" ← Keep this as-is
},
"about": {
"title": "Your Translation Here",
"description": "Your Translation Here",
...
},
"actions": {
"tagNode": "Your Translation Here",
"download": "Your Translation Here",
@@ -26,9 +31,7 @@ Want to add support for your language? It's simple:
}
```
3. **Add your language to the About screen**: Edit `assets/info.txt` and add your language section at the bottom (copy the English section and translate it)
4. **Submit a PR** with your JSON file and the updated about.txt. Done!
3. **Submit a PR** with your JSON file. Done!
The new language will automatically appear in Settings → Language.
@@ -45,12 +48,14 @@ The new language will automatically appear in Settings → Language.
- `es.json` - Español
- `fr.json` - Français
- `de.json` - Deutsch
- `it.json` - Italiano
- `pt.json` - Português
- `zh.json` - 中文
## Files to Update
For a complete translation, you'll need to touch:
1. **`lib/localizations/xx.json`** - Main UI translations (buttons, menus, etc.)
2. **`assets/info.txt`** - About screen content (add your language section)
For a complete translation, you only need to update:
1. **`lib/localizations/xx.json`** - All UI translations including about content
## That's It!

View File

@@ -293,6 +293,13 @@
"showIndicator": "Netzwerkstatus-Anzeige anzeigen",
"showIndicatorSubtitle": "Netzwerk-Ladestatus und Fehlerstatus auf der Karte anzeigen"
},
"about": {
"title": "DeFlock - Überwachungs-Transparenz",
"description": "DeFlock ist eine datenschutzorientierte mobile App zur Kartierung öffentlicher Überwachungsinfrastruktür mit OpenStreetMap. Dokumentieren Sie Kameras, ALPRs, Schussdetektoren und andere Überwachungsgeräte in Ihrer Gemeinde, um diese Infrastruktur sichtbar und durchsuchbar zu machen.",
"features": "• Offline-fähige Kartierung mit herunterladbaren Bereichen\n• Direkter Upload zu OpenStreetMap mit OAuth2\n• Integrierte Profile für große Hersteller\n• Datenschutzfreundlich - keine Nutzerdaten gesammelt\n• Multiple Kartenanbieter (OSM, Satellitenbilder)",
"initiative": "Teil der breiteren DeFlock-Initiative zur Förderung von Überwachungstransparenz.",
"footer": "Besuchen Sie: deflock.me\nGebaut mit Flutter • Open Source"
},
"navigation": {
"searchLocation": "Ort suchen",
"searchPlaceholder": "Orte oder Koordinaten suchen...",

View File

@@ -5,6 +5,13 @@
"app": {
"title": "DeFlock"
},
"about": {
"title": "DeFlock - Surveillance Transparency",
"description": "DeFlock is a privacy-focused mobile app for mapping public surveillance infrastructure using OpenStreetMap. Document cameras, ALPRs, gunshot detectors, and other surveillance devices in your community to make this infrastructure visible and searchable.",
"features": "• Offline-capable mapping with downloadable areas\n• Upload directly to OpenStreetMap with OAuth2\n• Built-in profiles for major manufacturers\n• Privacy-respecting - no user data collected\n• Multiple map tile providers (OSM, satellite imagery)",
"initiative": "Part of the broader DeFlock initiative to promote surveillance transparency.",
"footer": "Visit: deflock.me\nBuilt with Flutter • Open Source"
},
"actions": {
"tagNode": "New Node",
"download": "Download",

View File

@@ -5,6 +5,13 @@
"app": {
"title": "DeFlock"
},
"about": {
"title": "DeFlock - Transparencia en Vigilancia",
"description": "DeFlock es una aplicación móvil enfocada en la privacidad para mapear infraestructura de vigilancia pública usando OpenStreetMap. Documenta cámaras, ALPRs, detectores de disparos y otros dispositivos de vigilancia en tu comunidad para hacer visible y consultable esta infraestructura.",
"features": "• Mapeo con capacidad offline con áreas descargables\n• Subida directa a OpenStreetMap con OAuth2\n• Perfiles integrados para fabricantes principales\n• Respeta la privacidad - no se recopilan datos del usuario\n• Múltiples proveedores de mapas (OSM, imágenes satelitales)",
"initiative": "Parte de la iniciativa más amplia DeFlock para promover la transparencia en vigilancia.",
"footer": "Visita: deflock.me\nConstruido con Flutter • Código Abierto"
},
"actions": {
"tagNode": "Nuevo Nodo",
"download": "Descargar",

View File

@@ -5,6 +5,13 @@
"app": {
"title": "DeFlock"
},
"about": {
"title": "DeFlock - Transparence de la Surveillance",
"description": "DeFlock est une application mobile axée sur la confidentialité pour cartographier l'infrastructure de surveillance publique en utilisant OpenStreetMap. Documentez les caméras, ALPRs, détecteurs de coups de feu et autres dispositifs de surveillance dans votre communauté pour rendre cette infrastructure visible et consultable.",
"features": "• Cartographie hors ligne avec zones téléchargeables\n• Upload direct vers OpenStreetMap avec OAuth2\n• Profils intégrés pour les principaux fabricants\n• Respectueux de la confidentialité - aucune donnée utilisateur collectée\n• Multiples fournisseurs de cartes (OSM, imagerie satellite)",
"initiative": "Partie de l'initiative plus large DeFlock pour promouvoir la transparence de la surveillance.",
"footer": "Visitez : deflock.me\nConstruit avec Flutter • Source Ouverte"
},
"actions": {
"tagNode": "Nouveau Nœud",
"download": "Télécharger",

View File

@@ -5,6 +5,13 @@
"app": {
"title": "DeFlock"
},
"about": {
"title": "DeFlock - Trasparenza della Sorveglianza",
"description": "DeFlock è un'app mobile orientata alla privacy per mappare l'infrastruttura di sorveglianza pubblica utilizzando OpenStreetMap. Documenta telecamere, ALPR, rilevatori di spari e altri dispositivi di sorveglianza nella tua comunità per rendere questa infrastruttura visibile e ricercabile.",
"features": "• Mappatura con capacità offline con aree scaricabili\n• Upload diretto su OpenStreetMap con OAuth2\n• Profili integrati per i principali produttori\n• Rispettoso della privacy - nessun dato utente raccolto\n• Multipli fornitori di mappe (OSM, immagini satellitari)",
"initiative": "Parte della più ampia iniziativa DeFlock per promuovere la trasparenza della sorveglianza.",
"footer": "Visita: deflock.me\nCostruito con Flutter • Open Source"
},
"actions": {
"tagNode": "Nuovo Nodo",
"download": "Scarica",

View File

@@ -5,6 +5,13 @@
"app": {
"title": "DeFlock"
},
"about": {
"title": "DeFlock - Transparência da Vigilância",
"description": "DeFlock é um aplicativo móvel focado na privacidade para mapear infraestrutura de vigilância pública usando OpenStreetMap. Documente câmeras, ALPRs, detectores de tiros e outros dispositivos de vigilância em sua comunidade para tornar essa infraestrutura visível e pesquisável.",
"features": "• Mapeamento com capacidade offline com áreas para download\n• Upload direto para OpenStreetMap com OAuth2\n• Perfis integrados para principais fabricantes\n• Respeitoso à privacidade - nenhum dado do usuário coletado\n• Múltiplos provedores de mapas (OSM, imagens de satélite)",
"initiative": "Parte da iniciativa mais ampla DeFlock para promover transparência na vigilância.",
"footer": "Visite: deflock.me\nConstruído com Flutter • Código Aberto"
},
"actions": {
"tagNode": "Novo Nó",
"download": "Baixar",

View File

@@ -5,6 +5,13 @@
"app": {
"title": "DeFlock"
},
"about": {
"title": "DeFlock - 监控透明化",
"description": "DeFlock 是一款注重隐私的移动应用,使用 OpenStreetMap 绘制公共监控基础设施。记录您社区中的摄像头、车牌识别系统、枪击探测器和其他监控设备,使这些基础设施可见且可搜索。",
"features": "• 具有可下载区域的离线映射功能\n• 使用 OAuth2 直接上传到 OpenStreetMap\n• 主要制造商的内置配置文件\n• 尊重隐私 - 不收集用户数据\n• 多个地图提供商OSM、卫星图像",
"initiative": "DeFlock 更广泛倡议的一部分,旨在促进监控透明化。",
"footer": "访问deflock.me\n使用 Flutter 构建 • 开源"
},
"actions": {
"tagNode": "新建节点",
"download": "下载",

View File

@@ -14,36 +14,42 @@ class AboutScreen extends StatelessWidget {
appBar: AppBar(
title: Text(locService.t('settings.aboutThisApp')),
),
body: FutureBuilder<String>(
future: DefaultAssetBundle.of(context).loadString('assets/info.txt'),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(
child: CircularProgressIndicator(),
);
}
if (snapshot.hasError) {
return Center(
child: Padding(
padding: const EdgeInsets.all(16),
child: Text(
'Error loading info: ${snapshot.error}',
style: Theme.of(context).textTheme.bodyLarge,
textAlign: TextAlign.center,
),
body: SingleChildScrollView(
padding: const EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
locService.t('about.title'),
style: Theme.of(context).textTheme.headlineSmall?.copyWith(
fontWeight: FontWeight.bold,
),
);
}
return SingleChildScrollView(
padding: const EdgeInsets.all(16),
child: Text(
snapshot.data ?? 'No info available.',
),
const SizedBox(height: 16),
Text(
locService.t('about.description'),
style: Theme.of(context).textTheme.bodyLarge,
),
);
},
const SizedBox(height: 16),
Text(
locService.t('about.features'),
style: Theme.of(context).textTheme.bodyLarge,
),
const SizedBox(height: 16),
Text(
locService.t('about.initiative'),
style: Theme.of(context).textTheme.bodyLarge,
),
const SizedBox(height: 24),
Text(
locService.t('about.footer'),
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
color: Theme.of(context).textTheme.bodySmall?.color,
),
textAlign: TextAlign.center,
),
],
),
),
),
);