{"id":38139,"date":"2023-01-19T22:15:29","date_gmt":"2023-08-17T02:18:20","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8react%e4%b8%ad%e5%bf%bd%e7%95%a5i18n%e7%9a%84json%e5%af%bc%e5%87%ba%e8%ae%be%e7%bd%ae\/"},"modified":"2024-04-29T10:34:04","modified_gmt":"2024-04-29T02:34:04","slug":"%e5%9c%a8react%e4%b8%ad%e5%bf%bd%e7%95%a5i18n%e7%9a%84json%e5%af%bc%e5%87%ba%e8%ae%be%e7%bd%ae","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8react%e4%b8%ad%e5%bf%bd%e7%95%a5i18n%e7%9a%84json%e5%af%bc%e5%87%ba%e8%ae%be%e7%bd%ae\/","title":{"rendered":"\u5728React\u4e2d\u5ffd\u7565i18n\u7684JSON\u5bfc\u51fa\u8bbe\u7f6e"},"content":{"rendered":"<h1>\u5e94\u7528\u573a\u5408<\/h1>\n<p>\u7528create-react-app\u521b\u5efa\u7684\u9879\u76ee\uff0c\u5f53\u4f7f\u7528i18n-next\u8fdb\u884c\u591a\u8bed\u8a00\u5316\u65f6\uff0c\u624b\u52a8\u7f16\u5199*.json\u7684\u7ffb\u8bd1\u6570\u636e\u5f88\u9ebb\u70e6\u3002\u5e0c\u671b\u80fd\u81ea\u52a8\u627e\u5230*.tsx\u6216*.js\u4e2d\u9700\u8981\u7ffb\u8bd1\u7684\u90e8\u5206\uff0c\u5e76\u8ffd\u52a0\u81f3*.json\u4e2d\uff01<\/p>\n<p>\u8fd9\u6b21\u4ecb\u7ecd\u7684\u4f8b\u5b50\u662f\u4e00\u4e2a\u53ea\u6d89\u53ca\u524d\u7aef\u90e8\u5206\u7684\u975e\u5e38\u7b80\u5355\u7684SPA\u3002<br \/>\ni18n-next\u662f\u4e00\u4e2a\u5f88\u5b9e\u7528\u7684\u5de5\u5177\uff0c\u5b83\u53ef\u4ee5\u5f15\u5165locize\uff0c\u4e5f\u53ef\u4ee5\u7528\u4e8e\u540e\u7aef\u5f00\u53d1\uff0c\u4e86\u89e3\u4e00\u4e0b\u4f1a\u5f88\u5212\u7b97\u3002<\/p>\n<h1>\u8ff7\u4e0a\u763e\u7684\u70b9<\/h1>\n<p>\u6211\u5148\u89e3\u91ca\u4e00\u4e0b\u9677\u9631\u70b9\u3002<\/p>\n<p>\u6700\u8fd1\u4f3c\u4e4e\u5f88\u6d41\u884cbabel-plugin-i18next-extract\u63d2\u4ef6\u3002\u7136\u800c\uff0c\u5fc5\u987b\u66f4\u6539webpack\u7684\u914d\u7f6e\u3002\u5982\u679c\u4f60\u6b63\u5728\u4f7f\u7528create-react-app\u521b\u5efa\u5e94\u7528\u7a0b\u5e8f\uff0c\u53ef\u4ee5\u901a\u8fc7\u4f7f\u7528\u547d\u4ee4npm eject\u6765\u5b9e\u73b0\u66f4\u6539webpack\u914d\u7f6e\uff0c\u4f46\u8fd9\u662f\u4e00\u4e2a\u4e0d\u53ef\u9006\u7684\u64cd\u4f5c\uff0c\u4e5f\u4e0d\u662f\u4e00\u4e2a\u53ef\u884c\u7684\u89e3\u51b3\u65b9\u6848\u3002\u56e0\u6b64\uff0c\u6700\u597d\u4e0d\u8981\u7ee7\u7eed\u4f7f\u7528babel-plugin-i18next-extract\u3002\u76f8\u53cd\uff0c\u63a8\u8350\u7684\u662f\u5b98\u65b9\u6587\u6863\u4e2d\u63d0\u5230\u7684i18next-parser\u3002<\/p>\n<p>\u5728\u63d0\u53d6\u5de5\u5177\u4e2d\u6211\u4eec\u4e5f\u63d0\u5230\u4e86i18next-parser\u3002<\/p>\n<p>\u9996\u5148\uff0c\u516c\u5f0f\u6587\u4ef6\u4e2d\u63d0\u5230\u7684\u662fi18next-parser\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"n\">npm<\/span> <span class=\"nx\">install<\/span> <span class=\"nt\">-g<\/span> <span class=\"nx\">i18next-parser<\/span>\r\n<\/code><\/pre>\n<h1>\u8bbe\u5b9a<\/h1>\n<p>\u53c2\u8003\u516c\u5f0f\u6587\u6863\uff0c\u5199\u4e0bi18next-parser\u7684\u914d\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"kr\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">exports<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"na\">locales<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"dl\">'<\/span><span class=\"s1\">en<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">ja<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">cn<\/span><span class=\"dl\">'<\/span><span class=\"p\">],<\/span>\r\n    <span class=\"na\">output<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">src\/locales\/$LOCALE\/$NAMESPACE.json<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">locale: \u6b32\u3057\u3044\u5206\u3060\u3051\u8a00\u8a9e\u3092\u8ffd\u8a18<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">output: \u4f4d\u7f6e\u304csrc\u306e\u4e2d\u3067\u306a\u3044\u3068\u3001tsx\u304b\u3089import\u51fa\u6765\u306a\u3044\u306e\u3067\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u3092\u4e0a\u66f8\u304d<\/ul>\n<p>\u8bbe\u7f6enpm\u7684\u811a\u672c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nl\">\"scripts\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nl\">\"i18next-extract\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"i18next 'src\/**\/*.{tsx,ts}'\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u73b0\u5728\u8bbe\u7f6e\u5b8c\u6210\u4e86\uff0c\u6211\u4f1a\u5c06\u7ffb\u8bd1\u6587\u4ef6\u8f93\u51fa\u4e3aJSON\u683c\u5f0f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"n\">npm<\/span> <span class=\"nx\">run<\/span> <span class=\"nx\">i18next-extract<\/span>\r\n<\/code><\/pre>\n<p>\u7136\u540e\uff0c\u5e94\u8be5\u4ee5\u4ee5\u4e0b\u7684\u7ed3\u6784\u8fdb\u884c\u8f93\u51fa\u3002<\/p>\n<pre class=\"post-pre\"><code>.\/\r\n\u2503\r\n\u2523\u2501 src\r\n\u2503    \u2523\u2501 locales\r\n\u2503    \u2503    \u2523\u2501 cn\r\n\u2503    \u2503    \u2503    \u2517\u2501 translation.json\r\n\u2503    \u2503    \u2523\u2501 en\r\n\u2503    \u2503    \u2503    \u2517\u2501 translation.json\r\n\u2503    \u2503    \u2517\u2501 jp\r\n\u2503    \u2503         \u2517\u2501 translation.json\r\n<\/code><\/pre>\n<h1>\u4ee3\u7801\u66f4\u6539 \u0302<\/h1>\n<p>\u4ee5\u4e0b\u662f\u4e00\u79cd\u53ef\u80fd\u7684\u4e2d\u6587\u7ffb\u8bd1\uff1a<br \/>\n\u4ece\u8fd9\u91cc\u5f00\u59cb\uff0c\u6211\u4eec\u4f1a\u5728\u6e90\u4ee3\u7801\u4e2d\u6dfb\u52a0\u7528\u4e8e\u7ffb\u8bd1\u7684\u914d\u7f6e\u3002<br \/>\n\u9996\u5148\uff0c\u5728\u9876\u5c42\u7684React\u6587\u4ef6\u4e2d\u7f16\u5199i18n\u7684\u521d\u59cb\u5316\u8bbe\u7f6e\u3002<br \/>\n\u540c\u65f6\uff0c\u5c06\u4e4b\u524d\u8f93\u51fa\u7684translation.json\u6587\u4ef6\u8fdb\u884c\u914d\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">import<\/span> <span class=\"nx\">React<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nx\">ReactDOM<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react-dom<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/index.sass<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nx\">reportWebVitals<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/reportWebVitals<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nx\">App<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">.\/components\/App<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">createBrowserHistory<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">history<\/span><span class=\"dl\">\"<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">Router<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react-router<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nx\">HeaderApp<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/components\/header<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"c1\">\/\/ i18n<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nx\">i18next<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">i18next<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">initReactI18next<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react-i18next<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n\r\n<span class=\"k\">import<\/span> <span class=\"nx\">jaCommon<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/locales\/ja\/translation.json<\/span><span class=\"dl\">'<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nx\">enCommon<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/locales\/en\/translation.json<\/span><span class=\"dl\">'<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nx\">cnCommon<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/locales\/cn\/translation.json<\/span><span class=\"dl\">'<\/span>\r\n\r\n<span class=\"nx\">i18next<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">initReactI18next<\/span><span class=\"p\">).<\/span><span class=\"nf\">init<\/span><span class=\"p\">({<\/span>\r\n  <span class=\"na\">debug<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"na\">resources<\/span> <span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"na\">ja<\/span><span class=\"p\">:{<\/span><span class=\"na\">common<\/span><span class=\"p\">:<\/span><span class=\"nx\">jaCommon<\/span><span class=\"p\">},<\/span>\r\n    <span class=\"na\">en<\/span><span class=\"p\">:{<\/span><span class=\"na\">common<\/span><span class=\"p\">:<\/span><span class=\"nx\">enCommon<\/span><span class=\"p\">},<\/span>\r\n    <span class=\"na\">cn<\/span><span class=\"p\">:{<\/span><span class=\"na\">common<\/span><span class=\"p\">:<\/span><span class=\"nx\">cnCommon<\/span><span class=\"p\">},<\/span>\r\n  <span class=\"p\">},<\/span>\r\n  <span class=\"na\">lng<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">ja<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"na\">fallbackLng<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">ja<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"na\">keySeparator<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"na\">interpolation<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span> <span class=\"na\">escapeValue<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span> <span class=\"p\">},<\/span>\r\n<span class=\"p\">});<\/span>\r\n\r\n<span class=\"kd\">const<\/span> <span class=\"nx\">history<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">createBrowserHistory<\/span><span class=\"p\">({<\/span> <span class=\"na\">basename<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">\/<\/span><span class=\"dl\">'<\/span> <span class=\"p\">});<\/span>\r\n<span class=\"nx\">ReactDOM<\/span><span class=\"p\">.<\/span><span class=\"nf\">render<\/span><span class=\"p\">(<\/span>\r\n  <span class=\"p\">&lt;<\/span><span class=\"nc\">React<\/span><span class=\"p\">.<\/span><span class=\"nc\">StrictMode<\/span><span class=\"p\">&gt;<\/span>\r\n    <span class=\"p\">&lt;<\/span><span class=\"nc\">Router<\/span> <span class=\"na\">history<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">history<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\r\n      <span class=\"p\">&lt;<\/span><span class=\"nc\">HeaderApp<\/span><span class=\"p\">\/&gt;<\/span>\r\n      <span class=\"p\">&lt;<\/span><span class=\"nc\">App<\/span><span class=\"p\">&gt;&lt;\/<\/span><span class=\"nc\">App<\/span><span class=\"p\">&gt;<\/span>\r\n    <span class=\"p\">&lt;\/<\/span><span class=\"nc\">Router<\/span><span class=\"p\">&gt;<\/span>\r\n  <span class=\"p\">&lt;\/<\/span><span class=\"nc\">React<\/span><span class=\"p\">.<\/span><span class=\"nc\">StrictMode<\/span><span class=\"p\">&gt;,<\/span>\r\n  <span class=\"nb\">document<\/span><span class=\"p\">.<\/span><span class=\"nf\">getElementById<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">root<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">);<\/span>\r\n\r\n<span class=\"nf\">reportWebVitals<\/span><span class=\"p\">(<\/span><span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nx\">log<\/span><span class=\"p\">);<\/span>\r\n<\/code><\/pre>\n<p>\u7684\u5b9a\u4e49\u5982\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">import<\/span> <span class=\"nx\">React<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nx\">i18next<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">i18next<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useTranslation<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react-i18next<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useEffect<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react<\/span><span class=\"dl\">'<\/span>\r\n\r\n<span class=\"k\">import<\/span> <span class=\"nx\">ja_Trans<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/locales\/ja\/maincontent.json<\/span><span class=\"dl\">'<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nx\">en_Trans<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/locales\/en\/maincontent.json<\/span><span class=\"dl\">'<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nx\">cn_Trans<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/locales\/cn\/maincontent.json<\/span><span class=\"dl\">'<\/span>\r\n\r\n<span class=\"k\">export<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">Translate<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">t<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useTranslation<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">maincontent<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\r\n    <span class=\"nf\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nx\">i18next<\/span><span class=\"p\">.<\/span><span class=\"nf\">addResources<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">ja<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">maincontent<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">ja_Trans<\/span><span class=\"p\">);<\/span>\r\n        <span class=\"nx\">i18next<\/span><span class=\"p\">.<\/span><span class=\"nf\">addResources<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">en<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">maincontent<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">en_Trans<\/span><span class=\"p\">);<\/span>\r\n        <span class=\"nx\">i18next<\/span><span class=\"p\">.<\/span><span class=\"nf\">addResources<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">cn<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">maincontent<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">cn_Trans<\/span><span class=\"p\">);<\/span>\r\n    <span class=\"p\">},<\/span> <span class=\"p\">[])<\/span>\r\n    <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\r\n        <span class=\"p\">&lt;<\/span><span class=\"nc\">React<\/span><span class=\"p\">.<\/span><span class=\"nc\">StrictMode<\/span><span class=\"p\">&gt;<\/span>\r\n             <span class=\"p\">&lt;<\/span><span class=\"nt\">p<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">{<\/span><span class=\"nf\">t<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">message<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span><span class=\"p\">&lt;\/<\/span><span class=\"nt\">p<\/span><span class=\"p\">&gt;<\/span>\r\n        <span class=\"p\">&lt;\/<\/span><span class=\"nc\">React<\/span><span class=\"p\">.<\/span><span class=\"nc\">StrictMode<\/span><span class=\"p\">&gt;<\/span>\r\n    <span class=\"p\">);<\/span>\r\n<span class=\"p\">}<\/span>\r\n<span class=\"kd\">class<\/span> <span class=\"nc\">App<\/span> <span class=\"kd\">extends<\/span> <span class=\"nc\">React<\/span><span class=\"p\">.<\/span><span class=\"nx\">Component<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nf\">render<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nc\">Translate<\/span><span class=\"p\">\/&gt;;<\/span>\r\n    <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"nx\">App<\/span><span class=\"p\">;<\/span>\r\n<\/code><\/pre>\n<p>\u53ea\u6709\u8fd9\u6837\u8fd8\u65e0\u6cd5\u5207\u6362\u8bed\u8a00\u3002\u63a5\u4e0b\u6765\uff0c\u6211\u5c06\u8be6\u7ec6\u4ecb\u7ecd\u5728\u4e4b\u524d\u7684index.tsx\u4e2d\u5199\u7684\u7684\u7ec6\u8282\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">import<\/span> <span class=\"nx\">React<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">FunctionComponent<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">react<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">LanugageSelector<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">.\/LanguageSelector<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useTranslation<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react-i18next<\/span><span class=\"dl\">'<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useState<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useEffect<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n\r\n<span class=\"kd\">const<\/span> <span class=\"nx\">HeaderApp<\/span><span class=\"p\">:<\/span> <span class=\"nx\">FunctionComponent<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">t<\/span><span class=\"p\">,<\/span> <span class=\"nx\">i18n<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useTranslation<\/span><span class=\"p\">();<\/span>\r\n    <span class=\"kd\">const<\/span> <span class=\"nx\">languages<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[{<\/span> <span class=\"na\">code<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">ja<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">JAPANESE<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">},<\/span> <span class=\"p\">{<\/span> <span class=\"na\">code<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">en<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">ENGLISH<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">},<\/span> <span class=\"p\">{<\/span> <span class=\"na\">code<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">cn<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">CHINESE<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">}];<\/span>\r\n    <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">currentLang<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setCurrentLang<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">ja<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\r\n    <span class=\"c1\">\/\/ Change language of i18n<\/span>\r\n    <span class=\"nf\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nx\">i18n<\/span><span class=\"p\">.<\/span><span class=\"nf\">changeLanguage<\/span><span class=\"p\">(<\/span><span class=\"nx\">currentLang<\/span><span class=\"p\">);<\/span>\r\n    <span class=\"p\">},<\/span> <span class=\"p\">[<\/span><span class=\"nx\">currentLang<\/span><span class=\"p\">,<\/span> <span class=\"nx\">i18n<\/span><span class=\"p\">])<\/span>\r\n    <span class=\"c1\">\/\/ Handler<\/span>\r\n    <span class=\"kd\">const<\/span> <span class=\"nx\">handleLanguageSelectionChange<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"na\">lang<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nf\">setCurrentLang<\/span><span class=\"p\">(<\/span><span class=\"nx\">lang<\/span><span class=\"p\">);<\/span>\r\n    <span class=\"p\">}<\/span>\r\n    <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\r\n        <span class=\"p\">&lt;<\/span><span class=\"nc\">React<\/span><span class=\"p\">.<\/span><span class=\"nc\">StrictMode<\/span><span class=\"p\">&gt;<\/span>\r\n            <span class=\"p\">&lt;<\/span><span class=\"nt\">header<\/span><span class=\"p\">&gt;<\/span>\r\n                <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\r\n                    <span class=\"p\">&lt;<\/span><span class=\"nt\">ul<\/span><span class=\"p\">&gt;<\/span>\r\n                        <span class=\"p\">&lt;<\/span><span class=\"nc\">LanugageSelector<\/span> <span class=\"na\">languages<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">languages<\/span><span class=\"si\">}<\/span> <span class=\"na\">selectedLanguage<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">currentLang<\/span><span class=\"si\">}<\/span> <span class=\"na\">onLanguageSelectionChange<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">handleLanguageSelectionChange<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\r\n                    <span class=\"p\">&lt;\/<\/span><span class=\"nt\">ul<\/span><span class=\"p\">&gt;<\/span>\r\n                <span class=\"p\">&lt;\/<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\r\n            <span class=\"p\">&lt;\/<\/span><span class=\"nt\">header<\/span><span class=\"p\">&gt;<\/span>\r\n        <span class=\"p\">&lt;\/<\/span><span class=\"nc\">React<\/span><span class=\"p\">.<\/span><span class=\"nc\">StrictMode<\/span><span class=\"p\">&gt;<\/span>\r\n    <span class=\"p\">);<\/span>\r\n\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"nx\">HeaderApp<\/span><span class=\"p\">;<\/span>\r\n<\/code><\/pre>\n<p>\u7684\u5b9a\u4e49\u5982\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">import<\/span> <span class=\"nx\">React<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">FunctionComponent<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">react<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\r\n\r\n<span class=\"k\">export<\/span> <span class=\"kd\">type<\/span> <span class=\"nx\">LanguageSelectorProps<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"na\">languages<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span> <span class=\"na\">code<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span> <span class=\"p\">}[],<\/span>\r\n    <span class=\"na\">selectedLanguage<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"na\">onLanguageSelectionChange<\/span><span class=\"p\">:<\/span> <span class=\"p\">(<\/span><span class=\"na\">lang<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"k\">void<\/span><span class=\"p\">,<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">LanugageSelector<\/span><span class=\"p\">:<\/span> <span class=\"nx\">FunctionComponent<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">LanguageSelectorProps<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">props<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"kd\">const<\/span> <span class=\"nx\">langs<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">props<\/span><span class=\"p\">.<\/span><span class=\"nx\">languages<\/span><span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">((<\/span><span class=\"nx\">lang<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"k\">return <\/span><span class=\"p\">(<\/span><span class=\"nx\">lang<\/span><span class=\"p\">.<\/span><span class=\"nx\">code<\/span> <span class=\"o\">===<\/span> <span class=\"nx\">props<\/span><span class=\"p\">.<\/span><span class=\"nx\">selectedLanguage<\/span><span class=\"p\">)<\/span> <span class=\"p\">?<\/span> <span class=\"dl\">''<\/span> <span class=\"p\">:<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">li<\/span><span class=\"p\">&gt;&lt;<\/span><span class=\"nt\">p<\/span> <span class=\"na\">onClick<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">props<\/span><span class=\"p\">.<\/span><span class=\"nf\">onLanguageSelectionChange<\/span><span class=\"p\">(<\/span><span class=\"nx\">lang<\/span><span class=\"p\">.<\/span><span class=\"nx\">code<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">{<\/span><span class=\"nx\">lang<\/span><span class=\"p\">.<\/span><span class=\"nx\">name<\/span><span class=\"si\">}<\/span><span class=\"p\">&lt;\/<\/span><span class=\"nt\">p<\/span><span class=\"p\">&gt;&lt;\/<\/span><span class=\"nt\">li<\/span><span class=\"p\">&gt;<\/span>\r\n    <span class=\"p\">});<\/span>\r\n\r\n    <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\r\n        <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"i18n\"<\/span><span class=\"p\">&gt;<\/span>\r\n            <span class=\"si\">{<\/span><span class=\"nx\">langs<\/span><span class=\"si\">}<\/span>\r\n        <span class=\"p\">&lt;\/<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\r\n    <span class=\"p\">);<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u901a\u8fc7\uff0c\u663e\u793a\u82f1\u8bed\u3001\u65e5\u8bed\u548c\u4e2d\u6587\u3002\u70b9\u51fb\u5b83\u5c06\u5207\u6362\u663e\u793a\u3002\u4f7f\u7528\u4e09\u5143\u8fd0\u7b97\u7b26\uff0c\u6d88\u53bb\u4e86\u5f53\u524d\u663e\u793a\u7684\u8bed\u8a00\u3002<\/p>\n<h1>\u518d\u6b21\u63d0\u53d6<\/h1>\n<p>\u5982\u679c\u80fd\u5199\u5230\u8fd9\u4e2a\u5730\u65b9\uff0c\u90a3\u5c31\u518d\u6b21\u6267\u884c\u4e4b\u524d\u7684\u547d\u4ee4\u8bd5\u8bd5\u770b\u5427\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"n\">npm<\/span> <span class=\"nx\">run<\/span> <span class=\"nx\">i18next-extract<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>.\/\r\n\u2503\r\n\u2523\u2501 src\r\n\u2503    \u2523\u2501 locales\r\n\u2503    \u2503    \u2523\u2501 cn\r\n\u2503    \u2503    \u2503    \u2523\u2501 maincontent.json\r\n\u2503    \u2503    \u2503    \u2517\u2501 translation.json\r\n\u2503    \u2503    \u2523\u2501 en\r\n\u2503    \u2503    \u2503    \u2523\u2501 maincontent.json\r\n\u2503    \u2503    \u2503    \u2517\u2501 translation.json\r\n\u2503    \u2503    \u2517\u2501 jp\r\n\u2503    \u2503    \u2503    \u2523\u2501 maincontent.json\r\n\u2503    \u2503         \u2517\u2501 translation.json\r\n<\/code><\/pre>\n<p>\u53ea\u8981\u4f60\u80fd\u8d70\u5230\u8fd9\u4e00\u6b65\uff0c\u606d\u559c\u4f60\uff01\u63a5\u4e0b\u6765\u53ea\u9700\u8981\u4e0d\u65ad\u5730\u5199\u7ffb\u8bd1\u5c31\u53ef\u4ee5\u4e86\u3002<\/p>\n<h1>\u603b\u7ed3<\/h1>\n<p>\u5728npm start\u7684\u8fc7\u7a0b\u4e2d\uff0c\u5982\u4f55\u8fd0\u884cnpm run i18next-extract\u5462\uff1f<\/p>\n<p>\u80dc\u5229\u8005\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5e94\u7528\u573a\u5408 \u7528create-react-app\u521b\u5efa\u7684\u9879\u76ee\uff0c\u5f53\u4f7f\u7528i18n-next\u8fdb\u884c\u591a\u8bed\u8a00\u5316\u65f6\uff0c\u624b\u52a8\u7f16\u5199*.j [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-38139","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5728React\u4e2d\u5ffd\u7565i18n\u7684JSON\u5bfc\u51fa\u8bbe\u7f6e - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728react\u4e2d\u5ffd\u7565i18n\u7684json\u5bfc\u51fa\u8bbe\u7f6e\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5728React\u4e2d\u5ffd\u7565i18n\u7684JSON\u5bfc\u51fa\u8bbe\u7f6e\" \/>\n<meta property=\"og:description\" content=\"\u5e94\u7528\u573a\u5408 \u7528create-react-app\u521b\u5efa\u7684\u9879\u76ee\uff0c\u5f53\u4f7f\u7528i18n-next\u8fdb\u884c\u591a\u8bed\u8a00\u5316\u65f6\uff0c\u624b\u52a8\u7f16\u5199*.j [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728react\u4e2d\u5ffd\u7565i18n\u7684json\u5bfc\u51fa\u8bbe\u7f6e\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-17T02:18:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T02:34:04+00:00\" \/>\n<meta name=\"author\" content=\"\u9038, \u79d1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u9038, \u79d1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8react%e4%b8%ad%e5%bf%bd%e7%95%a5i18n%e7%9a%84json%e5%af%bc%e5%87%ba%e8%ae%be%e7%bd%ae\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8react%e4%b8%ad%e5%bf%bd%e7%95%a5i18n%e7%9a%84json%e5%af%bc%e5%87%ba%e8%ae%be%e7%bd%ae\/\",\"name\":\"\u5728React\u4e2d\u5ffd\u7565i18n\u7684JSON\u5bfc\u51fa\u8bbe\u7f6e - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-08-17T02:18:20+00:00\",\"dateModified\":\"2024-04-29T02:34:04+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8react%e4%b8%ad%e5%bf%bd%e7%95%a5i18n%e7%9a%84json%e5%af%bc%e5%87%ba%e8%ae%be%e7%bd%ae\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8react%e4%b8%ad%e5%bf%bd%e7%95%a5i18n%e7%9a%84json%e5%af%bc%e5%87%ba%e8%ae%be%e7%bd%ae\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8react%e4%b8%ad%e5%bf%bd%e7%95%a5i18n%e7%9a%84json%e5%af%bc%e5%87%ba%e8%ae%be%e7%bd%ae\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5728React\u4e2d\u5ffd\u7565i18n\u7684JSON\u5bfc\u51fa\u8bbe\u7f6e\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\",\"name\":\"\u9038, \u79d1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"caption\":\"\u9038, \u79d1\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8react%e4%b8%ad%e5%bf%bd%e7%95%a5i18n%e7%9a%84json%e5%af%bc%e5%87%ba%e8%ae%be%e7%bd%ae\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5728React\u4e2d\u5ffd\u7565i18n\u7684JSON\u5bfc\u51fa\u8bbe\u7f6e - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728react\u4e2d\u5ffd\u7565i18n\u7684json\u5bfc\u51fa\u8bbe\u7f6e\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5728React\u4e2d\u5ffd\u7565i18n\u7684JSON\u5bfc\u51fa\u8bbe\u7f6e","og_description":"\u5e94\u7528\u573a\u5408 \u7528create-react-app\u521b\u5efa\u7684\u9879\u76ee\uff0c\u5f53\u4f7f\u7528i18n-next\u8fdb\u884c\u591a\u8bed\u8a00\u5316\u65f6\uff0c\u624b\u52a8\u7f16\u5199*.j [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728react\u4e2d\u5ffd\u7565i18n\u7684json\u5bfc\u51fa\u8bbe\u7f6e\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-08-17T02:18:20+00:00","article_modified_time":"2024-04-29T02:34:04+00:00","author":"\u9038, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u9038, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"3 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8react%e4%b8%ad%e5%bf%bd%e7%95%a5i18n%e7%9a%84json%e5%af%bc%e5%87%ba%e8%ae%be%e7%bd%ae\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8react%e4%b8%ad%e5%bf%bd%e7%95%a5i18n%e7%9a%84json%e5%af%bc%e5%87%ba%e8%ae%be%e7%bd%ae\/","name":"\u5728React\u4e2d\u5ffd\u7565i18n\u7684JSON\u5bfc\u51fa\u8bbe\u7f6e - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-08-17T02:18:20+00:00","dateModified":"2024-04-29T02:34:04+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8react%e4%b8%ad%e5%bf%bd%e7%95%a5i18n%e7%9a%84json%e5%af%bc%e5%87%ba%e8%ae%be%e7%bd%ae\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8react%e4%b8%ad%e5%bf%bd%e7%95%a5i18n%e7%9a%84json%e5%af%bc%e5%87%ba%e8%ae%be%e7%bd%ae\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8react%e4%b8%ad%e5%bf%bd%e7%95%a5i18n%e7%9a%84json%e5%af%bc%e5%87%ba%e8%ae%be%e7%bd%ae\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5728React\u4e2d\u5ffd\u7565i18n\u7684JSON\u5bfc\u51fa\u8bbe\u7f6e"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487","name":"\u9038, \u79d1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","caption":"\u9038, \u79d1"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8react%e4%b8%ad%e5%bf%bd%e7%95%a5i18n%e7%9a%84json%e5%af%bc%e5%87%ba%e8%ae%be%e7%bd%ae\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/38139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=38139"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/38139\/revisions"}],"predecessor-version":[{"id":84751,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/38139\/revisions\/84751"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=38139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=38139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=38139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}