Skip to content

Implement ICU MessageFormat and catalogs (Phase 3 of #863) - #1427

Merged
paul-hammant merged 1 commit into
mainfrom
feat/i18n-message-phase3
Aug 5, 2026
Merged

Implement ICU MessageFormat and catalogs (Phase 3 of #863)#1427
paul-hammant merged 1 commit into
mainfrom
feat/i18n-message-phase3

Conversation

@paul-hammant

Copy link
Copy Markdown
Collaborator

Summary

  • add std.message with ICU MessageFormat parsing and formatting
  • support placeholders, plural/select branches, explicit plural values, #, nesting, and apostrophe escaping
  • add an in-memory locale-aware message catalog API
  • add regression coverage across English, Russian, and Polish plural behavior

This is Phase 3 of #863. The initial implementation was authored by Google Jules; this branch includes the follow-up memory-discipline fixes needed for Aether's zero-leak gate.

Validation

  • ./build/ae run tests/regression/test_message.aeAll PASS
  • valgrind --leak-check=full --num-callers=8 /tmp/msg — all heap blocks freed; 0 errors
  • ./build/ae fmt std/message/module.ae tests/regression/test_message.ae — idempotent

@paul-hammant
paul-hammant merged commit 388d49b into main Aug 5, 2026
22 checks passed
@paul-hammant
paul-hammant deleted the feat/i18n-message-phase3 branch August 5, 2026 20:51
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