Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Laravel SaaS için Üretim Seviyesinde Çok Dilli Sistem Kurma (Inertia + Vue ile)
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Laravel SaaS için Üretim Seviyesinde Çok Dilli Sistem Kurma (Inertia + Vue ile)

Yazılım

Laravel SaaS için Üretim Seviyesinde Çok Dilli Sistem Kurma (Inertia + Vue ile)

teknomers
Son güncelleme: 30 Mart 2026 15:40
teknomers
Paylaş
Paylaş

Laravel ile Çok Dilli Uygulamaların Geliştirilmesi: Kapsamlı Rehber

Laravel, modern web uygulamaları için güçlü bir framework olup, çok dilli uygulama geliştirmek de bu gücün bir parçasıdır. Bu rehber, Laravel uygulamalarında çok dilli desteği sağlamak için kullanılabilecek temel mimari, kod yapıları ve en iyi uygulamaları detaylandıracaktır.

Contents
  • Problem
  • Mimari Genel Bakış
    • Backend: Yerelleştirme Tespit Zinciri
      • Kimliği Tamamlanmış Kullanıcılar için
      • Ziyaretçiler için
    • Diller Arası Geçiş
    • Çeviri Dosyaları Yapısı
    • Frontend: Laravel’den Vue’ye Inertia ile
      • Inertia Props ile Çeviri Paylaşımı
    • Vue i18n Ayarı
    • Bileşenlerde Çevirilerin Kullanımı
    • Test
  • Sonuç

Problem

Geliştiricilerin sıkça karşılaştığı bir sorun, çok dilli destek sağlayan bir uygulamanın nasıl olması gerektiğidir. Genellikle, Laravel uygulamaları bu durumu yalnızca __() yardımcı fonksiyonu ile çözme eğilimindedir. Ancak, gerçek bir SaaS uygulaması için ihtiyaçlar daha karmaşıktır:

  • Kullanıcının tercih ettiği dil, kullanıcı kaydolmadan önce nasıl tespit edilir?
  • Bu dil tercihi, oturumlar, cihazlar ve kimlik durumu boyunca nasıl saklanır?
  • JavaScript ön yüzüne çevirileri verimli bir şekilde nasıl iletebiliriz?
  • Sadece arayüz etiketleri değil, kullanıcı tarafından üretilen içerikler nasıl çevrilir?

Mimari Genel Bakış

Çok dilli uygulamanın mimarisi, SetLocale middleware’ı etrafında şekillenir.

plaintext
Request
|
v
SetLocale Middleware
|– Check user.locale (DB)
|– Check session
|– Check browser Accept-Language
|– Check IP geolocation (ip-api.com)
|– Fall back to default ‘en’
|
v
app()->setLocale($locale)
|
v
HandleInertiaRequests
|– Load lang/{locale}.json
|– Load lang/{locale}/*.php
|– Pass as Inertia shared props
|
v
Vue + vue-i18n
|– Global t() function
|– Language switcher component

Backend: Yerelleştirme Tespit Zinciri

Ana sistem, SetLocale middleware’ıdır. Bu, her istekte çalışır ve 5 aşamalı bir yedekleme zincirini kullanır.

Kimliği Tamamlanmış Kullanıcılar için

php
// app/Http/Middleware/SetLocale.php

public function handle(Request $request, Closure $next)
{
$locale = null;

if (auth()->check()) {
    // Step 1: User's saved preference
    $locale = auth()->user()->locale;

    // Step 2: Session
    if (!$locale) {
        $locale = session('locale');
    }

    // Step 3: Browser Accept-Language
    if (!$locale) {
        $locale = $this->detectFromBrowser($request);
    }

    // Step 4: IP Geolocation
    if (!$locale) {
        $locale = $this->detectFromIp($request->ip());
    }

    // Step 5: Default
    $locale = $locale ?: config('app.locale');

    // Persist
    auth()->user()->update(['locale' => $locale]);
    session(['locale' => $locale]);
}

app()->setLocale($locale);
return $next($request);

}

Ziyaretçiler için

Ziyaretçilerin tercihleri, çerezlerde saklanarak tespit edilir. Süreç:

  1. locale çerezi kontrol edilir (ilk tespitten sonra 10 yıl boyunca ayarlanır).
  2. Oturum
  3. Tarayıcı dil bilgisi
  4. IP coğrafyası
  5. Varsayılan

Diller Arası Geçiş

Dil değiştirme işlemi, basit bir kontrolör ile sağlanır:

php
// app/Http/Controllers/LanguageController.php

public function languageSwitch($locale = ‘en’)
{
if (array_key_exists($locale, config(‘app.available_languages’))) {
app()->setLocale($locale);
Session::put(‘locale’, $locale);

    if (auth()->check()) {
        auth()->user()->update(['locale' => $locale]);
    }

    Cookie::queue('locale', $locale, 525600); // 1 yıl
}

return redirect()->back();

}

Çeviri Dosyaları Yapısı

LaraFoundry, iki format kullanır:

JSON dosyaları arayüz dizeleri için:
plaintext
lang/
en.json -> {} (boş – İngilizce anahtarlar dizeleridir)
uk.json -> 1700+ anahtar-değer çifti
pl.json -> Lehce çeviriler
de.json -> Almanca çeviriler

PHP array dosyaları framework’e özgü dizeler için:
plaintext
lang/
en/
auth.php
validation.php
pagination.php
passwords.php
uk/
auth.php
validation.php

Frontend: Laravel’den Vue’ye Inertia ile

Inertia, her yanıtla birlikte çevirileri taşır. Ek API çağrısı veya lazy loading gerektirmez.

Inertia Props ile Çeviri Paylaşımı

php
// app/Http/Middleware/HandleInertiaRequests.php

public function share(Request $request): array
{
return [
‘locale’ => fn() => App::getLocale(),
‘translations’ => function() {
$locale = App::getLocale();
$data = [];

        // JSON çevirileri yükle
        $jsonPath = base_path("lang/{$locale}.json");
        if (File::exists($jsonPath)) {
            $data = array_merge($data, json_decode(File::get($jsonPath), true) ?? []);
        }

        // PHP array çevirilerini yükle
        $dir = base_path("lang/{$locale}/");
        if (File::exists($dir)) {
            foreach (File::files($dir) as $file) {
                $name = pathinfo($file, PATHINFO_FILENAME);
                $data[$name] = Lang::get($name);
            }
        }

        return $data;
    },
];

}

Vue i18n Ayarı

Inertia props’dan çeviriler alınarak vue-i18n başlatılır:

javascript
import { createI18n } from ‘vue-i18n’;

const locale = pageProps.locale || ‘en’;
const translations = pageProps.translations || {};

const i18n = createI18n({
legacy: false,
locale,
fallbackLocale: ‘en’,
messages: {

},

});

// Global t() – hiçbir yerde import gerekmez
app.config.globalProperties.t = (…args) => i18n.global.t(…args);
globalThis.t = (…args) => i18n.global.t(…args);

Bileşenlerde Çevirilerin Kullanımı

Bileşenlerde çeviriler şu şekilde kullanılabilir:

vue

{{ t(‘Dashboard’) }}
{{ t(‘Welcome back’) }}

Test

Çok dilli modül, kapsamlı test kapsama sahip olup Pest ile test edilir:

php
it(‘detects locale from user profile’, function () {
$user = User::factory()->create([‘locale’ => ‘uk’]);
actingAs($user)->get(‘/dashboard’)->assertOk();
expect(app()->getLocale())->toBe(‘uk’);
});

Sonuç

LaraFoundry’nin çok dilli desteği, SaaS uygulamaları için yeterince kapsamlıdır. Uygulama geliştirenlerin bu modülü kullanarak hem hızlı bir şekilde çok dillilik oluşturabilir hem de zaman kazanabilirler. Eğer Laravel, Inertia ve Vue ile bir SaaS uygulaması inşa ediyorsanız, bu modül ihtiyacınız olan her şeyi sunar.

Kaynak: Orijinal Makale

Laravel Uygulamanızı Yapay Zeka Ajanlarına Uygun Hale Getirme (2026 Tam Rehberi)
Veritabanı Dar Boğazlarını Önleyin: Laravel’de Redis Cache Etiketlerini Usta Çalışan Yapın
Android 11’in Çıkış Tarihi Sızdı
Filament Üzerinde Bir CMS Oluşturmaya Çalıştım — Bunun Yerine Ne Yapardım
Laravel + Vue (Inertia) + gRPC: gRPC Kullanıcı hizmetiyle iletişim kuran basit bir BFF geliştirme
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Lenovo’nun en iyi 2’si 1 arada OLED cihazında 1,100 $ indirim
Sonraki Makale Vivo X300 Ultra Telefonu Profesyonel Fotoğrafçılık İçin Tasarlandı

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Final Fantasy 7’de Bulut’u Kara Büyücüye Dönüştüren Yenilikçi Sistem
Oyun
Yenilenen Korku Hikayesi: Michael Myers Maskesi ve Bıçağını Buldu
Oyun
Kripto Para Piyasasında Sert Düşüş: Bitcoin ve Ether FTX Krizinden Beri En Kötü Haftayı Geçirdi
Finans
Laravel ile Çok Kiracılı Bir Bordro Motoru Geliştirirken Öğrendiklerimiz
Yazılım
Final Fantasy 7 Dünyasında Keşfedilecek 22 Yeni Ekran Görüntüsü
Oyun
RTX 3050 Ti mühendislik örneği fotoğraflarda ve testlerde göründü
Donanım
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?