PHP Çoklu Dil Yapısı Oluşturma

PHP Çoklu Dil Yapısı Oluşturma

Hepinize merhaba dostlarım 😊. Uzun ve soluklu geçen bir haftanın ardından gelen pazar gününü güzel değerlendirmek adına yine karşınızdayım. Artık siz de biliyorsunuz her pazar günü yazıların geldiğini 😅.

Bu yazımda aslında hepinizin özellikle de backend developerların kullanmasında fayda sağlayan (özellikle global çapta) bir yapıdan bahsedeceğim. Bu yapı var ya bu yapı hemen hemen her zaman karşınıza çıkan ve sizi daha doğrusu yazılım macerasına yeni başlamış dostlarımın son derece yararına sebep olacak bir yapıdır.

Şimdi aklınızda beliren soruyu tahmin ediyorum 😅

Hocam çok merakta kaldık nedir bu yapı. Her zaman karşımıza çıkan onlarca yapı var 😅

aklıma gelen soru bu ki ben seziyorum artık okuyucularımın fikirlerini. O halde sözümü fazla uzatmadan hemen alt başlık açıp bu makalenin konusunu ve buna neden ihtiyaç duyduğumuzu anlatacağım 😊

Çoklu Dil Yapısı Nedir ? Neden Kullanılır ?

Eveeeet dostlarım artık merak etmekten bir hal olduğunuzu anladım ve konumuza girişi yavaştan yaptım 😊. Artık daha fazla konuyu uzatmadan çoklu dil yapısını anlatma vaktimin geldiği açık ve net bir şekilde ortada 😊

Dostlarım çoklu dil yapısına bakacak olursak aslında hepimizin bildiği üzere web sitemizin global çapta da değer görmesi için birden fazla dil içermesidir.

Örnek verecek olursak bir makale yayınlayacağınız site yaptınız varsayalım. Ama bunu sadece Türkiye den erişen okuyucular değil diğer ülkelerden de erişen kullanıcılara yayınlama durumunuz olacak diyelim. İşte bu durumda çoklu dil yapısını kullanmamız bizim son derece yararımıza olacaktır.

Çoklu dil yapısı nedir ve neden kullanılır başlığını açıkladığımıza göre dostlarım şimdi gelelim bu yapının nasıl oluşturulduğuna 😊. Hemen hızlıca bunun kodlamasını gerçekleştirelim

Çoklu Dil Yapımızı Yazalım

Eveeet artık gelelim dostlarım çoklu dil yapımızı yazma işlemine. Her şeyden önce dostlarım ilk dil tablomuzu yazalım. Ben örnek olarak bir dil tablosu oluşturdum. Bunu siz kendi isteğinize göre özelleştirebilirsiniz. Hemen tabloo yapısını size vereyim

şeklinde dil tablosunu oluşturduk dostlarım. Bu kısma kadar tamamız. Şimdi ise içerik gireceğimiz tabloyu ayarlayalım. Ben örnek olarak konular tablosu yaptım. Sadece tek tablo olarak düşünmeyin yeri gelecek sizin farklı farklı tablolarınız olacak. O tablolarda da bu yapıyı gönül rahatlığıyla kullanabilirsiniz. Hemen size bu oluşturduğum konular tablosunun yapısını da vereyim

şeklinde içerik tablomuz kısmını ayarlayalım. Ben bunu örnek şekilde çoklu dil yapısıyla entegreli olarak çalışması şeklinde ayarladım.

Konular tablosunu da ayarladığımıza göre dostlarım gelelim artık kodlarımızı yazma işlemine.

Öncelikle baglan.php dosyası olusturalım ve kodlarımızı asagidaki gibi yazalım

<?php

ob_start();
session_start();

try {
    $db = new PDO("mysql:host=localhost; dbname=cokludil; charset=utf8;","root",12345678);
}catch (PDOException $e){
    echo $e->getMessage();
}


