Skip to content

Translations update from Weblate - #66

Merged
ngosang merged 1 commit into
amule-org:masterfrom
weblate:weblate-amule-amule-application
Jun 11, 2026
Merged

Translations update from Weblate#66
ngosang merged 1 commit into
amule-org:masterfrom
weblate:weblate-amule-amule-application

Conversation

@weblate

@weblate weblate commented Jun 11, 2026

Copy link
Copy Markdown

Translations update from aMule/Application.

It also includes following components:

Current translation status:

Weblate translation status

@weblate
weblate force-pushed the weblate-amule-amule-application branch 3 times, most recently from cb301e4 to 2c98e88 Compare June 11, 2026 04:17
ngosang added a commit that referenced this pull request Jun 11, 2026
Weblate updates docs/man/po/manpages-*.po but cannot run po4a, so the
rendered *.{lang}.1.in files tracked in git always drift and the check
turned every Weblate translation PR red (e.g. PR #66). Comment the job
out (not delete) until the rendered manpages are removed from the repo
and generated at build time with CMake + po4a; the tracked renders are
deliberately allowed to lag behind the .po files in the meantime.
@weblate
weblate force-pushed the weblate-amule-amule-application branch from 2c98e88 to 926d506 Compare June 11, 2026 04:33
Currently translated at 76.9% (1305 of 1697 strings)

Translated using Weblate (Basque)

Currently translated at 92.2% (1566 of 1697 strings)

Translated using Weblate (Arabic)

Currently translated at 17.9% (305 of 1697 strings)

Translated using Weblate (Spanish)

Currently translated at 99.9% (1696 of 1697 strings)

Translated using Weblate (Russian)

Currently translated at 90.2% (222 of 246 strings)

Translated using Weblate (Estonian)

Currently translated at 91.0% (1545 of 1697 strings)

Translated using Weblate (Slovenian)

Currently translated at 93.1% (1581 of 1697 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 90.2% (222 of 246 strings)

Translated using Weblate (Lithuanian)

Currently translated at 76.9% (1305 of 1697 strings)

Translated using Weblate (Korean)

Currently translated at 63.8% (1083 of 1697 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (246 of 246 strings)

Translated using Weblate (German)

Currently translated at 100.0% (246 of 246 strings)

Translated using Weblate (Dutch)

Currently translated at 93.6% (1589 of 1697 strings)

Translated using Weblate (Romanian)

Currently translated at 92.8% (1576 of 1697 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (1697 of 1697 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (1697 of 1697 strings)

Translated using Weblate (German)

Currently translated at 99.9% (1696 of 1697 strings)

Translated using Weblate (Japanese)

Currently translated at 70.4% (1195 of 1697 strings)

Translated using Weblate (Hebrew)

Currently translated at 50.0% (849 of 1697 strings)

Translated using Weblate (Italian (Switzerland))

Currently translated at 98.8% (1678 of 1697 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 91.9% (1561 of 1697 strings)

Translated using Weblate (Asturian)

Currently translated at 85.6% (1454 of 1697 strings)

Translated using Weblate (Albanian)

Currently translated at 68.8% (1169 of 1697 strings)

Translated using Weblate (Danish)

Currently translated at 27.1% (461 of 1697 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 96.8% (1643 of 1697 strings)

Translated using Weblate (Croatian)

Currently translated at 27.6% (470 of 1697 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (246 of 246 strings)

Translated using Weblate (Bulgarian)

Currently translated at 15.2% (259 of 1697 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 92.2% (1566 of 1697 strings)

Translated using Weblate (French)

Currently translated at 100.0% (246 of 246 strings)

Translated using Weblate (Swedish)

Currently translated at 92.9% (1577 of 1697 strings)

Translated using Weblate (French)

Currently translated at 100.0% (1697 of 1697 strings)

Translated using Weblate (French)

Currently translated at 100.0% (1697 of 1697 strings)

Translated using Weblate (Hungarian)

Currently translated at 90.2% (222 of 246 strings)

Translated using Weblate (Catalan)

Currently translated at 93.6% (1589 of 1697 strings)

Translated using Weblate (Ukrainian)

Currently translated at 84.6% (1437 of 1697 strings)

Translated using Weblate (Russian)

Currently translated at 91.9% (1560 of 1697 strings)

Translated using Weblate (Italian)

Currently translated at 99.9% (1696 of 1697 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (246 of 246 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (1697 of 1697 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (1697 of 1697 strings)

Translated using Weblate (Hungarian)

Currently translated at 93.6% (1589 of 1697 strings)

Translated using Weblate (Romanian)

Currently translated at 90.2% (222 of 246 strings)

Translated using Weblate (Galician)

Currently translated at 98.2% (1668 of 1697 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (246 of 246 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (246 of 246 strings)

Translated using Weblate (Polish)

Currently translated at 89.7% (1523 of 1697 strings)

Translated using Weblate (Czech)

Currently translated at 73.1% (1242 of 1697 strings)

Translated using Weblate (Finnish)

Currently translated at 92.2% (1566 of 1697 strings)

Translated using Weblate (Greek)

Currently translated at 80.9% (1374 of 1697 strings)

Co-authored-by: Diego Heras <[email protected]>
Co-authored-by: Hosted Weblate <[email protected]>
Co-authored-by: John Doe <[email protected]>
Co-authored-by: Marcelo Roberto Jimenez <[email protected]>
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/ar/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/ast/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/bg/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/ca/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/cs/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/da/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/de/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/el/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/es/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/et/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/eu/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/fi/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/fr/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/gl/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/he/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/hr/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/hu/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/it/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/it_CH/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/ja/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/ko/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/lt/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/nl/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/nn/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/pl/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/pt_PT/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/ro/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/ru/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/sl/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/sq/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/sv/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/tr/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/uk/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/de/
Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/es/
Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/fr/
Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/hu/
Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/it/
Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/ro/
Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/ru/
Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/tr/
Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/zh_Hant/
Translation: aMule/Application
Translation: aMule/Application Man Pages
@weblate
weblate force-pushed the weblate-amule-amule-application branch from 926d506 to fddb95e Compare June 11, 2026 06:20
@ngosang
ngosang merged commit a0ca2fd into amule-org:master Jun 11, 2026
8 checks passed
got3nks added a commit that referenced this pull request Jun 11, 2026
Stop tracking the ~100 pre-rendered docs/man/*.{lang}.1.in and
src/utils/*/docs/*.{lang}.1.in. Generate them at build time from the
English masters + docs/man/po/manpages-*.po via po4a, then install
them under <prefix>/share/man/<lang>/man1/.

Why this matters:

Weblate edits docs/man/po/manpages-*.po but cannot run po4a, so every
Weblate translation PR left the tracked renders stale and turned the
manpages-sync CI red (PR #66). The stopgap commented the check out
entirely, which let the tracked renders deliberately lag behind the
translations.

Tracking generated files also forced CI to pin po4a 0.74 from
Debian trixie because po4a's output wrapping changes between versions
and any mismatch surfaced as spurious drift.

Pipeline

- docs/man/po4a.config.in: CMake-templated config; @CMAKE_*_DIR@
  references resolve to absolute build-dir output paths at configure
  time, so po4a writes straight into the build tree.
- docs/man/CMakeLists.txt:
  * cmake_dependent_option(TRANSLATED_MANPAGES ... ON ENABLE_NLS OFF)
  * find_program(po4a). If missing, install only English masters and
    surface a STATUS message (po4a is an optional build dep).
  * add_custom_command runs po4a once with DEPENDS on every
    manpages-*.po, then a second custom_command per output runs
    cmake/configure_translated_manpage.cmake to substitute @MAN_DATE@
    and @PACKAGE_VERSION@ (po4a passes those through verbatim).
  * The two-pass split is required because configure_file is
    configure-time only; the rendered .1.in inputs don't exist yet
    when CMakeLists.txt runs.
- cmake/configure_translated_manpage.cmake: tiny helper that
  re-implements configure_file @only semantics via file(READ) +
  string(CONFIGURE) + file(WRITE), invoked via cmake -P from the
  custom_command at build time.
- scripts/update-manpages-po.sh: counterpart to scripts/update-po.sh
  for translators. Runs po4a --no-translations against a temp
  docs/man-relative config (so #: source refs land as relative paths,
  not the developer's absolute fs path), regenerating manpages.pot
  and merging into manpages-*.po.
- .github/workflows/i18n.yml: replace the disabled manpages-sync
  with a manpages-pot-sync that re-runs update-manpages-po.sh and
  diffs the result, matching the existing pot-sync job for the
  application catalogs. Weblate can never break this one — Weblate
  only edits .po files.
- .github/workflows/release.yml: new source-bundle job builds
  aMule-<TAG>-src.tar.gz containing every tracked file plus the
  freshly-rendered translated manpages, so downstream packagers can
  consume a tarball that doesn't require po4a at build time. Attached
  to the draft Release alongside the binary artifacts.

The mtime gotcha the disabled manpages-sync job documents goes away
once nothing rendered is in git: CMake's DEPENDS on the .po inputs
drives incremental rebuilds rather than po4a's own
"outputs up-to-date" check.

Closes #69.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants