piral-translate 0.15.0-alpha.3975 → 0.15.0-alpha.4028

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.
@@ -1,3 +1,2 @@
1
- import type { ComponentType } from 'react';
2
- import { LanguagesPickerProps } from './types';
3
- export declare const PiralLanguagesPicker: ComponentType<LanguagesPickerProps>;
1
+ /// <reference types="react" />
2
+ export declare const PiralLanguagesPicker: import("react").ComponentType<import("./types").LanguagesPickerProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,CAAC,MAAM,oBAAoB,GAAwC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC"}
@@ -1,3 +1,2 @@
1
- import type { ComponentType } from 'react';
2
- import { LanguagesPickerProps } from './types';
3
- export declare const PiralLanguagesPicker: ComponentType<LanguagesPickerProps>;
1
+ /// <reference types="react" />
2
+ export declare const PiralLanguagesPicker: import("react").ComponentType<import("./types").LanguagesPickerProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.tsx"],"names":[],"mappings":";;;AACA,2CAA+C;AAGlC,QAAA,oBAAoB,GAAwC,IAAA,8BAAiB,EAAC,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.tsx"],"names":[],"mappings":";;;AAAA,2CAA+C;AAElC,QAAA,oBAAoB,GAAG,IAAA,8BAAiB,EAAC,iBAAiB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "piral-translate",
3
- "version": "0.15.0-alpha.3975",
3
+ "version": "0.15.0-alpha.4028",
4
4
  "description": "Plugin for providing translated messages in Piral.",
5
5
  "keywords": [
6
6
  "piral",
@@ -47,12 +47,12 @@
47
47
  },
48
48
  "devDependencies": {
49
49
  "@types/react": "^17.0.0",
50
- "piral-core": "0.15.0-alpha.3975",
50
+ "piral-core": "0.15.0-alpha.4028",
51
51
  "react": "^17.0.1"
52
52
  },
53
53
  "peerDependencies": {
54
54
  "piral-core": "0.14.x",
55
55
  "react": ">=16.8.0"
56
56
  },
57
- "gitHead": "461d63cd1957359472018b32a56778da716d3406"
57
+ "gitHead": "1ba5128a17c1ed2276cf6eccaf53f59339888336"
58
58
  }
