mdbook-i18n-helpers icon indicating copy to clipboard operation
mdbook-i18n-helpers copied to clipboard

Add scripts for using and updating translations

Open mgeisler opened this issue 2 years ago • 3 comments

The instructions for our translation pipeline in TRANSLATIONS.md don't match the actual steps in publish.yml.

The difference is mostly because of how the GitHub Actions allows us to set environment variables using a different syntax.

I would like to unify the two via small scripts. The scripts could be shell scripts (though that probably doesn't work well on Windows?) or they could be Rust "scripts" (more setup time).

I'm imagining something like

  • build-translation which takes a xx locale and outputs a book in book/xx.
  • update-translation which runs both mdbook-xgettext and msgmerge for you.

A serve-translation would probably also be nice to have.

Instead of several scripts, a single script with subcommands could also be nice. That could probably live nicely in the i18n-helpers project since it would be tightly coupled to the other binaries there.

mgeisler avatar Feb 16 '23 10:02 mgeisler

The GitHub action in #48 could call into this script and so we avoid putting too much logic into the action (GitHub actions are nice in the context of GitHub, but they're hard to run by hand on your local machine).

mgeisler avatar Aug 14 '23 08:08 mgeisler

@mgeisler I would be interested in taking this up. I would do it as a Rust script and I can start with build-translation. Just to be sure that I'm understanding this correctly we would have:

  • build-translation
    • runs mdbook-build
    • runs msginit -i book/xgettext/messages.pot -l xx -o po/xx.po
    • make the change to .github/labeler.yml like so:
+"translation/xx":
+  - changed-files:
+      - any-glob-to-any-file: po/xx.po

jonodeno avatar Oct 18 '24 20:10 jonodeno

Hi @jonodeno, thanks for looking at this and sorry for the late reply!

At the moment, we use build.sh in Comprehensive Rust to render a single language. So this script shows the kind of functionality I'm looking for as a baseline.

The full script should then do this for every language.

See also #84 by @sakex, which was an early attempt at doing this.

mgeisler avatar Oct 29 '24 09:10 mgeisler