Custom JSX to React intl formattedMessage
up vote
1
down vote
favorite
I have a string which has a link inside. However, I cannot brake the string for translation purposes so I thought that by using 'FormattedMessage' I could pass some JSX into it like so:
<FormattedMessage
id= "CreateIdentity.error.generalError"
values={link}
/>
where link is:
const link =
<Link target="_blank" to={`${config.help}`}>
{formatMessage({id: "CreateIdentity.error.linkHelpPages"})}
</Link>;
where my translation string is:
"CreateIdentity.error.generalError": "You can try again, or {link} for more information";
Full component:
import React, {Fragment} from 'react';
import Link from 'react-router';
import PropTypes from 'prop-types';
import FormattedMessage from 'react-intl';
import {Alert} from '../Icons/Icons';
import {getFullConfig} from '../../../utils/getFullConfig';
const config = getFullConfig();
const GenericError = (props) => {
const {formatMessage, statusCode} = props;
const link =
<Link target="_blank" to={`${config.help}`}>
{formatMessage({id: "CreateIdentity.error.linkHelpPages"})}
</Link>;
return (
<Fragment>
<header>
{formatMessage({id: "CreateIdentity.error.generalErrorTitle"})}
</header>
<Alert className="alert" />
{/* {formatMessage({id: "CreateIdentity.error.generalError"}, {link})} */}
<FormattedMessage
id= "CreateIdentity.error.generalError"
values={{link}}
/>
<p>
{formatMessage({id: "CreateIdentity.error"})}
{statusCode}
</p>
</Fragment>
);
};
GenericError.propTypes = {
formatMessage: PropTypes.func.isRequired,
statusCode: PropTypes.number.isRequired
};
export default GenericError;
however the application the breaks:
index.js?92df:697 [React Intl] Error formatting message:
"CreateIdentity.error.generalError" for locale: "en" Error: The intl
string context variable 'link' was not provided to the string 'You can
try again, or {link} for more information'
javascript reactjs
add a comment |
up vote
1
down vote
favorite
I have a string which has a link inside. However, I cannot brake the string for translation purposes so I thought that by using 'FormattedMessage' I could pass some JSX into it like so:
<FormattedMessage
id= "CreateIdentity.error.generalError"
values={link}
/>
where link is:
const link =
<Link target="_blank" to={`${config.help}`}>
{formatMessage({id: "CreateIdentity.error.linkHelpPages"})}
</Link>;
where my translation string is:
"CreateIdentity.error.generalError": "You can try again, or {link} for more information";
Full component:
import React, {Fragment} from 'react';
import Link from 'react-router';
import PropTypes from 'prop-types';
import FormattedMessage from 'react-intl';
import {Alert} from '../Icons/Icons';
import {getFullConfig} from '../../../utils/getFullConfig';
const config = getFullConfig();
const GenericError = (props) => {
const {formatMessage, statusCode} = props;
const link =
<Link target="_blank" to={`${config.help}`}>
{formatMessage({id: "CreateIdentity.error.linkHelpPages"})}
</Link>;
return (
<Fragment>
<header>
{formatMessage({id: "CreateIdentity.error.generalErrorTitle"})}
</header>
<Alert className="alert" />
{/* {formatMessage({id: "CreateIdentity.error.generalError"}, {link})} */}
<FormattedMessage
id= "CreateIdentity.error.generalError"
values={{link}}
/>
<p>
{formatMessage({id: "CreateIdentity.error"})}
{statusCode}
</p>
</Fragment>
);
};
GenericError.propTypes = {
formatMessage: PropTypes.func.isRequired,
statusCode: PropTypes.number.isRequired
};
export default GenericError;
however the application the breaks:
index.js?92df:697 [React Intl] Error formatting message:
"CreateIdentity.error.generalError" for locale: "en" Error: The intl
string context variable 'link' was not provided to the string 'You can
try again, or {link} for more information'
javascript reactjs
The syntax of your translation string is certainly incorrect. You need to use a template literal to format a string with a variable. You may also consider setting it to some JSX depending on how yourFormattedMessagecomponent is written.
– eicksl
Nov 9 at 16:09
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I have a string which has a link inside. However, I cannot brake the string for translation purposes so I thought that by using 'FormattedMessage' I could pass some JSX into it like so:
<FormattedMessage
id= "CreateIdentity.error.generalError"
values={link}
/>
where link is:
const link =
<Link target="_blank" to={`${config.help}`}>
{formatMessage({id: "CreateIdentity.error.linkHelpPages"})}
</Link>;
where my translation string is:
"CreateIdentity.error.generalError": "You can try again, or {link} for more information";
Full component:
import React, {Fragment} from 'react';
import Link from 'react-router';
import PropTypes from 'prop-types';
import FormattedMessage from 'react-intl';
import {Alert} from '../Icons/Icons';
import {getFullConfig} from '../../../utils/getFullConfig';
const config = getFullConfig();
const GenericError = (props) => {
const {formatMessage, statusCode} = props;
const link =
<Link target="_blank" to={`${config.help}`}>
{formatMessage({id: "CreateIdentity.error.linkHelpPages"})}
</Link>;
return (
<Fragment>
<header>
{formatMessage({id: "CreateIdentity.error.generalErrorTitle"})}
</header>
<Alert className="alert" />
{/* {formatMessage({id: "CreateIdentity.error.generalError"}, {link})} */}
<FormattedMessage
id= "CreateIdentity.error.generalError"
values={{link}}
/>
<p>
{formatMessage({id: "CreateIdentity.error"})}
{statusCode}
</p>
</Fragment>
);
};
GenericError.propTypes = {
formatMessage: PropTypes.func.isRequired,
statusCode: PropTypes.number.isRequired
};
export default GenericError;
however the application the breaks:
index.js?92df:697 [React Intl] Error formatting message:
"CreateIdentity.error.generalError" for locale: "en" Error: The intl
string context variable 'link' was not provided to the string 'You can
try again, or {link} for more information'
javascript reactjs
I have a string which has a link inside. However, I cannot brake the string for translation purposes so I thought that by using 'FormattedMessage' I could pass some JSX into it like so:
<FormattedMessage
id= "CreateIdentity.error.generalError"
values={link}
/>
where link is:
const link =
<Link target="_blank" to={`${config.help}`}>
{formatMessage({id: "CreateIdentity.error.linkHelpPages"})}
</Link>;
where my translation string is:
"CreateIdentity.error.generalError": "You can try again, or {link} for more information";
Full component:
import React, {Fragment} from 'react';
import Link from 'react-router';
import PropTypes from 'prop-types';
import FormattedMessage from 'react-intl';
import {Alert} from '../Icons/Icons';
import {getFullConfig} from '../../../utils/getFullConfig';
const config = getFullConfig();
const GenericError = (props) => {
const {formatMessage, statusCode} = props;
const link =
<Link target="_blank" to={`${config.help}`}>
{formatMessage({id: "CreateIdentity.error.linkHelpPages"})}
</Link>;
return (
<Fragment>
<header>
{formatMessage({id: "CreateIdentity.error.generalErrorTitle"})}
</header>
<Alert className="alert" />
{/* {formatMessage({id: "CreateIdentity.error.generalError"}, {link})} */}
<FormattedMessage
id= "CreateIdentity.error.generalError"
values={{link}}
/>
<p>
{formatMessage({id: "CreateIdentity.error"})}
{statusCode}
</p>
</Fragment>
);
};
GenericError.propTypes = {
formatMessage: PropTypes.func.isRequired,
statusCode: PropTypes.number.isRequired
};
export default GenericError;
however the application the breaks:
index.js?92df:697 [React Intl] Error formatting message:
"CreateIdentity.error.generalError" for locale: "en" Error: The intl
string context variable 'link' was not provided to the string 'You can
try again, or {link} for more information'
javascript reactjs
javascript reactjs
asked Nov 9 at 14:57
Alex
1,68773777
1,68773777
The syntax of your translation string is certainly incorrect. You need to use a template literal to format a string with a variable. You may also consider setting it to some JSX depending on how yourFormattedMessagecomponent is written.
– eicksl
Nov 9 at 16:09
add a comment |
The syntax of your translation string is certainly incorrect. You need to use a template literal to format a string with a variable. You may also consider setting it to some JSX depending on how yourFormattedMessagecomponent is written.
– eicksl
Nov 9 at 16:09
The syntax of your translation string is certainly incorrect. You need to use a template literal to format a string with a variable. You may also consider setting it to some JSX depending on how your
FormattedMessage component is written.– eicksl
Nov 9 at 16:09
The syntax of your translation string is certainly incorrect. You need to use a template literal to format a string with a variable. You may also consider setting it to some JSX depending on how your
FormattedMessage component is written.– eicksl
Nov 9 at 16:09
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53228131%2fcustom-jsx-to-react-intl-formattedmessage%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
The syntax of your translation string is certainly incorrect. You need to use a template literal to format a string with a variable. You may also consider setting it to some JSX depending on how your
FormattedMessagecomponent is written.– eicksl
Nov 9 at 16:09