Skip to content

Generate localized strings from extension and storyboards

Notifications You must be signed in to change notification settings

timbaev/LocalizedGenStrings

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LocalizedGenStrings 🌐

LocalizedGenStrings is a command line tool to find localized strings from code and storyboards, and generate Localizable.strings file for Xcode project. Also you can translate you strings using Yandex.Translate.

Use Case

To localize strings use extension:

func localized(tableName: String? = nil, comment: String = "") -> String {
    return NSLocalizedString(self, tableName: tableName, bundle: Bundle.main, value: "", comment: comment)
}

Usage:

static let unknownErrorTitle = "Something went wrong".localized()

let formattedString = String(format: "%@ now".localized(), status)

To localize storyboards UI elements create custom classes for necessary element, for example:

class LocalizableLabel: UILabel {

    override func awakeFromNib() {
        super.awakeFromNib()

        self.text = self.text?.localized()
    }
}

And set LocalizableLabel custom class on Storyboard

How script work?

LocalizedGenStrings looking for localized strings from code whiche used localized() extension. Also using ibtool script grabbed all strings from UI elements (regardless of whether a custom class is used or not). And finally, if Localizable.strings file already exists into project, script will be merge strings (if string already in file, value not will be replaced).

Features

To find localization strings and generate Localizable.strings file simply run in the root folder of you project (where is located .xcodeproj file):

$ LocalizedGenStrings

After that in your Xcode project you can see created Localizable.strings file.

To generate Localizable.strings file for specific language use:

$ LocalizedGenStrings --lang language_code --key yandex_translate_api_key

After that in your Xcode project you can see Localizable.strings file for you language: Localizable.strings files screenshot

See available language_code on this page

Get API key on this page

Full documentation

NOTE: the quality of the translation depends only on Yandex.Translate. Be sure to check the correctness of the translation and the integrity of the translated strings.

Also you can set custom path to you Xcode project:

$ LocalizedGenStrings --path path/to/xcodeproj/folder

Installing

Homebrew

$ brew tap timbaev/LocalizedGenStrings https://github.com/timbaev/LocalizedGenStrings.git
$ brew install LocalizedGenStrings

Manually

$ git clone https://github.com/timbaev/LocalizedGenStrings.git
$ cd LocalizedGenStrings
$ make install

Requirements

  • Xcode 10.3+ and Swift 5+

Help, feedback or suggestions?

  • Open an issue if you need help, if you found a bug, or if you want to discuss a feature request.
  • Open a PR if you want to make some change to LocalizedGenStrings.
  • Contact me on Twitter if you have any questions

About

Generate localized strings from extension and storyboards

Resources

Stars

Watchers

Forks

Packages

No packages published