Skip to content

Commit

Permalink
Sync src/ with date in PO file when publishing
Browse files Browse the repository at this point in the history
Before, we always used the latest English source files when
publishing. This means that translations become outdated as soon as
anything is changed in the source.

This PR changes will instead freeze translations in place: they will
keep using the same English source files until a new POT file is
merged into the translation. We do this by relying on the
POT-Creation-Date field in the PO files.

We still update all the files around the Markdown files: this allows
us to fix things in the theme, for example.

Part of google/mdbook-i18n-helpers#16. The
logic here should eventually be moved to somewhere in
mdbook-i18n-helpers, most likely to the renderer that @sakex is
building in google/mdbook-i18n-helpers#84.
  • Loading branch information
mgeisler committed Sep 24, 2023
1 parent a9183eb commit 72cf9cc
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 25 deletions.
62 changes: 39 additions & 23 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
name: Publish

on:
push:
branches:
- main
workflow_dispatch:
pull_request:
# push:
# branches:
# - main
# workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write
#permissions:
# contents: read
# pages: write
# id-token: write

# Allow one concurrent deployment
concurrency:
Expand All @@ -23,13 +24,15 @@ env:

jobs:
publish:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
# environment:
# name: github-pages
# url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0 # Fetch full history

- name: Setup Rust cache
uses: ./.github/workflows/setup-rust-cache
Expand All @@ -47,22 +50,35 @@ jobs:
run: |
for po_lang in ${{ env.LANGUAGES }}; do
echo "::group::Building $po_lang translation"
POT_CREATION_DATE=$(grep --max-count 1 '^"POT-Creation-Date:' po/$po_lang.po | sed -E 's/".*: (.*)\\n"/\1/')
if [[ $POT_CREATION_DATE == "" ]]; then
echo "Restoring back to start"
git log -1
git restore src/
else
echo "Restoring to $POT_CREATION_DATE"
git log -1 --before "$POT_CREATION_DATE"
git restore --source "@{$POT_CREATION_DATE}" src/
fi
echo "Status:"
git status
MDBOOK_BOOK__LANGUAGE=$po_lang \
MDBOOK_OUTPUT__HTML__SITE_URL=/comprehensive-rust/$po_lang/ \
mdbook build -d book/$po_lang
(cd book/$po_lang/exerciser && zip --recurse-paths ../html/comprehensive-rust-exercises.zip comprehensive-rust-exercises/)
#(cd book/$po_lang/exerciser && zip --recurse-paths ../html/comprehensive-rust-exercises.zip comprehensive-rust-exercises/)
mv book/$po_lang/html book/html/$po_lang
echo "::endgroup::"
done
- name: Setup Pages
uses: actions/configure-pages@v2

- name: Upload artifact
uses: actions/upload-pages-artifact@v1
with:
path: book/html

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
# - name: Setup Pages
# uses: actions/configure-pages@v2
#
# - name: Upload artifact
# uses: actions/upload-pages-artifact@v1
# with:
# path: book/html
#
# - name: Deploy to GitHub Pages
# id: deployment
# uses: actions/deploy-pages@v1
2 changes: 1 addition & 1 deletion po/da.po
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Comprehensive Rust 🦀\n"
"POT-Creation-Date: \n"
"POT-Creation-Date: 2023-09-24T14:16:08+02:00\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
Expand Down
2 changes: 1 addition & 1 deletion po/ko.po
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: [한국어]Comprehensive Rust 🦀\n"
"POT-Creation-Date: \n"
"POT-Creation-Date: 2023-08-24T14:16:08+02:00\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
Expand Down

0 comments on commit 72cf9cc

Please sign in to comment.