Convert Figma logo to code with AI

igorkulman logoiOSLocalizationEditor

Simple macOS editor app to help you manage iOS and macOS app localizations by allowing you to edit all the translations side by side

1,451
116
1,451
3

Top Related Projects

Algorithms and data structures in Swift, with explanations!

A handy collection of more than 500 native Swift extensions to boost your productivity.

A collaborative list of awesome Swift libraries and resources. Feel free to contribute!

A curated list of awesome iOS ecosystem, including Objective-C and Swift Projects

40,982

Elegant HTTP Networking in Swift

A lightweight, pure-Swift library for downloading and caching images from the web.

Quick Overview

iOSLocalizationEditor is a macOS application designed to simplify the process of managing localizations in iOS projects. It provides a user-friendly interface for editing and managing localization strings across multiple languages, making it easier for developers to maintain and update translations for their iOS applications.

Pros

  • Intuitive user interface for managing localizations
  • Supports multiple languages and string files
  • Highlights missing translations and provides search functionality
  • Allows direct editing of localization files without needing to open Xcode

Cons

  • Limited to iOS projects only
  • Requires macOS to run the application
  • May not support all complex localization scenarios
  • Doesn't integrate directly with translation services

Getting Started

  1. Download the latest release from the GitHub releases page.
  2. Open the downloaded .dmg file and drag the iOSLocalizationEditor app to your Applications folder.
  3. Launch the application and select your iOS project folder.
  4. Use the interface to edit and manage your localization strings across different languages.
  5. Save your changes, and the application will update the corresponding .strings files in your project.

Competitor Comparisons

Algorithms and data structures in Swift, with explanations!

Pros of swift-algorithm-club

  • Comprehensive collection of algorithms and data structures implemented in Swift
  • Educational resource with detailed explanations and examples
  • Active community with regular contributions and updates

Cons of swift-algorithm-club

  • Not focused on a specific iOS development task like localization
  • May be overwhelming for developers looking for a simple tool
  • Requires more time to understand and implement specific algorithms

Code Comparison

While a direct code comparison is not particularly relevant due to the different purposes of these repositories, we can showcase a small example from each:

swift-algorithm-club (Binary Search implementation):

func binarySearch<T: Comparable>(_ a: [T], key: T) -> Int? {
  var lowerBound = 0
  var upperBound = a.count
  while lowerBound < upperBound {
    let midIndex = lowerBound + (upperBound - lowerBound) / 2
    if a[midIndex] == key {
      return midIndex
    } else if a[midIndex] < key {
      lowerBound = midIndex + 1
    } else {
      upperBound = midIndex
    }
  }
  return nil
}

iOSLocalizationEditor (Localization string parsing):

func parse(content: String) -> [LocalizationString] {
    return content.components(separatedBy: .newlines)
        .filter { $0.contains("=") }
        .compactMap { line -> LocalizationString? in
            let parts = line.components(separatedBy: "=")
            guard parts.count == 2 else { return nil }
            return LocalizationString(key: parts[0].trimmingCharacters(in: .whitespaces),
                                      value: parts[1].trimmingCharacters(in: .whitespaces))
        }
}

A handy collection of more than 500 native Swift extensions to boost your productivity.

Pros of SwifterSwift

  • Extensive collection of Swift extensions for various types and UIKit components
  • Regularly updated with new features and improvements
  • Large community support and contributions

Cons of SwifterSwift

  • May include unnecessary extensions for some projects, potentially bloating the codebase
  • Requires careful consideration when integrating to avoid conflicts with existing code
  • Not specifically focused on localization tasks

Code Comparison

SwifterSwift example:

let string = "Hello, World!"
let reversed = string.reversed() // "!dlroW ,olleH"
let truncated = string.truncate(to: 5) // "Hello..."

iOSLocalizationEditor example:

// No direct code comparison available as iOSLocalizationEditor is a standalone tool
// for managing localization files, not a Swift extension library

Summary

SwifterSwift is a comprehensive Swift extension library that provides a wide range of utility functions and syntactic sugar for Swift developers. It offers extensions for various Swift types and UIKit components, making it a versatile tool for iOS development.

On the other hand, iOSLocalizationEditor is a specialized tool focused on managing localization files for iOS projects. It provides a user-friendly interface for editing and managing localization strings across multiple languages.

While SwifterSwift can enhance overall Swift development productivity, iOSLocalizationEditor is specifically designed to streamline the localization process. The choice between the two depends on the specific needs of the project, with SwifterSwift being more suitable for general Swift development and iOSLocalizationEditor for localization management.

A collaborative list of awesome Swift libraries and resources. Feel free to contribute!

Pros of awesome-swift

  • Comprehensive curated list of Swift resources, libraries, and tools
  • Regularly updated with community contributions
  • Covers a wide range of topics and categories in the Swift ecosystem

Cons of awesome-swift

  • Not a functional tool, but rather a reference list
  • Requires manual exploration to find specific resources
  • May include outdated or deprecated projects if not regularly maintained

Code comparison

Not applicable, as awesome-swift is a curated list and doesn't contain functional code. iOSLocalizationEditor, on the other hand, is a tool for editing iOS app localizations. Here's a sample of how you might use iOSLocalizationEditor in Swift:

import iOSLocalizationEditor

let editor = LocalizationEditor()
editor.loadStrings(from: "path/to/Localizable.strings")
editor.translate("Hello, World!", to: "es")
editor.saveStrings(to: "path/to/Localizable.strings")

Summary

