@owlmeans/client-i18n 0.1.15 → 0.1.16
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/README.md
CHANGED
|
@@ -63,10 +63,9 @@ Returns a `t()` function for shared/common translations.
|
|
|
63
63
|
<!-- owlmeans:agent-guidance:start -->
|
|
64
64
|
## Agent guidance
|
|
65
65
|
|
|
66
|
-
This package ships embedded
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
(`.claude/skills/` and `.github/instructions/`):
|
|
66
|
+
This package ships embedded agent skills under `agent-meta/`. After installing your
|
|
67
|
+
`@owlmeans/*` packages, run the OwlMeans agent-skills installer to place them into
|
|
68
|
+
your project's skill store (`.agents/skills/`):
|
|
70
69
|
|
|
71
70
|
```sh
|
|
72
71
|
npx @owlmeans/agent-skills
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schemaVersion":
|
|
2
|
+
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/client-i18n",
|
|
4
|
-
"version": "0.1.
|
|
5
|
-
"generatedAt": "2026-08-
|
|
4
|
+
"version": "0.1.16",
|
|
5
|
+
"generatedAt": "2026-08-14T10:14:48.854Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -10,14 +10,7 @@
|
|
|
10
10
|
"name": "client-i18n",
|
|
11
11
|
"category": "package-specific",
|
|
12
12
|
"file": "skills/client-i18n/SKILL.md",
|
|
13
|
-
"canonicalPath": ".
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"kind": "instruction",
|
|
17
|
-
"name": "client-i18n",
|
|
18
|
-
"category": "package-specific",
|
|
19
|
-
"file": "instructions/client-i18n.instructions.md",
|
|
20
|
-
"canonicalPath": ".github/instructions/client-i18n.instructions.md"
|
|
13
|
+
"canonicalPath": ".agents/skills/client-i18n/SKILL.md"
|
|
21
14
|
}
|
|
22
15
|
]
|
|
23
16
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/client-i18n",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.16",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
"typescript": "^6.0.3"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@owlmeans/client": "^0.1.
|
|
41
|
-
"@owlmeans/client-context": "^0.1.
|
|
42
|
-
"@owlmeans/i18n": "^0.1.
|
|
40
|
+
"@owlmeans/client": "^0.1.16",
|
|
41
|
+
"@owlmeans/client-context": "^0.1.16",
|
|
42
|
+
"@owlmeans/i18n": "^0.1.16",
|
|
43
43
|
"i18next": "^23.15.1",
|
|
44
44
|
"react-i18next": "^15.0.2"
|
|
45
45
|
},
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "How to use @owlmeans/client-i18n — React i18next wrapper with lazy bundle loading and language persistence. Use when setting up i18n in a React app or adding translation hooks."
|
|
3
|
-
applyTo: "**/*.ts, **/*.tsx"
|
|
4
|
-
---
|
|
5
|
-
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
6
|
-
|
|
7
|
-
# @owlmeans/client-i18n
|
|
8
|
-
|
|
9
|
-
**Layer:** Client (React)
|
|
10
|
-
**Version:** `"@owlmeans/client-i18n": "^0.1.15"`
|
|
11
|
-
|
|
12
|
-
## Key exports
|
|
13
|
-
|
|
14
|
-
| Export | Description |
|
|
15
|
-
|--------|-------------|
|
|
16
|
-
| `I18nContext` | Provider — wraps the app tree |
|
|
17
|
-
| `useI18nLib(resource, prefix?)` | Hook for library strings (ns=`'lib'`) |
|
|
18
|
-
| `useI18nApp(resource?, prefix?)` | Hook for app strings (ns=resource name) |
|
|
19
|
-
| `useI18n(resource, ns?, prefix?)` | Low-level explicit hook |
|
|
20
|
-
| `useLanguage()` | `[lng, setLng]` — read/switch active language |
|
|
21
|
-
| `composePrefix(parent?, child?)` | Dot-join for prefix segments |
|
|
22
|
-
| `I18nProps`, `I18nBaseProps` | Prop types for i18n overrides |
|
|
23
|
-
|
|
24
|
-
## Setup
|
|
25
|
-
|
|
26
|
-
```tsx
|
|
27
|
-
import { I18nContext } from '@owlmeans/client-i18n'
|
|
28
|
-
<I18nContext config={clientConfig}><App /></I18nContext>
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Translation hooks
|
|
32
|
-
|
|
33
|
-
```typescript
|
|
34
|
-
// Library component
|
|
35
|
-
const t = useI18nLib('errors', 'form') // lib:errors.form.*
|
|
36
|
-
t('minLength')
|
|
37
|
-
|
|
38
|
-
// App component
|
|
39
|
-
const t = useI18nApp(undefined, 'home') // appName:appName.home.*
|
|
40
|
-
t('title')
|
|
41
|
-
|
|
42
|
-
// Language switcher
|
|
43
|
-
const [lng, setLng] = useLanguage()
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Key invariants
|
|
47
|
-
|
|
48
|
-
- Use `useI18nLib` in `@owlmeans/*` packages, `useI18nApp` in app/project packages.
|
|
49
|
-
- Never hardcode UI strings — always use a translation hook.
|
|
50
|
-
- Language is persisted in `localStorage` under `owlmeans-lng`.
|
|
51
|
-
|
|
52
|
-
## Depends On
|
|
53
|
-
|
|
54
|
-
`@owlmeans/i18n`, `@owlmeans/client-context`, `i18next`, `react-i18next`, `react` (peer)
|