@@ -11,7 +11,7 @@ class TranslatorController extends Controller
1111 private $ user = null ;
1212 private $ helper ;
1313
14- private $ app_id = null ;
14+ private $ app_id = null ;
1515 private $ app_key = null ;
1616
1717 public function __construct ()
@@ -31,18 +31,19 @@ public function create($form_data, $page, $plugin_settings)
3131 {
3232 // set a default select box value to the form
3333 // any better idea than change the $_GET?
34- $ _GET ['translate_to ' ] = $ _COOKIE ['translate_to ' ] ?? $ this ->helper ->s ('template.frontend_language ' );
34+ $ _GET ['translate_to ' ] = $ _COOKIE ['translate_to ' ] ?? $ this ->helper ->s ('template.frontend_language ' );
3535 $ data ['translate_from ' ] = $ _COOKIE ['translate_from ' ] ?? 'en ' ;
3636
3737 $ _GET ['append_source_content ' ] = $ _COOKIE ['append_source_content ' ] ?? 'yes ' ;
3838
3939 $ _GET ['translate_result_add_to_field ' ] = $ _COOKIE ['translate_result_add_to_field ' ] ?? 'main_content ' ;
4040
41- if ($ plugin_settings [ ' api_provider ' ] == ' baidu ' ) {
42- $ data ['translate_languages ' ] = [" en " => " English " , " zh " => " Chinese " , " epa " => " Spanish " , " ara " => " Arabic " , " jp " => " Japanese " , " hi " => " Hindi " , " pt " => " Portuguese " , " fra " => " French " , " ru " => " Russian " , " de " => " German " , " kor " => " Korean " , " it " => " Italian " , " th " => " Thai " ];
41+ if (' baidu ' == strtolower ( $ plugin_settings [ ' api_provider ' ]) ) {
42+ $ data ['translate_languages ' ] = [' en ' => ' English ' , ' zh ' => ' Chinese ' , ' epa ' => ' Spanish ' , ' ara ' => ' Arabic ' , ' jp ' => ' Japanese ' , ' hi ' => ' Hindi ' , ' pt ' => ' Portuguese ' , ' fra ' => ' French ' , ' ru ' => ' Russian ' , ' de ' => ' German ' , ' kor ' => ' Korean ' , ' it ' => ' Italian ' , ' th ' => ' Thai ' ];
4343 } else {
44- $ data ['translate_languages ' ] = [" en " => " English " , " zh " => " Chinese " , " es " => " Spanish " , " ar " => " Arabic " , " ja " => " Japanese " , " hi " => " Hindi " , " pt " => " Portuguese " , " fr " => " French " , " ru " => " Russian " , " de " => " German " , " ko " => " Korean " , " it " => " Italian " , " la " => " Latin " ];
44+ $ data ['translate_languages ' ] = [' en ' => ' English ' , ' zh ' => ' Chinese ' , ' es ' => ' Spanish ' , ' ar ' => ' Arabic ' , ' ja ' => ' Japanese ' , ' hi ' => ' Hindi ' , ' pt ' => ' Portuguese ' , ' fr ' => ' French ' , ' ru ' => ' Russian ' , ' de ' => ' German ' , ' ko ' => ' Korean ' , ' it ' => ' Italian ' , ' la ' => ' Latin ' ];
4545 }
46+
4647 return $ data ;
4748 }
4849
@@ -56,11 +57,12 @@ public function edit($id, $page, $plugin_settings)
5657
5758 $ page ->translate_result_add_to_field = $ _COOKIE ['translate_result_add_to_field ' ] ?? 'main_content ' ;
5859
59- if ($ plugin_settings [ ' api_provider ' ] == ' baidu ' ) {
60- $ data ['translate_languages ' ] = [" en " => " English " , " zh " => " Chinese " , " epa " => " Spanish " , " ara " => " Arabic " , " jp " => " Japanese " , " hi " => " Hindi " , " pt " => " Portuguese " , " fra " => " French " , " ru " => " Russian " , " de " => " German " , " kor " => " Korean " , " it " => " Italian " , " th " => " Thai " ];
60+ if (' baidu ' == strtolower ( $ plugin_settings [ ' api_provider ' ]) ) {
61+ $ data ['translate_languages ' ] = [' en ' => ' English ' , ' zh ' => ' Chinese ' , ' epa ' => ' Spanish ' , ' ara ' => ' Arabic ' , ' jp ' => ' Japanese ' , ' hi ' => ' Hindi ' , ' pt ' => ' Portuguese ' , ' fra ' => ' French ' , ' ru ' => ' Russian ' , ' de ' => ' German ' , ' kor ' => ' Korean ' , ' it ' => ' Italian ' , ' th ' => ' Thai ' ];
6162 } else {
62- $ data ['translate_languages ' ] = [" en " => " English " , " zh " => " Chinese " , " es " => " Spanish " , " ar " => " Arabic " , " ja " => " Japanese " , " hi " => " Hindi " , " pt " => " Portuguese " , " fr " => " French " , " ru " => " Russian " , " de " => " German " , " ko " => " Korean " , " it " => " Italian " , " la " => " Latin " ];
63+ $ data ['translate_languages ' ] = [' en ' => ' English ' , ' zh ' => ' Chinese ' , ' es ' => ' Spanish ' , ' ar ' => ' Arabic ' , ' ja ' => ' Japanese ' , ' hi ' => ' Hindi ' , ' pt ' => ' Portuguese ' , ' fr ' => ' French ' , ' ru ' => ' Russian ' , ' de ' => ' German ' , ' ko ' => ' Korean ' , ' it ' => ' Italian ' , ' la ' => ' Latin ' ];
6364 }
65+
6466 return $ data ;
6567 }
6668
@@ -71,34 +73,60 @@ public function store($form_data, $page, $plugin_settings)
7173
7274 public function update ($ form_data , $ page , $ plugin_settings )
7375 {
74- if (trim ($ form_data ['translate_content ' ]) == '' ) {
76+ if ('' == trim ($ form_data ['translate_content ' ])) {
7577 return false ;
7678 }
77- if ($ plugin_settings [ ' api_provider ' ] == ' baidu ' ) {
78- $ this ->app_id = $ plugin_settings ['app_id ' ];
79+ if (' baidu ' == $ plugin_settings [ ' api_provider ' ] ) {
80+ $ this ->app_id = $ plugin_settings ['app_id ' ];
7981 $ this ->app_key = $ plugin_settings ['app_key ' ];
8082
8183 $ api_result = $ this ->baiduTranslate ($ form_data ['translate_content ' ], $ form_data ['translate_from ' ], $ form_data ['translate_to ' ]);
8284 if (isset ($ api_result ['trans_result ' ][0 ]['dst ' ])) {
8385 $ translate_result = '<div class="translate-content"> ' ;
8486 foreach ($ api_result ['trans_result ' ] as $ rs ) {
85- if ($ form_data [ ' append_source_content ' ] == ' yes ' ) {
86- $ translate_result .= '<div class="src"> ' . $ rs ['src ' ] . '</div> ' ;
87+ if (' yes ' == $ form_data [ ' append_source_content ' ] ) {
88+ $ translate_result .= '<div class="src"> ' . $ rs ['src ' ]. '</div> ' ;
8789 }
88- $ translate_result .= '' . $ rs ['dst ' ] . '<br/><br/> ' ;
90+ $ translate_result .= '' . $ rs ['dst ' ]. '<br/><br/> ' ;
8991 }
9092 $ translate_result .= '</div> ' ;
91- $ new_content = $ page [$ form_data ['translate_result_add_to_field ' ]] . $ translate_result ;
93+ $ new_content = $ page [$ form_data ['translate_result_add_to_field ' ]]. $ translate_result ;
9294 } else {
9395 if (request ()->debug ) {
9496 $ this ->helper ->debug ($ api_result );
9597 }
98+
9699 return false ;
97100 }
98- }
101+ } elseif ('google_free ' == $ plugin_settings ['api_provider ' ]) {
102+ if ('google_free_002 ' == $ plugin_settings ['app_key ' ]) {
103+ // https://github.com/Stichoza/google-translate-php
104+ // Need the end-user install via composer first
99105
106+ $ tr = new \Stichoza \GoogleTranslate \GoogleTranslate ($ form_data ['translate_to ' ], $ form_data ['translate_from ' ], ['verify ' => false ]);
107+ $ api_result = $ tr ->translate ($ form_data ['translate_content ' ]);
108+ } else {
109+ // https://github.com/dejurin/php-google-translate-for-free
110+ // Need copy the class code to the GoogleTranslateForFree.php
100111
101- // $this->helper->debug($api_result);
112+ $ tr = new GoogleTranslateForFree ();
113+ $ api_result = $ tr ->translate ($ form_data ['translate_from ' ], $ form_data ['translate_to ' ], $ form_data ['translate_content ' ], 2 ).$ plugin_settings ['app_key ' ];
114+ }
115+
116+ if ($ api_result ) {
117+ $ translate_result = '<div class="translate-content"> ' .nl2br ($ api_result ).'</div> ' ;
118+
119+ if ('yes ' == $ form_data ['append_source_content ' ]) {
120+ $ translate_result .= '<div class="pt-3 source-content"><hr class="source-hr" /> ' .nl2br ($ form_data ['translate_content ' ]).'</div> ' ;
121+ }
122+
123+ $ new_content = $ page [$ form_data ['translate_result_add_to_field ' ]].$ translate_result ;
124+ }
125+
126+ $ this ->helper ->debug ([$ new_content , $ form_data ]);
127+ }
128+
129+ $ this ->helper ->debug ($ api_result );
102130 if (isset ($ new_content )) {
103131 $ page ->update ([$ form_data ['translate_result_add_to_field ' ]=>$ new_content ]);
104132 }
@@ -120,14 +148,13 @@ public function update($form_data, $page, $plugin_settings)
120148 * Other methods.
121149 */
122150
123-
124151 // baidu FanYi translate
125152 public function baiduTranslate ($ query , $ from , $ to )
126153 {
127154 $ app_id = $ this ->app_id ;
128155 $ app_key = $ this ->app_key ;
129156 if (strlen ($ app_id ) < 10 || strlen ($ app_key ) < 10 ) {
130- exit (" Please edit the app_id & app_key in the translator plugin setting page, you can get them from https://api.fanyi.baidu.com/ " );
157+ exit (' Please edit the app_id & app_key in the translator plugin setting page, you can get them from https://api.fanyi.baidu.com/ ' );
131158 }
132159
133160 $ args = [
@@ -153,8 +180,6 @@ public function buildSign($query, $appID, $salt, $secKey)
153180 return $ ret ;
154181 }
155182
156-
157-
158183 //发起网络请求
159184 public function baiduCall ($ url , $ args =null , $ method ='post ' , $ testflag = 0 , $ timeout = 10 , $ headers =[])
160185 {
@@ -174,8 +199,6 @@ public function baiduCall($url, $args=null, $method='post', $testflag = 0, $time
174199 return $ ret ;
175200 }
176201
177-
178-
179202 public function baiduCallOnce ($ url , $ args =null , $ method ='post ' , $ withCookie = false , $ timeout = 10 , $ headers =[])
180203 {
181204 $ ch = curl_init ();
@@ -208,8 +231,6 @@ public function baiduCallOnce($url, $args=null, $method='post', $withCookie = fa
208231 return $ r ;
209232 }
210233
211-
212-
213234 public function baiduConvert (&$ args )
214235 {
215236 $ data = '' ;
0 commit comments