Skip to main content

iOS - Access Localization

note

Modules that inherit from Q2ModuleBase or directly conform to the Module interface receive moduleDataSource, which exposes localization access through localization.

Quick Start​

Follow these three steps in any module:

  1. Access moduleDataSource.
  2. Request a localized value using localization.
  3. Apply the returned value to your UI text.
Quick Start Example
let title = moduleDataSource?.localization?.localizedString("_t.mob.rdc.title_header")
titleLabel.text = title

Implementation​

Q2ModuleBase already provides moduleDataSource, so you can use localized strings directly.

Q2ModuleBase Example
import Q2ModuleInterfaces
import UIKit

final class PartnerUIModule: Q2ModuleBase {
private let titleLabel = UILabel()

override func didOpen(_ identifier: String) {
titleLabel.text = moduleDataSource?.localization?.localizedString("_t.mob.rdc.title_header")
}
}

SwiftUI Usage​

If your module UI is built with SwiftUI, request the localized value the same way.

SwiftUI Example
import Q2ModuleInterfaces
import SwiftUI

struct PartnerView: View {
let moduleDataSource: ModuleDataSource?

var body: some View {
Text(moduleDataSource?.localization?.localizedString("_t.mob.rdc.title_header") ?? "")
}
}

Guidance​

  • Use localization keys (for example _t.mob...) instead of hardcoded display text.
  • Keep keys exact; avoid extra quotes or whitespace in the key string.
  • Prefer localizedString(_ key: String) for UI text because it returns the key itself if a value is not found.

Key Resolution​

When your module calls:

let value = moduleDataSource?.localization?.localizedString("_t.mob.rdc.title_header")

localized values resolve in this order:

  1. Active app language table.
  2. Backup en-US table (from i18nBackup).
  3. If still unresolved:
    • localizedString(_ key: String) returns the key.
    • localizedString(forKey:) returns nil.

Key Source​

Use these baseline files to discover keys:

  • Q2DevApp/conf/i18nBackup.json
  • Q2DevApp/conf/i18n.json
tip

Localization data can be refreshed by environment/theme setup at runtime, so values may differ from the baseline files.