• 04-07-2022, 01:17:40
    #1
    Çok dilli bir script yapıyorum, çoğu kısım tamam ama verileri seçilen dile göre çektiremiyorum.

    VT tablosu http://icecream.me/2565c7a7ab31ee74b30c3ce6c86a4abe bu şekilde

    $langdata = $db->prepare("SELECT * FROM translations WHERE lang_code=:lang_code");
    $langdata->execute(array('lang_code' => $_SESSION['lang']));
    $lg = $langdata->fetch(PDO::FETCH_ASSOC);
    
    if (isset($_GET['lang'])) {
        $lang = $_GET['lang'];
        $_SESSION['lang'] = $lang;
    
    
        if (empty($_SESSION['lang'])) {
            $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 3);
    
            if (isset($_SESSION['lang'])) {
                $lang = $_SESSION['lang'];
            } else {
                $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 3);
            }
        }
    
    }
    Kod ıse bu şekilde

    Burada verileri dil kodu ve text line göre çekebilirim.

    echo $lg['trans_text']; bu şekilde deniyorum mevcut olanı çeviritor ancak text numarasına göre çektirmem gerekiyor.

    Şimdiden teşekkür ederim
  • 04-07-2022, 01:41:01
    #2
    Text numarası tam olarak nedir hocam? VT de göremedim.
  • 04-07-2022, 01:43:00
    #3
    ASametYildirim adlı üyeden alıntı: mesajı görüntüle
    Text numarası tam olarak nedir hocam? VT de göremedim.


    Bu şekilde hocam vt

    sadece 1 kelime var test için ama artacak . deşişecek
  • 04-07-2022, 01:45:59
    #4
    TahaCan adlı üyeden alıntı: mesajı görüntüle
    Çok dilli bir script yapıyorum, çoğu kısım tamam ama verileri seçilen dile göre çektiremiyorum.

    VT tablosu http://icecream.me/2565c7a7ab31ee74b30c3ce6c86a4abe bu şekilde

    $langdata = $db->prepare("SELECT * FROM translations WHERE lang_code=:lang_code");
    $langdata->execute(array('lang_code' => $_SESSION['lang']));
    $lg = $langdata->fetch(PDO::FETCH_ASSOC);
    
    if (isset($_GET['lang'])) {
        $lang = $_GET['lang'];
        $_SESSION['lang'] = $lang;
    
    
        if (empty($_SESSION['lang'])) {
            $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 3);
    
            if (isset($_SESSION['lang'])) {
                $lang = $_SESSION['lang'];
            } else {
                $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 3);
            }
        }
    
    }
    Kod ıse bu şekilde

    Burada verileri dil kodu ve text line göre çekebilirim.

    echo $lg['trans_text']; bu şekilde deniyorum mevcut olanı çeviritor ancak text numarasına göre çektirmem gerekiyor.

    Şimdiden teşekkür ederim
    Açıkçası Soru nu tam olarak anlamadım fakat hata gördüğüm şu yerler var.

    $langdata = $db->prepare("SELECT * FROM translations WHERE lang_code=:lang_code");
    //Burada session değeri ile db den veri çekiyorsun.
    $langdata->execute(array('lang_code' => $_SESSION['lang']));
    $lg = $langdata->fetch(PDO::FETCH_ASSOC);
     //Burada ise URL den gelen lang değerini kontrol edip; session'u lang a eşitliyorsun. Bunu neden yaptığını anlamadım. Session lang değeri var zaten ki db den veri çekiyorsun.
    //Bu if kodu şöyle olması gerekiyor sanırım ya da yukardaki veritabanında session ile değilde URL den gelen lang ile sorgu yap. Örnek olması gereken kodu aşağıda bırakıyorum
    if (isset($_GET['lang'])) {
        $lang = $_GET['lang'];
        $_SESSION['lang'] = $lang;
     
     
        if (empty($_SESSION['lang'])) {
            $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 3);
     
            if (isset($_SESSION['lang'])) {
                $lang = $_SESSION['lang'];
            } else {
                $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 3);
            }
        }
     
    }


    if (isset($_GET['lang'])) {
    $langdata = $db->prepare("SELECT * FROM translations WHERE lang_code=:lang_code");
    //$langdata->execute(array('lang_code' => $_SESSION['lang']));
    $langdata->execute(array('lang_code' => $_GET['lang'] ));
    $lg = $langdata->fetch(PDO::FETCH_ASSOC);
    //if (isset($_GET['lang'])) {
        $lang = $_GET['lang'];
        $_SESSION['lang'] = $lang;
     
     
        if (empty($_SESSION['lang'])) {
            $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 3);
     
            if (isset($_SESSION['lang'])) {
                $lang = $_SESSION['lang'];
            } else {
                $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 3);
            }
        }
     
    }
  • 04-07-2022, 02:00:09
    #5
    Deneyeceğim hocam inşallah çalışır. Bu sorguyu sitedeki sabit alanlar için kullanacağım,
    Eğer daha doğru kod var ise onu da yazabilirsiniz, bu acemi işi karışık olabilir
  • 04-07-2022, 02:04:27
    #6
    Tam olarak yapmak istediğim, kod üzerinden gidersek
    Örneğin ;

    <?= $lg['text_1']; ?> gibi bir kod yazdığımda,
    Site dili İngilizce ise ingilizcesi , türkçe ise Türkçesi ya da diğer dilleri çekecek
  • 04-07-2022, 02:07:40
    #7
    TahaCan adlı üyeden alıntı: mesajı görüntüle
    Çok dilli bir script yapıyorum, çoğu kısım tamam ama verileri seçilen dile göre çektiremiyorum.

    VT tablosu http://icecream.me/2565c7a7ab31ee74b30c3ce6c86a4abe bu şekilde

    $langdata = $db->prepare("SELECT * FROM translations WHERE lang_code=:lang_code");
    $langdata->execute(array('lang_code' => $_SESSION['lang']));
    $lg = $langdata->fetch(PDO::FETCH_ASSOC);
    
    if (isset($_GET['lang'])) {
        $lang = $_GET['lang'];
        $_SESSION['lang'] = $lang;
    
    
        if (empty($_SESSION['lang'])) {
            $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 3);
    
            if (isset($_SESSION['lang'])) {
                $lang = $_SESSION['lang'];
            } else {
                $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 3);
            }
        }
    
    }
    Kod ıse bu şekilde

    Burada verileri dil kodu ve text line göre çekebilirim.

    echo $lg['trans_text']; bu şekilde deniyorum mevcut olanı çeviritor ancak text numarasına göre çektirmem gerekiyor.

    Şimdiden teşekkür ederim
    merhabalar, şuan için aklıma gelen anladığım kadarıyla senin istediğin belirlenen dil üzerinde farklı dillerde farklı session olarak atamak ve dile göre detay vermek
    function getTextTranslate($db, string $lang = null, string $textLine = null): ?string
    {
        // Return durumumuz string veya null olarak belirliyoruz
        if ($lang !== null) {
            // Language belirli ise direk alıyoruz
            $langdata = $db->prepare("SELECT * FROM translations WHERE lang_code=:lang_code AND text_line=:text_line");
            $langdata->execute(array('lang_code' => $lang, "text_line" => $textLine));
            $lg = $langdata->fetch(PDO::FETCH_ASSOC);
            if($lg !== null){
                return $lg->trans_text;
            }
            else {
                return null;
            }
        }
        else {
            // Dil Belirli değil ise
            if(isset($_SESSION['lang'])){
                // Session var ise daha önceden bu kısım alıyoruz
                $langMain = $_SESSION['lang'];
            }
            else {
                // Session Bu kısımda dolduruyoruz
                $langMain = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 3);
                $_SESSION['lang'] = $langMain;
            }
            return getTextTranslate($db, $lang = $langMain, $textLine = $textLine);
        }
    }
  • 04-07-2022, 11:50:51
    #8
    TahaCan adlı üyeden alıntı: mesajı görüntüle
    Deneyeceğim hocam inşallah çalışır. Bu sorguyu sitedeki sabit alanlar için kullanacağım,
    Eğer daha doğru kod var ise onu da yazabilirsiniz, bu acemi işi karışık olabilir
    Yukardaki örneğim çalışır senin için. Çalışmazsa WP Yaz halledelim.
  • 04-07-2022, 13:12:21
    #9
    Kodlarin her ikisi de çalışmadı malesef, ilgi ve cevaplarınız için teşekkür ederim