blob: 583a5e4a0181c6de8d1908a707491eadf272b2e3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
import React from "react";
/**
* Set text on a child element/component depending on if the message is already
* translated plain text or a fluent id with optional args.
*/
export class FluentOrText extends React.PureComponent {
render() {
// Ensure we have a single child to attach attributes
const { children, message } = this.props;
const child = children ? React.Children.only(children) : <span />;
// For a string message, just use it as the child's text
let grandChildren = message;
let extraProps;
// Convert a message object to set desired fluent-dom attributes
if (typeof message === "object") {
const args = message.args || message.values;
extraProps = {
"data-l10n-args": args && JSON.stringify(args),
"data-l10n-id": message.id || message.string_id,
};
// Use original children potentially with data-l10n-name attributes
grandChildren = child.props.children;
}
// Add the message to the child via fluent attributes or text node
return React.cloneElement(child, extraProps, grandChildren);
}
}
|