package Ġtasks Ċ Ċ import Ġcom . android . dd m lib . I Device Ċ import Ġorg . gradle . api . Gradle Exception Ċ import Ġtasks . internal . Language Task Ċ Ċ open Ġclass ĠSet Language Task Ġ: ĠLanguage Task () Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" check Ġif Ġspecific Ġlocale Ġis Ġset . Ġif Ġnot Ġtries Ġto Ġset Ġit Ġusing Ġthe Ġexternal Ġapp " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun Task 2 ( device : ĠI Device ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! has Locale Different Than Expected ( device )) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġdevice Details Ġ= Ġdevice Wrapper . get Details () ĊĠĠĠĠĠĠĠ Ġprintln (" Device Ġ$ device Details Ġsetting Ġlanguage Ġto Ġ$ language .") ĊĠĠĠĠĠĠĠ Ġdevice Wrapper . set Language ( language ) ĊĊĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 0 ) Ġ// external Ġapp Ġchanges Ġlanguage Ġvia ĠUI , Ġso Ġwe Ġneed Ġto Ġwait Ġfor Ġit ĊĊĠĠĠĠĠĠĠ Ġval Ġlanguage After Change Ġ= Ġdevice Wrapper . get Language () ĊĠĠĠĠĠĠĠ Ġif Ġ( language After Change Ġ!= Ġlanguage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠGradle Exception (" Different Ġlanguage Ġset Ġon Ġ$ device Details . Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" It 's Ġ$ language After Change , Ġwhile Ġ$ language Ġwas Ġexpected .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln (" Device Ġ$ device Details Ġhas Ġlocale Ġset Ġto Ġ$ language .") ĊĠĠĠ Ġ} Ċ }