Skip to content

i18n: AI translations — ar, as, bn, cs, de, es, fr, hi, hr, id, it, ja, ko, pl, pt, ro, ru, sc, te, tl, tr, uk, zh (2026-09-10) - #81

Merged
github-actions[bot] merged 2 commits into
mainfrom
i18n/ai-batch-20260910
Sep 10, 2026
Merged

github-actions[bot] merged 2 commits into
mainfrom
i18n/ai-batch-20260910

Conversation

@openlibrary-bot

Copy link
Copy Markdown
Collaborator

Languages

  • Arabic (ar)
  • Assamese (as)
  • Bengali (bn)
  • Czech (cs)
  • German (de)
  • Spanish (es)
  • French (fr)
  • Hindi (hi)
  • Croatian (hr)
  • Indonesian (id)
  • Italian (it)
  • Japanese (ja)
  • Korean (ko)
  • Polish (pl)
  • Portuguese (pt)
  • Romanian (ro)
  • Russian (ru)
  • Sardinian (sc)
  • Telugu (te)
  • Tagalog (tl)
  • Turkish (tr)
  • Ukrainian (uk)
  • Chinese (zh)

Summary

AI-translated untranslated strings. Format strings, HTML attributes, and proper nouns
preserved verbatim. Fuzzy entries skipped.

Review guidance

  • Format strings (%(name)s, %s, {page}) must match the English source exactly
  • HTML tag structure must be identical to the English source
  • If any translation looks wrong, open an issue — we can retranslate

AI attribution

Translations generated by AI translation API.

github-actions Bot and others added 2 commits September 10, 2026 01:06
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Translates the "version <hash>" footer string across ar, as, bn, cs,
de, es, fr, hi, hr, id, it, ja, ko, pl, pt, ro, ru, sc, te, tl, tr, uk,
zh. The remaining untranslated entry per language (the spamwords
example string) is skipped due to a literal \x08 control character in
the source msgid — tracked in issue #21.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@openlibrary-bot

Copy link
Copy Markdown
Collaborator Author

Run audit — ar, as, bn, cs, de, es, fr, hi, hr, id, it, ja, ko, pl, pt, ro, ru, sc, te, tl, tr, uk, zh — 2026-09-10

Stats

Lang Translated Skipped Cleared by fix validate test
ar 1 1 0 OK 2641 passed
as 1 1 0 OK 812 passed
bn 1 1 0 OK 120 passed
cs 1 1 0 OK 138 passed
de 1 1 0 OK 491 passed
es 1 0 0 OK 2641 passed
fr 1 1 0 OK 337 passed
hi 1 1 0 OK 736 passed
hr 1 0 0 OK 1440 passed
id 1 1 0 OK 313 passed
it 1 1 0 OK 1062 passed
ja 1 1 0 OK 159 passed
ko 1 0 0 OK 113 passed
pl 1 1 0 OK 761 passed
pt 1 1 0 OK 234 passed
ro 1 1 0 OK 1112 passed
ru 1 1 0 OK 168 passed
sc 1 0 0 OK 211 passed
te 1 1 0 OK 2641 passed
tl 1 0 0 OK 595 passed
tr 1 1 0 OK 2641 passed
uk 1 1 0 OK 120 passed
zh 1 1 0 OK 118 passed

Every language in this batch had exactly the same 1–2 untranslated entries going in. Only the lib/nav_foot.html.jinja "version <hash>" footer string needed translating; the other candidate (admin/spamwords.html example string) was skipped everywhere it appeared, per below.

Issues encountered

  • Literal \x08 control character in admin/spamwords.html msgid — the string "For example, if you want to prevent edits containing the domain <code>t.co</code>, add <code>(\x08|https://|http://)t\\.co</code> to the spamwords list." contains a real backspace byte (not the text \b) right before the regex alternation. Per the skip rule, left msgstr empty for all 23 languages in this batch. Already tracked as Source .pot bug: literal \x08 control character in spamwords msgid #21 — no new issue filed.

Commands that failed

None — apply/fix/validate/test/compile all succeeded on the first pass for every language.

Improvisations / deviations from instructions

  • Branch did not start with zero diff. At session start, locale/*/messages.po and messages.pot for exactly this batch's 23 languages already had large uncommitted working-tree changes (a pot/po sync, ~50k line diff) present before any translation work began. Per the instructions ("The .po files are already synced with the latest messages.pot. Do not run pull or sync"), I treated this as expected pre-sync rather than something to discard, and committed it as a first commit (i18n: sync messages.pot and locale files for batch) instead of the documented empty commit, so the draft PR could open with real content. I did not run any sync/pull command myself.
  • .po files got substantially re-wrapped by the toolbox. Every ./i18n apply/fix/compile invocation reflows comment/msgid line-wrapping (removing 79-char soft wraps in favor of single-line entries), which shows up as large +/- diffs in git diff --stat even though only 1 string per file actually changed semantically. Confirmed by manual diff inspection — no content was lost, this is just the toolbox's own serialization format. Not something I did intentionally; flagging in case reviewers are surprised by diff size.

Suggested workflow improvements

  • Consider having ./i18n preserve the existing .po line-wrap width (or explicitly document that it doesn't) so PR diffs stay proportional to the actual number of changed strings — reviewers scanning git diff --stat will otherwise see thousands of changed lines for single-string translation batches.
  • Step 3 of the instructions assumes the branch starts with zero diff; when a sync step has already run and left uncommitted changes before the agent starts, it may be worth explicitly documenting "commit the pre-synced diff as the first commit" as the expected path, rather than leaving it to be inferred.

@openlibrary-bot
openlibrary-bot marked this pull request as ready for review September 10, 2026 01:09
@github-actions
github-actions Bot merged commit 82619e4 into main Sep 10, 2026
1 check passed
@github-actions
github-actions Bot deleted the i18n/ai-batch-20260910 branch September 10, 2026 01:09
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.

1 participant