FunkciókBővítményÁrazásForrások
Nyelv módosítása
ForrásokHogyan fordítsunk .po fájlokat a kódváltozók (%s, HTML) megsértése nélkül

Hogyan fordítsunk .po fájlokat a kódváltozók (%s, HTML) megsértése nélkül

SimplePoTranslate Team2025. november 25.
Hogyan fordítsunk .po fájlokat a kódváltozók (%s, HTML) megsértése nélkül

Egyszerű feladattal kezdődik: lefordítja a WordPress témáját spanyolra. Feltölti a .mo fájlt, frissíti az oldalát, és...

Fatal error: Uncaught ArgumentCountError: Too few arguments to function sprintf()...

Vagy talán az oldala betöltődik, de az elrendezés összeomlik, mert egy záró </div> taget lefordítottak </ div>-re.

Ez a lokalizációval foglalkozó minden fejlesztő legnagyobb félelme. Amikor általános fordítóeszközöket (például a Google Fordítót vagy az egyszerű AI wrappereket) használ technikai .po fájlokon, azok nem kezelik a kódot másképp, mint a szöveget. Megpróbálják "lefordítani" a változókat, és ezzel tönkreteszik a webhelyét.

Ebben az útmutatóban pontosan elmagyarázzuk, miért történik ez, és hogyan biztosítható a 100%-os kód biztonság az automatizált fordításokban.

A katasztrófa anatómiája: Miért töri el a weboldalt a %s

A WordPress a Gettext rendszert és a PHP függvényeket, például a sprintf()-et használja a dinamikus szöveg kezelésére.

Például lehet egy ilyen karaktersorozata: msgid "Search results for %s"

A %s egy helyőrző változó, ahová a PHP beszúrja a felhasználó keresési lekérdezését.

Hogyan rontja el ezt az általános AI

Ha ezt a karakterláncot egy szabványos nagy nyelvi modellbe (LLM) vagy fordítási API-ba táplálja, az a %s-t csak egy újabb furcsa szóként látja. Megpróbálhatja kijavítani a körülötte lévő nyelvtant vagy írásjeleket.

Íme a leggyakoribb szintaktikai hibák, amelyeket látunk:

  1. A hozzáadott szóköz:

    • Eredeti: Hello %s
    • Rossz fordítás: Hola % s
    • Eredmény: A PHP a %s-t keresi, de a % s-t látja. A változó nem töltődik be, ami gyakran végzetes hibát okoz.
  2. A HTML hallucináció:

    • Eredeti: Click <strong>here</strong> to login.
    • Rossz fordítás: Haga clic <strong>aquí</ strong> para iniciar sesión.
    • Eredmény: Az AI szóközt adott hozzá a záró tag-en belül </ strong>. A CSS tönkremegy, és az oldal többi része vastag betűvel jelenik meg.
  3. Az argumentum csere:

    • Eredeti: Page %1$s of %2$s
    • Rossz fordítás: Página %2$s de %1$s
    • Eredmény: Az AI úgy döntött, hogy a mondat jobban hangzik, ha a számokat felcserélik. Most az oldalszámozás azt mondja, hogy "Page 10 of 1".

A "manuális javítás" csapda

A legtöbb fejlesztő megpróbálja ezt a fájl manuális áttekintésével megoldani. Ha van egy kis beépülő modulja 50 karakterlánccal, az rendben van. De ha egy WooCommerce áruházat fordít le 5000 karakterlánccal?

5000 sornyi kódot átvizsgálni egyetlen hiányzó pontosvessző vagy egy %s változóban lévő extra szóköz miatt lehetetlen. Órákig tart, és az emberi szem elkerülhetetlenül kihagy valamit.

A Regex (reguláris kifejezések) szkriptek segíthetnek az előfordulás ellenőrzésében, de ritkán észlelik a kontextusfüggő átrendezési problémákat vagy a finom HTML attribútumok sérülését.

A megoldás: "Szintaxis zárolás"

A .po fájl biztonságos lefordításának egyetlen módja az, ha megakadályozzuk, hogy az AI egyáltalán hozzáérjen a kódhoz. Ehhez egy Szintaxis zárolás nevű folyamatra van szükség.

Ez a SimplePoTranslate mögött meghúzódó alaptechnológia.

Az általános eszközökkel ellentétben nem csak szöveget öntünk egy AI-ba. Először elemezzük a Gettext struktúrát. Így működik a "Safe Mode" módunk:

  1. Elemzés: Beolvassuk a .po fájlt, és azonosítunk minden változót (%s, %d), minden pozíció szerinti argumentumot (%1$s) és minden HTML taget (<br/>, <span>).
  2. Kinyerés és zárolás: Ideiglenesen eltávolítjuk ezeket az elemeket a karakterláncból, és megváltoztathatatlan tokenekkel helyettesítjük őket.
    • Bemenet: Hello <strong>%s</strong>
    • Amit az AI lát: Hello [TOKEN_1][TOKEN_2]
  3. Fordítás: Az AI lefordítja a "Hello" szöveget "Hola"-ra, de fizikailag nem tudja megváltoztatni a [TOKEN_1] vagy a [TOKEN_2] értéket, mert azok zárolva vannak.
  4. Újraépítés: Újra beillesztjük az eredeti kódot a lefordított karakterláncba pontosan oda, ahová tartozik.

Az eredmény: Nulla hibás webhely

Mivel az AI soha nem lép interakcióba a tényleges %s vagy HTML karakterekkel, matematikailag lehetetlen, hogy a fordítómotor szóközt adjon hozzá egy változóhoz, vagy megsértsen egy taget.

Még az összetett többes szám szabályokat (msgid_plural) is kezeljük olyan nyelvek esetében, mint az orosz vagy a lengyel, biztosítva, hogy a megfelelő változót használják a megfelelő számhoz.

Ne szerencsejátékozzon a kódjával

Nem kellene szorítania az ujjait minden alkalommal, amikor feltölt egy nyelvi fájlt. A lokalizációnak az új ügyfelek eléréséről kell szólnia, nem a PHP hibák javításáról.

A SimplePoTranslate a legbiztonságosabb, legfejlettebb felhőalapú eszköz azoknak a fejlesztőknek, akik törődnek a kód integritásával.

  • Felhőalapú: Nincs telepítendő beépülő modul.
  • Kontextusérzékeny: Gemini/GPT-4 osztályú AI-t használ a természetes megfogalmazáshoz.
  • Szintaktikusan zárolt: Garantált védelem a változóinak.

Készen áll a fordításra fejfájás nélkül? Kezdje el ingyen a SimplePoTranslate.com oldalon!