WordPress ile Çok Dilli Siteler Hazırlamak

Merhabalar;

WordPress maceramıza kaldığımız yerden devam ediyoruz. Her gün hakkında yeni bir şeyler öğrendiğim sistem hakkında bilgilerimi not almaya ve size aktarmaya ara vermek istedim. Hazır az bir boş vaktim varken en son işimde yapmış olduğum “Çoklu Dil (Multi Language)” sistemini anlatmak istedim.

Öncelikle aklınıza Google Translate ya da benzeri bir araç gelmesin. Bu tür çevirilere pek güvenmediğim için yaptığım işte bu servislerden faydalanmadım. Eklenti dizinini tek tek araştırırken qTranslate isimli bir eklenti buldum ve işimi tam anlamıyla görebilecek bir eklenti olduğu kanısına vardım. Eklentiyi kurduğumda bu kadar zorlayacağını düşünmemiştim ancak umduğumdan çok daha fazla zorladı beni. Eklentiyi kurup ayarlarını yaptığımda otomatik olarak admin panelinden çıkış yaptırdı eklenti. Panele girmek istediğimde ise bu sayfaya erişim izniniz yok hatasını aldım. Sorunun çözümünü araştırırken WordPress’e bir daha aşık oldum :) . Sunduğu imkanlar ile gerçekten yapılamayacak şey neredeyse yok. Hikayeyi bırakıp konumuza dönelim… (Sizde böyle bir sistem yapmak istediğinizde bu hatayla karşılacağınız için bu kısmı yazdım)

Kullanacağımız eklenti bahsettiğim gibi qTranslate. qTranslate eklentisini buradan indirip /wp-content/plugins klasörüne atıp ardından admin panelinizden etkinleştirin. Karşınıza şöyle bir ekran gelecek;

Bu sayfada dil ayarlarımızı yapıyoruz. Yani yeni dil ekleyip, istemediğimiz dili çıkarabiliriz. Ayrıca varsayılan dili belirleyebiliriz. Yaptığım işte ana dil Türkçe olacağı için Türkçe’yi ilk sıraya aldım. Bu ayarı yaptıktan sonra admin paneli kapanacaktır.

Çözümü ise
WP Auth key’den geçiyor. WP Auth Key almak için şu adresi kullanabilirsiniz. Sayfayı her yenilediğinizde yeni bir key verecektir. Sayfadan aldığımız keyi gireceğimiz sayfalar ise;

*wp-config.php (45. satırdan 48. satıra kadar olan kısmı aldığınız key ile değiştirin. değiştireceğiniz satırlar)

*wp-content/languages/xx_XX.php (xx_XX yerine varsayılan olarak kullandığınız dil dosyası adı gelecektir. Türkçe kullanırsanız tr_TR.php dosyası olacak.)
xx_XX.php sayfasında tek satır kodumuz var

[php]$wp_default_secret_key = [/php]

karşısına almış olduğunuz auth key i yazacaksınız.

*wp-includes/default-constants.php (Bu dosyada değişiklik yapacağımız satır numarası ise 156. Ekleyeceğiniz kodu buradan görebilirsiniz).

Bunları yaptıktan sonra admin panelimize sorunsuzca girebiliriz.

Sorunlarımızı çözdükten sonra gelelim nasıl çoklu dilde yapacağımızda…

Eklenti resimde görüldüğü gibi otomatik olarak çeviri işlemi yapmıyor. Elimizde mevcut olan diğer dillerdeki içerikleri girmemizi sağlıyor.

Dil ayarlarımızı yaptıktan sonra “Yeni Yazı” ve ya “Yeni Sayfa” eklerken resimdeki gibi bir görüntü ile karşılacaşacağız. Buradan her dil için ayrı başlık ve içerik girebiliyoruz.

Peki nasıl otomatik oluyor ?
Eklenti seçeneklerimizde tarayıcı diline göre otomatik olarak eklediğimiz içeriğe yöneltiyor. Yani tarayıcımız İngilizce ise otomatikman İngilizce içerik göreceğiz. Bu işi 3 türlü yapabiliyoruz. Seçeneklerimiz subdomain, sorgu biçimi ve ya ön yol. Sub domain seçersek tr.domain.com en.domain.com şeklinde oluyor. Sorgu yöntemini seçtiğimizde domain.com?lang=tr ve ya domain.com?lang=en şeklinde oluyor. Ben ön yolu kullanmayı tercih ettim. Çünkü subdomain kullanıyordum. Ön yol kullanırsakta url biçimimiz domain.com/tr/ ve ya domain.com/en/ oluyor. (ki bence en zahmetsizi ve en kullanışlısı bu).

Sorun 2: Hızlı Düzenle Seçeneği
Karşılaştığım bir diğer sorun ise hızlı düzenleme seçeğinde oldu. Sayfa sıralaması düzenlerken hızlı düzenle’den sayfa numaralarını verip geçtim ancak diğer dillere geçtiğimde de başlıkların varsayılan dilde olduğunu gördüm. Hemen geri dönüp başlıkları eski haline getirdim ve bu sorunu da çözmüş oldum.

