package Ġutils Ċ Ċ import Ġcom . google . auth . oauth 2 . Google Credentials Ċ import Ġcom . google . cloud . translate . Language Ċ import Ġcom . google . cloud . translate . Translate Ċ import Ġcom . google . cloud . translate . Translate Options Ċ import Ġcom . google . common . collect . Lists Ċ import Ġjava . io . FileInputStream Ċ Ċ object ĠTrans lator Wrapper Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar ĠfilePath : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtranslate : ĠTranslate ĊĠĠĠ Ġvar Ġtarget Language Ġ= ĠDEFAULT _ LANGUAGE ĊĊĠĠĠ Ġfun Ġget Language Code ( language : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlanguage . substring After ("- ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinitialize Translator ( notify Func : Ġ( String , ĠString ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Translator () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Func . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNOT IFICATION _ TITLE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNOT IFICATION _ MESSAGE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġthis Ġis Ġa Ġtranslation Ġtext ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize Translator () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Translator () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġcreate Translator (){ ĊĠĠĠĠĠĠĠ Ġval Ġcredentials Ġ= ĠGoogle Credentials . from Stream ( FileInputStream ( filePath )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Scoped ( Lists . newArrayList ( GOOGLE _ CLOUD _ URL )) ĊĠĠĠĠĠĠĠ Ġtranslate Ġ= ĠTranslate Options . newBuilder (). set Credentials ( credentials ). build (). service ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġtakes Ġa Ġstring Ġand Ġreturn Ġa Ġtranslated Ġstring ĊĠĠĠĠ Ġ* Ġ@ param Ġselected Text ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtranslate String ( selected Text : ĠString ?): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! Translator Wrapper :: translate . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitialize Translator () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Should Ġnot Ġhappen Ġbecause Ġwe Ġare Ġdisabling Ġthe Ġplugin Ġif Ġnothing Ġis Ġselected . ĠAdded Ġit Ġfor Ġjust Ġan Ġextra Ġcheck ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Text . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtranslation Ġ= Ġtranslate . translate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Text , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTranslate . Translate Option . target Language ( get Language Code ( target Language )) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtranslation . translated Text !! ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġreturn Ġa Ġlist Ġof Ġlanguage Ġsupported Ġby Ġgoogle Ġtranslator ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Language List ( notify Func : Ġ( String , ĠString ) Ġ-> ĠUnit ): ĠList < Language > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Translator Wrapper :: translate . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitialize Translator ( notify Func ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtranslate . list Supported Languages () ĊĠĠĠ Ġ} Ċ Ċ }