Inlang operates on an AST (Abstract Syntax Tree). Using an AST gives inlang flexibility to adapt to different message syntaxes like ICU, formats such as JSON, ARB or JS, build linters for localization, and deliver an outstanding editing experience for translators.

Expressing human languages is complex. So complex that code is required to express human languages. Code needs to be parsed, processed, and serialized to enable lintings, building a user interface, and more. Strings don't do justice to the complexity of human languages. Take a look at this example sentence and the resulting complexity.


Up-to-date reference can be found in the repository.


The AST definition is small on purpose. Feedback and requirements from users will define what nodes and properties are added. Participate in the discussions.