Hi,
I’m trying to follow and make this [translator
>
<br />
>
>
<b>Warning</b>: Undefined array key “lang_two” in <b>/Users/——–/Downloads/LangTranslator/process.php</b> on line <b>8</b><br />
>
>
<br />
>
>
<b>Fatal error</b>: Uncaught TypeError: StichozaGoogleTranslateGoogleTranslate::__construct(): Argument #1 ($target) must be of type string, null given, called in /Users/———/Downloads/LangTranslator/process.php on line 12 and defined in /Users/————/Downloads/LangTranslator/vendor/stichoza/google-translate-php/src/GoogleTranslate.php:108
>
>
Stack trace:
>
>
#0 /Users/———/Downloads/LangTranslator/process.php(12): StichozaGoogleTranslateGoogleTranslate->__construct(NULL)
>
>
#1 {main}
>
>
thrown in <b>/Users/——–/Downloads/LangTranslator/vendor/stichoza/google-translate-php/src/GoogleTranslate.php</b> on line <b>108</b><br />
The console is supposed to print “en”, for English as the auto-detect (source) language.
This is my process.php code so far:
[code]
<-?php
require_once ‘vendor/autoload.php’;
use StichozaGoogleTranslateGoogleTranslate;
$lang_one = $_POST[‘lang_one’];
$lang_two = $_POST[‘lang_two’];
$text = $_POST[‘text’];
if ($lang_one == “AUTO_DETECT”) {
$tr = new GoogleTranslate($lang_two);
$text = $tr->translate($text);
echo $tr->getLastDetectedSource(); // Output: en
} else {
echo $tr->setSource($lang_one)->setTarget($lang_two)->translate($text);
}`
And app.js:
[code]
$(document).ready(function(){
$(“#convert”).on(“click”, function() {
var lang_one = $(“#lang_one”).val();
var lang_two = $(“#lang_two”).val();
var text = $(“#text”).val();
$.ajax({
url: “process.php”,
method: “post”,
data: {lang_one: lang_one, lang_two:lang_two, text: text},
success: function(status){
console.log(status);
},
});
});
});
I’m not sure why the error shows up. It says a type error but I can’t really identify one in my code. I tried to add a try-catch block after seeing a SO post:
[code]<-?php
require_once ‘vendor/autoload.php’;
use StichozaGoogleTranslateGoogleTranslate;
$lang_one = $_POST[‘lang_one’];
$lang_two = $_POST[‘lang_two’];
$text = $_POST[‘text’];
try {
if ($lang_one == “AUTO_DETECT”) {
$tr = new GoogleTranslate($lang_two);
$text = $tr->translate($text);
echo $tr->getLastDetectedSource(); // Output: en
} else {
echo $tr->setSource($lang_one)->setTarget($lang_two)->translate($text);
}
}
catch (TypeError $e) {
echo ‘error!!’;
}
And now it throws in the console:
>
>
<br />
> <b>Warning</b>: Undefined array key “lang_two” in <b>/Users/——–/Downloads/LangTranslator/process.php</b> on line <b>8</b><br />
> error!!
I downloaded composer (version 2.4.2), just like in the video, and followed the steps to import the google translate Github library. Can someone please help me fix this TypeError? Thanks!