RSS Feed

Posts Tagged ‘64bit’

  1. WordPress magyarítás 64 bites szerveren 2

    November 15, 2007 by nyu

    Sikerült újabb infókat szereznem erről a problémáról. Úgy tűnik ebben a support bejegyzésben leírt patch és némi Trac olvasgatás után megvan a megoldás 32 és 64 bites szerverekre. A következő kódrészletre cseréljétek ki a wp-includes/gettext.php 105-124 sorait:

    		// Caching can be turned off
    		$this->enable_cache = $enable_cache;
    
    		// $MAGIC1 = (int)0x950412de;
    		//bug in PHP 5.0.2
    		//see https://savannah.nongnu.org/bugs/?func=detailitem&item_id=10565
    		$MAGIC1 = (int) - 1794895138;
    		// $MAGIC2 = (int)0xde120495; //bug
    		$MAGIC2 = (int) - 569244523;
    		// 64-bit fix
    		$MAGIC3 = (int) 2500072158;
    
    		$this->STREAM = $Reader;
    		$magic = $this->readint();
    
    		// to make sure it works for 64-bit platforms
    		if ($magic == $MAGIC1 || $magic == $MAGIC3) {
    			$this->BYTEORDER = 0;
    		} elseif ($magic == ($MAGIC2 & 0xFFFFFFFF)) {
    			$this->BYTEORDER = 1;
    		} else {
    			$this->error = 1; // not MO file
    			return false;
    		}

    Biztos, ami biztos alapon, ide:gettext.php rakom a patchelt fájt is, csak írjátok felül a wp-includes-ban levőt.


  2. WordPress magyarítás 64 bites szerveren

    November 14, 2007 by nyu

    Valószínűleg nem én vagyok az egyetlen, akinél nem működött elsőre a WordPress magyarítás. Először is rövid google keresgélés után Tom blogján ráakadtam a 2.3.1-es wordpress magyarítására. Az ott szereplő kis leírás alapján a dolog abszolút egyszerű: be kell másolni egy fájlt és meg kell adni a wp-config.php-ban, hogy ezt olvassa fel a WordPress. Hát akkor hajrá, és hát a mostani bejegyzés apropójából már kitalálható, hogy nem működött.

    Elkezdtem debug-olni. Első gyanúm, hogy valamit elcsesztem, tehát újra leellenőriztem minden telepítési lépést, de semmi. Aztán olvasgatni kezdtem a WordPress lokalizációs lehetőségeiről. Kiderült, hogy a népszerű gettext-et használja a fordítások kezelésére. Átnéztem a szerveren futó PHP-t, amin van gettext bővítmény, működik is. Akkor mi lehet?

    Következő lépésként felraktam a saját gépemre is egy WordPress-t, beraktam a fordítást és minden ment szépen. Itt derült ki számomra, hogy nem is kell, hogy a PHP rendelkezzen a gettext bővítménnyel, mivel a WordPress egy PHP-ban megírt osztályt használ ennek kiváltására: PHP-gettext. Akkor elő a debuggerrel, nézzük hogyan jut el a fordításban szereplő szöveg a felhasználóhoz. Hosszú-hosszú hibakeresés következett, de végül minden ötletem kudarcba fulladt, a szerveren lévő WordPress sehogy sem jeleníti meg a fordítást.

    Ekkor kezdtem a fordítási fájlt feldolgozó függvényekre koncentrálni, mivel az tisztán látszódott, hogy a fájl bekerül a memóriába, de a szövegeket a PHP-gettext nem tudja kiszedni. (A fordításokat tartalmazó fájl bináris.) Mivel nem akartam teljesen megérteni a PHP-gettext bináris feldolgozó eljárásait, megint jött a google és eljutottam a WordPress Trac changelog-jába, ahol a 4003-as revízióban érdekes dologra bukkantam. Ezek szerint a 64 bites gépeken nem tudja rendesen felolvasni a fordítási fájlt a WordPress-ben levő PHP-gettext. Elvileg áttértek az 1.07-es verzióra, ami ezt a hibát is javítaná, mégsem működik. Ekkor döntöttem úgy, hogy nem szarozok, kézzel befrissítem a PHP-gettext-et és CSODA történt! Megjelent a magyar fordítás!

    Tehát aki hasonlók miatt szenved:

    1. töltsd le a PHP-gettext legújabb verzióját
    2. tömörítsd ki
    3. lépj fel a szerverre, készíts biztonsági másolatot a wp-includes/gettext.php és a wp-includes/streams.php-ról
    4. a kitömörített könyvtárból másold át a szerverre a gettext.php-t és a streams.php-t a wp-includes könyvtárba, felülírva a régieket
    5. ha még nem csináltad meg a nyelvi fájl telepítési lépéseket, akkor tedd meg
    6. kész vagy!

    Nem tudom, hogy 100%-ban bugmentes-e a megoldás, de rövid tesztelés során, csak az admin felületen a Dashboard-on tapasztaltam némi hibát. Máshol minden ok. Elkezdem pedzegetni a kérdést a WordPress fejlesztőinél, kíváncsi vagyok mire jutok.