Over-the-Air (OTA) updates offer a flexible way to deliver translation updates to mobile and web applications without requiring a new release on the App Store, Google Play, or other deployment platforms. This approach supports continuous localization and agile development workflows by reducing delays and manual processes.
The OTA feature in Phrase Strings integrates with iOS, Android, React Native, Flutter, i18next, and Rails platforms. Updates for text labels are instantly pushed to mobile apps.
A new release must be created in order for the updated settings to be applied. All content included in a release must be available in Phrase Strings, which streams translations directly to the application. If the content is not present, translations will not be delivered.
For mobile applications, OTA requires integrating the relevant Software Development Kit (SDK) into the application to retrieve translations from Phrase Strings at runtime.
When starting an application implementing the iOS, Android, React Native or Flutter SDK for the first time on a device, a unique and random device identifier is generated. This identifier tracks active users over a given period of time. It is not used for any other form or means of tracking and does not contain any user or device information.
The number of OTA requests and the amount of Monthly Active Users (MAU) are limited, depending on selected pricing plan.
MAU is the number of unique devices from which translations are requested. Each device is assigned a random ID. MAU is calculated based on the number of unique IDs assigned in the last 30 days. Every interaction with Phrase servers is considered a request.
Data Sent with OTA Requests
The SDK communicates with the OTA service in order to check for updates and includes the following details with each request:
-
Device identifier (e.g. "F3AFCB10-80A2-84CB-94C0-27F5EF58876D". Unique for this app and therefore does not allow tracking a specific device.)
-
App version (e.g. "1.2.0")
-
Last update of the translation file (e.g. "1542187679")
-
SDK version (e.g. "1.0.0")
-
Locale (e.g. "de-DE")
-
File format (e.g. "strings")
-
Client (e.g. "ios")
-
Distribution ID (ID of the distribution)
-
Environment secret (to distinguish between development from production)
Domains used by the SDKs:
EU datacenter
-
ota.eu.phrase.com
-
cdn.eu.phrase.com
-
ota.phraseapp.com
-
cdn.phraseapp.com
US datacenter
-
ota.us.phrase.com
-
cdn.us.phrase.com
Phrase OTA SDKs are designed to ensure apps remain functional even if the OTA API is unavailable. In such cases, the SDK falls back to the last successfully fetched translations stored on the device, or to the bundled translations included in the app package. This prevents errors or missing strings for end-users. To guarantee reliable fallback, bundled translations should be kept up to date with every app release.
Distributions are a configured setup that defines how and where OTA updates are delivered for a specific platform or project.
Target platforms are defined within the distribution:
-
iOS
-
Android
-
Flutter
-
i18next
-
Rails
Multiple distributions are possible, but ideally there is one distribution per project. If using a distribution for iOS and Android, placeholders for the two formats are automatically converted.
Fallbacks
If language fallbacks are set in the language settings of the project the distribution is connected to, strings from the selected language will be displayed if the requested language exists, but the key is not translated.
If a country-specific language (e.g. en-GB) is used, but is not part of the release, the system can fall back on a standard version (e.g. en) of that language if it exists in the project. If the language requested is not found at all, the default locale of the project can be served instead.
Fallbacks will not work on linked keys.
Create a distribution
To create a distribution, follow these steps:
-
From the box on the page, click Configure or the number of configurations if some already exist.
The page opens and displays existing configurations.
-
Click New distribution. The windows opens.
-
In the General tab, provide a , which the distribution is associated with, required , and required .
-
For Android distributions, click on the Android tab to select the format option that encloses any translation including HTML tags in CDATA, if required.
-
After selecting the project to associate with the distribution, the Scheduling tab becomes available. If required, use this tab to set up OTA scheduled releases in the distribution.
-
-
In the Fallback languages tab, select distribution specific fallback settings as required. Fallback options are prioritized as displayed in the list.
-
Optionally, click on the Translations tab to select the option to use the latest reviewed version of translations. Enable this option only when working with the advanced review workflow.
-
Click Save.
Distribution details are displayed with IDs required by the SDKs. Details can be displayed again by clicking the distribution from the page.
To update translations, create a new release within the distribution. The current state of the project is exported and made available to connected clients.
To create a release, follow these steps:
-
From the Over the air page, click Add release beside the required distribution.
The window opens.
-
Provide a , required , , and .
If necessary, enter tags to include only keys with specific tags in the release.
-
Click Save.
The release is added to the list on the bottom of the distribution details page.
To set up recurring schedules for releasing the distribution, follow these steps:
-
From the page, click on the cog wheel
icon beside the required distribution.
The window is displayed.
-
Select the Schedule release tab and click .
Release scheduling options are displayed.
Note
Scheduling options are also available upon creation of a new distribution.
-
From the dropdown, choose the release frequency by selecting one of the available options:
-
-
Select the desired weekdays for the scheduled releases.
-
-
Provide a time and relevant .
-
If necessary, select , and for the scheduled releases.
-
The field is displayed only if branching is enabled in the project. Selecting a branch updates the list of locales and languages.
-
-
Optionally, specify the application versions in the and fields.
Leave blank to apply the schedule release to all versions of the app.
-
Click Save.
The distribution is updated with release scheduling information.
Disabling the schedule stops the automatic release of the distribution, but the configured settings are saved.
Integrating the appropriate mobile SDK or Web library allows updating of translations with a single click, but also provides metrics to measure usage. The mobile SDK and Web library reports give valuable insight into active app users and their app languages. This set of reports is available for each distribution, and the data is refreshed twice a day.
Reports are provided for number of active users, overall requests, requests per language, requests per platform and for device languages not provided.
Reports for each distribution are accessed via the icon on the page.
Technical documentation for integrating the OTA SDKs is available in the README file of each project repository: