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

Yandex Mail Uygulaması Nasıl Kullanılır? Avantajları Nelerdir?
Yazılım Personel Takviyesi Hindistan: İstihdam Gecikmeleri Olmadan Geliştirme Takımlarını Ölçeklendirme
400 Satırlık Import Kontrolcülerden 20 Satırlık Konfigürasyonlara Laravel’de
Laravel API Öğrenimi: Problemlerden Çözümlere!
Laravel Forge için Açık Kaynak Alternatifi Geliştirdik – İşte Nedenleri
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

Akıllı Ev Endüstrisi Matter İçin Neden Hala Bahis Oynuyor?
Liste
Bambu Lab A2L 3D Yazıcı İncelemesi: A1’in Gelişimi
Donanım
Jujutsu Legacy Dünyasında Yeni Kodlarla Sürprizler Seni Bekliyor
Oyun
Acil: GPT-5.6 Sol’un Kısıtlı Erişimi ve Güçlü Siber Önlemleri
Siber Güvenlik
Yeni En İyi Akıllı Hoparlör Olabilir Mi?
Liste
DeleteMe Gerçekten Bilgilerinizi İnternetten Silinmesini Sağlıyor Mu?
Genel
//

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?