Add initial contributing information

Julien LepillerTue Oct 09 22:48:21+0200 2018

89b46b5

Add initial contributing information

CONTRIBUTING.md unknown status 1

1+
How to contribute?
2+
==================
3+
4+
Adding a system
5+
---------------
6+
7+
A system is a class in offlate/systems.  It must implement at least these
8+
methods:
9+
10+
```python
11+
__init__(conf, name, lang, data = {})
12+
```
13+
14+
To initialise the object.  `conf` is the global configuration object for this
15+
system.  `name` is the name of the project and `lang` is the language to which
16+
the project is translated. Finally, `data` may contain additional information
17+
on the project.
18+
19+
```python
20+
open(basedir)
21+
```
22+
23+
Implements the opening procedure for the project.  `basedir` is the directory
24+
in which the project files are located.  This method is called at the beginning
25+
of the application.
26+
27+
```python
28+
initialize(basedir)
29+
```
30+
31+
Initialises a new project.  `basedir` is the directory in which the project
32+
files are located.
33+
34+
```python
35+
update(callback)
36+
```
37+
38+
Updates the project by connecting to the translation platform.  `callback` is
39+
a procedure that can be called to resolve conflicts.  This procedure looks like
40+
`callback(string_to_translate, local_translation, remote_translation)` and
41+
returns a translation for the string to translate.  Note that the returned value
42+
might be different from the translations that were passed to it.
43+
44+
```python
45+
send(interface)
46+
```
47+
48+
Sends the current state of the work to the platform, using `interface` as
49+
a way to ask more information to the user.
50+
51+
```python
52+
save()
53+
```
54+
55+
Saves the current state of the work in the project's directory.  This should
56+
be enough to resume work when the application is opened again and `open` is
57+
called.
58+
59+
```python
60+
content()
61+
```
62+
63+
Retuns the content of the translation files, an object containing one field
64+
per project-resource.  If the system doesn't have a notion of resource, the
65+
resource should be called "default". Each resource contains a list of `Entry`
66+
objects.
67+
68+
Adding a format
69+
---------------
70+
71+
A format is represented by a class in offlate/formats.  It must implement at
72+
least these methods:
73+
74+
```python
75+
init(files, conf)
76+
```
77+
78+
Initialise the object.  `files` is a variable whose meaning depends on the
79+
format.  This variable is most likely an dictionnary containing a few fields
80+
whose values are filenames.  `conf` is a configuration dictionnary for the
81+
format.
82+
83+
```python
84+
content()
85+
```
86+
87+
Returns a list of Entry objects corresponding to the content of the files.
88+
89+
```python
90+
save()
91+
```
92+
93+
Saves the list of Entry.