mgsmus hocam ben şunu anlamadım
.__('services').
bunu nereden alacağım ve bu diyelim ingilizcede services türkçede hizmetler olmasını nereden anlayacak nereye yazayım yani çevirileri
mgsmus hocam ben şunu anlamadım
.__('services').
bunu nereden alacağım ve bu diyelim ingilizcede services türkçede hizmetler olmasını nereden anlayacak nereye yazayım yani çevirileri
mgsmus yani
lang/en/services.php
<?php
return [
'services' => 'Services',
];
resources/lang/tr/services.php
<?php
return [
'services' => 'Hizmetler',
];
Sonra
Route::get('{lang}/'.__('services').'/{slug}', ServiceController::class);
dediğimde değişen dile göre bana route çevirisini vericek öyle mi
aghabalaguluzade Evet. Json dil dosyası da kullanabilirsiniz, yöntem hepsine bakıyor.
mgsmus teşekkür ederim hocam
Konuyu hortlatmış gibi oalcam ama.
Route::get(__('home'),[HomeController::class,'index'])->name('home');
yukardaki routue translate çalışıyor ama dil olarak config/app içindeki locale değeri alıyor.
middleware de Config::set('app.locale','tr'); olarak değiştirmeyi denedim ama olmadı yardımcı olabilirmisiniz.
gsahin App::setLocale('tr');
şeklinde dil değişiyor. https://laravel.com/docs/11.x/localization
mgsmus Ben sorunu tam olarak anlatamadım kusurabakmayın.
Middleware de App::setLocale('tr'); bu şekilde yapıyorum. Olmadı
Sitede çeviri işlemleri çalışıyor bunda sıkıntı yok.
rout ta kullanmak istediğimde çeviri çalışıyor ama Config/App locel değerini alıyor.
bende middlewarede config set ile değiştirmeyi denedim oda olmadı.
Üstüne Config::set('app.locale','tr'); yaptım ama app.php dosyasında ilk tanımlı olan local değerini alıyor.
app.php de local değerini değiştirdiğimde çeviri de değişiyor. yani ordaki değeri aldığına eminim.
Config set ile locelı tr atadığımda değişiyor onuda baktım.
Config/app deki locale tr yapınca route da tr çeviri çalışıyor.
Config/app deki locale en yapınca route da en çeviri çalışıyor.
ama manuel yapıyorum middlewarede yaptığımı algılamıyor.
Kusura bakamyin detayli yazmaya çalıştım. tekrar yazayım normel translate çalışıyor sadece route da çalışmıyor. sanki middleware route dan sonra çalışıyor gibi.
gsahin Şöyle bir durum var, siz dinamik değil statik bir rota kullanıyorsunuz, sadece dile göre değişiyor. Diyelim ki tr, en ve de şeklinde 3 tane dil var ama siz mevcut dil ne ise ona sadece rota tanımlamış oluyorsunuz. Mesela dili segmentten alıyorsanız şunun gibi bir şey yapmanız lazım:
foreach (['tr', 'en', 'de'] as $locale) {
Route::prefix($locale)
->get(__('home', [], $locale), [HomeController::class, 'index'])
->name('home');
}
ya da middleware kullanmadan
$locale = request()->segment(1);
if (!in_array($locale, ['tr', 'en', 'de'])) {
$locale = 'tr';
}
app()->setLocale($locale);
Route::prefix($locale)
->get(__('home'), [HomeController::class, 'index'])
->name('home');
Benim ıstediğim pek mümkün değil galiba. Route dan önce kullanıcının dil bilgisini almam gerekiyor ama alamıyorum.
Auth::user() route dosyasinda gelmiyor.
Dil değerini kullanıcıya göre almaya çalışıyorum bunun bir yolu varsa sevinirim.
gsahin auth user alabilmek için kullanicinin giriş yapmış olması gerekiyor normalde ama middleware araya girdiği için bu bilgiye erisemezsin ama bir yolu var elbette erismenin fonksiyon middleware içinde çalışabilir md kontrolü bitince fn çalışır bu sayede giriş yapmış kullanıcının bilgilerine erişebilirsiniz https://youtu.be/az0FolROdE8?si=D62-J1t5xFXU6rkJ