Expand description
§{:locale; … :}
Includes a language json file:
{:locale; filename :}
{:locale; file.json :}
The language files must have a structure similar to this one:
{
"trans": {
"es": {
"Hello": "Hola",
"ref:greeting": "Hola",
},
"es-ES": {
"Hello": "Hola",
"ref:greeting": "Hola",
}
}
}
A “trans” key and then the key for each language, any other key will produce an error or be ignored.
§Modifiers:
{:!locale; ... :}
{:^locale; ... :}
§Modifier: ! (not)
The “not” modifier prevents the file from being reload if it has already been parsed. Generally, language files should only be included once, it will increase performance if “not” is used:
{:!locale; file.json :}
§Flags
{:locale; {:flg; require noparse :} >> ... :}
§Flag: require
By default, no error will occur if the file to locale does not exist, unless the “require” flag is set.
{:locale; {:flg; require :} >> file.json :}
§Flag: noparse
The “noparse” flag prevents the file to be included from being parsed.
{:locale; {:flg; noparse :} >> file.json :}
§Return value
“locale” show no output but returns “{:;:}” (unprintable) if successful, so this is possible:
{:locale; file.{:lang;:}.json :}
{:else; file.en.json :}
§Dynamic evaluation
The following will produce an error:
{:locale; {:;varname:} :}
For safety reasons, when evaluating the complete variable it is necessary to use “allow”:
{:locale; {:allow; allowed-words-list >> {:;varname:} :} :}
{:locale; {:!allow; traversal >> {:;varname:} :} :}
In any case, you must use “allow” on any variable that comes from the context. See the “allow” and “declare” bifs for more details.
§Translation evaluation
Translations may contain variables:
{
"trans": {
"es": {
"Welcome to {:;web-site-name:}": "Bienvenido a {:;web-site-name:}"
}
}
}
Variables are resolved at the time the file is included.
(*) Translations included in the “schema” are not evaluated, only those loaded with “locale”.
§Relative to current file path
We can use relative paths to the currently localed file with the “#” symbol:
{:locale; #/file.json :}
It will be relative to the file loaded with “include”:
{:*
file: /path/to/tpl/snippets.ntpl
Here #/file.json is: /path/to/tpl/file.json
*:}
{:locale; #/file.json :}