Entertainment at it's peak. The news is by your side.

How to localize an iOS Apps with Over The Air updates


In this article, we display you tips about how to localize an iOS app and invent it on hand in just a few languages by the spend of the LingoHub iOS SDK. We’re going to manual you by the direction of of along side the SDK and making your Cell app willing to receive textual suppose/translation updates without releasing a brand fresh version (Over The Air updates).

First, there might be restful the quiz of why while you occur to are making stronger just a few languages within the first situation? If you occur to can have a particular person-going by app, chance is truly high that a huge share of your user substandard is now now not English natives. Offering these customers with an optimal journey requires your app to be localized and translated. A goal that we enable you reaching with our iOS LingoHub SDK.


For the apt integration of the LingoHub SDK, the very first thing you are going to need is an reward Xcode project with localization make stronger. To manual you by the next steps, we can produce a demo app called Funtastic that shall be localized into English and German. Though the tutorial is for iOS, the LingoHub SDK will additionally work the same attain with macOS, tvOS & watchOS.

For our demo project Funtastic, we created an app project containing English & German languages.

XCode Create

Creating the Funtastic project in XCode

We created a straightforward splash display for the app, along side some labels and buttons.

For the moment, all localization is handled statically within the app by along side the required strings into the corresponding Localizable.strings files.

Locazlizable.strings file

Locazlizable.strings file containg the texts

The UI parts are connected by the utilization of IBOutlets, so the localization can without problems be managed by the utilization of code in preference to the spend of Storyboard localization.

IBOutlet file

IBOutlet to glue UI parts

For our demo, the app is now finished and dealing as anticipated. Sometimes, you would perhaps well add some extra ingredients, but for the moment, this is k for us. We would now submit the app to the App Retailer and commence it once it passes the app analysis.

If you occur to want to commerce some verbiage in a released app, the direction of gets in actual fact painful. You prefer to produce a brand fresh version, add it again to the App Retailer, and have it reviewed. There need to be something better for this.

Properly, fortunately for us, there might be something better. 🙂

Let’s mix the LingoHub SDK into our project. The SDK became designed to be as straightforward to spend and mix for builders as that you would perhaps well perhaps probably impart, so that you are going to most effective want just a few lines of code, and you are fair to cross.

Integrating the SDK

The LingoHub SDK helps integration with your total current dependency managers, along side CocoaPods, Carthage, Swift Equipment Manager, and manual integration. For aid the spend of our integrations, please consult with the readme of our repository. (LingoHub iOS SDK).

In this tutorial, we’re the spend of the manual integration and add the LingoHub.xcframework as a dependency by dragging it to Frameworks, Libraries, and Embedded Narrate piece of the Aim.


Next we initiate configuring our SDK within the AppDelegate. Let’s import the LingoHub module and add the following snippet:

LingoHubSDK.shared.configure(withApiKey: Constants.LingoHub.authToken, projectId: Constants.LingoHub.projectId)


Connecting to LingoHub

Sooner than you initiate with this piece, invent sure that you would perhaps have either an iOS or Android project on LingoHub. The attain you would perhaps well perhaps probably produce one, is described in detail in our aid. To glue the SDK to LingoHub, two steps are well-known:

  1. Creating a package that contains the resource files
  2. Creating an API on LingoHub for the project

Creating a package

Creating a package is truly straightforward and would perhaps well even be accomplished by LingoHub’s intuitive UI. By developing a package you are going to need to enter the following recordsdata:

  • Platform: Either iOS or Android. This option tells the design what extra or less files (.string or .xml) the package will have.
    Elaborate, even when LingoHub’s initiatives are related with most effective one platform, it’s that you would perhaps well perhaps probably impart to produce an Android package in an iOS project and vice versa. So while that you would perhaps have one project for every and each, Android and iOS, you are going to need to produce two programs for OTA updates.
  • Stage: Here’s now now not compulsory to spend. Usually it lets you distinguish between two environments, production and pre-production, so that you would perhaps well perhaps probably take a look at the fresh texts earlier than you commence it to production.
  • Version from and to: Since you usually don’t have one version out within the wild, it’s to hand to specify for which versions a package is guilty. This lets you preserve a watch on a host of and incompatible versions. The from version is inclusive and the to version is irregular, as it’s in most programming languages.

A package consists of one or extra releases. You might perhaps well perhaps probably impart a commence like a version of a package. Simplest one commence shall be active. Compare the following graphic on how the SDK determines which package-commence combo to spend. Elaborate: iOS V4.0 and iOS V3.0 gained’t receive any updates for the explanation that package version doesn’t match. The exact version of your app shall be feeble in opposition to the package version.

Packages and releases explained

For this tutorial, we can spend

  • Platform: iOS
  • Stage: Production
  • Version from: 1
  • Version to: 1.3

LingoHub will automatically produce a commence for a brand fresh package.

Create package

Produce package retaining the translations from LingoHub

Creating an API Key

Now you are going to need so that you can add an API Key and the Mission Identity to your project, so that the SDK can receive entry to the LingoHub API. Creating the API is truly straightforward, merely click on the Produce API Key beneath programs. Then a dialog reveals up exhibiting the fresh API Key + the Mission Identity.
Major, the API secret’s now now not displayed again, you would perhaps well perhaps probably most effective generate a brand fresh one, so please invent sure that you retain your API Key + Mission Identity someplace stable!

Create LingoHub API Key

API Key and Mission Identity for connecting the SDK

Next, add the code for the SDK to examine for an update package of your translations

func applicationDidBecomeActive(_ application: UIApplication) {
    LingoHubSDK.shared.update { consequence in
        swap consequence {
        case .success(let worth):
            print("Narrate up to this level: \(worth)")
        case .failure(let error):


The closing thing now we wish to invent is to subscribe to the LingoHubDidUpdateLocalization notification, which is willing to insist us when fresh translations were found out. As soon as this notification is got, fair update the UI and you are going to also gaze your imprint fresh translations. We focus on applicationDidBecomeActive is a fair situation to examine for updates, but you would perhaps well perhaps probably add this code wherever you’d like to, as lengthy as it’s flee.


Hearken to textual suppose adjustments
NotificationCenter.default.addObserver(forName: .LingoHubDidUpdateLocalization, object: nil, queue: nil) { [weak self] _ in

Over The Air updates

Now the entirety is in situation and the SDK listens to adjustments on LingoHub. So your next step is to expose the SDK once we prefer the texts up to this level. We’re going to invent this by developing a brand fresh commence for the package that we created.

Major: As acknowledged above a package can have just a few releases, but most effective one shall be active. The active commence shall be introduced to the SDK. This attain that you shall be succesful to version your releases and if well-known mercurial swap reduction. The SDK then will ping the LingoHub API and would perhaps well even be told that fresh texts are on hand. So this is able to well download and update the texts. This most effective occurs once, the texts are then saved on your app.

Creating a new release

Releasing fresh texts by the utilization of LingoHub

And like magic all your customers receive the fresh texts without the want for a brand fresh commence:

Over The Air Updates


We hope we obtained you as furious as we’re about this fresh feature. Compare out the code of this tutorial and the SDK. If you occur to can have any suggestions or questions, don’t hesitate to contact us. We fortunately enable you region up OTA updates on your well-behaved app.

Btw. while you cessation up now now not a LingoHub user yet, initiate the free trial and contact us!


Read More

Leave A Reply

Your email address will not be published.