@ckbox/i18n 0.0.2-dev.4 → 0.0.3
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/LICENSE.md +7 -0
- package/README.md +3 -0
- package/dist/index.d.ts +138 -0
- package/dist/index.js +4 -0
- package/package.json +4 -3
package/LICENSE.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
**CKBox** (https://ckeditor.com/ckbox/)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2003-2022, [CKSource Holding sp. z o.o.](https://cksource.com/) All rights reserved.
|
|
4
|
+
**CKBox** is licensed under a commercial license and is protected by copyright law. For more details about available licensing options please contact us at [sales@cksource.com](mailto:sales@cksource.com).
|
|
5
|
+
|
|
6
|
+
Trademarks
|
|
7
|
+
**CKBox** is a trademark of [CKSource Holding sp. z o.o.](https://cksource.com/) All other brand and product names are trademarks, registered trademarks or service marks of their respective holders.
|
package/README.md
ADDED
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Defines shape of all translation resources, e.g.:
|
|
8
|
+
* {
|
|
9
|
+
* en: {
|
|
10
|
+
* key: "translation"
|
|
11
|
+
* },
|
|
12
|
+
* pl: {
|
|
13
|
+
* key: "tłumaczenie"
|
|
14
|
+
* }
|
|
15
|
+
* }
|
|
16
|
+
*/
|
|
17
|
+
declare type I18nResources = Record<string, I18nTranslations>;
|
|
18
|
+
/**
|
|
19
|
+
* Defines shape of translations for a language, e.g.:
|
|
20
|
+
* {
|
|
21
|
+
* key: "translation"
|
|
22
|
+
* }
|
|
23
|
+
*/
|
|
24
|
+
declare type I18nTranslations = Record<string, string>;
|
|
25
|
+
interface I18nProps {
|
|
26
|
+
/**
|
|
27
|
+
* Toggles debug mode.
|
|
28
|
+
*/
|
|
29
|
+
debug?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Endpoint from which translation files will be loaded.
|
|
32
|
+
*/
|
|
33
|
+
loadURL?: (lang: string) => string;
|
|
34
|
+
/**
|
|
35
|
+
* Language code.
|
|
36
|
+
*/
|
|
37
|
+
lang?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Translation resources that will be set synchronously. Resources for other languages can be still loaded on demand.
|
|
40
|
+
*/
|
|
41
|
+
resources?: I18nResources;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
declare class Plural {
|
|
45
|
+
lang: string;
|
|
46
|
+
private _rules?;
|
|
47
|
+
constructor(lang: string);
|
|
48
|
+
/**
|
|
49
|
+
* Checks if plural form is supported for selected language.
|
|
50
|
+
*
|
|
51
|
+
* @returns flag indicating if plural is supported
|
|
52
|
+
*/
|
|
53
|
+
static isSupported: (lang: string) => boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Gets plural form of the translation key.
|
|
56
|
+
*
|
|
57
|
+
* @param key main part of the translation key
|
|
58
|
+
* @param plural desired plural form
|
|
59
|
+
* @returns plural form of the translation key
|
|
60
|
+
*/
|
|
61
|
+
getKey(key: string, plural: number): string;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
interface I18nContext {
|
|
65
|
+
/**
|
|
66
|
+
* Switch language.
|
|
67
|
+
*/
|
|
68
|
+
changeLang: (lang: string) => void;
|
|
69
|
+
/**
|
|
70
|
+
* Debug mode.
|
|
71
|
+
*/
|
|
72
|
+
debug: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Currently selected language.
|
|
75
|
+
*/
|
|
76
|
+
lang: string;
|
|
77
|
+
/**
|
|
78
|
+
* Stored translations.
|
|
79
|
+
*/
|
|
80
|
+
resources: I18nResources;
|
|
81
|
+
/**
|
|
82
|
+
* Plural utils.
|
|
83
|
+
*/
|
|
84
|
+
pluralUtils: Plural;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Defines React context for i18n and sets defaults.
|
|
88
|
+
*/
|
|
89
|
+
declare const I18nContext: React.Context<I18nContext>;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* `I18nProvider` component sets i18n context for all child components.
|
|
93
|
+
*/
|
|
94
|
+
declare const I18nProvider: React.FC<Props>;
|
|
95
|
+
interface Props extends I18nProps {
|
|
96
|
+
/**
|
|
97
|
+
* Pass-through children.
|
|
98
|
+
*/
|
|
99
|
+
children: React.ReactNode;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Gets resources from global scope.
|
|
104
|
+
*
|
|
105
|
+
* @param locale requested language
|
|
106
|
+
* @returns translations
|
|
107
|
+
*/
|
|
108
|
+
declare const getTranslations: (locale: string) => I18nTranslations;
|
|
109
|
+
|
|
110
|
+
interface TOpts<T extends boolean> {
|
|
111
|
+
/**
|
|
112
|
+
* Values to interpolate message with.
|
|
113
|
+
*/
|
|
114
|
+
values?: (string | number)[];
|
|
115
|
+
/**
|
|
116
|
+
* Indicates which plural to use.
|
|
117
|
+
*/
|
|
118
|
+
plural?: number;
|
|
119
|
+
/**
|
|
120
|
+
* Include html tags in message.
|
|
121
|
+
*/
|
|
122
|
+
processTags?: T;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Exposes basic translation utilities which can be used in components.
|
|
126
|
+
* Most notably, it exposes `t` function which outputs translated message for currently selected language.
|
|
127
|
+
*
|
|
128
|
+
* @returns translation utils
|
|
129
|
+
*/
|
|
130
|
+
declare const useTranslation: () => {
|
|
131
|
+
t: {
|
|
132
|
+
(key: string, opts?: TOpts<false>): string;
|
|
133
|
+
(key: string, opts?: TOpts<true>): React.ReactNode[];
|
|
134
|
+
};
|
|
135
|
+
lang: string;
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
export { I18nContext, I18nProps, I18nProvider, I18nResources, I18nTranslations, getTranslations, useTranslation };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
const _0x196143=_0x2772;(function(_0x251749,_0x215e3a){const _0x5b614f=_0x2772,_0x373036=_0x251749();while(!![]){try{const _0x2827a9=parseInt(_0x5b614f(0x190))/0x1+parseInt(_0x5b614f(0x1ab))/0x2+parseInt(_0x5b614f(0x19d))/0x3+parseInt(_0x5b614f(0x18b))/0x4+parseInt(_0x5b614f(0x1b2))/0x5*(-parseInt(_0x5b614f(0x1a3))/0x6)+-parseInt(_0x5b614f(0x192))/0x7+parseInt(_0x5b614f(0x18a))/0x8*(-parseInt(_0x5b614f(0x1bb))/0x9);if(_0x2827a9===_0x215e3a)break;else _0x373036['push'](_0x373036['shift']());}catch(_0x20b0b2){_0x373036['push'](_0x373036['shift']());}}}(_0x5119,0xe37a4));import*as _0x8d38d4 from'react';import{__rest}from'tslib';function _0x2772(_0x1d6e79,_0x2e0d73){const _0x5119dc=_0x5119();return _0x2772=function(_0x2772ea,_0x3117a6){_0x2772ea=_0x2772ea-0x188;let _0x2870cf=_0x5119dc[_0x2772ea];return _0x2870cf;},_0x2772(_0x1d6e79,_0x2e0d73);}import{sprintf}from'sprintf-js';class Plural{constructor(_0x109028){const _0xa26911=_0x2772;this[_0xa26911(0x19c)]=_0x109028;try{this[_0xa26911(0x1a9)]=new Intl[(_0xa26911(0x1b6))](_0x109028);}catch(_0x74b5bd){console[_0xa26911(0x19e)](_0xa26911(0x188));}}[_0x196143(0x1a7)](_0x4f4ab9,_0x5b11ff){const _0x2ebdb5=_0x196143;if(!this[_0x2ebdb5(0x1a9)])return _0x4f4ab9+'_one';const _0x121363=this[_0x2ebdb5(0x1a9)]['select'](_0x5b11ff);return _0x4f4ab9+'_'+_0x121363;}}Plural[_0x196143(0x1ae)]=_0x3ef644=>{try{return Intl['PluralRules']['supportedLocalesOf']([_0x3ef644])['length']>0x0;}catch(_0x317467){return![];}};const I18nContext=_0x8d38d4[_0x196143(0x1ad)]({'changeLang':()=>{},'debug':![],'lang':'en','resources':{},'pluralUtils':new Plural('en')});function reducer(_0x4ab1ed,_0x18cb8d){const _0x38d978=_0x196143;switch(_0x18cb8d[_0x38d978(0x18d)]){case _0x38d978(0x1ba):return Object[_0x38d978(0x1b5)](Object[_0x38d978(0x1b5)]({},_0x4ab1ed),{'lang':_0x18cb8d[_0x38d978(0x1b7)]});case _0x38d978(0x1a8):return Object[_0x38d978(0x1b5)](Object[_0x38d978(0x1b5)]({},_0x4ab1ed),{'lang':_0x18cb8d[_0x38d978(0x1b7)]['lang'],'resources':Object[_0x38d978(0x1b5)](Object[_0x38d978(0x1b5)]({},_0x4ab1ed[_0x38d978(0x1a0)]),{[_0x18cb8d[_0x38d978(0x1b7)][_0x38d978(0x19c)]]:_0x18cb8d['payload'][_0x38d978(0x1b4)]})});}}function _0x5119(){const _0x4b8518=['Plural\x20form\x20for\x20language\x20\x22','filter','then','20hrOzqG','keys','translations','assign','PluralRules','payload',']:\x20Translation\x20for\x20key\x20\x27','map','changeLang','308349fAlguc','Plural\x20rules\x20could\x20not\x20be\x20created.\x20Perhaps\x20`Intl.PluralRules`\x20is\x20not\x20supported?','pluralUtils','120DZRIXE','766824CkvSXr','undefined','type','children','useContext','282947ahlTHt','length','4654573AsAYsn','useEffect','createElement','indexOf','log','processTags','values','push','exec','json','lang','4541235fWlGxW','warn','CKBOX_TRANSLATIONS','resources','\x22\x20is\x20not\x20supported.','useReducer','495654taVTcd','charAt','code','text','getKey','loadTranslations','_rules','Provider','905280YwcwEr','slice','createContext','isSupported'];_0x5119=function(){return _0x4b8518;};return _0x5119();}const useI18n=({debug:debug=![],loadURL:_0x386b6d,lang:_0x55b8f6='en',resources:_0x1e8306={}})=>{const _0x4d3f6a=_0x196143,[{lang:_0x5ac6a0,resources:_0x262cdc},_0x4ae863]=_0x8d38d4[_0x4d3f6a(0x1a2)](reducer,{'lang':_0x55b8f6,'resources':_0x1e8306});_0x8d38d4[_0x4d3f6a(0x193)](()=>{const _0x5aba50=_0x4d3f6a,_0x453af8=Plural[_0x5aba50(0x1ae)](_0x5ac6a0);!_0x453af8&&console['warn'](_0x5aba50(0x1af)+_0x5ac6a0+_0x5aba50(0x1a1));},[_0x5ac6a0]),_0x8d38d4[_0x4d3f6a(0x193)](()=>{const _0x3a763b=_0x4d3f6a;if(_0x262cdc[_0x5ac6a0]||!_0x386b6d)return;fetch(_0x386b6d(_0x5ac6a0))[_0x3a763b(0x1b1)](_0x27c98b=>_0x27c98b[_0x3a763b(0x19b)]())[_0x3a763b(0x1b1)](_0x10f5dd=>{const _0x531ff1=_0x3a763b;_0x4ae863({'type':_0x531ff1(0x1a8),'payload':{'lang':_0x5ac6a0,'translations':_0x10f5dd}});});},[_0x5ac6a0,_0x386b6d,_0x262cdc]);const _0x4fb8eb=_0x2de34f=>{const _0x17fc93=_0x4d3f6a;_0x4ae863({'type':_0x17fc93(0x1ba),'payload':_0x2de34f});};return{'changeLang':_0x4fb8eb,'debug':debug,'lang':_0x5ac6a0,'pluralUtils':new Plural(_0x5ac6a0),'resources':_0x262cdc};},I18nProvider=_0xd189e6=>{const _0x53c421=_0x196143;var {children:_0x4f2bed}=_0xd189e6,_0x834e85=__rest(_0xd189e6,[_0x53c421(0x18e)]);const _0x487ea8=useI18n(_0x834e85);return _0x8d38d4[_0x53c421(0x194)](I18nContext[_0x53c421(0x1aa)],{'value':_0x487ea8},_0x4f2bed);},getTranslations=_0x33e0d7=>{const _0x23ba93=_0x196143;var _0xf37143,_0x568a51;const _0x3f6097=typeof globalThis!==_0x23ba93(0x18c)?globalThis:global||self;return(_0x568a51=(_0xf37143=_0x3f6097===null||_0x3f6097===void 0x0?void 0x0:_0x3f6097[_0x23ba93(0x19f)])===null||_0xf37143===void 0x0?void 0x0:_0xf37143[_0x33e0d7])!==null&&_0x568a51!==void 0x0?_0x568a51:{};},TAG_REGEX=/<[a-zA-Z0-9\-!/](?:"[^"]*"|'[^']*'|[^'">])*>/g,ALLOWED_TAGS=['em','strong',_0x196143(0x1a5)],getMsg=(_0x172b5f,_0x52da84={},_0x50cb95)=>{const _0x80a3c=_0x196143,_0x5b5396=_0x50cb95['plural'];if(_0x52da84[_0x172b5f]&&_0x5b5396===undefined)return{'found':!![],'msg':_0x52da84[_0x172b5f]};const _0x2d3563=Object[_0x80a3c(0x1b3)](_0x52da84)[_0x80a3c(0x1b0)](_0x47c6ff=>_0x47c6ff[_0x80a3c(0x195)](_0x172b5f)===0x0);if(_0x2d3563['length']===0x0||_0x5b5396===undefined)return{'found':![],'msg':_0x172b5f};const _0x29f208=_0x50cb95[_0x80a3c(0x189)][_0x80a3c(0x1a7)](_0x172b5f,_0x5b5396);return{'found':!![],'msg':_0x52da84[_0x29f208]};},parseMsgTags=_0x6976fa=>{const _0x849a3d=_0x196143,_0x54f5c8=[];let _0xba7b96=0x0,_0x147a13;while((_0x147a13=TAG_REGEX[_0x849a3d(0x19a)](_0x6976fa))!==null){const _0x53655d=_0x147a13[0x0],{index:_0x384c96}=_0x147a13,_0x3c89aa=_0x53655d[_0x849a3d(0x1a4)](0x1)==='/',_0x2ec8bd=_0x3c89aa?_0x53655d[_0x849a3d(0x1ac)](0x2,-0x1):_0x53655d['slice'](0x1,-0x1),_0x36eaa5=ALLOWED_TAGS['includes'](_0x2ec8bd);if(!_0x36eaa5)continue;const _0x3ae3e5=_0x6976fa['slice'](_0xba7b96,_0x384c96);if(!_0x3ae3e5){_0xba7b96=_0x384c96+_0x53655d[_0x849a3d(0x191)];continue;}_0x3c89aa?_0x54f5c8[_0x849a3d(0x199)]({'type':'tag','name':_0x53655d[_0x849a3d(0x1ac)](0x2,-0x1),'content':_0x3ae3e5}):_0x54f5c8['push']({'type':'text','content':_0x3ae3e5}),_0xba7b96=_0x384c96+_0x53655d['length'];}return _0xba7b96<_0x6976fa[_0x849a3d(0x191)]&&_0x54f5c8[_0x849a3d(0x199)]({'type':_0x849a3d(0x1a6),'content':_0x6976fa[_0x849a3d(0x1ac)](_0xba7b96)}),_0x54f5c8;};function formatMsgWithTags(_0x4bc29a){const _0xb4f157=_0x196143,_0x5a4a45=parseMsgTags(_0x4bc29a),_0x2b9a64=_0x5a4a45[_0xb4f157(0x1b9)](({content:_0x3eed08,type:_0x568e35,name:_0x27ff3c},_0x59b472)=>{const _0x4b85e8=_0xb4f157,_0x1a11f9=_0x568e35!=='text'&&_0x27ff3c?_0x27ff3c:_0x8d38d4['Fragment'];return _0x8d38d4[_0x4b85e8(0x194)](_0x1a11f9,{'key':''+_0x59b472},_0x3eed08);});return _0x2b9a64;}function formatMsg(_0x5ed8c5,_0x3e0d23,_0x5be014){const _0x3b8d16=sprintf(_0x5ed8c5,..._0x3e0d23!==null&&_0x3e0d23!==void 0x0?_0x3e0d23:[]);if(!_0x5be014)return _0x3b8d16;return formatMsgWithTags(_0x3b8d16);}const useTranslation=()=>{const _0x23a994=_0x196143,{lang:_0x43f09c,debug:_0x787384,pluralUtils:_0xb958fe,resources:_0x4012c6}=_0x8d38d4[_0x23a994(0x18f)](I18nContext);function _0x4a9598(_0x5503f5,_0x4072cd){const _0x3dc589=_0x23a994,{found:_0x36fa27,msg:_0x564295}=getMsg(_0x5503f5,_0x4012c6[_0x43f09c],{'plural':_0x4072cd===null||_0x4072cd===void 0x0?void 0x0:_0x4072cd['plural'],'pluralUtils':_0xb958fe});_0x787384&&!_0x36fa27&&console[_0x3dc589(0x196)]('['+_0x43f09c+_0x3dc589(0x1b8)+_0x5503f5+'\x27\x20is\x20missing.');if(_0x4072cd===null||_0x4072cd===void 0x0?void 0x0:_0x4072cd[_0x3dc589(0x197)])return formatMsg(_0x564295,_0x4072cd===null||_0x4072cd===void 0x0?void 0x0:_0x4072cd[_0x3dc589(0x198)],!![]);return formatMsg(_0x564295,_0x4072cd===null||_0x4072cd===void 0x0?void 0x0:_0x4072cd['values'],![]);}return{'t':_0x4a9598,'lang':_0x43f09c};};export{I18nContext,I18nProvider,getTranslations,useTranslation};
|
package/package.json
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ckbox/i18n",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "i18n functionality",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
-
"license": "
|
|
7
|
+
"license": "SEE LICENSE IN LICENSE.md",
|
|
8
8
|
"peerDependencies": {
|
|
9
9
|
"react": "^18"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"sprintf-js": "^1.1.2",
|
|
13
13
|
"tslib": "^2.4.0"
|
|
14
|
-
}
|
|
14
|
+
},
|
|
15
|
+
"readme": "## @ckbox/i18n\n\nTo be filled in.\n"
|
|
15
16
|
}
|