product icon

i18n Editor for macOS - Native Paraglide JS Translation Manager

App

šŸŒ i18n Editor for macOS

i18n Editor Icon

Transform your translation workflow today - because life's too short for manual JSON editing.

A beautiful, native macOS app for effortless Paraglide JS internationalization management

Transform your Paraglide JS workflow with an intuitive, native editor that makes managing i18n JSON files a breeze. Optimized for SvelteKit projects using Paraglide JS from inlang.

macOS Swift SwiftUI Paraglide JS

i18n Editor Cover

šŸ“ø Screenshots

Translation Table View Smart Refactoring Project Settings

Translation Table • Smart Refactoring • Project Management

✨ Why i18n Editor?

Stop wrestling with JSON files. Start focusing on what matters - your content.

  • šŸŽÆ Native macOS Experience - Feels right at home on your Mac
  • šŸš€ Paraglide JS Optimized - Built specifically for Paraglide JS workflows
  • šŸ” Smart Detection - Automatically scans project.inlang/settings.json and i18n JSON files
  • šŸ“Š Visual Translation Table - Spreadsheet-like editing with Excel-style navigation
  • 🧠 Intelligent Refactoring - AI-powered optimization suggestions
  • ⚔ Real-time Validation - Catch issues before they reach production
  • 🌐 Framework Agnostic - Works with any framework using similar inlang settings

šŸŽ¬ Features That Make You Smile

šŸ“ Intuitive Translation Editing

  • Double-click to edit any translation cell
  • Arrow key navigation between cells (just like Excel!)
  • Tab/Shift+Tab for sequential editing
  • Auto-save drafts with visual change indicators
  • Bulk operations for efficient mass editing

šŸ”§ Smart Refactoring Engine

  • Remove empty translations automatically
  • Merge duplicate keys with conflict resolution
  • Optimize nesting structure for better organization
  • Sort keys alphabetically for consistency
  • Format JSON with beautiful indentation

šŸ” Advanced Search & Filtering

  • Real-time search across all translations
  • Filter by status (missing, empty, complete)
  • Sort by usage frequency or alphabetically
  • Multi-locale filtering for targeted editing

šŸ“Š Project Intelligence

  • Automatic settings detection - Scans project.inlang/settings.json automatically
  • Usage tracking - See which keys are actually used in your codebase
  • Translation statistics with completion percentages
  • Route-based analysis for SvelteKit + Paraglide JS projects
  • Smart key extraction from Svelte files and Paraglide JS usage patterns

⚔ Validation & Quality Assurance

  • Real-time validation of message formats
  • Cross-locale consistency checks
  • Missing translation detection
  • Syntax error highlighting
  • Auto-fix suggestions for common issues

šŸ—‚ļø Seamless Project Management

  • Automatic inlang project detection - Finds and loads project.inlang/settings.json
  • Paraglide JS configuration support - Reads pathPattern, locales, and baseLocale
  • Automatic locale file creation when adding new languages
  • Smart file deletion prompts when removing locales
  • Security-scoped file access (macOS sandbox compliant)
  • Recent projects for quick access

šŸš€ Getting Started

Prerequisites

  • macOS 12.0 or later
  • A project with Paraglide JS setup (SvelteKit recommended)
  • project.inlang/settings.json configuration file

Installation

  1. Download the latest release from Releases
  2. Drag i18n Editor.app to your Applications folder
  3. Launch and grant file access permissions when prompted

First Steps

  1. Open your project - Click "Select Project Folder" and choose your project root
  2. Automatic detection - The app scans for project.inlang/settings.json and loads your configuration
  3. Start editing - Double-click any cell to begin translating
  4. Save when ready - Hit "Save All" to write changes to your JSON files

Supported Project Structure

your-project/
ā”œā”€ā”€ project.inlang/
│   └── settings.json          # Paraglide JS configuration
ā”œā”€ā”€ messages/                  # Translation files (configurable path)
│   ā”œā”€ā”€ en.json
│   ā”œā”€ā”€ de.json
│   └── fr.json
└── src/                       # Your source code

Framework Compatibility

While optimized for Paraglide JS + SvelteKit, this app works with any project that uses:

  • project.inlang/settings.json configuration file
  • JSON-based translation files
  • Standard inlang pathPattern structure

Tested with:

  • āœ… SvelteKit + Paraglide JS
  • āœ… Any framework following inlang conventions

šŸŽÆ Perfect For

  • Paraglide JS users in SvelteKit projects seeking visual translation management
  • inlang ecosystem adopters who want a native macOS editing experience
  • Translation teams who prefer spreadsheet-like editing over raw JSON
  • Project managers tracking translation progress across multiple locales
  • Developers using any framework with similar project.inlang/settings.json structure
  • Anyone tired of manually editing JSON translation files

šŸ› ļø Built With Love Using

  • SwiftUI - For that native macOS feel
  • Core Data - Robust data persistence
  • Security-Scoped Bookmarks - Sandbox-friendly file access
  • Combine - Reactive programming patterns
  • inlang ecosystem integration - Native support for Paraglide JS workflows
  • Apple Human Interface Guidelines - Because good design matters

šŸ¤ Contributing & Feature Requests

We'd love to hear from you! This app is built for the community, by the community.

šŸ’” Request Features

Have an idea that would make your i18n workflow even better? Open an issue and tell us about it!

šŸ› Found a Bug?

Help us squash it! Report bugs here with:

  • Steps to reproduce
  • Expected vs actual behavior
  • Your macOS version
  • Sample project (if possible)

šŸ”§ Want to Contribute?

  1. Fork the repository
  2. Create a feature branch (git checkout -b amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin amazing-feature)
  5. Open a Pull Request

šŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

šŸ™ Acknowledgments

  • The inlang team for creating Paraglide JS and the amazing i18n ecosystem
  • The SvelteKit team for building an incredible framework
  • The i18n community for inspiration and feedback
  • Apple for the excellent development tools and guidelines

Made with ā¤ļø in šŸ‡­šŸ‡°šŸ‡²šŸ‡“šŸ‡ØšŸ‡³ for the Paraglide JS and SvelteKit community