Shell scenarijų internaciolizacija ir lokalizavimas

No Comments

loc
Aprašysiu kaip paversti shell scenarijų lokalizuojamu. More

Vertimo pradžiamokslis

6 Comments

Liudas aprašė KDE vertimo procedūrą, aš „freelance“ vertėjas todėl aprašysiu apskritai vertimo procedūrą. Imant konkrečią programą ar aplinką tai viskas gražu ir paprasta, bet žiūrint bendrą vaizdą tai vertimų pasaulis – tamsi, šalta ir baisi vieta. Po tokias vietas žmonės po vieną nevaikšto, todėl suteiksiu šiek tiek informacijos, kad bent nuo kelio toli nenuklystumėt.

Paprastas variantas: nueini į vertimo platformą ar puslapį ir verti, net ir matant pirmą kartą ten viskas aišku. Jei tenkina toks variantas skaityt toliau beprasmiška. Jei sugalvoji bent 1 priežastį kodėl tavęs netenkina tas variantas – skaityk įrašą iki galo.

Failų parsiuntimas

Visų pirma reikia materialo kurį galima būtų versti:) Failus reikia imti iš programos autoriaus puslapio, yra 3 populiariausios versijų valdymo sistemos:

git – tai turbūt populiariasia versijų valdymo sistema, aš ir pats savo viešus failus laikau „git“ saugykloje. Failų parsiuntimas tai paprasta procedūra:

git clone git://saugyklos_adresas.lt/programa aplanko_kuriame_bus_išsaugoti_failai_pavadinimas

po šios komandos bus parsiųsta visa programa su visais failais.Dažniausiai .po failai saugomi „po“ aplanke, bet tai nėra privaloma, jie gali būti sudėti betkur. Failus atnaujinti/sichronizuoti su saugykla galima su komanda:

git pull

Išsiųsti į saugyklą (reikia turėti teisę, paprastai programa turi vertimo platformą ir išverstą failą reikia įkelti joje):

git add po/lt.po
git push

darant prielaidą jog failai yra „po“ aplanke.

svn – šitam puslapy jau buvo aprašyta. Failų parsiuntimas:

svn co https://saugyklos_adresas.lt/programa aplanko_kuriame_bus_išsaugoti_failai_pavadinimas

Atnaujinimas:

svn update

Įkėlimas:

svn commit -m "Updated Lithuanian translation"

 

Mercurial – susiduriu tikrai nedažnai, bet tokia yra todėl ji turi būt aprašyta.
Failų kopijavimas:

hg clone http://saugyklos_adresas.lt/programa aplanko_kuriame_bus_išsaugoti_failai_pavadinimas

Atnaujinimas:

hg pull
hg update

 

bzr – ubuntu naudotojai šitą gerai pažįsta. Aš nepažįstu:)
Failų kopijavimas:

bzr checkout  http://saugyklos_adresas.lt/programa aplanko_kuriame_bus_išsaugoti_failai_pavadinimas

Atnaujinimas:

bzr update

Failų įkėlimas:

kelkit į launchpad.net 🙂

Nieko sudėtingo, viskas paprasta ir aišku.

Vertimas

Atrodo paėmei ir išvertei, bet praktikoj toli gražu nevisada taip paprasta. Aprašysiu dažniausiai iškylančias bėdas. Atkreipsiu dėmesį tik į „.po“ formato failus ir jų įrankius, jei rašyčiau apie visus formatus ir visas galimas bėdas, tai gautųsi knyga, o ne straipsnis.

1. Pasenęs šablonas

Nevisada .po ar .pot failai yra paremti nauju kodu, su visais žodžiais. Dažnai šablonas būna sukuriamas tik prieš išleidžiant naują versiją, bet jei jau atėjau verst tai savaime aišku jog aš noriu išverst viską kas tai dienai yra, o ne tai kas buvo išleidžiant paskutinę stabilią versiją.

Nueinam į „po“ (į tą aplanką kuriame yra .po failai) aplanką, komanda:

intltool-update -p

sukuriam šabloną paremtą esamu kodu. Jei nėra lietuvių vertimo tai imam ir verčiam naujai sukurtą failą (išsaugom kaip lt.po) jei jau yra pradėtas lietuvių kalbos vertimas atnaujinam jį:

msgmerge -vU lt.po šablonas.pot #šablonas.pot tai naujai sukurtas failas, gali būt programa.pot arba untitled.pot

dabar lt.po failas bus paremtas nauju šablonu, jei eilutė pasikeitė ji bus pažymėta kaip neaiški (fuzzy), jei senam lt.po dar nebuvo eilutės ji bus pridėta, jei naujam faile nebėra eilutės ji bus pažymėta kaip pasenus (eilutės pradžioj pridėta „#~“).

2. Netinkama originalo kalba

Mokykloje mokiausi Rusų, Prancūzų, Vokiečių ir Ispanų kalbų. Kaip tyčia nesimokiau Anglų, aš lyg ir poliglotas, bet negaliu lokalizuot naudojamos programos, nes praktiškai visų programų pradinio kodo kalba yra anglų.

Tai galima sutvarkyti pakeičiant šaltinio kalbą. Verčiant ne iš originalo kalbos, kokybė smarkiai nukenčia, bet geriau jau taip nei iš vis neišversta. Beto jei ištestuojama normaliai, o ne šiaip sau. Tai kokybė nenusileis vertimui iš originalios kalbos.

Abu vertimai turi būti paremti 100% tuo pačiu šablonu, nes kitaip bus blogai. Geriausia sukurti naują šabloną ir abi kalbas atnaujinti pagal tą šabloną.

Originali kalba yra anglų, aš moku tik lietuvių ir rusų. Todėl noriu verst iš rusų į lietuvių:

poswap -i ru.po -t lt.po -o lt_source_lang_ru.po

Mano galva tai argumentai turi būti atvirkščiai (juk „-t“ turėtų reikšt „template“, o šablonas tai rusų kalba), bet praktikoj  pageidaujamą rezultatą sukuria kodas kurį parašiau. Konvertuojant dingsta antraštė, tai reikia nukopijuot iš lt.po failo. Dabar išverčiam „lt_source_lang_ru.po“ failą ir konvertuojam atgal, kad šaltinio kalba būtų anglų.

poswap -reverse -i ru.po -t lt_source_lang_ru.po -o toks_kaip_buvo_originaliai_tik_išverstas.po

3. Per didelis failas

Kartais viskas kas susiję su projektu būna sudėta į vieną failą. Visi įskiepiai, visos temos ir t.t. pvz. wordpress.com Visas wordpress.po failas sveria ~3mb, dirbt su tokiu failu labai nepatogu, beto sunku rast tai ko reik. Galima tiesiog ištraukti reikalingą failo dalį ir versti tik ją.

pogrep paieškos_žodis --search kur_ieškot -i vertimo_failas.po -o reikalinga_vertimo_dalis.po

Pvz. noriu išverst temą „kubrick“:

pogrep wp-content/themes/pub/kubrick --search locations -i wordpress-vertimas.po -o wordpress-kubrick-vertimas.po

ieškot galim „source“, „target“, „notes“ arba „locations“.

4. Netinkamas vertimo failo formatas

Kai verčiau „utorrent“, ten vertimo failo formatas buvo – jokio formato 🙂 ta prasme tiesiog surašyti žodžiai, kaip verčiau į .po nerašysiu, čia tema straipsniui apie „sed“ . Esmė tame jog man pateikt vertimą reikėjo formatu:

žodis
žodis2
žodis3

tam yra komanda:

popuretext lt.po lt.txt

komanda paima .po failą ir išsaugo tik vertimus, atskirtus nauja eilute.

5. Tikrinimas
Patikrint ar nėra klaidų ir ar yra visi „accelerators“ (meniu klavišų susiejimai su ALT). Paprastai naudojamas vienas iš dviejų „&“ arba „_“. Nerašyta taisyklė – nedėkit „_“ ar „&“ prieš lietuvišką raidę (raidę su diakritiku)

msgfmt -c --check-accelerators='&' lt.po
msgfmt -c --check-accelerators=_ lt.po

Vertimo failai toli gražu nevisada pateikiami .po formatu. „Translate toolkit“ turi daug programų skirtų konvertavimui, čia komentarų kaip ir nereik:

moz2po – Mozilla .properties ir .dtd konvertavimo įrankis
oo2po – OpenOffice.org SDF konvertavimo įrankis
odf2xliff – Konvertuokite OpenDocument (ODF) documentus į XLIFF ir vice-versa.
prop2po – Java property failų (.properties) konvertavimo įrankis
php2po – PHP lokalizuojamų eilučių konvertavimo įrankis
sub2po – Konvertuokite įvairius subtitrų failus
txt2po – Gryno teksto į PO konvertavimo įrankis
po2wordfast – Wordfast Translation Memory konvertavimo įrankis
po2tmx – TMX (Translation Memory Exchange) konvertavimo įrankis
pot2po – Inicijuoti PO šablono failą
csv2po – Comma Separated Value (CSV) konvertavimo įrankis
csv2tbx – Sukurti TBX (TermBase eXchange) failus iš Comma Separated Value (CSV) failų
html2po – HTML konvertavimo įrankis
ical2po – iCalendar failų konvertavimo įrankis
ini2po – Windows INI failų konvertavimo įrankis
json2po – JSON failų konvertavimo įrankis
web2py2po – web2py vertimo į PO konvertavimo įrankis
rc2po – Windows Resource .rc (C++ Resource Compiler) konvertavimo įrankis
symb2po – Symbian-style vertimo į PO konvertavimo įrankis
tiki2po – TikiWiki language.php konvertavimo įrankis
ts2po – Qt Linguist .ts konvertavimo įrankis
xliff2po – XLIFF (XML Localisation Interchange File Format) konvertavimo įrankis

Programos

Yra daug programų skirtų dirbti su vertimo failais. Kuri geriausia/tinkamiausia tai čia jau kiekvieno skonio reikalas, aš tik pateiksiu programų sąrašą:

Lokalize
PoEdit
Launchpad
Gtranslator
Virtaal
QTLinguis (QT programom, .ts formatui)
Kai kurie teksto redaktoriai turi įskiepį vertimams, dažnai tai neblogiau nei tam skirta programa.

Visa kita

„%1“, „%2“, „%s“, „%d“ ar panašūs simboliai reiškia jog tas simbolis bus kažkuo pakeistas, paprastai komentaruose būna parašyta. Kitais atvejais iš konteksto aišku kas ten bus, pvz. „%N puslapis iš %Q“.

Lietuvių kalboj naudojama tokia daugiskaitos forma:

Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)

