PHP dinamik çoklu dil ve SEO nasıl yapılır?

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Onaylı Üye
Katılım
28 Ara 2019
Mesajlar
52
Tepki puanı
5
Ödüller
5
Yaş
26
6 HİZMET YILI
Merhaba, çoklu dil yapmak istiyorum. Daha öncesinden TR.php EN.php sayfaları yapıp bu sayfara define tanımlayıp session ile yaptım fakat benim değerlendirmeme göre bu SEO kısmında sıkıntılar çıkıyor. Bazı sitelerde
Bağlantıları görmek için lütfen Giriş Yap
veya wwww.xxx.com/tr/ gibi yapılara yönlendiriyorlar. Çoklu dil için nasıl bir yapı kullanmalıyım?
 
Moderatörün son düzenlenenleri:
Süper Üye
Katılım
30 Mar 2019
Mesajlar
661
Çözümler
7
Tepki puanı
107
Ödüller
7
7 HİZMET YILI
Eğer bir web sitesinin farklı dil versiyonlarını oluşturmak istiyorsanız, genellikle aşağıdaki yöntemlerden birini kullanabilirsiniz:

  1. Farklı dil versiyonlarını farklı URL'lerde barındırmak: Bu yöntemde, her dil için bir URL kullanılır. Örneğin, İngilizce dil versiyonu için
    Bağlantıları görmek için lütfen Giriş Yap
    kullanılabilir ve Türkçe dil versiyonu için
    Bağlantıları görmek için lütfen Giriş Yap
    kullanılabilir. Bu yöntem, arama motorları için uygun bir seçenektir, ancak ziyaretçilerin dil değiştirme işlemini yapmaları gerekebilir.
  2. Dil değiştirme seçeneklerini sayfa içinde göstermek: Bu yöntemde, dil değiştirme seçenekleri sayfa içinde gösterilir (örneğin, bir dil seçme menüsü olarak). Bu yöntem, ziyaretçiler için daha kullanışlı olabilir, ancak arama motorları için optimize edilememesi nedeniyle SEO performansını olumsuz etkileyebilir.
  3. Dil değiştirme seçeneklerini geçişler için URL parametresi olarak kullanmak: Bu yöntemde, dil değiştirme seçenekleri için URL parametresi kullanılır (örneğin,
    Bağlantıları görmek için lütfen Giriş Yap
    ). Bu yöntem, arama motorları için uygun değildir, ancak ziyaretçiler için daha kullanışlı olabilir.
Yaptığınız işlemin detaylarına göre en uygun yöntemi seçebilirsiniz. Örneğin, eğer web sitenizin farklı dil versiyonlarını arama motorları tarafından düzgün bir şekilde taranmasını istiyorsanız, ilk yöntemi tercih edebilirsiniz. Eğer ziyaretçilerin dil değiştirme işlemini rahatça yapabilmelerini istiyorsanız, ikinci yöntemi tercih edebilirsiniz.
 
Onaylı Üye
Katılım
28 Ara 2019
Mesajlar
52
Tepki puanı
5
Ödüller
5
Yaş
26
6 HİZMET YILI
Eğer bir web sitesinin farklı dil versiyonlarını oluşturmak istiyorsanız, genellikle aşağıdaki yöntemlerden birini kullanabilirsiniz:

  1. Farklı dil versiyonlarını farklı URL'lerde barındırmak: Bu yöntemde, her dil için bir URL kullanılır. Örneğin, İngilizce dil versiyonu için
    Bağlantıları görmek için lütfen Giriş Yap
    kullanılabilir ve Türkçe dil versiyonu için
    Bağlantıları görmek için lütfen Giriş Yap
    kullanılabilir. Bu yöntem, arama motorları için uygun bir seçenektir, ancak ziyaretçilerin dil değiştirme işlemini yapmaları gerekebilir.
  2. Dil değiştirme seçeneklerini sayfa içinde göstermek: Bu yöntemde, dil değiştirme seçenekleri sayfa içinde gösterilir (örneğin, bir dil seçme menüsü olarak). Bu yöntem, ziyaretçiler için daha kullanışlı olabilir, ancak arama motorları için optimize edilememesi nedeniyle SEO performansını olumsuz etkileyebilir.
  3. Dil değiştirme seçeneklerini geçişler için URL parametresi olarak kullanmak: Bu yöntemde, dil değiştirme seçenekleri için URL parametresi kullanılır (örneğin,
    Bağlantıları görmek için lütfen Giriş Yap
    ). Bu yöntem, arama motorları için uygun değildir, ancak ziyaretçiler için daha kullanışlı olabilir.
