A powerful desktop application for reading, searching, and managing iOS/macOS localization strings from `.lproj` folders
Built with Electron and React, LocalizableReader provides an intuitive interface for developers working with multiple language localizations.
Perfect for Reverse Engineering iOS/macOS Apps: When you extract `.lproj` folders from IPA files, the localization strings are in binary format and need to be converted to JSON to be readable. LocalizableReader makes this process seamless, helping you easily find and analyze localization strings when reverse engineering iOS/macOS app binaries.
- Automatic Detection: Automatically finds and parses
.stringsfiles in.lprojfolders - plutil Integration: Uses macOS's native
plutilcommand for reliable JSON conversion - Multiple File Support: Handles projects with hundreds of localization files
- Real-time Search: Search through localization values with debounced input
- File Filtering: Filter entries by specific
.stringsfiles - Smart Pagination: Efficiently handle large datasets with 10 entries per page
- Drag & Drop: Simply drag your
.lprojfolder to get started - Modern UI: Clean, dark-themed interface built with Tailwind CSS
- Responsive Design: Optimized for different screen sizes
- One-Click Copy: Copy individual keys or values to clipboard
- Tooltip Guidance: Clear visual indicators for each action
- Fast Loading: Optimized for large localization projects
- Memory Efficient: Pagination prevents memory issues with huge datasets
- Smooth Scrolling: Sticky headers and smooth table navigation
- ๐ช Windows Support: Full Windows compatibility testing and optimization
- ๐ง Linux Support: Complete Linux distribution support and testing
- ๐ Multi-Language Management: Manage and support multiple languages simultaneously with side-by-side comparison
- ๐ Export Options: Export to CSV, JSON, or Excel formats
- ๐ Advanced Search: Regex search and advanced filtering options
- ๐ฑ Mobile Support: iOS and Android companion apps
- โ๏ธ Cloud Sync: Sync projects across devices
- ๐จ Theme Customization: Light/dark theme options
- ๐ Translation Workflow: Built-in translation management and progress tracking
- ๐ Electron - Cross-platform desktop framework
- โ๏ธ React 19 - Modern UI library with hooks
- ๐ TypeScript 5 - Type-safe development
- ๐จ Tailwind CSS 4 - Utility-first styling
- ๐ฏ shadcn/ui - Beautiful, accessible components
- ๐ฆ Lucide Icons - Consistent iconography
- ๐ฆ Zustand - Lightweight state management
- ๐ React Dropzone - Drag and drop functionality
- Node.js 20 or higher
- pnpm 10 or higher
# Clone the repository
git clone https://github.com/imokhles/localizable-reader.git
cd localizable-reader
# Install dependencies
pnpm install
# Start development server
pnpm dev# Build for all platforms
pnpm build
# Build for specific platform
pnpm build --mac
pnpm build --win
pnpm build --linux- Launch LocalizableReader
- Select a .lproj folder by:
- Dragging and dropping the folder onto the app
- Clicking "Select .lproj Folder" and browsing to your folder
- Browse your localizations in the table view
- Search and filter using the search bar and file dropdown
- Copy keys or values using the copy buttons
.stringsfiles (iOS/macOS localization format).lprojfolders containing multiple.stringsfiles
- Cmd/Ctrl + F: Focus search bar
- Escape: Clear search
- Arrow Keys: Navigate table rows
- Enter: Copy selected item
localizable-reader/
โโโ src/
โ โโโ main/ # Electron main process
โ โ โโโ services/ # Localization parsing service
โ โ โโโ ipc/ # Inter-process communication
โ โโโ renderer/ # React renderer process
โ โ โโโ components/ # UI components
โ โ โโโ lib/ # Utilities and stores
โ โ โโโ screens/ # Main application screens
โ โโโ shared/ # Shared types and constants
โ โโโ resources/ # Icons and assets
โโโ dist/ # Built applications
โโโ docs/ # Documentation
pnpm dev # Start development server
pnpm build # Build for production
pnpm start # Preview built app
pnpm lint # Run linter
pnpm lint:fix # Fix linting issues- MVVM Pattern: Clean separation of concerns
- Zustand Store: Centralized state management
- IPC Communication: Secure main-renderer communication
- TypeScript: Full type safety throughout
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Follow the existing code style
- Add tests for new features
- Update documentation as needed
- Ensure all checks pass
This project is licensed under the MIT License - see the LICENSE file for details.
This project is built using the excellent Electron App Boilerplate by Dalton Menezes.
The boilerplate provides:
- ๐ฅ Fast and ready-to-go structure with React 19, TypeScript 5, and Tailwind CSS 4
- ๐ Auto reload for main process and Fast Refresh for renderer
- ๐ Window/Screen routing with Electron Router DOM
- ๐ฎ GitHub Action releases for Windows, Mac, and Linux
- ๐ Source code protection support
- ๐ช Absolute paths support
Special thanks to Dalton for creating such a comprehensive and well-maintained boilerplate that makes Electron development a breeze! ๐
Made with โค๏ธ for the iOS/macOS development community