package Ġcom . github . ro oney and shadow s . light bul b . commons . utils Ċ Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . os . Build Ċ import Ġjava . util .* Ċ Ċ /* Ċ In Ġorder Ġto Ġwork Ġwithin ĠApp Ġbundle Ġadd Ġin Ġgradle Ġon Ġandroid Ġlevel Ċ bundle Ġ{ ĊĠĠĠĠĠĠĠ Ġlanguage Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Specifies Ġthat Ġthe Ġapp Ġbundle Ġshould Ġnot Ġsupport ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// configuration ĠA PK s Ġfor Ġlanguage Ġresources . ĠThese ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// resources Ġare Ġinstead Ġpackaged Ġwith Ġeach Ġbase Ġand ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// dynamic Ġfeature ĠA PK . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Split Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ġ*/ Ċ class ĠLocale Helper Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSELECT ED _ LANGUAGE _ KEY Ġ= Ġ" Locale . Helper . Selected . Language " ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġwrap Context ( context : ĠContext ): ĠContext Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Language Ġ= Ġget Language ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset Locale ( context , Ġcurrent Language ); ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġon Attach ( context : ĠContext ): ĠContext Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlang Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Utils . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT ED _ LANGUAGE _ KEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault (). language ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset Locale ( context , Ġlang ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġon Attach ( context : ĠContext , Ġdefault Language : ĠString ): ĠContext Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlang Ġ= ĠPreference Utils . getString ( context , ĠSELECT ED _ LANGUAGE _ KEY , Ġdefault Language ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset Locale ( context , Ġlang ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġget Language ( context : ĠContext ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPreference Utils . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT ED _ LANGUAGE _ KEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault (). language ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġset Locale To System Default ( context : ĠContext ): ĠContext Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsystem Def Language Ġ= ĠResources . getSystem (). configuration . locales [ 0 ]. language ; ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Utils . save String ( context , ĠSELECT ED _ LANGUAGE _ KEY , Ġsystem Def Language ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Resources ( context , Ġsystem Def Language ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġupdate Resources Legacy ( context , Ġsystem Def Language ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġset Locale ( context : ĠContext , Ġlanguage : ĠString ): ĠContext Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Utils . save String ( context , ĠSELECT ED _ LANGUAGE _ KEY , Ġlanguage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Resources ( context , Ġlanguage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġupdate Resources Legacy ( context , Ġlanguage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Target Api ( Build . VERSION _ CODES . N ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġupdate Resources ( context : ĠContext , Ġlanguage : ĠString ): ĠContext Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocale Ġ= ĠLocale ( language ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . setDefault ( locale ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfiguration Ġ= Ġcontext . resources . configuration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . set Locale ( locale ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . setLayout Direction ( locale ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontext . create Configuration Context ( configuration ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġupdate Resources Legacy ( context : ĠContext , Ġlanguage : ĠString ): ĠContext Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocale Ġ= ĠLocale ( language ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . setDefault ( locale ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresources Ġ= Ġcontext . resources ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfiguration Ġ= Ġresources . configuration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . locale Ġ= Ġlocale ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . J EL LY _ BE AN _ MR 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . setLayout Direction ( locale ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . update Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . display Metrics ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontext ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }