package Ġcn . yi ig ux ing . plugin . translate . trans . ali Ċ Ċ import Ġcn . yi ig ux ing . plugin . translate . message Ċ import Ġcn . yi ig ux ing . plugin . translate . trans .* Ċ import Ġcn . yi ig ux ing . plugin . translate . ui . settings . Translation Engine . ALI Ċ import Ġcn . yi ig ux ing . plugin . translate . util . Settings Ċ import Ġcn . yi ig ux ing . plugin . translate . util . hmac Sha 1 Ċ import Ġcn . yi ig ux ing . plugin . translate . util . i Ċ import Ġcn . yi ig ux ing . plugin . translate . util . md 5 Base 6 4 Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . annotations . SerializedName Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġcom . intellij . util . io . Http Requests Ċ import Ġorg . js oup . nodes . Document Ċ import Ġjava . net . URL Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġjavax . swing . Icon Ċ Ċ /** Ċ Ġ* ĠAli Ġtranslator Ċ Ġ*/ Ċ // ĠProduct Ġdescription : Ġhttps :// www . aliyun . com / product / ai / base _ al im t Ċ object ĠAli Translator Ġ: ĠAbstract Translator (), ĠDocumentation Translator Ġ{ ĊĊĠĠĠ Ġ@ Suppress (" Http Urls Usage ") ĊĠĠĠ Ġprivate Ġconst Ġval ĠA LI _ TRANSL ATE _ API _ URL Ġ= Ġ" http :// mt . aliyuncs . com / api / translate / web / general " ĊĠĠĠ Ġprivate Ġconst Ġval ĠA LI _ TRANSL ATE _ PRODUCT _ URL Ġ= Ġ" https :// www . aliyun . com / product / ai / base _ al im t " ĊĊĊĠĠĠ Ġprivate Ġval ĠSUPPORT ED _ L ANGU AGES : ĠList < Lang > Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠLang . CH INE SE , ĊĠĠĠĠĠĠĠ ĠLang . CH INE SE _ TR AD ITION AL , ĊĠĠĠĠĠĠĠ ĠLang . EN GL ISH , ĊĠĠĠĠĠĠĠ ĠLang . J AP ANE SE , ĊĠĠĠĠĠĠĠ ĠLang . K ORE AN , ĊĠĠĠĠĠĠĠ ĠLang . F REN CH , ĊĠĠĠĠĠĠĠ ĠLang . SPAN ISH , ĊĠĠĠĠĠĠĠ ĠLang . IT ALI AN , ĊĠĠĠĠĠĠĠ ĠLang . GER MAN , ĊĠĠĠĠĠĠĠ ĠLang . TUR K ISH , ĊĠĠĠĠĠĠĠ ĠLang . RU SS IAN , ĊĠĠĠĠĠĠĠ ĠLang . PORT UG UE SE , ĊĠĠĠĠĠĠĠ ĠLang . VI ET NAME SE , ĊĠĠĠĠĠĠĠ ĠLang . IND ONES IAN , ĊĠĠĠĠĠĠĠ ĠLang . TH AI , ĊĠĠĠĠĠĠĠ ĠLang . MAL AY , ĊĠĠĠĠĠĠĠ ĠLang . AR AB IC , ĊĠĠĠĠĠĠĠ ĠLang . H IN DI ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval ĠSUPPORT ED _ TARGET _ L ANGU AGES : ĠList < Lang > Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠLang . CH INE SE , ĊĠĠĠĠĠĠĠ ĠLang . EN GL ISH , ĊĠĠĠĠĠĠĠ ĠLang . J AP ANE SE , ĊĠĠĠĠĠĠĠ ĠLang . K ORE AN , ĊĠĠĠĠĠĠĠ ĠLang . F REN CH , ĊĠĠĠĠĠĠĠ ĠLang . SPAN ISH , ĊĠĠĠĠĠĠĠ ĠLang . IT ALI AN , ĊĠĠĠĠĠĠĠ ĠLang . GER MAN , ĊĠĠĠĠĠĠĠ ĠLang . TUR K ISH , ĊĠĠĠĠĠĠĠ ĠLang . RU SS IAN , ĊĠĠĠĠĠĠĠ ĠLang . PORT UG UE SE , ĊĠĠĠĠĠĠĠ ĠLang . VI ET NAME SE , ĊĠĠĠĠĠĠĠ ĠLang . IND ONES IAN , ĊĠĠĠĠĠĠĠ ĠLang . TH AI , ĊĠĠĠĠĠĠĠ ĠLang . MAL AY ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġlogger : ĠLogger Ġ= ĠLogger . getInstance ( Ali Translator :: class . java ) ĊĊĠĠĠ Ġoverride Ġval Ġid : ĠString Ġ= ĠA LI . id ĊĊĠĠĠ Ġoverride Ġval Ġname : ĠString Ġ= ĠA LI . translator Name ĊĊĠĠĠ Ġoverride Ġval Ġicon : ĠIcon Ġ= ĠA LI . icon ĊĊĠĠĠ Ġoverride Ġval Ġinterval Limit : ĠInt Ġ= ĠA LI . interval Limit ĊĊĠĠĠ Ġoverride Ġval Ġcontent Length Limit : ĠInt Ġ= ĠA LI . content Length Limit ĊĊĠĠĠ Ġoverride Ġval Ġprimary Language : ĠLang ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠA LI . primary Language ĊĊĠĠĠ Ġoverride Ġval Ġsupported Source Languages : ĠList < Lang > Ġ= ĠSUPPORT ED _ L ANGU AGES ĊĠĠĠĠĠĠĠ Ġ. to Mutable List () ĊĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġadd ( 0 , ĠLang . AUTO ) Ġ} ĊĠĠĠ Ġoverride Ġval Ġsupported Target Languages : ĠList < Lang > Ġ= ĠSUPPORT ED _ TARGET _ L ANGU AGES ĊĊĠĠĠ Ġoverride Ġfun Ġcheck Configuration ( force : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( force Ġ|| ĠSettings . ali Translate Settings . let Ġ{ Ġit . appId . isEmpty () Ġ|| Ġit . getApp Key (). isEmpty () Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠA LI . show Configuration Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Translate ( text : ĠString , Ġsrc Lang : ĠLang , Ġtarget Lang : ĠLang ): ĠTranslation Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSimple Translate Client ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġ_, Ġ_, Ġ_ Ġ-> Ġcall ( text , Ġsrc Lang , Ġtarget Lang , Ġfalse ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAli Translator :: parse Translation ĊĠĠĠĠĠĠĠ Ġ). execute ( text , Ġsrc Lang , Ġtarget Lang ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtranslate Documentation ( documentation : ĠDocument , Ġsrc Lang : ĠLang , Ġtarget Lang : ĠLang ): ĠDocument Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcheck Error Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġdocumentation . body () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġbody . html (). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( content . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdocumentation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Content Length ( content , Ġcontent Length Limit ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠSimple Translate Client ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġ_, Ġ_, Ġ_ Ġ-> Ġcall ( content , Ġsrc Lang , Ġtarget Lang , Ġtrue ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAli Translator :: parse Translation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtranslation Ġ= Ġwith ( client ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate CacheKey Ġ{ Ġit . update (" DOCUMENT ATION ". toByteArray ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecute ( content , Ġsrc Lang , Ġtarget Lang ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody . html ( translation . translation Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocumentation ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åºıåĪĹåĮĸ json æ¨¡åŀĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" Member Visibility Can Be Private ") ĊĠĠĠ Ġdata Ġclass ĠAli Translation Request Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ@ SerializedName (" Source Text ") ĊĠĠĠĠĠĠĠ Ġval Ġsource Text : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ SerializedName (" Source Language ") ĊĠĠĠĠĠĠĠ Ġval Ġsource Language : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ SerializedName (" Target Language ") ĊĠĠĠĠĠĠĠ Ġval Ġtarget Language : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ SerializedName (" Format Type ") ĊĠĠĠĠĠĠĠ Ġval Ġformat Type : ĠString Ġ= Ġ" text ", ĊĠĠĠĠĠĠĠ Ġ@ SerializedName (" Scene ") ĊĠĠĠĠĠĠĠ Ġval Ġscene : ĠString Ġ= Ġ" general " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġcall ( text : ĠString , Ġsrc Lang : ĠLang , Ġtarget Lang : ĠLang , Ġis Documentation : ĠBoolean ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġformat Type Ġ= Ġif Ġ( is Documentation ) Ġ" html " Ġelse Ġ" text " ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠAli Translation Request ( text , Ġsrc Lang . ali Language Code , Ġtarget Lang . ali Language Code , Ġformat Type ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsend HttpRequest ( request ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend HttpRequest ( request : ĠAny ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠA LI _ TRANSL ATE _ API _ URL ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= ĠGson (). toJson ( request ) ĊĊĠĠĠĠĠĠĠ Ġval Ġreal Url Ġ= ĠURL ( url ) ĊĠĠĠĠĠĠĠ Ġval Ġaccept Ġ= Ġ" application / json " ĊĠĠĠĠĠĠĠ Ġval ĠcontentType Ġ= Ġ" application / json " ĊĠĠĠĠĠĠĠ Ġval Ġdate : ĠString Ġ= Ġto GMT String ( Date ()) ĊĠĠĠĠĠĠĠ Ġval Ġbody Md 5 : ĠString Ġ= Ġbody . md 5 Base 6 4 () ĊĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠ Ġval Ġstring To Sign Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPOST ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ$ accept ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ$ body Md 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ$ contentType ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ$ date ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx - acs - signature - method : HMAC - SHA 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx - acs - signature - nonce :$ uuid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx - acs - version : 2 0 1 9 - 0 1 - 0 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ real Url . file } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠSettings . ali Translate Settings ĊĊĠĠĠĠĠĠĠ Ġreturn ĠHttp Requests ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ( url , ĠcontentType ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. tun er Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setRequest Property (" Accept ", Ġaccept ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setRequest Property (" Content - MD 5 ", Ġbody Md 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setRequest Property (" Date ", Ġdate ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setRequest Property (" Host ", Ġreal Url . host ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setRequest Property ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Authorization ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" acs Ġ${ settings . appId }:${ string To Sign . hmac Sha 1 ( settings . getApp Key ()) }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setRequest Property (" x - acs - signature - nonce ", Ġuuid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setRequest Property (" x - acs - signature - method ", Ġ" HMAC - SHA 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setRequest Property (" x - acs - version ", Ġ" 2 0 1 9 - 0 1 - 0 2 ") Ġ// Ġ çīĪæľ¬ åı¯ éĢī ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . write ( body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . readString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠAli Translation Result Exception ( code : ĠInt , Ġval ĠerrorMessage : ĠString ) Ġ: ĠTranslation Result Exception ( code ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Localized Message (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"$ message [$ errorMessage ]" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Translation ( ĊĠĠĠĠĠĠĠ Ġtranslation : ĠString , ĊĠĠĠĠĠĠĠ Ġoriginal : ĠString , ĊĠĠĠĠĠĠĠ Ġsrc Lang : ĠLang , ĊĠĠĠĠĠĠĠ Ġtarget Lang : ĠLang ĊĠĠĠ Ġ): ĠTranslation Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . i (" Translate Ġresult : Ġ$ translation ") ĊĠĠĠĠĠĠĠ Ġreturn ĠGson (). fromJson ( translation , ĠAli Translation :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ= Ġoriginal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsrc Ġ= Ġsrc Lang ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Ġ= Ġtarget Lang ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠAli Translation Result Exception ( code , ĠerrorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. to Translation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Error Info ( throwable : ĠThrowable ): ĠError Info Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġwhen Ġ( throwable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTranslation Result Exception Ġ-> Ġwhen Ġ( throwable . code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 0 1 Ġ-> Ġmessage (" error . request . timeout ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 0 2 Ġ-> Ġmessage (" error . system Error ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 0 3 Ġ-> Ġmessage (" error . bad . request ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 0 4 Ġ-> Ġmessage (" error . missing Parameter ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 0 5 Ġ-> Ġmessage (" error . language . unsupported ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 0 6 Ġ-> Ġmessage (" error . ali . language . detect ing . failed ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 0 7 Ġ-> Ġmessage (" error . system Error ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 0 8 Ġ-> Ġmessage (" error . text . too . long ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 0 9 Ġ-> Ġmessage (" error . ali . permission . den ied ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 1 0 Ġ-> Ġreturn ĠError Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage (" error . service . is . down "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠError Info . browse Url Action ( message (" error . service . is . down . action . name "), ĠA LI _ TRANSL ATE _ PRODUCT _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 1 1 Ġ-> Ġmessage (" error . system Error ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 1 2 Ġ-> Ġmessage (" error . system Error ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 1 3 Ġ-> Ġmessage (" error . account . has . run . out . of . balance ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġmessage (" error . unknown ") Ġ+ Ġ"[ ${ throwable . code }] " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġsuper . create Error Info ( throwable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠError Info ( errorMessage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġto GMT String ( date : ĠDate ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdf Ġ= ĠSimpleDateFormat (" E , Ġdd ĠM MM Ġy yyy ĠHH : mm : ss Ġz ", ĠLocale . UK ) ĊĠĠĠĠĠĠĠ Ġdf . time Zone Ġ= ĠSimple TimeZone ( 0 , Ġ" GMT ") ĊĠĠĠĠĠĠĠ Ġreturn Ġdf . format ( date ) ĊĠĠĠ Ġ} Ċ } Ċ