diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 46605b4d..c3addd3f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -924,6 +924,8 @@ importers: nodemon: ^2.0.20 npm-run-all: ^4.1.5 ra-data-json-server: ^4.6.3 + ra-i18n-polyglot: ^4.7.0 + ra-language-chinese: ^2.0.10 react: ^18.2.0 react-admin: ^4.6.3 react-dom: ^18.2.0 @@ -952,6 +954,8 @@ importers: md5: 2.3.0 morgan: 1.10.0 ra-data-json-server: 4.6.3_7gebip3sgfc5uoqbhvi5xascza + ra-i18n-polyglot: 4.7.0_7gebip3sgfc5uoqbhvi5xascza + ra-language-chinese: 2.0.10 react: 18.2.0 react-admin: 4.6.3_ib3m5ricvtkl2cll7qpr2f6lvq react-dom: 18.2.0_react@18.2.0 @@ -12759,14 +12763,16 @@ packages: resolution: {integrity: sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==} dev: false - /@types/configstore/6.0.0: - resolution: {integrity: sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==} /@types/compression/1.7.2: resolution: {integrity: sha512-lwEL4M/uAGWngWFLSG87ZDr2kLrbuR8p7X+QZB1OQlT+qkHsCPDVFnHPyXf4Vyl4yDDorNY+mAhosxkCvppatg==} dependencies: '@types/express': 4.17.15 dev: true + /@types/configstore/6.0.0: + resolution: {integrity: sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==} + dev: true + /@types/connect-history-api-fallback/1.3.5: resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==} dependencies: @@ -18751,7 +18757,6 @@ packages: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: character-entities: 2.0.2 - dev: false /decode-uri-component/0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} @@ -31167,6 +31172,63 @@ packages: - react-native dev: false + /ra-core/4.7.0_7gebip3sgfc5uoqbhvi5xascza: + resolution: {integrity: sha512-BqryOzTwuGd5Qn7Q5JLnipgWbhuNbIbK5Y9Kq0BQTNJTr8E8KxwgxduOyQatR4j8Gx8klrZrzZkQDGKlE4287g==} + peerDependencies: + history: ^5.1.0 + react: ^16.9.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 + react-hook-form: ^7.40.0 + react-router: ^6.1.0 + react-router-dom: ^6.1.0 + dependencies: + clsx: 1.2.1 + date-fns: 2.29.3 + eventemitter3: 4.0.7 + inflection: 1.12.0 + jsonexport: 3.2.0 + lodash: 4.17.21 + prop-types: 15.8.1 + query-string: 7.1.3 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-is: 17.0.2 + react-query: 3.39.2_biqbaboplfbrettd7655fr4n2y + react-router-dom: 6.5.0_biqbaboplfbrettd7655fr4n2y + transitivePeerDependencies: + - react-native + dev: false + + /ra-core/4.7.0_pfooshxqv2tt62ag7vbj263eh4: + resolution: {integrity: sha512-BqryOzTwuGd5Qn7Q5JLnipgWbhuNbIbK5Y9Kq0BQTNJTr8E8KxwgxduOyQatR4j8Gx8klrZrzZkQDGKlE4287g==} + peerDependencies: + history: ^5.1.0 + react: ^16.9.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 + react-hook-form: ^7.40.0 + react-router: ^6.1.0 + react-router-dom: ^6.1.0 + dependencies: + clsx: 1.2.1 + date-fns: 2.29.3 + eventemitter3: 4.0.7 + history: 5.3.0 + inflection: 1.12.0 + jsonexport: 3.2.0 + lodash: 4.17.21 + prop-types: 15.8.1 + query-string: 7.1.3 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-hook-form: 7.41.5_react@18.2.0 + react-is: 17.0.2 + react-query: 3.39.2_biqbaboplfbrettd7655fr4n2y + react-router: 6.5.0_react@18.2.0 + react-router-dom: 6.5.0_biqbaboplfbrettd7655fr4n2y + transitivePeerDependencies: + - react-native + dev: false + /ra-data-json-server/4.6.3_7gebip3sgfc5uoqbhvi5xascza: resolution: {integrity: sha512-KChdLr/quUimzzsl5XTBc6jGg7EvQgjlRFi4Ymk8ovD/I11m2Vz8iXwgAV2kWDMKPqFuaRC9/xd6XZwjD/5zQQ==} dependencies: @@ -31182,11 +31244,11 @@ packages: - react-router-dom dev: false - /ra-i18n-polyglot/4.6.3_pfooshxqv2tt62ag7vbj263eh4: - resolution: {integrity: sha512-9ccFJUFzWkUKPC6YiKF08tu9biYqGUOuTrR30fPZjjvqkJgCyB17pZ3YIGcXi+41qC1zCve/JhtmgGvcDC9ppQ==} + /ra-i18n-polyglot/4.7.0_7gebip3sgfc5uoqbhvi5xascza: + resolution: {integrity: sha512-PUuG5i6ZYec62qvqrrcoI+ySEP4OXmy9XiqtWG4uNRMCI9Ib0lZiqfQQXR7MRIY3Wtv4CUMGGT2tjwxx5EL4FQ==} dependencies: node-polyglot: 2.4.2 - ra-core: 4.6.3_pfooshxqv2tt62ag7vbj263eh4 + ra-core: 4.7.0_7gebip3sgfc5uoqbhvi5xascza transitivePeerDependencies: - history - react @@ -31197,10 +31259,29 @@ packages: - react-router-dom dev: false + /ra-i18n-polyglot/4.7.0_pfooshxqv2tt62ag7vbj263eh4: + resolution: {integrity: sha512-PUuG5i6ZYec62qvqrrcoI+ySEP4OXmy9XiqtWG4uNRMCI9Ib0lZiqfQQXR7MRIY3Wtv4CUMGGT2tjwxx5EL4FQ==} + dependencies: + node-polyglot: 2.4.2 + ra-core: 4.7.0_pfooshxqv2tt62ag7vbj263eh4 + transitivePeerDependencies: + - history + - react + - react-dom + - react-hook-form + - react-native + - react-router + - react-router-dom + dev: false + + /ra-language-chinese/2.0.10: + resolution: {integrity: sha512-k+X6XdkBEZnmpKIJZj9Lb77Lj8LCmterilJTj2ovp3i8/H/dLo9IujASfjFypjHnVUpN7Y63LT19kgPrS6+row==} + dev: false + /ra-language-english/4.6.3_pfooshxqv2tt62ag7vbj263eh4: resolution: {integrity: sha512-R8xFMZhXanKm19r/QWDXdypEaoA1uqad8VJMYNXcuh7eqrIjLX1yHRkcwgbrq6YS1eXR+UR4bsHFbsggY8zb/A==} dependencies: - ra-core: 4.6.3_pfooshxqv2tt62ag7vbj263eh4 + ra-core: 4.7.0_pfooshxqv2tt62ag7vbj263eh4 transitivePeerDependencies: - history - react @@ -32233,7 +32314,7 @@ packages: '@mui/material': 5.11.3_dqge6ix3sjwueqhzcenpc5wc2q history: 5.3.0 ra-core: 4.6.3_pfooshxqv2tt62ag7vbj263eh4 - ra-i18n-polyglot: 4.6.3_pfooshxqv2tt62ag7vbj263eh4 + ra-i18n-polyglot: 4.7.0_pfooshxqv2tt62ag7vbj263eh4 ra-language-english: 4.6.3_pfooshxqv2tt62ag7vbj263eh4 ra-ui-materialui: 4.6.3_jgftreou2lcfb256ynmc7bvdmi react: 18.2.0 @@ -37197,6 +37278,7 @@ packages: typescript: 4.7.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + dev: false /ts-node/10.9.1_typescript@4.7.4: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} diff --git a/server/admin/app/ra/App.tsx b/server/admin/app/ra/App.tsx index 835095a5..6b641b4c 100644 --- a/server/admin/app/ra/App.tsx +++ b/server/admin/app/ra/App.tsx @@ -21,6 +21,10 @@ import { Dashboard } from './dashboard'; import { Route } from 'react-router-dom'; import { TailchatNetwork } from './network'; import { TailchatLayout } from './layout'; +import polyglotI18nProvider from 'ra-i18n-polyglot'; +import chineseMessages from 'ra-language-chinese'; + +const i18nProvider = polyglotI18nProvider(() => chineseMessages, 'ch'); const httpClient: typeof fetchUtils.fetchJson = (url, options = {}) => { try { @@ -54,6 +58,7 @@ export const App = () => ( authProvider={authProvider} dataProvider={dataProvider} requireAuth={true} + i18nProvider={i18nProvider} >