D-Bus service for Apertium
D-Bus is a simple inter-process communication system. We are in the process of developing D-Bus services for Apertium which will make programmatic access to the Apertium tools easier.
D-Bus bus names
D-Bus allows services to be registered under Java style package names (e.g. org.apertium.my_service).
We envision two services:
- org.apertium.info - this will expose objects to query various aspects of the installed apertium system.
- org.apertium.translate - this will exposes translation functions.
Multiple objects can be registered with each service. Objects are given UNIX path names. For example, suppose we have English-Polish (en-pl) and English-Catalan (en-ca) translation modes installed in our system, then org.apertium.translate will expose at least four translation objects:
- English->Catalan translation object,
- Catalan->English translation object,
- English->Polish translation object,
- Polish->English translation object.
Given that one invokes these modes from the command line with "apertium en-ca", "apertium ca-en", "apertium en-pl" and "apertium pl-en", a good naming scheme for the objects would be:
- /en-ca for the English->Catalan translation object
- /ca-en for the Catalan->English translation object
- /en-pl for the English->Polish translation object
- /pl-en for the Polish->English translation object
These objects will have the full names org.apertium.translate/en-ca, org.apertium.translate/ca-en, org.apertium.translate/en-pl and org.apertium.translate/pl-en.
Alternative
Something that just creates the pipeline from the modes.xml file would be good, and then exposes each mode. If people want to change it they can edit the modes file, e.g.:
org.apertium.info
Would list information about what modes are installed, and what they correspond to (e.g. human readable language names, metadata that stuff... this could be in a separate "directory" xml file that is updated with each package installed.)
org.apertium.mode/<name>
Would be an interface to exectute a particular mode on a piece of text. Of course you still have the problem of the other command line options (-u
, -f
, etc...)