diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index dfd0c4c..6b9f9c4 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -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 diff --git a/assets/info.txt b/assets/info.txt deleted file mode 100644 index ebfc2f1..0000000 --- a/assets/info.txt +++ /dev/null @@ -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 构建 • 开源 diff --git a/lib/localizations/README.md b/lib/localizations/README.md index 267c8f5..087affe 100644 --- a/lib/localizations/README.md +++ b/lib/localizations/README.md @@ -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! diff --git a/lib/localizations/de.json b/lib/localizations/de.json index 45edf19..52d41b3 100644 --- a/lib/localizations/de.json +++ b/lib/localizations/de.json @@ -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...", diff --git a/lib/localizations/en.json b/lib/localizations/en.json index 6a1efa3..f5ed7e3 100644 --- a/lib/localizations/en.json +++ b/lib/localizations/en.json @@ -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", diff --git a/lib/localizations/es.json b/lib/localizations/es.json index f321c3e..099c07b 100644 --- a/lib/localizations/es.json +++ b/lib/localizations/es.json @@ -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", diff --git a/lib/localizations/fr.json b/lib/localizations/fr.json index 72b414f..623a97f 100644 --- a/lib/localizations/fr.json +++ b/lib/localizations/fr.json @@ -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", diff --git a/lib/localizations/it.json b/lib/localizations/it.json index 7bf7a9c..8cb41ac 100644 --- a/lib/localizations/it.json +++ b/lib/localizations/it.json @@ -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", diff --git a/lib/localizations/pt.json b/lib/localizations/pt.json index 913c447..57a179a 100644 --- a/lib/localizations/pt.json +++ b/lib/localizations/pt.json @@ -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", diff --git a/lib/localizations/zh.json b/lib/localizations/zh.json index be6b26b..8e0e4f6 100644 --- a/lib/localizations/zh.json +++ b/lib/localizations/zh.json @@ -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": "下载", diff --git a/lib/screens/about_screen.dart b/lib/screens/about_screen.dart index 9d27791..8e1596d 100644 --- a/lib/screens/about_screen.dart +++ b/lib/screens/about_screen.dart @@ -14,36 +14,42 @@ class AboutScreen extends StatelessWidget { appBar: AppBar( title: Text(locService.t('settings.aboutThisApp')), ), - body: FutureBuilder( - 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, + ), + ], + ), ), ), );