İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Sitede Çoklu Dil Kullanımı

Ozcan

0
İyinet Üyesi
Katılım
12 Mayıs 2007
Mesajlar
3,749
Reaction score
59
Konum
Antalya
Yeni yaptığım bir sitede 3-4 dil kullanmak istiyorum bunun için nasıl bir yol uygulamalıyım daha önce hiç çoklu dil içerikli bir site yapmamıştım. Bazı sitelerde site.com/index.php?lang=tr gibi bir ibare oluyor kiminde site.com/tr/index.php kimindede tr.site.com/index.php şeklinde acaba bu sistemlerin genel çalışma prensipleri ile ilgili bilgi verebilirseniz ve en basit olarak hangisini kullanabilirim teşekkürler.
 

ByLegenS

0
İyinet Üyesi
Katılım
9 Haziran 2008
Mesajlar
184
Reaction score
0
veritabanından alırsın mesela bir alana oluştur ve oraya türkçe ingilizce ne olarak değiştirirsen değerini ona göre dosyaları kullanırsın önce dosyalarını ayarla bir tane dil değiştirmek için dosya hazırla mesela sorgu ile veritabanındaki değeri çağır ve bir koşula bağla onsan sonrada şu şekilde include edebilirsin
include 'dil/'.$dil.'.php'; buradaki dilin değişkenin değerinide veritabanından al ama dosya ismi ile aynı olsun sorununu çözer biraz karışık oldu ama :)

eğer böyle yapmayı başarırsan bu şekilde kullanırsın site.com/index.php
 

eRLySL

0
İyinet Üyesi
Katılım
25 Mart 2008
Mesajlar
424
Reaction score
1
PHP:
<?php

$dil = $_SERVER['HTTP_ACCEPT_LANGUAGE']

if($dil=="tr") {
header("location:/tr");
} elseif($dil=="en") {
header("location:/en");
} else {
header("location:/tr");
}

?>


Kolay gelsin
 

Ozcan

0
İyinet Üyesi
Katılım
12 Mayıs 2007
Mesajlar
3,749
Reaction score
59
Konum
Antalya
Bütün kelimelerin hepsini veri tabanındamı tutmalımıyım yoksa her dilin her sayfası için bir php dosyası oluşturup bu dosyaları ayrı dizinleremi atsam daha kullanışlı ve yararlı olur.Home - Anasayfa - Rusça - Almanca gibi 4 tablo oluşturmammı lazım bu da bazı tabloların 8 içeriği olduğunu var sayarsak 8x4= 32 adet sutun açmak gerekiyor. Kısaca özetliyim.

1- Hakkımızda sayfası için her dil için bir php dosya oluştursam tr/index.php en/index.php ru/index.php ve içeriği veri tabanından alıcam. Sayfaların karatterleri arasında sorun olmaması için.

2- Her şey için bir tablo açıp mesela hakkımızda için
sayfatr sayfaicerigitr sayfaen sayfaicerigien sayfaru sayfaicerigiru gibi bir sürü tablomu oluşturmalıyım. Tabi veri tabanına kayıt edilirken admin panelinin dil karakter kodlamasını ne yapmam lazım sonuçta Türkçe Rusça Almanca gibi bir birinden farklı karakter kullanan diller olucak bu yüzden her kayıt için admin panelini her dile göremi ayarlamalıyım. Veri tabanını UTF8 yapsam hepsini yazdıldığı gibi algılarmı. Alt alta koyduğum textarea lar ile ekletsem Türkçe ve Rusça gibi değişik karakteri olan dillerde sorun yaşarmıyım.

3- Bir dili bitirdikten sonra tüm dosyaları başka bir dizine alıp diğer dil için gerekli düzenlemelerimi yapsam dahamı iyi olur.

inceleyebilmem için örnek bir script biliyorsanız paylaşırsanız sevinirim.
 

ByLegenS

0
İyinet Üyesi
Katılım
9 Haziran 2008
Mesajlar
184
Reaction score
0
benim dediğim yöntemle bir klasör oluşturup içerisine turkce.php ve ingilizce.php at mesel içerisinde değişkenler oluştur mesela şöyle yap bu turkce.php olsun
PHP:
$anasayfa = "Ana Sayfa"; 
$giris = "Giriş";
gibi

buda ingilizce.php
PHP:
$anasayfa = "Home Page"; 
$giris = "Login";


ve index.php de tablolardada yazı yerine bu değişkenleri kullan
eğer bu mantıkla yaparsan dil dosyasını include etmek kalıyor onuda turkce ve ingilizce değerini veritabanından al veritabanındaki değer turkce ise turkceyi include et ingilizce ise ingilizceyi include et diyeceksin

mesela bir sorgu yap

PHP:
$strSQL = "SELECT dil FROM ayar_tablosu";
$sonuc = mysql_db_query($strSQL) or die ('<h2>sorgu başarısız</h2>');
$sonuc2 = mysql_fetch_assoc($sonuc);

$dil = $sonuc2['dil'];

include 'dil_klasoru/'.$dil.'.php';

şimdi veritabanındaki değer turkce ise bu kodu
PHP:
include 'dil_klasoru/'.$dil.'.php';

böyle görecek
PHP:
include 'dil_klasoru/turkce.php';

eğer ingilizce ise

PHP:
include 'dil_klasoru/ingilizce.php';
böyle görecek
ve istediğin kadarda dil dosyası ekleyebilirsin bu şekilde umarım yardımım olur...
 

Grafix

0
İyinet Üyesi
Katılım
16 Aralık 2006
Mesajlar
1,153
Reaction score
0
Konum
Bursa
bylegens arkadaşımın ki kesinlikle çok kullanışlı ;)
 

