What is R-Machine
Internationalization is just the first use case of a more general idea.
Every resource in your application — localized text, services, reactive state — lives behind a stable namespace, like a table in a database. Consumers depend on the name, not on where the value lives or how it's built. You can change the implementation behind a namespace without touching consumers, tests, or mocks: the compiler guarantees the contract holds. That's what we call uniformity under change — the code evolves, the boundaries stay stable.
i18n is the proof that the mechanism works: translations are just another kind of resource behind a namespace, fully type-safe end-to-end. The same property that makes the architecture predictable for you makes it readable for a coding agent — the dependency graph is explicit and named, not implicit.