@ckbox/i18n 0.0.2-dev.3 → 0.0.2

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 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
@@ -0,0 +1,3 @@
1
+ ## @ckbox/i18n
2
+
3
+ To be filled in.
@@ -0,0 +1,117 @@
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
+ interface I18nContextShape {
45
+ /**
46
+ * Switch language.
47
+ */
48
+ changeLang: (lang: string) => void;
49
+ /**
50
+ * Debug mode.
51
+ */
52
+ debug: boolean;
53
+ /**
54
+ * Currently selected language.
55
+ */
56
+ lang: string;
57
+ /**
58
+ * Stored translations.
59
+ */
60
+ resources: I18nResources;
61
+ }
62
+ /**
63
+ * Defines React context for i18n and sets defaults.
64
+ */
65
+ declare const I18nContext: React.Context<I18nContextShape>;
66
+
67
+ /**
68
+ * `I18nProvider` component sets i18n context for all child components.
69
+ */
70
+ declare const I18nProvider: React.FC<Props>;
71
+ interface Props extends I18nProps {
72
+ /**
73
+ * Pass-through children.
74
+ */
75
+ children: React.ReactNode;
76
+ }
77
+
78
+ /**
79
+ * Gets resources from global scope.
80
+ *
81
+ * @param locale requested language
82
+ * @returns translations
83
+ */
84
+ declare const getTranslations: (locale: string) => I18nTranslations;
85
+
86
+ interface MsgOpts {
87
+ /**
88
+ * Indicates which plural to use.
89
+ */
90
+ plural?: number;
91
+ }
92
+
93
+ interface TOpts<T extends boolean> extends MsgOpts {
94
+ /**
95
+ * Values to interpolate message with.
96
+ */
97
+ values?: (string | number)[];
98
+ /**
99
+ * Include html tags in message.
100
+ */
101
+ processTags?: T;
102
+ }
103
+ /**
104
+ * Exposes basic translation utilities which can be used in components.
105
+ * Most notably, it exposes `t` function which outputs translated message for currently selected language.
106
+ *
107
+ * @returns translation utils
108
+ */
109
+ declare const useTranslation: () => {
110
+ t: {
111
+ (key: string, opts?: TOpts<false>): string;
112
+ (key: string, opts?: TOpts<true>): React.ReactNode[];
113
+ };
114
+ lang: string;
115
+ };
116
+
117
+ export { I18nContext, I18nContextShape, 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 _0x7c8c5f=_0x2c18;(function(_0x202fa2,_0x306854){const _0x431794=_0x2c18,_0x30e5e8=_0x202fa2();while(!![]){try{const _0xc7a74d=-parseInt(_0x431794(0x121))/0x1+parseInt(_0x431794(0x11e))/0x2+-parseInt(_0x431794(0x109))/0x3+parseInt(_0x431794(0x103))/0x4+-parseInt(_0x431794(0x117))/0x5+-parseInt(_0x431794(0x108))/0x6+parseInt(_0x431794(0x123))/0x7*(parseInt(_0x431794(0x10d))/0x8);if(_0xc7a74d===_0x306854)break;else _0x30e5e8['push'](_0x30e5e8['shift']());}catch(_0x11e457){_0x30e5e8['push'](_0x30e5e8['shift']());}}}(_0x3d11,0x7cf08));import*as _0x1b9f41 from'react';import{__rest}from'tslib';import{sprintf}from'sprintf-js';const I18nContext=_0x1b9f41[_0x7c8c5f(0x120)]({'changeLang':()=>{},'debug':![],'lang':'en','resources':{}});function _0x2c18(_0x543884,_0x51aedd){const _0x3d1139=_0x3d11();return _0x2c18=function(_0x2c18f7,_0x387ca5){_0x2c18f7=_0x2c18f7-0xfe;let _0x1f5d9e=_0x3d1139[_0x2c18f7];return _0x1f5d9e;},_0x2c18(_0x543884,_0x51aedd);}function reducer(_0xf65c60,_0xd01b){const _0x20e7db=_0x7c8c5f;switch(_0xd01b['type']){case _0x20e7db(0xff):return Object[_0x20e7db(0x113)](Object[_0x20e7db(0x113)]({},_0xf65c60),{'lang':_0xd01b[_0x20e7db(0x11c)]});case _0x20e7db(0x10e):return Object[_0x20e7db(0x113)](Object[_0x20e7db(0x113)]({},_0xf65c60),{'lang':_0xd01b['payload'][_0x20e7db(0x115)],'resources':Object[_0x20e7db(0x113)](Object['assign']({},_0xf65c60['resources']),{[_0xd01b[_0x20e7db(0x11c)][_0x20e7db(0x115)]]:_0xd01b['payload'][_0x20e7db(0x102)]})});}}const useI18n=({debug:debug=![],loadURL:_0x16b227,lang:_0x306d46='en',resources:_0x591ed3={}})=>{const _0x48795c=_0x7c8c5f,[{lang:_0x2b5740,resources:_0x4211f9},_0x25b1ce]=_0x1b9f41['useReducer'](reducer,{'lang':_0x306d46,'resources':_0x591ed3});_0x1b9f41[_0x48795c(0x106)](()=>{const _0x26ad74=_0x48795c;if(_0x4211f9[_0x2b5740]||!_0x16b227)return;fetch(_0x16b227(_0x2b5740))[_0x26ad74(0x11b)](_0x1ab56f=>_0x1ab56f[_0x26ad74(0x10c)]())[_0x26ad74(0x11b)](_0xbb0c5b=>{_0x25b1ce({'type':'loadTranslations','payload':{'lang':_0x2b5740,'translations':_0xbb0c5b}});});},[_0x2b5740,_0x16b227,_0x4211f9]);const _0x93de3d=_0xe6eaa9=>{_0x25b1ce({'type':'changeLang','payload':_0xe6eaa9});};return{'changeLang':_0x93de3d,'debug':debug,'lang':_0x2b5740,'resources':_0x4211f9};},I18nProvider=_0xe52e08=>{const _0x4d8d20=_0x7c8c5f;var {children:_0x33a492}=_0xe52e08,_0xcf525a=__rest(_0xe52e08,['children']);const _0x15ee32=useI18n(_0xcf525a);return _0x1b9f41[_0x4d8d20(0x125)](I18nContext[_0x4d8d20(0x105)],{'value':_0x15ee32},_0x33a492);},getTranslations=_0x556ab8=>{const _0x39dedf=_0x7c8c5f;var _0x3f2da9,_0x44de6d;const _0x25240a=typeof globalThis!==_0x39dedf(0x116)?globalThis:global||self;return(_0x44de6d=(_0x3f2da9=_0x25240a===null||_0x25240a===void 0x0?void 0x0:_0x25240a[_0x39dedf(0x111)])===null||_0x3f2da9===void 0x0?void 0x0:_0x3f2da9[_0x556ab8])!==null&&_0x44de6d!==void 0x0?_0x44de6d:{};},defaultPlural=(_0x42157c,_0x5b2f89=0x1)=>{const _0x32fc17=_0x7c8c5f;return _0x5b2f89===0x1?_0x42157c:_0x42157c+_0x32fc17(0xfe);},plPlural=(_0x53a19e,_0x2405cc=0x1)=>{if(_0x2405cc===0x1)return _0x53a19e+'_0';else{if(_0x2405cc%0xa>=0x2&&_0x2405cc%0xa<=0x4&&(_0x2405cc%0x64<0xc||_0x2405cc%0x64>0xe))return _0x53a19e+'_1';else return _0x2405cc!=0x1&&_0x2405cc%0xa>=0x0&&_0x2405cc%0xa<=0x1||_0x2405cc%0xa>=0x5&&_0x2405cc%0xa<=0x9||_0x2405cc%0x64>=0xc&&_0x2405cc%0x64<=0xe?_0x53a19e+'_2':_0x53a19e+'_3';}},plurals={'default':defaultPlural,'en':defaultPlural,'pl':plPlural},getPluralKeyFn=_0x4d8dc4=>{return plurals[_0x4d8dc4]?plurals[_0x4d8dc4]:plurals['default'];},TAG_REGEX=/<[a-zA-Z0-9\-!/](?:"[^"]*"|'[^']*'|[^'">])*>/g,ALLOWED_TAGS=['em',_0x7c8c5f(0x11a),_0x7c8c5f(0x112)],getMsg=(_0x28edb1,_0x5544e5,_0x385c57={},_0xb282df)=>{const _0x28fc09=_0x7c8c5f;if(_0x385c57[_0x5544e5]&&(_0xb282df===null||_0xb282df===void 0x0?void 0x0:_0xb282df[_0x28fc09(0x11f)])===undefined)return{'found':!![],'msg':_0x385c57[_0x5544e5]};const _0x52daac=Object['keys'](_0x385c57)[_0x28fc09(0x104)](_0x20fbfe=>_0x20fbfe[_0x28fc09(0x100)](_0x5544e5)===0x0);if(_0x52daac[_0x28fc09(0x10a)]===0x0)return{'found':![],'msg':_0x5544e5};const _0x41e4fe=getPluralKeyFn(_0x28edb1)(_0x5544e5,_0xb282df===null||_0xb282df===void 0x0?void 0x0:_0xb282df['plural']);return{'found':!![],'msg':_0x385c57[_0x41e4fe]};},parseMsgTags=_0x4a683b=>{const _0x493011=_0x7c8c5f,_0x151ebe=[];let _0x3ea327=0x0,_0x37214;while((_0x37214=TAG_REGEX[_0x493011(0x10b)](_0x4a683b))!==null){const _0x2dad28=_0x37214[0x0],{index:_0x45c15b}=_0x37214,_0x38499d=_0x2dad28['charAt'](0x1)==='/',_0x15015d=_0x38499d?_0x2dad28[_0x493011(0x10f)](0x2,-0x1):_0x2dad28[_0x493011(0x10f)](0x1,-0x1),_0x38339b=ALLOWED_TAGS['includes'](_0x15015d);if(!_0x38339b)continue;const _0x5d4cc1=_0x4a683b['slice'](_0x3ea327,_0x45c15b);if(!_0x5d4cc1){_0x3ea327=_0x45c15b+_0x2dad28[_0x493011(0x10a)];continue;}_0x38499d?_0x151ebe[_0x493011(0x118)]({'type':_0x493011(0x122),'name':_0x2dad28[_0x493011(0x10f)](0x2,-0x1),'content':_0x5d4cc1}):_0x151ebe[_0x493011(0x118)]({'type':_0x493011(0x101),'content':_0x5d4cc1}),_0x3ea327=_0x45c15b+_0x2dad28['length'];}return _0x3ea327<_0x4a683b['length']&&_0x151ebe[_0x493011(0x118)]({'type':_0x493011(0x101),'content':_0x4a683b[_0x493011(0x10f)](_0x3ea327)}),_0x151ebe;};function formatMsgWithTags(_0x46434f){const _0x30a800=parseMsgTags(_0x46434f),_0x251d05=_0x30a800['map'](({content:_0x19d22f,type:_0x1861ff,name:_0x324306},_0x53de45)=>{const _0x3dcd15=_0x2c18,_0x46911f=_0x1861ff!==_0x3dcd15(0x101)&&_0x324306?_0x324306:_0x1b9f41[_0x3dcd15(0x11d)];return _0x1b9f41[_0x3dcd15(0x125)](_0x46911f,{'key':''+_0x53de45},_0x19d22f);});return _0x251d05;}function _0x3d11(){const _0x4d7acc=['CKBOX_TRANSLATIONS','code','assign',']:\x20Translation\x20for\x20key\x20\x27','lang','undefined','941295PRKSDK','push','values','strong','then','payload','Fragment','601022PATUlO','plural','createContext','80628BgVLXN','tag','1106dCaCrp','processTags','createElement','_plural','changeLang','indexOf','text','translations','3051756ckDuNd','filter','Provider','useEffect','\x27\x20is\x20missing.','4019832KXNGtC','2619141EnHdWL','length','exec','json','63808SSEjxH','loadTranslations','slice','useContext'];_0x3d11=function(){return _0x4d7acc;};return _0x3d11();}function formatMsg(_0x5b93f4,_0x307bcd,_0x440a92){const _0x202fc7=sprintf(_0x5b93f4,..._0x307bcd!==null&&_0x307bcd!==void 0x0?_0x307bcd:[]);if(!_0x440a92)return _0x202fc7;return formatMsgWithTags(_0x202fc7);}const useTranslation=()=>{const _0x229b63=_0x7c8c5f,{lang:_0x3e9762,debug:_0x3f8625,resources:_0x46b1b0}=_0x1b9f41[_0x229b63(0x110)](I18nContext);function _0x9c9d37(_0x4758e7,_0x1390b2){const _0x2ee5d8=_0x229b63,{found:_0x5a331a,msg:_0x2455e9}=getMsg(_0x3e9762,_0x4758e7,_0x46b1b0[_0x3e9762],{'plural':_0x1390b2===null||_0x1390b2===void 0x0?void 0x0:_0x1390b2[_0x2ee5d8(0x11f)]});_0x3f8625&&!_0x5a331a&&console['log']('['+_0x3e9762+_0x2ee5d8(0x114)+_0x4758e7+_0x2ee5d8(0x107));if(_0x1390b2===null||_0x1390b2===void 0x0?void 0x0:_0x1390b2[_0x2ee5d8(0x124)])return formatMsg(_0x2455e9,_0x1390b2===null||_0x1390b2===void 0x0?void 0x0:_0x1390b2['values'],!![]);return formatMsg(_0x2455e9,_0x1390b2===null||_0x1390b2===void 0x0?void 0x0:_0x1390b2[_0x2ee5d8(0x119)],![]);}return{'t':_0x9c9d37,'lang':_0x3e9762};};export{I18nContext,I18nProvider,getTranslations,useTranslation};
package/package.json CHANGED
@@ -1,15 +1,16 @@
1
1
  {
2
2
  "name": "@ckbox/i18n",
3
- "version": "0.0.2-dev.3",
3
+ "version": "0.0.2",
4
4
  "description": "i18n functionality",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
- "license": "UNLICENSED",
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
  }