reactjs - React Typescript:带有 JSX 的文本翻译文件
问题描述
我有一个包含所有要翻译的文本的文件...
///translations.txt
const TEXT: { [x: string]: { [y: string]: string } } = { //<== is JSX a string?
en: {
joinNow: <React.Fragment>Join <b>Now<b/></React.Fragment>,
signUp: <React.Fragment>Sign <b>Up<b/></React.Fragment>,
},
};
然后我导入它..
import { TEXT } from '../../translations';
const txt = TEXT[global.language]; // global.language = en
return (
{txt.joinNow} // <== I want the word `now` to be inbold
...
解决方案
看看危险的setinnerhtml https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml
这个道具将允许您从变量呈现 html。
// retrieve your property to render
const joinNow = '<React.Fragment>Join <b>Now</b></React.Fragment>'
return (
<span dangerouslySetInnerHTML={ __html: joinNow }></span>
)
但是,鉴于这是一个展示细节,您应该考虑将翻译存储为纯文本,并使用组件中的 css 设置样式
推荐阅读
- youtube-dl - 如何设置快捷方式而不是键入命令“youtube-dl -F”的一部分
- matlab - 默认的“图例”功能被意外覆盖
- android - 如何在 MODE_NIGHT_FOLLOW_SYSTEM 上刷新 AppWidget?
- powershell - 对包含重复值的列表进行分组
- python - 将 .xls 转换为 .xlsx 以便在 openpyxl 问题中处理
- c++ - 在 Qt 中显示带有关闭按钮的图像缩略图
- c++ - 在 Qt5 应用程序上读取 CSV 文件时出现无限循环
- jenkins - 运行 jenkins 作业以使用 Ansible 模板将 java 应用程序部署到 tomcat 服务器时出错
- javascript - 将日期和每个类别的最新项目保存在数组中
- c# - C# While 循环仅适用于消息框