Ozcan

0
İyinet Üyesi
Katılım
12 Mayıs 2007
Mesajlar
3,749
Reaction score
59
Konum
Antalya
@ByLegenS sağol hocam bunu menüler ve linkler için kullanabilirim. Veri tabanına yaptığım kayıtlar içinde :) keşke bu kadar basit bir şey olsa. sonuçta 3 dil içinde tek tek alan açmak gerekli :) zaten bu siteyi isteyenin kullanacağını sanmıyorum ama mecbur yapıcaz.
 

Ozcan

0
İyinet Üyesi
Katılım
12 Mayıs 2007
Mesajlar
3,749
Reaction score
59
Konum
Antalya
ayrıca kodlamayı uft8 olarak yapman lazım

hocam site 3 dil olacak Rusça - Türkçe - İngilizce kayıt işlemlerinde her hangi bir aksatlık olmaması için mesela bir kayıt gireceği zaman
1- Türkçe Başlık
2- Rusça Başlık
3- İngilizce Başlık
4- Türkçe İçerik
5- Rusça İçerik
6- İngilizce İçerik

şeklinde bir sayfadan kayıt ettiriyorum. Her hangi bir yeri boş bıraktıklarında diğer dile geçildiği zaman orada unutulan bir alan olmaması için UTF8 yaptığımda bu sorun dil sorunu çıkarmı. Birde klavyeyi :) bir rusça bir türkçe yapıcaklar sanırım bu klavye değişikliklerinden kaynaklanabilecek herhangi bir sorun olurmu kayıt işlemleri sırasında.
 

ByLegenS

0
İyinet Üyesi
Katılım
9 Haziran 2008
Mesajlar
184
Reaction score
0
ben burada kendi kullandığım sistemi sana anlattım çok kullanışlı çerezlerle üyeler veya misafirler istedikleri dile alabiliyorlar veya ben istediğim dili default varsayılan yapabiliyorum ayar tablosuna bir alan aç mesela şöyle bir şey

bu senin ayar tablon olsun

PHP:
CREATE TABLE `ayarlar` (
`isim` varchar(30) NOT lisanssız default '',
`deger` varchar(100) default lisanssız,
PRIMARY KEY  (`isim`)
)  ENGINE=MyISAM CHARSET=utf8;

buda dil alanı olsun yine sorgu yaparak bunuda ekle:

PHP:
INSERT INTO `ayarlar` VALUES ('dil', 'turkce');

ve geriye kalan senin bunu yönetim sayfasından deger kısmını değiştirmen

onuda update yöntemi ile yapabilirsin önce bir ayar.php dosyası oluştur içeriğini bu şekilde yapabilirsin:

PHP:
<?php 

$db_host = 'localhost';
$db_isim = '*****';
$db_kul = '*****';
$db_sifre = '*****';


$db_link = @mysql_connect($db_host,$db_kul,$db_sifre) or die ('<h2>Bağlantı kurulamıyor !</h2>'.mysql_error());

$veri_tabani = @mysql_select_db($db_isim,$db_link) or die ('<h2>Veritabanı açılamıyor !<br></h2>'.mysql_error());


@$kosul = $_GET['kosul']; 
if ($kosul == "kaydet") 
{ 

$sorgu = "UPDATE ayarlar SET deger='$_POST[dil_deger]' where isim='dil' LIMIT 1"; 
$sonuc = mysql_db_query($db_isim,$sorgu) OR die ('<h2>sorgu başarısız !</h2>'.mysql_error()); 

header('Location: ayar.php'); 

exit(); 
} 

?> 


<html> 
<head> 
<title>Ayarlar</title> 
</head> 
<body> 
<form action="ayar.php?kosul=kaydet" method="post" name="form"> 
<table cellspacing="1" width="100%" cellpadding="6" border="0" bgcolor="#ffffff"> 
<tr> 
<td> 
Dil Seçin : 
</td> 
<td> 
<select name="dil_deger"> 
<option value="turkce">Türkçe</option> 
<option value="ingilizce">İngilizce</option> 
</select> 
<br>
<input  type="submit" name="ayar_kaydet" value="GÖNDER"> 
</td> 
</tr> 
</table> 
</form> 
</body> 
</html>

bu şekilde çok rahat bir şekilde dil olayını çözersin benden bukadar umarım faydam dokunmuştur...
 

i.ari

0
İyinet Üyesi
Katılım
16 Aralık 2006
Mesajlar
4,437
Reaction score
6
Konum
Ankara
kodlamayı uft8 olarak yaparsan sorun cıkmaz ama diger türlü dil sorunu yaşarsın
 

Ozcan

0
İyinet Üyesi
Katılım
12 Mayıs 2007
Mesajlar
3,749
Reaction score
59
Konum
Antalya
en sonunda :) keşfettim nasıl dil sorunundan kurtulduğumuzu uft 8 güzel bir sistemmiş.
 

serki

0
İyinet Üyesi
Katılım
5 Ocak 2005
Mesajlar
200
Reaction score
0
tavsiyem kelimeleri $anasayfa="Anasayfa"; şeklinde kullanma değişken adlarinda kesin sorun yaşarsin sonra. En mantıklısı array kullanmak mesela $Kelime["anasayfa"] = "Anasayfa";
 

raincu

0
İyinet Üyesi
Katılım
12 Mart 2008
Mesajlar
1,005
Reaction score
1
Konum
Anadolu
Kod:
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // outputs "Constant" and issues a notice.

define("GREETING", "Hello you.", true);
echo GREETING; // outputs "Hello you."
echo Greeting; // outputs "Hello you."

?>
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

seo ajansı , sosyal medya yönetimi
Üst