The JShelter website has a dedicated translation pipeline, described in this post.
Translating the website content
The simplest way to contribute to the site translation is on Weblate. Just head over to the JShelter website section, select the language you want to work on, and start translating. Project maintainers will review and integrate new translations periodically.
Translating locally without Weblate
If you're comfortable with editing PO files, that's also possible. For this, just do the following steps:
- Work on the weblate branch with
git checkout weblate
- Edit the relevant files inside the
website/i18n/
directory, which has subdirectories for each language - Commit and push your changes back to the repository once you're done, or file a pull request
In case you run into any problem, feel free to create an issue in our issue tracker and we'll do our best to guide you through the process.
Updating the translation source files
1. Updating the Weblate string list
When there are updates to the site content, Weblate needs to be manually updated to provide the new strings for translation.
First, run the command make translate-extract
, which will generate PO files
inside the i18n/en/
directory. This process uses the md2po
command from the
mdpo Markdown parsing package to read
all the website strings and generate source PO translation files.
The resulting files can be uploaded to Weblate to update the string list. Right now this upload needs to be done manually on a per-component basis, but the following links will take you directly to each component's page so you can upload the appropriate PO file: Website (pages.po), Blog Posts (posts.po) or Wrappers (wrappers.po).
2. Download the latest translations and apply them
The command make translate
will download the latest version of each available
translation. The resulting .po
files are placed inside the
website/i18n/<lang>/
directory, where <lang>
is the language 2-letter code.
It will also generate translated Markdown files from the .po
translation
sources obtained in the previous step.
The resulting files can be found inside the website/content/
directory: it
creates a directory with the language code inside each section dir
(website/content/pages
, website/content/posts
and
website/content/wrappers
).
If everything looks okay, you can commit the new translated files so that they're integrated into the website.
Adding a new language
There are many languages available on Weblate, but only some of them are integrated in the website. This is for quality control reasons, to ensure that a translation is stable enough before pushing it into the live site.
At the moment, only Portuguese (pt_PT
) is included.
To add a new language, first edit website/pelicanconf.py
and find the lines:
I18N_SUBSITES = {
"pt": {
"DESCRIPTION": "A extensão para navegar em segurança",
"LONGDESCRIPTION": "Uma extensão anti-malware para o teu navegador web que vai pôr sob controlo ameaças de JavaScript, incluindo a recolha de impressões digitais, rastreamento e recolha de dados",
}
}
Add your new language here, here using Czech as an example:
I18N_SUBSITES = {
"pt": {
"DESCRIPTION": "A extensão para navegar em segurança",
"LONGDESCRIPTION": "Uma extensão anti-malware para o teu navegador web que vai pôr sob controlo ameaças de JavaScript, incluindo a recolha de impressões digitais, rastreamento e recolha de dados",
},
"cz": {
"DESCRIPTION": "A extensão para navegar em segurança",
"LONGDESCRIPTION": "Uma extensão anti-malware para o teu navegador web que vai pôr sob controlo ameaças de JavaScript, incluindo a recolha de impressões digitais, rastreamento e recolha de dados",
}
}
Now, when you build the website with make html
, the new language should be present
in the generated website.