ugrás a tartalomhoz

PHP-Nuke magyarul (tapasztalat)

napalm · 2008. Ápr. 16. (Sze), 11.49
Problémám akadt PHP-Nuke teljesen magyarrá tételével kapcsolatban. (Hogy miért Nuke az most nem lényeges; egy meglévő portalt kellene pofozgatni, gondoltam először "offline" kipróbálom). Megosztom tapasztalataimat (hátha valakinek segít ha erre adja fejét, és nem akarja végigszívni ennek a "remek" CMS-nek a magyar telepítését.



A doksi szerint magyar nyelvet kezel, tehát ezzel elvileg (!) nem lehet gond.. 8.1-el próbálkoztam először, de ezzel egyéb admin gondok voltak, 8.0 végülis "jól" megy jelenleg.

Web install egyérelmű, katt, katt.

Aztán jöttek az első meglepetés:
A magyar nyelv támogatás valóban benne van, de csak nagyon idézőjelben.. a nyelvi definíciókat leíró fileban a felét magyarították, másik felét nem. (/language/lang-hungarian.php). Na nem gond, ezt végülis gyorsan bele lehet vésni, vagy a 8.1-ből a megfelelő filet egyyzerűen felülírni (csak tudnám miért írják ki, ha egyszer félig sincs kész..)

Ezután a hidegzuhany: magyar ékezetek kezelése. Bármilyen tartalmat próbáltam beilleszteni, az ékezetekkel gond támadt mind a publikus felületen, mind az admin felületen. Kis vizsgálódás után rájöttem, hogy többszintű a probléma.
Cél:
1. oldal karakterkódolás helyes beállítása (HTML META tag)
2. megfelelő adatbázis karakterkódolás beállítás.
3. megfelelő header beállítás

Egyszerűség kedvéért tegyük fel nem akarom Szvetlana Szlubnyikova saját karaktereit helyesen kezelni, elegendő lesz a magyar ékezetek kezelése, tehát UTF8-al nem foglalkozok.

1. Oldal karakterkódolás: /language/lang-hungarian.php-ban rögtön a legelső bejegyzés: define("_CHARSET","ISO-8859-2");. Örülünk, valóban megjelenik a META tagban.

2. Adatbázis karakterkészlet beállítás: rögtön 2 részre lehe bontani. Egyrészt milyen kódolással és rendezéssel (egybevetéssel) legyenek a táblák az adatbázisban, másrészt az adatbázissal való kommunikáció milyen karakterkészlettel történjen.

A webinstall során a Nuke nem kérdez rá a nyelvi mutációkra, ebből következően nem tudhatja beállítani a táblá létrehozásakor az alapértelmezett kódolást. Megvizsgálva a NUKE adatbázisát látható, hogy az összes tábla az SQL szerver alapértelmezett kódolásával jött létre. Ami ebben az esetben jó ha latin2. Ha erre volt állítva az alapértelmezett karakterkészlet akkor jó, ha nem akkor 3 dolgot lehet tenni:

- minden nuke_ táblán kézzel átállítod az egybevetést 'latin2_hungarian_ci'-re (csak vicc volt :D)
- átállítod az SQL szerver egybevetést 'latin2_hungarian_ci'-re és újrakezded az installt (ez is csak vicc volt)
- törlöd az összes táblát a NUKE adatbázisból, átállítod 'latin2_hungarian_ci'-re az adatbázist, és a NUKE csomagban található .sql filet beimportálod (/nuke/install/sql/nuke.sql). Ekkor elvileg minden tábla és a tartalom is a megfelelően elő van készítve.

De ez még nem elég, az adatbázis műveleteknél szintén illik megadni milyen karakterkészlettel kommunikálunk.
Nosza, vegyük is szemügyre a /db/mysql.php-t. A konstruktor függvénybe véssük bele a sikeres kapcsolódás után véssül bele a megfelelő parancsot : ... if($database != "") { mysql_query("SET NAMES latin2");....

Az adatbázisban a táblák megfelelően vannak beállítva; az adatbázissal való kommunikáció is. Örülünk.

3. HTTP Header beállítás. Na ez egy kicsit trükkös és logikátlan.
A főkönyvtárban ott a header.php, na ezzel egyszerű dolgom lesz.. gondoltam. A header beállítása után az adatbázisban levő tartalom jól jelenik meg a publikus felületen, azonban az admin felületre tévedve továbbra is rossz a katakterkódolás.
WTF?

Alapvetően 3 részből áll a nuke rendszere: index.php, modules.php, admin.php.
Bizonyos feltételek mellett a header.php includeolásra kerül az admin.php-ban is (erre nem jöttem rá pontosan mi-miért és mikor, de nem minden esetben kerül includeolásr a header.php minden oldalon..), mindenesetre a kódokat megvizsgálva egy include file van, ami a portalon mindenhol beszúrásra kerül kimenetre való nyomtatás nélkül: mainfile.php.
Akkor a mainfile.php elejére szúrjuk be mondjuk a PHP verzió megállapítása elé:
header('Content-Type: text/html; charset=iso-8859-2');

Ha ekkor megnézed az oldalt, és felviszel magyar ékezetes karaktereket az adatbázisba, akkor minden rendben levő kell legyen.

Ezeket beállítani 5 percnél nem több idő, tehát nem vészes a dolog.
Maga a PHPNuke meg olyan amilyen.. Ez a topicot a teljesen magyarrá tétele miatt indítottam, hátha hasznos lesz valaki számára.
 
1

Miért nem annak a beállításait használtad?

solkprog · 2008. Ápr. 16. (Sze), 15.40
Hát igen az élet nem mindig habos torta.
Php-nuke személy szerint soha nem telepítettem, feltelepítve használtam (kb 10 percet [természetesen admin szinten]).
Ebből kifolyólag nem akarom minősíteni, de azért azt hozzáteszem hogy e röpke idő alatt nem nőtt a szívemhez.
(nem rossz, de tény hogy van jobb CMS is nála)
"...egy meglévő portalt kellene pofozgatni, gondoltam először "offline" kipróbálom"
Miért nem annak a beállításait (fájljait, sql tábláit) használtad fel?