Many systems need to translate information between different representations. For example, financial systems must translate values between different currencies, middleware must translate function or method calls between different languages and diplomatic institutions such as the United Nations (http://www.un.org/
) or the European Parliament (http://www.europarl.eu.int/
) must translate between the different natural languages used by their participants.
The cost of translation becomes unsupportable with large numbers of representations if representations are translated directly from one to the other.
This is because the number of translations increases as the square of the number of representations. E.g. With N
representations, each requires
-1 translations, or N
Translate between native representations and a single common representation, or Lingua Franca
To translate information between two representations, first translate it from the source representation into the Lingua Franca, and then from the Lingua Franca into the target representation.
With a Lingua Franca, the cost of translation increases linearly with the number of representations. Each representation needs only be translated to/from the Lingua Franca.
However, a Lingua Franca reduces the accuracy of translation. Because two translation steps are required, errors or inaccuracies in translation are more likely, or can be exacerbated by the additional step. For example, rounding errors may occur in each translation step.
Furthermore, The Lingua Franca may not be able to express all constructs of all representations and so its use may limit information to the lowest common denominator of all representations. For example, CORBA IDL only allows the definition of simple tree structured data types; although implementation languages may support graph structured data with aliasing and pointers into the middle of nodes, these structures cannot be expressed in IDL.
Known uses include:
- Latin, used as the Lingua Franca of the Roman Catholic Church.
- CORBA IDL is used to define language-neutral interfaces.
- C is used by compilers as a "portable assembler". This is a variant usage. The C language is not used to translate between high-level languages, but is used to avoid writing a code generator for each language and target architecture.
- The United Nations has this pattern, but in their case there is more than one Lingua Franca: English, French, Spanish and Russian.
- The MetricSystem (SI Units of measurement)
- Unix represents time as seconds since the 1/1/1970. Times in particular timezones are parsed into and printed from this representation. (See also TheBeginningOfTime.) The Java Date and DateFormat? classes work in the same way.
- XML schemas defined by the EDI standards are used as industry standard inter-company format for representing purchase orders, invoices, etc.
- XML document types are used by the Jabber instant messaging system  to represent messages. Jabber interfaces with proprietary instant messaging systems (AIM, ICQ, etc.) by translating their messages into its XML format.
- PostScript is a LinguaFranca for describing printed pages. The printing APIs of Windows, MacOS or Unix all generate PostScript and so any OS can control any PostScript printer.
- PDL is another LinguaFranca for describing printed pages.
- The Windows GDI API is a common rendering API used for to draw onto the screen, off-screen images, and printers. By writing to the GDI API, Windows programs can print onto both PostScript and PDL printers.
These are examples of potential uses... can someone document concrete
examples of these?
- Converting to and from various graphics formats via a common format
- Converting to and from various word-processor formats via a common format
- Converting data types (e.g. various String-like classes that convert to each other via a common class, or various-length integer classes that convert to each other via a common class)
- The now defunct OrderTrust company used this as a business model. It helped e-commerce sales entities and warehouses to speak to each other. A transmission would come from a company to OrderTrust, get canonicalized into its lingua franca, processed, and the results would get decanonicalized to the recipient's preferred language. This way, the company was able to support e-commerce communications between nearly a thousand companies, each with its own ideosyncratic protocols.
- Providing multilingual user interfaces.
: "Lingua Franca" is an Italian phrase that literally means "Frankish Language"; according to Merriam-Webster's dictionary, it was originally "a common language consisting of Italian mixed with French, Spanish, Greek, and Arabic that was formerly spoken in Mediterranean ports." Introduced into English in 1619.
This pattern was originally written up as paper by BrianFoote
, available from http://www.laputan.org/lingua/lingua.html
The history of Latin as the LinguaFranca
of the CatholicChurch
is spotty, at best. For example, there are numerous reports from the Middle Ages of undereducated rural priests who, knowing almost no Latin, were mangling the Gospels and passing the misinterpretations on to their parishioners.
Of course, translation between computer formats is almost always simpler than between human languages.