Overview
Stringboot makes multi-language support effortless with automatic language detection, smooth language switching, and AI-powered translations from the dashboard. Support global users without complex localization libraries or string file management.Key Benefits
Auto-Detection
Automatically detects and uses device locale
Instant Switching
Change language without app restart
AI Translations
Generate translations from dashboard with one click
Offline Support
All languages cached locally for offline use
Quick Start
1. Add Languages in Dashboard
Go to Stringboot Dashboard → Languages → Add Language:- Select application
- Choose language (e.g., Spanish -
es) - Enable AI Translation (optional)
- Click Save
2. Use Device Locale
The SDK automatically uses the device’s language:App.swift
3. Display Content
Strings automatically load in the user’s language:Language Detection
Auto-Detect Device Locale
- Uses iOS
Locale.current.language.languageCode?.identifier - Returns ISO 639-1 language code (e.g., “en”, “es”, “fr”)
- Falls back to “en” if device locale not supported
Check Supported Languages
Fallback to Supported Language
Language Switching
Complete Language Switch Flow (SwiftUI)
LanguageSwitcher.swift
- Set locale:
setLocale(newLang) - Preload cache: Avoids UI flashing
- Refresh from network: Get latest translations (non-blocking)
- Save preference: Remember user’s choice
Complete Language Switch Flow (UIKit)
ViewController.swift
Language Picker UI
SwiftUI Language Picker
LanguagePickerView.swift
UIKit Language Picker
Persisting Language Preference
Save on Language Change
Load on App Start
Advanced Patterns
Language-Specific Formatting
- English (US): “Price: $29.99”
- Spanish (ES): “Precio: 29,99 €”
- French (FR): “Prix : 29,99 €“
RTL Language Support
Pluralization Rules
Dashboard Strings:Best Practices
Always Persist Language Preference
Always Persist Language Preference
Preload Before Switching
Preload Before Switching
Recommended:Preloading eliminates visual glitches during language switching.
Handle Missing Translations Gracefully
Handle Missing Translations Gracefully
Sync After Language Switch
Sync After Language Switch
Common Use Cases
App-Wide Language Switcher
LanguageManager.swift
Settings Screen with Language Picker
SettingsView.swift
Next Steps
Dynamic Strings
Learn about string retrieval and updates
A/B Testing
Optimize messaging with experiments
Best Practices
Production patterns and optimization
API Reference
Language Methods
| Method | Description | Returns |
|---|---|---|
deviceLocale() | Get device’s current language code | String |
setLocale(_ lang) | Set active language for string retrieval | Void |
getAvailableLanguages() | Get cached language codes | [String] |
getAvailableLanguagesFromServer() | Get languages from server | async [ActiveLanguage] |
preloadLanguage(lang, maxStrings?) | Preload language into cache | async Void |
refreshFromNetwork(lang:) | Sync language from server | async Bool |
Troubleshooting
Language doesn't switch
Language doesn't switch
Check:
- Did you call
setLocale(newLang)? - Are SBText views updating automatically?
- Did you refresh manual labels?
UI shows keys briefly when switching
UI shows keys briefly when switching
Cause: Cache not preloaded before UI update.Solution:
Translations not showing for a language
Translations not showing for a language
Check:Sync manually:
- Language added in Stringboot Dashboard?
- Strings translated for that language?
- Network sync successful?