Language or dialect?¶
In this documentation, the words “dialect” and “language” are used in what may seem at first to be a confusing way.
A given language is identified by its
two-letter code.
For example, fr identifies the French language.
Dialects definitions for language xx are Python files
named pyxx.py and are found in the AvantPy’s repository:
avantpy/dialects/ directory.
Perhaps an example is the best way to demonstrate, using two different
“languages” in an unusual way.
We we will generate an
error message by trying to assign the AvantPy keyword repeat
(répéter in the French dialect) and show the error message
in the other language using the AvantPy console:
$ python -m avantpy --lang fr --dialect pyen
AvantPy version 0.0.8. [Python version: 3.7.0]
pyen> repeat 3:
...       print('Hello!')
...
Hello!
Hello!
Hello!
pyen> # Let's do something forbidden; the explanation will be in French
pyen> a = repeat
    Exception AvantPy : RepeatFirstError
    Erreur trouvée dans le fichier '<AvantPy console>' à la ligne 1.
    Dialecte utilisé : pyen
    -->1: a = repeat
    Le mot-clé 'repeat' spécifique à Avantpy peut seulement être utilisé
    pour débuter une nouvelle boucle 'pour' ou 'tantque'
    (équivalent Python: 'for' ou 'while').
pyen> # Ok, let's do things in opposite languages
pyen> set_lang('en')
    ==> Language: en | AvantPy dialect: pyen
pyen> set_dialect('pyfr')
    ==> Language: en | AvantPy dialect: pyfr
pyfr> répéter 3:
...       afficher('Bonjour!')
...       print('---')  # Normal Python always recognized
...
Bonjour!
---
Bonjour!
---
Bonjour!
---
pyfr> b = répéter
    AvantPy exception: RepeatFirstError
    Error found in file '<AvantPy console>' on line 1.
    Dialect used: pyfr
    -->1: b = répéter
    The AvantPy 'répéter' keyword can only be used to begin
    a new loop (Python: equivalent to 'for' or 'while' loop).
pyfr>
Existing dialects¶
Dialects definitions for language xx are Python files
named pyxx.py and are found in the AvantPy’s repository:
avantpy/dialects/ directory.
Currently, a DRAFT implementation of the following dialects exist:
In addition to the additional keywords needed for the special idioms used in AvantPy,
and explained later in this documentation, the English dialect includes the
keyword function as being equivalent to lambda, and ask as being
equivalent to input.
Finally, an UPPERCASE version of AvantPy’s English dialect exists; this is primarily intended to be used as a template for other dialects, and for testing.
Existing languages¶
Language translations are implemented using gettext. Currently, in addition to the default English version, the only available language is French.
Both the original text in English and the French version should be considered to be draft versions.