1
- import type { I18n } from '@payloadcms/translations'
1
+ import type {
2
+ ClientTranslationsObject ,
3
+ DefaultTranslationKeys ,
4
+ DefaultTranslationsObject ,
5
+ I18n ,
6
+ I18nClient ,
7
+ } from '@payloadcms/translations'
2
8
import type { SanitizedConfig } from 'payload'
3
9
4
10
import { initI18n } from '@payloadcms/translations'
@@ -11,9 +17,23 @@ import { getRequestLanguage } from './getRequestLanguage.js'
11
17
*
12
18
* It must be called on the server side, and within the lifecycle of a request since it relies on the request headers and cookies.
13
19
*/
14
- export const getNextRequestI18n = async ( { config } : { config : SanitizedConfig } ) : Promise < I18n > =>
15
- initI18n ( {
20
+ export const getNextRequestI18n = async <
21
+ TAdditionalTranslations = { } ,
22
+ TAdditionalClientTranslationKeys extends string = never ,
23
+ > ( {
24
+ config,
25
+ } : {
26
+ config : SanitizedConfig
27
+ } ) : Promise <
28
+ [ TAdditionalClientTranslationKeys ] extends [ never ]
29
+ ? I18nClient
30
+ : TAdditionalTranslations extends object
31
+ ? I18nClient < TAdditionalTranslations , TAdditionalClientTranslationKeys >
32
+ : I18nClient < ClientTranslationsObject , TAdditionalClientTranslationKeys >
33
+ > => {
34
+ return ( await initI18n ( {
16
35
config : config . i18n ,
17
36
context : 'client' ,
18
37
language : getRequestLanguage ( { config, cookies : cookies ( ) , headers : headers ( ) } ) ,
19
- } )
38
+ } ) ) as any
39
+ }
0 commit comments