laravel-telescope-tr maintained by lvntrdev
lvntrdev/laravel-telescope-tr
Laravel Telescope arayüzü için Türkçe çeviri katmanı. Vendor dizinine dokunmaz,
composer update laravel/telescope çeviriyi bozmaz.
Neden bu şekilde
Telescope'un ekranları vendor içinde derlenmiş bir Vue bundle'ıdır
(vendor/laravel/telescope/public/app.js) ve i18n desteği yoktur; metinler
kaynağa gömülüdür. Bu yüzden çeviri iki parçadan oluşur:
layout.blade.phpoverride'ı — sidebar menüsü, üst bar buton başlıkları velang="tr". Blade tarafında olduğu için doğrudan Türkçe render edilir.- Render sonrası DOM çeviri katmanı (
partials/i18n-tr.blade.php) — Vue bundle'ının ürettiği metinler: ekran başlıkları, tablo başlıkları, detay tablosu etiketleri, sekmeler, butonlar ve boş durum metinleri. Sözlük tabanlı,MutationObserverile çalışır.
Horizon'dan farkı — kapsam kısıtı
laravel-horizon-tr düz bir tam-eşleşme sözlüğü kullanır. Telescope'ta bu
yaklaşım yanlış çeviri üretir: ekranların çoğu kullanıcı verisidir — SQL,
log mesajı, exception stack trace, mail HTML'i, model sınıf adı, dump çıktısı,
etiket. Status adlı bir cache anahtarı veya içinde Failed geçen bir log
satırı da çevrilirdi.
Bu yüzden çeviri yalnızca arayüz iskeletinde (chrome) çalışır. Bir metin düğümü, ancak aşağıdaki elemanlardan birine ait olduğunda çevrilir:
| Kapsam | Ne çevirir |
|---|---|
.nav-link |
Sidebar menüsü, detay sekmeleri, ilgili kayıt sekmeleri |
.card-header, .modal-header |
Ekran ve modal başlıkları |
th |
Tablo başlıkları |
td.table-fit.text-muted:not([data-timeago]) |
Detay tablosunun etiket sütunu |
.btn, .control-action |
Butonlar ve satır/detay aksiyon linkleri |
div.card-bg-secondary, .disabled-watcher |
Boş durum, yükleniyor, "watcher kapalı" metinleri |
.badge-sm, .badge-secondary.ml-2 |
Yalnız toplu iş durum rozetleri ve Queued |
label, option, title attribute'ları |
Form etiketleri, tooltip'ler |
Şunlar her koşulda kapsam dışıdır: pre, code, textarea, .code-bg,
[class*="hljs"], .CodeMirror. Tablo hücresi içeriği ve detay panelleri de
kapsam dışıdır — çeviri oralara hiç bakmaz.
Gereksinimler
| Bileşen | Sürüm |
|---|---|
| PHP | ^8.2 |
Laravel (illuminate/support) |
^11.0 | ^12.0 | ^13.0 |
laravel/telescope |
^5.0 (v5.24.0 ile doğrulandı) |
Kurulum
composer require lvntrdev/laravel-telescope-tr
Paket auto-discovery ile devreye girer — publish, config veya .env ayarı
gerekmez. Telescope kurulu değilse provider sessizce hiçbir şey yapmaz.
composer.json'a repository ekleyin:
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/lvntrdev/laravel-telescope-tr"
}
]
}
Sonra:
composer require lvntrdev/laravel-telescope-tr:dev-main
Doğrulama
/telescope adresini açın. Sidebar İstekler · Komutlar · Zamanlanmış Görevler · İşler … şeklinde görünüyorsa katman devrededir.
Provider'ın keşfedildiğini görmek için:
php artisan package:discover
# Discovered Package: lvntrdev/laravel-telescope-tr
Provider sınıfı: LvntrDev\TelescopeTr\TelescopeTrServiceProvider.
Özelleştirme
Sözlüğü veya layout'u projeye özel değiştirmek için view'ları publish edin:
php artisan vendor:publish --tag=telescope-tr
Dosyalar resources/views/vendor/telescope/ altına kopyalanır:
resources/views/vendor/telescope/
├── layout.blade.php
└── partials/
└── i18n-tr.blade.php
View çözümleme sırası: uygulama override'ı → bu paket → Telescope vendor. Yani publish edilen dosyalar paketten gelenlerin önüne geçer.
Sözlüğe kelime ekleme
partials/i18n-tr.blade.php içindeki EXACT sözlüğüne satır ekleyin:
var EXACT = {
'Requests': 'İstekler',
'Exit Code': 'Çıkış Kodu',
// ...
};
Anahtar, Telescope'un ürettiği İngilizce metnin birebir aynısı olmalıdır.
Metin kapsam dışı bir elemanda duruyorsa sözlüğe eklemek yetmez; ALLOW
listesine o elemanı da tanıtmanız gerekir — bunu yaparken seçicinin kullanıcı
verisi taşıyan hücrelere uzanmadığından emin olun.
Kapsam testi
Kapsam güvencesi (chrome çevrilir, kullanıcı verisi çevrilmez) test altındadır. Telescope sürüm yükselttikten sonra çalıştırın:
npm install && npm test
tests/ ve package.json yalnız geliştirme içindir; Composer paketine dahil
edilmez (.gitattributes → export-ignore).
Sınırlar
Happenedsütunundaki göreli zaman (5m ago) veri hücresindedir, kapsam dışıdır; İngilizce kalır.- "Kayıtları Temizle" butonunun onayı native
confirm()diyaloğudur; DOM'da metin düğümü olmadığı için çevrilemez. - Teknik terimler bilinçli olarak İngilizce bırakıldı:
Mailable,Middleware,Payload,Stacktrace,URI,Model,View,Composer,Redis,CC,BCC,ID. - Çeviri istemci tarafında render sonrası uygulanır; çok kısa bir an için İngilizce metin görülebilir.
- Telescope major sürüm yükseltmesi yeni metinler getirebilir; sözlüğe
eklenmeleri gerekir.
layout.blade.phpoverride'ı da Telescope'un kendi layout'uyla karşılaştırılmalıdır.
Değişiklikler
Sürüm geçmişi: CHANGELOG.md
Lisans
MIT.