Yaptığınız işlemin detaylarına göre en uygun yöntemi seçebilirsiniz. Örneğin, eğer web sitenizin farklı dil versiyonlarını arama motorları tarafından düzgün bir şekilde taranmasını istiyorsanız, ilk yöntemi tercih edebilirsiniz. Eğer ziyaretçilerin dil değiştirme işlemini rahatça yapabilmelerini istiyorsanız, ikinci yöntemi tercih edebilirsiniz.
1. yöntem için sunucu dosyaları içerisinde /en/ ve /tr/ olarak klasörler açıp içerisine her ikisinde de aynı dosyaları koyacağım (index, hakkımızda, profil vs.) daha sonra /en/ içindeki dosyalarda veritabanından "en" sütunundakileri, /tr/ içindeki dosyalardan veritabanındaki "tr" sütunundaki verileri çekeceğim değil mi ?
 
Onaylı Üye
Katılım
10 Ara 2022
Mesajlar
63
Tepki puanı
3
Ödüller
1
Yaş
28
3 HİZMET YILI
Aşağıda ki kodları çevirinin gerçekleşeceği her sayfaya ekleyebilirsiniz. index.php açılış sayfası olduğunu varsayarak oraya eklediğinizi düşünelim.

<?php
session_start();
if (!$_SESSION["dil"]){
require("dil/tr.php");
}else {
require("dil/".$_SESSION["dil"].".php");
}
?>

Dil fonksiyonu​

Aşağıda ki kodları dil.php olarak kaydedelim. Aşağıdaki kod sitenizde iki adet dil olacağı varsayılarak yazılmıştır. tr ve en olmak üzere Türkçe ve İngilizce iki dil olacağı belirtilmiştir.

<?php
session_start();
$dil =strip_tags($_GET["dil"]);
if ($dil =="tr" || $dil == "en"){
$_SESSION["dil"] = $dil;
header("Location:index.php");
}else {
header("Location:index.php");
}

?>
Yukarıdaki haliyle dil değişimi sayfa içinde gerçekleştikten sonra sizi index.php’ye yönlendirir. Bulunduğunuz sayfada dil değişimi gerçekleşsin ve sizi başka bir sayfaya yönlendirmesin istiyorsanız aşağıdaki minnak değişikliği yapmanız yeterli olacaktır.
<?php
session_start();
$dil =strip_tags($_GET["dil"]);
if ($dil =="tr" || $dil == "en" || $dil == "de" || $dil == "ru"){
$_SESSION["dil"] = $dil;
header("location: ".$_SERVER['HTTP_REFERER']."");
}else {
header("Location:index.html");
}
?>
Eğer Türkçe ve İngilizce dilin yanısıra Rusça, Almanca diye farklı başka dillerde tanımlayacaksak yukarıda ki kodda işaretli olan if satırını şu şekilde değiştirebilirsiniz.

if ($dil =="tr" || $dil == "en" || $dil == "de" || $dil == "ru")

Dil dosyası hazırlanması​

Birden fazla dil olduğu için her ayrı dile, ayrı bir dil.php dosyası oluşturacağız. Örneğin; tr.php, en.php. ru.php gibi

Bundan dolayı tüm bu dosyaları tek bir klasörde toplamakta yarar var. dil adında bir klasör oluşturalım. Klasörümüz index.php ile aynı dizinde olsun. Aşağıda tr.php yani Türkçe dil dosyasının içeriğini görüyorsunuz.

