I understand the "sparse message catalog" problem to be that an ast optget usage string would be treated as one string in the message catalog
however, this is not how libast::optget() interfaces with the underlying message catalogs almost all of the l10n strings in ast src are arguments to libast::error() or libast::optget() the error() strings are basically printf-style strings that are used as keys into the message catalog an ast layer is provided to map the strings to integral indices for native message catalog apis that require indices optget() breaks down the usage string into smaller message catalog strings the --keys option lists the message catalog strings in C-style "..." strings, one per line e.g., sum --keys 2>&1 | wc shows 88 message catalog strings for a total of ~6K bytes for the C locale note that the long option names are also subject to l10n for portability the C locale names are visible in all locales -- Glenn Fowler -- at&t Research, Florham Park NJ --