Skip to content

Translations update from JohnRDOrazio Weblate - #748

Open
JohnRDOrazio wants to merge 39 commits into
developmentfrom
weblate
Open

Translations update from JohnRDOrazio Weblate#748
JohnRDOrazio wants to merge 39 commits into
developmentfrom
weblate

Conversation

@JohnRDOrazio

@JohnRDOrazio JohnRDOrazio commented Jul 28, 2026

Copy link
Copy Markdown
Member

Translations update from JohnRDOrazio Weblate for Liturgical Calendar/Proprium de Tempore.

Current translation status:

Weblate translation status

Summary by CodeRabbit

  • Localization
    • Synchronized liturgical calendar translations across German, Spanish, French, Croatian, Hungarian, Indonesian, Italian, Latin, Dutch, Polish, Portuguese, Slovak, and Vietnamese.
    • Updated localized date, calendar-rule, validation, transfer, and event messages for consistency.
    • Clarified year-support messaging in Indonesian and Italian to indicate support through 9999.
    • Preserved existing translations and translation-status markers where no wording changes were required.

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Liturgical Calendar/API strings
Translate-URL: https://translate.johnromanodorazio.com/projects/liturgical-calendar/liturgical-calendar-api/api-strings/
@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8f274a56-5cd7-448f-92f5-4dc8241c3a69

📥 Commits

Reviewing files that changed from the base of the PR and between 45c1833 and 6a2d08f.

📒 Files selected for processing (14)
  • i18n/de/LC_MESSAGES/litcal.po
  • i18n/es/LC_MESSAGES/litcal.po
  • i18n/fr/LC_MESSAGES/litcal.po
  • i18n/hr/LC_MESSAGES/litcal.po
  • i18n/hu/LC_MESSAGES/litcal.po
  • i18n/id/LC_MESSAGES/litcal.po
  • i18n/it/LC_MESSAGES/litcal.po
  • i18n/la/LC_MESSAGES/litcal.po
  • i18n/nl/LC_MESSAGES/litcal.po
  • i18n/pl/LC_MESSAGES/litcal.po
  • i18n/pt/LC_MESSAGES/litcal.po
  • i18n/pt_BR/LC_MESSAGES/litcal.po
  • i18n/sk/LC_MESSAGES/litcal.po
  • i18n/vi/LC_MESSAGES/litcal.po
🚧 Files skipped from review as they are similar to previous changes (13)
  • i18n/es/LC_MESSAGES/litcal.po
  • i18n/de/LC_MESSAGES/litcal.po
  • i18n/hu/LC_MESSAGES/litcal.po
  • i18n/hr/LC_MESSAGES/litcal.po
  • i18n/sk/LC_MESSAGES/litcal.po
  • i18n/la/LC_MESSAGES/litcal.po
  • i18n/id/LC_MESSAGES/litcal.po
  • i18n/nl/LC_MESSAGES/litcal.po
  • i18n/it/LC_MESSAGES/litcal.po
  • i18n/vi/LC_MESSAGES/litcal.po
  • i18n/pt_BR/LC_MESSAGES/litcal.po
  • i18n/pl/LC_MESSAGES/litcal.po
  • i18n/fr/LC_MESSAGES/litcal.po

Included review availability: Your plan includes up to 2 reviews per rolling hour; 0 remain after this review.


Walkthrough

The pull request regenerates fourteen localized gettext catalogs. It updates catalog timestamps and PHP source references. It preserves translations except for selected Indonesian and Italian year-validation entries.

Changes

Localized gettext catalog synchronization

