2020import Tannin from 'tannin' ;
2121import type { TanninLocaleDomain } from 'tannin' ;
2222
23+ /**
24+ * Internal dependencies
25+ */
26+ import type { TranslatableText } from './types' ;
27+
2328interface LocaleData {
2429 locale_data : {
2530 [ key : string ] : TanninLocaleDomain ;
@@ -63,8 +68,11 @@ export function setLocaleData(data: LocaleData) {
6368 * @param [domain] Text domain. Unique identifier for retrieving translated strings.
6469 * @return Translated text.
6570 */
66- export function __ ( text : string , domain = TEXT_DOMAIN ) {
67- return tannin . dcnpgettext ( domain , undefined , text ) ;
71+ export function __ < T extends string > (
72+ text : T ,
73+ domain = TEXT_DOMAIN
74+ ) : TranslatableText < T > {
75+ return tannin . dcnpgettext ( domain , undefined , text ) as TranslatableText < T > ;
6876}
6977
7078/**
@@ -75,8 +83,12 @@ export function __(text: string, domain = TEXT_DOMAIN) {
7583 * @param [domain] Text domain. Unique identifier for retrieving translated strings.
7684 * @return Translated text.
7785 */
78- export function _x ( text : string , context : string , domain = TEXT_DOMAIN ) {
79- return tannin . dcnpgettext ( domain , context , text ) ;
86+ export function _x < T extends string > (
87+ text : T ,
88+ context : string ,
89+ domain = TEXT_DOMAIN
90+ ) : TranslatableText < T > {
91+ return tannin . dcnpgettext ( domain , context , text ) as TranslatableText < T > ;
8092}
8193
8294/**
@@ -88,13 +100,19 @@ export function _x(text: string, context: string, domain = TEXT_DOMAIN) {
88100 * @param [domain] Text domain. Unique identifier for retrieving translated strings.
89101 * @return Translated text.
90102 */
91- export function _n (
92- singular : string ,
93- plural : string ,
103+ export function _n < T extends string , P extends string > (
104+ singular : T ,
105+ plural : P ,
94106 number : number ,
95107 domain = TEXT_DOMAIN
96- ) {
97- return tannin . dcnpgettext ( domain , undefined , singular , plural , number ) ;
108+ ) : TranslatableText < T | P > {
109+ return tannin . dcnpgettext (
110+ domain ,
111+ undefined ,
112+ singular ,
113+ plural ,
114+ number
115+ ) as TranslatableText < T | P > ;
98116}
99117
100118/**
@@ -107,12 +125,18 @@ export function _n(
107125 * @param [domain] Text domain. Unique identifier for retrieving translated strings.
108126 * @return Translated text.
109127 */
110- export function _nx (
111- singular : string ,
112- plural : string ,
128+ export function _nx < T extends string , P extends string > (
129+ singular : T ,
130+ plural : P ,
113131 number : number ,
114132 context : string ,
115133 domain = TEXT_DOMAIN
116- ) {
117- return tannin . dcnpgettext ( domain , context , singular , plural , number ) ;
134+ ) : TranslatableText < T | P > {
135+ return tannin . dcnpgettext (
136+ domain ,
137+ context ,
138+ singular ,
139+ plural ,
140+ number
141+ ) as TranslatableText < T | P > ;
118142}
0 commit comments