From 29ddc24602b31d4d0c2975fe2f48a775989b27c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=9Cmit=20Tun=C3=A7?= Date: Tue, 19 May 2026 23:59:46 +0300 Subject: [PATCH] refactor: remove temporary translation script translate_site.php --- translate_site.php | 238 --------------------------------------------- 1 file changed, 238 deletions(-) delete mode 100644 translate_site.php diff --git a/translate_site.php b/translate_site.php deleted file mode 100644 index 8cda81d..0000000 --- a/translate_site.php +++ /dev/null @@ -1,238 +0,0 @@ -make(Illuminate\Contracts\Console\Kernel::class); -$kernel->bootstrap(); - -use App\Models\Language; -use App\Models\SiteTranslation; -use App\Models\Translation; - -echo "=== STARTING QATAR (ARABIC) LOCALIZATION TRANSLATOR ===\n"; - -// Helper function to translate text using Google Translate -function translate_text_to_ar($text) { - if (empty($text) || is_numeric($text)) { - return $text; - } - - // If it's already Arabic, don't translate - if (preg_match('/[\x{0600}-\x{06FF}]/u', $text)) { - return $text; - } - - $url = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=ar&dt=t&q=" . urlencode($text); - - $options = [ - "http" => [ - "header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.0.0 Safari/537.36\r\n" - ] - ]; - $context = stream_context_create($options); - - for ($attempt = 1; $attempt <= 3; $attempt++) { - $response = @file_get_contents($url, false, $context); - if ($response !== false) { - $json = json_decode($response, true); - if (isset($json[0])) { - $translated = ""; - foreach ($json[0] as $part) { - if (isset($part[0])) { - $translated .= $part[0]; - } - } - if (!empty($translated)) { - return $translated; - } - } - } - usleep(300000); // 300ms delay between retries - } - - return $text; // Fallback -} - -// 1. STEP: Activate Arabic (ar) language in Database with Qatar Flag -echo "\n--- Step 1: Configuring Arabic Language in Database ---\n"; -$arabic = Language::where('code', 'ar')->first(); -if ($arabic) { - $arabic->update([ - 'is_active' => true, - 'flag' => '🇶🇦', // Qatar Flag - 'direction' => 'rtl', - ]); - echo "Arabic language ('ar') activated and configured with Qatar flag 🇶🇦 (RTL direction).\n"; -} else { - Language::create([ - 'code' => 'ar', - 'name' => 'Arabic', - 'native_name' => 'العربية', - 'flag' => '🇶🇦', // Qatar Flag - 'direction' => 'rtl', - 'is_active' => true, - 'is_default' => false, - 'sort_order' => 5, - ]); - echo "Arabic language ('ar') created, activated and configured with Qatar flag 🇶🇦 (RTL direction).\n"; -} - -// 2. STEP: Translate PHP Language Files -echo "\n--- Step 2: Translating PHP Language Files (TR to AR) ---\n"; -$trPath = __DIR__ . '/lang/tr'; -$arPath = __DIR__ . '/lang/ar'; - -if (!is_dir($arPath)) { - mkdir($arPath, 0755, true); - echo "Created directory: lang/ar\n"; -} - -$files = glob($trPath . '/*.php'); -foreach ($files as $file) { - $filename = basename($file); - echo "Processing PHP lang file: $filename\n"; - - $trArray = include $file; - $arFile = $arPath . '/' . $filename; - - $arArray = []; - if (file_exists($arFile)) { - $arArray = include $arFile; - } - - // Helper function for recursive array translation - if (!function_exists('translate_value_recursive')) { - function translate_value_recursive($val, $arVal = null, &$count = 0) { - if (is_array($val)) { - $res = []; - foreach ($val as $k => $v) { - $arSubVal = isset($arVal[$k]) ? $arVal[$k] : null; - $res[$k] = translate_value_recursive($v, $arSubVal, $count); - } - return $res; - } else { - if (!empty($arVal)) { - return $arVal; - } - $translated = translate_text_to_ar($val); - $count++; - usleep(50000); // 50ms delay - return $translated; - } - } - } - - $translatedCount = 0; - $translatedArray = translate_value_recursive($trArray, $arArray, $translatedCount); - - // Save back to lang/ar/filename.php - $content = "count() . " records in site_translations.\n"; -$translatedCount = 0; - -foreach ($siteTranslations as $st) { - $translations = $st->translations ?? []; - if (!isset($translations['ar']) || empty($translations['ar'])) { - // Find source text - $sourceText = $st->key; - if (isset($translations['tr']) && !empty($translations['tr'])) { - $sourceText = $translations['tr']; - } elseif (isset($translations['en']) && !empty($translations['en'])) { - $sourceText = $translations['en']; - } - - $translatedText = translate_text_to_ar($sourceText); - $translations['ar'] = $translatedText; - - $st->translations = $translations; - $st->save(); - $translatedCount++; - - if ($translatedCount % 20 === 0) { - echo "Translated $translatedCount site translation records...\n"; - } - usleep(60000); // 60ms delay - } -} -echo "Completed Step 3. Translated $translatedCount site translation keys to Arabic.\n"; - -// 4. STEP: Translate Database Model Translations (translations table) -echo "\n--- Step 4: Translating Model Translations Table (Pages, Products, Blogs, Categories) ---\n"; -// Get all unique model + field combinations that have translations -$uniqueTranslations = Translation::select('translatable_type', 'translatable_id', 'field_name') - ->groupBy('translatable_type', 'translatable_id', 'field_name') - ->get(); - -echo "Found " . $uniqueTranslations->count() . " unique translatable model fields.\n"; -$modelTranslationsCount = 0; - -foreach ($uniqueTranslations as $ut) { - // Check if Arabic translation already exists - $arTransExists = Translation::where('translatable_type', $ut->translatable_type) - ->where('translatable_id', $ut->ut_id ?? $ut->translatable_id) - ->where('field_name', $ut->field_name) - ->where('language_code', 'ar') - ->exists(); - - if ($arTransExists) { - continue; - } - - // Find the best source translation - $sourceTrans = Translation::where('translatable_type', $ut->translatable_type) - ->where('translatable_id', $ut->translatable_id) - ->where('field_name', $ut->field_name) - ->whereIn('language_code', ['tr', 'en', 'de', 'se']) - ->orderByRaw("FIELD(language_code, 'tr', 'en', 'de', 'se') ASC") - ->first(); - - if (!$sourceTrans || empty($sourceTrans->field_value)) { - continue; - } - - $sourceText = $sourceTrans->field_value; - $translatedText = translate_text_to_ar($sourceText); - - // Create new Arabic translation record - Translation::create([ - 'translatable_type' => $ut->translatable_type, - 'translatable_id' => $ut->translatable_id, - 'language_code' => 'ar', - 'field_name' => $ut->field_name, - 'field_value' => $translatedText, - 'status' => 'published', - 'version' => $sourceTrans->version ?? 1, - 'created_by' => $sourceTrans->created_by, - 'updated_by' => $sourceTrans->updated_by, - 'approved_by' => $sourceTrans->approved_by, - 'approved_at' => now(), - 'published_at' => now(), - ]); - - $modelTranslationsCount++; - - if ($modelTranslationsCount % 20 === 0) { - echo "Translated $modelTranslationsCount model fields...\n"; - } - - usleep(80000); // 80ms politeness delay -} - -echo "Completed Step 4. Generated $modelTranslationsCount new Arabic model translation records.\n"; -echo "\n=== ALL TRANSLATIONS COMPLETED SUCCESSFULLY ===\n";