/** AALERT FONKSİYON **/
function alert($get)
{
    $data = [];
    switch ($get) {
        case $get == "bos" :
            {
                $data = [
                    "type" => "danger",
                    "text" => "Boş Alan Bırakmayınız"
                ];
            }
            break;
        case $get == "yes" :
            {
                $data = [
                    "type" => "success",
                    "text" => "İşlem Başarılı"
                ];
            }
            break;
        case $get == "no" :
            {
                $data = [
                    "type" => "danger",
                    "text" => "İşlem Başarısız"
                ];
            }
            break;
    }

    return $data;
}

şeklinde dosyamızı oluşturduk. Daha sonrasında ise bir index.php dosyası açalım ve içerisini aşağıdaki kodlarla dolduralım

<?php
require 'baglan.php';

if (!isset($_SESSION['lang'])) {
    $varsayilan_dil = "tr";
} else {
    $varsayilan_dil = $_SESSION['lang'];
}

// ICERIKLERI CEKELIM
$icerikler = $db->prepare("SELECT * FROM konular WHERE dil_kod=:dil_kod");
$icerikler->execute(array(
    ":dil_kod" => $varsayilan_dil
));
$icerik_cek = $icerikler->fetchAll(PDO::FETCH_ASSOC);


// DILLERI CEKELIM
$diller = $db->prepare("SELECT * FROM diller");
$diller->execute();
$dil_cek = $diller->fetchAll(PDO::FETCH_ASSOC);
?>

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"
          integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">

    <title>PHP Çoklu Dil Yapısı | MFSoftware Blog</title>

    <!-- DATATABLE CSS -->
    <link rel="stylesheet" href="//cdn.datatables.net/1.11.3/css/jquery.dataTables.min.css">
</head>
<body>

<div class="container">

    <div class="col-md-12 text-center mt-3">
        <h4>Aktif Dil: <font style="color: red;"><?= strtoupper($varsayilan_dil) ?></font></h4>
    </div>

    <div class="row">
        <div class="col-md-6">
            <div class="card mt-5">
                <div class="card-body">


                    <?php if (isset($_GET['durum'])) {
                        $data = alert($_GET['durum']);
                        ?>
                        <div class="col-md-12 alert alert-<?= $data['type'] ?> text-center">
                            <?= $data['text']; ?>
                        </div>
                    <?php } ?>

                    <form action="islem.php" method="POST">
                        <label for="">Konu Başlığı Giriniz</label>
                        <input type="text" class="form-control" name="baslik">
                        <br>
                        <label for="">İçerik</label>
                        <input type="text" class="form-control" name="icerik">
                        <br>
                        <button type="submit" name="konu_kaydet" class="btn btn-success btn-sm"> Kaydet</button>
                    </form>
                </div>
            </div>
        </div>
        <div class="col-md-6">
            <div class="card mt-5">
                <div class="card-body">
                    <form action="islem.php" method="POST">
                        <label for="">Dil Seçimi</label>
                        <select name="dil" class="form-control mt-2">
                            <?php if (!empty($dil_cek)) { ?>
                                <?php foreach ($dil_cek as $dil) { ?>
                                    <option value="<?= $dil['dil_kod'] ?>" <?= ($dil['dil_kod']==$varsayilan_dil) ? 'selected' : '' ?>><?= $dil['dil_ad'] ?></option>
                                <?php } ?>
                            <?php } ?>
                        </select>
                        <br>
                        <button type="submit" name="dil_kaydet" class="btn btn-success btn-sm"> Dil Değiştir</button>
                    </form>
                </div>
            </div>
        </div>

        <div class="col-md-12 mt-5">
            <table id="konular" class="display">
                <thead>
                <tr>
                    <th>ID</th>
                    <th>Konu Başlık</th>
                    <th>Konu İçerik</th>
                    <th>Dil</th>
                </tr>
                </thead>
                <tbody>
                <?php if (empty($icerik_cek)) { ?>
                    <tr>
                        <div class="col-md-12">
                            Herhangi bir içerik bulunamadı
                        </div>
                    </tr>
                <?php } else { ?>
                    <?php foreach ($icerik_cek as $_icerik) { ?>
                        <tr>
                            <td><?= $_icerik['id']; ?></td>
                            <td><?= $_icerik['baslik']; ?></td>
                            <td><?= $_icerik['icerik']; ?></td>
                            <td><?= strtoupper($_icerik['dil_kod']); ?></td>
                        </tr>
                    <?php } ?>
                <?php } ?>
                </tbody>
            </table>
        </div>
    </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p"
        crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk="
        crossorigin="anonymous"></script>

