Array-ek fordítása

Kicsit megakadtam.











Adva van egy sablon, amihez éppen admin panelt gyártok, a functions.php-ban szerepelnek olyanok, hogy









Code:

array( "name" => "Mákoskalács"

"desc" => "Mákoskalácsot ide",

"id" => $shortname."_makoskal_acs",

"type" => "text",

"std" => ""),





Ez az admin panelen létrehoz egy szekciót Mákoskalács névvel, benne egy szövegbeviteli mezőt, "Mákoskalácsot ide" leírást a szövegmezőhöz (értelemszerűen a mákoskalácsos dolgok helyén a valódi szövegek állnak, angolul).





A gond az, hogy megpróbálom nemzetköziesíteni a dolgot, ezért átírom





Code:

array( "name" => __("Mákoskalács", "sablonneve"),

"desc" => __("Mákoskalácsot ide", "sablonneve"),

"id" => $shortname."_makoskal_acs",

"type" => "text",

"std" => ""),





formára. A debug nem jelez hibát, a funkció működik, a poEdit legenerálja a katalógusban a __() dolgokat, fordítás is megvan stb, mégsem fordítódik. A functions.php azon elemei, amik html-ként szerepelnek (pl. az admin panel fejléce, a mentés gomb stb) tökéletesen lefordulnak, csak ezek az @&;! array-ek nem. Echoval meghal. _e-vel is meghal.





Van valakinek ötlete?

Code:

array( 'name' => '__("Mákoskalács", "sablonneve")',

'desc' => '__("Mákoskalácsot ide", "sablonneve")',

'id' => $shortname.'_makoskal_acs',

'type' => 'text',

'std' => ''),








esetleg így? nem tudom, annyira nem vágom, de egy próbát megér :D

Sajnos nem, így is próbáltam már. Így a ‘’ között lévő cuccot egy-az-egyben visszaadja __(“Mákoskalács”, “sablonneve”)-ként. :frowning:

Akkor gondolom a ‘’.__(“Mákoskalács”, “sablonneve”).’’, is volt már :smiley:

esetleg úgy, hogy előtte egy változóba teszed a dolgot?











$neve = __(“Mákoskalács”, “sablonneve”);











és akkor az arrayban a “name” => $neve, megoldással.

Bármilyen dupla idézőjeles megoldást nehezen tűr, visszadobja expected “)” on line… hibával.

Írom így mert nem látszik jól:









Code:

''.__("Mákoskalács", "sablonneve").''

No, változóval eddig nem próbáltam, de most igen. Természetesen így is teljesen jól beemeli a tartalmat, viszont fordítás ismét nincs.





Hasonló a helyzet a









Code:

''.__("Mákoskalács", "sablonneve").''





megoldással is, gyakorlatilag ugye elérak egy semmit, mögé még egy semmit, közé a mákoskalácsot, visszaadja hibátlanul -- csak épp nem fordítja le. :D

és ha kiiratod a $neve változót echo val akkor lefordítja?

Sajnos nem. :frowning: Kínomban kipróbáltam printtel, erre visszaad egy boolean 1-et. :lol:





Mára feladtam. :slight_smile:

közben találtam egy olyat, hogy van a wp-includes mappában egy l10n.php nevű file, amiben van a translate funkció, amivel még lehetne próbálkozni.









Code:

function translate( $text, $domain = 'default' )





így akkor


Code:

$neve=translate("szöveg", "sablonneve");

Hm, így viszont vissza sem adja…


'psztrnk' wrote on '2010-09-21:




Kicsit megakadtam.





Adva van egy sablon, amihez éppen admin panelt gyártok, a functions.php-ban szerepelnek olyanok, hogy





Code:

array( "name" => "Mákoskalács"

"desc" => "Mákoskalácsot ide",

"id" => $shortname."_makoskal_acs",

"type" => "text",

"std" => ""),





Ez az admin panelen létrehoz egy szekciót Mákoskalács névvel, benne egy szövegbeviteli mezőt, "Mákoskalácsot ide" leírást a szövegmezőhöz (értelemszerűen a mákoskalácsos dolgok helyén a valódi szövegek állnak, angolul).





A gond az, hogy megpróbálom nemzetköziesíteni a dolgot, ezért átírom





Code:

array( "name" => __("Mákoskalács", "sablonneve"),

"desc" => __("Mákoskalácsot ide", "sablonneve"),

"id" => $shortname."_makoskal_acs",

"type" => "text",

"std" => ""),





formára. A debug nem jelez hibát, a funkció működik, a poEdit legenerálja a katalógusban a __() dolgokat, fordítás is megvan stb, mégsem fordítódik. A functions.php azon elemei, amik html-ként szerepelnek (pl. az admin panel fejléce, a mentés gomb stb) tökéletesen lefordulnak, csak ezek az @&;! array-ek nem. Echoval meghal. _e-vel is meghal.





Van valakinek ötlete?








Szia,





Ha kipróbálod a módosított tömbödet (pl.: var_export()) látni fogod, hogy mi a baj: Fatal error: Call to undefined function __() in angry.gifhtdocstest.php on line...


A PHP a __ (két alulvonással) kezdődő dolgokat fenntartja magának mint magic methosokat, de mivel nincs ilyen függvényed elszáll.


http://www.php.net/manual/en/userlandnaming.rules.php





A tömbökről bővebben itt találsz infot: http://www.php.net/manual/en/language.types.array.php

Köszönöm, eddig akkor rendben lennénk. De akkor mégis miként tudom tömbökön belül a fordítást megoldani?

És ha a tömbbe egy (alap) nyelven rakod bele és amikor kiszeded onnan akkor fordítod le? Mondjuk akkor a Poedit nem találja meg, vagy rosszul, de mint megoldás jó lehet.

Na most már engem is érdekelne a megoldás :smiley: Beleszaladtam ugyan ebbe a problémába… Nekem nem plugin, hanem sablon, de ugyan úgy nem működik…

Jó nagy f@sz vagyok :smiley: Elfelejtettem a .mo .po file-t frissíteni, persze hogy nem fordultak :smiley: De már működik, és array en belül is működik a __(“szöveg”,“textdomainneve”) formula.











Nálad akkor más galiba lehet.