Prisijungti

PenguinDict

  • 31 Sau '12

Radau tokį gan naudingą dalykėlį - PenguinDict. Gal pravers, jei kas nebuvot aptikęs šito gėrio...

PenguinDict - Anglono portas į Linux.

Norint pasileisti, reikia (čia ant Ubuntu based distribucijų):

  1. Parsisiųsti žodyno kodą (naudojantis git arba galima download ZIP paimti githube):
    git clone git://github.com/tuxmark5/PenguinDict.git

  2. Parsisiųsti įrankius kodui sukompiliuoti:
    sudo apt-get install qt4-dev-tools

  3. Susikompiliuoti žodyną:
    qmake
    make

  4. Susirasti iš kur nors failą ANGLONAS.dic (čia iš windowsų Anglono instaliacijos galima nusikopint šitą)

  5. Pasileisti žodyną:
    ./PenguinDict


Galimos problemos:
Jei žodynas neras failo ANGLONAS.dic, tai programa nuluš (reiks kada nors sutvarkyt)

  • 31 Sau '12

Tame ir bėda, kad tas anglonas.dic failas laisvai nėra platinamas...
O jei kas turi legalų angloną, tai be problemų jis ant wine eina...

  • 31 Sau '12

Anglonas per wine veikia labai prastai, kiek teko bandyti.. Bet veikia.

Visgi, idomumo dėlei, kokiu formatu yra suspaustas šitas .dic failas? Įtariu turėtų būti kažkas iš db, bet greičiausiai ne sqlite*?

Beje, nemanau, kad source'ą galima laikyti saugiu. Jis pasiūlytas gan neseniai (2012 sausio 3) ir nepratestuotas.

  • 1 Vas '12

Kaip suprantu, žodyno formato nuskaitymo dalis yra aprašyta šiame faile:

https://github.com/tuxmark5/PenguinDict ... r/PDict.cc

Šiais lakais neverta vargintis ir rašyti visą savo žodyną, kur kas geriau padaryti konvertavimo skriptą, kuris žodyno duomenų bazę konvertuoją į kokį nors formatą, kurį supranta kitos, populiarios ir patogios žodynų programos.

  • 17 Vas '12

(Čia PenguinDict autorius)

Žodyną parašiau pagrinde vien dėl to, kad per wine tragiškai veikė.
Su wine versija buvo kelios problemos:

  • sudėtinga instaliuoti: norint normaliai naudotis reikėdavo instaliuoti visokį su IE susijusį šlamštą, krūvą visokių runtimes ir t.t.
  • problemos naviguojant: ilgiau pasinaudojus Anglonu su wine iškildavo tokia problema, jog "sustodavo" navigacija. T.y. pasirinkus žodį neatsidarydavo naujas puslapis (čia gali būti kokios konkrečios wine versijos bugas)
  • problemos copy pastinant: atskirai kopijuojant lietuviškus/angliškus žodžius būdavo gerai, tačiau nukopinti tarimo prakšitkai buvo neįmanoma - Anglonas tam naudojo savo sugalvotą koduotę ir turėjo specialų šriftą, kurį net ir instaliavus, OpenOffice vis tiek tuos tarimo ženklus nenorėdavo valgyti.

Dėl konvertavimo: taip, gal konvertuoti būtų ir buvusi geresnė idėja, tačiau as su Qt nemažai dirbes, tai čia pačio žodyno interfeisą porą valandų užtruko parašyti - o gilintis į kažkokio tai nežinomo žodyno formatus nesinorėjo. Juolab, kad Anglonas naudoja labai specifišką DB (čia vėl jų sugalvotas stuff, kodavimui naudojama windowsinė rand() funcija ), nėra tiesioginės LT <> EN atitikties, ten vieną anglišką žodį gali atitikti keli lietuviški, ar kažkas tokio, dabar nepamenu. Žodžiu, su sinonimais ten ne visai paprasta.

Dėl visų šių problemų nusprendžiau paprasčiausiai nuportinti tiesiog Angloną ir viskas. Be to, tuo pačiu imečiau gal kam reikalingą tarimų transkripcijų funkciją (kurios vienas žmogus pageidavo), kuri šiek tiek pagreitina darbą, jei norima viso teksto transkripciją pasidaryti.

Dėl saugumo - na čia nelabai kokių ir problemų gali kilti. Pats žodynas neturi jokios sąsajos su internetu ar kokiais tai išoriniais failais, tai čia jei ir yra klaidų, tai jos kažin bus ar žalingesnės už tas, kurios kokiam Solitaire būtų.
Šiaip jau žodynu keli pažįstami jau apie metus (?) gal naudojasi (tik neseniai nusprendžiau į gitą sumest viską, galvojau, gal kam pravers).

Jei kas norės ką pataisyt, patobulint, tai galiu priėjimą prie repozitorijos duot.

  • 17 Vas '12

Mielai padaryčiau konvertavimą į StarDict formatą, bet nemoku C/C++, galiu iš bėdos tik kodą skaityti ir helloworld tipo programėlę parašyti..

Pasidomėjau žodynais ir žodynų formatais kiek plačiau. Kaip suprantu, de fakto žodynų standartas yra StarDict, kuris gan plačiai paplitęs ir daug programų jį palaiko. Informacija apie StarDict failo formatą yra pateikta čia:

http://code.google.com/p/babiloo/wiki/StarDict_format

Yra net gi pavyzdinių konverterių rinkinys:

http://code.google.com/p/stardict-3/sou ... tools/src/

Kitas paplitęs formatas yra dictd. Šį formatą naudoja dictd online žodyno serveris. Neradau pagrindinio šio žodyno formato aprašymo, bet dažniausiai jo žodynai yra generuojami iš paprastų tekstinių formatų su dictfmt programa. Galima ją įsidiegti ir pasiskaityti man puslapį, kaip ir iš ko konvertuoti.

Bent jau man asmeniškai, geriausia ir patogiausia žodyno programa yra GoldenDict, kuri palaiko tiek StarDict, tiek DICT formatus.

Jei kas nors turės laiko ir įkvėpimo, gal būt užsiims ir padarys konverterį į vieną iš šių paplitusių formatų? Būtų awesom!

  • 17 Vas '12

One note: visas Anglono DB turinys yra iš esmės saugomas HTML'uose. T.y. kiekvieną žodžio aprašymą atitinka nedidelis HTML fragmentas.
Kiek supratau (šiek tiek pagoolglinęs), tai StarDict su HTML'ais nieko bendra neturi, tai vadinasi, gali tekti kažkaip išmėsinėti tuos aprašymus su kokiais regexpais norint eksportuoti į kokį labiau open-source friendly formatą.

Šiaip aš galėčiau įmesti kokią demo programėlę, kuri leistų DIC failą išdumpinti, o jau tuomet kas nors jei labai norės galės visą ta pythonint į StarDict'ą ar ką nors panašaus. Bet čia tuo atveju jei laiko man atsiras.

  • 18 Vas '12