Layer / File(s) Summary
Catalog metadata and translation entries
i18n/*/LC_MESSAGES/litcal.po
Updates POT-Creation-Date, refreshes source references and formatting, re-anchors calendar messages, and updates selected year-validation entries.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 6a2d0

A few Portuguese calendar phrases may fall back to English or display incorrect wording until corrected. This is a localized follow-up and does not present a material merge-blocking risk.

Possibly related PRs

Suggested reviewers: weblate

Poem

A rabbit checks each catalog line,
With dates and references aligned.
Translations keep their place,
While year limits change with grace.
Across fourteen files, hops are done.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main change as a translation update from Weblate.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch weblate

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Jul 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

📢 Thoughts on this report? Let us know!

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 12

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@i18n/hr/LC_MESSAGES/litcal.po`:
- Around line 784-787: Correct the shared “the following day” catalog entry and
remove its fuzzy marker in i18n/hr/LC_MESSAGES/litcal.po lines 784-787,
i18n/pt_BR/LC_MESSAGES/litcal.po lines 781-784, and
i18n/sk/LC_MESSAGES/litcal.po lines 782-785; provide the accurate generic
translation for Croatian, Brazilian Portuguese, and Slovak respectively, without
narrowing it to Monday.

In `@i18n/hu/LC_MESSAGES/litcal.po`:
- Around line 785-788: The shared “the following day” translation is incorrectly
reused from “the following Monday.” Update the msgstr for this msgid to a
day-neutral Hungarian translation in i18n/hu/LC_MESSAGES/litcal.po lines 785-788
and a day-neutral Indonesian translation in i18n/id/LC_MESSAGES/litcal.po lines
785-788; remove the fuzzy marker if appropriate for finalized translations.
- Around line 719-721: Update the Hungarian msgstr for the year validation
message to state that years from 1970 onward are supported, including 1970
itself; change only the wording in the localized translation while preserving
the requested-year placeholder.
- Around line 640-665: Update the Hungarian translations for the msgids
“December %s” and “January %s” so the month name precedes the day placeholder,
using the equivalent of “december %s” and “január %s” in their msgstr values.

In `@i18n/it/LC_MESSAGES/litcal.po`:
- Around line 640-645: Translate the Italian msgstr values for the month
templates “December %s” and “January %s” in the localization catalog, preserving
the %s placeholder so FerialEventNameGenerator formatting continues to work.
- Around line 669-671: Correct the Italian translations for the three date
messages identified by their msgids: “%s after Epiphany,” “%s within the Octave
of Easter,” and “%s of Holy Week.” Replace each incorrect msgstr with the
appropriate Italian liturgical ordinal/day phrasing, then remove the fuzzy flag
from each entry while preserving the php-format marker.

In `@i18n/la/LC_MESSAGES/litcal.po`:
- Around line 704-706: Resolve and remove the fuzzy flags for all listed
generated date phrases, updating each msgstr to accurately match its msgid: in
i18n/la/LC_MESSAGES/litcal.po lines 704-706 translate “%s within the Octave of
Easter” as Easter, lines 722-725 translate “%s of Holy Week” rather than holy
women, and lines 800-803 translate “the following day” rather than Monday; make
the corresponding “the following day” corrections in
i18n/nl/LC_MESSAGES/litcal.po lines 792-795 and i18n/pl/LC_MESSAGES/litcal.po
lines 784-787.

In `@i18n/nl/LC_MESSAGES/litcal.po`:
- Around line 729-734: Update the Dutch msgstr for “Only years until 9999 are
supported...” to use the formal address form consistently, replacing the
informal “Je hebt geprobeerd” phrasing with the established “U hebt geprobeerd”
wording while preserving the placeholder and translation meaning.

In `@i18n/pl/LC_MESSAGES/litcal.po`:
- Around line 1502-1507: Restore the Polish translation for the active catalog
entry identified by the suppression message msgid, replacing the empty msgstr
with the correct translated text. Preserve the existing PHP format placeholders
%1$s through %7$d exactly and do not leave the entry untranslated unless the
omission is explicitly intentional.

In `@i18n/pt/LC_MESSAGES/litcal.po`:
- Around line 644-647: Translate the empty Portuguese msgstr values for the
regenerated date patterns “December %s”, “January %s”, and “%s after Epiphany”
in the litcal.po catalog, preserving each format placeholder exactly and using
Portuguese wording consistent with surrounding translations.
- Around line 688-692: Update the fuzzy Portuguese translations in the affected
entries, including the Easter Octave msgid and the entries around the Holy Week
and “following day” messages, so each msgstr accurately corresponds to its own
msgid rather than unrelated Christmas, Holy Women, or Monday text. Remove the
fuzzy status once the translations are corrected.

In `@i18n/vi/LC_MESSAGES/litcal.po`:
- Around line 685-688: Correct the fuzzy Vietnamese translations in the affected
entries: use Easter terminology for “%s within the Octave of Easter,” translate
“%s of Holy Week” as Holy Week rather than Holy Women, and provide a generic
translation for “the following day” instead of “the following Monday.” After
verifying each reviewed translation, remove the fuzzy flags.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 23369cff-58d3-4e60-9f46-9148b049cd14

📥 Commits

Reviewing files that changed from the base of the PR and between b3d5a6c and 90418ca.

📒 Files selected for processing (14)
  • i18n/de/LC_MESSAGES/litcal.po
  • i18n/es/LC_MESSAGES/litcal.po
  • i18n/fr/LC_MESSAGES/litcal.po
  • i18n/hr/LC_MESSAGES/litcal.po
  • i18n/hu/LC_MESSAGES/litcal.po
  • i18n/id/LC_MESSAGES/litcal.po
  • i18n/it/LC_MESSAGES/litcal.po
  • i18n/la/LC_MESSAGES/litcal.po
  • i18n/nl/LC_MESSAGES/litcal.po
  • i18n/pl/LC_MESSAGES/litcal.po
  • i18n/pt/LC_MESSAGES/litcal.po
  • i18n/pt_BR/LC_MESSAGES/litcal.po
  • i18n/sk/LC_MESSAGES/litcal.po
  • i18n/vi/LC_MESSAGES/litcal.po

Comment thread i18n/hr/LC_MESSAGES/litcal.po Outdated
Comment on lines +640 to 665
#: src/FerialEventNameGenerator.php:312
#, php-format
msgid "December %s"
msgstr "%s december"

#. translators: %s is an ordinal number (1st, 2nd, 3rd)
#. translators: %s is an ordinal number (first, second...)
#: src/FerialEventNameGenerator.php:382 src/Handlers/CalendarHandler.php:2091
#: src/FerialEventNameGenerator.php:328 src/Handlers/CalendarHandler.php:2092
#, php-format
msgid "of the %s Week of Advent"
msgstr "Advent %s hetében"

#. translators: %s is an ordinal number (2nd, 3rd, etc.) - Day of Christmas Octave
#. translators: %s is an ordinal number (first, second...)
#: src/FerialEventNameGenerator.php:401 src/Handlers/CalendarHandler.php:2151
#: src/FerialEventNameGenerator.php:347 src/Handlers/CalendarHandler.php:2152
#, php-format
msgid "%s Day of the Octave of Christmas"
msgstr "Karácsony oktávájának %s napja"

#. translators: %s is a day number (2, 3, etc.) - for Christmas weekdays Jan 2-6
#. translators: %s is a day number (7, 8, etc.) - for days after Epiphany
#: src/FerialEventNameGenerator.php:418 src/FerialEventNameGenerator.php:452
#: src/FerialEventNameGenerator.php:364 src/FerialEventNameGenerator.php:398
#, php-format
msgid "January %s"
msgstr "%s január"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Keep the Hungarian month-before-day order.

The translator comments define %s as the day number, but "%s december" and "%s január" reverse the normal Hungarian date order. Use equivalents of december %s and január %s.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@i18n/hu/LC_MESSAGES/litcal.po` around lines 640 - 665, Update the Hungarian
translations for the msgids “December %s” and “January %s” so the month name
precedes the day placeholder, using the equivalent of “december %s” and “január
%s” in their msgstr values.

Comment on lines 719 to 721
"Only years from 1970 and after are supported. You tried requesting the year "
"%d."
msgstr "Csak az 1970 utáni évek támogatottak. Ön a %d évet próbálta kérni."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Do not exclude 1970 in the localized validation message.

CalendarHandler.php rejects years < 1970, so 1970 itself is supported. 1970 utáni means “after 1970”; the translation should say “from 1970 onward.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@i18n/hu/LC_MESSAGES/litcal.po` around lines 719 - 721, Update the Hungarian
msgstr for the year validation message to state that years from 1970 onward are
supported, including 1970 itself; change only the wording in the localized
translation while preserving the requested-year placeholder.

Comment thread i18n/hu/LC_MESSAGES/litcal.po Outdated
Comment on lines 785 to 788
#: src/Handlers/CalendarHandler.php:1699
#, fuzzy
msgid "the following day"
msgstr "a következő hétfőn"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Fix the shared “following day” translation error.

Both catalogs reuse the “following Monday” translation for the distinct the following day msgid.

  • i18n/hu/LC_MESSAGES/litcal.po#L785-L788: provide a day-neutral Hungarian translation.
  • i18n/id/LC_MESSAGES/litcal.po#L785-L788: provide a day-neutral Indonesian translation.
📍 Affects 2 files
  • i18n/hu/LC_MESSAGES/litcal.po#L785-L788 (this comment)
  • i18n/id/LC_MESSAGES/litcal.po#L785-L788
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@i18n/hu/LC_MESSAGES/litcal.po` around lines 785 - 788, The shared “the
following day” translation is incorrectly reused from “the following Monday.”
Update the msgstr for this msgid to a day-neutral Hungarian translation in
i18n/hu/LC_MESSAGES/litcal.po lines 785-788 and a day-neutral Indonesian
translation in i18n/id/LC_MESSAGES/litcal.po lines 785-788; remove the fuzzy
marker if appropriate for finalized translations.

Comment on lines 640 to 645
#. translators: %s is a day number (17, 18, etc.) - for Advent weekdays Dec 17-24
#: src/FerialEventNameGenerator.php:366
#: src/FerialEventNameGenerator.php:312
#, php-format
msgid "December %s"
msgstr ""

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Translate the Italian month templates.

Both December %s and January %s have empty msgstr values, so these calendar labels fall back to English even though FerialEventNameGenerator.php formats them through gettext.

Also applies to: 661-665

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@i18n/it/LC_MESSAGES/litcal.po` around lines 640 - 645, Translate the Italian
msgstr values for the month templates “December %s” and “January %s” in the
localization catalog, preserving the %s placeholder so FerialEventNameGenerator
formatting continues to work.

Comment thread i18n/nl/LC_MESSAGES/litcal.po Outdated
Comment on lines 729 to 734
#: src/Handlers/CalendarHandler.php:817
#, php-format
msgid "Only years until 9999 are supported. You tried requesting the year %d."
msgstr ""
"Alleen jaren tot 9999 worden ondersteund. Je hebt geprobeerd het jaar %d op "
"te vragen."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Keep the Dutch address form consistent.

The adjacent 1970 error uses formal U, while this updated translation uses informal Je. Use one register consistently, for example U hebt geprobeerd ....

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@i18n/nl/LC_MESSAGES/litcal.po` around lines 729 - 734, Update the Dutch
msgstr for “Only years until 9999 are supported...” to use the formal address
form consistently, replacing the informal “Je hebt geprobeerd” phrasing with the
established “U hebt geprobeerd” wording while preserving the placeholder and
translation meaning.

Comment thread i18n/pl/LC_MESSAGES/litcal.po Outdated
Comment on lines +644 to 647
#: src/FerialEventNameGenerator.php:312
#, php-format
msgid "December %s"
msgstr ""

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Translate the regenerated date patterns.

December %s, January %s, and %s after Epiphany have empty msgstr values, so Portuguese output falls back to English for these event names.

Proposed translations
-msgstr ""
+msgstr "Dezembro %s"

-msgstr ""
+msgstr "Janeiro %s"

-msgstr ""
+msgstr "%s após a Epifania"

Also applies to: 663-674

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@i18n/pt/LC_MESSAGES/litcal.po` around lines 644 - 647, Translate the empty
Portuguese msgstr values for the regenerated date patterns “December %s”,
“January %s”, and “%s after Epiphany” in the litcal.po catalog, preserving each
format placeholder exactly and using Portuguese wording consistent with
surrounding translations.

Comment on lines 688 to 692
#. translators: %s is a day of the week - Easter Octave pattern
#: src/FerialEventNameGenerator.php:501
#: src/FerialEventNameGenerator.php:447
#, fuzzy, php-format
msgid "%s within the Octave of Easter"
msgstr "%s Dia da Oitava de Natal"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Replace the unrelated fuzzy translations.

These translations do not match their msgids: the Easter-Octave entry references Christmas, the Holy Week entry references Holy Women, and “the following day” is translated as “the following Monday.”

Proposed translations
-msgstr "%s Dia da Oitava de Natal"
+msgstr "%s durante a Oitava da Páscoa"

-msgstr "Para Mulheres Santas"
+msgstr "%s da Semana Santa"

-msgstr "a próxima segunda-feira"
+msgstr "o dia seguinte"

Also applies to: 707-711, 787-790

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@i18n/pt/LC_MESSAGES/litcal.po` around lines 688 - 692, Update the fuzzy
Portuguese translations in the affected entries, including the Easter Octave
msgid and the entries around the Holy Week and “following day” messages, so each
msgstr accurately corresponds to its own msgid rather than unrelated Christmas,
Holy Women, or Monday text. Remove the fuzzy status once the translations are
corrected.

Comment on lines +685 to 688
#: src/FerialEventNameGenerator.php:447
#, fuzzy, php-format
msgid "%s within the Octave of Easter"
msgstr "Ngày %s trong Tuần Bát Nhật Giáng Sinh"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Repo files around i18n/vi:"
fd -a 'i18n/vi/LC_MESSAGES/litcal.po|FerialEventNameGenerator.php' . | sed 's#^\./##'

echo
echo "Referenced PO entries with surrounding context:"
sed -n '660,800p' i18n/vi/LC_MESSAGES/litcal.po | nl -ba -v660

echo
echo "PHP source reference context:"
sed -n '420,460p' src/FerialEventNameGenerator.php | nl -ba -v420

echo
echo "All translation entries containing these exact English source strings:"
rg -n -C 3 'within the Octave of Easter|of Holy Week|the following day|%s within the Octave of Easter|%s of Holy Week|the following day' i18n/vi/LC_MESSAGES/litcal.po src/FerialEventNameGenerator.php

Repository: Liturgical-Calendar/LiturgicalCalendarAPI

Length of output: 347


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "PO entry locations for the named sources:"
grep -nE 'msgid "%s within the Octave of Easter"|msgid "%s of Holy Week"|msgid "the following day"|msgid ""' i18n/vi/LC_MESSAGES/litcal.po

echo
echo "Relevant PO sections (python-based numbered extraction):"
python3 - <<'PY'
from pathlib import Path
p=Path('i18n/vi/LC_MESSAGES/litcal.po')
lines=p.read_text(encoding='utf-8').splitlines()
for start,end in [(660,805),(805,815)]:
    print(f"\n--- {start}-{end} ---")
    for i in range(start, min(end, len(lines))+1):
        print(f"{i}: {lines[i-1]}")

print("\nSource context:")
src=Path('src/FerialEventNameGenerator.php')
for start,end in [(420,460),(781,795)]:
    print(f"\n--- {start}-{end} ---")
    for i in range(start, min(end, len(src.read_text(encoding='utf-8').splitlines()))+1):
        print(f"{i}: {src.read_text(encoding='utf-8').splitlines()[i-1]}")
PY

echo
echo "Exact source strings and translations:"
python3 - <<'PY'
from pathlib import Path
lines=Path('i18n/vi/LC_MESSAGES/litcal.po').read_text(encoding='utf-8').splitlines()
targets=[
    '"%s within the Octave of Easter"',
    '"%s of Holy Week"',
    '"the following day"',
]
buf=[]
for i,l in enumerate(lines, 1):
    if any(t in l for t in targets):
        start=max(1,i-6); end=min(len(lines),i+4)
        print(f"\n--- {i}: {l.strip()} ---")
        for n in range(start,end+1):
            print(f"{n}: {lines[n-1]}")
PY

Repository: Liturgical-Calendar/LiturgicalCalendarAPI

Length of output: 11823


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "PO entry locations for the named sources:"
grep -nE 'msgid "%s within the Octave of Easter"|msgid "%s of Holy Week"|msgid "the following day"' i18n/vi/LC_MESSAGES/litcal.po

echo
echo "Relevant PO sections (python-based numbered extraction):"
python3 - <<'PY'
from pathlib import Path
lines=Path('i18n/vi/LC_MESSAGES/litcal.po').read_text(encoding='utf-8').splitlines()
for start,end in [(660,805),(805,815)]:
    print(f"\n--- {start}-{end} ---")
    for i in range(start, min(end, len(lines))+1):
        print(f"{i}: {lines[i-1]}")

print("\nSource context:")
src=Path('src/FerialEventNameGenerator.php')
for start,end in [(420,460),(781,795)]:
    print(f"\n--- {start}-{end} ---")
    for i in range(start, min(end, len(src.read_text(encoding='utf-8').splitlines()))+1):
        print(f"{i}: {src.read_text(encoding='utf-8').splitlines()[i-1]}")
PY

echo
echo "Exact source strings and translations:"
python3 - <<'PY'
from pathlib import Path
lines=Path('i18n/vi/LC_MESSAGES/litcal.po').read_text(encoding='utf-8').splitlines()
targets=[
    '"%s within the Octave of Easter"',
    '"%s of Holy Week"',
    '"the following day"',
]
for l in lines:
    for t in targets:
        if t in l:
            idx=lines.index(l)
            print(f"\n--- {idx+1}: {l.strip()} ---")
            start=max(1,idx); end=min(len(lines),idx+9)
            for n in range(start,end+1):
                print(f"{n}: {lines[n-1]}")
PY

Repository: Liturgical-Calendar/LiturgicalCalendarAPI

Length of output: 10794


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "PHP generation context for Holy Week and following day:"
sed -n '455,520p' src/FerialEventNameGenerator.php | nl -ba -v455
sed -n '1680,1705p' src/Handlers/CalendarHandler.php | nl -ba -v1680

echo
echo "Any other fuzzy entries in vi litcal PO:"
grep -n -E '^#.*fuzzy|msgstr ""|^#, fuzzy' i18n/vi/LC_MESSAGES/litcal.po || true

echo
echo "Standalone semantic/source-reference verifier:"
python3 - <<'PY'
from pathlib import Path
po = Path('i18n/vi/LC_MESSAGES/litcal.po').read_text(encoding='utf-8').splitlines()
src = Path('src/FerialEventNameGenerator.php').read_text(encoding='utf-8').splitlines() + \
      Path('src/Handlers/CalendarHandler.php').read_text(encoding='utf-8').splitlines()

for src, fuzzy in [('%s within the Octave of Easter', '#, fuzzy, php-format'),
                     ('%s of Holy Week', '#, fuzzy, php-format'),
                     ('the following day', '#, fuzzy')]:
    src_line = next(i for i,l in enumerate(po, 1) if l.strip() == f'msgid "{src}"')
    attrs_line = next(i for i,l in enumerate(po, 1) if f'msgid "{src}"' in l) - 1
    attrs = po[attrs_line-1] if attrs_line > 0 and attrs_line <= len(po) and po[attrs_line-1].startswith('#,') else ""
    msgstr = next(po[i for i,l in enumerate(po, 1) if l.strip() == f'msgstr {po[src_line]}' ][0]) if False else ''
PY

Repository: Liturgical-Calendar/LiturgicalCalendarAPI

Length of output: 275


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
from pathlib import Path
for path, start, end in [
    ('src/FerialEventNameGenerator.php', 455, 520),
    ('src/Handlers/CalendarHandler.php', 1680, 1705),
]:
    file = Path(path)
    text = file.read_text(encoding='utf-8').splitlines()
    print(f"\n--- {path} {start}-{end} ---")
    for i in range(start, min(end, len(text)) + 1):
        print(f"{i}: {text[i-1]}")

po = Path('i18n/vi/LC_MESSAGES/litcal.po').read_text(encoding='utf-8').splitlines()
for target in ['%s within the Octave of Easter', '%s of Holy Week', 'the following day']:
    try:
        idx = next(i for i,l in enumerate(po, 1) if l.strip().lower() == f'msgid "{target}"'.lower())
    except StopIteration:
        print(f"\nNo msgid found for {target!r}")
        continue
    print(f"\n--- {target} at line {idx} ---")
    for n in range(max(1, idx-3), min(len(po), idx+3) + 1):
        print(f"{n}: {po[n-1]}")
PY

echo
echo "Any fuzzy attributes for the named msgids:"
python3 - <<'PY'
from pathlib import Path
po = Path('i8n/vi/LC_MESSAGES/litcal.po').read_text(encoding='utf-8').splitlines() if False else Path('i18n/vi/LC_MESSAGES/litcal.po').read_text(encoding='utf-8').splitlines()
for target in ['%s within the Octave of Easter', '%s of Holy Week', 'the following day']:
    idx = next(i for i,l in enumerate(po, 1) if l.strip().lower() == f'msgid "{target}"'.lower())
    for n in range(max(1, idx-4), idx):
        print(f"{n}: {po[n-1]}")
PY

Repository: Liturgical-Calendar/LiturgicalCalendarAPI

Length of output: 5749


Correct the incorrect fuzzy Vietnamese translations.

  • %s within the Octave of Easter uses Giáng Sinh instead of Easter.
  • %s of Holy Week uses the translation for “For Holy Women.”
  • the following day reuses Thứ Hai tiếp theo, which contradicts the generic source string.

Replace them with reviewed Vietnamese translations before removing fuzzy.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@i18n/vi/LC_MESSAGES/litcal.po` around lines 685 - 688, Correct the fuzzy
Vietnamese translations in the affected entries: use Easter terminology for “%s
within the Octave of Easter,” translate “%s of Holy Week” as Holy Week rather
than Holy Women, and provide a generic translation for “the following day”
instead of “the following Monday.” After verifying each reviewed translation,
remove the fuzzy flags.

weblate added 25 commits August 4, 2026 16:45
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Liturgical Calendar/API strings
Translate-URL: https://translate.johnromanodorazio.com/projects/liturgical-calendar/liturgical-calendar-api/api-strings/
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Liturgical Calendar/API strings
Translate-URL: https://translate.johnromanodorazio.com/projects/liturgical-calendar/liturgical-calendar-api/api-strings/
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Liturgical Calendar/API strings
Translate-URL: https://translate.johnromanodorazio.com/projects/liturgical-calendar/liturgical-calendar-api/api-strings/
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