π Working on translations
Translating YunoHost β not just the software, but also the documentation and app catalog β is essential to making the project accessible to a wider audience.
We primarily use Weblate, an excellent self-hostable FOSS translation platform. No development tool / skill (such as Git) is required to contribute to translations: the point of Weblate is precisely to focus on translation. New translations are automatically synced with the development the development repositories behind the scenes. The YunoHost project hosts its own Weblate instance at https://translate.yunohost.org.
If you're interested in contributing but need us to add your language, need help, or require assistance with unlocking components, please donβt hesitate to contact us. You can reach out via the forum or the chatrooms.
βοΈ Softwareβ
YunoHost "core", webadmin, user portal and other software pieces are translated within the main project:
Translations are automatically pushed to the corresponding Git repositories, merged by the team, and included in the next minor release of the corresponding software component.
Under the hood, the strings are typically stored in JSON files, for example here for the core and here for the webadmin. You are also welcome to help improve the source messages, though this requires using Git/GitHub.
π Documentationβ
The documentation is also translated on our Weblate instance in a separate, dedicated project:
Translations are regularly synced to the corresponding Git repository, merged by the team, and automatically published.
Currently, only the "admin" section of the documentation is translatable, though we may open specific pages from the contribution and community sections for translation in the future. We also need to integrate a translation workflow for the navigation bar, footer, and other elements.
Under the hood, the documentation is written using Markdown here. We use po4a to extract strings out of the .mdx, into standard.po/.pot files, plugged in Weblate, and vice-versa.
You are welcome to also improve the source pages, but this requires to use Git/GitHub.
β¨ Project website and app storeβ
The project website and application store are also available to translation.
Here as well, translations are regularly synced to the corresponding Git repositories here and here, merged by the team, and automatically published.
When we refer to the "app store," we are talking about the interface of the store itself, not the individual app descriptions or app-specific content (see the next section).
The catalog categories are not easily translatable yet either. The corresponding file is here and contains title/description for each category in each language. Ideally this will be in Weblate as well somedayβ’. In the meantime, you can contribute to this as well, but this requires using Git/GitHub.
π¦ Individual appsβ
Each individual YunoHost app has its own set of messages, such as descriptions, installation questions, and specific admin instructions.
Unfortunately, these are not yet easily translatable (= not integrated in Weblate), though it is goal for the project to make enable this in the mid- to long-term.
Currently, translation work for apps can only be done through Git/GitHub. App-specific messages are part of each individual app repository (for example this repo for Nextcloud). More specifically:
- the app's
manifest.toml, for example here for Nextcloud, contains:description.en,.fr, ... for the short app description in english, french, ...- possibly several
ask.en,.frfor install questions - though some install questions are standardized in YunoHost's core.
- the app's
doc/folder, for example here for Nextcloud, contains:DESCRIPTION.md,_fr.md, ... for the long app description in english, french, ...ADMIN.md,_fr.md, ... for specific admin instructions- other notes like
POST_UPGRADE.md,_fr.mdfor specific infos to be displayed after an upgrade. Similar files may exist to display messages before/after install/upgrades. Check the corresponding page in the packaging doc for more details.
- some apps may include a
config_panel.toml(configuration panel), for example here for Nextcloud also containing inline translation such asname.en,.frorask.en,ask.frtitles or input descriptions.
These informations appear both in the public app store, and inside YunoHost webadmin or CLI.