DEMO İNCELE
ÜCRETSİZ İNDİR

Prestashop [SOLVED] Csv import ederken Türkçe seçilince hata veriyor

Merhaba,
Hosttaki Apache serverde Prestashop 1.4.4 versiyonunu kullanıyorum.
Import sekmesinde .CSV dosyayı yüklerken,
Dosyanın dilini seçiniz (yerel olan yüklenmelidir): Tükçe (English seçince sorun olmuyor)
olarak seçtikten sonra bir sonraki ekranda “CSV verileri içeri aktar” sayfasının alt kısmında aşağıdaki hatayı veriyor:
Fatal error: Call to undefined method Language::getIsoById() in /var/www/vhosts/orijinalotoyedekparca.com/httpdocs/tools1/footer.inc.php on line 37

“CSV verileri içeri aktar” tuşuna bastığımda ise aşağıdaki hatayı veriyor:
Fatal error: Call to undefined method ReflectionClass::isInterface() in /var/www/vhosts/orijinalotoyedekparca.com/httpdocs/config/autoload.php on line 53

Not: Problemi düzeltmek için aşağıdakileri denedim ama olmadı maalesef:
Backoffice ve frontoffice dillerini değiştirdim. Başka Türkçe dil dosyaları yükledim. Nafile.
CSV dosyalarımı değiştirdim. Olmadı.
CSV dosyalarını kaydederken UTF-8, Turkish (Windows-1234), Turkish (ISO-8859-9), Europe (ISO-8859-1) kodlarının hepsini denedim. Olmadı.
Import ekranındaki "iso-8859-1 encoded file" bölümünü işaretledim. Olmadı.
Hostumla konuştum. Bizde bir sorun yok, db vs. hepsi Türkçeyi düzgün çalıştırıyor dediler.
Yine de sizden kaynaklanıyor deyip birkaç kez server değiştirttim. Düzelmedi. Hata mesajını hosta gönderdim. Şu cevabı aldım:
Tanımlanmayan bir methodu çağırmaya çalışıyorsunuz. Language class’ı altındaki getIsoById statik methoduna erişim sağlanamıyor. Bu konuda kodlarınızı inceleyebilirsiniz.
İyi çalışmalar dileriz.

Birkaç haftadır bu sorunla ilgili bilgi arıyorum ama maalesef bulamadım.
Yardımcı olacak arkadaşlara şimdiden çok tşk ederim.

