aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2016-11-23 00:33:34 +0100
committerFlorian Dold <florian.dold@gmail.com>2016-11-23 00:33:34 +0100
commitc43e24bb13d75af41d6839b1e921165982b64fe8 (patch)
tree7767d6edb093a76f0fa1e1caa51828c91951c46f /src
parent0f98d411d5524e7f14effcb964d2d63ec673a849 (diff)
add ability to wrap translated elements
Diffstat (limited to 'src')
-rw-r--r--src/i18n.tsx31
1 files changed, 24 insertions, 7 deletions
diff --git a/src/i18n.tsx b/src/i18n.tsx
index 9374efaf0..a8b842d9c 100644
--- a/src/i18n.tsx
+++ b/src/i18n.tsx
@@ -218,7 +218,21 @@ function stringifyChildren(children: any): string {
return ss.join("");
}
-i18n.Translate = class extends React.Component<void,void> {
+
+interface TranslateProps {
+ /**
+ * Component that the translated element should be wrapped in.
+ * Defaults to "div".
+ */
+ wrap?: any;
+
+ /**
+ * Props to give to the wrapped component.
+ */
+ wrapProps?: any;
+}
+
+i18n.Translate = class extends React.Component<TranslateProps,void> {
render(): JSX.Element {
init();
if (typeof jed !== "object") {
@@ -246,14 +260,17 @@ i18n.Translate = class extends React.Component<void,void> {
result.push(x);
}
}
- return <div>{result}</div>;
+ if (!this.props.wrap) {
+ return <div>{result}</div>;
+ }
+ return React.createElement(this.props.wrap, this.props.wrapProps, result);
}
}
i18n.TranslateSwitch = class extends React.Component<TranslateSwitchProps,void>{
render(): JSX.Element {
- let singular: React.ReactElement<TranslationProps> | undefined;
- let plural: React.ReactElement<TranslationProps> | undefined;
+ let singular: React.ReactElement<TranslationPluralProps> | undefined;
+ let plural: React.ReactElement<TranslationPluralProps> | undefined;
let children = this.props.children;
if (children) {
React.Children.forEach(children, (child: any) => {
@@ -286,11 +303,11 @@ i18n.TranslateSwitch = class extends React.Component<TranslateSwitchProps,void>{
}
}
-interface TranslationProps {
+interface TranslationPluralProps {
target: number;
}
-class TranslatePlural extends React.Component<TranslationProps,void> {
+class TranslatePlural extends React.Component<TranslationPluralProps,void> {
render(): JSX.Element {
init();
if (typeof jed !== "object") {
@@ -324,7 +341,7 @@ class TranslatePlural extends React.Component<TranslationProps,void> {
i18n.TranslatePlural = TranslatePlural;
-class TranslateSingular extends React.Component<TranslationProps,void> {
+class TranslateSingular extends React.Component<TranslationPluralProps,void> {
render(): JSX.Element {
init();
if (typeof jed !== "object") {