Sayfa ve yazı harici yerlerde kullanım
Eklenti sunmuş olduğu “shortcode” (kısa kod) desteği ile wordpress’in her alanında çoklu dil desteği veriyor. Örnek olan widget başlıkları ve içerikleri için kullanabilirsiniz. widgetlerde kullanımı “[:tr]Galeri [:en]Gallery [:de]Galerie ” şeklinde. Açıklayacak olursak; dil kodu ardından başlık geliyor ve örnek olarak siteyi Almanca olarak görüntülüyorsak diğer dillerin başlıkları gözükmüyor.
Aynı şekilde widget içeriklerinde de shortcode’larımızı kullanabiliriz.

Şu an anlattıklarımla elinizde istediğiniz dilde bir WordPress siteniz var :) Eklentiyi biraz daha kurcaladıkça eminim hayran kalacaksınız.

25.10.2011 – Güncelleme;

“name” isimli okurumun sorusundan aynı zamanda verdiği cevaptan alıntı yaparak; sitede kullandığımız dilleri göstermek için shortcode eklemelerini yapıyoruz…
Yalnızca bayraklar için;
[php]< ?php echo qtrans_generateLanguageSelectCode('image'); ?> [/php]

Yalnızca dil adı için;
[php]< ?php echo qtrans_generateLanguageSelectCode('text'); ?>[/php]

İkisinin birlikte görünmesi için;
[php]< ?php echo qtrans_generateLanguageSelectCode('both'); ?>[/php] 07.06.2013 Güncelleme!
Sitesine kodlarını eklemekte zorluk çeken arkadaşlar gerekli kodları ve açıklamaları alttaki adresten temin edebilirler…
http://codepen.io/bahadirtezer/pen/mBwFA

Konu hakkında soru ve görüşleriniz için “yorum” yazmaktan kaçınmayın :) Unutmadan yaptığım sistemin örneğini http://www.cangarden.com/ adresinden görebilirsiniz.

Bol WordPress’li günler !

72 Comments

  • Nuri diyor ki:

    Sitem Türkçe olacak normalde Arapça ve İngilizce de dil secenekleri olacak bunların hepsini ayarladım fakat menüyü nasıl ingilizce ve ya arapca yapabilirim ?

  • ibrahim diyor ki:

    Evet bende kategoriyi bulamadım yabancı dilde ve bayraga nasıl link vercegiz

  • ceyhun diyor ki:

    Selamlar,
    Kullandığım temadaki (GT3 – Mavericks) Page Builder içerisinde ve widgetlarda, shortcode kullanmak istiyorum. Ancak shortcodeları çalıştıramadım.
    Ne tavsiye edersiniz?

  • Merhaba,

    Öncelikle elinize sağlık.

    WordPress hiç konum olmamasına rağmen bir arkadaşıma yardım etmeye çalışıyorum.
    qTranslate eklentisini biraz önce sorunsuzca kurdum. Üstelik bahsettiğiniz yönetici panelinden atma sorununu da yaşamadığımı belirtmek isterim.

    Ben şöyle 2 sorunla karşılaştım.

    1. sorun – sanıyorum ki – Görünüm/Menüler içindeki bağlantılardan kaynaklanıyor. Dil desteği olmadan hazırladığımızda /about-us şeklinde bağlantı eklemiştik. Bu da /en/ ‘nin devre dışı kalmasına sebep oluyor. /’ı kaldırarak sadece about-us yazıp kaydedince http://abous-us olarak kaydediyor.
    Örnek verdiğiniz http://www.cangarden.com/ ‘da menü gayet güzel çalışıyor.

    2. sorun ise site içinde listenen içeriklerin (postların) bağlantılar /en/’deyken en ile başlamıyor . Can Garden’in ana sayfasında (intro değil) altta bulunan rezervasyon bağlantısında bu bahsettiğim da aynı sorun var.

    Nasıl çözülür?

    Teşekkürler.

  • mustafa diyor ki:

    teşekkürler ama bir sorunum var widgetlere yerleştirdiğim yazıları çevirme yapamıyorum

  • Xai diyor ki:

    Merhaba, konuyu baştan sona okudum herşey tamam fakat siteye botla ekleme yaparken “post_title” olarak ekleme yaptırdığımızda sadece default title’a gönderi yapıyor.. Seçilen diğer dillerin başlığını ve açıklamasına nasıl ekletme yapacağız :)

  • hamdi diyor ki:

    Merhaba, WordPress alt yapılı siteme 3 farklı dik eklemek istiyorum. Sitenin 3 dil çevirisini metin olarak hazırladım, bunları nasıl tek tek sayfaları ekleyerek aktif hale getirebilirim?

    Yardımcı olabileceğini düşünerek yazıyorum, inşallah rahatsızlık vermem. Şimdiden teşekkürler.

  • kadirbas diyor ki:

    Günaydın arkadaşlar qtranslate ile ilgili bir sorum olacaktı bir çok müşterimin sitesinde dil desteği olanağı sunuyorum qtranslate kullanıyorum ama ilk defa başıma tuhaf bir iş geldi meterialfabric.com adlı sitede ilk açılışta meterialfabric.com/en uzantısıyla açılıyor ve site ingilizce başlıyor bunu nasıl türkçe yapabilirim ?

Leave a Reply