Skip to content

feat: Complete Spanish translation + scalable JSON i18n system - #92

Merged
Senzme merged 10 commits into
Senzme:mainfrom
SkuuIll:spanish-translation
Jul 12, 2026
Merged

feat: Complete Spanish translation + scalable JSON i18n system#92
Senzme merged 10 commits into
Senzme:mainfrom
SkuuIll:spanish-translation

Conversation

@SkuuIll

@SkuuIll SkuuIll commented Jul 10, 2026

Copy link
Copy Markdown

Summary

Complete Spanish translation of NFile (~1000 strings across 55+ files) with a scalable JSON-based internationalization system that makes adding new languages trivial.

Changes

1. Full Spanish Translation

  • Translated all UI strings, dialogs, notifications, and error messages
  • Covers all screens: Home, Settings, File Manager, Archive Viewer, Media Players, FTP/HTTP/Cloud Sharing, Storage Analyzer, Vault, Recycle Bin, etc.
  • Android notification strings translated via values-es/strings.xml

2. Scalable JSON i18n Architecture

  • Migrated from hardcoded ternary operators to JSON-based translation files (assets/i18n/en.json and assets/i18n/es.json)
  • 586 translation keys extracted and organized
  • Adding a new language requires only creating a new JSON file (zero Dart code changes)
  • Dynamic system locale detection at runtime

3. Language Selector in Settings

  • Added language picker in More Settings (System Default / English / Spanish)
  • Auto-detects device language when set to System Default

4. UI Optimizations

  • Minimalist theme redesign
  • APK release optimizations (split-per-abi, obfuscation, tree-shaking)
  • StorageVolume properties fix (totalBytes/usedBytes)
  • Settings screen strings fully localized (color names, font names, recycle bin options)

How to Add a New Language

  1. Copy assets/i18n/en.json to assets/i18n/XX.json
  2. Translate the values
  3. Add the locale to the supported list
  4. Done - zero code changes needed

Testing

  • Built and tested release APK on Android device
  • Verified language switching between English and Spanish
  • Verified system locale auto-detection

Skuuill added 10 commits July 10, 2026 14:46
…ptimizations

- Full Spanish translation (~1000 strings across 55+ files)
- Scalable JSON-based i18n system (assets/i18n/en.json, es.json)
- Language selector in Settings (System Default / English / Spanish)
- Dynamic system locale detection at runtime
- Minimalist theme redesign
- APK release optimizations (split-per-abi, obfuscation)
- StorageVolume properties fix
- Settings screen strings fully localized

Adding a new language requires only creating a new JSON file - zero Dart code changes needed.
…emes, fonts, icons, folder styles) and fix 2 broken FTP strings in en.json
Extracted over 250 hardcoded English strings from 40+ UI files into en.json and es.json.

Refactored AppStrings class to expose standard variables for dynamic locale lookups.

Removed invalid const modifiers from UI widgets and providers that were breaking compilation due to non-constant evaluation.

Converted switch case constants in media_provider.dart and quick_categories_grid.dart to if/else statements.

Ensured a clean, successful build after integrating robust i18n.
- Se completó la traducción al 100% de la interfaz de usuario al español.
- Se rediseñó por completo el portal web local (Start Web Server) con colores modernos y diseño en glassmorphism.
- Integración en Android: La app ahora funciona como gestor nativo alternativo y selector de archivos.
- Soporte de Intent GET_CONTENT y ACTION_PICK: Si se abre desde otra aplicación para elegir archivos/medios, permite al usuario elegirlos y devuelve la ruta original.
- Implementado FileProvider de Android para prevenir fallas de FileUriExposedException en Android 11+.
@Senzme

Senzme commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Thank you for your contribution! We appreciate your work.

@Senzme
Senzme merged commit c0269bb into Senzme:main Jul 12, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants