Localize is a framework writed in swift to localize your projects easier improves i18n, including storyboards and strings.

Overview

Localize

Carthage compatible codecov.io CocoaPods Build Status Language GitHub license Awesome

Localize is a framework written in swift to help you localize and pluralize your projects. It supports both storyboards and strings.

Localize Storyboard


Features

  • Storyboard with IBInspectable
  • Pluralize and localize your keys
  • Keep the File.strings files your app already uses
  • Support Apple strings and JSON Files
  • Change your app language without changing device language
  • Localize your Storyboards without extra files or/and ids

Requirements

  • iOS 9.0+
  • Xcode 8.0+
  • Swift 3.0+

Installation

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

gem install cocoapods

CocoaPods 1.1.0+ is required to build Localize 1.+.

To integrate Localize into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'Localize' , '~> 2.3.0'
end

# If you are using Swift 4.x
# target '<Your Target Name>' do
#    pod 'Localize' , '~> 2.1.0'
# end

Then, run the following command:

pod install

Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.

You can install Carthage with Homebrew using the following command:

brew update
brew install carthage

To integrate Localize into your Xcode project using Carthage, specify it in your Cartfile:

github "andresilvagomez/Localize"

Run carthage update to build the framework and drag the built Localize.framework into your Xcode project.

Swift Package Manager

The Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the swift compiler.

Once you have your Swift package set up, adding Localize as a dependency is as easy as adding it to the dependencies value of your Package.swift.

dependencies: [
    .Package(url: "https://github.com/andresilvagomez/Localize.git")
]

Usage

Add .localize() for any String if you want localize.

You don't need import anything in your code, Localize uses extensions to localize your Strings.

textLabel.text = "hello.world".localize()
// Or
textLabel.text = "hello.world".localized

You can decide if you want use JSON or Apple Strings, we support both, if you decide to use JSON please follow these instructions.

Create JSON file

Please create a JSON file in your code with this rule:

{your file name}-{your lang code}.json

For example

  • lang-en.json
  • lang-es.json
  • lang-fr.json

Example JSON File

{
    "hello" : {
        "world" : "Hello world!",
        "name" : "Hello %!"
    },
    "values" : "Hello % we are %, see you soon",
    "username" : "My username is :username",
    "navigation.title" : ""
}

Create String file

If you decide use Apple strings, please follow Apple Localization Guide to create strings file.

String file example


"hello.world" = "Hello world!";

"name" = "Hello %";

"values" = "Hello everyone my name is % and I'm %, see you soon";

"username" = "My username is :username";

"level.one.two.three" = "This is a multilevel key";

"the.same.lavel" = "This is a localized in the same level";

"enlish" = "This key only exist in english file.";

Whatever way you choose to, use that methods.

Localize strings

print( "hello.world".localize() )

// Hello world!

// Also you can use

print( "hello.world".localized )

Localize strings, replacing text

Localize use % identifier to replace the text

print( "hello.name".localize(value: "everyone") )

// Hello everyone!

Localize strings, replacing many texts

Localize use % identifier to replace the text

print( "values".localize(values: "everyone", "Software Developer") )

// Hello everyone we are Software Developer, see you soon

Localize strings, replacing dictionary values

Localize use :yourid to search your id in JSON File

print( "username".localize(dictionary: ["username": "Localize"]) )

// My username is Localize

Localize strings, using other files

If you decide use different files use methods with tableName in the end of each method, for example.

print( "hello.world".localize(tableName: "Other") )

print( "hello.name".localize(value: "everyone", tableName: "Errors") )

print( "values".localize(values: "everyone", "Software Developer", tableName: "YourFileName") )

print( "username".localize(dictionary: ["username": "Localize"], tableName: "YourFileName") )

We are amazing with storyboards

You don't need to import anything in your code, Localize uses extensions to localize your UIView components

To prevent auto localization for some controls you created in storyboard can set Auto Localize to Off

Localize Storyboard

  • lang-en.json
{
    "navigation" : {
        "title" : "Localize"
    },
    "app" : {
        "label" : "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium.",
        "textfield" : "Write some here."
    }
}

You can use extensions for

  • UIBarButtonItem
  • UIButton
  • UILabel
  • UINavigationItem
  • UISearchBar
  • UISegmentedControl
  • UITabBarItem
  • UITextField
  • UITextView

Updating language

When you change a language, automatically all views update your content to new language

Localize.update(language: "fr")

To make this work with strings, you need to implement a notification

override func viewDidLoad() {
    super.viewDidLoad()
    NotificationCenter.default.addObserver(self, selector: #selector(localize), name: NSNotification.Name(localizeChangeNotification), object: nil)
}

public func localize() {
    yourLabel.text = "app.names".localize(values: "mark", "henrry", "peater")
    otherLabel.text = "app.username".localize(value: "Your username")
}

Implementing internal acction to change a language

@IBAction func updateLanguage(_ sender: Any) {
    let actionSheet = UIAlertController(title: nil, message: "app.update.language".localize(), preferredStyle: UIAlertControllerStyle.actionSheet)
    for language in Localize.availableLanguages {
        let displayName = Localize.displayNameForLanguage(language)
        let languageAction = UIAlertAction(title: displayName, style: .default, handler: {
            (alert: UIAlertAction!) -> Void in
            Localize.update(language: language)
            })
        actionSheet.addAction(languageAction)
    }
    let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel, handler: {
        (alert: UIAlertAction) -> Void in
        })
    actionSheet.addAction(cancelAction)
    self.present(actionSheet, animated: true, completion: nil)
}

Config

This not is necesary, only if you need different results.

// AppDelegate.swift

import Localize

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    let localize = Localize.shared
    // Set your localize provider.
    localize.update(provider: .json)
    // Set your file name
    localize.update(fileName: "lang")
    // Set your default language.
    localize.update(defaultLanguage: "fr")
    // If you want change a user language, different to default in phone use thimethod.
    localize.update(language: "en")
    // If you want remove storaged language use
    localize.resetLanguage()
    // The used language
    print(localize.currentLanguage)
    // List of available language
    print(localize.availableLanguages)

    // Or you can use static methods for all
    Localize.update(fileName: "lang")
    Localize.update(defaultLanguage: "fr")
    Localize.update(language: "en-DE")

    return true
}

Pluralize

print( "people".pluralize(value: 0) )
// there are no people

print( "people".pluralize(value: 1) )
// only one person

print( "people".pluralize(value: 2) )
// two people

print( "people".pluralize(value: 27) )
// many people

print( "people".pluralize(value: 103) )
// hundreds of people

print( "people".pluralize(value: 1010) )
// thousand of people

print( "people".pluralize(value: 1000000) )
// millions of people

how you need compose your file.

// Json file

{
    "people": {
        "zero": "there are no people",
        "one": "only one person",
        "two": "two people",
        "many": "many people",
        "hundreds": "hundreds of people",
        "thousand": "thousand of people",
        "millions": "millions of people",
        "other": "not defined people"
    }
}
# string file

"people.zero" = "there are no people";
"people.one" = "only one person";
"people.two" = "two people";
"people.many" = "many people";
"people.hundreds" = "hundreds of people";
"people.thousand" = "thousand of people";
"people.millions" = "millions of people";
"people.other" = "not defined people";

but also you can show your value

print( "people".pluralize(value: 1) )
/// 1 Person

in your file

// JSON
{
    "people": {
        "one": "% Person",
        ...
    }
}

// Strings
"people.one" = "% Person";

Notes for your AppStore release

To make all languages you have localized your app for visible on the AppStore, you must add a language in the project's settings.

  1. For that, click on your project name in the left side bar.
  2. Then, choose project, instead of a target.
  3. At the bottom, under Localizations, press the + button & select a language you want to add
  4. On prompt, uncheck all files Xcode wants to add localization for, but keep a single one, that you won't actually localize, such as your launch screen for instance.
    • if you need to localize all your files, I suggest adding a placeholder storyboard file that you'll then add to localization
  5. Done! (You don't actually have to localize the placehodler file.) The AppStore will now show the new language in localizations for your app.

Credits

Andres Silva Gomez

Special thanks to Benjamin Erhart

License

Localize is released under the MIT license. See LICENSE for details.

Comments
  • Updating the language for a tableview with separate tableviewcell files

    Updating the language for a tableview with separate tableviewcell files

    Hi, thanks for your work.

    I am trying to translate an app that is built with a tableviewcontroller and each row has a separate tableviewcell file, and each tableviewcell has a collectionviewcell. This is to present a view like NetFlix or the AppStore: collectionviews embedded in tableviews.

    The problem with the translation comes when I want to translate in the HomeTableViewController file. Because the strings to translate are in the TableViewCell file, that has no viewdidload or viewwillappear.

    Any help would be very much appreciated.

    question 
    opened by jrumol 9
  • Localize with parameter not work

    Localize with parameter not work

    Hi! I am trying to localize a key like this: "This_is_key" = "You have % apples"; But it always fallback to base language. (in my case, I localize for Vietnamese). But the key without parameters still working in Vietnamese.

    I tried so many ways but it still not working.

    Please check

    bug 
    opened by purepure 8
  • Not localizing automatically

    Not localizing automatically

    First off, thanks for this awesome library. I love how simple, yet flexible, it is! Keep up the good work!


    I've setup localization for English and German: lang-en.json, lang-de.json. It works perfectly when manually setting the language in code by doing localize.update(language: "de"). However, it does not automatically set the language when changing my device's language.

    Am I missing something?


    Update:

    I figured I could manually set the language to the device's language by passing...

    Locale.preferredLanguages.first?.components(separatedBy: "-").first.lowercased ?? "en"
    

    ...as language code.
    Is this the way it's supposed to be?

    bug 
    opened by LinusGeffarth 6
  • Support for simplified and traditional  Chinese

    Support for simplified and traditional Chinese

    Issue

    The library does not handle properly languages that are coded by iOS in three components. I have tried to include translation for both simplified and traditional Chinese. The language variable is set as follow:

    • zh-Hans-US for simplified Chinese
    • zh-Hant-US for the traditional Chinese

    However, I cannot create json resource with the name zh-Hans-US / zh-Hant-US as last component encode the regional settings. In my case it is US. I have tried to name files: lang-zh-Hant.json and lang-zh-Hans.json but it results in selecting default language as the library always fall back to the single component file name (lang-zh.json) which also cannot be found.

    Localize Environment

    • Localize version:
    • Xcode version:
    • Swift version:
    • Platform(s) running Localize:
    • macOS version running Xcode:

    Localize Config

    /// Please put here your config
    

    What did you do?

    ℹ Please replace this with what you did.

    What did you expect to happen?

    ℹ Please replace this with what you expected to happen.

    What happened instead?

    ℹ Please replace this with of what happened instead.

    opened by przemokrk 5
  • Localization not working with Localizable.strings file

    Localization not working with Localizable.strings file

    I used Localizable.strings according to Apple guideline, and it works with NSLocalizedString("key", comment: "")

    Now I try to use Localize and "key".localized and it display key, not the proper value

    bug 
    opened by thang2410199 5
  •  Localize with multiple values bug fix

    Localize with multiple values bug fix

    PR Description

    The issue with library methods:

    1. Localize with values worked incorrectly with 3, 4, (probably more) values to insert. Values were not inserted.

    2. Localize with values worked incorrectly with 2 values: extra space appeared.

    Bug in tests:

    testLocalizeKeyWithValues() method had a misspelling bug, that allowed current library methods pass the test, while working incorrectly in the case 2)

    Work done:

    1. Simplified localize with values method implementation
    2. Fixed the bug in testLocalizeKeyWithValues() test method
    3. Added tests method to check multiple values insertion
    opened by KazaiMazai 2
  • Swift 4.2 support

    Swift 4.2 support

    The UIButton extension was referencing UIControlState, which changed to UIControl.State in Swift 4.2, preventing the project from compiling.

    I'm not sure what your policy is on Swift backwards compatibility support, I noticed your .swift-version file says 4.1 while the readme says Swift 3.0+, additionally you might consider the inline #if swift(>=4.2) check messy, can adjust things if that's your preference!

    opened by dclelland 2
  • Keep the string that had localize key

    Keep the string that had localize key

    Base on your example, what if I want to keep the string "app.label" without remove its key. For example, I want to localize "app.label" in the first viewcontroller but I don't want to localize "app.label" in the second viewcontroller. Any solutions ?

    enhancement 
    opened by hungcao2112 2
  • Some more changes

    Some more changes

    Hi!

    I had to make some more changes, because stuff broke:

    • Removed the "Languages" enum, instead work with standard ISO-639 codes, as expected across iOS.
    • Fixed #localize with placeholder replacement: Need fallback to original language on non-translated strings.

    I would love you to merge this and also to release a new version (1.4.0?) since I have a Pod which relies on this.

    What do you think about it?

    Cheers,

    Benjamin

    opened by tladesignz 2
  • Fix spelling errors in README

    Fix spelling errors in README

    PR Description

    ℹ Please provide a quick description for this pull request.

    Security Questions

    • [ ] You tested your code?
    • [ ] You keep the code coverage?
    • [ ] You tested your code?
    • [ ] You documented it change if is necessary?

    Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

    Describe the solution you'd like A clear and concise description of what you want to happen.

    Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

    Additional context Add any other context or screenshots about the feature request here.

    opened by imryan 1
  • Static UITableView rows not localized properly

    Static UITableView rows not localized properly

    Issue

    I have a static table that loads localized properly. Once the language change, the rows' text change to the default (used in the cell xib)

    Correct Schermata 2020-05-13 alle 23 11 39

    Wrong Schermata 2020-05-13 alle 23 11 52

    Localize Environment

    • Localize version: 2.3
    • Xcode version: 11.4.1
    • Swift version: 5
    • Platform(s) running Localize: iOs 13.4.1
    • macOS version running Xcode: Catalina 10.15.4

    Localize Config

    My localized JSON files are in a sub-folder Schermata 2020-05-13 alle 23 17 23

    // Localize
    let localize = Localize.shared
    localize.update(provider: .json) // Set your localize provider.
    localize.update(fileName: "lang") // Set your file name
    // Set language based on system
    let locale = Locale.preferredLanguages.first?.components(separatedBy: "-").first?.lowercased() ?? "en"
    localize.update(language: locale)
    

    What did you do?

    Here the code I'm using for creating the table

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            
            let cell = tableView.dequeueReusableCell(withIdentifier: "configCellIdentifier", for: indexPath) as! CellWithIconTableViewCell
            cell.accessoryType = .disclosureIndicator
            
            // THIS IS THE JSON FILE
            //"account": {
            //    "update-language": "Choose the new language",
            //    "static-table": {
            //        "ranking": "Check your rank",
            //        "account": "Account",
            //        "support": "Support",
            //        "about": "About",
            //        "language": "App language"
            //    }
            //},
            
            switch indexPath.section {
            case 0:
                switch indexPath.row {
                case 0:
                    cell.setProperties(icon: UIImage(named: "glyphicons-basic-393-medal"), text: "account.static-table.ranking".localized)
                    return cell
                case 1:
                    cell.setProperties(icon: UIImage(named: "glyphicons-basic-4-user"), text: "account.static-table.account".localized)
                    return cell                
                default:
                    break
                }
            case 1:
                switch indexPath.row {
                case 0:
                    cell.setProperties(icon: UIImage(named: "glyphicons-basic-587-bug"), text: "account.static-table.support".localized)
                    return cell
                case 1:
                    cell.setProperties(icon: UIImage(named: "glyphicons-basic-196-circle-empty-info"), text: "account.static-table.about".localized)
                    return cell
                case 2:
                    cell.setProperties(icon: UIImage(named: "glyphicons-basic-419-worl-east"), text: "account.static-table.language".localized)
                    cell.accessoryType = .none
                    return cell
                default:
                    break
                }
            default:
                break
            }
            
            return UITableViewCell()
    
        }
    

    This is the code used for changing the language

    private func chooseLanguage() {
            let actionSheet = UIAlertController(
                title: nil,
                message: "account.update-language".localize(),
                preferredStyle: UIAlertController.Style.actionSheet
            )
            
            for language in Localize.availableLanguages {
                let displayName = Localize.displayNameForLanguage(language)
                let languageAction = UIAlertAction(
                    title: displayName,
                    style: .default,
                    handler: { (_: UIAlertAction!) -> Void in
                        Localize.update(language: language)
                })
                actionSheet.addAction(languageAction)
            }
            let cancelAction = UIAlertAction(
                title: "general.alerts.cancel".localize(),
                style: UIAlertAction.Style.cancel,
                handler: nil
            )
            
            actionSheet.addAction(cancelAction)
            self.present(actionSheet, animated: true, completion: nil)
        }
    

    What did you expect to happen?

    I expect to see the right localization

    What happened instead?

    The rows present the default text

    opened by BossOz 1
  • Swift tool version error

    Swift tool version error

    Issue

    Hello, I have added this library by SPM and I have an error: Error

    Localize Environment

    • Localize version: I fetched master
    • Xcode version: 14.0.1
    • Swift version: 5

    Localize Config

    default

    Btw. Will you make new release? If I want to have latest code I need to get master branch, not version.

    opened by Bartson 0
  • made LocalizeStrings.swift and LocalizeJson.swift to allow customization

    made LocalizeStrings.swift and LocalizeJson.swift to allow customization

    PR Description

    ℹ Please provide a quick description for this pull request.

    Security Questions

    • [x] You tested your code?
    • [x] You keep the code coverage?
    • [x] You tested your code?
    • [ ] You documented it change if is necessary?

    made LocalizeStrings.swift and LocalizeJson.swift to allow customization so that we can customize by decorating around them.

    opened by minsoe 0
  • UITabbar text not updated until app restart

    UITabbar text not updated until app restart

    Issue

    ℹ Please provide a quick description for this issue. Tabbar string not refreshed until app restart

    Localize Environment

    • Localize version: 2.3.0
    • Xcode version: 12.5

    Localize Config

    /// Please put here your config
    UITabBarItem(title: "More_title".localize(), image: UIImage(named: "icon-more-menu"), tag: 4)
    

    What did you do?

    ℹ I try to change the language from setting page.

    What did you expect to happen?

    ℹ The tabbar text should change to respective language immediately.

    What happened instead?

    ℹ It didnot changed to latest updated language.

    opened by deependrag 1
  • Pluralization completely broken

    Pluralization completely broken

    This is not proper pluralization image

    It does not work for basically any other language than English, see https://unicode-org.github.io/cldr-staging/charts/37/supplemental/language_plural_rules.html

    For example "Czech" language has 4 categories: image "few" = 2-4, but your code always assigns 3 to "many"

    opened by vojtabohm 1
  • Podspec file does not validate when added resource_bundle for localization in 'BinaryFramework'

    Podspec file does not validate when added resource_bundle for localization in 'BinaryFramework'

    Issue

    ℹ Please provide a quick description for this issue.

    Xcode - 11.5 MacOS - 10.15.3 Swift - 5

    Localize Config

    Pod::Spec.new do |s|

    s.platform = :ios s.ios.deployment_target = '11.1' s.name = "**" s.summary = "* for customer." s.requires_arc = true

    s.version = "0.1.2"

    s.license = { :type => "MIT", :file => "LICENSE" }

    s.author = { "Swapnil G" => "**" }

    s.homepage = "***"

    s.source = { :git => "***", :tag => "#{s.version}" }

    s.ios.framework = "UIKit" s.framework = "WebKit" s.ios.framework = "HealthKit"

    s.dependency 'SQLite.swift','~> 0.12.2' s.dependency 'Alamofire', '~> 4.9.1' s.dependency 'Charts', '~> 3.4.0' s.dependency 'CryptoSwift', '~> 1.3.0' s.dependency 'NVActivityIndicatorView', '~> 4.8.0' s.dependency 'SwiftSoup', '~> 2.3.0' s.dependency 'SwiftyJSON', '~> 5.0.0' s.dependency 'DropDown', '~> 2.3.13' s.dependency 'HGCircularSlider', '~> 2.2.0' s.dependency 'RealmSwift', '~> 4.3.2'

    s.dependency 'HGCircularSlider', '~> 2.2.0' s.dependency 'DropDown', '~> 2.3.13'

    s.source_files = ".framework/Headers/*.h" s.public_header_files = ".framework/Headers/*.h" s.vendored_frameworks = "**.framework"

    s.resource_bundle = { "**" => ["Localize/.lproj/.strings"] }

    s.swift_version = "5.0"

    end

    What did you do?

    Added strings file for hindi and english language checked with normal framework (not binary framework), it works as expected but not with the binaryframework

    What did you expect to happen?

    Localization should work for binaryframework also.

    What happened instead?

    Validation failed with error - [iOS] file patterns: The resource_bundles pattern for Framework_Bundle did not match any file.

    opened by Swapnil1794 0
  • System button with default title/change in runtime not localized correctly

    System button with default title/change in runtime not localized correctly

    Issue

    System button with default title/change in runtime not localized correctly

    Localize Environment

    • Localize version: (2.1.0)
    • Xcode version: 10.1 (10B61)
    • Swift version: 4.0
    • Platform(s) running Localize: iOS
    • macOS version running Xcode: 10.14.2 (18C54)

    Localize Config

    Localize.update(fileName: "Localization")
    Localize.update(defaultLanguage: "en-US")
    Localize.update(language: "en-VN")
    

    What did you do?

    I had a button (from storyboard) with default title is "Start Reading". In the runtime, that button can be change to "Resume chap.1" for example. It work perfect until I hit that button, the title fade to "Start Reading" instead of "Resume chap.1". The title only change when click and hold the finger on it, after releasing, it fade back to correct title "Resume..." The button I use is system type

    Button type: Default system type Default title: "Start Reading" Runtime title: "Resume chap.1" Click & hold button: Fade to "Start Reading" Release button: Fade to "Resume chap.1"

    opened by purepure 2
Releases(2.3.0)
Owner
Andres Silva
Andres Silva
Localization/I18n: Incrementally update/translate your Strings files from .swift, .h, .m(m), .storyboard or .xib files.

Installation • Configuration • Usage • Build Script • Donation • Migration Guides • Issues • Contributing • License BartyCrouch BartyCrouch incrementa

Flinesoft 1.3k Jan 1, 2023
The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all String-based APIs!

SwiftGen SwiftGen is a tool to automatically generate Swift code for resources of your projects (like images, localised strings, etc), to make them ty

null 8.3k Jan 3, 2023
Swift friendly localization and i18n with in-app language switching

Localize-Swift Localize-Swift is a simple framework that improves i18n and localization in Swift iOS apps - providing cleaner syntax and in-app langua

Roy Marmelstein 2.9k Dec 29, 2022
Localize iOS apps in a smarter way using JSON files. Swift framework.

Swifternalization Swift library that helps in localizing apps in a different, better, simpler, more powerful way than system localization does. It use

Tomasz Szulc 575 Nov 3, 2022
Localize your views directly in Interface Builder with IBLocalizable

Localize your views easily in Interface Builder with IBLocalizable. With IBLocalizable, you can localize your views in Interface Builder easily. Simpl

Chris Jimenez 461 Dec 29, 2022
Simple solution to localize your iOS App.

Hodor is a simple solution to localize your iOS App quickly, allow you to change language of project in-app without quiting the app, Just like WeChat.

Aufree 545 Dec 24, 2022
Localizations is an OS X app that manages your Xcode project localization files (.strings)

Localizations 0.2 Localizations is an OS X app that manages your Xcode project localization files (.strings). It focuses on keeping .strings files in

Arnaud Thiercelin 129 Jul 19, 2022
Minification of localized strings

SmallStrings Reducing localized .strings file sizes by 80% How it works The library consists of two main components: A tool that converts the .strings

Emerge Tools 48 Jan 8, 2023
Localizable.strings files generator

Localizable.strings files generator When we want to internationalize our project always is a headache to maintain the Localizable.strings files. This

humdrum 30 Dec 18, 2022
Check Localizable.strings files of iOS Apps

Rubustrings Check the format and consistency of the Localizable.strings files of iOS Apps with multi-language support Rubustrings is also available fo

David Cordero 110 Nov 12, 2022
An application to convert strings to diffirent formats

Localized An application to convert strings to diffirent formats This app will help developers to convert strings from application in one platform to

null 16 Feb 12, 2021
Xcode plugin for quickly creating localized strings

Extractor Localizable Strings Extractor Localizable Strings is a open source plug-in for Xcode. It lets you extract localizable strings without openin

