<?php
/**
 * ClientRadar — Translation Handler
 * POST: { lang, texts[] } → returns translated texts via MyMemory API (FREE)
 * هیچ هزینه‌ای ندارد — بدون Claude API
 */
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');

$input = json_decode(file_get_contents('php://input'), true);
$lang  = $input['lang'] ?? 'en';
$texts = $input['texts'] ?? [];

// اگه انگلیسی بود یا متنی نبود، همون رو برگردون
if ($lang === 'en' || empty($texts)) {
    echo json_encode(['success' => true, 'translations' => $texts]);
    exit;
}

// نگاشت کدهای زبان به فرمت MyMemory
$langMap = [
    'fa' => 'fa-IR',
    'ar' => 'ar-SA',
    'tr' => 'tr-TR',
    'es' => 'es-ES',
    'fr' => 'fr-FR',
    'de' => 'de-DE',
    'ru' => 'ru-RU',
    'zh' => 'zh-CN',
    'ja' => 'ja-JP',
    'pt' => 'pt-BR',
];

$targetLang = $langMap[$lang] ?? 'en-GB';
$langPair   = 'en|' . $targetLang;

/**
 * ترجمه یک متن از طریق MyMemory
 */
function translateText($text, $langPair) {
    // متن خالی یا خیلی کوتاه رو برگردون
    $text = trim($text);
    if (strlen($text) === 0) return $text;

    // اگه عدد یا URL یا ایمیل بود، ترجمه نکن
    if (preg_match('/^[\d\s\$\%\.\,\+\-]+$/', $text)) return $text;
    if (filter_var($text, FILTER_VALIDATE_URL)) return $text;
    if (filter_var($text, FILTER_VALIDATE_EMAIL)) return $text;

    $url = 'https://api.mymemory.translated.net/get?q=' . urlencode($text) . '&langpair=' . urlencode($langPair);

    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT        => 10,
        CURLOPT_USERAGENT      => 'ClientRadar/1.0',
    ]);
    $response = curl_exec($ch);
    $error    = curl_error($ch);
    curl_close($ch);

    if ($error || !$response) return $text; // در صورت خطا، متن اصلی رو برگردون

    $data = json_decode($response, true);

    // بررسی موفقیت
    if (isset($data['responseStatus']) && $data['responseStatus'] == 200) {
        $translated = $data['responseData']['translatedText'] ?? $text;

        // اگه MyMemory نتونست ترجمه کنه، متن اصلی رو برگردون
        if (stripos($translated, 'MYMEMORY WARNING') !== false) return $text;

        return $translated;
    }

    return $text;
}

// ترجمه همه متن‌ها
$translations = [];
$brandNames   = ['ClientRadar', 'ApplyRadar', 'SocialRadar', 'Digvera',
                  'Upwork', 'Freelancer', 'RemoteOK', 'Guru', 'Toptal',
                  'Jobicy', 'WorkingNomads', 'HubstaffTalent'];

foreach ($texts as $text) {
    $original = $text;

    // brand nameها رو placeholder کن
    $placeholders = [];
    foreach ($brandNames as $i => $brand) {
        if (strpos($text, $brand) !== false) {
            $placeholder = "BRAND{$i}";
            $placeholders[$placeholder] = $brand;
            $text = str_replace($brand, $placeholder, $text);
        }
    }

    // ترجمه
    $result = translateText($text, $langPair);

    // placeholder رو برگردون
    foreach ($placeholders as $placeholder => $brand) {
        $result = str_replace($placeholder, $brand, $result);
    }

    $translations[] = $result;

    // کمی صبر کن تا rate limit نخوریم (MyMemory: 500 req/day رایگان)
    usleep(150000); // 0.15 ثانیه
}

echo json_encode(['success' => true, 'translations' => $translations]);