I'm working with i18next for react https://github.com/i18next/react-i18next. I'm struggling to break lines within the string in my JSON language file.
This is what I already tried, which doesn't break a new line:
line: "This is a line. \n This is another line. \n Yet another line"
,
line: ("This is a line."+ <br/> + "This is another line. \n Yet another line")
,
line: ('This is a line. <br/> This is another line. \n Yet another line')
,
I obviously try to make a new line after each sentence. This is how I call it:
<TooltipLink onClick={() => {
this.toggleHelpTextDialog(t('test:test.line'));
}}/>
Any ideas? Thanks!
If you want to print a <br/> tag in react I wanted to point out that a neat workaround is to use the <Trans> component from i18next. const customInviteMessageByCreator = "DEMO APPOINTMENT<br/>This room is to test your video room."; You can write your variable wrapped in a Trans component like so:
for example you write below text in JSON language file. text:"Hello How are you? what are you doing?" and then in return part write
well, when call split method, try to create list and seperate from '\n' and with method map type each of them on paragraph so can break line ;))
You can do it with css white-space: pre-line;
& \n
in the translation text.
const root = document.getElementById('root');
i18next.init({
lng: 'en',
resources: {
en: {
translation: {
"key": "Hello world\nThis sentence should appear on the second line"
// ----------------^ new line char
}
}
}
}, function(err, t) {
// initialized and ready to go!
root.innerHTML = i18next.t('key');
});
#root {
white-space: pre-line;
}
<script src="https://unpkg.com/[email protected]/dist/umd/i18next.min.js"></script>
<div id="root"></div>
You also can do it with CSS that's very easy to do:
CSS:
#root {
white-space: pre-line;
}
HTML:
<script src="https://unpkg.com/[email protected]/dist/umd/i18next.min.js"></script>
<div id="root"></div>
It will interpret the \n in the translation JSON as a linebreak!!!
for example you write below text in JSON language file.
text:"Hello \n How are you? \n what are you doing?"
and then in return part write
<div id='app'><div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<script>
render() {
return (
text.split('\n').map(c => {
return ( <p> {c} </p>)
});
)
}
ReactDOM.render(
<BreakLine / >
document.getElementById('app')
)
</script>
well, when call split method, try to create list and seperate from '\n' and with method map type each of them on paragraph so can break line ;))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With