How qasimcyrus/multilanguage works
MultiLanguage is an Android localization library, demonstrated by an app that lets users select a language or follow the system setting. The runtime flow initializes system-locale tracking, applies the saved locale when contexts attach, persists explicit changes, and builds locale-specific resources and strings. The library also exposes a replaceable language-store interface and handles Android-version-specific configuration behavior. The README documents these APIs; the graph uses sampled source for call relationships and omits implementation details of unsampled Android resources and manifests.
Main entry points: LanguageHelper.kt LanguageHelper · MainActivity.kt Language chooser · LanguageUtils.kt LanguageUtils · SystemLanguage.kt SystemLanguage
Components 10
Demo app
- Application
app/src/main/java/com/cyrus/languagedemo/App.kt - Language chooser
app/src/main/java/com/cyrus/languagedemo/MainActivity.kt - Localized strings
app/src/main/res/values/strings.xml
Language API
- LanguageHelper
language/src/main/java/com/cyrus/language/LanguageHelper.kt - LanguageStore
language/src/main/java/com/cyrus/language/LanguageStore.kt
Locale runtime
- LanguageUtils
language/src/main/java/com/cyrus/language/LanguageUtils.kt - SystemLanguage
language/src/main/java/com/cyrus/language/SystemLanguage.kt
Locale state
- Preferences store
language/src/main/java/com/cyrus/language/LanguageStoreImpl.kt
Other components
- User
- Android platform
Connections 10
- User → Language chooser: chooses language
- Application → LanguageHelper: initializes; attaches
- Language chooser → LanguageHelper: reads; updates
- Language chooser → Localized strings: displays labels
- LanguageHelper → LanguageStore: reads; saves
- LanguageHelper → LanguageUtils: updates configuration; gets resources
- LanguageHelper → SystemLanguage: registers; reads locale
- Preferences store → Android platform: uses preferences
- SystemLanguage → Android platform: registers callback
- LanguageUtils → Android platform: creates configured contexts