@sheet-i18n/react 1.6.1-canary.0 → 1.6.2-canary.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.
- package/README.md +51 -5
- package/dist/index.d.mts +112 -2
- package/dist/index.d.ts +112 -2
- package/dist/index.js +551 -8
- package/dist/index.mjs +548 -7
- package/package.json +12 -3
package/README.md
CHANGED
|
@@ -528,11 +528,7 @@ export default function App() {
|
|
|
528
528
|
}
|
|
529
529
|
```
|
|
530
530
|
|
|
531
|
-
##
|
|
532
|
-
|
|
533
|
-
sheet-i18n provides advanced interpolation strategies for different rendering environments. These strategies ensure optimal performance and user experience across various deployment scenarios.
|
|
534
|
-
|
|
535
|
-
### 🖥️ Client-Side Rendering (CSR) Interpolation
|
|
531
|
+
## 🖥️ Persistent Locale Settings
|
|
536
532
|
|
|
537
533
|
For client-side applications, sheet-i18n offers `StorageBasedIntlProvider` with `LocaleStorageManager` to handle **persistent locale settings** and interpolation seamlessly.
|
|
538
534
|
|
|
@@ -764,6 +760,56 @@ const { t } = useTranslation('userSheet');
|
|
|
764
760
|
const translatedText = t.rule('ageRule', { age: 25 }); // 'You are an adult. Your age is 25'
|
|
765
761
|
```
|
|
766
762
|
|
|
763
|
+
## 🌐 Monorepo Support
|
|
764
|
+
|
|
765
|
+
### **Render Prop Support (Monorepo-Friendly)**
|
|
766
|
+
|
|
767
|
+
Both `StorageBasedIntlProvider` and `IntlProvider` accept either regular children
|
|
768
|
+
or a render function. When a function is provided, the current locale is injected
|
|
769
|
+
as the first argument. This is useful in monorepos where:
|
|
770
|
+
|
|
771
|
+
```text
|
|
772
|
+
┌───────────────┐ ┌───────────────────────┐
|
|
773
|
+
│ workspace app │ ───────> │ app i18n context │
|
|
774
|
+
└───────────────┘ │ (Store A) │
|
|
775
|
+
└───────────────────────┘
|
|
776
|
+
|
|
777
|
+
┌───────────────┐ ┌───────────────────────┐
|
|
778
|
+
│ packages/ui │ ───────> │ ui i18n context │
|
|
779
|
+
└───────────────┘ │ (Store B) │
|
|
780
|
+
└───────────────────────┘
|
|
781
|
+
|
|
782
|
+
locale bridge (A -> B)
|
|
783
|
+
|
|
784
|
+
The contexts stay separate (for example, different packages can point to
|
|
785
|
+
different sheets), while the current locale can still be bridged.
|
|
786
|
+
```
|
|
787
|
+
|
|
788
|
+
```tsx
|
|
789
|
+
// packages/ui: export its own IntlProvider
|
|
790
|
+
export { IntlProvider as PackageUIIntlProvider } from './src/i18n/i18nContext';
|
|
791
|
+
|
|
792
|
+
// workspace: bridge the locale to the package provider
|
|
793
|
+
import { PackageUIIntlProvider } from '@packages/ui';
|
|
794
|
+
import {
|
|
795
|
+
localeStorageManager,
|
|
796
|
+
StorageBasedIntlProvider,
|
|
797
|
+
} from '@/i18n/i18nContext';
|
|
798
|
+
|
|
799
|
+
export default function LocaleProvider({ children }: PropsWithChildren) {
|
|
800
|
+
return (
|
|
801
|
+
<StorageBasedIntlProvider storageManager={localeStorageManager}>
|
|
802
|
+
// currentLocale: automatically injected
|
|
803
|
+
{(currentLocale) => (
|
|
804
|
+
<PackageUIIntlProvider currentLocale={currentLocale}>
|
|
805
|
+
{children}
|
|
806
|
+
</PackageUIIntlProvider>
|
|
807
|
+
)}
|
|
808
|
+
</StorageBasedIntlProvider>
|
|
809
|
+
);
|
|
810
|
+
}
|
|
811
|
+
```
|
|
812
|
+
|
|
767
813
|
## License 📜
|
|
768
814
|
|
|
769
815
|
This project is licensed under the ISC License. See the LICENSE file for details.
|
package/dist/index.d.mts
CHANGED
|
@@ -1,2 +1,112 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
1
|
+
import { I18nStore } from '@sheet-i18n/core';
|
|
2
|
+
export * from '@sheet-i18n/core';
|
|
3
|
+
import { ObserverManager } from '@sheet-i18n/shared-utils';
|
|
4
|
+
import { MessageDescriptor, IntlShape } from 'react-intl';
|
|
5
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
interface IStorageService<V extends string> {
|
|
8
|
+
getItem(key: string): V;
|
|
9
|
+
setItem(key: string, value: V): boolean;
|
|
10
|
+
removeItem(key: string): boolean;
|
|
11
|
+
clear(): boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* locale storage manager
|
|
15
|
+
* implements ILocaleStorageManager (injected StorageService)
|
|
16
|
+
*/
|
|
17
|
+
interface ILocaleStorageManager<TSupportedLocales extends readonly string[]> {
|
|
18
|
+
getLocale(): TSupportedLocales[number];
|
|
19
|
+
setLocale(locale: TSupportedLocales[number]): void;
|
|
20
|
+
}
|
|
21
|
+
declare class LocaleStorageManager<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> implements ILocaleStorageManager<TSupportedLocales> {
|
|
22
|
+
private readonly storageService;
|
|
23
|
+
private readonly i18nStore;
|
|
24
|
+
private readonly localeStorageKey;
|
|
25
|
+
observerManager: ObserverManager<TSupportedLocales[number]>;
|
|
26
|
+
constructor(storageService: IStorageService<TSupportedLocales[number]>, i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, localeStorageKey?: string);
|
|
27
|
+
private initializeCurrentLocale;
|
|
28
|
+
getLocale: () => TSupportedLocales[number];
|
|
29
|
+
setLocale: (locale: TSupportedLocales[number]) => void;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
type UseIntlParams<D = MessageDescriptor> = Parameters<IntlShape['$t']> extends [D, ...infer R] ? [...R, Omit<D, 'id'>] : never;
|
|
33
|
+
type ExtendedUseIntlParams<D = MessageDescriptor> = UseIntlParams<D> extends [infer A, infer B, ...infer Rest] ? A extends Record<string, infer V> ? [Record<string, V | React.ReactNode>, B, ...Rest] : [A, B, ...Rest] : UseIntlParams<D>;
|
|
34
|
+
type $TParams = Partial<ExtendedUseIntlParams>;
|
|
35
|
+
/**
|
|
36
|
+
* Resolves to keys of a specific sheet title in a localized set,
|
|
37
|
+
* or falls back to `string` if not type-safe or keys resolve to `never`.
|
|
38
|
+
*/
|
|
39
|
+
type SafeMessageId<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe extends boolean> = TTypeSafe extends true ? keyof NonNullable<TLocaleSet[TSupportedLocales[number]]>[TSheetTitle] extends never ? string : keyof NonNullable<TLocaleSet[TSupportedLocales[number]]>[TSheetTitle] : string;
|
|
40
|
+
/**
|
|
41
|
+
* Resolves to valid sheet titles from the locale set
|
|
42
|
+
* or defaults to string if type safety is off or keys are not available.
|
|
43
|
+
*/
|
|
44
|
+
type SupportedLocales = readonly string[];
|
|
45
|
+
type LocaleSet = Partial<Record<SupportedLocales[number], Record<string, any>>>;
|
|
46
|
+
type TypeSafe = boolean;
|
|
47
|
+
type SafeSheetTitle<TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TTypeSafe extends TypeSafe> = TTypeSafe extends true ? keyof TLocaleSet[TSupportedLocales[number]] extends never ? string : keyof TLocaleSet[TSupportedLocales[number]] : string;
|
|
48
|
+
/**
|
|
49
|
+
* Plugin types
|
|
50
|
+
*/
|
|
51
|
+
type RuleKey = string;
|
|
52
|
+
type RuleFn<TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TI18nStore extends I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe extends TypeSafe, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues = any> = (values: TValues, currentLocaleSet: ReturnType<TI18nStore['getCurrentLocaleSet']>) => TMessageId;
|
|
53
|
+
type Plugins<TRules extends Rules = Rules> = {
|
|
54
|
+
rules?: TRules;
|
|
55
|
+
};
|
|
56
|
+
type Rules<TSupportedLocales extends SupportedLocales = SupportedLocales, TLocaleSet extends LocaleSet = LocaleSet, TTypeSafe extends TypeSafe = TypeSafe, TI18nStore extends I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe> = I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe> = SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe> = SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>> = Record<RuleKey, RuleFn<TSupportedLocales, TLocaleSet, TI18nStore, TTypeSafe, TSheetTitle, TMessageId>>;
|
|
57
|
+
|
|
58
|
+
type GetTranslationReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>> = {
|
|
59
|
+
t: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? TMessageId : any;
|
|
60
|
+
} & {
|
|
61
|
+
t: {
|
|
62
|
+
dynamic: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: string, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? string : any;
|
|
63
|
+
promise: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? Promise<TMessageId> : any;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
type UseTranslationReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Partial<Record<TSupportedLocales[number], Record<string, any>>>>, TTypeSafe extends boolean, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TRules extends Rules> = {
|
|
68
|
+
t: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? TMessageId : any;
|
|
69
|
+
} & {
|
|
70
|
+
t: {
|
|
71
|
+
dynamic: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: string, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? string : any;
|
|
72
|
+
rule: <TRuleKey extends keyof TRules, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>>(ruleKey: TRuleKey, values?: Parameters<TRules[TRuleKey]>[0]) => TTypeSafe extends true ? TMessageId : any;
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
type IntlProviderProps<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> = {
|
|
77
|
+
i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>;
|
|
78
|
+
currentLocale?: TSupportedLocales[number];
|
|
79
|
+
children: Omit<React.ReactNode, 'bigint'> | ((currentLocale?: TSupportedLocales[number]) => React.ReactNode);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
declare function useLocaleStorage<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false>(localeStorageManager: LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>): {
|
|
83
|
+
locale: TSupportedLocales[number] | undefined;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
interface StorageBasedIntlProviderProps<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> {
|
|
87
|
+
i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>;
|
|
88
|
+
storageManager: LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>;
|
|
89
|
+
fallbackUI?: React.ReactNode;
|
|
90
|
+
children: Omit<React.ReactNode, 'bigint'> | ((currentLocale?: TSupportedLocales[number]) => React.ReactNode);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
declare function createI18nContext<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TRules extends Rules, TTypeSafe extends boolean = false>(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, plugins?: Plugins<TRules>): {
|
|
94
|
+
IntlProvider: ({ currentLocale, children, }: Omit<IntlProviderProps<TSupportedLocales, TLocaleSet>, "currentLocale" | "i18nStore"> & {
|
|
95
|
+
currentLocale?: string;
|
|
96
|
+
children?: React.ReactNode;
|
|
97
|
+
}) => react_jsx_runtime.JSX.Element;
|
|
98
|
+
StorageBasedIntlProvider: ({ storageManager, children, }: Omit<StorageBasedIntlProviderProps<TSupportedLocales, TLocaleSet, TTypeSafe>, "i18nStore">) => react_jsx_runtime.JSX.Element;
|
|
99
|
+
useTranslation: <TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>>(sheetTitle: TSheetTitle) => UseTranslationReturn<TSupportedLocales, TLocaleSet, TTypeSafe, TSheetTitle, TRules>;
|
|
100
|
+
getTranslation: <TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>>(sheetTitle: TSheetTitle) => GetTranslationReturn<TSupportedLocales, TLocaleSet, TTypeSafe, TSheetTitle>;
|
|
101
|
+
getLocaleStorageManager: (storageService?: IStorageService<string>) => LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>;
|
|
102
|
+
useLocaleStorage: typeof useLocaleStorage;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
declare class RuleService<TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TTypeSafe extends TypeSafe, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>> {
|
|
106
|
+
private readonly i18nStore;
|
|
107
|
+
constructor(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>);
|
|
108
|
+
createRule: <TValues extends $TParams[0]>(ruleFn: RuleFn<TSupportedLocales, TLocaleSet, I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe, TSheetTitle, TMessageId, TValues>) => (values: TValues) => TMessageId;
|
|
109
|
+
}
|
|
110
|
+
declare const ruleFactory: <TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TTypeSafe extends TypeSafe>(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>) => RuleService<TSupportedLocales, TLocaleSet, TTypeSafe, SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, SafeMessageId<TSupportedLocales, TLocaleSet, SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe>>;
|
|
111
|
+
|
|
112
|
+
export { type GetTranslationReturn as GetTranslation, LocaleStorageManager, type Plugins, type Rules, type IStorageService as Storage, type StorageBasedIntlProviderProps, type UseTranslationReturn as UseTranslation, createI18nContext, ruleFactory };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,112 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
1
|
+
import { I18nStore } from '@sheet-i18n/core';
|
|
2
|
+
export * from '@sheet-i18n/core';
|
|
3
|
+
import { ObserverManager } from '@sheet-i18n/shared-utils';
|
|
4
|
+
import { MessageDescriptor, IntlShape } from 'react-intl';
|
|
5
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
interface IStorageService<V extends string> {
|
|
8
|
+
getItem(key: string): V;
|
|
9
|
+
setItem(key: string, value: V): boolean;
|
|
10
|
+
removeItem(key: string): boolean;
|
|
11
|
+
clear(): boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* locale storage manager
|
|
15
|
+
* implements ILocaleStorageManager (injected StorageService)
|
|
16
|
+
*/
|
|
17
|
+
interface ILocaleStorageManager<TSupportedLocales extends readonly string[]> {
|
|
18
|
+
getLocale(): TSupportedLocales[number];
|
|
19
|
+
setLocale(locale: TSupportedLocales[number]): void;
|
|
20
|
+
}
|
|
21
|
+
declare class LocaleStorageManager<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> implements ILocaleStorageManager<TSupportedLocales> {
|
|
22
|
+
private readonly storageService;
|
|
23
|
+
private readonly i18nStore;
|
|
24
|
+
private readonly localeStorageKey;
|
|
25
|
+
observerManager: ObserverManager<TSupportedLocales[number]>;
|
|
26
|
+
constructor(storageService: IStorageService<TSupportedLocales[number]>, i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, localeStorageKey?: string);
|
|
27
|
+
private initializeCurrentLocale;
|
|
28
|
+
getLocale: () => TSupportedLocales[number];
|
|
29
|
+
setLocale: (locale: TSupportedLocales[number]) => void;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
type UseIntlParams<D = MessageDescriptor> = Parameters<IntlShape['$t']> extends [D, ...infer R] ? [...R, Omit<D, 'id'>] : never;
|
|
33
|
+
type ExtendedUseIntlParams<D = MessageDescriptor> = UseIntlParams<D> extends [infer A, infer B, ...infer Rest] ? A extends Record<string, infer V> ? [Record<string, V | React.ReactNode>, B, ...Rest] : [A, B, ...Rest] : UseIntlParams<D>;
|
|
34
|
+
type $TParams = Partial<ExtendedUseIntlParams>;
|
|
35
|
+
/**
|
|
36
|
+
* Resolves to keys of a specific sheet title in a localized set,
|
|
37
|
+
* or falls back to `string` if not type-safe or keys resolve to `never`.
|
|
38
|
+
*/
|
|
39
|
+
type SafeMessageId<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe extends boolean> = TTypeSafe extends true ? keyof NonNullable<TLocaleSet[TSupportedLocales[number]]>[TSheetTitle] extends never ? string : keyof NonNullable<TLocaleSet[TSupportedLocales[number]]>[TSheetTitle] : string;
|
|
40
|
+
/**
|
|
41
|
+
* Resolves to valid sheet titles from the locale set
|
|
42
|
+
* or defaults to string if type safety is off or keys are not available.
|
|
43
|
+
*/
|
|
44
|
+
type SupportedLocales = readonly string[];
|
|
45
|
+
type LocaleSet = Partial<Record<SupportedLocales[number], Record<string, any>>>;
|
|
46
|
+
type TypeSafe = boolean;
|
|
47
|
+
type SafeSheetTitle<TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TTypeSafe extends TypeSafe> = TTypeSafe extends true ? keyof TLocaleSet[TSupportedLocales[number]] extends never ? string : keyof TLocaleSet[TSupportedLocales[number]] : string;
|
|
48
|
+
/**
|
|
49
|
+
* Plugin types
|
|
50
|
+
*/
|
|
51
|
+
type RuleKey = string;
|
|
52
|
+
type RuleFn<TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TI18nStore extends I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe extends TypeSafe, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues = any> = (values: TValues, currentLocaleSet: ReturnType<TI18nStore['getCurrentLocaleSet']>) => TMessageId;
|
|
53
|
+
type Plugins<TRules extends Rules = Rules> = {
|
|
54
|
+
rules?: TRules;
|
|
55
|
+
};
|
|
56
|
+
type Rules<TSupportedLocales extends SupportedLocales = SupportedLocales, TLocaleSet extends LocaleSet = LocaleSet, TTypeSafe extends TypeSafe = TypeSafe, TI18nStore extends I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe> = I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe> = SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe> = SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>> = Record<RuleKey, RuleFn<TSupportedLocales, TLocaleSet, TI18nStore, TTypeSafe, TSheetTitle, TMessageId>>;
|
|
57
|
+
|
|
58
|
+
type GetTranslationReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>> = {
|
|
59
|
+
t: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? TMessageId : any;
|
|
60
|
+
} & {
|
|
61
|
+
t: {
|
|
62
|
+
dynamic: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: string, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? string : any;
|
|
63
|
+
promise: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? Promise<TMessageId> : any;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
type UseTranslationReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Partial<Record<TSupportedLocales[number], Record<string, any>>>>, TTypeSafe extends boolean, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TRules extends Rules> = {
|
|
68
|
+
t: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? TMessageId : any;
|
|
69
|
+
} & {
|
|
70
|
+
t: {
|
|
71
|
+
dynamic: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: string, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? string : any;
|
|
72
|
+
rule: <TRuleKey extends keyof TRules, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>>(ruleKey: TRuleKey, values?: Parameters<TRules[TRuleKey]>[0]) => TTypeSafe extends true ? TMessageId : any;
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
type IntlProviderProps<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> = {
|
|
77
|
+
i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>;
|
|
78
|
+
currentLocale?: TSupportedLocales[number];
|
|
79
|
+
children: Omit<React.ReactNode, 'bigint'> | ((currentLocale?: TSupportedLocales[number]) => React.ReactNode);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
declare function useLocaleStorage<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false>(localeStorageManager: LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>): {
|
|
83
|
+
locale: TSupportedLocales[number] | undefined;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
interface StorageBasedIntlProviderProps<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> {
|
|
87
|
+
i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>;
|
|
88
|
+
storageManager: LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>;
|
|
89
|
+
fallbackUI?: React.ReactNode;
|
|
90
|
+
children: Omit<React.ReactNode, 'bigint'> | ((currentLocale?: TSupportedLocales[number]) => React.ReactNode);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
declare function createI18nContext<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TRules extends Rules, TTypeSafe extends boolean = false>(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, plugins?: Plugins<TRules>): {
|
|
94
|
+
IntlProvider: ({ currentLocale, children, }: Omit<IntlProviderProps<TSupportedLocales, TLocaleSet>, "currentLocale" | "i18nStore"> & {
|
|
95
|
+
currentLocale?: string;
|
|
96
|
+
children?: React.ReactNode;
|
|
97
|
+
}) => react_jsx_runtime.JSX.Element;
|
|
98
|
+
StorageBasedIntlProvider: ({ storageManager, children, }: Omit<StorageBasedIntlProviderProps<TSupportedLocales, TLocaleSet, TTypeSafe>, "i18nStore">) => react_jsx_runtime.JSX.Element;
|
|
99
|
+
useTranslation: <TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>>(sheetTitle: TSheetTitle) => UseTranslationReturn<TSupportedLocales, TLocaleSet, TTypeSafe, TSheetTitle, TRules>;
|
|
100
|
+
getTranslation: <TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>>(sheetTitle: TSheetTitle) => GetTranslationReturn<TSupportedLocales, TLocaleSet, TTypeSafe, TSheetTitle>;
|
|
101
|
+
getLocaleStorageManager: (storageService?: IStorageService<string>) => LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>;
|
|
102
|
+
useLocaleStorage: typeof useLocaleStorage;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
declare class RuleService<TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TTypeSafe extends TypeSafe, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>> {
|
|
106
|
+
private readonly i18nStore;
|
|
107
|
+
constructor(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>);
|
|
108
|
+
createRule: <TValues extends $TParams[0]>(ruleFn: RuleFn<TSupportedLocales, TLocaleSet, I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe, TSheetTitle, TMessageId, TValues>) => (values: TValues) => TMessageId;
|
|
109
|
+
}
|
|
110
|
+
declare const ruleFactory: <TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TTypeSafe extends TypeSafe>(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>) => RuleService<TSupportedLocales, TLocaleSet, TTypeSafe, SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, SafeMessageId<TSupportedLocales, TLocaleSet, SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe>>;
|
|
111
|
+
|
|
112
|
+
export { type GetTranslationReturn as GetTranslation, LocaleStorageManager, type Plugins, type Rules, type IStorageService as Storage, type StorageBasedIntlProviderProps, type UseTranslationReturn as UseTranslation, createI18nContext, ruleFactory };
|