Ana içeriğe geç

Lokalizasyon Kılavuzu

Platform çok dilli desteğe sahiptir. Bu kılavuz, lokalizasyon sisteminin nasıl kullanılacağını açıklar.

Genel Bakış

Platform aşağıdaki lokalizasyon özelliklerini destekler:

  • 10+ Dil Desteği: Türkçe, İngilizce, Almanca, Fransızca, İspanyolca, İtalyanca, Rusça, Arapça, Çince, Japonca
  • Kullanıcı Dil Tercihi: Her kullanıcı kendi dil tercihini seçebilir
  • Otomatik Locale Uygulama: SetUserLocale middleware ile otomatik uygulanır
  • Çeviri Sistemi: Key-based çeviri sistemi ile dinamik çeviriler

Kullanıcı Dil Tercihi

Kullanıcı Ayarları

Kullanıcı dil tercihi UserSetting modelinde saklanır:

$user = User::find(1);
$settings = $user->setting;

$locale = $settings->locale; // 'tr', 'en', vb.
$timezone = $settings->timezone; // 'Europe/Istanbul', 'America/New_York', vb.

Locale Ayarlama

use App\Helpers\LocaleHelper;

// Kullanıcının dil tercihini uygula
LocaleHelper::setUserLocale($user);

// Kullanıcının saat dilimini uygula
LocaleHelper::setUserTimezone($user);

Çeviri Sistemi

TranslationHelper Kullanımı

use App\Helpers\TranslationHelper;

// Tek bir çeviri
$title = TranslationHelper::trans('pages.home');

// Parametreli çeviri
$message = TranslationHelper::trans('messages.welcome', ['name' => $userName]);

// Belirli bir dil için çeviri
$title = TranslationHelper::trans('pages.home', [], 'en');

// Grup çevirileri
$menuItems = TranslationHelper::getGroup('menu');

// Tüm çeviriler
$allTranslations = TranslationHelper::getAll();

Çeviri Anahtarları

Çeviri anahtarları {grup}.{kaynak}.{alan} formatında tutulmalıdır:

  • pages.home - Ana sayfa
  • menu.logout - Çıkış menüsü
  • auth.login - Giriş sayfası
  • messages.welcome - Hoş geldin mesajı

Tarih ve Saat Formatlama

LocaleHelper ile Formatlama

use App\Helpers\LocaleHelper;

// Tarih formatlama
$formattedDate = LocaleHelper::formatDate($date, $user);
// Örnek: "20/11/2025"

// Saat formatlama
$formattedTime = LocaleHelper::formatTime($time, $user);
// Örnek: "14:30"

// Tarih ve saat formatlama
$formattedDateTime = LocaleHelper::formatDateTime($datetime, $user);
// Örnek: "20/11/2025 14:30"

Desteklenen Formatlar

Tarih Formatları:

  • d/m/Y - 20/11/2025
  • Y-m-d - 2025-11-20
  • m/d/Y - 11/20/2025
  • d.m.Y - 20.11.2025

Saat Formatları:

  • H:i - 14:30
  • h:i A - 02:30 PM
  • H:i:s - 14:30:00

Middleware

SetUserLocale Middleware

Her API isteğinde kullanıcının dil ve saat dilimi tercihleri otomatik uygulanır:

// bootstrap/app.php içinde kayıtlı
$middleware->alias([
'locale.user' => \App\Http\Middleware\SetUserLocale::class,
]);

API Endpoint'leri

Kullanıcı Ayarları

  • GET /api/v1/user/settings - Kullanıcı ayarlarını görüntüle
  • PUT /api/v1/user/settings - Kullanıcı ayarlarını güncelle

Çeviriler

  • GET /api/v1/translations/{key} - Çeviri metnini getir
  • GET /api/v1/translations/group/{group} - Grup çevirilerini getir
  • GET /api/v1/translations - Tüm çevirileri getir

Diller

  • GET /api/v1/locales/{code} - Dil detayı
  • GET /api/v1/admin/locales - Dil listesi (Admin)

Cache

Çeviriler 24 saat cache'lenir (performans için). Cache temizleme:

// Belirli bir çeviri cache'ini temizle
TranslationHelper::clearCache('tr', 'pages.home');

// Belirli bir dil için tüm cache'leri temizle
TranslationHelper::clearCache('tr');

// Tüm çeviri cache'lerini temizle
TranslationHelper::clearCache();

İlgili Dokümantasyon