Skip navigation.

Romhacker's Guide to the Galaxy

Życie, wszechświat i cała reszta ;)

pwn2dict

, , , , , ,

StarDict jest bardzo udaną nakładką. Używam go od jakiegoś czasu i jestem bardzo zadowolony. Wszystkie słowniki w jednym miejscu, przeszukiwanie na wiele sposobów itd. Wszystko to bardzo fajne, ale mocno brakowało mi baz ze słownika PWN Oxford 2004. Dlatego też postanowiłem ten brak naprawić. Żeby zrozumieć format zajrzałem do kodu Kydpdict - nakładki obsługującej m.in. rzeczony słownik. I w ten sposób na wakacjach powstał program, który po odleżeniu się jakiś czas na dysku, przepisaniu do Pythona i paru poprawkach oddaję w wasze ręce. W końcu nie jestem sobkiem :smile:

pwn2dict.py
Program konwertuje pliki angpol.win i polang.win z dwujęzycznego słownika PWN Oxford 2004 do formatu obsługiwanego przez StarDicta 3.0. Hasła są zapisywane jako HTML dla zachowania formatowania. Wszelkie symbole są konwertowane do UTF8, więc nie ma problemu z transkrypcja fonetyczną. Ponadto pozwoliłem sobie na drobne poprawki w nazwach haseł (usunięcie pionowych kresek i numerów definicji), żeby szukało się lepiej. Przekonwertowanych baz używam z powodzeniem u siebie i mam nadzieję, że u was będzie nie inaczej :smile:

Obsługa jest bardzo prosta:
pwn2dict zrodlo.win nazwa.dict

Skrypt odczyta zrodlo.win i utworzy komplet plików dla StarDicta: nazwa.dict, nazwa.idx i nazwa.ifo, które następnie należy skopiować do /usr/share/stardict/dic/nazwa/ i zrestartować StarDicta.

Uwagi końcowe:
Autor nie ponosi odpowiedzialności za używanie programu z nielegalnymi kopiami baz słownika. Prośby o przesłanie baz będą ignorowanie.
Z tego miejsca zachęcam do zakupu słownika w ulubionej księgarni. Jest wart każdej złotówki.

Update 12.02.2009:
Naniosłem parę kosmetycznych zmian w skrypcie i poprawiłem(?) bug przy konwertowaniu pod Windowsem. Poza tym dorzuciłem pwn2tabfile. Ta alternatywna wersja skryptu, jak sama nazwa wskazuje, konwertuje bazy do formatu tabfile.

Update 01.03.2009:
Rozgryzłem format słowników PWN Oxford 2006 i 2007 i zaimplementowałem obserwacje, dzięki czemu skrypt obsługuje teraz edycje 2004, 2006 i 2007. Przy okazji poprawiłem kilka nieskonwertowanych symboli w kilku hasłach. Nie przedłużając, zapraszam do pobrania nowych wersji pwn2dict i pwn2tabfile :smile:

Update 05.06.2009:
Przypadkiem zauważyłem kosmetyczny błąd przy konwersji jednej encji (') w wersjach 2006/2007. Oba skrypty zostały zaktualizowane. Zapraszam do pobrania najnowszych wersji pwn2dict i pwn2tabfile.

Update 17.06.2009:
Dodałem obsługę formatu używanego w wersji dołączanej do papierowego słownika w edycji 2005. Różni się on głównie innym zapisem transkrypcji i nagłówkiem definicji. Jeśli mieliście problem z tą wersją, zapraszam do pobrania pwn2dict i pwn2tabfile.

Update 01.09.2009:
Dodałem obsługę słownika polsko-rosyjskiego i rosyjsko-polskiego. Nowe wersje obu skryptów do pobrania w stałym miejscu.

QCDemu 0.2.1KDE 4.2 beta 1

Comments

Anonymous 29. November 2008, 16:18

Rafal writes:

Super sprawa!

Dzięki twojemu skryptowi mam słownik PWN-Oxford na moim iRex DR1000S ;-) Tyle że StarDicta przekonwertowałem jeszcze na Mobipocketa, żeby mieć możliwość wyszukiwania wyrazów w tekście (Dictionary Look-Up).

Mam tylko problemy z polskimi literami. Ale to wynika raczej z drugiego skryptu (tab2opf.py) albo z możliwości urządzenia.

Mam jedno pytanie: czy da się zrobić tak, żeby wyrzucić z definicji wyrazu IPA (tj. alfabet fontetyczny)?

Wielkie dzięki! :-)

Michał Ziąbkowski 29. November 2008, 17:07

No proszę, mój skrypt się faktycznie komuś przydał :smile:

Rozumiem, że przerobiłeś go, żeby zapisywał hasła do formatu tabfile? W sumie miałem roboczą wersję, która zapisywała właśnie do tego formatu. Potem doszedłem do wniosku, że wygodniej będzie przekonwertować prosto do formatu StarDicta.

Krótki rzut oka na tab2opf sugeruje, że polskie znaki i ten skrypt to niezbyt fortunna kombinacja. Obawiam się, że niewiele mogę pomóc w tej materii.

Jeśli chodzi o usuwanie transkrypcji, to chyba wystarczy dopisać jedną linię kodu do funkcji format:
temp=re.sub("/[^ ]+/ ", "", temp)

Anonymous 29. November 2008, 18:16

Rafal writes:

OK, przećwiczę usuwanie transkrypcji. :-)

Tak, najpierw konwertowalem do tabfile.

Co do tab2opf -- już wszystko wiem, wystarczyło w wierszu poleceń dorzucić "-utf" i polskie litery już są (ale nie IPA).

Anonymous 30. January 2009, 08:15

Matt writes:

Dzieki za skrypt, zaoszczedziles mi sporo pracy, jeszcze raz wielkie dzieki!

Anonymous 8. February 2009, 15:24

z0rr0 writes:

Witam,
No prawie tego szukam, tylko chodzi mi o taką konwersję aby słownik dało się czytać przez ereadra (pdb). Może ktoś wie jak to zrobić? Zresztą taki słownik do Mobipocketa też by się przydał
Będę dozgonnie wdzięczny
z0rr0

Anonymous 9. February 2009, 23:36

z0rr0 writes:

Witam,
Walczę trochę z tym konwerterem. Musiałem poznać podstawy Pythona, ale w końcu udało mi się uzyskać te 3 pliki. Problem jest, bo Stardict nie widzi ich jako słownika (wersja 3.0.1 na winxp). Czy coś jeszcze trzeba zrobić z nimi (np. spakować dict do dz)? Na razie siedzą skopiowane w katalogu dic, ale zero - nie rusza.
Próbuje też zrobić to co Rafał, ale nie mogę skonwertować słownika do tabfile. Stardict-editor po załadowaniu pliku ifo wywala mi błąd:
"Building...
Error, file version is not 2.4.2
Done!"
Pomocy, pliz!
Może masz jeszcze tę pierwotną wersję skryptu, która konwertowała PWN do tabfile? To by pozwoliło mi zacząć walkę o konwersję słownika do PML i dalej do pdb.
Pozdr

Michał Ziąbkowski 10. February 2009, 14:25

Nic nie trzeba pakować, choć można. Wystarczy założyć podkatalog w dic, wrzucić tam te 3 pliki i zaznaczyć słownik w Manage dictionaries.

Co do konwersji do tabfile, możesz spróbować zmienić wersję w pliku .ifo. Powinno pomóc. Spróbuję też wykopać starą wersję skryptu.

Anonymous 10. February 2009, 22:46

z0rr0 writes:

Hejka,
No niestety, nie widzi. Skopiowałem wszystkie 3 pliki do d:\Program Files\StarDict\dic\angpol\. Żeby nie było wątpliwości, angpol.win mam z wersji 2004 (66,875,812 b). Po przepuszczeniu przez Twój skrypt otrzymałem pliki: angpol.dict 16,293,708 b, angpol.idx 1,184,203 b i angpol.ifo 139 b.
Początek tego pierwszego pliku dawał takie krzaczki:

/kəm'plektɪd/ in combinations US = -complexioned /kəm'plekʃnd/ in combinations dark/light--complexioned o ciemnej/jasnej karnacji/kʌm/ in

