summaryrefslogtreecommitdiffabout
authorSergey Poznyakoff <gray@gnu.org.ua>2011-06-18 14:21:37 (GMT)
committer Sergey Poznyakoff <gray@gnu.org.ua>2011-06-18 14:21:37 (GMT)
commit978e459eb3f79853adf0dea0a8118f259e5cfa6e (patch) (side-by-side diff)
treeefb2049ff2f8e4ef952987e97cbf5179f3fe7bf6
parent8981940c41b9107a8bb387433cd0c7a6408bf03e (diff)
downloadellinika-978e459eb3f79853adf0dea0a8118f259e5cfa6e.tar.gz
ellinika-978e459eb3f79853adf0dea0a8118f259e5cfa6e.tar.bz2
Improve conj.
* data/dbverb.struct: Use utf8_bin collation for the `verb' column in all tables. * data/irregular-verbs.xml: Update. * po/POTFILES.in: Add conj.scm4. * po/pl.po: Update. * src/cgi-bin/conj.scm4: Try to fix some common input errors. Look up the verb in the dictionary. If there are no tones in the input word, look it up in the dictionary using the "soundslike" method. * style.css: Add h2.verb class.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--data/dbverb.struct8
-rw-r--r--data/irregular-verbs.xml5
-rw-r--r--po/POTFILES.in1
-rw-r--r--po/pl.po68
-rw-r--r--po/ru.po66
-rw-r--r--po/uk.po66
-rw-r--r--src/cgi-bin/conj.scm484
-rw-r--r--src/ellinika/conjugator.scm1
-rw-r--r--src/ellinika/tests/conj/uelv.scm1
-rw-r--r--style.css4
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
diff --git a/po/pl.po b/po/pl.po
index 5911fc5..d73b4b6 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -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."
diff --git a/po/ru.po b/po/ru.po
index 75f9885..41a7896 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -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 ""
diff --git a/po/uk.po b/po/uk.po
index a4fe80f..100ce42 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -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>&nbsp;&nbsp;~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
diff --git a/style.css b/style.css
index b5b4972..98bb205 100644
--- a/style.css
+++ b/style.css
@@ -481,3 +481,7 @@ img.ellinika-img {
margin-left: auto;
margin-right: auto;
}
+
+h2.verb {
+ text-decoration: underline;
+}

Return to:

Send suggestions and report system problems to the System administrator.