Php'de dil değiştirdiğimde mevcut sayfada kalması
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>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (5)
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.
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");
}});
});
http://www.ibrahimay.net/script/google-site-dil-cevirici-web-translate-v1/ bu kaynak oldukça güzel ve kullanışlı