Skip to content

ludus::localization::Catalog

Ludus Wiki · API overview · Browse API

Class

Immutable snapshot AND lifetime lease.
Copies share one allocation. Separate copies may be read/destroyed on different threads after synchronized publication. The allocation domain must outlive every copy. Borrowed views require a live lease; assignment/destruction of the last lease invalidates them.
Each successful prepare gets a new token, even for identical schemas/locales. Rebind after replacement; copies/moves retain the token. There is no global current language, implicit fallback, or cross-catalog binding compatibility.

Declared in modules/localization/include/ludus/localization/catalog.hpp

#include <ludus/localization/catalog.hpp>
class ludus::localization::Catalog final

Members

detail::CatalogAccess

friend struct detail::CatalogAccess
The formatter decodes validated records through the private catalog accessor.

Declared in modules/localization/include/ludus/localization/catalog.hpp

Methods

Catalog

ludus::localization::Catalog::Catalog() noexcept=default

Declared in modules/localization/include/ludus/localization/catalog.hpp

~Catalog

ludus::localization::Catalog::~Catalog() noexcept=default

Declared in modules/localization/include/ludus/localization/catalog.hpp

Catalog

ludus::localization::Catalog::Catalog(const Catalog &) noexcept=default

Declared in modules/localization/include/ludus/localization/catalog.hpp

operator=

Catalog & ludus::localization::Catalog::operator=(const Catalog &) noexcept=default

Related types: Catalog

Declared in modules/localization/include/ludus/localization/catalog.hpp

Catalog

ludus::localization::Catalog::Catalog(Catalog &&other) noexcept

Declared in modules/localization/include/ludus/localization/catalog.hpp

operator=

Catalog & ludus::localization::Catalog::operator=(Catalog &&other) noexcept

Related types: Catalog

Declared in modules/localization/include/ludus/localization/catalog.hpp

IsValid

bool ludus::localization::Catalog::IsValid() const noexcept

Declared in modules/localization/include/ludus/localization/catalog.hpp

GetMessageCount

uint32 ludus::localization::Catalog::GetMessageCount() const noexcept

Related types: uint32

Declared in modules/localization/include/ludus/localization/catalog.hpp

GetDomain

std::string_view ludus::localization::Catalog::GetDomain() const &noexcept

Declared in modules/localization/include/ludus/localization/catalog.hpp

GetDomain

std::string_view ludus::localization::Catalog::GetDomain() const &&=delete

Declared in modules/localization/include/ludus/localization/catalog.hpp

GetLocale

std::string_view ludus::localization::Catalog::GetLocale() const &noexcept

Declared in modules/localization/include/ludus/localization/catalog.hpp

GetLocale

std::string_view ludus::localization::Catalog::GetLocale() const &&=delete

Declared in modules/localization/include/ludus/localization/catalog.hpp

GetSourceLocale

std::string_view ludus::localization::Catalog::GetSourceLocale() const &noexcept

Declared in modules/localization/include/ludus/localization/catalog.hpp

GetSourceLocale

std::string_view ludus::localization::Catalog::GetSourceLocale() const &&=delete

Declared in modules/localization/include/ludus/localization/catalog.hpp

GetLinguisticData

std::string_view ludus::localization::Catalog::GetLinguisticData() const &noexcept
Linguistic data that validated and decoded a version 2 package.
For example icu4c-78.3/cldr-48/unicode-17.0; empty for version 1 literal catalogs and invalid catalogs. L2 formatting must run the same data.

Declared in modules/localization/include/ludus/localization/catalog.hpp

GetLinguisticData

std::string_view ludus::localization::Catalog::GetLinguisticData() const &&=delete
Deleted: a temporary catalog cannot lend a retained view.

Declared in modules/localization/include/ludus/localization/catalog.hpp

BindMessage

Status ludus::localization::Catalog::BindMessage(MessageKey key, MessageBinding &output) const noexcept
Cold exact-key binary search for an argument-free message; outputs are unchanged on any failure.
Equivalent to binding a descriptor with an empty argument schema: a message that declares arguments returns SchemaMismatch.

Related types: MessageBinding · Status · MessageKey

Declared in modules/localization/include/ludus/localization/catalog.hpp

BindMessage

Status ludus::localization::Catalog::BindMessage(const MessageDescriptor &descriptor, MessageBinding &outBinding) const noexcept
Cold exact-key and exact argument-schema bind.
ParameterDescription
descriptor
Key and complete expected schema, usually generated.
outBinding
Written only on Ok.

Returns

Ok; Invalid for an invalid catalog, key or descriptor; NotFound for an absent domain/key; SchemaMismatch when the key exists but any compared argument field differs. No allocation or hashing.

Related types: MessageBinding · Status · MessageDescriptor

Declared in modules/localization/include/ludus/localization/catalog.hpp

ResolveStatic

Status ludus::localization::Catalog::ResolveStatic(MessageBinding binding, ResolvedText &output) const &noexcept
O(1), zero allocation. Returns the cooked static UTF-8 text.
Version 1 text is literal; version 2 text is the ICU-decoded output of an argument-free pattern ('{' is already {). A message with arguments returns RequiresArguments, even when one translation omits them all.

Related types: MessageBinding · Status · ResolvedText

Declared in modules/localization/include/ludus/localization/catalog.hpp

ResolveStatic

Status ludus::localization::Catalog::ResolveStatic(MessageBinding, ResolvedText &) const &&=delete

Related types: MessageBinding · Status · ResolvedText

Declared in modules/localization/include/ludus/localization/catalog.hpp