Nie podziałał restart Stardict ani całego systemu ;-(

Spróbowałem tez spakować go do gz i zamienić rozszerzenie na dz, bo to ponoć ten sam algorytm (może się mylę?), tez nie zadziałało.

Zmieniałem ręcznie wersję na 2.4.2 w pliku .ifo, ale Stardict-editor jest mądrzejszy i przejrzał ten chitry plan - dalej wywala ten sam błąd. Może on rozpoznaje to po formatowaniu? Jak przeglądałem inne pliki .dict to jednak ich struktura jest inna, choć nie znam się na tym. Pozdr

Michał Ziąbkowski 11. February 2009, 12:51

Nie mogę tego potwierdzić. Sprawdziłem właśnie pod Windowsem. Zrobiłem podkatalog w dic, wrzuciłem tam słownik i pojawił się na liście. Przeszukiwanie i wyświetlanie haseł działa, wszystko jak pod Linuksem. Nic nie pakowałem. Obawiam się, że robisz coś źle. Tym bardziej to dziwne, że rozmiary plików się zgadzają.

Anonymous 11. February 2009, 23:44

z0rr0 writes:

Może podeśle Ci te pliki, to rzuciłbyś okiem, czy to kwestia złej konwersji, czy jakiegoś buga na moim kompie? Ale w robocie na lapie tez zainstalowałem stardicta i tez nie widział ;-(
Ja coś podejrzewam to formatowanie do html - inne słowniki nie są formatowane w ten sposób.
pozdr

Michał Ziąbkowski 11. February 2009, 23:50

Owszem, zachowałem formatowanie html, żeby hasła pozostały czytelne. Nie jest to jednak nic poza specyfikacją i jak najbardziej działa. Osobiście podejrzewam złe nazwy plików albo coś namieszane w systemie.

Może sprecyzujmy. Co masz na myśli poprzez "nie widzi"? Nie pojawia się w Manage dictionaries? Jak masz ponazywane wszystkie pliki? Utworzyłeś podfolder w dic i tam je wrzuciłeś? Jaka jest zawartość .ifo? Jakie sumy md5 mają pliki .dict i .idx?

Anonymous 12. February 2009, 12:17

z0rr0 writes:

Z nazwami plików nie kombinowałem - są takie jak poniżej. Z sumami md5 to mnie zażyłeś, musiałem wpierw sprawdzić w necie, o co chodzi. MD5 Checker wygenerował mi cuś takiego:

angpol.dict C3232054783C914B48EE23370C464B5F
angpol.idx 3AF6B2C5937F5CCEC5327CDD009EA9B1
angpol.ifo 7CD361EF71E3AC083C28CA55576C3A5A

Nie widzi, czyli nie pojawia się Manage Directories - nie chodzi, ze wyświetla z błędami, tylko go w ogóle nie zauważa. Plików jak powyżej, ścieżka dostępu w jednym z poprzednich postów. Treść .ifo:
StarDict's dict ifo file
version=3.0.0
idxoffsetbits=32
wordcount=63020
idxfilesize=1184203
bookname=angpol.dict
sametypesequence=h

To, że nie widzi, to ciut mniejszy ból, trochę bardziej zależy mi na tym tabfilu. Udało mi się już przejść raz proces i zrobiłem słownik do ereadera z jednego ze słowników Stardicta, choć musiałem na końcu zlikwidować to formatowanie UTF-8 na ANSI. Zastanawiam się czy będzie to finalnie wygladało dobrze?
Pzdr

Michał Ziąbkowski 12. February 2009, 14:43

Konwertując do ANSI raczej stracisz polskie znaki, o transkrypcji nie wspominając.

Hmm, twój .ifo ma ten sam tekst, ale inną sumę kontrolną. Jedyne możliwe wytłumaczenie to inne znaki końca linii. Problem wziął się stąd, że konwertujesz pod Windowsem i Python użył windowsowych znaków końca linii w .ifo, a Stardict najwyraźniej tego nie lubi.

Na początek spróbuj zmienić:
ifo = open(basename+".ifo", "w")
na:
ifo = open(basename+".ifo", "wb")

Przekonwertuj jeszcze raz. Tym razem plik .ifo powinien mieć sumę 4cf7a0e002ab73ba6e74ac785e442300.

EDIT: Zaktualizowałem skrypt i dorzuciłem drugi, konwertujący do tabfile.

Anonymous 12. February 2009, 22:33

z0rr0 writes:

Działa! Wielkie dzięki! Tym razem Stardict widzi bez problemu i nawet StardictEditor potrafi zrobić z niego tabfile! Jesteś great!
Powalczę teraz trochę z konwrsją na pdb, tak żeby widział wszystkie znaki.
Pozdr

Anonymous 18. February 2009, 17:06

Anonymous writes:

Dokładnie. Miałem ten sam problem z .ifo w StarDict. Pomogło pożyczenie .ifo z innego słownika i ręczne wpisanie do niego odpowiednich danych.

Tak jak pisze mziab -- chodziło na pewno o kodowanie znaków w pliku albo znaki końca linii.

Lukasz 20. February 2009, 22:10

Czesc,
A co moze oznaczac ten blad w linii 31 podczas wykonywania skryptu i jak sie go pozbyc ?
Mam Pythona 3.0.1.

C:\Python30>python pwn2tabfile.py angpol.win slownik.dict
File "pwn2tabfile.py", line 31
"à": u"\u00E0",
^
SyntaxError: invalid syntax

Michał Ziąbkowski 20. February 2009, 22:18

W Pythonie 3 zmieniono implementację ciągów. Spróbuj usunąć te wszystkie u przed cudzysłowami. Skrypt był pisany i testowany pod Pythonem 2.5 i powinien też działać pod 2.6. Z 3.0 nie sprawdzałem.

Anonymous 22. February 2009, 13:49

Ego writes:

Mógłbyś napisać krok po kroku jak to skonwertować ? :>
Bo jestem noobem w Pythonie :D

Michał Ziąbkowski 22. February 2009, 14:06

Pod jakim systemem?

Anonymous 22. February 2009, 14:42

Anonymous writes:

Windows albo Ubuntu

Michał Ziąbkowski 22. February 2009, 15:18

Pod Windowsem raczej nie pomogę. Pod Ubuntu powinno wystarczyć nadanie atrybutu wykonywalnego skryptowi (chmod +x pwn2dict.py) i odpalenie go z odpowiednimi argumentami. Zakładam, że wiersz poleceń nie jest czarną magią? Jeśli jest, będą schody.

Anonymous 23. February 2009, 18:46

Anonymous writes:

kurczę, nie wiem co źlę robie ale cały czas wyskakuje mi błąd:
bash: pwn2dict: polecenie nieodnalezione

Michał Ziąbkowski 23. February 2009, 18:56

Skrypt nie jest w PATH. Albo go wrzuć do np. /usr/local/bin albo odpalaj z bieżącego katalogu za pomocą ./pwn2dict.py

Anonymous 23. February 2009, 19:04

Anonymous writes:

Anonymous
Możesz też uruchomić w ten sposób:
python pwn2dict.py zrodlo.win nazwa.dict

mziab
Dzięki za skrypt. Zrobiłeś naprawdę wspaniałą rzecz.

Anonymous 23. February 2009, 20:23

Joe writes:

Też jestem nowicjuszem w pythonie i wyskakuje mi taki błąd ; incorrect file header :(

Anonymous 23. February 2009, 20:26

Glebozgryz writes:

Pod windowsem też żadna filozofia...
Potrzebujemy pythona dla windows np.: ActiveState ActivePython 2.6. (3.x o czym było wyżej może sprawiać problemy).
Umieszczamy: pwn2dict.py i zrodlo.win w tym samym folderze.
Dalej uruchamiamy command line (cmd) i:

cd "sciezka_do_plikow_pwn2dict.py_i_zrodlo.win"
sciezka_do_folderu_instalacji_pythona\python.exe pwn2dict.py zrodlo.win cel.dict

Czy jest jakaś szansa na dostosowanie tego skryptu do nowszych baz *.win ze słownika PWN Oxford 2006 (2.0) albo 2007 (3.0)?
BTW... świetna robota

incorrect file header - to problem z niewłaściwą bazą *.win. Nie ta wersja słownika Oxford.

Anonymous 23. February 2009, 20:37

Joe writes:

Aahh już wiem w czym problem - wersja mojego słownika to 2006 ;(

Michał Ziąbkowski 23. February 2009, 21:00

Spodziewam się, że zmienili format. W najlepszym przypadku może się okazać, że zmiany są niewielkie. W przypadku wersji 2004 miałem o tyle ułatwione zadanie, że autor Kydpdicta rozgryzł format, a ja przeportowałem algorytm. Główny problem jest taki, że nie mam dostępu do żadnej nowszej wersji słownika.

Anonymous 26. February 2009, 22:28

MF writes:

Tu jest ktos komu udalo sie rozgryzc format na OSX:

http://pym.uce.pl/pymdictionary.html

moze to pomoze troche :)

Michał Ziąbkowski 26. February 2009, 22:35

Właśnie też na to trafiłem. Jedyną ciekawą rzeczą, jaką trafiłem w archiwum był indeks haseł. Sądząc po adresach, indeks został przeniesiony w inne miejsce, może nawet poza samą bazę. Nie obraziłbym się, gdyby ktoś podał mi na maila (<mziab at o2.pl>) pierwsze 10kB obu baz :wink: Ale i tak nic nie obiecuję.

Lukasz 28. February 2009, 12:23

Wrzuciłbym tylko pierwsze 10kB z każdej, ale nie bardzo wiem jak uciąć te pierwsze 10kB.
Daj znać czy jesteś zainteresowany.

Michał Ziąbkowski 28. February 2009, 12:31

Pod Linuksem można to zrobić tak:
dd if=angpol.win of=angpol_10kb.win bs=1k count=10

Po if= i of= odpowiednio plik źródłowy i docelowy.

Gdyby to nie wypaliło, proszę o kontakt mailowy.

Lukasz 28. February 2009, 12:33

Ha, problem w tym, ze nie uzywam linuksa :/

Michał Ziąbkowski 28. February 2009, 12:41

Doh, pod Windowsem trzeba by użyć jakiegoś edytora szesnastkowego i uciąć ten kawałek. Odezwij się do mnie na maila w takim razie i coś postanowimy.

Michał Ziąbkowski 1. March 2009, 20:19

Do osób z nieobsługiwanymi wersjami słownika: spróbujcie najnowszej wersji skryptu i podzielcie się wrażeniami.

Lukasz 1. March 2009, 20:54

Działa jak ta lala :wink:))
Serdeczne dzięki.

Anonymous 2. March 2009, 15:12

z0rr0 writes:

A tak z ciekawości - czy bazy 2004, 2006 i 2007 różnią się czymś? Wydaje mi się, ze słownik elektroniczny jest wersją słownika papierowego, a od 2004 nie wyszła jego nowsza wersja. Wersje chyba dotyczą tylko programu do przeglądu bazy, ale nie samej bazy, choć moze sie myle?
Pozdr

Michał Ziąbkowski 2. March 2009, 15:21

Przeglądając zauważyłem trochę nowych haseł (przynajmniej w polsko-angielskim; angielsko-polski ma dokładnie tyle samo haseł) i dodatkowych znaczeń dla istniejących. Tyle z rzeczy nietechnicznych :smile: Z punktu widzenia technicznego zmienili nieznacznie strukturę bazy, dodali parę nowych tagów i przerobili zapis transkrypcji na encje IPA (np. &IPA322;). I z nimi właśnie miałem najwięcej roboty.

Anonymous 14. March 2009, 22:34

Marek writes:

Witam,
na wstępie chciałbym przeprosić za poziom pytań - dla wielu mogą się wydać niemal retoryczne, niemniej prosiłbym o udzielenie odpowiedzi.
Czytając posty bardzo spodobał mi się pomysł skonwertowania słownika PWN-Oxford do formatu Mobipocket.
Problem w tym, że nie mam pojęcia jak to zrobić, czy ktoś mógłby opisać mi to krok po kroku? Byłbym bardzo wdzięczny.
Działam na Windows XP i posiadam słownik PWN-Oxford z 2007 roku.
Z góry dziękuję za pomoc i pozdrawiam.

Anonymous 15. March 2009, 19:23

Marek writes:

Witam ponownie,
z pomocą kolegi udało mi się skonwertować bazy słownika z 2007 roku - zarówno do formatu dict jak i tab (przy okazji mam pytanie: tabfile powinien mieć rozszerzenie .tab czy .txt?) - a zatem nowe skrypty działają. Mam jednak podobny problem jak z0rr0 - stardict nie widzi bazy słownikowej PWN-Oxford, u mnie jednak pojawia się on w Manage Dict, jest zaznaczona ale po wpisaniu dowolnego słowa program nie wyświetla wyników z PWN-Oxford.
Mam jeszcze prośbę - czy ktoś mógłby mi pomóc przy konwersji do .opf lub .prc? (chciałbym aby słownik działał na Mobipocket). Przydatne narzędzia znalazłem na http://www.mobileread.mobi/forums/showthread.php?t=20480
Stawiam jednak pierwsze kroki w pracy z wierszem poleceń dlatego byłbym bardzo wdzięczny za pomoc,
pozdrawiam.

Michał Ziąbkowski 15. March 2009, 20:25

To ciekawe. Nie mam pojęcia czemu miałby słownik nie działać, skoro jest wykrywany. Jaka liczba słów jest wyświetlona w Manage Dict? Czy słownik jest zaznaczony w Query Dict i Scan Dict?

Anonymous 16. March 2009, 16:48

Marek writes:

Słownik zaczął działać po restarcie kompa :) Liczba słów w ang-pol to 63020. Podejrzewam Mziab, że stworzenie skryptu wiązało się ze sporym wysiłkiem dlatego niniejszym składam wyrazy uznania i podziękowania. Jedyne co przychodzi mi teraz do głowy aby choć trochę się odwdzięczyć to podanie linku do strony z programem podobnym do Stardict, oto on: http://www.lingoes.net/en/index.html
Sposób działania niemal identyczny ale Lingoes ma o wiele ładniejszy i bardziej przejrzysty layout – polecam :)
Wiem, że to może niewłaściwe miejsce ale czy ktoś mógłby odpowiedzieć na pytania z poprzedniej wiadomości? Bardzo zależy mi na konwersji do .opf i dlatego tak męczę :)
Pozdrawiam