<?php
$dil = array(
"anasayfa" => "Anasayfa",
"pvplinkekle" => "Pvp Link Ekle",
"dilseciniz" => "Dil Seçiniz",
"trdil" => "Türkçe",
"ingdil" => "İngilizce",
"baslik" => "Başlık",
"durum" => "Durum",
"servertipi" => "Server Tipi",
"git" => "Git",
"yorumbirak" => "Bir Yorum Bırakın...",
"adsoyad" => "Adınız ve Soyadınız...",
"email" => "Eposta Adresiniz...",
"yorum" => "Yorumunuzu Yazın...",
"gonder" => "Gönder",
"onceki" => "Önceki",
"sonraki" => "Sonraki",
"acik" => "Açık",
"kapali" => "Kapalı",
);
?>

dil.php Dosyasının Mantığını Anlayalım​

Sol tarafta bulunanlar bizim tüm diğer dil dosyalarımızda sabit kalacak olan kelimeler. Türkçe karakterler kullanmamaya özen gösterdik, bu kelimeleri sitemizin kodları arasında bulunan sabit kelimeler için anlaşılır bir isim olarak belirledik. Sağ tarafta bulunanlar ise; yalnızca tr.php dosyası için yani dil Türkçe seçildiğinde karşılığını almak istediğimiz kelimelerimiz.

Buna göre en.php dil dosyasının da içeriği şu şekilde olmalı

<?php
$dil = array(
"anasayfa" => "Homepage",
"pvplinkekle" => "Add Pvp Link",
"dilseciniz" => "Select Language",
"trdil" => "Turkish",
"ingdil" => "English",
"baslik" => "Title",
"durum" => "Case",
"servertipi" => "Server Type",
"git" => "Go",
"yorumbirak" => "I leave anywhere ...",
"adsoyad" => "Name and Surname...",
"email" => "Email address...",
"yorum" => "Write your comment...",
"gonder" => "Submit",
"onceki" => "Previous",
"sonraki" => "Next",
"acik" => "Open",
"kapali" => "Closed",
);
?>

Dil dosyasının ziyaretçiye sunumu​

index.php dosyamızda ziyaretçinin dil dosyasını seçebileceği bir dilden diğer bir dile geçiş yapacağı bir menü olduğunu varsayalım. Kodumuz örnek bir menünün html kod yapısı şu şekilde olmalı;[sociallocker id=4715]

<ul class="dropdown-menu" role="menu">
<li><a href="dil.php?dil=tr">Türkçe</a></li>
<li><a href="dil.php?dil=en">İngilizce</a></li>
</ul>
[/sociallocker]Buraya kadar her şey tamam Türkçe linkine tıklandığında dil.php?dil=tr dosyasına gidecek ve sayfa kapatılım yeniden açılıncaya kadar tr dosyası oturum boyunca aktif olacaktır. Tr dosyası varsayılan olarak ayarlanmıştır. Hiç bir dil seçilmezse yine tr dosyası ziyaretçiye sunulacaktır.

İngilizce linkine tıklandığındaysa dil.php?dil=en dosyası okunacak ve oturum boyunca Türkçe dil seçneği seçilmedikçe ziyaretçi İngilizce olarak sunum yapılacaktır.

Peki sitede bulunan sabit Türkçe kelimeleri nasıl değiştireceğiz​

Bunun için yine menüden bulunan iki kelimeyi ele alalım. Türkçe ve İngilizce

Ben bu kelimelerin İngilizce dil seçildiğinde Turkish ve English olarak sunmak istiyorsam menü kodumu şu şekilde düzenlemeliyim

<ul class="dropdown-menu" role="menu">
<li><a href="dil.php?dil=tr"><?php echo $dil["trdil"];?></a></li>
<li><a href="dil.php?dil=en"><?php echo $dil["ingdil"];?></a></li>
</ul>
Burada değişen sadece şu oldu Türkçe kelimesinin yerini <?php echo $dil[“trdil“];?>

İngilizce
kelimesinin yerini ise <?php echo $dil[“ingdil“];?> bu php kalıbı tüm değişen kelimeler için sabit olacak değişen ise sadece kırmızı ile işaretlediğim yerler.

Zaten en.php dil dosyamızın içinde

“trdil” => “Turkish”,
“ingdil” => “English”, karşılıklarını bu şekilde tanımlamıştık hangi kelimenin neyi ifade ettiğini bildiğimiz için kodu da yazan sizseniz çok kolay bir şekilde sitenize dil dosyası hazırlamış olursunuz.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst