Translate
$text, 'source' => $sourceLang, 'target' => $targetLang, 'format' => 'text' ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/x-www-form-urlencoded']); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // curl_close() is niet meer nodig in PHP 8.0+ (automatisch opgeruimd) if (curl_errno($ch)) { log_translation("cURL-fout: " . curl_error($ch)); return null; } if ($httpCode !== 200) { log_translation("HTTP fout $httpCode voor $sourceLang -> $targetLang"); return null; } $responseData = json_decode($response, true); if (isset($responseData['translatedText'])) { return $responseData['translatedText']; } log_translation("Onverwacht response formaat: " . substr($response, 0, 200)); return null; } /** * Maak tekst veilig voor database */ function escape_db_text($text) { return addslashes(strip_tags($text)); } /** * Haal producten op die nog vertaald moeten worden */ function get_products_to_translate($limit = 15) { $sql = "SELECT products_id, products_name, products_description FROM " . TABLE_PRODUCTS_DESCRIPTION . " WHERE language_id = 1 AND (translated = 0 OR translated IS NULL) AND products_description IS NOT NULL AND products_description != '' AND products_description != 'Unknown Product' LIMIT " . (int)$limit; return tep_db_query($sql); } /** * Update of insert vertaling */ function save_translation($productId, $languageId, $productName, $description) { $checkSql = "SELECT products_id FROM " . TABLE_PRODUCTS_DESCRIPTION . " WHERE products_id = " . (int)$productId . " AND language_id = " . (int)$languageId; $checkResult = tep_db_query($checkSql); $escapedName = tep_db_input($productName); $escapedDesc = tep_db_input($description); if (tep_db_num_rows($checkResult) == 0) { // Nieuwe vertaling toevoegen $insertSql = "INSERT INTO " . TABLE_PRODUCTS_DESCRIPTION . " (products_id, language_id, products_name, products_description, translated) VALUES (" . (int)$productId . ", " . (int)$languageId . ", '" . $escapedName . "', '" . $escapedDesc . "', 1)"; tep_db_query($insertSql); return 'inserted'; } else { // Bestaande vertaling bijwerken $updateSql = "UPDATE " . TABLE_PRODUCTS_DESCRIPTION . " SET products_description = '" . $escapedDesc . "', translated = 1 WHERE products_id = " . (int)$productId . " AND language_id = " . (int)$languageId; tep_db_query($updateSql); return 'updated'; } } // ========== HOOFDPROGRAMMA ========== echo "
Product Vertaler
"; echo "
Bezig met vertalen van productbeschrijvingen...
"; echo ""; log_translation("========== VERTALING GESTART =========="); // Haal producten op om te vertalen $result = get_products_to_translate(15); if (!$result || tep_db_num_rows($result) == 0) { echo "
β
Geen producten gevonden om te vertalen.
"; log_translation("Geen producten gevonden om te vertalen"); } else { $totalProducts = tep_db_num_rows($result); echo "
π¦ " . $totalProducts . " producten gevonden om te vertalen.
"; $successCount = 0; $failCount = 0; while ($row = tep_db_fetch_array($result)) { $productId = $row['products_id']; $productName = $row['products_name']; $englishDescription = $row['products_description']; echo ""; echo "Product ID: $productId - $productName
"; // Opschonen van de Engelse beschrijving $cleanedDescription = strip_tags($englishDescription); if (empty(trim($cleanedDescription))) { echo "β οΈ Lege beschrijving, overgeslagen.
"; log_translation("Product $productId heeft lege beschrijving"); continue; } echo "π Origineel: " . substr($cleanedDescription, 0, 100) . "...
"; log_translation("Verwerken product $productId"); $nlSuccess = false; $deSuccess = false; // Vertaal naar Nederlands echo "π³π± Nederlands vertalen... "; $nlTranslation = translate_text($cleanedDescription, 'en', 'nl'); if ($nlTranslation) { $cleanNl = escape_db_text($nlTranslation); $resultNl = save_translation($productId, 2, $productName, $cleanNl); echo "β
{$resultNl}
"; $nlSuccess = true; log_translation("NL vertaling voor product $productId: " . substr($nlTranslation, 0, 100)); } else { echo "β Mislukt
"; $failCount++; log_translation("NL vertaling mislukt voor product $productId"); } // Vertaal naar Duits echo "π©πͺ Duits vertalen... "; $deTranslation = translate_text($cleanedDescription, 'en', 'de'); if ($deTranslation) { $cleanDe = escape_db_text($deTranslation); $resultDe = save_translation($productId, 4, $productName, $cleanDe); echo "β
{$resultDe}
"; $deSuccess = true; log_translation("DE vertaling voor product $productId: " . substr($deTranslation, 0, 100)); } else { echo "β Mislukt
"; $failCount++; log_translation("DE vertaling mislukt voor product $productId"); } // Alleen markeren als vertaald als beide vertalingen succesvol waren if ($nlSuccess && $deSuccess) { $updateSql = "UPDATE " . TABLE_PRODUCTS_DESCRIPTION . " SET translated = 1 WHERE products_id = " . (int)$productId . " AND language_id = 1"; tep_db_query($updateSql); $successCount++; echo "β Product gemarkeerd als vertaald
"; log_translation("Product $productId succesvol vertaald"); } else { echo "β Product NIET gemarkeerd als vertaald (vertaling mislukt)
"; log_translation("Product $productId gedeeltelijk vertaald, niet gemarkeerd"); } } echo ""; echo "
π Samenvatting:
"; echo "
"; echo "
β
Succesvol vertaald: $successCount producten
"; echo "
β Mislukt: $failCount vertalingen
"; echo "
"; } log_translation("========== VERTALING VOLTOOID =========="); tep_db_close(); ?>















