aldehyde 0.2.99 → 0.2.100

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.
Files changed (190) hide show
  1. package/dist/bundle.021f784b1c84781461d2.js +1 -0
  2. package/dist/bundle.03c542ca824e205fe307.js +2 -0
  3. package/dist/bundle.03c542ca824e205fe307.js.LICENSE.txt +27 -0
  4. package/dist/bundle.03c542ca824e205fe307.js.gz +0 -0
  5. package/dist/bundle.15cb660c34802f6cccf5.js +1 -0
  6. package/dist/bundle.15cb660c34802f6cccf5.js.gz +0 -0
  7. package/dist/bundle.2f9c2d692fe0277a37aa.js +2 -0
  8. package/dist/bundle.2f9c2d692fe0277a37aa.js.LICENSE.txt +1 -0
  9. package/dist/bundle.2f9c2d692fe0277a37aa.js.gz +0 -0
  10. package/dist/bundle.320c02187dd135005102.js +2 -0
  11. package/dist/bundle.320c02187dd135005102.js.LICENSE.txt +6 -0
  12. package/dist/bundle.320c02187dd135005102.js.gz +0 -0
  13. package/dist/bundle.35a4af7e2d0da1942d79.js +10 -0
  14. package/dist/bundle.35a4af7e2d0da1942d79.js.gz +0 -0
  15. package/dist/bundle.3f9072b1629cdb384b46.js +2 -0
  16. package/dist/bundle.3f9072b1629cdb384b46.js.LICENSE.txt +5 -0
  17. package/dist/bundle.3f9072b1629cdb384b46.js.gz +0 -0
  18. package/dist/bundle.46e2295b5360a725bcd5.js +1 -0
  19. package/dist/bundle.46e2295b5360a725bcd5.js.gz +0 -0
  20. package/dist/bundle.4c3c988531c3cf360b87.js +1 -0
  21. package/dist/bundle.4c3c988531c3cf360b87.js.gz +0 -0
  22. package/dist/bundle.4df89546fd2e9d665dfb.js +2 -0
  23. package/dist/bundle.4df89546fd2e9d665dfb.js.LICENSE.txt +5 -0
  24. package/dist/bundle.4df89546fd2e9d665dfb.js.gz +0 -0
  25. package/dist/bundle.5a9afb9ee6cceca506fa.js +5 -0
  26. package/dist/bundle.5a9afb9ee6cceca506fa.js.LICENSE.txt +10 -0
  27. package/dist/bundle.5a9afb9ee6cceca506fa.js.gz +0 -0
  28. package/dist/bundle.5e6cccd06b34a0e3a2ff.js +1 -0
  29. package/dist/bundle.5e6cccd06b34a0e3a2ff.js.gz +0 -0
  30. package/dist/bundle.62c62e6aaa7f3c20761e.js +2 -0
  31. package/dist/bundle.62c62e6aaa7f3c20761e.js.LICENSE.txt +17 -0
  32. package/dist/bundle.62c62e6aaa7f3c20761e.js.gz +0 -0
  33. package/dist/bundle.6fd2dadd29083268c5a6.js +2 -0
  34. package/dist/bundle.6fd2dadd29083268c5a6.js.LICENSE.txt +17 -0
  35. package/dist/bundle.6fd2dadd29083268c5a6.js.gz +0 -0
  36. package/dist/bundle.8241d8d05e35988dd480.js +1 -0
  37. package/dist/bundle.8241d8d05e35988dd480.js.gz +0 -0
  38. package/dist/bundle.829683dfa6a98c78c58e.js +2 -0
  39. package/dist/bundle.829683dfa6a98c78c58e.js.LICENSE.txt +14 -0
  40. package/dist/bundle.829683dfa6a98c78c58e.js.gz +0 -0
  41. package/dist/bundle.840e28984e710e12f467.js +75 -0
  42. package/dist/bundle.840e28984e710e12f467.js.LICENSE.txt +8 -0
  43. package/dist/bundle.840e28984e710e12f467.js.gz +0 -0
  44. package/dist/bundle.85ce5221fe6ab1d91f7d.js +2 -0
  45. package/dist/bundle.85ce5221fe6ab1d91f7d.js.LICENSE.txt +1 -0
  46. package/dist/bundle.85ce5221fe6ab1d91f7d.js.gz +0 -0
  47. package/dist/bundle.9cfd99a04bde7f781c30.js +1 -0
  48. package/dist/bundle.9cfd99a04bde7f781c30.js.gz +0 -0
  49. package/dist/bundle.a049dc8814bbbf59160f.js +1 -0
  50. package/dist/bundle.a049dc8814bbbf59160f.js.gz +0 -0
  51. package/dist/bundle.a94f7811fac19aa9d6a3.js +2 -0
  52. package/dist/bundle.a94f7811fac19aa9d6a3.js.LICENSE.txt +1 -0
  53. package/dist/bundle.a94f7811fac19aa9d6a3.js.gz +0 -0
  54. package/dist/bundle.abdde6e82ee9f60d1bf3.js +2 -0
  55. package/dist/bundle.abdde6e82ee9f60d1bf3.js.LICENSE.txt +30 -0
  56. package/dist/bundle.abdde6e82ee9f60d1bf3.js.gz +0 -0
  57. package/dist/bundle.b207a66d5902f39d0c5a.js +1 -0
  58. package/dist/bundle.b207a66d5902f39d0c5a.js.gz +0 -0
  59. package/dist/bundle.b7b86a025aa95dea0e19.js +2 -0
  60. package/dist/bundle.b7b86a025aa95dea0e19.js.LICENSE.txt +8 -0
  61. package/dist/bundle.b7b86a025aa95dea0e19.js.gz +0 -0
  62. package/dist/bundle.b7e3eb480b649b3de67b.js +2 -0
  63. package/dist/bundle.b7e3eb480b649b3de67b.js.LICENSE.txt +5 -0
  64. package/dist/bundle.b7e3eb480b649b3de67b.js.gz +0 -0
  65. package/dist/bundle.c1c6028fd703ebf78c2e.js +2 -0
  66. package/dist/bundle.c1c6028fd703ebf78c2e.js.LICENSE.txt +5 -0
  67. package/dist/bundle.c1c6028fd703ebf78c2e.js.gz +0 -0
  68. package/dist/bundle.cd10ae07e0e0c36d0dee.js +2 -0
  69. package/dist/bundle.cd10ae07e0e0c36d0dee.js.LICENSE.txt +22 -0
  70. package/dist/bundle.cd10ae07e0e0c36d0dee.js.gz +0 -0
  71. package/dist/bundle.cf6a1933769c2aee4e6e.js +1 -0
  72. package/dist/bundle.cf6a1933769c2aee4e6e.js.gz +0 -0
  73. package/dist/bundle.d158d417d1d7a8acb2a1.js +1 -0
  74. package/dist/bundle.d158d417d1d7a8acb2a1.js.gz +0 -0
  75. package/dist/bundle.db40aa107272f4303ece.js +1 -0
  76. package/dist/bundle.db40aa107272f4303ece.js.gz +0 -0
  77. package/dist/bundle.ddefe6d8f235ef95d470.js +1 -0
  78. package/dist/bundle.ddefe6d8f235ef95d470.js.gz +0 -0
  79. package/dist/bundle.e02a7a16b4a6b3bb412f.js +2 -0
  80. package/dist/bundle.e02a7a16b4a6b3bb412f.js.LICENSE.txt +16 -0
  81. package/dist/bundle.e02a7a16b4a6b3bb412f.js.gz +0 -0
  82. package/dist/bundle.e760a70171cf0ae4567b.js +1 -0
  83. package/dist/bundle.e760a70171cf0ae4567b.js.gz +0 -0
  84. package/dist/bundle.f3ce062a620fe456c152.js +1 -0
  85. package/dist/bundle.f6e1c4fda58154810fe2.js +2 -0
  86. package/dist/bundle.f6e1c4fda58154810fe2.js.LICENSE.txt +41 -0
  87. package/dist/bundle.f6e1c4fda58154810fe2.js.gz +0 -0
  88. package/dist/bundle.fe9c09b8ace9c3117b0a.js +1 -0
  89. package/dist/bundle.fe9c09b8ace9c3117b0a.js.gz +0 -0
  90. package/dist/bundle.feaa17bec2057a4ee54f.js +1 -0
  91. package/dist/bundle.feaa17bec2057a4ee54f.js.gz +0 -0
  92. package/dist/css/chemstruc-graph-6437e59640f8b99b774f.css +12 -0
  93. package/dist/css/chemstruc-graph-6437e59640f8b99b774f.css.gz +0 -0
  94. package/dist/css/common-901df6b21f13391f2a53.css +56 -0
  95. package/dist/css/html-editor-draft-5e8e152675ab7d201c00.css +886 -0
  96. package/dist/css/html-editor-draft-5e8e152675ab7d201c00.css.gz +0 -0
  97. package/dist/css/main-f3c8fdebab315e61e7be.css +865 -0
  98. package/dist/css/main-f3c8fdebab315e61e7be.css.gz +0 -0
  99. package/dist/images/development-30de07a0.png +0 -0
  100. package/dist/images/logo-54b328b7.png +0 -0
  101. package/dist/images/pain-point-8f02421e.png +0 -0
  102. package/dist/images/target-13a5b4b9.png +0 -0
  103. package/dist/images/time-cost-cb40d2c2.png +0 -0
  104. package/dist/images/time-prograss-44b86b36.png +0 -0
  105. package/dist/index.html +4 -0
  106. package/lib/controls/collapse-card/index.d.ts +11 -2
  107. package/lib/controls/collapse-card/index.d.ts.map +1 -1
  108. package/lib/controls/collapse-card/index.js +18 -16
  109. package/lib/controls/collapse-card/index.js.map +1 -1
  110. package/lib/controls/entry-control.d.ts.map +1 -1
  111. package/lib/controls/entry-control.js +2 -1
  112. package/lib/controls/entry-control.js.map +1 -1
  113. package/lib/detail/button/fix-right-submit-button-bar.js +1 -1
  114. package/lib/detail/button/fix-right-submit-button-bar.js.map +1 -1
  115. package/lib/detail/view/act-dtmpl-view.js +1 -1
  116. package/lib/detail/view/act-dtmpl-view.js.map +1 -1
  117. package/lib/detail/view/field-view-group.d.ts +10 -1
  118. package/lib/detail/view/field-view-group.d.ts.map +1 -1
  119. package/lib/detail/view/field-view-group.js +17 -11
  120. package/lib/detail/view/field-view-group.js.map +1 -1
  121. package/lib/form/criteria-form.js +3 -3
  122. package/lib/form/criteria-form.js.map +1 -1
  123. package/lib/form/form-Item-group.js +1 -1
  124. package/lib/form/form-Item-group.js.map +1 -1
  125. package/lib/layout/MainPage.js +1 -1
  126. package/lib/layout/MainPage.js.map +1 -1
  127. package/lib/layout/header/index.js +3 -3
  128. package/lib/layout/header/index.js.map +1 -1
  129. package/lib/layout/menu/block.d.ts +13 -1
  130. package/lib/layout/menu/block.d.ts.map +1 -1
  131. package/lib/layout/menu/block.js +66 -8
  132. package/lib/layout/menu/block.js.map +1 -1
  133. package/lib/layout/menu/menu-2layers.d.ts +10 -0
  134. package/lib/layout/menu/menu-2layers.d.ts.map +1 -1
  135. package/lib/layout/menu/menu-2layers.js +32 -9
  136. package/lib/layout/menu/menu-2layers.js.map +1 -1
  137. package/lib/layout/sidebar/index.d.ts.map +1 -1
  138. package/lib/layout/sidebar/index.js +3 -1
  139. package/lib/layout/sidebar/index.js.map +1 -1
  140. package/lib/locale/LocaleProvider.d.ts.map +1 -1
  141. package/lib/locale/LocaleProvider.js +10 -8
  142. package/lib/locale/LocaleProvider.js.map +1 -1
  143. package/lib/locale/translate.d.ts.map +1 -1
  144. package/lib/locale/translate.js +10 -8
  145. package/lib/locale/translate.js.map +1 -1
  146. package/lib/routable/ltmpl-route.d.ts +2 -2
  147. package/lib/routable/ltmpl-route.d.ts.map +1 -1
  148. package/lib/routable/ltmpl-route.js +22 -21
  149. package/lib/routable/ltmpl-route.js.map +1 -1
  150. package/lib/table/act-table.d.ts.map +1 -1
  151. package/lib/table/act-table.js +18 -8
  152. package/lib/table/act-table.js.map +1 -1
  153. package/lib/table/column/column-selector.d.ts.map +1 -1
  154. package/lib/table/column/column-selector.js +20 -18
  155. package/lib/table/column/column-selector.js.map +1 -1
  156. package/lib/table/query-table.d.ts +10 -1
  157. package/lib/table/query-table.d.ts.map +1 -1
  158. package/lib/table/query-table.js +47 -41
  159. package/lib/table/query-table.js.map +1 -1
  160. package/lib/table/relation-table.js +4 -4
  161. package/lib/table/relation-table.js.map +1 -1
  162. package/lib/tree/tmpl-tree.d.ts.map +1 -1
  163. package/lib/tree/tmpl-tree.js +9 -6
  164. package/lib/tree/tmpl-tree.js.map +1 -1
  165. package/lib/tree/tree-node.d.ts.map +1 -1
  166. package/lib/tree/tree-node.js.map +1 -1
  167. package/package.json +1 -1
  168. package/src/aldehyde/controls/action/index.tsx +6 -5
  169. package/src/aldehyde/controls/collapse-card/index.tsx +96 -54
  170. package/src/aldehyde/controls/entry-control.tsx +2 -1
  171. package/src/aldehyde/detail/button/fix-right-submit-button-bar.tsx +1 -1
  172. package/src/aldehyde/detail/view/act-dtmpl-view.tsx +1 -1
  173. package/src/aldehyde/detail/view/field-view-group.tsx +62 -47
  174. package/src/aldehyde/form/criteria-form.tsx +3 -3
  175. package/src/aldehyde/form/form-Item-group.tsx +1 -1
  176. package/src/aldehyde/layout/MainPage.tsx +1 -1
  177. package/src/aldehyde/layout/header/index.tsx +4 -4
  178. package/src/aldehyde/layout/menu/block.less +11 -0
  179. package/src/aldehyde/layout/menu/block.tsx +132 -72
  180. package/src/aldehyde/layout/menu/menu-2layers.tsx +99 -64
  181. package/src/aldehyde/layout/sidebar/index.tsx +5 -1
  182. package/src/aldehyde/locale/LocaleProvider.tsx +10 -9
  183. package/src/aldehyde/locale/translate.ts +10 -7
  184. package/src/aldehyde/routable/ltmpl-route.tsx +220 -196
  185. package/src/aldehyde/table/act-table.tsx +26 -9
  186. package/src/aldehyde/table/column/column-selector.tsx +111 -72
  187. package/src/aldehyde/table/query-table.tsx +354 -304
  188. package/src/aldehyde/table/relation-table.tsx +4 -4
  189. package/src/aldehyde/tree/tmpl-tree.tsx +19 -3
  190. package/src/aldehyde/tree/tree-node.tsx +0 -3
@@ -1,80 +1,115 @@
1
1
  import React from "react";
2
- import {Menu} from 'antd';
3
- import {Menu2layersProps} from "../../tmpl/interface";
4
- import MenuRender from './menu-render';
2
+ import { Menu } from "antd";
3
+ import { Menu2layersProps } from "../../tmpl/interface";
4
+ import MenuRender from "./menu-render";
5
+ import { LocaleContext } from "../../locale/LocaleProvider";
5
6
 
6
7
  interface Menu2layersState {
7
- openKeys?: string[];
8
+ openKeys?: string[];
8
9
  }
9
10
 
10
- class Menu2layers extends React.PureComponent<Menu2layersProps, Menu2layersState> {
11
+ class Menu2layers extends React.PureComponent<
12
+ Menu2layersProps,
13
+ Menu2layersState
14
+ > {
15
+ static contextType = LocaleContext;
16
+ context: React.ContextType<typeof LocaleContext>;
17
+ constructor(props) {
18
+ super(props);
19
+ this.state = {
20
+ openKeys: [],
21
+ };
22
+ }
11
23
 
12
-
13
- constructor(props) {
14
- super(props);
15
- this.state = {
16
- openKeys: [],
17
- }
24
+ componentDidMount() {
25
+ const { currentL2MenuId, blockMenu, collapsed } = this.props;
26
+ const { openKeys } = this.state;
27
+ let openKey = blockMenu
28
+ ? MenuRender.findOpenId(blockMenu, currentL2MenuId)
29
+ : undefined;
30
+ if (openKey && openKeys.length < 1) {
31
+ this.setState({
32
+ openKeys: [openKey.toString()],
33
+ });
18
34
  }
35
+ }
36
+ componentDidUpdate(prevProps) {
37
+ const { currentL2MenuId, blockMenu, collapsed } = this.props;
38
+ let { currentL2MenuId: preMenuId, blockMenu: preBlockMenu } = prevProps;
39
+ const { openKeys } = this.state;
19
40
 
20
- componentDidMount() {
21
- const {currentL2MenuId, blockMenu,collapsed} = this.props;
22
- const {openKeys} = this.state;
23
- let openKey = blockMenu?MenuRender.findOpenId(blockMenu, currentL2MenuId):undefined;
24
- if(openKey && openKeys.length<1){
25
- this.setState({
26
- openKeys:[openKey.toString()]
27
- })
28
- }
41
+ if (!preBlockMenu || !blockMenu || blockMenu.id != preBlockMenu.id) {
42
+ //console.log('currentL2MenuId:',currentL2MenuId);
43
+ let openKey = blockMenu
44
+ ? MenuRender.findOpenId(blockMenu, currentL2MenuId)
45
+ : undefined;
46
+ if (openKey) {
47
+ this.setState({
48
+ openKeys: [openKey],
49
+ });
50
+ }
51
+ } else {
52
+ let openKey = blockMenu
53
+ ? MenuRender.findOpenId(blockMenu, currentL2MenuId)
54
+ : undefined;
55
+ let preOpenKey = blockMenu
56
+ ? MenuRender.findOpenId(preBlockMenu, preMenuId)
57
+ : undefined;
58
+ if ((!preOpenKey && openKey) || (openKey && openKey != preOpenKey)) {
59
+ this.setState({
60
+ openKeys: [openKey],
61
+ });
62
+ }
29
63
  }
30
- componentDidUpdate(prevProps) {
31
- const {currentL2MenuId, blockMenu,collapsed} = this.props;
32
- let {currentL2MenuId:preMenuId,blockMenu:preBlockMenu}=prevProps;
33
- const {openKeys} = this.state;
64
+ }
34
65
 
35
- if(!preBlockMenu || !blockMenu || blockMenu.id!=preBlockMenu.id ){
36
- //console.log('currentL2MenuId:',currentL2MenuId);
37
- let openKey = blockMenu? MenuRender.findOpenId(blockMenu, currentL2MenuId):undefined;
38
- if (openKey) {
39
- this.setState({
40
- openKeys:[openKey],
41
- })
42
- }
43
- }else {
44
- let openKey = blockMenu?MenuRender.findOpenId(blockMenu, currentL2MenuId):undefined;
45
- let preOpenKey = blockMenu?MenuRender.findOpenId(preBlockMenu, preMenuId):undefined;
46
- if((!preOpenKey && openKey) || (openKey && openKey!=preOpenKey)){
47
- this.setState({
48
- openKeys:[openKey],
49
- })
50
- }
51
- }
66
+ handleOpen = (openKeys) => {
67
+ if (openKeys && openKeys.length > 1) {
68
+ openKeys.splice(0, 1);
52
69
  }
70
+ this.setState({
71
+ openKeys,
72
+ });
73
+ };
53
74
 
54
- handleOpen = (openKeys) => {
55
- if (openKeys && openKeys.length>1) {
56
- openKeys.splice(0, 1);
57
- }
58
- this.setState({
59
- openKeys
60
- })
61
- }
75
+ get computedBlockMenu() {
76
+ const { translate } = this.context;
77
+ const menu = JSON.parse(JSON.stringify(this.props.blockMenu));
78
+ menu &&
79
+ Array.isArray(menu.items) &&
80
+ menu.items.forEach((item) => {
81
+ item.title = translate("${" + item.title + "}");
82
+ return item;
83
+ });
84
+ return menu;
85
+ }
62
86
 
63
- render() {
64
- const {blockMenu, collapsed, currentL2MenuId,basePath,...other} = this.props;
65
- const {openKeys} = this.state;
87
+ render() {
88
+ const {
89
+ blockMenu,
90
+ collapsed,
91
+ currentL2MenuId,
92
+ basePath,
93
+ ...other
94
+ } = this.props;
95
+ const { openKeys } = this.state;
66
96
 
67
- return (
68
- <Menu
69
- {...other}
70
- onOpenChange={this.handleOpen} //手风琴
71
- selectedKeys={currentL2MenuId ? [currentL2MenuId.toString()] : undefined}
72
- openKeys={!collapsed?openKeys:undefined}
73
- items={blockMenu ? MenuRender.getMenu(blockMenu, undefined,basePath) : []}
74
- >
75
- </Menu>
76
- );
77
- }
97
+ return (
98
+ <Menu
99
+ {...other}
100
+ onOpenChange={this.handleOpen} //手风琴
101
+ selectedKeys={
102
+ currentL2MenuId ? [currentL2MenuId.toString()] : undefined
103
+ }
104
+ openKeys={!collapsed ? openKeys : undefined}
105
+ items={
106
+ blockMenu
107
+ ? MenuRender.getMenu(this.computedBlockMenu, undefined, basePath)
108
+ : []
109
+ }
110
+ ></Menu>
111
+ );
112
+ }
78
113
  }
79
114
 
80
- export default Menu2layers;
115
+ export default Menu2layers;
@@ -6,6 +6,7 @@ import { Menu2layersProps } from "../../tmpl/interface";
6
6
  import Scrollbars from "react-custom-scrollbars";
7
7
  import { Image, theme } from "antd";
8
8
  import logo from "./logo.png";
9
+ import { useLocale } from "../../locale/useLocale";
9
10
  interface SideBarProps extends Menu2layersProps {
10
11
  title?: string;
11
12
  logo?: any;
@@ -14,6 +15,7 @@ interface SideBarProps extends Menu2layersProps {
14
15
  interface SideBarState {}
15
16
  const { useToken } = theme;
16
17
  const SideBar: React.FC<SideBarProps> = (props) => {
18
+ const { translate } = useLocale();
17
19
  const { token } = useToken();
18
20
  let syyy = { "--logo-blue-background": token.colorPrimary } as CSSProperties;
19
21
  let { collapsed } = props;
@@ -55,7 +57,9 @@ const SideBar: React.FC<SideBarProps> = (props) => {
55
57
  ) : (
56
58
  <></>
57
59
  )}
58
- {props.title ? props.title : Units.programName_NavLeft()}
60
+ {translate(
61
+ props.title ? props.title : Units.programName_NavLeft()
62
+ )}
59
63
  </>
60
64
  </h1>
61
65
  </>
@@ -121,9 +121,11 @@ export const LocaleProvider = ({ children }: { children: ReactNode }) => {
121
121
  for (const char of str) {
122
122
  if (char === "$") {
123
123
  enableMatch = true;
124
- res.push(tres);
125
- tres = "";
126
- resMp.push(false);
124
+ if (tres !== "") {
125
+ res.push(tres);
126
+ tres = "";
127
+ resMp.push(false);
128
+ }
127
129
  } else if (enableMatch && char === "{") {
128
130
  continue;
129
131
  } else if (enableMatch && char === "}") {
@@ -140,18 +142,17 @@ export const LocaleProvider = ({ children }: { children: ReactNode }) => {
140
142
  else tres += char;
141
143
  }
142
144
 
143
- res.push(tres);
144
- resMp.push(false);
145
+ if (tres !== "") {
146
+ res.push(tres);
147
+ resMp.push(false);
148
+ }
145
149
 
146
150
  if (flag) return res.join("");
147
-
148
151
  let resStr = "";
149
152
  for (let i = 0; i < res.length; i++) {
150
- if (i !== 0) resStr = " " + resStr;
151
- if (resMp[i]) resStr += langPkg[locale][res[i]];
153
+ if (resMp[i]) resStr += (i !== 0 ? " " : "") + langPkg[locale][res[i]];
152
154
  else resStr += res[i];
153
155
  }
154
-
155
156
  return resStr;
156
157
  };
157
158
 
@@ -41,9 +41,11 @@ const translate = (str) => {
41
41
  for (const char of str) {
42
42
  if (char === "$") {
43
43
  enableMatch = true;
44
- res.push(tres);
45
- tres = "";
46
- resMp.push(false);
44
+ if (tres !== "") {
45
+ res.push(tres);
46
+ tres = "";
47
+ resMp.push(false);
48
+ }
47
49
  } else if (enableMatch && char === "{") {
48
50
  continue;
49
51
  } else if (enableMatch && char === "}") {
@@ -60,15 +62,16 @@ const translate = (str) => {
60
62
  else tres += char;
61
63
  }
62
64
 
63
- res.push(tres);
64
- resMp.push(false);
65
+ if (tres !== "") {
66
+ res.push(tres);
67
+ resMp.push(false);
68
+ }
65
69
 
66
70
  if (flag) return res.join("");
67
71
 
68
72
  let resStr = "";
69
73
  for (let i = 0; i < res.length; i++) {
70
- if (i !== 0) resStr = " " + resStr;
71
- if (resMp[i]) resStr += langPkg[locale][res[i]];
74
+ if (resMp[i]) resStr += (i !== 0 ? " " : "") + langPkg[locale][res[i]];
72
75
  else resStr += res[i];
73
76
  }
74
77