<!-- DATATBLE JS -->
<script src="//cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
<script>
    $(document).ready(function () {
        $('#konular').DataTable();
    });
</script>
</body>
</html>

şeklinde index.php dosyamızı da oluşturduk. Gelelim sırada islem.php dosyamızı oluşturmaya. Hemen onun kodlarını da aşağıya yazalım

<?php
require 'baglan.php';

/*** KONU KAYDETME KISMI **/
if (isset($_POST['konu_kaydet'])) {
    $baslik = $_POST['baslik'];
    $icerik = $_POST['icerik'];

    if ($baslik == "" || $icerik == "") {
        header("Location: index.php?durum=bos");
    } else {
        $ekle = $db->prepare("INSERT INTO konular SET baslik=:baslik,icerik=:icerik,dil_kod=:dil_kod");
        $insert =  $ekle->execute(array(
            ":baslik" => $baslik,
            ":icerik" => $icerik,
            ":dil_kod" => (isset($_SESSION['lang'])) ? $_SESSION['lang'] : 'tr'
        ));

        if ($insert){
            header("Location: index.php?durum=yes");
        }else{
            header("Location: index.php?durum=no");
        }
    }
}

/** DİL DEĞİŞTİRME KISMI **/
if (isset($_POST['dil_kaydet'])){
    $dil = $_POST['dil'];
    $_SESSION['lang'] = $dil;

    header("Location: index.php");
}

şeklinde kodlarımızı yazdık dostlarım 😊. Bütün işlemler bu kadar basit.

 

Eveeeet dostlarım bu yazımda sizlere PHP programlama dili üzerinde Çoklu Dil Yapısı'ndan elimden geldiğince dilim döndüğünce anlatmaya çalıştım. Umarım faydalı olmuşumdur. Eksik veya hatalı bir anlatım yapmış isem benimle iletişime geçmekten çekinmeyin 😊. Konu başlarda biraz karmaşık veya zor gelmiş olabilir dostlarım anlıyorum. Öğrenme sürecinde bu ve bunun gibi olayların olması son derece normaldir. Bu süreç içerisinde yapmanız gereken tek şey her yazımın altında da dediğim gibi "İstikrarlı ve Azimli Olmalı, Bolca Pratik Yapmalısınız 😊". Bu dediklerimi hayat felsefeniz yaptığınız sürece başarı sizler için kaçınılmaz olacaktır.

Ayrıca 25 Aralık 2021 tarihinde kurmuş olduğum Seyyar Yazılımcı üzerinde aklınıza takılan yazılım konuları olabilir, veya bir yazılımcı arkadaşımızın sorusuna cevap vermek yardımcı olmak gibi etkileşimlerde bulunabilirsiniz.

Unutmayın! Bilgi yardımlaştıkça ve paylaştıkça çoğalır 😊.

Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim 😊 

Muhammed Fatih BAĞCIVAN
Yazar Hakkında

Kendi Halinde Bir Backend Developer

Önceki YazıLaravel Eloquent ORM ile Veri Güncelleme
Sonraki YazıMFSoftware Blog 1 Yaşında
Yorumlar (0)
Bu Yazıya Ait Hiçbir Yorum Bulunamadı (veya admin onaylamadı). İlk Yorum Yapan Sen Ol
Yorum Yapabilirsiniz