package Ġir . ch ista . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . os . Build Ċ import Ġandroid . preference . Preference Manager Ċ import Ġir . ch ista . jobs . App Ċ import Ġjava . util .* ĊĊ Ċ object ĠLocale Manager Ġ{ ĊĠ Ġprivate Ġconst Ġval ĠDEFAULT Ġ= Ġ" en - US " Ġ// Ġ" fa - IR " Ġ// ĊĠ Ġprivate Ġconst Ġval ĠP REF _ LOCAL E Ġ= Ġ" app . locale " ĊĠ Ġprivate Ġvar Ġdefault Ġ= ĠDEFAULT ĊĊĠ Ġfun ĠApp . init Local Manager ( default : ĠString Ġ= ĠDEFAULT ) Ġ{ ĊĠĠĠ Ġthis @ Locale Manager . default Ġ= Ġdefault ĊĠ Ġ} ĊĊĠ Ġvar ĠContext . saved Locale ĊĠĠĠ Ġget () Ġ= Ġtry Ġ{ ĊĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( this ). getString ( PRE F _ LOCAL E , Ġdefault ) Ġ?: Ġdefault ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ Ġdefault ĊĠĠĠ Ġ} ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( this ). edit (). putString ( PRE F _ LOCAL E , Ġvalue ). apply () ĊĠĠĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġfrom String ( locale : ĠString ): ĠLocale Ġ{ ĊĠĠĠ Ġval Ġparts Ġ= Ġlocale . split ("- ", Ġ",", Ġ" Ġ", Ġ"_ ", Ġ".", Ġ" :", Ġ"+ ") ĊĠĠĠ Ġreturn ĠLocale ( parts [ 0 ], Ġparts [ 1 ]) ĊĠ Ġ} ĊĊĠ Ġfun ĠContext . update Locale () Ġ= ĊĠĠĠ Ġset Locale ( fromString ( saved Locale )) ĊĊĠ Ġfun ĠContext . update Locale ( locale : ĠLocale ): ĠContext Ġ{ ĊĠĠĠ Ġsaved Locale Ġ= Ġlocale . toString () ĊĠĠĠ Ġreturn Ġset Locale ( locale ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠContext . set Locale ( locale : ĠLocale ): ĠContext Ġ{ ĊĠĠĠ ĠLocale . setDefault ( locale ) ĊĠĠĠ Ġval Ġres Ġ= Ġresources ĊĠĠĠ Ġval Ġconfig Ġ= ĠConfiguration ( res . configuration ) ĊĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 1 7 ) Ġ{ ĊĠĠĠĠĠ Ġconfig . set Locale ( locale ) ĊĠĠĠĠĠ Ġcreate Configuration Context ( config ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġconfig . locale Ġ= Ġlocale ĊĠĠĠĠĠ Ġres . update Configuration ( config , Ġres . display Metrics ) ĊĠĠĠĠĠ Ġthis ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