MOLTO Multilingual Phrasebook
Aarne Ranta


%!postproc(html): #HR <HR>
%!postproc(html): #BSMALL <font size=-1>
%!postproc(html): #ESMALL </font>




#HR
#BSMALL

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 missing.txt] 

[Back to phrasebook http://tournesol.cs.chalmers.se/~aarne/phrasebook/phrasebook.html]

#ESMALL
#HR


=Purpose=

This phrasebook is a program for translating touristic phrases 
between the 15 European languages included in the 
[MOLTO http://www.molto-project.eu] 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 http://grammaticalframework.org]).
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/`` http://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`` 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`` http://code.haskell.org/gf/examples/phrasebook/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
```

[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 missing.txt] 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 http://www.grammaticalframework.org/lib/doc/synopsis.html#toc78]
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:
+ Make sure you have the latest sources 
  from [GF Darcs http://www.grammaticalframework.org/doc/gf-developers.html], using ``darcs pull``.
+ Also make sure that you have compiled the library by ``make present`` in ``gf/lib/src/``.
+ Work in the directory [``gf/examples/phrasebook/`` http://code.haskell.org/gf/examples/phrasebook/].
+ After you've finished your contribution, recompile the phrasebook by ``make``.
+ Save your changes in ``darcs record .`` (in the ``phrasebook`` subdirectory).
+ Make a patch file with ``darcs send -o my_phrasebook_patch``, which you can send to GF maintainers.
+ (Recommended:) Test the phrasebook on your local server:
  + Go to ``gf/src/server/`` and follow the instructions in the
    [project Wiki http://code.google.com/p/grammatical-framework/wiki/LaunchWebDemos].
  + Make sure that ``Phrasebook.pgf`` is available to you GF server (see project wiki).
  + Launch ``lighttpd`` (see project wiki).
  + 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!// 













