This template is used to reduce Lua memory usage and running time on pages with large translation tables such as water, black, star, etc. It works by replacing a lot of separate Lua module invocations, one per {{t}}
or {{t+}}
call, with a single module invocation that handles a whole batch of translations at once. It has one parameter, |data=
, which should contain the entire text of one or more translation tables; it is recommended to surround a whole set of translation tables with a call to {{multitrans|data=<...>}}
.
An example usage:
{{multitrans|data=
{{trans-top|absorbing all light}}
* Abkhaz: {{tt|ab|аиқәаҵәа}}
* Acehnese: {{tt|ace|itam}}
* Afrikaans: {{tt+|af|swart}}
* Albanian: {{tt+|sq|zi}}
* Amharic: {{tt|am|ጥቁር}}
* Arabic: {{tt+|ar|أَسْوَد|m}}, {{tt|ar|سَوْدَاء|f}}, {{tt|ar|سُود|p}}
*: Moroccan Arabic: {{tt|ary|كحل|tr=kḥal}}
* Armenian: {{tt|hy|սև}}
* Aromanian: {{tt|rup|negru}}, {{tt+|rup|laiu}}
* Asháninka: {{tt|cni|cheenkari}}, {{tt|cni|kisaari}}
* Assamese: {{tt|as|ক’লা}}, {{tt|as|কুলা}} {{qualifier|Central}}
* Asturian: {{tt|ast|ñegru}}, {{tt|ast|negru}}, {{tt|ast|prietu}}
* Atikamekw: {{tt|atj|makatewaw}}
* Avar: {{tt|av|чӏегӏера}}
* Aymara: {{tt|ay|ch’iyara}}
* Azerbaijani: {{tt+|az|qara}}
{{trans-bottom}}
{{trans-top|without light}}
* Bulgarian: {{tt+|bg|тъмен}}
* Catalan: {{tt+|ca|fosc}}
* Dutch: {{tt+|nl|donker}}
* Esperanto: {{tt+|eo|malhela}}
* Estonian: {{tt+|et|pime}}
* Finnish: {{tt+|fi|pimeä}}
* Georgian: {{tt|ka|ბნელი}}, {{tt|ka|მუქი}}, {{tt|ka|ბუნდოვანი}}
* Greek: {{tt+|el|σκοτεινός|m}}, {{tt+|el|ερεβώδης|m}}
{{trans-bottom}}
}}<!-- close {{multitrans}} -->
Inside of the template, add a t
to the beginning of translation templates:
The {{tt}}
and {{tt+}}
templates are pass-throughs, so that e.g. {{tt|ary|كحل|tr=kḥal}}
generates the literal text ⦃⦃t¦ary¦كحل¦tr=kḥal⦄⦄
, with braces replaced by brace-like Unicode chars and the pipe symbol replaced by a pipe-symbol-like Unicode char. These special chars are parsed by the Lua code and call the same code that underlyingly implements {{t}}
and {{t+}}
, but because this all happens inside a single module invocation instead of a lot of separate module invocations, it's much faster and more memory-efficient.
If you are still having memory issues, try using {{multitrans|load=all|data=<...>}}
. This loads all the language data into memory at once rather than loading it as needed. From experience, this almost always increases rather than reduces memory usage, but in exceptional cases it might result in the opposite.
(Note: this section is only relevant for those who regularly concern themselves with template maintenance.)
As of January 2, 2023, {{multitrans}}
will automatically complain if one fails to replace {{t}}
and {{t+}}
by {{tt}}
and {{tt+}}
.
To check for the reverse problem, i.e. people using {{tt}}
and {{tt+}}
outside of the context of {{multitrans}}
, a simple Python script has been written.