Michał Ziąbkowski 18. March 2009, 22:04

Lingoes niestety nie bardzo przyda mi się pod Linuksem, ale i tak dzięki :smile:

O szczegóły lepiej zapytaj kogoś, kto używa Pythona pod Windosem. W każdym razie, sprawa sprowadza się do konwersji słownika za pomocą pwn2tabfile, a potem powstałego pliku za pomocą tabfile2opf. Mogą wystąpić problemy z transkrypcją fonetyczną. Na razie nie znalazłem 100% skutecznego na usunięcie samej transkrypcji. Będę jeszcze w tym dłubał.

Anonymous 19. March 2009, 12:29

Marek writes:

Racja – Lingoes nie działa pod Liniksem, szkoda, że Ci się nie przyda.
..Problem mam właśnie ze skryptem tab2opf – po wpisaniu komendy pojawia się „SyntaxError: EOF while scanning triple-quoted string literal” Będę musiał znaleźć kogoś kto używa Linuksa albo sam zainstalować.
Jeśli udałoby Ci się ulepszyć skrypt tab2opf tak aby usuwał transkrypcję ale jakimś cudem zachowywał ją, to byłbym bardzo wdzięczny za info, mój mail: mroova_ancestor@o2.pl.
Jeszcze raz dziękuję za pomoc i pozdrawiam :)

