diff options
author | Florian Dold <florian.dold@gmail.com> | 2016-11-23 00:33:34 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2016-11-23 00:33:34 +0100 |
commit | c43e24bb13d75af41d6839b1e921165982b64fe8 (patch) | |
tree | 7767d6edb093a76f0fa1e1caa51828c91951c46f | |
parent | 0f98d411d5524e7f14effcb964d2d63ec673a849 (diff) |
add ability to wrap translated elements
-rw-r--r-- | src/i18n.tsx | 31 |
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") { |