Hi!
A .po fájlok a 'translation' alkönyvtárban automatikusan bekerülnek modul telepítéskor?
Utólag importálni kellene ezeket .po fájlokat a "Felület fordítása" menüben?
Ezt írta nekem importkor:
„en.po” hibás: a többesszámokat leíró formula nem elemezhető.
(bár 37 sikeres fordítást írt utána.)
A potx parancssori modullal csináltam general.pot-ot, amit átneveztem és megszerkesztettem.
Nem ez a jó megoldás?
G.
Drupal verzió:
Fórum:
Nagyon jó kérdés
Ez a kérdés sajnos rávilágít arra, hogy nincs jól dokumentálva, hogy mi a *.pot, mi a *hu.po, és az egész fordítási rendszer alapjaiban hogyan működik. A http://localize.drupal.org helyen még nem látlak, bár sok hasznos infó jöhet onnan is. A doksit pedig igyekszem majd ebbe az irányba is bőviteni.
saját modul
Igazából egy saját modult szeretnék többnyelvűsíteni.
Eddig a "gyári" modulokkal működött a dolog, hogy pl. utólag importálással (hu.po) magyarítottam egy modult.
Most ugyanezt akartam a saját modulommal (több nyelvre), de gondolom a hibaüzi miatt nem csinálta meg:
„en.po” hibás: a többesszámokat leíró formula nem elemezhető.
G.
angolra nem forditunk
A modulban a t() fuggvenyben angol uzeneteket adunk meg, majd az elo allitott pot filetbol keszitunk hu.po-t es azt forditjuk le.
---
http://drupalaton.hu
ok, de a hibaüzenet nem ettől
ok, de a hibaüzenet nem ettől van. vagy igen?
G.
Pot felejtős
A .pot fájl nem jó semmire, az csak egy üres template. Elég régen fordítgatok, de .pot fájl akkor keletkezik a gépemen, ha mellényúlok valahol. Nem kell, tök felesleges.
Ha már fenn van a potx modul, akkor a webhelyépítés / felület fordítása / kinyerés útvonalon válaszd ki a szükséges alkönyvtáradat, majd alul a 2 lehetőség közül a „Magyar fordításhoz tartozó sablon”-t, és pipáld be „Fordításokkal együtt” négyzetet is, hogy kevesebb munkád legyen. Ha a magyar sablont választottad, akkor valószínűleg helyesen fogja kitölteni a potx a keletkező .po fájlban a többesszámokat leíró formulát, de ha mégsem, akkor annak így kell kinéznie:
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
pot file
a pot file nem arra való, hogy ha akarok csinálni egy új nyelvi fordítást akkor ezt másolom le? ezért template.
de igen
Létezik ilyen, hogy .pot fálj, ami valóban egy üres template. De a Drupal mögött lévő fordítási közösség miatt ez elveszti jelentőségét. Ha szeretsz sokat gépelni, és nem akarod kihasználni, hogy a sokszáz magyar gyakran már a fél modult lefordította helyetted, akkor lehet a .pot fáljt használni, és Ádám-Évától indulni. Nagyon sok modulban előforduló szó a Cancel, Home, Homepage, Yes, No, Undo, stb. Ezek már mind rendelkeznek fordítással (mégpedig a magyar közösség által elfogadott fordítással), de komplett mondatok is egyeznek. Például: This action cannot be undone. Katt ide, majd kattints az adott sor fordításánál a jobb oldalon a nagyítóra. Megszámolni nem tudod, hány modulban szerepel.
De ha valaki szeret feleslegesen gépelni, vagy szívatni akar minket, fordítási adminokat, hogy ezeket a saját szája íze szerint újra lefordítja, és beküldi, hát szíve joga a .pot fájlból nulláról indulnia. Két kattintás a beküldött fordítás elutasítása, mert az esetek 99%-ában nem jó, így nem fogadjuk el a módosítást pontosan azért, mert marha sok modult érint. Ha valami el van írva, az más tészta, de ha valaki szerint ez nem „A művelet nem vonható vissza.”, hanem „A művelet nem visszavonható.”, akkor az sajnos nem nyert.
Szóval van template is, csak teljesen felesleges. Biztosan van a sokezer modul között 10-20 olyan, aminek a "fordítását" ha exportálod az l.d.o-ról, akkor nulla fordított karaktersorozat lesz benne. De szerintem több ujjunk van, mint ahány ilyen modul, tehát 99%-ban bármit is exportálsz onnan, lesz benne már fordított. És ugye ami modul létezik a Drupalhoz, az fenn van az l.d.o-n is, és nem kell a teremtéstől újraépíteni a fordítást, mert néha már a fél modul le van fordítva.
Az első telepítéskor
Az arhív kedvéért, hogy minden kérdésedre legyen válasz.
Tehát a translation helyett translations könyvtárban lévő .po fájlok a modulok legelső telepítésekor kerülnek be automatikusan az adatbázisba, mégpedig minden olyan nyelvet érintően, mely abban a pillanatban engedélyezett, és a fordításfájl ott van a könyvtárban. Ezek általában nem teljes fordítások, mert a fejlesztés menetéből fakadóan mindig az eggyel korábbi változat fordításai (Csak akkor lehet 100%-os a csomagban lévő fordítás, ha a modul új változatában nincs fordítást érintő változás az előzőhöz képest, és az előző változat 100%-ban le volt fordítva, és közzé is lett téve a CVS-ben)
Fontos tudnivaló még, hogy ilyenkor CSAK a translations könyvtárból töltődnek be a fordítások, tehát például a CCK esetében a cck\modules\content_copy\translations\modules-content_copy.hu.po hiába van a csomagban, semmit sem ér. (Mára már a csomagban lévő cck\translations\hu.po a teljes fordítás, és jó helyen is van)
Modul frissítésekor viszont - egyelőre - nem töltődik be semmi, ilyenkor célszerű ellátogatni a http://localize.drupal.org -ra, ahonnan lehet exportálni a modul aktuális változatának fordítását, és ezt kézzel be kell tölteni.
po
A pot csak template, azt neveztem át (ill. másoltam pl. hu.po-ra) majd editáltam.
A "Plural-Forms: nplurals=2; plural=(n!=1);\n" sorral megszünt a hibaüzenet, de a nyelvek továbbra se mennek. :)
Drupalban: admin/build/translate/import menü
Nyelvi fájl: "hu.po"
Import: "Magyar"
Szövegcsoport: "Beépített felület"
Mód: "A feltöltött karaktersorozatok felülírják a létezőket, az új karaktersorozatokkal bővül az adatbázis"
utána:
Nyelvi fájl: "en.po"
Import: "Angol"
Szövegcsoport: "Beépített felület"
Mód: "A feltöltött karaktersorozatok felülírják a létezőket, az új karaktersorozatokkal bővül az adatbázis"
37 módosítás megtörténik, de mindig csak magyar marad az oldal. Az angol nem működik.
Oké, hogy alapból nem szokás hu-val készíteni a modult a t() fv-ben, de akkor is le kellene fordítania, nem?
G.
megcsináltam szabályosan
Megcsináltam szabályosan: az alap stringek angol nyelvűek.
Ezután csináltam hu.po-t. Most jó, kösz!!
G.
en.po
Nem neztem meg, de az a tippem, hogy a Drupal sosem fogja beolvasni az en.po fajlt, mivel az 'en' jelenti a "beepitett" nyelvet amit sosem kell forditani..
Vagy ha megis beolvassa az adatbazisba akkor sosem fogja hasznalni, kiolvasni az adatbazisbol, a leirt ok miatt..
http://api.drupal.org/api/function/t/6
nem.
röviden: nem.
nem arról van szó, hogy nem "szokás" magyarul írkálni modulba, hanem arról, hogy nem lehet. t("Viszlát és kössz a halakat") _soha_ nem fog angolra fordulni, azaz "en" -re, lásd pasqualle magyarázatát.
_mindig_ angolul írjuk a modulba az üzeneteinket, mert az a fordítás alapnyelve és aztán azokat fordítjuk a célnyelvre. ha tetszik úgy is nézheted, hogy minden fordítandó karaktersorozatnak az angol verziója az elsődleges kulcs, onnan "fordul le" más nyelvekre és ez a folyamat visszafelé _nem_ működik.
-
clear: both;
igaz
de sajnos ebben a Drupal a bunos, mivel ez a logika nem igazan tokeletes..
amikor egy weboldalnak nincs szuksege angol nyelvre, akkor a fejlesztonek miert kellene angol mondatokat fogalmaznia..
normalis esetben a kulcs egy rovid kod es az angol nyelv is ugyanugy forditas mint a magyar. azert lett ez ilyen, mert kesobb lett a rendszer tobbnyelvu..
a tt() fuggveny mar koddal mukodik, azzal lehet(ne) alapbol magyart hasznalni, de igazabol ez sem mukodik jol, mert az 'en' nyelvet es is specialisan kezeli, hogy egyseges legyen a Drupal mukodesevel..
pelda
legegyszerubb pelda
igy. es, hogy vegul milyen szoveg jelenik meg a feluleten, az mar nem a programozo gondja. Ez kellene egy igazan tobbnyelvu rendszerhez.