Forum Gündemi:


Konu Başlığı : PHP Ile Basit Bir Çoklu Dil Sistemi

*
Bu konu; tarihinde açılmış olup, 0 defa yorumlanmıştır.
Konu Sahibi : oxcakmak
Konuyu Değerlendir
  • 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
Çevrimdışı
Back-End Developer
******
105
mesajlar
82
konular
0
(Ticaret Puanı: )
Aug 2019
(Kayıt Tarihi)
#1
12-15-2020, 02:53 AM
Bazı siteler, bu tür sitelerde sadece İngilizce konuşulan dilden daha fazlasına hitap eder, çok dilli içeriğe ihtiyaç vardır, desteklemek istediğiniz her dil için farklı siteler oluşturabilirsiniz, ancak bu web sitenizi yönetilemez hale getirebilir.

Daha iyi veya en basit bir yol olarak dil dosyalarının tüm site içeriğinin dil dosyalarında saklanmasını sağlamak ve ardından talep üzerine ilgili dili kullanmaktır.

Dil sistemi örneği için yandaki bağlantıya tıklayın: [Linkleri yalnızca üyeler görüntüleyebilir.Sizde aramıza katılmak ister misiniz? Üye Olmak İçin Buraya Tıklayın.]

Bu eğitim size tam olarak bunu nasıl yapacağınızı gösterecek ve çok basit bir şekilde dil dosyaları oluşturacak ve istek üzerine belirli bir dili çağıracaktır.

İlk önce bu klasörde 'lang' adlı bir klasör oluşturun, orada tüm diller saklanacak. Lang klasöründe her dil için bir tane yeni bir dosya oluşturun, örneğin ingilizce için en_EN.php, fransızca için fr_FR.php, almanca de_DE.php vb.

Dil değiştirici için, anında tanınabilir lang kullanmaya karar verdim, lang adlı bir klasör oluşturdum ve kullanacağım dil için bir dosyam var.

[Linkleri yalnızca üyeler görüntüleyebilir.Sizde aramıza katılmak ister misiniz? Üye Olmak İçin Buraya Tıklayın.]

Dil değiştiriciyi kullanmak istediğiniz sayfada (benim durumumda index.php) aşağıdaki kodu doctype'ın üzerine yerleştirin:
Kod:
<code class="language-php">session_start();
if($_GET['la']){
    $_SESSION['la'] = $_GET['la'];
    header('Location:'.$_SERVER['PHP_SELF']);
    exit();
}

switch($_SESSION['la']){
case "en":
    require('lang/en_EN.php');
break;
case "fr":
    require('lang/fr_FR.php');
break;
case "de":
    require('lang/de_DE.php');
break;
default:
    require('lang/tr_TR.php');
}</code>

Bu, oturumları session_start() açar ve ardından bir if ifadesi gerçekleştirilir, eğer $_GET['la'], get değişkeni la'nın istendiği anlamına gelirse, onu la oturumuna ekler ve ardından sayfayı yeniden yükler.

Daha sonra, la oturumuna bakan bir switch ifadesi gerçekleştirilir, eğer hiçbiri eşleşmezse, istenen dil dosyasına yükleyeceği durumlardan birine eşitse, varsayılan bir dil dosyası yüklenecektir. La oturumu 'en' içeriyorsa, ingilizce dili yüklenecektir.

Bu dil dosyaları, yüklendikten sonra sayfanın içeriğini içerir. Bu, bir $ lang dizisine başvurarak ve ardından hangi bölümün istendiğini belirleyerek çalışır.

Örneğin php'deki sayfa başlığı için lang dizisi adını veriyoruz ve sonra peşinde olduğumuz şeyin indeks başlığı bölümünü belirtiyoruz.
Kod:
<title><?php echo $lang['index-title'];?></title>

Dizin başlığı, dil dosyası içindeki bir dizi öğesini ifade eder, burada ingilizce dil dosyasının tüm içeriği bulunmaktadır.
Kod:
<code class="language-php">//english lang

//nav
$lang['lang-en'] = 'English';
$lang['lang-fr'] = 'French';
$lang['lang-de'] = 'German';
$lang['lang-tr'] = 'Turkish';

//index
$lang['index-title'] = 'Language Demo';
$lang['index-welcome'] = 'Welcome to the language demo';
$lang['index-text-1'] = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.";
$lang['demo'] = 'Return to the tutorial';</code>

Gördüğünüz gibi $lang['index-title'] = 'Dil Demosu'; sayfa başlığını bir Fransızca dosyasında saklar ve bu şekilde kolayca birden çok dile sahip olabilirsiniz.

Tek bir dil dosyasında aynı adı iki kez kullanmadığınız sürece, dizinin dil bölümlerini nasıl ön eklediğiniz önemli değildir, öğelerin amaçlandıkları sayfanın önüne eklemeyi tercih ederim, bu nedenle dizin ve ardından $lang['index-welcome'] gibi bu şeyleri takip etmeyi çok daha kolay hale getirir.

Bu yüzden, dili değiştirin, yeni bir dili kolayca çağırabilmemiz için bir yola ihtiyacımız var ve daha önce söylediğim gibi, farklı dilleri temsil etmek için bayrakları kullanmayı seçtim. Her dil için bir bağlantı oluşturuyorum, bağlantı yolu index.php'ye bağlanıyor, ardından istenen dili bağlantıya ?la=eng Fransızca kullanım için ?la=fr bağlantının içinde alt ve başlık etiketleri için bayraklar, dilden içerik alma çağrılarıdır, bu nedenle görüntüler herhangi bir nedenle gösterilemezse, kullanıcı hangi bağlantının hangi dili temsil ettiğini yine de bilecektir.

Kaynak: [Linkleri yalnızca üyeler görüntüleyebilir.Sizde aramıza katılmak ister misiniz? Üye Olmak İçin Buraya Tıklayın.]
Etiketler: php çoklu dil desteğini, çoklu dil desteği, php çoklu dil sistemi, çoklu dil sistemi
[Linkleri yalnızca üyeler görüntüleyebilir.Sizde aramıza katılmak ister misiniz? Üye Olmak İçin Buraya Tıklayın.]


Bu Konudaki Mesajlar
PHP Ile Basit Bir Çoklu Dil Sistemi - tarafından oxcakmak - 12-15-2020, 02:53 AM

Foruma Git:


Görüntüleyenler: 1 Ziyaretçi