PDA

Zobacz pełną wersję : Cyrylica, polskie znaki w wielojęzycznym sklepie VM



kraksa
27-06-2006, 13:12
Hej witam wszystkich.

Wiem, że "ten temat był już poruszany wielokrotnie", używam "search" i czytam "FAQ", ale z każdym czytanym wątkiem na ten temat głupieję jeszcze bardziej ..... :(. Zapewne dlatego, że nie orientuję się w języku programistów, a wszelkie problemy, które do tej pory udało mi się rozwiązać, rozwiązałem albo intuicyjnie (dzięki zautomatyzowanym funkcjom panelu admin. lub przez dokładne zastosowanie sie do wskazówek "doradców"). Nie udało mi się niestety pojąc jak mogę rozwiązać ten problem, chociaż jasne jest, że sprawa dotyczy kodowania ISO (być może nie tylko). Niestety w większości postów używane są wyrażenia, któych w sensie informatyki nie rozumiem ("zainkludowac footer.php w odpowiednim miejscu template'a", "uzyc bota do wstawiania kodu php w tresci") albo skróty zakłądające, że czytający jest przynajmniej średnio-zaawansowany ("ustaw kodowanie angielskie na iso 8859-2" - ok, ale gdzie się to ustawia??).

Ok przejdę do rzeczy. Mam taki problem:

1. Panel admina zarówno Joomli jak i Virtuemart mam po włosku (taka jest potrzeba) i strona ustawiona jest na włoski jako deault.
2. Mam dodatkowe wersje językowe: angielski, polski, rosyjski przetłumaczone za pomocą Joomfish.
3. Kiedy przechodzi się na stronie z wloskiej strony na polska lub rozyjska, polskie znaki i cyrylica sa wyswietlane dopoki nie wchodzi sie w kategorie produktow i tutaj juz pokazuja sie krzaczki.

Cholerka nie wiem niestety gdzie (tzn. w jakich plikach czy moze w phpMyAdmin) powinienem zaczac zmienianie kodowania, wklejanie tych fragmentów kodów, o których jest tyle napisane na forach... A propos - jak otwieram phpMyAdmin to widze ze mam ustawione:
- System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
- System porównań dla połączenia MySQL: utf8_general_ci
Nie mam pojęcia czy to moge zmienic czy nie, boje sie ruszac.
Mam tez zainstalowany Joomexplorer, wiec spokojnie moge znalezc odpowiednie pliki php, tylko nie wiem wlasnie ktorych powinienem szukac.

Inne informacje - uzywam:
Joomla! 1.0.8 Stable [ Sunshade ] 26-Feb-2006 05:00 UTC
VirtueMart 1.0.5
Joom!Fish Version 1.7, stable

Od czego powinienem zacząć?? Błagam pomóżcie.

Rybik
27-06-2006, 14:34
Odpisze co wiem a czego nie napisze to tylko z braku czasu do szperania po plikach. Sklepu nie mam zainstalowanego zeby to na zywo sprawdzac. Mam jednak nadzieje ze moze ktos docielkiwy zachecony wstepem dociagnie sprawe do konca.

<=== beletrystyka, szukac nastepnej strzalki :)

