...
HTML values are kept out of the locale files
HTML values within translation key text can decrease readability.
Hard coded text is not used outside the locale files
Using hard coded text within the <Trans> component, means the text has to be maintained in two places. Therefore, we should avoid using hard coded text outside the locale JSON files for easy maintenance.
Links used in the home page are kept inside the homeConfig.ts file
This is for easy alteration, if links happen to change
Example: Adding a link with the <Trans> component
Our plain sentence in our JSON file, without any markup:
...
Code Block | ||
---|---|---|
| ||
<Link href='https://www.google.com/'>{t('hello_msg')}</Link> |
Example 2: Adding <strong> to a word in a sentence
Our key in the JSON file:
Code Block | ||
---|---|---|
| ||
"validation_missing_values": "The columns “Local code” and “Local meaning” must contain data. One or more cells in these columns is empty. Please fix and retry." |
Now say we want to make the word “local code” and “local meaning” bold. To do this we would use the <Trans> component again in the same way we did with links. We use i18nkey
as a prop to state the key. We then use the components
prop to reference the HTML value. Any name can be used here to represent the <strong>
HTML. In this case, I have used the word ‘bold’ as it makes it clear what the HTML represents.
Code Block |
---|
<Trans
i18nKey="mappings.validation_missing_values"
components={{bold: <strong/>}}>
</Trans> |
Then, in the JSON file, the key is altered to include the HTML.
Code Block |
---|
"validation_missing_values": "The columns <bold>“Local code”</bold> and <bold>“Local meaning”</bold> must contain data. One or more cells in these columns is empty. Please fix and retry." |