refactor: remove diagnostic and translation scripts and implement automatic cache clearing for settings in the model.

This commit is contained in:
Ümit Tunç
2026-05-20 00:06:01 +03:00
parent 19c9202fc1
commit 575fdad12c
15 changed files with 18 additions and 3446 deletions
@@ -24,7 +24,12 @@ class EditSetting extends EditRecord
if (isset($data['type'])) {
$type = $data['type'];
$virtualField = 'value_' . $type;
// Map the setting type to the form field name
$virtualField = match ($type) {
'string', 'text', 'json', 'integer', 'float' => 'value_text',
default => 'value_' . $type,
};
try {
// Model accessor'ını kullanarak değeri al
@@ -115,7 +115,7 @@ class SettingForm
->label(__('settings.value'))
->helperText(__('settings.value_helper'))
->required()
->visible(fn (Get $get) => in_array($get('type'), ['string', 'text', 'json']) && !in_array($get('key'), ['default_header', 'default_footer']))
->visible(fn (Get $get) => in_array($get('type'), ['string', 'text', 'json', 'integer', 'float']) && !in_array($get('key'), ['default_header', 'default_footer']))
->rows(fn (Get $get) => $get('type') === 'text' ? 5 : 3)
->columnSpanFull(),
+11
View File
@@ -10,6 +10,17 @@ class Setting extends Model
{
use HasFactory, SoftDeletes;
protected static function booted()
{
static::saved(function ($setting) {
\Illuminate\Support\Facades\Cache::forget("app_setting_{$setting->key}");
});
static::deleted(function ($setting) {
\Illuminate\Support\Facades\Cache::forget("app_setting_{$setting->key}");
});
}
protected $fillable = [
'key',
'value',
-23
View File
@@ -1,23 +0,0 @@
<?php
$data = json_decode(file_get_contents(__DIR__.'/untranslated_site.json'), true);
$turkishOnly = [];
function isRealTurkish($text) {
if (empty($text) || is_numeric($text)) return false;
// Check for Turkish specific characters or common Turkish words
return preg_match('/[ğüşıöçĞÜŞİÖÇ]/u', $text) || preg_match('/\b(ve|bir|bu|ne|de|da|icin|için|ile|en|ki|ise|mi|mu|sonra|olarak|gibi|daha|hakkinda|hakkımızda|giris|giriş|kayit|kayıt|bizim|hizmet|iletisim|iletişim|neden|neler|yapıyoruz|biz|seviyoruz|ekibimiz|abone|adınız|soyadınız|telefon|adres|teknoloji)\b/iu', $text);
}
foreach ($data as $item) {
$trVal = !empty($item['tr']) ? $item['tr'] : $item['key'];
if (isRealTurkish($trVal)) {
$turkishOnly[] = [
'id' => $item['id'],
'tr' => $trVal
];
}
}
file_put_contents(__DIR__.'/unique_turkish_site.json', json_encode($turkishOnly, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
echo "Found " . count($turkishOnly) . " Turkish site translations that need translation.\n";
-36
View File
@@ -1,36 +0,0 @@
<?php
$trPath = __DIR__.'/lang/tr';
$enPath = __DIR__.'/lang/en';
$trFiles = scandir($trPath);
$enFiles = scandir($enPath);
$missingFiles = array_diff($trFiles, $enFiles);
if (!empty($missingFiles)) {
echo "Missing files in lang/en: " . implode(', ', $missingFiles) . "\n";
} else {
echo "All language files exist in both directories.\n";
}
foreach ($trFiles as $file) {
if ($file === '.' || $file === '..') continue;
if (pathinfo($file, PATHINFO_EXTENSION) !== 'php') continue;
$trData = include($trPath.'/'.$file);
$enData = [];
if (file_exists($enPath.'/'.$file)) {
$enData = include($enPath.'/'.$file);
}
$missingKeys = [];
foreach ($trData as $key => $val) {
if (!isset($enData[$key])) {
$missingKeys[] = $key;
}
}
if (!empty($missingKeys)) {
echo "File: $file has missing keys in EN: " . implode(', ', $missingKeys) . "\n";
}
}
echo "Static translation key check completed.\n";
-49
View File
@@ -1,49 +0,0 @@
<?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";
-45
View File
@@ -1,45 +0,0 @@
<?php
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
use App\Models\SiteTranslation;
$siteTranslations = SiteTranslation::all();
$needingTranslation = [];
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|giris|kayit|sunlar|bizim|hizmet|iletisim|hakkimizda)/i', $text);
}
foreach ($siteTranslations as $st) {
$translations = $st->translations ?? [];
$enVal = isset($translations['en']) ? trim($translations['en']) : '';
$trVal = isset($translations['tr']) ? trim($translations['tr']) : '';
$keyVal = trim($st->key);
// We check if either the key or the TR translation has Turkish and the EN translation is missing
$sourceVal = !empty($trVal) ? $trVal : $keyVal;
$needsTranslation = false;
if (empty($enVal)) {
if (hasTurkish($sourceVal)) {
$needsTranslation = true;
}
} else if ($enVal === $sourceVal && hasTurkish($sourceVal)) {
$needsTranslation = true;
}
if ($needsTranslation) {
$needingTranslation[] = [
'id' => $st->id,
'key' => $st->key,
'tr' => $sourceVal,
'en' => $enVal
];
}
}
file_put_contents(__DIR__.'/untranslated_site.json', json_encode($needingTranslation, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
echo "Found " . count($needingTranslation) . " untranslated site translations. Written to untranslated_site.json.\n";
-48
View File
@@ -1,48 +0,0 @@
<?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;
// Check if contains Turkish letters or is generally Turkish words
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) {
$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 ? $en->field_value : null;
$trVal = $t->field_value;
$needsTranslation = false;
if (empty($enVal)) {
$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.json', json_encode($untranslated, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
echo "Found " . count($untranslated) . " untranslated dynamic model translations. Written to untranslated_dynamic.json.\n";
-180
View File
@@ -1,180 +0,0 @@
<?php
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
use App\Models\SiteTranslation;
use App\Models\Translation;
use App\Models\Language;
echo "=== STARTING TRANSLATION PROCESS ===\n";
// Helper translation function using Google Translate single API
function translateToEnglish($text) {
if (empty($text) || is_numeric($text)) {
return $text;
}
// If it's a HTML tags only or empty paragraph, return as is
if (trim($text) === '<p></p>' || trim($text) === '') {
return $text;
}
$url = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=tr&tl=en&dt=t&q=" . urlencode($text);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36");
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$response = curl_exec($ch);
curl_close($ch);
if (!$response) {
return false;
}
$data = json_decode($response, true);
if (!isset($data[0])) {
return false;
}
$translated = "";
foreach ($data[0] as $sentence) {
$translated .= $sentence[0];
}
return $translated;
}
// Check for Turkish specific characters or common Turkish words
function isTurkishText($text) {
if (empty($text) || is_numeric($text)) return false;
return preg_match('/[ğüşıöçĞÜŞİÖÇ]/u', $text) || preg_match('/\b(ve|bir|bu|ne|de|da|icin|için|ile|en|ki|ise|mi|mu|sonra|olarak|gibi|daha|hakkinda|hakkımızda|giris|giriş|kayit|kayıt|bizim|hizmet|iletisim|iletişim|neden|neler|yapıyoruz|biz|seviyoruz|ekibimiz|abone|adınız|soyadınız|telefon|adres|teknoloji)\b/iu', $text);
}
// ----------------------------------------------------
// PHASE 1: Translate Dynamic Model Translations
// ----------------------------------------------------
echo "\n--- Phase 1: Translating Dynamic Model Translations ---\n";
$trTranslations = Translation::where('language_code', 'tr')->get();
$translatedModelsCount = 0;
foreach ($trTranslations as $t) {
$trVal = trim($t->field_value);
if ($trVal === '' || $trVal === '<p></p>' || $trVal === 'null') {
continue;
}
$enTranslation = 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 = $enTranslation ? trim($enTranslation->field_value) : '';
$needsTranslation = false;
if (empty($enVal) || $enVal === '<p></p>') {
$needsTranslation = true;
} else if ($enVal === $trVal && isTurkishText($trVal)) {
$needsTranslation = true;
}
// Specific exclusions or manual translations
if ($needsTranslation) {
echo "Translating [{$t->translatable_type} ID: {$t->translatable_id}] Field '{$t->field_name}'...\n";
// Manual override for some specific fields to ensure maximum quality
if ($t->translatable_type === 'App\\Models\\Page' && $t->translatable_id == 4 && $t->field_name === 'content') {
$translatedVal = '<p><img src="https://truncgil.com.tr/r.php?w=256&amp;p=file/Truncgil_Logo_2014.png" alt="Trunçgil Teknoloji"></p><hr><p></p><p><strong>Our Mission</strong><br>We work with all our might to create human-oriented, rational, simple, and aesthetic applications that make life easier.</p><p><strong>Our Vision</strong><br>The world\'s greatest country Turkey, and Turkey\'s greatest company Trunçgil!</p><p><strong>Our Values</strong></p><ul><li><p><strong>Integrity:</strong><br>&quot;No legacy is so rich as honesty.&quot;<br>Shakespeare</p></li><li><p><strong>Entrepreneurship:</strong><br>&quot;The real voyage of discovery consists not in seeking new landscapes, but in having new eyes.&quot;<br>M. Proust</p></li><li><p><strong>Responsibility:</strong><br>&quot;Self-responsibility means keeping the promises we make to ourselves as well as the promises we make to others.&quot; <br>Andre Gide</p></li><li><p><strong>Quality: </strong><br>&quot;If a man is called to be a street sweeper, he should sweep streets even as Michelangelo painted, or Beethoven composed music, or Shakespeare wrote poetry. He should sweep streets so well that all the hosts of heaven and earth will pause to say, \'Here lived a great street sweeper who did his job well.\'&quot;<br>Martin Luther King</p></li></ul>';
} else if ($t->translatable_type === 'App\\Models\\Page' && $t->translatable_id == 19 && $t->field_name === 'content') {
// Translate the Turkish helper text inside the otherwise English policy
$translatedVal = str_replace('(Lütfen kendi e-postanızı girin)', '(Please enter your own email)', $t->field_value);
} else {
$translatedVal = translateToEnglish($t->field_value);
usleep(150000); // 150ms delay
}
if ($translatedVal !== false) {
Translation::updateOrCreate(
[
'translatable_type' => $t->translatable_type,
'translatable_id' => $t->translatable_id,
'field_name' => $t->field_name,
'language_code' => 'en',
],
[
'field_value' => $translatedVal,
'status' => 'published',
'version' => $t->version,
'created_by' => $t->created_by,
'updated_by' => $t->updated_by,
'approved_by' => $t->approved_by,
'approved_at' => $t->approved_at,
'published_at' => $t->published_at,
]
);
echo "Successfully translated to: " . substr(strip_tags($translatedVal), 0, 50) . "...\n";
$translatedModelsCount++;
} else {
echo "Failed to translate [{$t->translatable_type} ID: {$t->translatable_id}] Field '{$t->field_name}' due to API error.\n";
}
}
}
echo "Phase 1 Completed. Total models translated/updated: {$translatedModelsCount}\n";
// ----------------------------------------------------
// PHASE 2: Translate Site Translations Table
// ----------------------------------------------------
echo "\n--- Phase 2: Translating Site Translations ---\n";
$siteTranslations = SiteTranslation::all();
$translatedSiteCount = 0;
$apiCallsCount = 0;
foreach ($siteTranslations as $st) {
$translations = $st->translations ?? [];
$enVal = isset($translations['en']) ? trim($translations['en']) : '';
$trVal = isset($translations['tr']) ? trim($translations['tr']) : '';
$keyVal = trim($st->key);
$sourceVal = !empty($trVal) ? $trVal : $keyVal;
$needsTranslation = false;
if (empty($enVal)) {
$needsTranslation = true;
} else if ($enVal === $sourceVal && isTurkishText($sourceVal)) {
$needsTranslation = true;
}
if ($needsTranslation) {
// Check if the source text is already in English
if (!isTurkishText($sourceVal)) {
// It's already in English! Populate the 'en' translation directly without calling the API
$translations['en'] = $sourceVal;
$st->translations = $translations;
$st->save();
$translatedSiteCount++;
echo "Skipped API for ID {$st->id}: Source is already in English: '" . substr($sourceVal, 0, 30) . "...'\n";
} else {
// It's in Turkish! Query Google Translate
echo "Translating Site Translation ID {$st->id}...\n";
$translatedVal = translateToEnglish($sourceVal);
$apiCallsCount++;
usleep(150000); // 150ms delay
if ($translatedVal !== false) {
// Remove trailing spaces or unwanted corrections
$translations['en'] = trim($translatedVal);
$st->translations = $translations;
$st->save();
$translatedSiteCount++;
echo "Translated ID {$st->id} from [{$sourceVal}] to [{$translatedVal}]\n";
} else {
echo "Failed to translate Site Translation ID {$st->id} due to API error.\n";
}
}
}
}
echo "Phase 2 Completed. Total site translations processed: {$translatedSiteCount} (API queries: {$apiCallsCount})\n";
echo "\n=== ALL TRANSLATIONS COMPLETED SUCCESSFULLY ===\n";
-32
View File
@@ -1,32 +0,0 @@
<?php
function translateText($text, $from = 'tr', $to = 'en') {
$url = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=" . $from . "&tl=" . $to . "&dt=t&q=" . urlencode($text);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36");
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$response = curl_exec($ch);
curl_close($ch);
if (!$response) {
return false;
}
$data = json_decode($response, true);
if (!isset($data[0])) {
return false;
}
$translated = "";
foreach ($data[0] as $sentence) {
$translated .= $sentence[0];
}
return $translated;
}
$test = translateText("Merhaba Dünya! Web Uygulamaları ve Nesnelerin İnterneti geliştirmekteyiz.");
echo "Original: Merhaba Dünya! Web Uygulamaları ve Nesnelerin İnterneti geliştirmekteyiz.\n";
echo "Translated: " . $test . "\n";
-95
View File
@@ -1,95 +0,0 @@
<?php
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
use App\Models\SiteTranslation;
use App\Models\Translation;
use App\Models\Language;
echo "=== Language Table ===\n";
foreach (Language::all() as $lang) {
echo "- {$lang->code}: {$lang->name} (Active: {$lang->is_active}, Default: {$lang->is_default})\n";
}
echo "\n=== Site Translations Table ===\n";
$siteTranslations = SiteTranslation::all();
$totalSite = $siteTranslations->count();
$missingEnSite = 0;
$missingEnKeys = [];
foreach ($siteTranslations as $st) {
$trans = $st->translations ?? [];
if (!isset($trans['en']) || empty($trans['en'])) {
$missingEnSite++;
if (count($missingEnKeys) < 10) {
$missingEnKeys[] = [
'id' => $st->id,
'key' => $st->key,
'translations' => $trans
];
}
}
}
echo "Total Site Translations: {$totalSite}\n";
echo "Missing 'en' translation in Site Translations: {$missingEnSite}\n";
if (!empty($missingEnKeys)) {
echo "Sample missing 'en' Site Translations:\n";
print_r($missingEnKeys);
}
echo "\n=== Translations Table ===\n";
$translations = Translation::all();
$totalTrans = $translations->count();
echo "Total translations: {$totalTrans}\n";
$trTranslations = Translation::where('language_code', 'tr')->get();
$enTranslations = Translation::where('language_code', 'en')->get();
echo "TR Translations count: " . $trTranslations->count() . "\n";
echo "EN Translations count: " . $enTranslations->count() . "\n";
// Find translatable models that have TR but missing EN
$trByModel = [];
foreach ($trTranslations as $t) {
$key = "{$t->translatable_type}:{$t->translatable_id}:{$t->field_name}";
$trByModel[$key] = $t;
}
$enByModel = [];
foreach ($enTranslations as $t) {
$key = "{$t->translatable_type}:{$t->translatable_id}:{$t->field_name}";
$enByModel[$key] = $t;
}
$missingEnTranslations = [];
foreach ($trByModel as $key => $t) {
if (!isset($enByModel[$key])) {
$missingEnTranslations[] = [
'key' => $key,
'tr_value' => $t->field_value
];
} else {
// Also check if EN value is identical to TR value and might need translation
$enVal = $enByModel[$key]->field_value;
if ($enVal === $t->field_value && preg_match('/[a-zA-ZğüşıöçĞÜŞİÖÇ]/', $t->field_value)) {
// Check if it's identical
$identicalEnTranslations[] = [
'key' => $key,
'value' => $t->field_value
];
}
}
}
echo "Missing 'en' translations: " . count($missingEnTranslations) . "\n";
if (!empty($missingEnTranslations)) {
echo "Sample missing EN translations:\n";
print_r(array_slice($missingEnTranslations, 0, 10));
}
echo "Identical TR and EN translations (possible untranslated): " . count($identicalEnTranslations ?? []) . "\n";
if (!empty($identicalEnTranslations)) {
echo "Sample identical translations:\n";
print_r(array_slice($identicalEnTranslations, 0, 10));
}
-714
View File
@@ -1,714 +0,0 @@
[
{
"id": 60,
"tr": "Nulla vitae elit libero, a pharetra augue. Donec id elit non mi porta gravida eget metus cras justo."
},
{
"id": 105,
"tr": "İnsan odaklı <br class=\"hidden md:block xl:!hidden lg:!hidden\"><span class=\"!text-[#e31e24] \">akılcı ve sade<\/span>"
},
{
"id": 106,
"tr": "Hayatı kolaylaştırabilecek uygulamaları insan odaklı, akılcı, sade ve estetik <br class=\"hidden md:block xl:!hidden lg:!hidden\"> bir biçimde gerçekleştirmek için var gücümüzle çalışıyoruz."
},
{
"id": 107,
"tr": "Ürün ve Hizmetlerimiz"
},
{
"id": 108,
"tr": "Neler Yapıyoruz?"
},
{
"id": 109,
"tr": "Şirket ihtiyaçlarınızı en iyi şekilde karşılamak için çeşitli hizmetler sunuyoruz."
},
{
"id": 110,
"tr": "Web Uygulamaları"
},
{
"id": 113,
"tr": "Web uygulamaları geliştirmek için gerekli olan tüm hizmetleri sunuyoruz."
},
{
"id": 115,
"tr": "Sosyal Etkileşim"
},
{
"id": 116,
"tr": "Sosyal etkileşime dayalı ."
},
{
"id": 117,
"tr": "Uygulama Geliştirme"
},
{
"id": 118,
"tr": "Android, iOS, MacOS, Windows uygulamaları geliştiriyoruz."
},
{
"id": 119,
"tr": "Bizi Neden Tercih Etmelisiniz"
},
{
"id": 120,
"tr": "Siz değerli müşterilerimizin bizi tercih etmesinin yalnızca birkaç nedeni."
},
{
"id": 121,
"tr": "Yaratıcılık"
},
{
"id": 122,
"tr": "Seçkin içeriklerle daima fark yaratan fikirler."
},
{
"id": 123,
"tr": "Yenilikçi Düşünce"
},
{
"id": 124,
"tr": "Geleceği hedefleyen modern ve özgün yaklaşımlar."
},
{
"id": 125,
"tr": "Hızlı Çözümler"
},
{
"id": 126,
"tr": "İhtiyaç anında anında sunulan pratik cevaplar."
},
{
"id": 127,
"tr": "Üst Düzey Destek"
},
{
"id": 128,
"tr": "Her adımda yanınızda olan kusursuz bir hizmet."
},
{
"id": 129,
"tr": "Çözümlerimiz"
},
{
"id": 130,
"tr": "Siz sadece işinize odaklanın, biz dijital dönüşüm süreçlerinizi yönetelim.\nTeknoloji ve yazılım odaklı bir güç olarak, işletmenizin dijital çağa tam uyum sağlaması için uçtan uca inovatif çözümler geliştiriyoruz. İhtiyaçlarınıza özel yazılım mimarileri ve modern altyapılar kurarak, manuel süreçlerinizi tam otomatik ve verimli sistemlere dönüştürüyoruz. Sektörel tecrübemizle markanızın teknolojik dönüşümünü gerçekleştirirken, sürdürülebilir başarı ve ölçeklenebilir büyüme için en ileri yazılım teknolojilerini işinizin merkezine yerleştiriyoruz."
},
{
"id": 131,
"tr": "Müşteri Memnuniyeti"
},
{
"id": 132,
"tr": "Verimlilik artışı"
},
{
"id": 133,
"tr": "Mutlu Müşteriler"
},
{
"id": 134,
"tr": "Sadece bizim sözümüze güvenmeyin, müşterilerimizin hakkımızda söylediklerini görün."
},
{
"id": 135,
"tr": "Dijital dönüşüm yolculuğumuzda yanımızda oldukları için mutluyuz. Profesyonel yaklaşımları ve çözüm odaklı çalışmaları ile projelerimize değer kattılar."
},
{
"id": 136,
"tr": "Eğitim teknolojileri alanındaki vizyoner bakış açıları ve teknik altyapı konusundaki uzmanlıkları sayesinde hedeflediğimiz kitleye çok daha etkili bir şekilde ulaştık."
},
{
"id": 137,
"tr": "Akademik yayıncılık süreçlerimizi dijitalleştirirken sundukları yenilikçi çözümler ve hızlı destekleri için teşekkür ederiz. Güvenilir bir iş ortağı."
},
{
"id": 138,
"tr": "Hadi Konuşalım"
},
{
"id": 139,
"tr": "Birlikte harika bir şey yapalım. 5000den fazla müşteri tarafından güveniliyor ve tercih ediliyoruz."
},
{
"id": 140,
"tr": "Hedef kitlenize ulaşmak ve işletmenize güç katmak için sizinle birlikte çalışmaya hazırız. Dijital dönüşüm yolculuğunuzda güvenilir bir iş ortağı arıyorsanız, doğru adrestesiniz."
},
{
"id": 141,
"tr": "Bize Katılın"
},
{
"id": 142,
"tr": "Birlikte harika bir şey yapalım. 600den fazla müşteri tarafından güveniliyor ve tercih ediliyoruz."
},
{
"id": 146,
"tr": "Adres bilgisi yakında"
},
{
"id": 147,
"tr": "İstanbul, Türkiye"
},
{
"id": 148,
"tr": "ÇAMTEPE MAH. MAHMUT TEVFİK ATAY BUL. \nGAZİANTEP TEKNOPARK NO: 4A \nİÇ KAPI NO: 1 ŞAHİNBEY \/ GAZİANTEP"
},
{
"id": 149,
"tr": "Telefon"
},
{
"id": 155,
"tr": "İşletmenizin ihtiyaçlarını biz karşılarken siz arkanıza yaslanın ve rahatlayın."
},
{
"id": 156,
"tr": "Web Tasarım"
},
{
"id": 157,
"tr": "İşinizi bir üst seviyeye taşıyacak özgün ve modern web tasarımları üretiyoruz."
},
{
"id": 158,
"tr": "Detaylı Bilgi"
},
{
"id": 159,
"tr": "Mobil Tasarım"
},
{
"id": 160,
"tr": "Mobil cihazlara uygun yenilikçi ve kullanıcı dostu tasarımlar geliştiriyoruz."
},
{
"id": 161,
"tr": "Ne Yapıyoruz?"
},
{
"id": 162,
"tr": "Sunduğumuz tüm hizmetler, iş gereksinimlerinizi en iyi şekilde karşılamak için özel olarak tasarlandı."
},
{
"id": 163,
"tr": "Ekibimiz, markanız için uçtan uca dijital çözümler sunar. Akıllı teknolojiler ve kullanıcı deneyimini ön planda tutarak, işinize değer katıyoruz."
},
{
"id": 164,
"tr": "Daha Fazla Detay"
},
{
"id": 165,
"tr": "Müzik Prodüksiyon"
},
{
"id": 166,
"tr": "Müzik prodüksiyonu, film müzikleri, kurumsal müzik çalışmaları ve benzeri alanlarda hizmet veriyoruz."
},
{
"id": 169,
"tr": "Bize Ulaşın"
},
{
"id": 171,
"tr": "Adınız"
},
{
"id": 172,
"tr": "Lütfen adınızı giriniz."
},
{
"id": 173,
"tr": "Soyadınız"
},
{
"id": 174,
"tr": "Lütfen soyadınızı giriniz."
},
{
"id": 175,
"tr": "Lütfen geçerli bir e-posta adresi giriniz."
},
{
"id": 176,
"tr": "Departman Seçiniz"
},
{
"id": 177,
"tr": "Satış"
},
{
"id": 178,
"tr": "Markaşlık"
},
{
"id": 179,
"tr": "Müşteri Desteği"
},
{
"id": 180,
"tr": "Lütfen bir departman seçiniz."
},
{
"id": 181,
"tr": "Mesajınız"
},
{
"id": 182,
"tr": "Lütfen mesajınızı giriniz."
},
{
"id": 185,
"tr": "Mesaj Gönder"
},
{
"id": 186,
"tr": "Bu alanlar zorunludur."
},
{
"id": 187,
"tr": "600+ müşterimize güveniyoruz. Şimdi onlarla birlikte işinizi büyütün."
},
{
"id": 189,
"tr": "Memnuniyetli Müşteriler"
},
{
"id": 190,
"tr": "Uzman Çalışanlar"
},
{
"id": 191,
"tr": "Trunçgil Teknoloji"
},
{
"id": 192,
"tr": "Tüm hakları saklıdır."
},
{
"id": 193,
"tr": "Daha Fazla Bilgi"
},
{
"id": 194,
"tr": "Hakkımızda"
},
{
"id": 197,
"tr": "Kullanım Koşulları"
},
{
"id": 198,
"tr": "Gizlilik Politikası"
},
{
"id": 200,
"tr": "Yeniliklerden haberdar olmak için bize e-posta adresinizi bırakın."
},
{
"id": 202,
"tr": "Abone Ol"
},
{
"id": 204,
"tr": "Daha Fazla Oku"
},
{
"id": 206,
"tr": "insan odaklı"
},
{
"id": 208,
"tr": "Neden Trunçgil?"
},
{
"id": 209,
"tr": "Müşterilerimizin Trunçgil'i tercih etmesinin birkaç"
},
{
"id": 213,
"tr": "Fikirlerinizi toplar ve organize ederiz, süreçleri yönetiriz."
},
{
"id": 215,
"tr": "Verilerinizi analiz eder ve anlamlı sonuçlar çıkarırız."
},
{
"id": 216,
"tr": "Ürünü Tamamla"
},
{
"id": 217,
"tr": "Ürününüzü son haline getirir ve teslim ederiz."
},
{
"id": 218,
"tr": "Projeleriniz için en yaratıcı fikirleri topluyor ve organize ediyoruz. Müşterilerimizle yakın iş birliği içinde çalışarak, ihtiyaçlarınızı anlıyor ve en uygun çözümleri geliştiriyoruz. Deneyimli ekibimiz, her projeye özel yaklaşımlarla süreçleri yönetiyor ve başarılı sonuçlar elde ediyor."
},
{
"id": 219,
"tr": "Yaratıcı fikirler toplama ve analiz etme."
},
{
"id": 220,
"tr": "Müşteri ihtiyaçlarını anlama ve çözüm geliştirme."
},
{
"id": 221,
"tr": "Profesyonel ekip ile süreç yönetimi ve takip."
},
{
"id": 222,
"tr": "Kurumsal verilerinizi derinlemesine analiz ediyor ve anlamlı içgörüler çıkarıyoruz. Modern analitik araçlarımız ve uzman ekibimiz sayesinde, iş süreçlerinizi optimize edebilir ve karar verme süreçlerinizi güçlendirebilirsiniz. Verilerinizden maksimum değeri elde etmenizi sağlıyoruz."
},
{
"id": 223,
"tr": "Derinlemesine veri analizi ve raporlama."
},
{
"id": 224,
"tr": "İş süreçlerini optimize etme ve iyileştirme."
},
{
"id": 225,
"tr": "Stratejik karar verme için içgörü sağlama."
},
{
"id": 226,
"tr": "Geliştirme sürecinin son aşamasında, ürününüzü mükemmel hale getiriyor ve teslim ediyoruz. Kalite kontrolünden kullanıcı testlerine, dokümantasyondan eğitime kadar tüm detayları eksiksiz bir şekilde tamamlıyoruz. Müşterilerimizin memnuniyeti bizim önceliğimizdir."
},
{
"id": 227,
"tr": "Kapsamlı kalite kontrolü ve test süreçleri."
},
{
"id": 228,
"tr": "Detaylı dokümantasyon ve kullanıcı eğitimi."
},
{
"id": 229,
"tr": "Zamanında teslimat ve sürekli destek hizmeti."
},
{
"id": 230,
"tr": "Sık Sorulan Sorular"
},
{
"id": 231,
"tr": "Bizi müşterilerimizden dinleyin."
},
{
"id": 233,
"tr": "kolaylaştıran"
},
{
"id": 234,
"tr": "çözümler"
},
{
"id": 235,
"tr": "İnovatif Çözümler"
},
{
"id": 236,
"tr": "En son teknolojileri kullanarak, işinize değer katacak çözümler sunuyoruz. Modern yaklaşımlarla projelerinizi hayata geçiriyoruz."
},
{
"id": 238,
"tr": "Deneyimli ve uzman ekibimizle, projelerinizi en iyi şekilde tamamlıyoruz. Her adımda yanınızdayız."
},
{
"id": 259,
"tr": "Faaliyet Alanlarımız"
},
{
"id": 261,
"tr": "Yaptıklarımız"
},
{
"id": 265,
"tr": "Nesnelerin İnterneti"
},
{
"id": 266,
"tr": "yalnızca parmaklarınızın ucunda"
},
{
"id": 267,
"tr": "TRUNÇGİL YALNIZCA"
},
{
"id": 270,
"tr": "KOLAYLAŞTIRAN"
},
{
"id": 271,
"tr": "ÇÖZÜMLER"
},
{
"id": 273,
"tr": "NESNELERİN İNTERNETİ"
},
{
"id": 275,
"tr": "Durmadan Çalışıyor"
},
{
"id": 276,
"tr": "Koşar Adımlarla"
},
{
"id": 277,
"tr": "Durmadan Çalışıyoruz"
},
{
"id": 278,
"tr": "Trunçgil'i Keşfet"
},
{
"id": 303,
"tr": "neler-yapariz.image_alt"
},
{
"id": 312,
"tr": "neler-yapariz.gallery.image_1_alt"
},
{
"id": 313,
"tr": "neler-yapariz.gallery.image_2_alt"
},
{
"id": 314,
"tr": "neler-yapariz.gallery.image_3_alt"
},
{
"id": 315,
"tr": "neler-yapariz.gallery.image_4_alt"
},
{
"id": 320,
"tr": "neler-yapariz.what_we_do.highlight"
},
{
"id": 321,
"tr": "neler-yapariz.what_we_do.description_end"
},
{
"id": 322,
"tr": "Kitaplarımız"
},
{
"id": 323,
"tr": "Geleceği şekillendiren teknolojileri, uzman kalemlerden derinlemesine öğrenin."
},
{
"id": 324,
"tr": "İncele & Satın Al"
},
{
"id": 325,
"tr": "Sorularınız için bizimle iletişime geçin."
},
{
"id": 326,
"tr": "Müşteri görüşleri yakında burada olacak."
},
{
"id": 327,
"tr": "Logolarımız"
},
{
"id": 329,
"tr": "Trunçgil, kelime anlamıyla birçok kelimenin birleşmesinden meydana gelmektedir. Dikkat ederseniz \"turunçgil\" tabirinden farklı olarak baştaki \"T\" ile \"r\" arasında \"u\" harfi yoktur. Bunun sebebi \"Türkiye Cumhuriyeti\"nin ulusal kısaltması olan \"Tr\" yi nitelemektedir."
},
{
"id": 330,
"tr": "\"r\" harfini kapattığınızda Trunçgil'in kurucusu olan Ümit Tunç'un soy ismi \"Tunç\" kelimesi oluşmaktadır. \"gil\" tabiri Türkçe'de aile, ekosistem kavramını, Osmanlıca'da su ile bulanmış toprak anlamını taşıyan \"kil\" tabirini ortaya çıkartmaktadır. Kelimenin toplamına baktığımızda okunuş itibariyle \"turunçgil\" turuncuyu yani dinamizmi simgelemektedir. Aynı zamanda İngilizce'de budamak, kesmek anlamına gelen \"truncate\" kelimesini de çağrıştırmaktadır. Detaylı olarak bu kelimelerin logo üzerindeki anlamlarını açıklayalım."
},
{
"id": 331,
"tr": "TR: Önce Türkiye, Öncü Türkiye"
},
{
"id": 332,
"tr": "Yaptığımız ve yapacağımız bütün işlerin güzel yurdumuz olan Türkiye'ye adadığımızı, baştan taahhüt etmekteyiz."
},
{
"id": 333,
"tr": "Tunç: Dayanıklılık ve Güç"
},
{
"id": 334,
"tr": "Ayakkabı tamiri yapan atamızın çekiç ve örs aletleri tunçtan yapılmıştı. 1934'de yayınlanan soy ismi kanununda bu sebeple Tunç soyadını almışız. Tunç madeninin kullanım alanları çok dayanıklı araç ve gereçlerin yapımına sebep olmuştur. Dayanıklı araç ve gereçlerin dışında nispeten çok ince emek isteyen mücevher, takı ve süs aksesuarlarında da kullanılmıştır. Güçlü silahlar, değerli eşyalar ve süs eşyaları yapımında tunç madeninden oldukça faydalanılmıştır."
},
{
"id": 335,
"tr": "Bundan dolayıdır ki yapacağımız tüm işler tunç madeni kadar dayanıklı, tunç kadar ince emek isteyen işlerden oluşmasıdır."
},
{
"id": 336,
"tr": "Gil: Aile, ekosistem \/ kil yarı mamulü"
},
{
"id": 337,
"tr": "Toplumun en küçük birimi olan sosyal yapıyı niteleyen aile kavramını bütünsel yapılanma ve yapmış olduğumuz tüm ürünlerin bir ailenin ferdi olarak nitelendirdiğimizi belirtmek isteriz."
},
{
"id": 338,
"tr": "Osmanlıcadaki \"gil\" kelimesinin anlamı, sulanmış toprak olan \"kil\" hamur gibi işlenen ve bir ürün ortaya çıkartmak için kullanılan yarı mamulünü niteler. Dolayısıyla \"gil\", sistemde değişikliğe gidebilecek olduğumuzu, yapılan bir işi farklı bir işe kolay evirebileceğimizi nitelemektedir."
},
{
"id": 339,
"tr": "Truncate: Verimlilik için budamak"
},
{
"id": 340,
"tr": "Transact SQL dilinde de kullanılan \"Truncate\" deyimi budamak, kesmek anlamına gelmektedir. Budama aynı zamanda botanikte de bitkinin daha verimli olabilmesini, daha sağlıklı gelişebilmesini sağlamak amacıyla yapılan, fazla veya istenmeyen dalların kesilmesini sağlayan bir eylemdir."
},
{
"id": 341,
"tr": "Dolayısıyla \"truncate\" bizim nezdimizde yalın kodu, basitliğin en güzel gelişmişlik olduğunu betimlemektedir."
},
{
"id": 342,
"tr": "Logo Varyasyonlarımız"
},
{
"id": 343,
"tr": "Logoların Kullanımı Hakkında"
},
{
"id": 344,
"tr": "Trunçgil logoları, markanın bütünlüğünü korumak adına oranları bozulmadan ve renk paletine sadık kalınarak kullanılmalıdır. SVG formatındaki dosyalar yüksek kalitede baskı için uygundur."
},
{
"id": 346,
"tr": "İndir"
},
{
"id": 347,
"tr": "Görüntüle"
},
{
"id": 350,
"tr": "Müşteri Görüşleri"
},
{
"id": 351,
"tr": "Bizi müşterilerimizden dinleyin. Birlikte yazdığımız başarı hikayeleri."
},
{
"id": 352,
"tr": "Henüz bir müşteri görüşü eklenmemiş."
},
{
"id": 353,
"tr": "ÇÖZÜM ORTAKLARIMIZ"
},
{
"id": 354,
"tr": "Online Ödeme"
},
{
"id": 355,
"tr": "256-Bit SSL Güvenli Ödeme"
},
{
"id": 356,
"tr": "Kredi kartınızla hızlı, kolay ve güvenli ödeme yapın."
},
{
"id": 358,
"tr": "Adınızı Giriniz"
},
{
"id": 359,
"tr": "Soyadınızı Giriniz"
},
{
"id": 362,
"tr": "Telefon Numarası"
},
{
"id": 363,
"tr": "Telefon Numaranızı Giriniz"
},
{
"id": 364,
"tr": "Ödeme Açıklaması \/ Not"
},
{
"id": 366,
"tr": "<a href=\"#\" class=\"text-orange-600 hover:text-orange-700 font-medium\">Mesafeli Satış Sözleşmesi<\/a>'ni okudum, onaylıyorum."
},
{
"id": 367,
"tr": "Ödeme Tutarı"
},
{
"id": 369,
"tr": "Komisyonsuz İşlem"
},
{
"id": 370,
"tr": "3D Secure ile Maksimum Güvenlik"
},
{
"id": 371,
"tr": "ÖDEMEYİ TAMAMLA"
},
{
"id": 372,
"tr": "Lütfen Bilgileri Kontrol Ediniz"
},
{
"id": 373,
"tr": "Kart ile Ödeme"
},
{
"id": 375,
"tr": "Kart Üzerindeki Ad Soyad"
},
{
"id": 377,
"tr": "Mesafeli Satış Sözleşmesi"
},
{
"id": 378,
"tr": "'ni okudum, onaylıyorum."
},
{
"id": 380,
"tr": "Ödeme Yap"
},
{
"id": 382,
"tr": "Okudum, Onaylıyorum"
},
{
"id": 383,
"tr": "Özellikler"
},
{
"id": 384,
"tr": "deneyiminizi mükemmelleştirmek için buradayız."
},
{
"id": 385,
"tr": "Gizlilik Politikası - Privacy Policy"
},
{
"id": 386,
"tr": "Mobil uygulamalarımız için genel kullanım ve gizlilik koşulları."
},
{
"id": 387,
"tr": "Son Güncelleme"
},
{
"id": 388,
"tr": "Bölümler"
}
]
-562
View File
@@ -1,562 +0,0 @@
[
{
"type": "App\\Models\\Page",
"id": 1,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 1,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 1,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 7,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 7,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 7,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 8,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 8,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 8,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 9,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 9,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 9,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Product",
"id": 1,
"field": "title",
"tr": "Image Editor",
"en": "Image Editor"
},
{
"type": "App\\Models\\Product",
"id": 5,
"field": "title",
"tr": "LibroLog",
"en": "LibroLog"
},
{
"type": "App\\Models\\Page",
"id": 10,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 10,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 10,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 2,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 2,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 2,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 5,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 5,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 5,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 11,
"field": "title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 11,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 11,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 11,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 12,
"field": "title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 12,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 12,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 12,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 13,
"field": "title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 13,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 13,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 13,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 4,
"field": "title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 4,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 4,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 4,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 14,
"field": "title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 14,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 14,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 14,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 15,
"field": "title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 15,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 15,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 15,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 16,
"field": "title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 16,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 16,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 16,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Blog",
"id": 1,
"field": "title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Blog",
"id": 1,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Blog",
"id": 1,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Blog",
"id": 1,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 17,
"field": "title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 17,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 17,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 17,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 6,
"field": "title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 6,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 6,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 6,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Blog",
"id": 2,
"field": "title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Blog",
"id": 2,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Blog",
"id": 2,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Blog",
"id": 2,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 18,
"field": "title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 18,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 18,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 18,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 3,
"field": "title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 3,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 3,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 3,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 19,
"field": "title",
"tr": "Privacy Policy for Stellar Construction",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 19,
"field": "excerpt",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 19,
"field": "meta_title",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 19,
"field": "meta_description",
"tr": "",
"en": ""
},
{
"type": "App\\Models\\Product",
"id": 3,
"field": "title",
"tr": "Yazılım Danışmanlığı",
"en": "Yazılım Danışmanlığı"
}
]
-44
View File
@@ -1,44 +0,0 @@
[
{
"type": "App\\Models\\Product",
"id": 1,
"field": "title",
"tr": "Image Editor",
"en": "Image Editor"
},
{
"type": "App\\Models\\Product",
"id": 5,
"field": "title",
"tr": "LibroLog",
"en": "LibroLog"
},
{
"type": "App\\Models\\Page",
"id": 4,
"field": "content",
"tr": "<p><img src=\"https:\/\/truncgil.com.tr\/r.php?w=256&amp;p=file\/Truncgil_Logo_2014.png\" alt=\"Trun&ccedil;gil Teknoloji\"><\/p><hr><p><\/p><p><strong>Hayat Amacımız (Misyon)<\/strong><br>Hayatı kolaylaştırabilecek uygulamaları insan odaklı, akılcı, sade ve estetik bir biçimde gerçekleştirmek için var gücümüzle çalışıyoruz.<\/p><p><strong>Gelecek Hayalimiz (Vizyon)<\/strong><br>Dünyanın en büyük ülkesi Türkiye, Türkiyenin de en büyük şirketi Trunçgil!<\/p><p><strong>Değerlerimiz<\/strong><\/p><ul><li><p><strong>Dürüstlük:<\/strong><br>&quot;Hiçbir miras, doğruluk kadar zengin değildir.&quot;<br>Shakeaspeare<\/p><\/li><li><p><strong>Girişimcilik:<\/strong><br>&quot;Yeni bir keşif için yeni yerler değil yeni gözler gerekir.&quot;<br>M. Proust<\/p><\/li><li><p><strong>Sorumluluk:<\/strong><br>&quot;Öz sorumluluk, başkalarına verdiğimiz sözlerin yanı sıra, kendimize verdiğimiz sözleri de yerine getirmek demektir.&quot; <br>Andre Gide<\/p><\/li><li><p><strong>Kalite: <\/strong><br>&quot;Sizden sokakları süpürmeniz isteniyorsa; Beethoven&#039;in beste yaptığı gibi süpürün... Shakespeare&#039;in şiir yazdığı gibi süpürün... Michael Angelo&#039;un resim yaptığı gibi süpürün... Öyle bir süpürün ki uçan ve yürüyen herkes ve her şey dursun; burada dünyanın en iyi çöpçüsü çalışıyormuş desin...&quot;<br>Martin Luther King<\/p><\/li><\/ul>",
"en": "<p><\/p>"
},
{
"type": "App\\Models\\Page",
"id": 19,
"field": "title",
"tr": "Privacy Policy for Stellar Construction",
"en": ""
},
{
"type": "App\\Models\\Page",
"id": 19,
"field": "content",
"tr": "<h2>Privacy Policy for Stellar Construction<\/h2><p><strong>Last Updated:<\/strong> April 9, 2026<\/p><p>Stellar Construction (&quot;we,&quot; &quot;our,&quot; or &quot;us&quot;) is committed to protecting your privacy. This Privacy Policy explains how your information is collected, used, and disclosed by Stellar Construction.<\/p><p>By using our application, you signify that you have read, understood, and agree to our collection, storage, use, and disclosure of your personal information as described in this Privacy Policy.<\/p><p>## 1. Information We Collect<\/p><p>We may collect the following types of information:<\/p><p>- <strong>Personal Information:<\/strong> Name, email address, and professional details when you create an account.<\/p><p>- <strong>Project Data:<\/strong> Construction logs, weld logs, NDT requests, and project drawings uploaded or managed within the app.<\/p><p>- <strong>Device Information:<\/strong> Information about the device you use to access the app (model, OS version).<\/p><p>## 2. How We Use Your Information<\/p><p>We use the information we collect to:<\/p><p>- Provide, operate, and maintain the Stellar Construction platform.<\/p><p>- Manage user accounts and authentication.<\/p><p>- Facilitate project management and quality control processes.<\/p><p>- Improve our application and user experience.<\/p><p>- Respond to support requests or inquiries.<\/p><p>## 3. Data Storage and Security<\/p><p>We implement a variety of security measures to maintain the safety of your personal information. Your project data is stored on secure servers and access is restricted to authorized users only. However, no method of transmission over the Internet or electronic storage is 100% secure.<\/p><p>## 4. Third-Party Services<\/p><p>We may use third-party service providers (such as hosting services or analytics) to help us operate our application. These third parties have access to your information only to perform specific tasks on our behalf and are obligated not to disclose or use it for any other purpose.<\/p><p>## 5. Data Deletion and Rights<\/p><p>You have the right to:<\/p><p>- Access the personal data we hold about you.<\/p><p>- Request the correction of inaccurate data.<\/p><p>- Request the deletion of your account and associated data.<\/p><p>To exercise these rights, please contact us via the email provided below.<\/p><p>## 6. Children&#039;s Privacy<\/p><p>Our application is not intended for use by children under the age of 13. We do not knowingly collect personal information from children.<\/p><p>## 7. Changes to This Privacy Policy<\/p><p>We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page and updating the &quot;Last Updated&quot; date.<\/p><p>## 8. Contact Us<\/p><p>If you have any questions about this Privacy Policy, please contact us:<\/p><p>- <strong>Email:<\/strong> <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"mailto:support@stellarconstruction.com\">support@stellarconstruction.com<\/a> <em>(Lütfen kendi e-postanızı girin)<\/em><\/p><p>- <strong>Developer:<\/strong> Ümit Tunç<\/p><p><\/p>",
"en": "<p><\/p>"
},
{
"type": "App\\Models\\Product",
"id": 3,
"field": "title",
"tr": "Yazılım Danışmanlığı",
"en": "Yazılım Danışmanlığı"
}
]
File diff suppressed because it is too large Load Diff