@@ -1 +1 @@
1
- var piralTranslate=(()=>{var G=Object.create;var c=Object.defineProperty,F=Object.defineProperties,E=Object.getOwnPropertyDescriptor,R=Object.getOwnPropertyDescriptors,$=Object.getOwnPropertyNames,k=Object.getOwnPropertySymbols,D=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable;var y=(t,e,a)=>e in t?c(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a,g=(t,e)=>{for(var a in e||(e={}))P.call(e,a)&&y(t,a,e[a]);if(k)for(var a of k(e))O.call(e,a)&&y(t,a,e[a]);return t},u=(t,e)=>F(t,R(e)),x=t=>c(t,"__esModule",{value:!0});var i=(t=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(t,{get:(e,a)=>(typeof require!="undefined"?require:e)[a]}):t)(function(t){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var w=(t,e)=>{x(t);for(var a in e)c(t,a,{get:e[a],enumerable:!0})},B=(t,e,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of $(e))!P.call(t,n)&&n!=="default"&&c(t,n,{get:()=>e[n],enumerable:!(a=E(e,n))||a.enumerable});return t},l=t=>B(x(c(t!=null?G(D(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var J={};w(J,{Languages:()=>H,PiralLanguagesPicker:()=>b,createLocaleApi:()=>I,getUserLocale:()=>V,setupLocalizer:()=>M,useDynamicLanguage:()=>Z,useTranslate:()=>q});var z=l(i("piral-core")),b=(0,z.getPiralComponent)("LanguagesPicker");function C(t){return{selectLanguage(e,a){e.dispatch(n=>{t.language=a;let r=n.language.selected,s=a;return setTimeout(()=>{e.emit("select-language",{previousLanguage:r,currentLanguage:s})},0),u(g({},n),{language:u(g({},n.language),{loading:a===void 0,selected:a})})})},translate(e,a,n){return t&&t.localizeGlobal(a,n)},setTranslations(e,a,n){t.messages[a]=n.global;for(let r of n.locals){let s=e.apis[r.name];if(s){let o=s.getTranslations();o[a]=r.value,s.setTranslations(o)}}},getTranslations(e,a){return{global:t.messages[a],locals:Object.keys(e.apis).map(n=>({name:n,value:e.apis[n].getTranslations()[a]}))}}}}function U(t,e){return e?"...":""}function j(t,e){return t.replace(/{{\s*([A-Za-z0-9_.]+)\s*}}/g,(a,n)=>n in e?e[n]||"":`{{${n}}}`)}var T=class{constructor(e,a,n,r=U){this.messages=e;this.language=a;this.languages=n;this.fallback=r}localizeGlobal(e,a){return this.localizeBase(e,a)}localizeLocal(e,a,n){let r=this.translateMessage(e,a,n);return r===void 0?this.localizeBase(a,n):r}localizeBase(e,a){let n=this.translateMessage(this.messages,e,a);return n===void 0?this.fallback(e,this.language):n}translateMessage(e,a,n){let r=this.language,s=r&&e[r],o=s&&s[a];return o&&(n?j(o,n):o)}};var h=l(i("piral-core")),v=t=>(0,h.defaultRender)(void 0);function M(t={}){let e=t.messages||{},a=Object.keys(e),n=a[0]||"en",r=t.language,o=(typeof r=="function"?r(a,n,"en"):r)||n;return new T(e,o,a.length?a:[o],t.fallback)}function I(t=M()){return e=>(e.defineActions(C(t)),e.dispatch(a=>u(g({},a),{components:g({LanguagesPicker:v},a.components),language:{loading:!1,available:t.languages,selected:t.language}})),a=>{let n={};return{getCurrentLanguage(r){let s=e.readState(o=>o.language.selected);if(r){r(s);let o=f=>{r(f.currentLanguage)};return a.on("select-language",o),()=>a.off("select-language",o)}return s},setTranslations(r){n=r},getTranslations(){return n},translate(r,s){return t.localizeLocal(n,r,s)}}})}var m=l(i("piral-core"));function N(t,e){let a=m.cookie.getItem("_culture")||m.storage.getItem("locale");return a||(e?e.toLowerCase().substring(0,2):navigator.language?navigator.language.substring(0,2):t)}function V(t,e,a){let n=N(e,a||"");return t.indexOf(n)!==-1?n:e}var L=l(i("react")),p=l(i("piral-core"));function Z(t,e){let[a,n]=(0,L.useState)(t),{selectLanguage:r,setTranslations:s,getTranslations:o}=(0,p.useActions)();return(0,L.useEffect)(()=>{let f=!0,_=o(a);return r(void 0),e(a,_).then(d=>{f&&(s(a,d),r(a))},d=>console.error(d)),()=>{f=!1}},[a]),[a,n]}function q(){let{translate:t}=(0,p.useActions)();return(0,p.useGlobalState)(e=>e.language.selected),t}var S=l(i("react")),A=l(i("piral-core"));var H=()=>{let{available:t,selected:e}=(0,A.useGlobalState)(a=>a.language);return S.createElement(b,{selected:e,available:t})};return J;})();
1
+ var piralTranslate=(()=>{var G=Object.create;var c=Object.defineProperty,F=Object.defineProperties,E=Object.getOwnPropertyDescriptor,R=Object.getOwnPropertyDescriptors,$=Object.getOwnPropertyNames,k=Object.getOwnPropertySymbols,D=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable;var P=(t,e,a)=>e in t?c(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a,g=(t,e)=>{for(var a in e||(e={}))x.call(e,a)&&P(t,a,e[a]);if(k)for(var a of k(e))O.call(e,a)&&P(t,a,e[a]);return t},u=(t,e)=>F(t,R(e)),y=t=>c(t,"__esModule",{value:!0});var i=(t=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(t,{get:(e,a)=>(typeof require!="undefined"?require:e)[a]}):t)(function(t){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var w=(t,e)=>{y(t);for(var a in e)c(t,a,{get:e[a],enumerable:!0})},B=(t,e,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of $(e))!x.call(t,n)&&n!=="default"&&c(t,n,{get:()=>e[n],enumerable:!(a=E(e,n))||a.enumerable});return t},l=t=>B(y(c(t!=null?G(D(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var J={};w(J,{Languages:()=>H,PiralLanguagesPicker:()=>b,createLocaleApi:()=>I,getUserLocale:()=>V,setupLocalizer:()=>M,useDynamicLanguage:()=>Z,useTranslate:()=>q});var z=l(i("piral-core")),b=(0,z.getPiralComponent)("LanguagesPicker");function h(t){return{selectLanguage(e,a){e.dispatch(n=>{t.language=a;let r=n.language.selected,s=a;return setTimeout(()=>{e.emit("select-language",{previousLanguage:r,currentLanguage:s})},0),u(g({},n),{language:u(g({},n.language),{loading:a===void 0,selected:a})})})},translate(e,a,n){return t&&t.localizeGlobal(a,n)},setTranslations(e,a,n){t.messages[a]=n.global;for(let r of n.locals){let s=e.apis[r.name];if(s){let o=s.getTranslations();o[a]=r.value,s.setTranslations(o)}}},getTranslations(e,a){return{global:t.messages[a],locals:Object.keys(e.apis).map(n=>({name:n,value:e.apis[n].getTranslations()[a]}))}}}}function U(t,e){return e?"...":""}function j(t,e){return t.replace(/{{\s*([A-Za-z0-9_.]+)\s*}}/g,(a,n)=>n in e?e[n]||"":`{{${n}}}`)}var T=class{constructor(e,a,n,r=U){this.messages=e;this.language=a;this.languages=n;this.fallback=r}localizeGlobal(e,a){return this.localizeBase(e,a)}localizeLocal(e,a,n){let r=this.translateMessage(e,a,n);return r===void 0?this.localizeBase(a,n):r}localizeBase(e,a){let n=this.translateMessage(this.messages,e,a);return n===void 0?this.fallback(e,this.language):n}translateMessage(e,a,n){let r=this.language,s=r&&e[r],o=s&&s[a];return o&&(n?j(o,n):o)}};var v=l(i("piral-core")),C=t=>(0,v.defaultRender)(void 0);function M(t={}){let e=t.messages||{},a=Object.keys(e),n=a[0]||"en",r=t.language,o=(typeof r=="function"?r(a,n,"en"):r)||n;return new T(e,o,a.length?a:[o],t.fallback)}function I(t=M()){return e=>(e.defineActions(h(t)),e.dispatch(a=>u(g({},a),{components:g({LanguagesPicker:C},a.components),language:{loading:!1,available:t.languages,selected:t.language}})),a=>{let n={};return{getCurrentLanguage(r){let s=e.readState(o=>o.language.selected);if(r){r(s);let o=f=>{r(f.currentLanguage)};return a.on("select-language",o),()=>a.off("select-language",o)}return s},setTranslations(r){n=r},getTranslations(){return n},translate(r,s){return t.localizeLocal(n,r,s)}}})}var m=l(i("piral-core"));function N(t,e){let a=m.cookie.getItem("_culture")||m.storage.getItem("locale");return a||(e?e.toLowerCase().substring(0,2):navigator.language?navigator.language.substring(0,2):t)}function V(t,e,a){let n=N(e,a||"");return t.indexOf(n)!==-1?n:e}var L=l(i("react")),p=l(i("piral-core"));function Z(t,e){let[a,n]=(0,L.useState)(t),{selectLanguage:r,setTranslations:s,getTranslations:o}=(0,p.useActions)();return(0,L.useEffect)(()=>{let f=!0,_=o(a);return r(void 0),e(a,_).then(d=>{f&&(s(a,d),r(a))},d=>console.error(d)),()=>{f=!1}},[a]),[a,n]}function q(){let{translate:t}=(0,p.useActions)();return(0,p.useGlobalState)(e=>e.language.selected),t}var S=l(i("react")),A=l(i("piral-core"));var H=()=>{let{available:t,selected:e}=(0,A.useGlobalState)(a=>a.language);return S.createElement(b,{selected:e,available:t})};return J;})();
@@ -1,4 +1,4 @@
1
- import { Atom, deref } from '@dbeining/react-atom';
1
+ import { Atom, deref, swap } from '@dbeining/react-atom';
2
2
  import { createListener } from 'piral-base';
3
3
  import { createActions as ca } from 'piral-core';
4
4
  import { createActions } from './actions';
@@ -36,4 +36,132 @@ describe('Translation Action Module', () => {
36
36
  },
37
37
  });
38
38
  });
39
+
40
+ it('translate', () => {
41
+ const state = Atom.of({
42
+ foo: 5,
43
+ language: {
44
+ foo: 10,
45
+ loading: false,
46
+ selected: 'fr',
47
+ },
48
+ });
49
+ const localizer = {
50
+ language: 'fr',
51
+ languages: ['fr'],
52
+ messages: {
53
+ fr: {
54
+ bar: 'bár',
55
+ },
56
+ },
57
+ localizeGlobal(key, variables) {
58
+ const messages = {
59
+ fr: {
60
+ bar: 'bár',
61
+ },
62
+ };
63
+ return messages.fr[key];
64
+ },
65
+ localizeLocal() {
66
+ return '';
67
+ },
68
+ };
69
+ const actions = createActions(localizer);
70
+ const ctx = ca(state, createListener({}));
71
+ const result = actions.translate(ctx, 'bar');
72
+ expect(result).toEqual('bár');
73
+ });
74
+
75
+ it('setTranslations sets translations to the global translations', () => {
76
+ const state = Atom.of({
77
+ foo: 5,
78
+ language: {
79
+ foo: 10,
80
+ loading: false,
81
+ selected: 'fr',
82
+ },
83
+ });
84
+ const localizer = {
85
+ language: 'de',
86
+ languages: ['de'],
87
+ messages: {
88
+ de: {},
89
+ },
90
+ localizeGlobal() {
91
+ return '';
92
+ },
93
+ localizeLocal() {
94
+ return '';
95
+ },
96
+ };
97
+ const ctx = {
98
+ emit: jest.fn(),
99
+ state,
100
+ dispatch(update) {
101
+ swap(state, update);
102
+ },
103
+ apis: {
104
+ firstApi: {
105
+ getTranslations: () => {
106
+ return localizer.messages;
107
+ },
108
+ setTranslations: async (translations) => {
109
+ localizer.messages = await translations;
110
+ },
111
+ },
112
+ },
113
+ };
114
+ const actions = createActions(localizer);
115
+ const data = {
116
+ global: {},
117
+ locals: [{ name: 'firstApi', value: { car: 'Auto', table: 'Tisch' } }],
118
+ };
119
+ actions.setTranslations(ctx, 'de', data);
120
+ expect(localizer.messages).toEqual({
121
+ de: { car: 'Auto', table: 'Tisch' },
122
+ });
123
+ });
124
+
125
+ it('getTranslations returns translations', () => {
126
+ const state = Atom.of({
127
+ foo: 5,
128
+ language: {
129
+ foo: 10,
130
+ loading: false,
131
+ selected: 'fr',
132
+ },
133
+ });
134
+ const localizer = {
135
+ language: 'fr',
136
+ languages: ['fr'],
137
+ messages: {
138
+ fr: {
139
+ foo: 'bár',
140
+ },
141
+ },
142
+ localizeGlobal() {
143
+ return '';
144
+ },
145
+ localizeLocal() {
146
+ return '';
147
+ },
148
+ };
149
+ const actions = createActions(localizer);
150
+ const ctx = {
151
+ emit: jest.fn(),
152
+ state,
153
+ dispatch(update) {
154
+ swap(state, update);
155
+ },
156
+ apis: {
157
+ firstApi: {
158
+ getTranslations: () => {
159
+ return localizer.messages;
160
+ },
161
+ },
162
+ },
163
+ };
164
+ const result = actions.getTranslations(ctx, 'fr');
165
+ expect(result).toEqual({ global: { foo: 'bár' }, locals: [{ name: 'firstApi', value: { foo: 'bár' } }] });
166
+ });
39
167
  });
@@ -1,5 +1,3 @@
1
- import type { ComponentType } from 'react';
2
1
  import { getPiralComponent } from 'piral-core';
3
- import { LanguagesPickerProps } from './types';
4
2
 
5
- export const PiralLanguagesPicker: ComponentType<LanguagesPickerProps> = getPiralComponent('LanguagesPicker');
3
+ export const PiralLanguagesPicker = getPiralComponent('LanguagesPicker');
@@ -1,4 +1,4 @@
1
- import { Atom, swap } from '@dbeining/react-atom';
1
+ import { Atom, swap, deref } from '@dbeining/react-atom';
2
2
  import { createLocaleApi, setupLocalizer } from './create';
3
3
 
4
4
  describe('Create Localize API', () => {
@@ -6,6 +6,9 @@ describe('Create Localize API', () => {
6
6
  const context: any = {
7
7
  defineActions() {},
8
8
  state,
9
+ readState(cb) {
10
+ return cb(deref(state));
11
+ },
9
12
  dispatch(update) {
10
13
  swap(state, update);
11
14
  },
@@ -95,4 +98,39 @@ describe('Create Localize API', () => {
95
98
  const result = api.translate('qxz');
96
99
  expect(result).toEqual('__fr_qxz__');
97
100
  });
101
+
102
+ it('getTranslations return the translations', () => {
103
+ const config = {
104
+ language: 'fr',
105
+ messages: {
106
+ fr: {
107
+ foo: 'bár',
108
+ bar: 'bár',
109
+ },
110
+ },
111
+ };
112
+ const api = (createLocaleApi(setupLocalizer(config))(context) as any)();
113
+ api.setTranslations({
114
+ fr: {
115
+ foo: 'boo',
116
+ },
117
+ });
118
+ const result = api.getTranslations();
119
+ expect(result).toEqual({ fr: { foo: 'boo' } });
120
+ });
121
+
122
+ it('getCurrentLanguage return the current language', () => {
123
+ const config = {
124
+ language: 'fr',
125
+ messages: {
126
+ fr: {
127
+ foo: 'bár',
128
+ bar: 'bár',
129
+ },
130
+ },
131
+ };
132
+ const api = (createLocaleApi(setupLocalizer(config))(context) as any)();
133
+ const result = api.getCurrentLanguage();
134
+ expect(result).toEqual('fr');
135
+ });
98
136
  });