Skip to content

Translation Workflow

Tobias Killer edited this page Apr 9, 2021 · 13 revisions

Translation Workflow

This Guide is under construction

Welcome

Hello and thank you for your interest in translating Qubes OS!

Our translation process is handled through Transifex, a translation platform used by many open source projects.

If you want to join us as a translator or reviewer, make an account at Transifex (https://www.transifex.com/otf/qubes) and tell us at the translation mailing list your account name and language(s) you are interested in. If you would like to help in other roles (see below), tell us on the mailing list, too.

If there are any questions you don't know whom to ask then also write to the translation mailing list.

And please be patient - this guide is always a work in progress, and suggestions on improving it are always welcome!

General workflow

  1. Website maintainers and code maintainers update/upload untranslated strings to Transifex whenever they make changes (website) or a new version of a package is released (code)
  2. Translators translate on Transifex, consulting the Translation Guidelines and Translation Priority List.
  3. Reviewers (important: a reviewer should never review their own translation!) review the translations, correct any problems and mark files as translated.
  4. Translated files are automatically uploaded to the correct github repository via Transifex webhooks and GitHub API integration.

Transifex specific steps

  1. Can we mark specific difficult files with a lot of html code as needing special attention for reviewers? TODO
  2. Done by project Transifex project maintainers: define and maintain Transifex custom variables. If some of them are not managable via Transifex, copy them to the Translation Guidelines! Actually even if they are, the list should be added to the Guidelines TODO
Pattern [start] Pattern [end] Explanation Example
][ ] A markdown link [denial-of-service (DoS) attacks][DoS]
[ ](/ A markdown link [news post](/news/)
](/ /) A markdown link [news post](/news/)
[ ](http A markdown link [email](https://groups.google.com/d/msg/qubes-devel/twkOEaMLtNI/lZyGx6_jFCEJ)
](http ) A markdown link [email](https://groups.google.com/d/msg/qubes-devel/twkOEaMLtNI/lZyGx6_jFCEJ)
[ ](# A markdown link [distrust the infrastructure](#what-does-it-mean-to-distrust-the-infrastructure)
](# ) A markdown link [distrust the infrastructure](#what-does-it-mean-to-distrust-the-infrastructure)
![ ](/ Image ![r2b2-kde-start-menu.png](/attachment/wiki/QubesScreenshots/r2b2-kde-start-menu.png)
](/ ) A markdown link ![r2b2-kde-start-menu.png](/attachment/wiki/QubesScreenshots/r2b2-kde-start-menu.png)
(http ) A markdown link [email](https://groups.google.com/d/msg/qubes-devel/twkOEaMLtNI/lZyGx6_jFCEJ)
[ ]: internal links [disposable qube]: http
https:// / external links https://tails.boum.org/
http:// / external links http://example.com/
` ` inline code `security-testing`
``` ``` syntax highlightning untar the downloaded file ```tar xf install_flash_player_11_linux.x86_64.tar.gz```
~~~ ~~~ code/commandline snippet ~~~\n# qubes-dom-update qubes-core-dom0 qubes-manager\n# yum reinstall qubes-core-dom0\n# yum reinstall qubes-manager\n~~~
~~ ~~ strikethrough ~~bla~~
* * emphasis italic * bla *
** ** emphasis bold ** bla **
_ _ emphasis _ bla _
__ __ emphasis __ bla __
{{ }} liquid variable/expression {{ timespan_human }} or {{ xsa_used | round }}
< > html code snippet <table>
</ > html code snippet </th>
< /> html code snippet <https://ask.fedoraproject.org/en/question/88086/error-failed-to-synchronize-cache-for-repo-fedora/>
{% %} liquid expression {% endif %}
$ gpg2 .asc import key gpg2 --import /usr/share/qubes/qubes-master-key.asc
$ git > git related $ git verify-tag <tag name>
<a </a> html specific
<a class </a> html specific
<a href= > html specific
<i class </i> html specific
<img src= > html specific
\\ \\
  1. Create language specific documentation file inside the qubes-translation submodule for the specific language to be maintained by translators as a README.md Refer to it from the general language specific guidelines**TODO **
  2. Update the general contribution guidelines TODO

or via "Enter a custom variable" see Transifex custom variables.

Exact matches Example
\n--------------- (of different length) Important Notes\n---------------
\n=========================== (of different length) Security Bulletin Checklist\n===========================
--------------- (of different length)
=========================== (of different length)
\n new line
all permalinks/redirects /doc/dispvm/
all defined markdown links [doc](/doc/dispvm/)
### (of different length) New issues should not be duplicates of existing issues ###
&amp; (other ASCII chars?) Download &amp; Install
| Pipe

Translation project roles

Type [Tasks]
Controller
  • be available for problems/questions/improvements of the workflow
  • maintain this wiki and workflow information
  • assign roles and projects in Transifex to translators and reviewers
  • perform periodic overview of currently translated/obsolete/uploaded etc. content
currently performed by https://github.com/marmarta
Translator
Reviewer
Tester
  • check links if their names are correct (and the links work), mostly done automatically, you can also use a Browser Addon such as
  • check the translated files in the Test branch for correct formatting
  • move to or merge with the Master branch (i.e. getting online)
  • After all tests have succeeded, the tester uploads the file to the official online website. If a test fails, the tester has to comment the mistake or open an issue via the Transifex interface

Translation issue template

Language:
Affected files (name of the resource on transifex):
Steps to reproduce the behavior:
Expected or desired behavior:
Actual behavior:
General notes:
I have consulted the following relevant documentation:
I am aware of the following related, non-duplicate issues:

Credits

This is based on the original proposal by tokideveloper. Additional improvements made by maiska & marmarta.