Būtų labai miela, demo programėlė (;
Tau visi liktų dėkingi.

  • 18 Vas '12

Aš pats neišmanau StarDict formato, bet pagal jo aprašymą:

Resource Storage store the external file in 'r' resource file list, the
image in html code, the image, media and other files in wiki tag.
It have two forms:

  1. Direct directory and files in the "res" sub-directory.
  2. The res.rifo, res.ridx and res.rdic database.

Iš šio: http://code.google.com/p/babiloo/wiki/StarDict_format formato aprašymo, panašu, kad palaikomas ir HTML.

  • 19 Vas '12

Yra padarytas StarDict žodynas iš anglų į lietuvių pagal Angloną 1.0 su minimaliu HTML palaikymu iš šio .babylon failo (pastarąjį sukompiliuojant su stardict-editor programa).
Bereikia tik krypčiai iš lietuvių į anglų sukurti StarDict žodyną.

  • 21 Vas '12

Štai ir lt-en žodynas, jo išeities kodas. Ir gal kam pravers atitikmenų sąrašas. Mėgaukitės

  • 21 Vas '12

Ligonis, awesome, abu žodynai veikia nepriekaištingai puikiai su GoldenDict'u.

starkadon Pedrilio
  • 29 Vas '12

o įmanoma kad goldendictas suvalgytų ir led'ą?
(http://ftp.akl.lt/zodynai/OpenDict/LED- ... iedai-0.3/)

[neatitinka temos: "PenguinDict"; atsakymus klausiančiajam rašykite asmenine žinute] NareZ

  • 20 Geg '12

@Ligonis rašė:
Yra padarytas StarDict žodynas iš anglų į lietuvių pagal Angloną 1.0 su minimaliu HTML palaikymu iš šio .babylon failo (pastarąjį sukompiliuojant su stardict-editor programa).
Bereikia tik krypčiai iš lietuvių į anglų sukurti StarDict žodyną.

Cia ikeliu to zodyno sutvarkymo VBA makroso teksta, gal kam pravers? Bent man tos nereikalingos zvaigzdutes, naudojant si zodyna per Onyx Boox, tikrai nepatiko
(impotuoti i Ofisu VBA redaktoriu)

Attribute VB_Name = "NewMacros"
Sub Macro1()
Attribute Macro1.VB_Description = "Macro recorded 09/30/02 by ."
Attribute Macro1.VB_ProcData.VB_Invoke_Func = "Project.NewMacros.Macro1"
'
' Remove string ...."<BR>" from stardict txt file and join duplicate words
'

    Dim LastWord(255) As Byte
    Dim CurrentWord(255) As Byte

    Dim OutFileNumber As Integer
    Dim InFileNumber As Integer

    Dim a As Boolean
    Dim s As Long
    Dim i As Long
    Dim b As Byte

    OutFileNumber = FreeFile
    Open "H:\stardict_EN-LT_Piesarsko2005.txt" For Binary Access Write Lock Write As #OutFileNumber

    InFileNumber = FreeFile
    Open "C:\Documents and Settings\User\StarDict\dic\stardict_EN-LT_Piesarsko2005\stardict_EN-LT_Piesarsko2005.txt" For Binary Access Read Lock Write As #InFileNumber

    a = True
    i = 0
    Do While Not EOF(InFileNumber)
        Get #InFileNumber, , b
        Put #OutFileNumber, , b
        If a = True Then
            CurrentWord(i) = b
            i = i + 1
        End If

        If b = 9 Then ' tab char
            CurrentWord(i - 1) = 0
            a = False

            Do While b <> &H3C ' "<"
                Get #InFileNumber, , b
            Loop

            Get #InFileNumber, , b
            If b <> &H42 Then Exit Do ' "B"
            Get #InFileNumber, , b
            If b <> &H52 Then Exit Do ' "R"
            Get #InFileNumber, , b
            If b <> &H3E Then Exit Do ' ">"
            If StrComp(LastWord, CurrentWord, 0) = 0 Then ' strings equal
                Put #OutFileNumber, s - 1, &H6E5C ' "\n"
            End If
            Get #InFileNumber, , b
            If b <> &H20 Then Put #OutFileNumber, , b
        ElseIf b = &HD Then
            s = Seek(OutFileNumber) ' save new line position in the out file
        ElseIf b = &HA Then
            a = True
            i = 0
            Do
                LastWord(i) = CurrentWord(i)
                If CurrentWord(i) = 0 Then Exit Do
                i = i + 1
            Loop
            i = 0
        End If
    Loop
    Close #InFileNumber
    Close #OutFileNumber

End Sub
  • 15 Vas '14

Ligonis,
Labai dėkoju.

Abiejų krypčių mirror: http://www.mediafire.com/download/obcrg ... nglonas.7z

Esu pradedantysi linuxistas tai prašau šiek tiek pagalbos paleisti
/lt_en/stardict_LT-EN_Piesarsko2005.dict
/lt_en/stardict_LT-EN_Piesarsko2005.idx
/lt_en/stardict_LT-EN_Piesarsko2005.ifo
/lt_en/stardict_LT-EN_Piesarsko2005.syn
bei
/en_lt/stardict_EN-LT_Piesarsko2005.dict
/en_lt/stardict_EN-LT_Piesarsko2005.idx
/en_lt/stardict_EN-LT_Piesarsko2005.idx.clt
/en_lt/stardict_EN-LT_Piesarsko2005.idx.oft
/en_lt/stardict_EN-LT_Piesarsko2005.ifo
failus StarDict programoje..
Dėkoju.

Atnaujinta:
Išsiaiškinau kaip tai padaryti,
šiuos du katalogus perkelti į /usr/share/stardict/dic/
ir paleisti iš naujo StarDict

  • 13 Spa

@boolve tuos failus galima įdėti ir į ~/.dict katalogą.

  • 14 Lap

Kažkoks šaunuolis kažkada sukonvertavo iš anglono 1.x į stardict formatą: http://www.mediafire.com/file/obcrgl108dpar17/stardict_anglonas.7z

Atsakyti