# MOLTO Multilingual Phrasebook

Aarne Ranta

History

- 26 March 2010. Version 0.1: Eng, Fin, Fre, Ron; dedicated minibar UI.
- 28 March. Version 0.2: Swe, Ita; cat Action; small phrases.
- 30 March. Version 0.3: disambiguation grammar for English
- 6 April. Version 0.4: weekdays, nationalities

Missing constructs

Back to phrasebook

# Purpose

This phrasebook is a program for translating touristic phrases between the 15 European languages included in the MOLTO project (Multilingual On-Line Translation):

- Bulgarian, Catalan, Danish, Dutch, English, Finnish, French, German, Italian, Norwegian, Polish, Romanian, Russian, Spanish, Swedish

It is implemented by using the GF programming language (Grammatical Framework). It is the first demo for the MOLTO project, released in the third month but to be updated in the course of the project.

The phrasebook has the following requirements:

- high quality: reliable translations
- translation from any language to any other ones
- runnable in web browsers
- runnable on mobile phones (also off-line: forthcoming for Android phones)
- easily extensible by new words (forthcoming: semi-automatic extensions by users)

The phrasebook is available as open-source software, licensed under GNU LGPL. The source code resides in `code.haskell.org/gf/examples/phrasebook/`

Current status (6 April 2010):

- available in English, Finnish, French, Italian, Romanian, Swedish
- small coverage
- works on web browsers calling a server
- web service not yet released, but preliminarily available in `http://tournesol.cs.chalmers.se/~aarne/phrasebook/phrasebook.html`

# Points illustrated

The use of resource grammars and functors.

Compile-time transfer: especially, in Action in Words.

Quasi-incremental translation: many basic types are also used as phrases.

Disambiguation, esp. of politeness distinctions.

# Ontology

The abstract syntax defines the ontology behind the phrasebook. The ontology consists of the following categories. Some explanations can be found in the abstract syntax file `Sentences.gf`.

# Files

`Sentences`: general syntactic structures implementable in a uniform way. Concrete syntax via the functor `SencencesI`.

`Words`: words and predicates, typically language-dependent. Separate concrete syntaxes.

`Greetings`: idiomatic phrases, string-based. Separate concrete syntaxes.

`Phrasebook`: the top module putting everything together. Separate concrete syntaxes.

`DiffPhrasebook`: the (so far small) interface for `Sentences`.

`DisambPhrasebook`: disambiguation grammars generating feedback phrases if the input language is ambiguous.

Here is the module structure as produced by

        > i -retain DisambPhrasebookEng.gf
        > dg -only=Phrasebook*,Sentences*,Words*,Greetings*,DiffP*,DisambPhrasebookEng
        > ! dot -Tpng _gfdepgraph.dot >pgraph.png

# To Do

Improved translation interface

- a to list of languages: either all, or just one
- combined text field/fridge magnet input; filter magnets by started word prefix
- a nicer way to show disambiguation (smaller font, maybe hidden by default)

The remaining 10 languages

Disambiguation grammars for other languages than English

Extend lexica by hand or (semi)automatically for

- food stuff
- languages
- places

Link to Google translate, for fall-back and for comparison

Feedback facility in the UI

# How to contribute

The basic things "everyone" can do is

- complete missing words in concrete syntaxes
- add new abstract words in `Words` and greetings in `Greetings`

The missing concrete syntax entries are added to the `Words` L`.gf` files for each language L. The morphological paradigms of the GF resource library should be used. Actions (prefixed with `A`, as `AWant`) are a little more demanding, since they also require syntax constructors. Greetings (prefixed with `G`) are pure strings.

Here are the steps to follow for contributors:

1. Make sure you have the latest sources from GF Darcs, using `darcs pull`.
2. Also make sure that you have compiled the library by `make present` in `gf/lib/src/`.
3. Work in the directory `gf/examples/phrasebook/`.
4. After you've finished your contribution, recompile the phrasebook by `make`.
5. Save your changes in `darcs record .` (in the `phrasebook` subdirectory).
6. Make a patch file with `darcs send -o my_phrasebook_patch`, which you can send to GF maintainers.
7. (Recommended:) Test the phrasebook on your local server:
   1. Go to `gf/src/server/` and follow the instructions in the project Wiki.
   2. Make sure that `Phrasebook.pgf` is available to you GF server (see project wiki).
   3. Launch `lighttpd` (see project wiki).
   4. How you can open `gf/examples/phrasebook/www/phrasebook.html` and use your phrasebook!

- Don't delete anything! But you are free to correct incorrect forms.
- Don't change the module structure! But you are free to add a new language.
- Don't compromise quality to gain coverage: non multa sed multum!