The ui18n-config.yaml file
The ui18n-config.yaml file is placed in the same directory as all other translations and contains metadata and
settings for the library. It looks like this:
terms:
- v1: 1
- v2: 2
- v3: 3
The terms key defines static string variables that will be used to do static interpolation into strings.
The translation format
The translation format is simple YAML. Example code showcasing all features:
translations:
- id: normal-string
text: "This is a normal string"
- id: interpolated-string
text: "This is an interpolated string. Text: {}"
- id: statically-interpolated-with-terms
text: "This uses a term. Text: {v1}"
- id: dynamically-interpolated-with-variable
text: "This uses a variable. Text: {var1}"
- id: dynamic-interpolation-with-conditional
text: "This uses a variable. Text: {var2}"
switch:
- var: var2
default: "{var2} targets"
cases:
- case: "1"
result: "1 target"
Notice how IDs are not actual strings. This is intentional to make translating easier.
Normal and interpolated string
Normal strings look like this:
- id: normal-string
text: This is a normal string
As you can see, no special syntax is applied.
Sometimes you might want to add interpolation to the string. To do this, use {} to mark the position that should be
replaced by the interpolated value. Example:
- id: interpolated-string
text: "This is an interpolated string. Values: {}, {}, {}"
Statically interpolated strings
Strings can also use static variable interpolation by interpolating terms. Example:
- id: static-interpolation
text: "This is an interpolated string. Values: {term1}"
When the library is initialised, term1 will be substituted with its value and interpolation into this string will no
longer be possible.
Dynamically interpolated strings
You can also use dynamic interpolation using variables pushed to the translation engine. Example:
- id: static-interpolation
text: "This is an interpolated string. Values: {var1}"
Dynamically interpolated strings with conditions
When doing dynamic interpolation, you can also use conditional statements with the variable’s value so that you can provide better support for cases, pluralisation and other grammatical features that require modification of parts of phrases. Example:
- id: dynamic-interpolation-with-conditional
text: "This uses a variable. Text: {var2}"
switch:
- var: var2
default: "{var2} targets"
cases:
- case: "1"
result: "1 target"
As you can see, the syntax is similar to the concept of a switch-case in most programming languages.