feat(app): i18n (#48)

This commit is contained in:
paisley
2026-02-11 15:34:53 +08:00
committed by GitHub
Unverified
parent 505a64438e
commit 6e09a69f4f
40 changed files with 3227 additions and 808 deletions

129
pnpm-lock.yaml generated
View File

@@ -62,6 +62,9 @@ importers:
framer-motion:
specifier: ^12.33.0
version: 12.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
i18next:
specifier: ^25.8.4
version: 25.8.4(typescript@5.9.3)
lucide-react:
specifier: ^0.563.0
version: 0.563.0(react@19.2.4)
@@ -74,6 +77,9 @@ importers:
react-dom:
specifier: ^19.2.4
version: 19.2.4(react@19.2.4)
react-i18next:
specifier: ^16.5.4
version: 16.5.4(i18next@25.8.4(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
react-markdown:
specifier: ^10.1.0
version: 10.1.0(@types/react@19.2.13)(react@19.2.4)
@@ -97,7 +103,7 @@ importers:
version: 8.19.0
zustand:
specifier: ^5.0.11
version: 5.0.11(@types/react@19.2.13)(react@19.2.4)
version: 5.0.11(@types/react@19.2.13)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4))
devDependencies:
'@eslint/js':
specifier: ^10.0.1
@@ -1297,20 +1303,6 @@ packages:
os: [linux]
libc: [glibc]
'@node-llama-cpp/linux-x64-cuda-ext@3.15.1':
resolution: {integrity: sha512-toepvLcXjgaQE/QGIThHBD58jbHGBWT1jhblJkCjYBRHfVOO+6n/PmVsJt+yMfu5Z93A2gF8YOvVyZXNXmGo5g==}
engines: {node: '>=20.0.0'}
cpu: [x64]
os: [linux]
libc: [glibc]
'@node-llama-cpp/linux-x64-cuda@3.15.1':
resolution: {integrity: sha512-kngwoq1KdrqSr/b6+tn5jbtGHI0tZnW5wofKssZy+Il2ge3eN9FowKbXG4FH452g6qSSVoDccAoTvYOxyLyX+w==}
engines: {node: '>=20.0.0'}
cpu: [x64]
os: [linux]
libc: [glibc]
'@node-llama-cpp/linux-x64-vulkan@3.15.1':
resolution: {integrity: sha512-CMsyQkGKpHKeOH9+ZPxo0hO0usg8jabq5/aM3JwdX9CiuXhXUa3nu3NH4RObiNi596Zwn/zWzlps0HRwcpL8rw==}
engines: {node: '>=20.0.0'}
@@ -1343,24 +1335,6 @@ packages:
cpu: [arm64, x64]
os: [win32]
'@node-llama-cpp/win-x64-cuda-ext@3.15.1':
resolution: {integrity: sha512-mO3Tf6D3UlFkjQF5J96ynTkjdF7dac/f5f61cEh6oU4D3hdx+cwnmBWT1gVhDSLboJYzCHtx7U2EKPP6n8HoWA==}
engines: {node: '>=20.0.0'}
cpu: [x64]
os: [win32]
'@node-llama-cpp/win-x64-cuda@3.15.1':
resolution: {integrity: sha512-swoyx0/dY4ixiu3mEWrIAinx0ffHn9IncELDNREKG+iIXfx6w0OujOMQ6+X+lGj+sjE01yMUP/9fv6GEp2pmBw==}
engines: {node: '>=20.0.0'}
cpu: [x64]
os: [win32]
'@node-llama-cpp/win-x64-vulkan@3.15.1':
resolution: {integrity: sha512-BPBjUEIkFTdcHSsQyblP0v/aPPypi6uqQIq27mo4A49CYjX22JDmk4ncdBLk6cru+UkvwEEe+F2RomjoMt32aQ==}
engines: {node: '>=20.0.0'}
cpu: [x64]
os: [win32]
'@node-llama-cpp/win-x64@3.15.1':
resolution: {integrity: sha512-jtoXBa6h+VPsQgefrO7HDjYv4WvxfHtUO30ABwCUDuEgM0e05YYhxMZj1z2Ns47UrquNvd/LUPCyjHKqHUN+5Q==}
engines: {node: '>=20.0.0'}
@@ -3967,7 +3941,7 @@ packages:
glob@8.1.0:
resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
engines: {node: '>=12'}
deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
deprecated: Glob versions prior to v9 are no longer supported
global-agent@3.0.0:
resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==}
@@ -4071,6 +4045,9 @@ packages:
html-escaper@3.0.3:
resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==}
html-parse-stringify@3.0.1:
resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==}
html-url-attributes@3.0.1:
resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==}
@@ -4107,6 +4084,14 @@ packages:
humanize-ms@1.2.1:
resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
i18next@25.8.4:
resolution: {integrity: sha512-a9A0MnUjKvzjEN/26ZY1okpra9kA8MEwzYEz1BNm+IyxUKPRH6ihf0p7vj8YvULwZHKHl3zkJ6KOt4hewxBecQ==}
peerDependencies:
typescript: ^5
peerDependenciesMeta:
typescript:
optional: true
iconv-corefoundation@1.1.7:
resolution: {integrity: sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==}
engines: {node: ^8.11.2 || >=10}
@@ -5412,6 +5397,22 @@ packages:
peerDependencies:
react: ^19.2.4
react-i18next@16.5.4:
resolution: {integrity: sha512-6yj+dcfMncEC21QPhOTsW8mOSO+pzFmT6uvU7XXdvM/Cp38zJkmTeMeKmTrmCMD5ToT79FmiE/mRWiYWcJYW4g==}
peerDependencies:
i18next: '>= 25.6.2'
react: '>= 16.8.0'
react-dom: '*'
react-native: '*'
typescript: ^5
peerDependenciesMeta:
react-dom:
optional: true
react-native:
optional: true
typescript:
optional: true
react-is@17.0.2:
resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
@@ -5939,7 +5940,6 @@ packages:
tar@6.2.1:
resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
engines: {node: '>=10'}
deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
tar@7.5.7:
resolution: {integrity: sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==}
@@ -6178,6 +6178,11 @@ packages:
'@types/react':
optional: true
use-sync-external-store@1.6.0:
resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
utf8-byte-length@1.0.5:
resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==}
@@ -6287,6 +6292,10 @@ packages:
jsdom:
optional: true
void-elements@3.1.0:
resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==}
engines: {node: '>=0.10.0'}
w3c-xmlserializer@5.0.0:
resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
engines: {node: '>=18'}
@@ -7918,12 +7927,6 @@ snapshots:
'@node-llama-cpp/linux-armv7l@3.15.1':
optional: true
'@node-llama-cpp/linux-x64-cuda-ext@3.15.1':
optional: true
'@node-llama-cpp/linux-x64-cuda@3.15.1':
optional: true
'@node-llama-cpp/linux-x64-vulkan@3.15.1':
optional: true
@@ -7939,15 +7942,6 @@ snapshots:
'@node-llama-cpp/win-arm64@3.15.1':
optional: true
'@node-llama-cpp/win-x64-cuda-ext@3.15.1':
optional: true
'@node-llama-cpp/win-x64-cuda@3.15.1':
optional: true
'@node-llama-cpp/win-x64-vulkan@3.15.1':
optional: true
'@node-llama-cpp/win-x64@3.15.1':
optional: true
@@ -11167,6 +11161,10 @@ snapshots:
html-escaper@3.0.3: {}
html-parse-stringify@3.0.1:
dependencies:
void-elements: 3.1.0
html-url-attributes@3.0.1: {}
htmlparser2@10.1.0:
@@ -11224,6 +11222,12 @@ snapshots:
dependencies:
ms: 2.1.3
i18next@25.8.4(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.6
optionalDependencies:
typescript: 5.9.3
iconv-corefoundation@1.1.7:
dependencies:
cli-truncate: 2.1.0
@@ -12282,16 +12286,11 @@ snapshots:
'@node-llama-cpp/linux-arm64': 3.15.1
'@node-llama-cpp/linux-armv7l': 3.15.1
'@node-llama-cpp/linux-x64': 3.15.1
'@node-llama-cpp/linux-x64-cuda': 3.15.1
'@node-llama-cpp/linux-x64-cuda-ext': 3.15.1
'@node-llama-cpp/linux-x64-vulkan': 3.15.1
'@node-llama-cpp/mac-arm64-metal': 3.15.1
'@node-llama-cpp/mac-x64': 3.15.1
'@node-llama-cpp/win-arm64': 3.15.1
'@node-llama-cpp/win-x64': 3.15.1
'@node-llama-cpp/win-x64-cuda': 3.15.1
'@node-llama-cpp/win-x64-cuda-ext': 3.15.1
'@node-llama-cpp/win-x64-vulkan': 3.15.1
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -12846,6 +12845,17 @@ snapshots:
react: 19.2.4
scheduler: 0.27.0
react-i18next@16.5.4(i18next@25.8.4(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.6
html-parse-stringify: 3.0.1
i18next: 25.8.4(typescript@5.9.3)
react: 19.2.4
use-sync-external-store: 1.6.0(react@19.2.4)
optionalDependencies:
react-dom: 19.2.4(react@19.2.4)
typescript: 5.9.3
react-is@17.0.2: {}
react-markdown@10.1.0(@types/react@19.2.13)(react@19.2.4):
@@ -13723,6 +13733,10 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.13
use-sync-external-store@1.6.0(react@19.2.4):
dependencies:
react: 19.2.4
utf8-byte-length@1.0.5: {}
util-deprecate@1.0.2: {}
@@ -13806,6 +13820,8 @@ snapshots:
- tsx
- yaml
void-elements@3.1.0: {}
w3c-xmlserializer@5.0.0:
dependencies:
xml-name-validator: 5.0.0
@@ -13945,10 +13961,11 @@ snapshots:
zod@4.3.6: {}
zustand@5.0.11(@types/react@19.2.13)(react@19.2.4):
zustand@5.0.11(@types/react@19.2.13)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)):
optionalDependencies:
'@types/react': 19.2.13
react: 19.2.4
use-sync-external-store: 1.6.0(react@19.2.4)
zwitch@2.0.4: {}