SMF'den XenForo'a geçişte Türkçe karakter hatası alıyorsanız bunun 2 nedeni vardır;
- Veritabanı Karakter Seti Uyumsuzluğu
- SMF Dil Dosyası Uyumsuzluğu
- SMF forum yazılımınız da ne kadar eklenti varsa hepsini kaldırın.
- SMF forum yazılımına ait Database alanına phpmyadmin panelinizden erişin.
Örnek olarak yanlış tanımlanan bir karakter seti örneği;
Öncelikle Database alanındaki tüm tabloları utf8_general_ci olarak ayarlamanız gerekiyor. Peki nasıl ayarlanır?
Phpmyadmin alanından SMF forum yazılımınızın kullanmış olduğu Database alanına girin SMF'de 77 tane tablo (Bu ek yazılımlarla fazla da olabilir) sıralanır. Her tablonun karşısında Gözat alanı vardır Gözat alanına tıklıyoruz.
Örnek Resim:
Gözat dediğimizde tablonun içeriği karşımıza gelecektir. Bu alana geldikten sonra işlemler sekmesine tıklıyoruz.
Örnek Resim:
Karşınıza gelen alandan karşılaştırma alanına geliyoruz.
Yukarıdaki karışlantırma alanı latin1_swedish_ci veya sizde farklı bir karakter seti tanımlı ise bunu utf8_general_ci olarak ayarlayıp Git butonuna tıklayınız.
Örnek Resim;
Genel olarak bu yukarıdaki anlattıklarım bilinen şeyler fakat işlemler burada bitmiyor ve genel olarak hata burada yapılıyor. Tamam biz tüm tabloları utf8_general_ci yaptık ama bu tabloların sütunlarını unuttuk dolayısıyla sütunlar hala latin1_swedish_ci olarak tanımlı.
Örnek utf8_general_ci olarak karşılaştırma yaptığımız tablonun sütunlarının karşılaştırmasını görmek için utf8_general_ci olarak tanımladığımız tablonun yapı alanına tıklıyoruz.
Örnek Resim:
Karışımıza aşağıdaki gibi bir yapı alanı gelecek. Gördüğünüz gibi tablo utf8_genaral_ci olmasına rağmen sütunlar hala latin1_swedish_ci olarak karşımıza çıkıyor. (Kırmızı olarak işaretlediğim Karşılaştırma alanına bakınız.)
Dolayısıyla tüm tabloların yapı alanlarındaki sütunlarınında utf8_general_ci olarak tanımlanması gerekiyor aksi halde xenforo geçişlerinde Türkçe karakter hatası alırsınız. Peki bunu nasıl değiştiriyoruz?
Tablonun yapı alanına girdiğinizde sütunların karşısında değiştir alanı vardır buraya tıklamanız gerekiyor ve her bir sütun alanı için bunu yapmak durumundasınız. Karşılaştırma boş ise o sütuna işlem yapmayacaksınız. Sadece karakter karşılaştırması tanımlı olan sütunlara işlem yapacaksınız.(Burası önemlidir.)
Örnek Resim:
Sütunu değiştir dediğiniz de karşınıza değişiklik yapacağınız alan gelecek burada sadece karşılaştırma alanına işlem yapacaksınız yani karşılaştırma alanından utf8_general_ci seçimini yapıp kaydedeceğiniz ve bunu ne kadar karakter seti tanımlı sütun var ise hepsine aynı işlemi yapmamız gerekiyor.
Örnek Resim:
Şimdi veritabanı içerisindeki bozuk karakterleri düzeltmemiz gerekiyor. Aşağıdaki kodlar phpmyadmin SQL alanından çalıştırın. Bu işlemi yapmadan önce mutlaka yedeğinizi alın. Ayrıca aşağıdaki karakterler genelde latin1_swedish_ci karakter setinin kayıt ettiği karakterlerdir. Eğer sizde farklı karakterler var ise, aşağıdaki karakterle ile değiştirin.
UPDATE smf_messages SET body= replace(body, 'ý', 'ı')WHERE body LIKE '%ý%';
UPDATE smf_messages SET body= replace(body, 'Ý', 'İ')WHERE body LIKE '%Ý%';
UPDATE smf_messages SET body= replace(body, 'ð', 'ğ')WHERE body LIKE '%ð%';
UPDATE smf_messages SET body= replace(body, 'Ð', 'Ğ')WHERE body LIKE '%Ð%';
UPDATE smf_messages SET body= replace(body, 'þ', 'ş')WHERE body LIKE '%þ%';
UPDATE smf_messages SET body= replace(body, 'Þ', 'Ş')WHERE body LIKE '%Þ%';
UPDATE smf_messages SET subject= replace(subject, 'ý', 'ı')WHERE subject LIKE '%ý%';
UPDATE smf_messages SET subject= replace(subject, 'Ý', 'İ')WHERE subject LIKE '%Ý%';
UPDATE smf_messages SET subject= replace(subject, 'ð', 'ğ')WHERE subject LIKE '%ð%';
UPDATE smf_messages SET subject= replace(subject, 'Ð', 'Ğ')WHERE subject LIKE '%Ð%';
UPDATE smf_messages SET subject= replace(subject, 'þ', 'ş')WHERE subject LIKE '%þ%';
UPDATE smf_messages SET subject= replace(subject, 'Þ', 'Ş')WHERE subject LIKE '%Þ%';
UPDATE smf_members SET member_name= replace(member_name, 'ý', 'ı')WHERE member_name LIKE '%ý%';
UPDATE smf_members SET member_name= replace(member_name, 'Ý', 'İ')WHERE member_name LIKE '%Ý%';
UPDATE smf_members SET member_name= replace(member_name, 'ð', 'ğ')WHERE member_name LIKE '%ð%';
UPDATE smf_members SET member_name= replace(member_name, 'Ð', 'Ğ')WHERE member_name LIKE '%Ð%';
UPDATE smf_members SET member_name= replace(member_name, 'þ', 'ş')WHERE member_name LIKE '%þ%';
UPDATE smf_members SET member_name= replace(member_name, 'Þ', 'Ş')WHERE member_name LIKE '%Þ%';
UPDATE smf_members SET real_name= replace(real_name, 'ý', 'ı')WHERE real_name LIKE '%ý%';
UPDATE smf_members SET real_name= replace(real_name, 'Ý', 'İ')WHERE real_name LIKE '%Ý%';
UPDATE smf_members SET real_name= replace(real_name, 'ð', 'ğ')WHERE real_name LIKE '%ð%';
UPDATE smf_members SET real_name= replace(real_name, 'Ð', 'Ğ')WHERE real_name LIKE '%Ð%';
UPDATE smf_members SET real_name= replace(real_name, 'þ', 'ı')WHERE real_name LIKE '%þ%';
UPDATE smf_members SET real_name= replace(real_name, 'þ', 'ş')WHERE real_name LIKE '%þ%';
UPDATE smf_members SET real_name= replace(real_name, 'Þ', 'Ş')WHERE real_name LIKE '%Þ%';
UPDATE smf_members SET personal_text= replace(personal_text, 'ý', 'ı')WHERE personal_text LIKE '%ý%';
UPDATE smf_members SET personal_text= replace(personal_text, 'Ý', 'İ')WHERE personal_text LIKE '%ý%';
UPDATE smf_members SET personal_text= replace(personal_text, 'ð', 'ğ')WHERE personal_text LIKE '%ð%';
UPDATE smf_members SET personal_text= replace(personal_text, 'Ð', 'Ğ')WHERE personal_text LIKE '%Ð%';
UPDATE smf_members SET personal_text= replace(personal_text, 'þ', 'ı')WHERE personal_text LIKE '%þ%';
UPDATE smf_members SET personal_text= replace(personal_text, 'þ', 'ş')WHERE personal_text LIKE '%þ%';
UPDATE smf_members SET personal_text= replace(personal_text, 'Þ', 'Ş')WHERE personal_text LIKE '%Þ%';
Bütün bu işlemleri yaptıktan sonra sıra geldi SMF üzerinden işlem yapmaya. Öncelikle FTP içerisinde forum adında (Herhangi bir isim olabilir) klasör oluşturuyoruz. SMF üzerinden indirdiğimiz SMF forum yazılım dosyalarını forum klasörü içerisine aktarıyoruz. Daha sonra Cpanel veya Plesk panel üzerinden yeni bir Database ve DB kullanıcısı oluşturun. Bütün bunları yaptıktan sonra artık kuruluma geçebiliriz. Tarayıcınıza siteisiminiz.com/forum/install.php yazarak enter'a tıklayın artık SMF forum yazılım kurulumunu başlatmış bulunuyoruz. .çalıştırıp kurulumu yapıyoruz gerekli Database bilgilerinizi kurulum esnasında girip devam ediyoruz fakat burada dikkat etmeniz gereken kurulum sırasında veritabanını utf8 olarak yükle seçeneğini işaretlemeyi unutmayın.
Kurulum başarıyla gerçekleşti ise, sıra geldi SMF UTF8 dil dosyasını yüklemeye SMF admin paneli alanından Dil dosyasını yükleyiniz yüklerken mutlaka utf8 olan dil dosyasını yükleyiniz. Bu da başarılı bir şekilde yapıldı ise, şimdi eski forumla yeni forumu değiş tokuş edeceğiz.
İlk SMF forumunuzun FTP dosyalarınıza ulaşın bu dosyalar arasından attachments ve avatars klasörlerini diğer forum yazılımına aktarın.
Daha sonra siteisminiz.com/forum olan SMF yazılımınızın Database bilgilerini bizim kendi smf forumumuzun Database bilgileri ile değiştiriyoruz.
########## Database Info ##########
$db_server = 'localhost';
$db_name = 'database adı';
$db_user = 'DB kullanıcı';
$db_passwd = 'Db Şifreniz';
$db_prefix = 'smf_';
$db_persist = 0;
$db_error_send = 1;
Eğer dizin yolunuzda sorun yaşarsanız veya bilmiyorsanız ekte vermiş olduğum dizinbul.php dosyasını ana dizine atarak tarayıcıda çalıştırırsanız size dizin yolunuzu verecektir. Tekrar phpmyadmin alanına giderek smf_settings tablosuna gözat diyerek attachmentUploadDir satırını bulup içerisini mevcut dizinimiz ile değiştiriyoruz.
Bütün bu işlemlerden sonra artık xenforo geçişinizi yapabilirsiniz. XenForo geçiş sırasında dikkat edeceğiniz tek yer ise, Database Character Set ve Default Language Character Set karşılıklarının utf-8 olarak girilmesi gerekmektedir. Yani bu alana utf8_general_ci değil sadece utf-8 yazmanız yeterlidir.
Dip Not: Bu makalenin başka yerlerde izinsiz paylaşılması kesinlikle yasaktır.