Skip to content

Translations update from Weblate - #59

Closed
weblate wants to merge 1 commit into
amule-org:masterfrom
weblate:weblate-amule-amule-application
Closed

Translations update from Weblate#59
weblate wants to merge 1 commit into
amule-org:masterfrom
weblate:weblate-amule-amule-application

Conversation

@weblate

@weblate weblate commented Jun 10, 2026

Copy link
Copy Markdown

Translations update from aMule/Application.

It also includes following components:

Current translation status:

Weblate translation status

Currently translated at 93.6% (1589 of 1696 strings)

Translated using Weblate (Hungarian)

Currently translated at 93.6% (1589 of 1696 strings)

Translated using Weblate (Finnish)

Currently translated at 92.3% (1566 of 1696 strings)

Translated using Weblate (Finnish)

Currently translated at 92.3% (1566 of 1696 strings)

Translated using Weblate (French)

Currently translated at 100.0% (1696 of 1696 strings)

Translated using Weblate (French)

Currently translated at 100.0% (1696 of 1696 strings)

Translated using Weblate (Croatian)

Currently translated at 27.7% (470 of 1696 strings)

Translated using Weblate (Croatian)

Currently translated at 27.7% (470 of 1696 strings)

Translated using Weblate (Estonian)

Currently translated at 91.0% (1545 of 1696 strings)

Translated using Weblate (Estonian)

Currently translated at 91.0% (1545 of 1696 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (1696 of 1696 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (1696 of 1696 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (1696 of 1696 strings)

Translated using Weblate (German)

Currently translated at 100.0% (1696 of 1696 strings)

Translated using Weblate (German)

Currently translated at 100.0% (1696 of 1696 strings)

Translated using Weblate (German)

Currently translated at 100.0% (246 of 246 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 90.2% (222 of 246 strings)

Translated using Weblate (Bulgarian)

Currently translated at 15.2% (259 of 1696 strings)

Translated using Weblate (Bulgarian)

Currently translated at 15.2% (259 of 1696 strings)

Translated using Weblate (French)

Currently translated at 100.0% (246 of 246 strings)

Translated using Weblate (Polish)

Currently translated at 89.6% (1521 of 1696 strings)

Translated using Weblate (Polish)

Currently translated at 89.6% (1521 of 1696 strings)

Translated using Weblate (Russian)

Currently translated at 91.9% (1560 of 1696 strings)

Translated using Weblate (Russian)

Currently translated at 91.9% (1560 of 1696 strings)

Translated using Weblate (Korean)

Currently translated at 63.8% (1083 of 1696 strings)

Translated using Weblate (Korean)

Currently translated at 63.8% (1083 of 1696 strings)

Translated using Weblate (Lithuanian)

Currently translated at 76.9% (1305 of 1696 strings)

Translated using Weblate (Lithuanian)

Currently translated at 76.9% (1305 of 1696 strings)

Translated using Weblate (Norwegian Nynorsk)

Currently translated at 76.9% (1305 of 1696 strings)

Translated using Weblate (Norwegian Nynorsk)

Currently translated at 76.9% (1305 of 1696 strings)

Translated using Weblate (Romanian)

Currently translated at 90.2% (222 of 246 strings)

Translated using Weblate (Hungarian)

Currently translated at 90.2% (222 of 246 strings)

Translated using Weblate (Danish)

Currently translated at 27.1% (461 of 1696 strings)

Translated using Weblate (Danish)

Currently translated at 27.1% (461 of 1696 strings)

Translated using Weblate (Hebrew)

Currently translated at 50.0% (849 of 1696 strings)

Translated using Weblate (Hebrew)

Currently translated at 50.0% (849 of 1696 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (246 of 246 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 94.3% (1600 of 1696 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 94.3% (1600 of 1696 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 94.3% (1600 of 1696 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (246 of 246 strings)

Translated using Weblate (Asturian)

Currently translated at 85.6% (1452 of 1696 strings)

Translated using Weblate (Asturian)

Currently translated at 85.6% (1452 of 1696 strings)

Translated using Weblate (Catalan)

Currently translated at 93.6% (1589 of 1696 strings)

Translated using Weblate (Catalan)

Currently translated at 93.6% (1589 of 1696 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (1696 of 1696 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (1696 of 1696 strings)

Translated using Weblate (Ukrainian)

Currently translated at 84.6% (1435 of 1696 strings)

Translated using Weblate (Ukrainian)

Currently translated at 84.6% (1435 of 1696 strings)

Translated using Weblate (Basque)

Currently translated at 92.3% (1566 of 1696 strings)

Translated using Weblate (Basque)

Currently translated at 92.3% (1566 of 1696 strings)

Translated using Weblate (Swedish)

Currently translated at 92.9% (1577 of 1696 strings)

Translated using Weblate (Swedish)

Currently translated at 92.9% (1577 of 1696 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (246 of 246 strings)

Translated using Weblate (Arabic)

Currently translated at 17.9% (305 of 1696 strings)

Translated using Weblate (Arabic)

Currently translated at 17.9% (305 of 1696 strings)

Translated using Weblate (Italian (Switzerland))

Currently translated at 98.9% (1678 of 1696 strings)

Translated using Weblate (Italian (Switzerland))

Currently translated at 98.9% (1678 of 1696 strings)

Translated using Weblate (Galician)

Currently translated at 98.3% (1668 of 1696 strings)

Translated using Weblate (Galician)

Currently translated at 98.3% (1668 of 1696 strings)

Translated using Weblate (Japanese)

Currently translated at 70.4% (1195 of 1696 strings)

Translated using Weblate (Japanese)

Currently translated at 70.4% (1195 of 1696 strings)

Translated using Weblate (Dutch)

Currently translated at 93.6% (1589 of 1696 strings)

Translated using Weblate (Dutch)

Currently translated at 93.6% (1589 of 1696 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (1696 of 1696 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (1696 of 1696 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (1696 of 1696 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (1696 of 1696 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (1696 of 1696 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 92.3% (1566 of 1696 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 92.3% (1566 of 1696 strings)

Translated using Weblate (Greek)

Currently translated at 81.0% (1374 of 1696 strings)

Translated using Weblate (Greek)

Currently translated at 81.0% (1374 of 1696 strings)

Translated using Weblate (Romanian)

Currently translated at 92.9% (1576 of 1696 strings)

Translated using Weblate (Romanian)

Currently translated at 92.9% (1576 of 1696 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (246 of 246 strings)

Translated using Weblate (Russian)

Currently translated at 90.2% (222 of 246 strings)

Translated using Weblate (Czech)

Currently translated at 73.1% (1240 of 1696 strings)

Translated using Weblate (Czech)

Currently translated at 73.1% (1240 of 1696 strings)

Translated using Weblate (Albanian)

Currently translated at 68.9% (1169 of 1696 strings)

Translated using Weblate (Albanian)

Currently translated at 68.9% (1169 of 1696 strings)

Translated using Weblate (Slovenian)

Currently translated at 93.2% (1581 of 1696 strings)

Translated using Weblate (Slovenian)

Currently translated at 93.2% (1581 of 1696 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 92.0% (1561 of 1696 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 92.0% (1561 of 1696 strings)

Co-authored-by: Anonymous <[email protected]>
Co-authored-by: Diego Heras <[email protected]>
Co-authored-by: Giusy Digital <[email protected]>
Co-authored-by: Hosted Weblate <[email protected]>
Co-authored-by: Hosted Weblate user 54392 <[email protected]>
Co-authored-by: John Doe <[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 9f20e6e to 6d4d6f9 Compare June 10, 2026 11:31
@ngosang ngosang added the invalid This doesn't seem right label Jun 10, 2026
@ngosang

ngosang commented Jun 10, 2026

Copy link
Copy Markdown
Member

Quick question about the .po files: is there any agreed formatting for line wrapping?

From the gettext docs:

By default, gettext wraps lines at 77 characters and at newlines. With the > --no-wrap parameter, wrapping is only done at newlines.

Depending on the tool/options each of us uses (default ~77-char wrap vs --no-wrap), the catalogs get rewrapped differently and the diffs end up really noisy. In Weblate I configured the default "Wrap lines at 77 characters and at newlines (xgettext default)"

I've already disabled header modification in Weblate, so stuff like PO-Revision-Date / Last-Translator doesn't ouch the diff — the remaining noise is just the wrapping. I will open a different PR when we have an agreement.

So, what do you prefer: gettext's default wrapping or --no-wrap? @mrjimenez @got3nks

@mrjimenez

Copy link
Copy Markdown

Hi Diego,

As the main person ahead of translations, your opinion is the main one. Whatever gives you most pleasure to deal with is certainly the best option. I have no hard opinions on that, the matter seems a lot like the clang-format issue I have raised. We need an aggreed upon standard so that we minimize the noise. If we have tools to somehow enforce the standard, I thnk it is better to use them.

In other words, I go with your choice, I am sure it will be the best.

@got3nks

got3nks commented Jun 10, 2026

Copy link
Copy Markdown

--no-wrap from me too. In 2026 essentially nobody hand-edits raw .po files for a Weblate-managed project — Weblate and Poedit both render one entry per block regardless of on-disk width — and the 77-char wrap mostly just buries actual translation changes under reflow noise, exactly what we're seeing in this PR.

To make the switch coherent end-to-end, I think we need:

  1. Weblate side — flip the application and application-man-pages components to "Do not wrap long lines" (your side).
  2. One-shot normalization commit — run msgcat --no-wrap over every po/*.po and docs/man/po/manpages-*.po and commit as a pure-rewrap PR. This has to land first, otherwise the next Weblate sync after the toggle is still a huge diff because everything unwraps at once.
  3. scripts/update-po.sh — add --no-wrap to both the xgettext and msgmerge invocations, so anyone running the script locally doesn't reintroduce wraps on the next commit.
  4. po/Makevars — add --no-wrap to XGETTEXT_OPTIONS for symmetry (harmless even though CMake doesn't currently call it for regen).
  5. docs/man/po4a.config — the man-pages catalogs go through po4a, not gettext's msgmerge, so the --no-wrap flag doesn't apply directly. po4a has its own knob (I think -o wrap=0 on [po4a_alias:man], but I'd rather you confirm the exact form) so that cmake --build build --target po4a-update produces no-wrap output too.
  6. .github/workflows/i18n.yml — optional cleanup: the pot-sync drift check currently normalizes with msgcat --width=79 to stay wrap-policy-agnostic; once we settle on --no-wrap it can simplify to msgcat --no-wrap. Not strictly required.

Waiting also on @mrjimenez's opinion before anyone starts.

@mrjimenez

Copy link
Copy Markdown

Waiting also on @mrjimenez's opinion before anyone starts.

With that detailed and ready plan? I would be crazy if I said no!

Like we used to say in IRC:
/me goes out of the way

@ngosang

ngosang commented Jun 10, 2026

Copy link
Copy Markdown
Member

@got3nks I agree with --no-wrap. Do the changes in the repository and I will update the Weblate config after that.

@ngosang

ngosang commented Jun 10, 2026

Copy link
Copy Markdown
Member

These are the Weblate options:
image

got3nks added a commit that referenced this pull request Jun 10, 2026
Adopt --no-wrap as the project-wide formatting policy for translation
catalogs, per the discussion in #59. xgettext / msgmerge / po4a /
msgcat all get the appropriate equivalent flag so a local regen
produces no-wrap output and the CI drift check normalises the same
way.

The pot-sync drift comparison in i18n.yml stays wrap-policy-agnostic
by design (it normalises both sides through msgcat first); switching
from --width=79 to --no-wrap just aligns the knob with the policy.

The companion one-shot regeneration of po/*.po and the pot files
follows in the next commit.
@got3nks

got3nks commented Jun 10, 2026

Copy link
Copy Markdown

Just merged #61, which adopts --no-wrap across all catalogs (tooling + one-shot normalisation; also fixed a msgmerge --update bug that was silently skipping rewraps on files already wrapped on disk). Closing this in favour of #61 since they touched the same files.

When you have a moment, flip both the application and application-man-pages Weblate components to "Do not wrap long lines" (under each component's Manage → Settings → Files handling). After that the next bot PR should contain only real translation deltas, no reflow noise.

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

Labels

invalid This doesn't seem right

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants