@better-translate/tanstack-router 1.0.2 → 1.1.0

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.
Files changed (2) hide show
  1. package/README.md +143 -3
  2. package/package.json +3 -3
package/README.md CHANGED
@@ -1,5 +1,145 @@
1
- # @better-translate/tanstack-router
1
+ # TanStack Router
2
2
 
3
- `@better-translate/tanstack-router` adds locale-aware routing and navigation helpers for TanStack Router and TanStack Start. Use it with `@better-translate/core`, and pair it with `@better-translate/react` when your UI renders translations in React components.
3
+ Use `@better-translate/tanstack-router` when your app uses TanStack Router or TanStack Start and you want locale-aware URLs.
4
4
 
5
- Full docs: [better-translate-placeholder.com/en/docs/adapters/tanstack-router](https://better-translate-placeholder.com/en/docs/adapters/tanstack-router)
5
+ In most real apps you will pair it with:
6
+
7
+ - `@better-translate/core` for the translator
8
+ - `@better-translate/react` for hooks inside React components
9
+
10
+ ## 1. Install the packages
11
+
12
+ ```sh
13
+ npm install @better-translate/core @better-translate/react @better-translate/tanstack-router
14
+ ```
15
+
16
+ ## 2. Create the shared translator
17
+
18
+ Create `src/lib/i18n.ts`:
19
+
20
+ ```ts
21
+ import { configureTranslations } from "@better-translate/core";
22
+
23
+ const en = {
24
+ home: {
25
+ title: "Hello from TanStack Router",
26
+ },
27
+ } as const;
28
+
29
+ const es = {
30
+ home: {
31
+ title: "Hola desde TanStack Router",
32
+ },
33
+ } as const;
34
+
35
+ export const translator = await configureTranslations({
36
+ availableLocales: ["en", "es"] as const,
37
+ defaultLocale: "en",
38
+ fallbackLocale: "en",
39
+ messages: { en, es },
40
+ });
41
+ ```
42
+
43
+ ## 3. Add the locale routing config
44
+
45
+ Create `src/lib/routing.ts`:
46
+
47
+ ```ts
48
+ import { defineRouting } from "@better-translate/tanstack-router";
49
+
50
+ export const routing = defineRouting({
51
+ defaultLocale: "en",
52
+ locales: ["en", "es"] as const,
53
+ routeTemplate: "/$lang",
54
+ });
55
+ ```
56
+
57
+ ## 4. Create localized navigation helpers
58
+
59
+ Create `src/lib/navigation.tsx`:
60
+
61
+ ```tsx
62
+ import {
63
+ Link,
64
+ useLocation,
65
+ useNavigate,
66
+ useParams,
67
+ useRouter,
68
+ } from "@tanstack/react-router";
69
+
70
+ import { createNavigationFunctions } from "@better-translate/tanstack-router/navigation";
71
+
72
+ import { routing } from "./routing";
73
+
74
+ export const {
75
+ Link: I18nLink,
76
+ useLocale,
77
+ useNavigate: useI18nNavigate,
78
+ usePathname: useI18nPathname,
79
+ } = createNavigationFunctions({
80
+ Link,
81
+ routing,
82
+ useLocation,
83
+ useNavigate,
84
+ useParams,
85
+ useRouter,
86
+ });
87
+ ```
88
+
89
+ ## 5. Wrap the app with the React provider
90
+
91
+ Create `src/app.tsx`:
92
+
93
+ ```tsx
94
+ import { RouterProvider } from "@tanstack/react-router";
95
+
96
+ import { BetterTranslateProvider } from "@better-translate/react";
97
+
98
+ import { router } from "./router";
99
+ import { translator } from "./lib/i18n";
100
+
101
+ export function App() {
102
+ return (
103
+ <BetterTranslateProvider translator={translator}>
104
+ <RouterProvider router={router} />
105
+ </BetterTranslateProvider>
106
+ );
107
+ }
108
+ ```
109
+
110
+ ## 6. Use locale-aware links and translations
111
+
112
+ Create `src/components/header.tsx`:
113
+
114
+ ```tsx
115
+ import { useTranslations } from "@better-translate/react";
116
+
117
+ import { translator } from "../lib/i18n";
118
+ import { I18nLink, useLocale } from "../lib/navigation";
119
+
120
+ export function Header() {
121
+ const currentLocale = useLocale();
122
+ const { t } = useTranslations<typeof translator>();
123
+
124
+ return (
125
+ <header>
126
+ <h1>{t("home.title")}</h1>
127
+ <I18nLink to="/" params={{ lang: currentLocale }}>
128
+ Home
129
+ </I18nLink>
130
+ </header>
131
+ );
132
+ }
133
+ ```
134
+
135
+ ## TanStack Start
136
+
137
+ If you are using TanStack Start, keep the same routing and navigation setup. Then add the server helpers from `@better-translate/tanstack-router/server` the same way you would add request helpers in Next.js.
138
+
139
+ ## Generate locale files automatically
140
+
141
+ Instead of writing every translation by hand, use the CLI to extract strings and generate locale files: [CLI guide](https://better-translate.com/en/docs/cli)
142
+
143
+ ## Examples
144
+
145
+ - [tanstack-start-example](https://github.com/jralvarenga/better-translate/tree/main/examples/tanstack-start-example)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@better-translate/tanstack-router",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "description": "TanStack Router integration package for Better Translate.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -45,12 +45,12 @@
45
45
  "url": "git+https://github.com/jralvarenga/better-translate.git",
46
46
  "directory": "packages/tanstack-router"
47
47
  },
48
- "homepage": "https://github.com/jralvarenga/better-translate/tree/main/packages/tanstack-router#readme",
48
+ "homepage": "https://www.npmjs.com/package/@better-translate/tanstack-router",
49
49
  "bugs": {
50
50
  "url": "https://github.com/jralvarenga/better-translate/issues"
51
51
  },
52
52
  "dependencies": {
53
- "@better-translate/core": "^2.0.0"
53
+ "@better-translate/core": "^2.2.0"
54
54
  },
55
55
  "peerDependencies": {
56
56
  "@tanstack/react-router": "^1.167.3",