Jump to content
Peda

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

Recommended Posts

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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ı.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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ı...

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Resmi ekledimpost-101194-0-86733600-1316621175_thumb.jpg

 

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.

  • Like 1

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

ç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.

Share this post


Link to post
Share on other sites

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 Mahmut 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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

Kod dizisi aynı değil

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

  • Like 1

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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 :)

  • Like 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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');
    }

Share this post


Link to post
Share on other sites
On 4/17/2012 at 3:56 AM, MahmutGulerce said:

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

 

Edited by leecooper3
bu sorunu çözdü teşekkürler (see edit history)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More