Sziasztok. A php kódomból szeretném kiszedni a gettext() -ben lévő szöveget, és elmenteni .po fileba. régen ez valami xgettext programmal sikerül, de most sehogy sem akar összejönni. win7 alá. köszi.
gettext()
Magyar szöveg van benne, és ha megcsinálod a fordításait .mo fileba, akkor többnyelvű lesz az oldal. de ami kiszedné a php fileokból a fordítandó szöveget, azt a progit nem tudom feltenni. az írják, hogy a gnu gettext progival kell, és hogy az nem windows alá való. kell valami emulátor. feltettem ezt a gnu gettextet, de indítás után bevillan egy dosos ablak és ennyi. aki fejlesztett már többnyelvű weboldalt, az leírhatná hogy kell. 1x már összejött régen, de nem emlékszem hogy:)
Egy fv-nek van egy / több bemenő paramétere, és visszaadott értéke. Ennek egy input string és egy output string. Ez így még mindig értelmetlen:
Magyar szöveg van benne, és ha megcsinálod a fordításait .mo fileba, akkor többnyelvű lesz az oldal.
, de már kapisgálom, hogy mit szeretnél.
aki fejlesztett már többnyelvű weboldalt, az leírhatná hogy kell
Párat már csináltam, meg kell mondanom, hogy soha nem használtam ezt a gettext-et. :)
Olyan nincs, hogy így vagy úgy kell, többféle használható megoldás létezik.
Azt én semmiképp sem javaslom, hogy bármilyen szoftver "kiszedné a php fileokból a fordítandó szöveget". Nem hiszem, hogy oda való, hacsak nem php-k a nyelvi fájlok (akkor pedig nem kell senkinek sem kiszedni).
Általában nyelvi kulcs - érték párokkal szokás operálni, akár fájl alapon, akár db-ben. php fájlokban / template-ekben pedig a kívánt kulccsal egy fv visszaadja az adott nyelven a szöveget. Az aktuális nyelv session-ben - sütiben - akárhol máshol van.
Minden nyelven létezik ez a fájl, pl en.php, hu.php, stb.
A rendszer a beállított nyelvnek megfelelő fájlt tölti be, vagy a default-ot.
A Language class - odnak van mondjuk egy GetText fv-e:
public function GetText(string $Key) : string {
if (isset($this->Items[$Key])) {
return $this->Items[$Key];
} else {
return "$Key language item not exists!";
}
}
ami bármikor visszaadja neked a kívánt szöveget. (Mondjuk érdemesebb kivételt dobni, ha nincs meg.)
Az osztály konstruktorában kell betölteni az adott nyelvű fájl tartalmát az Items property-be.
Ez a módszer max néhány ezer nyelvi kulcsig használható, felette adatbázis inkább.
Az általad óhajtott gettext gyakorlatilag kész szöveget akar mindig átfordítani másik nyelvre, ez biztosan sokkal lassabb, mint a kulcsok használata.
Ha csinálsz egy po fájlt poedittel, akkor a google találatok szerint be lehet állítani, hogy a po fájlba milyen forrásfájlokból nyerje ki a fordítandó szövegeket. Itt kellene megadni a php fájlok elérését, nem pedig php fájlt próbálni megnyitni vele.
Most mondanám, hogy grep, meg írsz hozzá egy regexet és annyi, de mivel windows, ezért gyanítom valami grafikus vacak kéne, olyat meg most hirtelen nem tudok. AlternativeTo oldalon nézz szét, hátha találsz valami használhatót.
Köszi ezek jó ötletek, de
már mindenhol a gettext()-et használom több 100 van belőle, megvan a rendszer már nem akarom átírni. Esetleg van valaki, aki ismeri a php gettext() függvényt?
A gettext-ben lévő szöveget kell kiszednem .po fileba. Ebből a poeditben elkészítem a fordítást, és .mo fileként feltöltöm a netre és már megy is. de kellene az a progi, ami kiszedi a php filebol.
már mindenhol a gettext()-et használom több 100 van belőle
És azért, hogy ez így is maradhasson (fixed mindset), inkább kézzel - szemmel átvizsgálsz több 1000 kódsort? Nem hiszem, hogy meg fogod úszni, nincs az a feldolgozó, amelyik ilyesmiben nem téved valamennyit.
Ha pedig így is úgy is át kell nyálazni / írni, akkor miért nem csinálod meg jól?
Értem én, hogy
megvan a rendszer már nem akarom átírni
, de ennyi erővel azt is mondhatnád, hogy "elrontottam, és nem akarom ugyanannyi munkával megjavítani, inkább tovább hegesztgetem a rosszat, hátha az kevesebb energia". Ez viszont nem szokott jó megoldáshoz vezetni, és többnyire összességében még több munkát igényel, mint egy becsületes refact.
Ne álmodj olyan külső eszközről, ami tévedhetetlenül kiszedi neked csak a nyelvileg fontos / hasznos stringeket php-ból, megkülönbözteti pl sql query-ktől, stb stb...
Ilyen biztosan nincs, vagy ha van, akkor szép nagy hibaszázalékkal.
A másik, hogy nem jó megoldás az, hogyha minden egyes szöveget kvázi lefordítani kell egy fv-nek. Legalább 2x lassabb, mint adott nyelvből kulcs alapján kiválasztani.
Szerintem gondold át mégegyszer ezt a többnyelvű dolgot, és döntsd el, mi éri meg jobban.
Nem igazán értelek. Semmit nem kell átvizsgálnom. Minden betüt a kodomban kézzel gépelek, és amikor egy szöveghez érek eleve gettext- el gépelem be, semmi nem marad ki. És azt sem értem, hogy a php gettext függvény, amit nem én találtam ki, miért rossz döntés?
Amúgy ti mondtátok, hogy így kell és 1x már össze is jött. korábbi forum topic
Örülök, hogy ezt sikerült megoldanod, pláne, hogy akarsz fejlődni!
Amit viszont fentebb írtam módszert, az csak amolyan "gyorsan összeszedem a lényeget fejből" dolog, szóval ha azon az úton mész, mindenképp érdemes megnézni pl több framework-öt / cms-t, amikben van hasonló megoldás.
Valószínűleg sok ötletet meríthetsz belőle, ha saját magad akarod lefejleszteni - vagy esetleg megtetszik az egyik fw annyira, hogy használd is.. :)
Én javaslom, hogy maradj a gettextnél saját tákolás helyett. Több olyan problémára is megoldást kínál, amibe talán eddig nem futottál bele. Sok kész eszköz van hozzá, amik segítségével kiadhatod a fordítónak a melót.
???
Kicsit érthetőbb kérdés és az, hogy mit próbáltál és mi történt - segítene előre haladni.
gettext() Magyar szöveg van
Magyar szöveg van benne, és ha megcsinálod a fordításait .mo fileba, akkor többnyelvű lesz az oldal. de ami kiszedné a php fileokból a fordítandó szöveget, azt a progit nem tudom feltenni. az írják, hogy a gnu gettext progival kell, és hogy az nem windows alá való. kell valami emulátor. feltettem ezt a gnu gettextet, de indítás után bevillan egy dosos ablak és ennyi. aki fejlesztett már többnyelvű weboldalt, az leírhatná hogy kell. 1x már összejött régen, de nem emlékszem hogy:)
Nincs benne szöveg
Olyan nincs, hogy így vagy úgy kell, többféle használható megoldás létezik.
Azt én semmiképp sem javaslom, hogy bármilyen szoftver "kiszedné a php fileokból a fordítandó szöveget". Nem hiszem, hogy oda való, hacsak nem php-k a nyelvi fájlok (akkor pedig nem kell senkinek sem kiszedni).
Általában nyelvi kulcs - érték párokkal szokás operálni, akár fájl alapon, akár db-ben. php fájlokban / template-ekben pedig a kívánt kulccsal egy fv visszaadja az adott nyelven a szöveget. Az aktuális nyelv session-ben - sütiben - akárhol máshol van.
Fájl pl. nagyon leegyszerűsítve:
A rendszer a beállított nyelvnek megfelelő fájlt tölti be, vagy a default-ot.
A Language class - odnak van mondjuk egy GetText fv-e:
Az osztály konstruktorában kell betölteni az adott nyelvű fájl tartalmát az Items property-be.
Ez a módszer max néhány ezer nyelvi kulcsig használható, felette adatbázis inkább.
Az általad óhajtott gettext gyakorlatilag kész szöveget akar mindig átfordítani másik nyelvre, ez biztosan sokkal lassabb, mint a kulcsok használata.
Poedit
az van fönt, de .po vagy .mo
Ha csinálsz egy po fájlt
grep?
Köszi ezek jó ötletek, de
már mindenhol a gettext()-et használom több 100 van belőle, megvan a rendszer már nem akarom átírni. Esetleg van valaki, aki ismeri a php gettext() függvényt?
A gettext-ben lévő szöveget kell kiszednem .po fileba. Ebből a poeditben elkészítem a fordítást, és .mo fileként feltöltöm a netre és már megy is. de kellene az a progi, ami kiszedi a php filebol.
A kevesebb néha több
Te is linkelted, van aki ismeri.
És azért, hogy ez így is maradhasson (fixed mindset), inkább kézzel - szemmel átvizsgálsz több 1000 kódsort? Nem hiszem, hogy meg fogod úszni, nincs az a feldolgozó, amelyik ilyesmiben nem téved valamennyit.
Ha pedig így is úgy is át kell nyálazni / írni, akkor miért nem csinálod meg jól?
Értem én, hogy
Ne álmodj olyan külső eszközről, ami tévedhetetlenül kiszedi neked csak a nyelvileg fontos / hasznos stringeket php-ból, megkülönbözteti pl sql query-ktől, stb stb...
Ilyen biztosan nincs, vagy ha van, akkor szép nagy hibaszázalékkal.
A másik, hogy nem jó megoldás az, hogyha minden egyes szöveget kvázi lefordítani kell egy fv-nek. Legalább 2x lassabb, mint adott nyelvből kulcs alapján kiválasztani.
Szerintem gondold át mégegyszer ezt a többnyelvű dolgot, és döntsd el, mi éri meg jobban.
Nem igazán értelek. Semmit
Amúgy ti mondtátok, hogy így kell és 1x már össze is jött.
korábbi forum topic
Hirtelen ezt találtam:
Xgettext Windows alatt - StackOverflow
Gettext PHP lib - GitHub
Megtaláltam.
Először a poeditet próbáltam, de az nem szedte ki a phpbol a gettextet.
Viszont az easypo igen! :)
köszi.
Egyébként tényleg Pepita módszere a legjobb, külső program nélkül lehet így megoldani, legközelebb már ezzel csinálom. köszi!
Keress igazán jót
Amit viszont fentebb írtam módszert, az csak amolyan "gyorsan összeszedem a lényeget fejből" dolog, szóval ha azon az úton mész, mindenképp érdemes megnézni pl több framework-öt / cms-t, amikben van hasonló megoldás.
Valószínűleg sok ötletet meríthetsz belőle, ha saját magad akarod lefejleszteni - vagy esetleg megtetszik az egyik fw annyira, hogy használd is.. :)
Én javaslom, hogy maradj a