Runway Documentation
  • About Runway
  • 🚀Getting started
    • Adding apps
    • Setting up your integrations
      • Branching strategies
      • Builds and branches
      • Pattern strings / tokens
    • Preparing your first release
    • Setting up your team
  • 🎛️Using Runway
    • Navigating Runway
    • Build Distro
      • Quickstart
      • Uploading builds for distribution
      • Build Distro buckets
      • Sharing builds
      • Installing builds
      • Signing and provisioning cheat sheet
    • App overview
    • Releases
      • Release overview
      • Feature flags
      • Kickoff
      • Feature readiness
      • Translations
      • Release candidate
      • Regression testing
      • Beta testing
      • Screenshots
      • Metadata
      • Approvals
      • App submission
      • App store review
      • Release
    • Workflows
    • Release schedule
    • Rollout
    • Hotfixes
    • Rollbacks
      • Creating rollbacks
    • Checklists
    • Build matching
    • App settings
      • General settings
      • Team settings
      • Release pilot rotation
      • Integrations settings
      • Profiles and devices
      • Signing keys
      • Health metrics settings
      • Automations settings
      • Notifications settings
      • Schedule settings
      • Beta testing settings
      • Metadata settings
      • Release defaults
      • Checklists settings
      • Custom strings settings
    • Organization overview
    • Organization settings
      • Team
      • SSO/SAML
    • User settings
    • Over-the-air (OTA) releases
  • ⚙️Integrations
    • Integrations overview
    • Version control
      • Azure Repos
      • Bitbucket
      • GitHub
      • GitLab
    • Project management
      • Asana
      • Azure Boards
      • GitHub Issues
      • Jira
      • Linear
      • Pivotal Tracker
      • Monday.com
      • Shortcut
    • CI/CD
      • App Center Build
      • Azure Pipelines
      • Bitbucket Pipelines
      • Bitrise
      • Buildkite
      • CircleCI
      • Codemagic
      • GitHub Actions
      • GitLab CI
      • Jenkins
      • TravisCI
      • Xcode Cloud
    • Regression testing
      • TestRail
      • Xray
    • Beta testing
      • Google Play testing tracks
      • TestFlight
      • App Center
      • Firebase App Distribution
    • App stores
      • App Store Connect
      • Google Play Console
      • Amazon Appstore
      • Huawei AppGallery
      • Samsung Galaxy Store
    • Notifications
      • Microsoft Teams
      • Slack
    • Stability monitoring
      • BugSnag
      • Datadog
      • Embrace
      • Firebase
      • New Relic
      • Sentry
      • Dynatrace
    • Observability & analytics
      • Amplitude
      • Datadog
      • Google Analytics
      • Mixpanel
      • New Relic
      • Android Vitals
      • Custom observability & analytics
    • Feature flagging
      • Optimizely
      • LaunchDarkly
    • Scheduling
      • Opsgenie
      • PagerDuty
    • Translations
      • Crowdin
      • Lokalise
    • Calendar
      • Google Calendar
      • Google Calendar (OAuth)
  • ⚡Automations
    • Automations overview
    • Types of automations
  • đź””Notifications
    • Notifications overview
    • Types of notifications
  • 🪝Webhooks
    • Outgoing webhooks
  • 📡REST API
    • Overview
    • Reference Docs
    • Markdown Badge API
    • App configuration files
  • 🛠️Quickstart CI/CD
    • Quickstart CI/CD overview
    • Getting started
  • Support
    • Contact us
Powered by GitBook
On this page
  • Localizable string items
  • Pending / Done sections
  • Syncing localizable strings
  • Approving the Translations step

Was this helpful?

  1. Using Runway
  2. Releases

Translations

PreviousFeature readinessNextRelease candidate

Last updated 1 month ago

Was this helpful?

The Translations step shows you the status of all of your app’s localizable strings. By comparing the localizable strings that are present in your code with what’s been uploaded and translated in your translations provider, Runway can intelligently compute and surface the status of each string and its associated translations, showing you at a glance whether your code’s translations are in sync with your provider, or whether they need to be updated (either on the provider or in the code). Keeping your localizable strings synced and ensuring all necessary translations have been merged into the release branch can help avoid issues involving missing translations in your release.

The Translations release step

Localizable string items

In the Translations step view, Runway pulls together your app’s localizable strings by merging together localizable string keys found in your translations provider with those found in your codebase on the selected branch. Each localizable string row shows:

  • The source key’s value

  • The file the source key is in

  • The source key’s associated localized strings for each supported locale

  • The computed status of the source key

  • Source keys that are new or have been updated since the last release (highlighted with a star icon)

Localizable string statuses

Each localizable string will have a status that reflects the state of the string relative to the code on the target branch and the string on the translations provider. There are a few states that a localizable string can be in:

  • Synced — The source key’s value matches the value in the translations provider, and the translations in all languages match what’s found in the code on the target branch

  • Upload needed — The source key’s value in the code has diverged from the source key’s value in the translations provider. This indicates that a change has been made in the code that requires the updated localizable string file to be uploaded for translation.

  • Translations pending — The source key’s value in the code matches the value in the translations provider, but one or more languages have not been translated.

  • Export needed — The source key’s value in the code matches the value in the translations provider, and the key has been translated to all languages. The key and its translations are ready to be exported back into the codebase.

  • Branch update needed — The source key’s value in the code matches the value in the provider, and the key has been translated to all languages and exported to the working branch, but the updated translations have not been pulled into the release branch.

Runway supports source key and value parsing for a handful of common file types for each platform. The source values for any localizable string keys found outside of these supported file types will not be parsed.

iOS:

  • .strings

  • .stringsdict

  • .xcstrings

  • .xliff

Android:

  • .xml

  • .xliff

Pending / Done sections

Localizable string items are divided into two tables:

  • Pending — Localizable string items are considered Pending if the source key’s value in the selected branch’s code does not match the value in your app’s translations provider, or if any of the source key’s translations in the selected branch’s code do not match the translations in the translations provider. This indicates that either an upload to the provider for translation, or an export from the provider to the code is needed to get the key in sync.

  • Done — Localizable string items are considered Done when the source key’s value and all its translations match between the selected branch’s code and the app’s translations provider. This indicates that the localizable string is fully synced.

Use the Show new and updated only filter button to only see localizable strings that were newly added or updated in the current release.

Syncing localizable strings

When one or more of your localizable strings are out of sync with your translations provider, actions to resolve the state of your localizable strings are available right from the Translations step:

  • “Upload localizable strings for translation” — Any localization files that have at least one localizable string with an Upload needed status will be uploaded to your translations provider for re-translation.

  • “Export strings to release branch” — Runway will open a PR against your target branch containing updated localizable string files for any locales containing strings that have been updated in the translations provider.

  • “Sync” — Use this action to let Runway intelligently perform any necessary upload or export (or both) as needed, based on the current state of your localizable strings.

Approving the Translations step

Your team may choose to go ahead with the release even though not all localizable strings are fully translated and synced. Users with the correct permissions can use the “Approve translations” button to approve the Translations step, regardless of the sync status of localizable strings.

Enable the automation to let Runway automatically pull over up-to-date translations from the working branch to the release branch as needed.

When performing a translations export, your team may choose to export to the working branch before pulling over updated strings to the release branch. If you have the automation enabled, Runway can automatically do this for you by pulling over exported translations from the working branch to the release branch as needed.

If you have the automation enabled, Runway will automatically keep your translations synced on the release branch by uploading and exporting as needed.

🎛️
Sync localizable string translations
Update translations on the release branch from the working branch
Update translations on the release branch from the working branch