Michał Ziąbkowski 19. March 2009, 13:47

Brzmi to jak źle przeklejony skrypt albo niekompatybilność z wersją Pythona, której używasz. Jeśli masz wersję 3.0, spróbuj z 2.6.

Anonymous 20. March 2009, 17:15

Grzegorz writes:

Witam.
Mam pytanie czy da się wyciągnąć pliki dźwiękowe ?


Michał Ziąbkowski 20. March 2009, 18:27

Nic mi nie wiadomo na temat zapisu dźwięków. Ale z Kydpdictem chyba kiedyś dołączano służacy do tego skryptu, o ile mnie pamięć nie myli. Możliwe, że od tamtego czasu zmienił się format.

Anonymous 21. March 2009, 18:27

Anonim writes:

Najłatwiej pewnie jest wyciągnąć z wersji 2005. Tam
głosy są zapisane w wave.000 w formacie RIFF WAV, a indeksy w wave.vol
Ale w wersji z 2006 są czymś zaszyfrowane
Gdybyś machnął jakiś skrypcik dla wersji 2005 byłbym glad ;)

Anonymous 21. March 2009, 19:57

Grzegorz writes:

Posłuchałem sobie tego pliku w winampie ;)))

Anonymous 21. March 2009, 19:58

Grzegorz writes:

To tylko 879 minut i znam wszystkie słówka

How to use Quote function:

  1. Select some text
  2. Click on the Quote link

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

If you can't read the words, press the small reload icon.


Smilies

December 2009
M T W T F S S
November 2009January 2010
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31