27 thoughts on “Prestashop [SOLVED] Csv import ederken Türkçe seçilince hata veriyor

  1. Peda - 29 Mart 2017 at 02:58

    server configuration:

    Server information

    Prestashop Version: 1.4.4.1
    Server information: Linux #1 SMP Thu Nov 18 16:04:02 MSK 2010 x86_64
    Server software Version: LiteSpeed
    PHP Version: 5.2.13
    MySQL Version: 5.0.77

    Cevap
  2. cagrie - 29 Mart 2017 at 02:58

    ben de yaşadım, sorun server’da çalışınca ortaya çıkıyor. belki dosya izni, belki başka birşey. bilemiyorum.

    önce prestashop’u local’e kurun, import edin, sonra database’i server’a yükleyin.

    ancak bu şekilde oluyor, beni de çok uğraştırdı.

    Cevap
  3. MehmetGuler - 29 Mart 2017 at 02:58

    Merhaba;
    1.)
    Class/Language.php dosyasında

     public static function getIsoById($id_lang) {   if (isset(self::$_LANGUAGES[(int)$id_lang]['iso_code']))    return self::$_LANGUAGES[(int)$id_lang]['iso_code'];   return false; } 

    Şeklinde bir fonksiyon var mıdır ? Bunu kontrol edebilir misiniz ?
    2.)
    İkinci durum /tools1/ klasörünün isminin /tools/ olması gerekiyor. İsim değişikliği veya kopyalama yapmışsınız sanırım. Bu şu anki hata ile ilgili midir kesin birşey söyleyemem ama kesin olan bunun gibi sorunlar çıkarabileceğidir.
    3.)
    Server software Version: LiteSpeed
    İyi bir seçim değil. (Prestashop İçin) litespeed daha çok statik içerik ve geniş networklar için idealdir. Yüksek veri tabanı ilişkisi ve derleme yükü olan sistemlerde kararsızlık yaratır.
    Mümkünse apache mod_php ile veya varsa PHP as CGI ile çalışmanızı öneririm.

    Kolay gelsin.

    Cevap
  4. Peda - 29 Mart 2017 at 02:58

    Merhaba,
    Şu anki hostumda 2-3 aydır bu sorunla boğuşuyorum. Çözemedim. Ben de bugun hosgator firmasından hosting hizmeti almak için başvuracaktım fakat son bir umutla foruma cevap gelmiş mi diye bakınca sizin mesajınızı gördüm.

    a- Dediğiniz fonksiyon aynen dediğiniz şekilde classes/Language.php içinde var. aşağıdaki şekilde

     public static function getIsoById($id_lang) { if (isset(self::$_LANGUAGES[(int)$id_lang]['iso_code'])) return self::$_LANGUAGES[(int)$id_lang]['iso_code']; return false; } 

    b- tools klasörüm aynı şekilde duruyor. ben "admin" klasörünün adını "tools1" olarak değiştirdim

    c- 5 tane prestashop web sitem var.
    csv olarak aktarmak istediğim 50 bin kalem ürün
    ve 700 civarında da alt katagorim var.
    ayrıca sitelerimden 1 tanesi için SSL ve Static IP kullanmak istiyorum.
    ve türkçe karakter sorunu
    da biliyorsunuz zaten bu konu başlığımda türkçe sorunu.

    Dediğiniz gibi "LiteSpeed" kullanmayan, bu özelliklerde bana önereceğiniz bir host var mı acaba. bir arkadaş "hostgator" kullan sorun yaşamazsın dedi. bende sizin bu mesajınızı görmeden önce hostgator’un paketlerine bakıyordum. bence;
    shared hosting benim 4-5 adet sitem için uygun değil.
    dedicated ise çok pahalı.
    bana uygun olan ya reseller (bayi hosting) veya VPS hosting almam gerekiyor sanırım.
    Bu konuda da bir öneri yazarsanız çok sevinirim.
    Saygılarımla
    Aybars

    Cevap
  5. MehmetGuler - 29 Mart 2017 at 02:58

    Merhaba;
    $_LANGUAGES değişkenini direk kullanabilirsiniz. Yani sınıf metodlarını kullanmadan dizi şeklinde işleyebilirsiniz.
    Fakat tabiki bu bir çekirdek modifikasyonu olacaktır. Yani modüler ve herkesi kapsayan bir çözüm değil.

    Gördüğüm kadarıyla litespeed klasiklerinden birisini yapıp bazı sınıfları derlemeye dahil etmiyor. Bunu genelde ayrılan ram yetmediği zaman yapar. Standart 128MB dır. CVC dosyanız büyükse bunun nesnel (dumped) şekli bu boyutu aşmıştır.
    Sadece bu hata (getbyIso) için bir çözüm arıyorsanız bulabiliriz.Ama kalıcı ve kesin olmayacaktır.
    Hosting tavsiyesi ile ilgili burada birşey yazmıyorum. Etik olmaz. Gönderdiğiniz PM’e cvp yazdım.

    İyi çalışmalar.

    Cevap
  6. Peda - 29 Mart 2017 at 02:58

    hostumu değiştirip hostgatora geçtim. vps aldım. prestayı tekrar kurdum. sonuç ? yine aynı problem devam ediyor.
    bu problem tamamen presta ile alakalı…

    Cevap
  7. Peda - 29 Mart 2017 at 02:58

    ama şunu da eklemek istiyorum siteyi localhostta wamp ile çalıştığımda Türkçe import sorunsuz çalışıyor.

    Cevap
  8. Peda - 29 Mart 2017 at 02:58

    ben de yaşadım, sorun server’da çalışınca ortaya çıkıyor. belki dosya izni, belki başka birşey. bilemiyorum.

    önce prestashop’u local’e kurun, import edin, sonra database’i server’a yükleyin.

    ancak bu şekilde oluyor, beni de çok uğraştırdı.

    Dediğiniz şekilde belki 1 kereliğine düzgün yüklenebilir ama kısa periyodlarda ürün yükleyen ve sık sık ürün bilgilerini veya fiyatlarını güncelleyen Türkçe import yapan kullanıcılar için kalıcı bir çözüm gerekiyor.

    Cevap
  9. Peda - 29 Mart 2017 at 02:58

    işte budur. çok teşekkür ederim. sorun çözüldü. Türkçe karakterleri de gösteriyor fakat Türkçe karakterle başlayan kelimenin ilk harfini göstermiyor. Katagorilerimden birinin adı Şanzıman. Bu kelimeyi anzıman olarak gösteriyor.

    Bu hatayı düzeltmek te diğeri kadar zor mu yoksa bunu düzeltmenin kolay bir yolu var mı?

    Tekrar teşekkür ederim çok önemli bir sorun çözülmüş oldu. İyi çalışmalar dilerim.

    Cevap
  10. MehmetGuler - 29 Mart 2017 at 02:58

    Resmi ekledimAttached File  sanzıman.jpg   46.62KB   47 downloads

    Utf-8 kullanın
    Notepad++ kullanıyorsanız (ki yazılımcıysanız muhakkak kullanırsınız)
    convert utf-8 without bom seçeneğini kullanın.

    Cevap
  11. Peda - 29 Mart 2017 at 02:58

    zaten bomsuz olarak kodluyorum. normalde open office ile csv’ye çeviriyorum. bu kez sizin dediğiniz gibi notepad++ dan denedim ama yine de kelimenin başındaki büyük Ş harfini göstermiyor.

    Cevap
  12. MehmetGuler - 29 Mart 2017 at 02:58

    Merhaba;
    Araştırıyorum, bunu da çözeceğim

    Cevap
  13. Peda - 29 Mart 2017 at 02:58

    çok sağulun, bunlar ufak detaylar gibi görünüyor ama bence çok çok önemli. ciddi bir site yapmak istiyorsanız bu gibi hataların olmadığı bir site olmalı. sizin sayenizde birçok sorun çözülüyor emeğinize sağlık teşekkür ederim.
    ben de üzerinde uğraşıyorum, birşey bulursam buradan bildiririm.

    Cevap
  14. Peda - 29 Mart 2017 at 02:58

    Sorun çözüldü arkadaşlar.
    2 tane sorun vardı:
    1- .csv import ederken Türkçe’yi seçtiğinizde hata veriyordu. (Detayları yukarıda)
    2- Türkçe karakterler görünmüyor kayboluyordu. Mesela bendeki hada katagorilerde kelimenin başındaki "Ş" harfi yok oluyordu. (Detayları yukarıda)

    Birinci hata geçen gün Mehmet Bey sayesinde çözüldü.

    Aşağıdaki çözüm ise 2 problemi birden çözüyor:

    (prestashop_1.4.4.1) AdminImport satır 1683-1684 iptal et ve aşağıya da aşağıdaki satırı ekle:

     setlocale(LC_ALL, 'en_US.UTF-8'); 

    Sonuç şu şekilde:

       /*setlocale(LC_COLLATE, strtolower($iso_lang).'_'.strtoupper($iso_lang).'.UTF-8');   setlocale(LC_CTYPE, strtolower($iso_lang).'_'.strtoupper($iso_lang).'.UTF-8');*/     setlocale(LC_ALL, 'en_US.UTF-8'); } 

    Kolay gelsin herkese.

    Cevap
  15. osmankarakus - 29 Mart 2017 at 02:58

    arkadaş admin import nedir dosyamı tablomu bulamadım yardımcı olurmusun ?

    Cevap
  16. Peda - 29 Mart 2017 at 02:58

    AdminImport = /public_html/admin/tabs/AdminImport.php

    Cevap
  17. ares_34 - 29 Mart 2017 at 02:58

    Version 1.3.1.1 için aynı soruna bir çözüm üretebilirmiyiz arkadaşlar.

    Kod dizisi aynı değil

    Cevap
  18. tatar - 29 Mart 2017 at 02:58

    arkadaslar excell belgesinde kaydettiginiz dosyayı atarken gerçekten hata veriyor ben buldugum yöntem sayesinde sorunsuz yüklüyorum şablonumuzu excellde hazırlıyoruz sonra openoffice indiriyoruz openofficede calc yani excell özelliginde şablanumuzu açıyoruz dosyadan farklı kaydet diyoruz 'virgülle ayrılmış CSV ' dosyasını seçiyoruz aşagıda bulunan 'süzgeç ayarlarını düzenle' yi seçiyoruz kaydet diyoruz önümüze gelen ekranda geçerli biçimde devam et diyip utf-8 i seçiyoruz alan ayırıcı kısmındaki virgülü noktalı virgül ; yapiyoruz kaydet diyoruz admin panelden upload ediyoruz içeri atarken ingilizce dilini seçiyoruz ingilizce olarak içeriye yüklüyoruz sorunsuz atıyor sonra sitemizdeki arama menüsünden eksik dizinleri ekle dersek artık arama kısmındada ürünler gözükür. kolay gelsin

    Cevap
  19. SedatKar - 29 Mart 2017 at 02:58

    exel'de şablonu hazırlayıp kaydedin. sonra dosyayı notdefteri ile açıp utf-8 ile kayıt edin sorununuz çözülecektir.

    Cevap
  20. MehmetGuler - 29 Mart 2017 at 02:58

    Arkadaşlar bu sorunu çözüp yazmıştım ama link bozuldu şimdi bulamıyorum. Konu yeniden hortlamış ve çözüm konusunda başa dönülmüş. Linki düzelttim. http://www.prestasho…ozumu-t592.html
    İçeriğini tekrar yazıyorum.

    1.) Prestashop kurulu dizin/yönetim paneli klasörü/tabs/AdminImport.php dosyasını açın ve aşağıdaki kodu bulun

       setlocale(LC_CTYPE, strtolower($iso_lang).'_'.strtoupper($iso_lang).'.UTF-8');*/ 

    2.) kodu silin veya açıklama satırı haline getirin (başına // ekleyerek açıklama satırı haline getirebilirsiniz)
    3.) Hepsi bu kadar. Şimdi düzenlediğiniz dosyayı kaydedip yeniden deneyin.

    Son olarak: konu bütünlüğünün dağılmaması için lütfen;
    1.) Farklı konular için farklı başlıklar açınız
    2.) Konuyu okumadan çözüm önermeyiniz.
    İyi geceler

    Cevap
  21. MehmetGuler - 29 Mart 2017 at 02:58

    arkadaslar excell belgesinde kaydettiginiz dosyayı atarken gerçekten hata veriyor ben buldugum yöntem sayesinde sorunsuz yüklüyorum şablonumuzu excellde hazırlıyoruz sonra openoffice indiriyoruz openofficede calc yani excell özelliginde şablanumuzu açıyoruz dosyadan farklı kaydet diyoruz 'virgülle ayrılmış CSV ' dosyasını seçiyoruz aşagıda bulunan 'süzgeç ayarlarını düzenle' yi seçiyoruz kaydet diyoruz önümüze gelen ekranda geçerli biçimde devam et diyip utf-8 i seçiyoruz alan ayırıcı kısmındaki virgülü noktalı virgül ; yapiyoruz kaydet diyoruz admin panelden upload ediyoruz içeri atarken ingilizce dilini seçiyoruz ingilizce olarak içeriye yüklüyoruz sorunsuz atıyor sonra sitemizdeki arama menüsünden eksik dizinleri ekle dersek artık arama kısmındada ürünler gözükür. kolay gelsin

    Bunun sebebini 2 yıl önce bulmuştum. Sorun Excel in MS OOXML formatından kaynaklanıyor. Aslında prestashop'a MS'den veri katamak bile başlı başına mucizedir. MS ofis kendi tablo mimarsini sır gibi saklıyor. (Ama sır değil) Kendi ürettiği dosyayı okunamayacak halde kriptoluyor. (Ben bile okuyabilecek bir yazılım yaptım, Google Docs bununu çözümünü 7 yıldır ücretsiz sağlıyor) Sonuçta kesin bir export sistemi yapmak imkansız oluyor. Csv en basit veri saklama formudur. Eğer MS ofis açık kaynak olsaydı şimdi direk xls hatta .docx formatından import yapabilirdiniz.

    Cevap
  22. constantina - 29 Mart 2017 at 02:58

    Arkadaşlar bu sorunu çözüp yazmıştım ama link bozuldu şimdi bulamıyorum. Konu yeniden hortlamış ve çözüm konusunda başa dönülmüş. Linki düzelttim. http://www.prestasho…ozumu-t592.html
    İçeriğini tekrar yazıyorum.

    1.) Prestashop kurulu dizin/yönetim paneli klasörü/tabs/AdminImport.php dosyasını açın ve aşağıdaki kodu bulun
     

       setlocale(LC_CTYPE, strtolower($iso_lang).'_'.strtoupper($iso_lang).'.UTF-8');*/ 

    2.) kodu silin veya açıklama satırı haline getirin (başına // ekleyerek açıklama satırı haline getirebilirsiniz)
    3.) Hepsi bu kadar. Şimdi düzenlediğiniz dosyayı kaydedip yeniden deneyin.

    Son olarak: konu bütünlüğünün dağılmaması için lütfen;
    1.) Farklı konular için farklı başlıklar açınız
    2.) Konuyu okumadan çözüm önermeyiniz.
    İyi geceler

    Prestashop 1.6 versiyonunda tabs klasöründe bahsedilen dosya yok. Fakat dizin/controllers/adminimportcontroller.php dosyasında aynı satırı değiştirmek işe yarıyor. Teşekkürler :)

    Cevap
  23. serdarsa - 29 Mart 2017 at 02:58

    merhabalar, 1.7 versiyonunda ingilizce yüklüyor, yalnız türkçe de 500 hatası veriyor. bir fikriniz varmı?

    Cevap
  24. Şahin YILDIZ - 29 Mart 2017 at 02:58

    merhabalar, 1.7 versiyonunda ingilizce yüklüyor, yalnız türkçe de 500 hatası veriyor. bir fikriniz varmı?

    Aşağıdaki işlemi uygulayıp deneye bilir misin.

    controllers/admin/AdminImportController.php

    Bu:

     public static function setLocale()     {         $iso_lang  = trim(Tools::getValue('iso_lang'));         setlocale(LC_COLLATE, strtolower($iso_lang).'_'.strtoupper($iso_lang).'.UTF-8');         setlocale(LC_CTYPE, strtolower($iso_lang).'_'.strtoupper($iso_lang).'.UTF-8');     } 

    Değiştir:

     public static function setLocale()     {         $iso_lang  = trim(Tools::getValue('iso_lang'));         /*setlocale(LC_COLLATE, strtolower($iso_lang).'_'.strtoupper($iso_lang).'.UTF-8');          setlocale(LC_CTYPE, strtolower($iso_lang).'_'.strtoupper($iso_lang).'.UTF-8');*/           setlocale(LC_ALL, 'en_US.UTF-8');     } 
    Cevap

Cevap bırakın