Skip to content

Checkout starts with uncommitted reformatting diff across messages.pot and all locale .po files #44

Description

@openlibrary-bot

What happened

At the start of this run (batch: tl), before running any ./i18n commands, git status already showed uncommitted modifications to messages.pot and 23 of 24 locale/*/messages.po files (all except the one being worked on hadn't been touched yet by me). The diff is not new translation content — it's pybabel-style reformatting: comment/location lines re-wrapped (e.g. a single-line #: a.html b.html c.html split across multiple #: lines) and some entries reordered as a result of consolidated location comments (e.g. Loan Expires moved to sit next to its new consolidated location comment).

Example (locale/tl/messages.po, before any of my edits):

-#: account.html account/notifications.html account/privacy.html lib/nav_head.html type/user/view.html
+#: account.html account/notifications.html account/privacy.html
+#: lib/nav_head.html type/user/view.html
 msgid "Settings"

This matches Babel 2.18.0's default width=76 wrapping behavior for the #: comment lines, so it looks like the checked-in .po/.pot files were last saved with a different Babel version/config than what's installed in the Actions environment (Babel 2.18.0 per pip show babel).

Command that failed

No command failed — this is ambient working-tree state observed via git status immediately after checkout, before running any ./i18n subcommand.

Impact

Because ./i18n apply/fix/compile rewrite the whole .po file for the language being translated, any agent's commit for its language ends up bundling this pre-existing cosmetic reformatting together with its actual new translations. This inflates diffs (e.g. this run's tl commit was 339 insertions / 22 deletions for only 79 new strings) and makes PRs harder to review, since reviewers can't easily tell which lines are real translation changes vs. incidental rewrapping.

It also means the working tree is never actually clean after a batch — 22 other locale files remain modified (untranslated by this run, not committed), which could confuse the next job/run that checks out the same environment or reuses state.

Suggested fix

  • Regenerate messages.pot and all locale/*/messages.po files once with the Babel version pinned in this repo's environment (2.18.0) and commit the resulting reformat as its own no-content-change commit, so future translation PRs only show real msgstr changes.
  • Alternatively, pin pybabel's wrap width / comment format explicitly in the ./i18n toolbox so it matches whatever produced the currently-committed files, avoiding the mismatch entirely.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions