/** Ċ Copyright Ġ( C ) Ġ 2 0 2 0 ĠLink ĠDevelopment Ċ Ċ Licensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ you Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ You Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ċ http :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ċ Unless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ distributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ WITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ See Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ limitations Ġunder Ġthe ĠLicense . Ċ Ġ**/ Ċ package Ġcom . link dev . localization . data . shared _ pref ren ces Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġorg . json . JSONObject Ċ import Ġjava . util .* Ċ Ċ internal Ġclass ĠLocalization Prefs DataSource ( context : ĠContext ) Ġ: ĠLocalization IP refs DataSource Ġ{ ĊĠĠĠ Ġprivate Ġval Ġprefs : ĠSharedPreferences ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġprefs Ġ= Ġcontext . get SharedPreferences ( LOCAL IZATION _ APP _ PREFER ENCES , ĠContext . MODE _ PRIVATE ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLOCAL IZATION _ LANGUAGE _ KEY Ġ= Ġ" LOCAL IZATION _ LANGUAGE _ KEY " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLOCAL IZATION _ APP _ PREFER ENCES Ġ= Ġ" LOCAL IZATION _ APP _ PREFER ENCES " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLOCAL IZATION _ LANGUAGE _ JSON _ KEY Ġ= Ġ" LOCAL IZATION _ LANGUAGE _ JSON _ KEY " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLOCAL IZATION _ COUNTRY _ JSON _ KEY Ġ= Ġ" LOCAL IZATION _ COUNTRY _ JSON _ KEY " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWill Ġreturn Ġthe Ġsaved Ġlocale Ġfrom Ġprefs ĊĠĠĠĠ Ġ* ĠAnd Ġif Ġit Ġis Ġnull Ġor Ġblank Ġwill Ġreturn Ġdefault Ġlocale ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Locale (): ĠLocale Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(! prefs . getString ( LOCAL IZATION _ LANGUAGE _ KEY , Ġnull ). isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJSONObject ( prefs . getString ( LOCAL IZATION _ LANGUAGE _ KEY , Ġnull ) !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlanguage Ġ= Ġjson . getString ( LOCAL IZATION _ LANGUAGE _ JSON _ KEY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcountry Ġ= Ġjson . getString ( LOCAL IZATION _ COUNTRY _ JSON _ KEY ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocale ( language , Ġcountry ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWill Ġreturn Ġthe Ġsaved Ġlanguage ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Language (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Locale (). language ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCall Ġto Ġsave Ġlanguage Ġand Ġcountry Ġin Ġprefs ĊĠĠĠĠ Ġ* Ġ@ param Ġlocale Ġthe Ġnew Ġlocale Ġwill Ġbe Ġsaved ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġset Locale ( locale : ĠLocale ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJSONObject (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( LOCAL IZATION _ LANGUAGE _ JSON _ KEY , Ġlocale . language ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( LOCAL IZATION _ COUNTRY _ JSON _ KEY , Ġlocale . country ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprefs . edit (). putString ( LOCAL IZATION _ LANGUAGE _ KEY , Ġjson . toString ()). apply () ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