From a733e148e2d0f290fa357c77a614f43a5f106d39 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby Date: Mon, 18 Sep 2023 15:03:30 +0200 Subject: [PATCH] doc: dev: Complete contribution. --- doc/dev/documentation.org | 43 ++++++++++++++++++++++++-- doc/images/Qt-linguist-setup-lang.png | Bin 0 -> 21516 bytes 2 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 doc/images/Qt-linguist-setup-lang.png diff --git a/doc/dev/documentation.org b/doc/dev/documentation.org index f7b4dbd8..fe817d41 100644 --- a/doc/dev/documentation.org +++ b/doc/dev/documentation.org @@ -291,7 +291,7 @@ Some org-mode configuration used in documentations files are define in - {{{file(setup.el)}}}: GNUEmacs configuration to build documentations - {{{file(ref.bib)}}}: Bibtex files for documentations files -* TODO How to contribute? +* How to contribute? Pamhyr2 is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License[fn:license], either @@ -339,7 +339,44 @@ information for following contribution. https://gitlab.irstea.fr/theophile.terraz/pamhyr [fn:inrae] The INRAE web site: https://www.inrae.fr/ -** TODO Translate -** TODO Code contribution +** Translate + +You can improve or add translation for the project. To contribute to +Pamhyr2 translate, you need to use Qt Linguist[fn:qt-linguist]. Open +Qt-linguist and edite the translation ({{{file(.ts)}}}) file, finally, +commit the new version of file and make a merge request. + +If you want add a new language, edit the script +{{{file(src/lang/create_ts.sh)}}} like Listing [[ts-it]]. Run the script +and open the new file with Qt-linguist, setup target language (Figure +[[qt-linguist-setup]]) and complete translation. Finally, commit the new +file and make a merge request. + +#+NAME: ts-it +#+CAPTION: Example of modified {{{file(src/lang/create_ts.sh)}}} to add italian (it) translate for Pamhyr2 +#+begin_src shell + ... + LANG="fr it" + ... +#+end_src + +#+NAME: qt-linguist-setup +#+ATTR_HTML: :width 8cm +#+ATTR_LATEX: :width 8cm +#+CAPTION: Qt linguist lang setup example with italian. +[[../images/Qt-linguist-setup-lang.png]] + +[fn:qt-linguist] The Qt linguist documentation web page: +https://doc.qt.io/qt-5/qtlinguist-index.html (last access 2023-09-18) + +** Code contribution + +If you are developper you can improve and/or add features to +Pamhyr2. Please, follow the architecture described in section +[[Architecture]] as closely as possible. Keep the code simple, clear and +efficient as possible. The master branch is reserved for the project +maintainer; you can create a new branch or fork the project before the +request. + {{{biblio}}} diff --git a/doc/images/Qt-linguist-setup-lang.png b/doc/images/Qt-linguist-setup-lang.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba375d1f4a0e451fd0055c85182353eda959d18 GIT binary patch literal 21516 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 literal 0 HcmV?d00001