Skip to content

A powerful desktop application for reading, searching, and managing iOS/macOS localization strings from `.lproj` folders

License

Notifications You must be signed in to change notification settings

iMokhles/Localizable-Reader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

21 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

LocalizableReader

LocalizableReader

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.

๐ŸŽฏ Why This Project is Important

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.

LocalizableReader Screenshot



LocalizableReader Platform License

โœจ Features

๐Ÿ” Smart File Parsing

  • Automatic Detection: Automatically finds and parses .strings files in .lproj folders
  • plutil Integration: Uses macOS's native plutil command for reliable JSON conversion
  • Multiple File Support: Handles projects with hundreds of localization files

๐ŸŽฏ Powerful Search & Filter

  • Real-time Search: Search through localization values with debounced input
  • File Filtering: Filter entries by specific .strings files
  • Smart Pagination: Efficiently handle large datasets with 10 entries per page

๐Ÿ–ฑ๏ธ Intuitive Interface

  • Drag & Drop: Simply drag your .lproj folder to get started
  • Modern UI: Clean, dark-themed interface built with Tailwind CSS
  • Responsive Design: Optimized for different screen sizes

๐Ÿ“‹ Copy & Export

  • One-Click Copy: Copy individual keys or values to clipboard
  • Tooltip Guidance: Clear visual indicators for each action

๐Ÿš€ Performance

  • Fast Loading: Optimized for large localization projects
  • Memory Efficient: Pagination prevents memory issues with huge datasets
  • Smooth Scrolling: Sticky headers and smooth table navigation

๐Ÿ“‹ Roadmap

๐Ÿšง In Progress

  • ๐ŸชŸ Windows Support: Full Windows compatibility testing and optimization
  • ๐Ÿง Linux Support: Complete Linux distribution support and testing

๐Ÿ”ฎ Future Features

  • ๐ŸŒ 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

๐Ÿ› ๏ธ Technologies

  • ๐Ÿ”‹ 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

๐Ÿ“ฆ Installation

Prerequisites

  • Node.js 20 or higher
  • pnpm 10 or higher

Development Setup

# Clone the repository
git clone https://github.com/imokhles/localizable-reader.git
cd localizable-reader

# Install dependencies
pnpm install

# Start development server
pnpm dev

Building for Production

# Build for all platforms
pnpm build

# Build for specific platform
pnpm build --mac
pnpm build --win
pnpm build --linux

๐Ÿš€ Usage

Getting Started

  1. Launch LocalizableReader
  2. Select a .lproj folder by:
    • Dragging and dropping the folder onto the app
    • Clicking "Select .lproj Folder" and browsing to your folder
  3. Browse your localizations in the table view
  4. Search and filter using the search bar and file dropdown
  5. Copy keys or values using the copy buttons

Supported File Types

  • .strings files (iOS/macOS localization format)
  • .lproj folders containing multiple .strings files

Keyboard Shortcuts

  • Cmd/Ctrl + F: Focus search bar
  • Escape: Clear search
  • Arrow Keys: Navigate table rows
  • Enter: Copy selected item

๐Ÿ“ Project Structure

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

๐Ÿ”ง Development

Available Scripts

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

Architecture

  • MVVM Pattern: Clean separation of concerns
  • Zustand Store: Centralized state management
  • IPC Communication: Secure main-renderer communication
  • TypeScript: Full type safety throughout

๐Ÿค Contributing

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.

Development Guidelines

  1. Follow the existing code style
  2. Add tests for new features
  3. Update documentation as needed
  4. Ensure all checks pass

๐Ÿ“„ License

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

๐Ÿ™ Acknowledgments

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

About

A powerful desktop application for reading, searching, and managing iOS/macOS localization strings from `.lproj` folders

Resources

License

Stars

Watchers

Forks

Packages

No packages published