Skip to content

Localize Person Names version 1.1.0

Latest

Choose a tag to compare

@kipcole9 kipcole9 released this 29 Oct 23:43

[1.1.0] - 2026-10-28

Added

  • usage-rules.md ships in the package with the rules an LLM coding agent needs to use the library correctly.

Changed

  • Formats with CLDR 49 locale data, so it requires Localize 1.4 or later.

  • Conformance test data is CLDR 49 and mirrors common/testData/personNameTest exactly: sixteen regional files CLDR retired in CLDR 45 are removed and br is added. Only my is excluded now, for one word-break failure.

  • Localize.PersonName.new/1 accepts a map of attributes as well as a keyword list.

Fixed

  • to_string/2, to_iodata/2 and new/1 return {:error, reason} for values, options and hand-built structs they cannot format, where they raised. A struct with neither a Localize.PersonName.Convertible implementation nor the behaviour is an error, not a Protocol.UndefinedError.

  • Structs resolve through the Localize.PersonName.Convertible protocol before the behaviour, as the docs describe. String.Chars renders an unformattable name as "", and Localize.Chars returns an exception struct as its error.

  • to_string!/2 and to_iodata!/2 raise the exception when the reason is one, such as Localize.InvalidLocaleError, where they raised a FunctionClauseError.

  • Locale switching no longer treats a locale with no person-name data as having its own name order, which sent switching down the wrong branch for unknown locales.

  • Initial generation takes a word's initial whenever its first code point is a letter, as CLDR's reference formatter does. Sinhala words with a zero-width joiner and Malayalam words containing a digit were dropped, which is why si, km and ml were excluded.

  • Dead documentation links: the README and the cultural naming conventions guide pointed at a v0.1.0 tag that was never published and at specification_deviances.md, which became guides/conformance.md. Closes #1.