godot::tools

Macro tr_n

macro_rules! tr_n {
    ($n:expr; $singular:literal, $plural:literal $(, $($args:tt)*)?) => { ... };
    ($n:expr, $context:expr; $singular:literal, $plural:literal $(, $($args:tt)*)?) => { ... };
}
Expand description

A convenience macro for using the Object::tr_n() and Object::tr_n_ex() methods.

Allows for the use of format strings with arbitrary arguments. n is given prior to the format string, followed by ;. Optionally, context for potentially ambiguous words can be added with , after n and before ;.

Using named or positional parameters instead of {} may make it easier to use dynamic formatting once gdext supports it:

use godot::tools::tr_n;

// Good.
tr_n!(n, context; "{a} is a {b}", "{a}s are {b}s"); // inlined, with context
tr_n!(n; "{0} is a {1}", "{0}s are {1}s", a, b); // positional, without context
tr_n!(n; "{c} is a {d}", "{c}s are {d}s", c = a.x, d = b.y); // named (inlining not possible here)

// Not as good, much more fragile.
// Additionally, such syntax requires that BOTH format strings use ALL listed arguments.
tr_n!(n; "{} is a {}", "{}s are {}s", a, b);

The methods are called from the Engine singleton.

See also: Translation contexts in Godot.