Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Stop committing generated .mo (and .po) files; generate them at build time

オープン
#441 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
52/100
issue の種類
リファクタリング
明瞭さ
おおむね明確
活発さ
静か
技術スタック
python

調査の方向性

Start by reading pyproject.toml, the existing doit localize task, the check-mo-freshness workflow, and the PyInstaller spec files. Verify how packaging currently includes locale data before choosing the build hook. Done means .mo files are generated during package builds, excluded from git, bundled correctly by PyInstaller, and the obsolete freshness workflow is removed.

索引モデルが issue の本文から書いたものです。

説明

enhancement

The tabcmd/locales/*/LC_MESSAGES/tabcmd.mo files are checked into git today, and .po files are gitignored but still regenerated locally when someone runs doit localize. This has two problems:

  1. Drift. The committed .mo files can - and do - go out of sync with the .properties sources they are built from. Before #440 landed, a fresh doit localize against the tip of development regenerated all 11 locale .mo files with ~20 keys different from what was committed (mostly stale entries for old keys and missing entries for new keys added since the last regen). Users hitting the drifted keys would see stale translations or fall back to the raw key.

  2. Reviewer noise. .mo diffs are binary and unreadable in PRs. Reviewers cannot see whether a .mo change matches its intended .properties change.

The check-mo-freshness workflow added in #440 catches drift at PR time by regenerating and diffing. That closes the immediate leak but keeps the underlying pattern of "generated file committed to git."

Better long-term: treat .mo (and if practical .po) like tabcmd/_version.py - generate them during pip install / packaging, .gitignore them, and stop tracking them. pyproject.toml can wire the generation into the build backend so wheels and pyinstaller bundles include them. Contributors then only edit .properties; no regenerate-and-commit dance, no drift possible.

Prior art: most Python i18n projects (Babel, Django, Flask-Babel) treat .mo as build output.

Rough plan

  • Add a build step that runs doit localize (or the equivalent msgfmt invocations) at pip install / wheel build time.
  • Verify pyinstaller still bundles the generated .mo files correctly (via --collect-data tabcmd.locales which is already in the spec files).
  • .gitignore **/*.mo; git rm --cached the tracked ones.
  • Remove the check-mo-freshness workflow (it becomes moot once nothing is committed to drift from).
主要言語
Python
スター
52
フォーク
17
平均マージ
5日 20時間
マージ済み PR(30日)
2

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

tableau/tabcmd のほかの issue

tableau/tabcmd の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。