Można wpisać słowo "zainkludować" (http://www.google.pl/search?hl=pl&q=zainkludowa%C4%87&lr=) w google zeby dotrzec na forum webhelp gdzie wyszukanie powtorzyc i juz wiadomo jak. A co to znaczy to odsyłam do rzeczownika "inkluzja" (http://pl.wikipedia.org/wiki/Inkluzja_%28jubilerstwo%29). I o ile podmiotem jest plik (tu: footer.php) rozwiązanie powinno wykiełkować samo.
Termin "boty" (http://www.joomla.pl/pomoc/index.php?searchword=boty&option=com_search&Itemid=5) jest omowiony na serwerze pomocy. (dzisiaj dopisalem w tytule slowa kluczowe zeby wyskakiwal pierwszy w szukajce)
Google ładnie reaguje na frazę "joomla bot kod w treści" (http://www.google.pl/search?hl=pl&q=joomla+kod+w+tre%C5%9Bci+bot&lr=) i na stronie joomlapl.com mozna takiego bota znalezc razem z opisem.
Wszystkie zmiany dotyczace tylko wybranego jezyka musza odnosic sie do miejsc ktore sa przeznaczone jedynie dla wybranego jezyka - czyli pliki jezykowe, katalog /language a fragment tego pliku odpowiedzialny za kodowanie jest jedynym samotnym wpisem nie pasujacym do panujacego tam schematu :)

Nie pisze tego po to zeby jakos zdeklasowac zastrzezenia tylko zeby pokazac, ze wlasciwe podejscie myslowe do tematu wyszukiwarek to przydatna umiejetnosc. Sam niejednokrotnie sprawdzam czy rzeczywiscie da sie cos znalezc, gdy user pisze ze nie znalazl i czesto przerabiam nazwy tematow forum zeby umiescic w nich slowa kluczowe, albo robie nowy wpis do FAQ na pomocy (np. okazalo sie ze znalezienie tego, jak wplynac na format kodu modulow zajelo mi 30 minut, co mnie spienilo i dopisalem faka)

<== odpowiedz wlasciwa

Kodowanie w bazie danych, to ktore widac bez zaglebiania sie w jej strukture (system kodowania znakow dla MySQL i metoda porownywania znakow dla polaczen MySQL moze byc UTF i nie powinien miec wplywu na tresc) W nowo tworzonej bazie dla strony z polskim, angielskim, niemieckim i rosyjskim mam parametr "(domyslna) metoda porownywania napisow" latin2_general_ci i nie mialem zadnych problemow od frontu.

Jezeli w calej witrynie znaki sa dobrze tylko w VM od pewnego momentu zle to wiadomo ze przyczyna po stronie VirtueMarta... i co dalej ?
Podstwowoa czynnosc w takich sytuacjach to sprawdzic z grubsza co sie dzieje:
a) przelaczac w przegladarce widok/kodowanie tak dlugo az bedzie dobre i sprawdzic czy jest jedno dobre wspolne dla wszystkich jezykow (dotyczy tresci krzaczącej wczesniej, wiadomo, ze reszta witryny sie skrzaczy) jezeli jest jedno wspolne to podac jakie.
b) podejrzec zrodlo strony i podac jakie jest kodowanie(szukamy slowa charset) na samym poczatku i czy nie pojawia sie po raz drugi

Jezeli charset pojawia sie w zrodle 2 razy to trzeba znalezc w plikach VM kod gdzie to jest i zmienic ze sztywnego wpisu (sztywny znaczy podany wprost bez uzywania wstawki php odnoszacej sie do zmiennej ISO) na taka wlasnie wstawke - chociaz wyciecie go calkiem rowniez jest dobrym rozwiazaniem.

Jezeli charset sie nie pojawia 2 razy, to znaczy ze strona od poczatku jest dekodowana dobrze (o czym swiadczy poprawna tresc witryny) a zle znaki wysylane sa juz przez VM, bo Joomfisha nie podejrzewam, chyba ze ktos spapral wspolprace VM z fiszem. (bez wolnych 3 godzin i dostepu do bazy danych nie wydumam nic)

Wyjscie partyzanckie to po odnalezieniu wlasciwego kodowania tej czesci ktora normalnie sie krzaczy konwertowac kazdy tekst wstawiany do sklepu i wklejac z krzakami zeby zobaczyc z frontu ladne. (program gzegzolka ma opcje konwersji schowka)

Temat moze byc banalny a moze byc tez niezla masakra bo tu wspolpracuja 3 powazne silniczki i nie bardzo wiadomo co ktory w ktorym miejscu jak konwertuje. Moze sie okazac ze wystarczy przed rozpoczeciem dodawania translacji zmienic metode porownywania znakow dla pojedynczych tabel bazy danych obslugiwanych przez Joomfisha.

kraksa
27-06-2006, 16:17
Dzieki Rybik za odpowiedź...

<=== Beletrystyka - zgadzam się z Tobą, masz rację co do szukania, próbowania różnych haseł etc., czasem po prostu człowiek grzebiąc non stop w tej samej sprawie nabiera pewnego rodzaju znieczulicy (zmęczenie materiału). Czasem potrzeba maleńkiej wskazóweczki i człowiek posuwa się o 1000mil. Co do rozumienia używanych wyrażeń - też masz rację, chociaż specjalnie napisałem że chodzi o to, CO znaczy dane wyrażenie w mowie informatyków.


<=== Problem z tymi krzakami - c.d.
A wiec sprobowałem się zastosować do Twoich wskazówek.
a) przełączanie kodowania w przeglądarce nie naprowadziło na żaden trop.
b) jesli chodzi o podejrzenie źródła strony, to sytuacja jest taka, że jak mam na wersji polskiej albo rosyjskiej to w ogóle mi nie reaguje kiedy chcę podejrzeć źródło (ani jak klikam po Widok/Źródło ani CTRL-U), a kiedy jestem na wersji włoskiej lub angielskiej to to źródłó mogę podejrzeć. To , co mnie uderzyło, to fakt, że jest napisane:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> a nie
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2 />
(jeszcze zanim zacząłem ten wątek, to widziałem na forach róznych info że trzeba w przypadku różnych problemów ze złym wyświetlaniem znaków przełączyć na iso-8859-2... Tylko teraz jak to zrobić. Mowa o templatkach.. Otworzyłem plik /home//templates/madeyourweb/index.php do edycji (nie wiem czy właściwy plik, ale tu znalazłem te kody) i w częśći head jest tak:

<head>
<meta http-equiv="Content-Type" content="text/html; <?php echo _ISO; ?>" />
<?php mosShowHead(); ?>
<?php
if ( $my->id ) {
initEditor();
}
if ((mosCountModules( 'user1' )) && (mosCountModules( 'user2' ))) {
//if both modules are loaded, we need a 50%-layout for them
$usera = 'user1';
$userb = 'user2';
} else if ((mosCountModules( 'user1' )) || (mosCountModules( 'user2' ))) {
// if only one, then 100% no matter which one.
$usera = 'user3';
$userb = 'user3';
}
?>
<meta http-equiv="Content-Type" content="text/html; <?php echo _ISO; ?>" />
<link href="<?php echo $mosConfig_live_site; ?>/templates/madeyourweb/css/template_css.css" rel="stylesheet" type="text/css"/>
<link href="<?php echo $mosConfig_live_site; ?>/templates/madeyourweb/css/css_color_green.css" rel="stylesheet" type="text/css"/>
</head>

Dalej błądzę..?

kraksa
27-06-2006, 16:28
Acha jeszcze jedno : charset w źródle występuje tylko raz.

Rybik
27-06-2006, 16:44
tak na szybko bo wychodze...
zrodlo podgladaj z przegldarki FireFox, IE trzeba czasem popchnąć (F5) i spróbować jeszcze raz z podgladem zrodla
kodowanie dla wersji angielskiej zmienisz w /languages/english.php stamtad wlasnie pobierana jest zmienna ISO do szablonu
a krzaczace sie znaki sprawdz czy nie wygladaja dobrze po przelaczeniu firefoksa na kodowanie Zachodni ISO-8859-1

kraksa
28-06-2006, 18:07
A więc to znowu ja..

Podejrzałem źródła w FF przy każdej z wersji językowych. W każdym przypadku charset występuje tylko raz. Natomiast kody są następujące:

- wer. włoska (default) - charset=iso-8859-1
- wer. angielska - charset=iso-8859-1
- wer. rosyjska - charset=windows-1251"
- wer. polska - charset=iso-8859-2

Spróbowałem też, tak jak sugerowałeś, przełączyć kodowanie na zachodni ISO-8859-1 przy krzaczących sie stronach, ale nie pomaga. Sytuacja jest taka, że w obu przypadkach ros i pol. krzaki które były w napisach poch. z Virtuemart (tu: nazwy kategorii produktów) zostają "krzaczaste" PLUS zaczynaja sie krzaczyć napisy w modułach VM (tu: napisy w polu do logowania userów).

Ostatnie rzecz: zmieniłem kodowanie w home/language/italian.php i w english.php na 8859-2 (było 1) i nic się nie zmieniło jeśli chodzi o "krzaki". Jedyna zmiana (moja wcześniejsza zagadka, która dotyczy VM i na którą mi nikt nie odpowiedział na forum :( , tj. zniknął mi teraz we wł. wersji poziomy górny pasem menu w panelu admin VM......:confused: ).

No i co tu teraz począć ! :eek:

Pozdrawiam !

kraksa
03-07-2006, 18:48
Witam jeszcze raz w tej sprawie..

Odkryłam dziwną i niestety bynajmniej nie naprowadzającą mnie na żadne rozwiązanie rzecz, a mianowicie, że problem z polskimi i rosyjskimi znakami w Virtuemart (konkretnie chodzi o nazwy kategorii produktów) występuje tylko w przypadku najgłówniejszych kategorii. Kiedy wchodzę w podkategorię, wszystko wyświetla się ładnie i ż i ź i ó i cyrylica też......

Tak tylko napisałem.. może ktoś spotkał się z takim przypadkiem...

Pozdrawiam

Rybik
04-07-2006, 00:24
przejrzyj baze danych, tabele virtuemarta, czy te odpowiedzialne za trzymanie kategorii maja wlasciwy parametr "porownywanie znakow" czy jakos tak (ale nie ogolne dla bazy danych tylko w kazdej tabeli jest takie cuś), nie mam w tej chwili VM zainstalowanego zeby to przejrzec :/

kraksa
04-07-2006, 10:27
Przejrzałem baze i znalazłem 3 tabele, o które może chodzić. Załaczam w jpegu (w wordzie chcialem, ale za duzo wazy), może ktoś cos zasugeruje.. ja sie nie znam kompletnie na tych parametrach :o

Pozdrawiam i dzieki za cierpliwosc

magic
04-07-2006, 16:24
Generalnie to VM często (w różnych wersjach, najnowszej też) ma kłopoty z "krzaczkami". Poczytaj posty na ten temat na niniejszym forum i na forum producenta ...
Spróbuj jedną z takich podkategorii, które się dobrze wyświetlają przesunąć do góry (w adminie VM) - jako jedną z głównych. Zobacz czy dalej dobrze się wyświetla, czy pojawiły się "krzaczki". W ten sposób zorientujesz się, czy masz coś źle wpisane w bazie, czy to oprogramowanie VM źle obsługuje polskie znaki. To może też naprowadzić na miejsce (przyczynę) problemu.

Rybik
04-07-2006, 18:06
no to wymacałem :D
wykonaj w bazie danych zapytanie SQL



ALTER TABLE `jos_vm_category` DEFAULT CHARACTER SET latin2 COLLATE latin2_general_ci

sprawdz czy wyswietla dobrze (powinno), jezeli nie to po tej zmianie dopisz jakas kategorie z krzakami i sprawdz czy wyswietla dobrze

kraksa
04-07-2006, 22:29
Dzięki za "wniknięcie" w temat.

Trochę mi zajęło czasu zrozumienie jak takie zapytanie wysłać ostatecznie dostałem komunikat, że zapytanie wykonane pomyślnie. Niestety krzaki zostały. Dopisałem nową kategorię z krzakami, ale też ją źle wyświetla. Szkoda .. :(

Pozdrawiam

Rybik
05-07-2006, 00:42
wyslij mi jutro na maila dostep do panelu, ftp i sql, nie bardzo moge teraz na swoich kontach sprawdzac a inaczej to bedziemy postowac do wrzesnia bo jak po tej zmianie dalej sa jaja to juz troche po omacku bym chodzil

kraksa
05-07-2006, 09:15
Wyslalem.
dzieki

rzdeb
19-09-2006, 21:37
Napiszczie chłopaki co było z tym kodowaniem bo mam podobny problem, a tu topic się urywa w najlepszym momencie.

Domyślam się ze został problem rozwiązany :)

pozdrawiam
Rafał

kraksa
20-09-2006, 19:08
Czesc. Niestety nie zostal rozwiazany... a jesli zostal to ja przynajmniej nic o tym nie wiem ... :(
Pozdrawiam

nahagel
26-08-2008, 13:22
jeżeli to komuś pomoże:
miałem podobny problem z cyrylicą w opisach produktów. Zajrzałem do bazy (MySQL), wstawiłem cyrylicę z transkrypcji,czyli znaczki typu np. #1234; i pomogło. Wiem że to bardzo partyzanckie ale skuteczne.