diff options
-rw-r--r-- | data/dbverb.struct | 8 | ||||
-rw-r--r-- | data/irregular-verbs.xml | 5 | ||||
-rw-r--r-- | po/POTFILES.in | 1 | ||||
-rw-r--r-- | po/pl.po | 68 | ||||
-rw-r--r-- | po/ru.po | 66 | ||||
-rw-r--r-- | po/uk.po | 66 | ||||
-rw-r--r-- | src/cgi-bin/conj.scm4 | 84 | ||||
-rw-r--r-- | src/ellinika/conjugator.scm | 1 | ||||
-rw-r--r-- | src/ellinika/tests/conj/uelv.scm | 1 | ||||
-rw-r--r-- | style.css | 4 |
10 files changed, 241 insertions, 63 deletions
diff --git a/data/dbverb.struct b/data/dbverb.struct index c3ce606..399d685 100644 --- a/data/dbverb.struct +++ b/data/dbverb.struct @@ -256,7 +256,7 @@ INSERT INTO participle VALUES DROP TABLE IF EXISTS verbclass; CREATE TABLE verbclass( - verb varchar(128), -- REL 10 + verb varchar(128) collate 'utf8_bin', -- REL 10 conj char(32), -- REL 9 INDEX(verb), INDEX(conj) @@ -264,7 +264,7 @@ CREATE TABLE verbclass( DROP TABLE IF EXISTS verbtense; CREATE TABLE verbtense( - verb varchar(128), -- REL 10 + verb varchar(128) collate 'utf8_bin', -- REL 10 voice enum('act','pas'), mood enum('ind','sub','imp'), tense varchar(128), @@ -275,7 +275,7 @@ CREATE TABLE verbtense( DROP TABLE IF EXISTS individual_verb; CREATE TABLE individual_verb( - verb varchar(128), + verb varchar(128) collate 'utf8_bin', voice enum('act','pas'), mood enum('ind','sub','imp'), tense varchar(128), @@ -285,7 +285,7 @@ CREATE TABLE individual_verb( DROP TABLE IF EXISTS irregular_root; CREATE TABLE irregular_root( - verb varchar(128), + verb varchar(128) collate 'utf8_bin', voice enum('act','pas'), -- Ενεργητηκή/Μεσοπαθητική thema char(32), -- enum('pres','aor','sub'), -- Αόριστος/Υποτακτική root varchar(128) diff --git a/data/irregular-verbs.xml b/data/irregular-verbs.xml index ac0e7a5..e69f97c 100644 --- a/data/irregular-verbs.xml +++ b/data/irregular-verbs.xml @@ -119,6 +119,11 @@ <a>θέλω</a> <c>A</c> <act> + <ind> + <t name="Παρατατικός"> + <augment>η</augment> + </t> + </ind> <aor>θέλησ</aor> </act> </v> diff --git a/po/POTFILES.in b/po/POTFILES.in index 7dd8433..1664cdb 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,2 +1,3 @@ src/cgi-bin/dict.scm4 src/cgi-bin/nea.scm4 +src/cgi-bin/conj.scm4
\ No newline at end of file @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Ellinika 1.0\n" "Report-Msgid-Bugs-To: gray@gnu.org\n" -"POT-Creation-Date: 2011-06-04 20:44+0300\n" -"PO-Revision-Date: 2006-03-25 00:19+0200\n" +"POT-Creation-Date: 2011-06-18 17:11+0300\n" +"PO-Revision-Date: 2011-06-18 17:13+0300\n" "Last-Translator: Sergey Poznyakoff <gray@gnu.org.ua>\n" "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" "MIME-Version: 1.0\n" @@ -18,52 +18,52 @@ msgstr "" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -#: src/cgi-bin/dict.scm4:38 +#: src/cgi-bin/dict.scm4:40 src/cgi-bin/conj.scm4:43 msgid "ΣΦΆΛΜΑ: σύνδεση με το λέξικο απέτυχε." msgstr "BŁĄD: nie można podłączyć się do słownika." -#: src/cgi-bin/dict.scm4:135 +#: src/cgi-bin/dict.scm4:95 msgid "και" msgstr "i" -#: src/cgi-bin/dict.scm4:139 +#: src/cgi-bin/dict.scm4:99 msgid "ή" msgstr "albo" -#: src/cgi-bin/dict.scm4:150 +#: src/cgi-bin/dict.scm4:110 msgid "Εισάγετε τη λέξη" msgstr "Podaj słowo" -#: src/cgi-bin/dict.scm4:166 +#: src/cgi-bin/dict.scm4:126 msgid "Συμπληρωματικοί όροι" msgstr "Dodatkowe warunki" -#: src/cgi-bin/dict.scm4:172 +#: src/cgi-bin/dict.scm4:132 msgid "Επιλέξτε το μέρος του λόγου" msgstr "Wybierz część mowy" -#: src/cgi-bin/dict.scm4:247 +#: src/cgi-bin/dict.scm4:207 msgid "Αναζήτηση" msgstr "Szukaj" -#: src/cgi-bin/dict.scm4:354 +#: src/cgi-bin/dict.scm4:314 src/cgi-bin/conj.scm4:289 #, lisp-format msgid "Συγγνώμη, η λέξη \"~A\" δεν βρέθηκε στο λέξικο." msgstr "Słowa \"~A\" nie znaleziono w słowniku." -#: src/cgi-bin/dict.scm4:510 +#: src/cgi-bin/dict.scm4:462 msgid "Αντώνυμο: " msgstr "Antonim: " -#: src/cgi-bin/dict.scm4:510 +#: src/cgi-bin/dict.scm4:462 msgid "Αντώνυμα: " msgstr "Antonimy: " -#: src/cgi-bin/dict.scm4:519 +#: src/cgi-bin/dict.scm4:470 msgid "Βλέπετε επίσης " msgstr "Patrz także " -#: src/cgi-bin/dict.scm4:585 +#: src/cgi-bin/dict.scm4:540 msgid "λέξη" msgid_plural "λέξεις" msgstr[0] "słowo" @@ -74,23 +74,53 @@ msgstr[2] "słów" msgid "ΣΦΆΛΜΑ: σύνδεση με την βάση δεδομένων απέτυχε." msgstr "BŁĄD: nie można podłączyć się do bazy danych." -#: src/cgi-bin/nea.scm4:78 src/cgi-bin/nea.scm4:308 +#: src/cgi-bin/nea.scm4:78 src/cgi-bin/nea.scm4:303 msgid "Κάμια καταχώρηση" msgstr "Brak wpisu" -#: src/cgi-bin/nea.scm4:201 +#: src/cgi-bin/nea.scm4:196 msgid "Κανένα νέα" msgstr "Żadnych nowości" -#: src/cgi-bin/nea.scm4:212 +#: src/cgi-bin/nea.scm4:207 #, lisp-format msgid "Εγγραφείς ~A - ~A" msgstr "Wpisy ~A - ~A" -#: src/cgi-bin/nea.scm4:257 +#: src/cgi-bin/nea.scm4:252 msgid "Προηγούμενες" msgstr "Poprzednie" -#: src/cgi-bin/nea.scm4:271 +#: src/cgi-bin/nea.scm4:266 msgid "Ερχόμενες" msgstr "Następne" + +#: src/cgi-bin/conj.scm4:59 +msgid "Εισάγετε το ρήμα" +msgstr "Podaj czasownik" + +#: src/cgi-bin/conj.scm4:74 +msgid "Κλίση" +msgstr "Koniugacja" + +#: src/cgi-bin/conj.scm4:252 +msgid "δεν βρέθηκε στο λέξικο" +msgstr "nie znaleziono w słowniku" + +#: src/cgi-bin/conj.scm4:266 +msgid "Μη έγκυρη είσοδος" +msgstr "Niepoprawne wejście" + +#: src/cgi-bin/conj.scm4:312 +msgid "" +"Στην λέξη εισαγωγής δεν υπάρχει τόνος. Μήπος θέλατε να κλίσετε ένα απ'αυτά " +"τα ρήματα:" +msgstr "" +"W tym słowie brak akcentów. Czy chodziło Ci o jeden z następujących\n" +"rzeczowników:" + +#: src/cgi-bin/conj.scm4:345 +msgid "" +"Αυτή η λέξη δεν είναι ρήμα στο πρώτο ενικό πρόσωπο της οριστικής του " +"ενεστώτα." +msgstr "Podane słowo nie jest rzeczownikiem w formie 1.os. liczby pojedynczej." @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Ellinika 1.0\n" "Report-Msgid-Bugs-To: gray@gnu.org\n" -"POT-Creation-Date: 2011-06-04 20:44+0300\n" +"POT-Creation-Date: 2011-06-18 17:11+0300\n" "PO-Revision-Date: 2006-03-17 21:42+0200\n" "Last-Translator: Sergey Poznyakoff <gray@gnu.org>, 2004.\n" "Language-Team: Russian <ru@li.org>\n" @@ -19,52 +19,52 @@ msgstr "" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "\n" -#: src/cgi-bin/dict.scm4:38 +#: src/cgi-bin/dict.scm4:40 src/cgi-bin/conj.scm4:43 msgid "ΣΦΆΛΜΑ: σύνδεση με το λέξικο απέτυχε." msgstr "ОШИБКА: не удалось подключится к словарю." -#: src/cgi-bin/dict.scm4:135 +#: src/cgi-bin/dict.scm4:95 msgid "και" msgstr "И" -#: src/cgi-bin/dict.scm4:139 +#: src/cgi-bin/dict.scm4:99 msgid "ή" msgstr "ИЛИ" -#: src/cgi-bin/dict.scm4:150 +#: src/cgi-bin/dict.scm4:110 msgid "Εισάγετε τη λέξη" msgstr "Введите слово" -#: src/cgi-bin/dict.scm4:166 +#: src/cgi-bin/dict.scm4:126 msgid "Συμπληρωματικοί όροι" msgstr "Дополнительные условия" -#: src/cgi-bin/dict.scm4:172 +#: src/cgi-bin/dict.scm4:132 msgid "Επιλέξτε το μέρος του λόγου" msgstr "Выберите часть речи" -#: src/cgi-bin/dict.scm4:247 +#: src/cgi-bin/dict.scm4:207 msgid "Αναζήτηση" msgstr "Поиск" -#: src/cgi-bin/dict.scm4:354 +#: src/cgi-bin/dict.scm4:314 src/cgi-bin/conj.scm4:289 #, lisp-format msgid "Συγγνώμη, η λέξη \"~A\" δεν βρέθηκε στο λέξικο." msgstr "Извините, слово \"~A\" не найдено в словаре." -#: src/cgi-bin/dict.scm4:510 +#: src/cgi-bin/dict.scm4:462 msgid "Αντώνυμο: " msgstr "Антоним: " -#: src/cgi-bin/dict.scm4:510 +#: src/cgi-bin/dict.scm4:462 msgid "Αντώνυμα: " msgstr "Антонимы: " -#: src/cgi-bin/dict.scm4:519 +#: src/cgi-bin/dict.scm4:470 msgid "Βλέπετε επίσης " msgstr "См. также " -#: src/cgi-bin/dict.scm4:585 +#: src/cgi-bin/dict.scm4:540 msgid "λέξη" msgid_plural "λέξεις" msgstr[0] "слово" @@ -75,23 +75,53 @@ msgstr[2] "слов" msgid "ΣΦΆΛΜΑ: σύνδεση με την βάση δεδομένων απέτυχε." msgstr "ОШИБКА: не удалось подключится к базе данных." -#: src/cgi-bin/nea.scm4:78 src/cgi-bin/nea.scm4:308 +#: src/cgi-bin/nea.scm4:78 src/cgi-bin/nea.scm4:303 msgid "Κάμια καταχώρηση" msgstr "Нет статьи" -#: src/cgi-bin/nea.scm4:201 +#: src/cgi-bin/nea.scm4:196 msgid "Κανένα νέα" msgstr "Никаких новостей" -#: src/cgi-bin/nea.scm4:212 +#: src/cgi-bin/nea.scm4:207 #, lisp-format msgid "Εγγραφείς ~A - ~A" msgstr "Записи ~A - ~A" -#: src/cgi-bin/nea.scm4:257 +#: src/cgi-bin/nea.scm4:252 msgid "Προηγούμενες" msgstr "Предыдущие" -#: src/cgi-bin/nea.scm4:271 +#: src/cgi-bin/nea.scm4:266 msgid "Ερχόμενες" msgstr "Следующие" + +#: src/cgi-bin/conj.scm4:59 +#, fuzzy +msgid "Εισάγετε το ρήμα" +msgstr "Введите слово" + +#: src/cgi-bin/conj.scm4:74 +msgid "Κλίση" +msgstr "" + +#: src/cgi-bin/conj.scm4:252 +#, fuzzy +msgid "δεν βρέθηκε στο λέξικο" +msgstr "Извините, слово \"~A\" не найдено в словаре." + +#: src/cgi-bin/conj.scm4:266 +msgid "Μη έγκυρη είσοδος" +msgstr "" + +#: src/cgi-bin/conj.scm4:312 +msgid "" +"Στην λέξη εισαγωγής δεν υπάρχει τόνος. Μήπος θέλατε να κλίσετε ένα απ'αυτά " +"τα ρήματα:" +msgstr "" + +#: src/cgi-bin/conj.scm4:345 +msgid "" +"Αυτή η λέξη δεν είναι ρήμα στο πρώτο ενικό πρόσωπο της οριστικής του " +"ενεστώτα." +msgstr "" @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Ellinika 1.0\n" "Report-Msgid-Bugs-To: gray@gnu.org\n" -"POT-Creation-Date: 2011-06-04 20:44+0300\n" +"POT-Creation-Date: 2011-06-18 17:11+0300\n" "PO-Revision-Date: 2006-03-24 19:25+0200\n" "Last-Translator: Sergey Poznyakoff <gray@gnu.org.ua>\n" "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n" @@ -18,52 +18,52 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: src/cgi-bin/dict.scm4:38 +#: src/cgi-bin/dict.scm4:40 src/cgi-bin/conj.scm4:43 msgid "ΣΦΆΛΜΑ: σύνδεση με το λέξικο απέτυχε." msgstr "ПОМИЛКА: Не вдалося встановити з'єднання зі словником." -#: src/cgi-bin/dict.scm4:135 +#: src/cgi-bin/dict.scm4:95 msgid "και" msgstr "і" -#: src/cgi-bin/dict.scm4:139 +#: src/cgi-bin/dict.scm4:99 msgid "ή" msgstr "або" -#: src/cgi-bin/dict.scm4:150 +#: src/cgi-bin/dict.scm4:110 msgid "Εισάγετε τη λέξη" msgstr "Введіть слово" -#: src/cgi-bin/dict.scm4:166 +#: src/cgi-bin/dict.scm4:126 msgid "Συμπληρωματικοί όροι" msgstr "Додаткові умови" -#: src/cgi-bin/dict.scm4:172 +#: src/cgi-bin/dict.scm4:132 msgid "Επιλέξτε το μέρος του λόγου" msgstr "Виберіть частину мови" -#: src/cgi-bin/dict.scm4:247 +#: src/cgi-bin/dict.scm4:207 msgid "Αναζήτηση" msgstr "Пошук" -#: src/cgi-bin/dict.scm4:354 +#: src/cgi-bin/dict.scm4:314 src/cgi-bin/conj.scm4:289 #, lisp-format msgid "Συγγνώμη, η λέξη \"~A\" δεν βρέθηκε στο λέξικο." msgstr "Пробачте, слова \"~A\" у словнику немає." -#: src/cgi-bin/dict.scm4:510 +#: src/cgi-bin/dict.scm4:462 msgid "Αντώνυμο: " msgstr "Антоним:" -#: src/cgi-bin/dict.scm4:510 +#: src/cgi-bin/dict.scm4:462 msgid "Αντώνυμα: " msgstr "Антоними:" -#: src/cgi-bin/dict.scm4:519 +#: src/cgi-bin/dict.scm4:470 msgid "Βλέπετε επίσης " msgstr "Див. також " -#: src/cgi-bin/dict.scm4:585 +#: src/cgi-bin/dict.scm4:540 msgid "λέξη" msgid_plural "λέξεις" msgstr[0] "слово" @@ -74,23 +74,53 @@ msgstr[2] "слів" msgid "ΣΦΆΛΜΑ: σύνδεση με την βάση δεδομένων απέτυχε." msgstr "ПОМИЛКА: Не вдалося встановити з'єднання з базою даних." -#: src/cgi-bin/nea.scm4:78 src/cgi-bin/nea.scm4:308 +#: src/cgi-bin/nea.scm4:78 src/cgi-bin/nea.scm4:303 msgid "Κάμια καταχώρηση" msgstr "Немає записів" -#: src/cgi-bin/nea.scm4:201 +#: src/cgi-bin/nea.scm4:196 msgid "Κανένα νέα" msgstr "Жодних новин" -#: src/cgi-bin/nea.scm4:212 +#: src/cgi-bin/nea.scm4:207 #, lisp-format msgid "Εγγραφείς ~A - ~A" msgstr "Записи ~A - ~A" -#: src/cgi-bin/nea.scm4:257 +#: src/cgi-bin/nea.scm4:252 msgid "Προηγούμενες" msgstr "Попередні" -#: src/cgi-bin/nea.scm4:271 +#: src/cgi-bin/nea.scm4:266 msgid "Ερχόμενες" msgstr "Наступні" + +#: src/cgi-bin/conj.scm4:59 +#, fuzzy +msgid "Εισάγετε το ρήμα" +msgstr "Введіть слово" + +#: src/cgi-bin/conj.scm4:74 +msgid "Κλίση" +msgstr "" + +#: src/cgi-bin/conj.scm4:252 +#, fuzzy +msgid "δεν βρέθηκε στο λέξικο" +msgstr "Пробачте, слова \"~A\" у словнику немає." + +#: src/cgi-bin/conj.scm4:266 +msgid "Μη έγκυρη είσοδος" +msgstr "" + +#: src/cgi-bin/conj.scm4:312 +msgid "" +"Στην λέξη εισαγωγής δεν υπάρχει τόνος. Μήπος θέλατε να κλίσετε ένα απ'αυτά " +"τα ρήματα:" +msgstr "" + +#: src/cgi-bin/conj.scm4:345 +msgid "" +"Αυτή η λέξη δεν είναι ρήμα στο πρώτο ενικό πρόσωπο της οριστικής του " +"ενεστώτα." +msgstr "" diff --git a/src/cgi-bin/conj.scm4 b/src/cgi-bin/conj.scm4 index 42b8405..7f7d347 100644 --- a/src/cgi-bin/conj.scm4 +++ b/src/cgi-bin/conj.scm4 @@ -23,6 +23,7 @@ (ice-9 rdelim) (ice-9 optargs) (xmltools dict) + (ellinika config) (ellinika elmorph) (ellinika tenses) (ellinika conjugator) @@ -64,7 +65,7 @@ ifelse(IFACE,[CGI],(cgi:init)) (if value (begin (display " value=\"") - (display (cgi-protect-quotes (ellinika:translate-input value))) + (display (cgi-protect-quotes value)) (display "\"")))) (display " /> </td> @@ -232,6 +233,24 @@ ifelse(IFACE,[CGI],(cgi:init)) (define (show-conjugation verb) (catch #t (lambda () + (let ((descr (ellinika:sql-query + "SELECT articles.meaning\ + FROM dict,articles\ + WHERE dict.word=~Q AND dict.ident=articles.ident\ + AND articles.lang=~Q AND (dict.pos & 1048576) = 1048576\ + ORDER BY articles.subindex\ + LIMIT 1" + verb + (language-code target-language)))) + (cond + ((and descr (not (null? descr))) + (format #t "<h2 class=\"verb\">~A - ~A</h2>" + verb (caar descr))) + (else + (format #t "<h2 class=\"verb\">~A - (~A)</h2>" + verb + (_ "δεν βρέθηκε στο λέξικο"))))) + (for-each (lambda (voice) (show-conjugation:voice voice)) @@ -244,7 +263,7 @@ ifelse(IFACE,[CGI],(cgi:init)) (subkey fmtstr fmtargs) (case subkey ((conjugator-error-input) - (error-message "Invalid input")) + (error-message (_ "Μη έγκυρη είσοδος"))) (else (error-message "CONJUGATOR ERROR: ~A ~A" subkey (apply format #f fmtstr fmtargs)))))) @@ -265,10 +284,69 @@ ifelse(IFACE,[CGI],(cgi:init)) (show-conjugation:voice voice)) (conjugate-all verb))) +(define (search-failure key) + (display "<h2>") + (format #t (_"Συγγνώμη, η λέξη \"~A\" δεν βρέθηκε στο λέξικο.") key) + (display "</h2>")) + +(define (display-cross-reference word) + (display "<a href=\"") + (display (make-cgi-name cgi-script-name "key" (dict:encode-string word))) + (display "\">") + (display word) + (display "</a>")) + +(define (show-best-matches key) + (let ((result (ellinika:sql-query + "SELECT DISTINCT word\ + FROM dict\ + WHERE sound LIKE ~Q\ + AND (pos & 1048576) = 1048576 ORDER BY 1" + (ellinika:sounds-like key)))) + (cond + ((null? result) + (search-failure key)) + (else + (format #t + "<div class=\"error\"><p>~A</p></div>" + (_ "Στην λέξη εισαγωγής δεν υπάρχει τόνος. Μήπος θέλατε να κλίσετε ένα απ'αυτά τα ρήματα:")) + (display "<table width=\"100%\" class=\"noframe\">") + (let* ((result-length (length result)) + (lim (1+ (quotient result-length match-list-columns)))) + (do ((i 0 (1+ i))) + ((= i lim) #f) + (display "<tr>") + (do ((j i (+ j lim))) + ((>= j result-length) #f) + (display "<td>") + (display-cross-reference (car (list-ref result j))) + (display "</td>")) + (display "</tr>"))) + (display "</table>"))))) + + (define (do-conj) (let ((keyval (cgi:value "key"))) (if (and keyval (not (string-null? keyval))) - (show-conjugation (ellinika:translate-input keyval))))) + (let ((input (ellinika:translate-input + (let ((keyval keyval)) + (cond + ((string-suffix? "o'" keyval) + (string-set! keyval + (- (string-length keyval) 2) #\v)) + ((string-suffix? "o" keyval) + (string-set! keyval + (- (string-length keyval) 1) #\v))) + keyval)))) + (cond + ((not (elstr-suffix? input "ω" "ώ" "ομαι" "αμαι")) + (format #t + "<div class=\"error\"><p>~A</p></div>" + (_ "Αυτή η λέξη δεν είναι ρήμα στο πρώτο ενικό πρόσωπο της οριστικής του ενεστώτα."))) + ((= (elstr-accented-syllable input) 0) + (show-best-matches input)) + (else + (show-conjugation input))))))) (define (print-footnote id sign text) (format #t "<p><a name=\"~A\">~A</a> ~A</p>~%" diff --git a/src/ellinika/conjugator.scm b/src/ellinika/conjugator.scm index 069d641..8b689a4 100644 --- a/src/ellinika/conjugator.scm +++ b/src/ellinika/conjugator.scm @@ -538,7 +538,6 @@ AND i.tense=\"~A\" AND i.ident=f.ident" (else (list-head conj 6)))) - (define-public (conjugation:class conj) (cond ((not conj) diff --git a/src/ellinika/tests/conj/uelv.scm b/src/ellinika/tests/conj/uelv.scm index 9c031eb..1ac1f0c 100644 --- a/src/ellinika/tests/conj/uelv.scm +++ b/src/ellinika/tests/conj/uelv.scm @@ -1,3 +1,4 @@ (use-modules ((ellinika test-conjugation))) (test-conjugation:verb "θέλω") +;(test-conjugation:tense "θέλω" "act" "ind" "Παρατατικός")
\ No newline at end of file @@ -481,3 +481,7 @@ img.ellinika-img { margin-left: auto; margin-right: auto; } + +h2.verb { + text-decoration: underline; +} |