Warning: Reason support is experimental. We are looking for beta-tester and contributors.

PPX rewriter

The ocsigen-i18n-rewriter PPX extension transforms [%i18n ...] expressions into calls to the generated translation functions.

Setup

Add the PPX to your dune file:

(preprocess (pps ocsigen-i18n -- --default-module MyI18n))

where MyI18n is the name of the module generated by ocsigen-i18n-generator (the basename of the output file, capitalized).

Without dune, use:

-ppx 'ocsigen-i18n-rewriter --default-module MyI18n'

Expressions

The PPX supports the following forms:

[%i18n foo]Calls MyI18n.Tr.foo () (HTML)
[%i18n S.foo]Calls MyI18n.S.foo () (string)
[%i18n bar ~x:expr]Passes a labelled argument
[%i18n OtherMod.foo]Calls OtherMod.Tr.foo ()
[%i18n OtherMod.S.foo]Calls OtherMod.S.foo ()

Module affixing

To avoid redundancy when using multiple i18n modules, you can auto-prefix and auto-suffix module names:

(preprocess (pps ocsigen-i18n -- --default-module MyI18n --prefix Pr_ --suffix _i18n))

With this configuration, [%i18n Feature.foo] becomes Pr_Feature_i18n.Tr.foo ().

Important: Do not name your i18n file s.tsv, as S is reserved for the string module.