v2.5.2
Giriş yap

Php'de dil değiştirdiğimde mevcut sayfada kalması

ender
885 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Kullanıcının dil bağlantısını tıklayarak geçerli sayfayı değiştirmeden dil değiştirebilmesini istiyorum.

Aşağıdaki gibi bir kod buldum. Çalışıyor, ancak sayfa adları farklı olduğu için şöyle bir hata alıyorum:
Örneğin: "../en/about.php" sayfasındayken dili değiştirdiğimde, "../tr/about.php" sayfasına gidiyor. Gitmesi gereken sayfa "../tr/hakkimizda.php".

Bu sorunu nasıl çözebilirim?

PHP

<?php
$path = trim($_SERVER['REQUEST_URI'],'/');

$lang = explode('/',$path)[0];

$langs = [

'en'=>preg_replace("/$lang/",'../en',$path,1),
'tr'=>preg_replace("/$lang/",'../tr',$path,1),

];
?>

HTML

<ul>

<li>
   <a href="<?= $langs['tr']?>">Türkçe</a>
</li>

</ul>

Cevap yaz
Cevaplar (5)
aydinkeskin
1426 gün önce

neden öyle yapıyorsun ki.

dili sessionda tut
eğer session tr ise atıyorum haber ekliyorsun bir sutun da dil ekle tabloya.
listelerkende session dil değerine göre listelet varsayılan ı da tr yap

bütün içerikleri tek tabloya ekletmiş olursun listelemedede sorunun kalmaz.
hepsi session da tutacağı içinde bir sayfa değişimde bir sorun yaşamazsın.
eklerkende session dil değeri atıyorum tr ise dil sütünuna tr ekler en ise en ekler
işin daha kolay olur.

ender
1426 gün önce

Arkadaşlar sorunu javascirpt yazarak çözdüm:

<a class="nav-link" href="#" id="LangRedirect">English</a>

Javascript:
$(function(){

$("#LangRedirect").click(function(){
var lang,en,tr;
    lang=window.location.pathname;
    en="/en/";
    tr="/tr/";
switch (lang){
     // About
    case en+"about.php": location.assign(tr+"hakkimizda.php");
    break;
    case tr+"hakkimizda.php": location.assign(en+"about.php");
    break;
    default: window.location.pathname=(en+"404.php");
}});

});

konya
1435 gün önce
ekimnet
1436 gün önce

neden url değiştiriyorsunki aynı sayfadaki tüm içeriği title dahil değiştir

pcmemo
1438 gün önce

Ben olsam dosya adını her dil için aynı tutardım. Örneğin about.php içerikk dili değişken olsun, tarayıcı diline göre dili otomatik göster. İsteyen değiştirsin. Değişen dili cookie ye yaz tarayıcıdan farklı bir dil seçmişse eğer.