feat: add automated scripts and JSON datasets for managing and translating site content
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
require __DIR__.'/vendor/autoload.php';
|
||||
$app = require_once __DIR__.'/bootstrap/app.php';
|
||||
$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
|
||||
|
||||
use App\Models\Translation;
|
||||
|
||||
$trTranslations = Translation::where('language_code', 'tr')->get();
|
||||
$untranslated = [];
|
||||
|
||||
function hasTurkish($text) {
|
||||
if (empty($text) || is_numeric($text)) return false;
|
||||
return preg_match('/[ğüşıöçĞÜŞİÖÇ]/u', $text) || preg_match('/(ve|bir|bu|ne|de|da|icin|ile|o|en|ki|ile|ise|mi|mu|sonra|olarak|gibi|daha|hakkinda)/i', $text);
|
||||
}
|
||||
|
||||
foreach ($trTranslations as $t) {
|
||||
$trVal = trim($t->field_value);
|
||||
if ($trVal === '' || $trVal === '<p></p>' || $trVal === 'null') {
|
||||
continue;
|
||||
}
|
||||
|
||||
$en = Translation::where('translatable_type', $t->translatable_type)
|
||||
->where('translatable_id', $t->translatable_id)
|
||||
->where('field_name', $t->field_name)
|
||||
->where('language_code', 'en')
|
||||
->first();
|
||||
|
||||
$enVal = $en ? trim($en->field_value) : '';
|
||||
|
||||
$needsTranslation = false;
|
||||
if (empty($enVal) || $enVal === '<p></p>') {
|
||||
$needsTranslation = true;
|
||||
} else if ($enVal === $trVal && hasTurkish($trVal)) {
|
||||
$needsTranslation = true;
|
||||
}
|
||||
|
||||
if ($needsTranslation) {
|
||||
$untranslated[] = [
|
||||
'type' => $t->translatable_type,
|
||||
'id' => $t->translatable_id,
|
||||
'field' => $t->field_name,
|
||||
'tr' => $trVal,
|
||||
'en' => $enVal
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
file_put_contents(__DIR__.'/untranslated_dynamic_filtered.json', json_encode($untranslated, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
|
||||
echo "Found " . count($untranslated) . " real untranslated dynamic model translations.\n";
|
||||
Reference in New Issue
Block a user