KDE vertėjai jaučiasi išskirtiniai ir geriau mokantys lietuvių kalbą todėl naudoja formą su 4 formom, bet visas internetas lietuvių kalbai naudoja šitą formą 😀

Kaip tai atrodo faile:

msgid „Changes to %d document will be permanently lost.“
msgid_plural „Changes to %d documents will be permanently lost.“
msgstr[0] „%d dokumento pakeitimai bus negrįžtamai prarasti.“
msgstr[1] „%d dokumentų pakeitimai bus negrįžtamai prarasti.“
msgstr[2] „%d dokumentų pakeitimai bus negrįžtamai prarasti.“

pirma forma „1 failas“ (21, 31, 10001)
antra forma „2-9 failai“
trečia forma „10 failų“

Vertimui būtina turėti ir žinoti kaip veikia ir ką gali programos „sed“ ir „Translate toolkit“.

Resursai

Mano surinkta vertimų atmintis (lt-en): .tmx formatu, gtranslator programai (berkeley db formatu)
Vertimų terminai (surinkau iš visur tai gali prieštaraut jūsų nuomonei): lokalizavimo_terminai.ods

Lietuviški žodžiai, rašybos tikrinimo programai

komp_lt@konferencijos.lt – vertėjų el. pašto konferencija. Šiaip ten tylu, bet jei kažkas kažko klausia tai atsako daug žmonių.

Valstybinė lietuvių kalbos komisija – , kai nežinom žodžio, nežinom kaip rašosi, ar šiaip.
Sinonimų žodynas – kai išsenka žodžiai
Dabartinės lietuvių kalbos žodynas – kai reik išverst iš lietuvių į lietuvių… dėja, būna ir taip.
Dabartinės lietuvių kalbos tekstynas – aš tai naudoju pažiūrėt kuris žodis plačiau naudojamas.
Translate toolkit puslapis

P. S. gavosi atskirų minčių kratinys, bet geriau taip nei vaikščiot po visą internetą ir rinkt po gabaliuką. Paprastai visos programos turi detalią instrukciją vertėjams, bei forumą, IRC kanalą ar pašto konferenciją kur galima rasti kitus vertėjus.