mirror of
https://github.com/zulip/zulip.git
synced 2025-10-24 08:33:43 +00:00
templates: Support context variables in Handlebars {{t}} helper.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
committed by
Tim Abbott
parent
042bbf2936
commit
ba5a2c8866
@@ -258,6 +258,8 @@ Handlebars [helpers][] that Zulip registers. The syntax for simple strings is:
|
|||||||
|
|
||||||
```html+handlebars
|
```html+handlebars
|
||||||
{{t 'English text' }}
|
{{t 'English text' }}
|
||||||
|
|
||||||
|
{{t 'Block of English text with a {variable}.' }}
|
||||||
```
|
```
|
||||||
|
|
||||||
If you are passing a translated string to a Handlebars partial, you can use:
|
If you are passing a translated string to a Handlebars partial, you can use:
|
||||||
@@ -268,17 +270,17 @@ If you are passing a translated string to a Handlebars partial, you can use:
|
|||||||
}}
|
}}
|
||||||
```
|
```
|
||||||
|
|
||||||
The syntax for block strings or strings containing variables is:
|
The syntax for HTML strings is:
|
||||||
|
|
||||||
<!-- The html+handlebars lexer fails to lex the single braces. -->
|
<!-- The html+handlebars lexer fails to lex the single braces. -->
|
||||||
|
|
||||||
```text
|
```text
|
||||||
{{#tr}}
|
{{#tr}}
|
||||||
Block of English text.
|
<p>Block of English text.</p>
|
||||||
{{/tr}}
|
{{/tr}}
|
||||||
|
|
||||||
{{#tr}}
|
{{#tr}}
|
||||||
Block of English text with a {variable}.
|
<p>Block of English text with a {variable}.</p>
|
||||||
{{/tr}}
|
{{/tr}}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -51,13 +51,19 @@ Handlebars.registerHelper({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
Handlebars.registerHelper("t", (message) => {
|
Handlebars.registerHelper("t", function (message) {
|
||||||
// Marks a string for translation.
|
// Marks a string for translation.
|
||||||
// Example usage:
|
// Example usage 1:
|
||||||
// {{t "some English text"}}
|
// {{t "some English text"}}
|
||||||
|
//
|
||||||
|
// Example usage 2:
|
||||||
|
// {{t "This {variable} will get value from the current context"}}
|
||||||
|
//
|
||||||
|
// Note: use `{` and `}` instead of `{{` and `}}` to declare
|
||||||
|
// variables.
|
||||||
|
|
||||||
const descriptor = {id: message, defaultMessage: message};
|
const descriptor = {id: message, defaultMessage: message};
|
||||||
return intl.formatMessage(descriptor);
|
return intl.formatMessage(descriptor, this);
|
||||||
});
|
});
|
||||||
|
|
||||||
Handlebars.registerHelper("tr", function (options) {
|
Handlebars.registerHelper("tr", function (options) {
|
||||||
@@ -90,7 +96,7 @@ Handlebars.registerHelper("tr", function (options) {
|
|||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
...Object.fromEntries(
|
...Object.fromEntries(
|
||||||
Object.entries(this ?? {}).map(([key, value]) => [
|
Object.entries(this).map(([key, value]) => [
|
||||||
key,
|
key,
|
||||||
Handlebars.Utils.escapeExpression(value),
|
Handlebars.Utils.escapeExpression(value),
|
||||||
]),
|
]),
|
||||||
|
|||||||
Reference in New Issue
Block a user