@intlayer/docs 7.3.5 → 7.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blog/en/compiler_vs_declarative_i18n.md +2 -0
- package/docs/ar/intlayer_with_tanstack.md +39 -40
- package/docs/de/intlayer_with_tanstack.md +39 -40
- package/docs/en/intlayer_with_tanstack.md +43 -43
- package/docs/en-GB/intlayer_with_tanstack.md +39 -40
- package/docs/es/intlayer_with_tanstack.md +39 -40
- package/docs/fr/intlayer_with_tanstack.md +39 -40
- package/docs/hi/intlayer_with_tanstack.md +39 -40
- package/docs/id/intlayer_with_tanstack.md +39 -40
- package/docs/it/intlayer_with_tanstack.md +39 -40
- package/docs/ja/intlayer_with_tanstack.md +39 -40
- package/docs/ko/intlayer_with_tanstack.md +39 -40
- package/docs/pl/intlayer_with_tanstack.md +39 -40
- package/docs/pt/intlayer_with_tanstack.md +39 -40
- package/docs/ru/intlayer_with_tanstack.md +39 -40
- package/docs/tr/intlayer_with_tanstack.md +40 -41
- package/docs/vi/intlayer_with_tanstack.md +39 -40
- package/docs/zh/intlayer_with_tanstack.md +42 -43
- package/package.json +6 -6
|
@@ -133,7 +133,7 @@ export default config;
|
|
|
133
133
|
#### 根布局
|
|
134
134
|
|
|
135
135
|
```tsx fileName="src/routes/{-$locale}/route.tsx"
|
|
136
|
-
import { createFileRoute,
|
|
136
|
+
import { createFileRoute, Outlet } from "@tanstack/react-router";
|
|
137
137
|
import { IntlayerProvider, useLocale } from "react-intlayer";
|
|
138
138
|
|
|
139
139
|
import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes";
|
|
@@ -380,16 +380,16 @@ import {
|
|
|
380
380
|
getLocaleName,
|
|
381
381
|
getPathWithoutLocale,
|
|
382
382
|
getPrefix,
|
|
383
|
+
Locales,
|
|
383
384
|
} from "intlayer";
|
|
384
|
-
import {
|
|
385
|
+
import { useLocale } from "react-intlayer";
|
|
385
386
|
|
|
386
387
|
import { LocalizedLink, To } from "./localized-link";
|
|
387
388
|
|
|
388
389
|
export const LocaleSwitcher: FC = () => {
|
|
389
|
-
const {
|
|
390
|
-
const { pathname } = useLocation(); // 获取当前路径名
|
|
390
|
+
const { pathname } = useLocation();
|
|
391
391
|
|
|
392
|
-
const { availableLocales, locale } = useLocale();
|
|
392
|
+
const { availableLocales, locale, setLocale } = useLocale();
|
|
393
393
|
|
|
394
394
|
const pathWithoutLocale = getPathWithoutLocale(pathname); // 获取不带语言前缀的路径
|
|
395
395
|
|
|
@@ -398,27 +398,26 @@ export const LocaleSwitcher: FC = () => {
|
|
|
398
398
|
{availableLocales.map((localeEl) => (
|
|
399
399
|
<li key={localeEl}>
|
|
400
400
|
<LocalizedLink
|
|
401
|
-
aria-current={localeEl === locale ? "page" : undefined}
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
params={{ locale: localeEl }} // 传递语言参数
|
|
401
|
+
aria-current={localeEl === locale ? "page" : undefined}
|
|
402
|
+
onClick={() => setLocale(localeEl)}
|
|
403
|
+
params={{ locale: getPrefix(localeEl).localePrefix }}
|
|
405
404
|
to={pathWithoutLocale as To} // 跳转到不带语言前缀的路径
|
|
406
405
|
>
|
|
407
406
|
<span>
|
|
408
407
|
{/* 语言环境 - 例如 FR */}
|
|
409
|
-
{
|
|
408
|
+
{localeEl}
|
|
410
409
|
</span>
|
|
411
410
|
<span>
|
|
412
411
|
{/* 语言在其自身语言环境中的名称 - 例如 Français */}
|
|
413
|
-
{getLocaleName(
|
|
412
|
+
{getLocaleName(localeEl, locale)}
|
|
414
413
|
</span>
|
|
415
|
-
<span dir={getHTMLTextDir(
|
|
414
|
+
<span dir={getHTMLTextDir(localeEl)} lang={localeEl}>
|
|
416
415
|
{/* 语言在当前语言环境中的名称 - 例如当前语言环境为 Locales.SPANISH 时显示 Francés */}
|
|
417
|
-
{getLocaleName(
|
|
416
|
+
{getLocaleName(localeEl)}
|
|
418
417
|
</span>
|
|
419
418
|
<span dir="ltr" lang={Locales.ENGLISH}>
|
|
420
419
|
{/* 语言的英文名称 - 例如 French */}
|
|
421
|
-
{getLocaleName(
|
|
420
|
+
{getLocaleName(localeEl, Locales.ENGLISH)}
|
|
422
421
|
</span>
|
|
423
422
|
</LocalizedLink>
|
|
424
423
|
</li>
|
|
@@ -453,7 +452,7 @@ export const useI18nHTMLAttributes = () => {
|
|
|
453
452
|
然后在你的根组件中使用它:
|
|
454
453
|
|
|
455
454
|
```tsx fileName="src/routes/{-$locale}/index.tsx"
|
|
456
|
-
import { createFileRoute,
|
|
455
|
+
import { createFileRoute, Outlet } from "@tanstack/react-router";
|
|
457
456
|
import { IntlayerProvider, useLocale } from "react-intlayer";
|
|
458
457
|
|
|
459
458
|
import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes"; // 导入钩子
|
|
@@ -493,18 +492,44 @@ import tsconfigPaths from "vite-tsconfig-paths";
|
|
|
493
492
|
|
|
494
493
|
export default defineConfig({
|
|
495
494
|
plugins: [
|
|
495
|
+
intlayerProxy(), // 如果使用 Nitro,代理应放在服务器之前
|
|
496
496
|
tailwindcss(),
|
|
497
497
|
reactRouter(),
|
|
498
498
|
tsconfigPaths(),
|
|
499
499
|
intlayer(),
|
|
500
|
-
intlayerProxy(),
|
|
501
500
|
],
|
|
502
501
|
});
|
|
503
502
|
```
|
|
504
503
|
|
|
505
504
|
---
|
|
506
505
|
|
|
507
|
-
### 第12
|
|
506
|
+
### 第12步:国际化您的元数据(可选)
|
|
507
|
+
|
|
508
|
+
您还可以使用 `getIntlayer` 钩子在整个应用程序中访问您的内容字典:
|
|
509
|
+
|
|
510
|
+
```tsx fileName="src/routes/{-$locale}/index.tsx"
|
|
511
|
+
import { createFileRoute } from "@tanstack/react-router";
|
|
512
|
+
import { getIntlayer } from "intlayer";
|
|
513
|
+
|
|
514
|
+
export const Route = createFileRoute("/{-$locale}/")({
|
|
515
|
+
component: RouteComponent,
|
|
516
|
+
head: ({ params }) => {
|
|
517
|
+
const { locale } = params;
|
|
518
|
+
const metaContent = getIntlayer("page-metadata", locale);
|
|
519
|
+
|
|
520
|
+
return {
|
|
521
|
+
meta: [
|
|
522
|
+
{ title: metaContent.title },
|
|
523
|
+
{ content: metaContent.description, name: "description" },
|
|
524
|
+
],
|
|
525
|
+
};
|
|
526
|
+
},
|
|
527
|
+
});
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
---
|
|
531
|
+
|
|
532
|
+
### 第13步:配置 TypeScript(可选)
|
|
508
533
|
|
|
509
534
|
Intlayer 使用模块增强来利用 TypeScript 的优势,使您的代码库更健壮。
|
|
510
535
|
|
|
@@ -522,32 +547,6 @@ Intlayer 使用模块增强来利用 TypeScript 的优势,使您的代码库
|
|
|
522
547
|
|
|
523
548
|
---
|
|
524
549
|
|
|
525
|
-
### 第13步:调整 Nitro(可选)
|
|
526
|
-
|
|
527
|
-
如果您在生产输出中使用 Nitro,nitro 将不会在输出目录中包含 `.intlayer` 目录。您需要手动复制它。
|
|
528
|
-
|
|
529
|
-
使用构建脚本的示例:
|
|
530
|
-
|
|
531
|
-
```json5 fileName="package.json"
|
|
532
|
-
{
|
|
533
|
-
"scripts": {
|
|
534
|
-
"dev": "vite dev --port 3000",
|
|
535
|
-
"build": "vite build && cpr -r .intlayer .output/.intlayer", // 复制 .intlayer 文件夹
|
|
536
|
-
"serve": "vite preview",
|
|
537
|
-
},
|
|
538
|
-
}
|
|
539
|
-
```
|
|
540
|
-
|
|
541
|
-
> cpr 用于调整命令以使其在 Windows 上运行。
|
|
542
|
-
> 您需要安装 `cpr` 实用程序才能使用此命令。
|
|
543
|
-
>
|
|
544
|
-
> - `npm install --save-dev cpr`
|
|
545
|
-
> - `yarn add --dev cpr`
|
|
546
|
-
> - `pnpm add --save-dev cpr`
|
|
547
|
-
> - `bun add --save-dev cpr`
|
|
548
|
-
|
|
549
|
-
---
|
|
550
|
-
|
|
551
550
|
### Git 配置
|
|
552
551
|
|
|
553
552
|
建议忽略 Intlayer 生成的文件。这样可以避免将它们提交到您的 Git 仓库中。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intlayer/docs",
|
|
3
|
-
"version": "7.3.
|
|
3
|
+
"version": "7.3.6",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Intlayer documentation",
|
|
6
6
|
"keywords": [
|
|
@@ -73,13 +73,13 @@
|
|
|
73
73
|
"watch": "webpack --config ./webpack.config.ts --watch"
|
|
74
74
|
},
|
|
75
75
|
"dependencies": {
|
|
76
|
-
"@intlayer/config": "7.3.
|
|
77
|
-
"@intlayer/core": "7.3.
|
|
78
|
-
"@intlayer/types": "7.3.
|
|
76
|
+
"@intlayer/config": "7.3.6",
|
|
77
|
+
"@intlayer/core": "7.3.6",
|
|
78
|
+
"@intlayer/types": "7.3.6"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@intlayer/api": "7.3.
|
|
82
|
-
"@intlayer/cli": "7.3.
|
|
81
|
+
"@intlayer/api": "7.3.6",
|
|
82
|
+
"@intlayer/cli": "7.3.6",
|
|
83
83
|
"@types/node": "24.10.1",
|
|
84
84
|
"@utils/ts-config": "1.0.4",
|
|
85
85
|
"@utils/ts-config-types": "1.0.4",
|