awesome-swift serves as a valuable resource for Swift developers, providing a curated list of libraries, tools, and resources. It's an excellent starting point for discovering new Swift-related projects and learning materials. However, it's not a functional tool like iOSLocalizationEditor, which focuses specifically on managing iOS app localizations. While awesome-swift offers breadth of information, iOSLocalizationEditor provides a targeted solution for a specific development task.

A curated list of awesome iOS ecosystem, including Objective-C and Swift Projects

Pros of awesome-ios

  • Comprehensive collection of iOS development resources, libraries, and tools
  • Regularly updated with community contributions
  • Covers a wide range of iOS development topics and categories

Cons of awesome-ios

  • Not a specific tool or application, but a curated list
  • May require additional effort to find and implement specific solutions
  • Can be overwhelming due to the large number of resources listed

Code comparison

Not applicable, as awesome-ios is a curated list of resources and doesn't contain specific code implementations. iOSLocalizationEditor, on the other hand, is a tool for editing iOS app localizations. Here's a sample of how you might use iOSLocalizationEditor:

import iOSLocalizationEditor

let editor = LocalizationEditor()
editor.loadStrings(from: "path/to/Localizable.strings")
editor.translate("Hello, World!", to: "es", as: "Hola, Mundo!")
editor.saveStrings(to: "path/to/Localizable.strings")

Summary

awesome-ios is a comprehensive resource for iOS developers, offering a wide range of tools, libraries, and resources. It's great for discovering new solutions and staying up-to-date with the iOS ecosystem. However, it's not a specific tool like iOSLocalizationEditor, which focuses on simplifying the localization process for iOS apps. While awesome-ios provides valuable information, iOSLocalizationEditor offers a more targeted solution for managing app translations.

40,982

Elegant HTTP Networking in Swift

Pros of Alamofire

  • Comprehensive networking library for iOS and macOS
  • Extensive features including request/response serialization, authentication, and validation
  • Large community support and regular updates

Cons of Alamofire

  • Larger footprint and potential overhead for simple networking tasks
  • Steeper learning curve for developers new to the library
  • Not specifically designed for localization tasks

Code Comparison

iOSLocalizationEditor (Localization-focused):

let editor = LocalizationEditor()
editor.loadProject(at: projectURL)
editor.translate("Hello", to: "Bonjour", for: "fr")
editor.saveChanges()

Alamofire (Networking-focused):

AF.request("https://api.example.com/translate")
    .responseDecodable(of: TranslationResponse.self) { response in
        switch response.result {
        case .success(let translation):
            print("Translated: \(translation.text)")
        case .failure(let error):
            print("Error: \(error)")
        }
    }

While iOSLocalizationEditor is specifically designed for managing iOS app localizations, Alamofire is a powerful networking library that can be used for various tasks, including fetching translations from remote APIs. The choice between the two depends on the specific needs of your project.

A lightweight, pure-Swift library for downloading and caching images from the web.

Pros of Kingfisher

  • Powerful image downloading and caching library for iOS
  • Supports various image formats and processing options
  • Extensive documentation and active community support

Cons of Kingfisher

  • Larger library size compared to iOSLocalizationEditor
  • May be overkill for projects that only need basic localization features
  • Learning curve for developers unfamiliar with image processing libraries

Code Comparison

iOSLocalizationEditor:

let editor = LocalizationEditor()
editor.loadStrings(from: "Localizable.strings")
editor.translate("Hello", to: "Bonjour", for: "fr")
editor.saveStrings()

Kingfisher:

let url = URL(string: "https://example.com/image.jpg")
imageView.kf.setImage(with: url)

While iOSLocalizationEditor focuses on managing localization strings, Kingfisher specializes in image downloading and caching. The code examples demonstrate their distinct purposes, with iOSLocalizationEditor handling string translations and Kingfisher simplifying image loading from URLs.

Kingfisher is better suited for projects requiring robust image handling, while iOSLocalizationEditor is more appropriate for managing localization tasks in iOS applications. The choice between the two depends on the specific needs of your project.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Localization Editor

Simple macOS editor app to help you manage iOS app localizations by allowing you to edit all the translations side by side, highlighting missing translations

Localization Editor

Motivation

Managing localization files (Localizable.strings) is a pain, there is no tooling for it. There is no easy way to know what strings are missing or to compare them across languages.

What does this tool do?

Start the Localization Editor, choose File | Open folder with localization files and point it to the folder where your localization files are stored. The tool finds all the Localizable.strings, detects their language and displays your strings side by side as shown on the screenshot above. You can point it to the root of your project but it will take longer to process.

All the translations are sorted by their key (shown as first column) and you can see and compare them quickly, you can also see missing translations in any language.

When you change any of the translations the corresponding Localizable.strings gets updated.

Installation

Homebrew

brew install --cask localizationeditor

Manual

To download and run the app

  • Go to Releases and download the built app archive LocalizationEditor.app.zip from the latest release
  • Unzip LocalizationEditor.app.zip
  • Right click on the extracted LocalizationEditor.app and choose Open (just a double-clicking will show a warning because the app is only signed with a development certificate)

Support the project

Buy Me A Coffee

Contributing

All contributions are welcomed, including bug reports and pull requests with new features. Please read CONTRIBUTING for more details.

Localizing the app

The app is currently localized into English and Chinese. If you want to add localization for your language, just translate the Localizable.strings files. You can use this app to do it!

Author

See also the list of contributors who participated in this project.

License

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

Icon

App icon created by @sergeykushner