5 Mart 2012 Pazartesi

OJS 2.3.6. Sürümü Türkçe Dil Hatası

OJS'nin 2.3.6 sürümünü kurduğunuzda;
Fatal error: Call to undefined method DBConnection::getInstance() in /home/teorivep/public_html/lib/pkp/classes/db/DBConnection.inc.php on line 232 
hatası alıyorsanız, sorun setLocale fonksiyonundan kaynaklıdır. Çözüm için aşağıdaki açıklamaya bakınız:
 
"...ojs\classes\i18n\" yolundaki "Locale.inc.php" dosyasındaki kodlama aşağıdaki gibi olmalıdır (102 satır civarında). Eğer "Locale.inc.php" dosyasında ilgili kodlamaları bulamadıysanız “…\ojs\lib\pkp\classes\i18n” yolu altındaki “PKPLocale.inc.php” dosyasında 102 ila 112 satırlar arasına bakınız ve düzenlemeyi aşağıdaki gibi paınız.

 function initialize() {
   // Use defaults if locale info unspecified.
   $locale = Locale::getLocale();

   $sysLocale = $locale . '.' . LOCALE_ENCODING;
   if (!@setlocale(LC_ALL, $sysLocale, $locale)) {
        // For PHP < 4.3.0
        if(setlocale(LC_ALL, $sysLocale) != $sysLocale) {
             setlocale(LC_ALL, $locale);
        }
   }

Not: Bu açıklamanın testini yapan ve geri dönüş yaparak katkı sağlayan Hüseyin KÖRPEOĞLU, Yusuf ALPAYDIN ve Selçuk AYDEMŞR'e teşekkürler.

Bu konuyla ilgili olarak yardım isteyen  Selçuk AYDEMİR'e  gönderdiğim mesajın cevabını aşağıda paylaşıyorum:
 


Saygıdeğer hocam,

Öncelikle yardımınız ve öneriniz için çok teşekkür ederim. Size daha önce dergimizi güncellediğimizi, Türkçe dil seçeneğini seçtiğimizde sayfanın boş göründüğünü söylemiştim ve bunun için sizden yardım istemiştim. Gönderdiğiniz maillerdeki kodları bu konuyla ilgilenen teknoloji uzmanımız inceledi ve aşağıdaki kodları silerek bu sorunu çözüme ulaştırdı. 
 
(lib/pkp/classes/i18n/PKPLocale.inc.php) dosyasında bulunan (satır 107-112)
if (!@setlocale(LC_ALL, $sysLocale, $locale)) {
            // For PHP < 4.3.0
            if(setlocale(LC_ALL, $sysLocale) != $sysLocale) {
                setlocale(LC_ALL, $locale);
            }
        }