Vinícius Oliveira 220 Jun 29, 2022
Lists missing keys from .strings files.

strings-check A simple command line utility to check if translation strings are missing, or if extra translations are present in a set of .strings fil

Dave Clayton-Wagner 3 Nov 22, 2022
A micro framework for integrating with the Google Translate api

GoogleTranslateSwift About This is a micro library for integrating with the Google Cloud Translation API. I currently only use it for personal project

Daniel Saidi 7 Dec 19, 2022
Will Powell 1.2k Dec 29, 2022
NoOptionalInterpolation gets rid of "Optional(...)" and "nil" in Swift's string interpolation

NoOptionalInterpolation gets rid of "Optional(...)" and "nil" in Swift's string interpolation

Thanh Pham 48 Jun 5, 2022
Localization of the application with ability to change language "on the fly" and support for plural form in any language.

L10n-swift is a simple framework that improves localization in swift app, providing cleaner syntax and in-app language switching. Overview ?? Features

Adrian Bobrowski 287 Dec 24, 2022
transai is a localization tool on Android and iOS.

transai transai is a command line tool to help you do Android and iOS translation management. You can extract string files to csv format, or generate

Jintin 56 Nov 12, 2022
A tool for finding missing and unused NSLocalizedStrings

nslocalizer This is a command line tool that is used for discovering missing and unused localization strings in Xcode projects. Contributing and Code

Samantha Demi 155 Sep 17, 2022