@myissue/vue-website-page-builder 3.3.80 → 3.3.81
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/dist/{ar-BKP2GbBb.js → ar-BFnbxHvs.js} +59 -29
- package/dist/{de-CX2p6WRg.js → de-CXrApoe-.js} +33 -3
- package/dist/{en-hbIz7x2o.js → en-BBXHMa80.js} +43 -13
- package/dist/{es-BxsOdyOn.js → es-HxtF5isZ.js} +47 -19
- package/dist/{fr-SEE-rKYV.js → fr-BuBVt239.js} +59 -31
- package/dist/{hi-DZd4Kv3J.js → hi-BgJTsN-7.js} +55 -27
- package/dist/{ja-BGzkN2We.js → ja-DHO3LNTk.js} +59 -31
- package/dist/{pt-BMfrvh-9.js → pt-DbEpIKz5.js} +47 -19
- package/dist/{ru-wi4VbdJp.js → ru-Dmz_Bfpt.js} +57 -29
- package/dist/vue-website-page-builder.js +793 -791
- package/dist/vue-website-page-builder.umd.cjs +38 -38
- package/dist/{zh-Hans-B4txt13y.js → zh-Hans-BkEKxp4g.js} +73 -45
- package/package.json +1 -1
- package/src/Components/DemoUnsplash.vue +25 -22
- package/src/Components/PageBuilder/EditorMenu/Editables/ComponentTopMenu.vue +1 -1
- package/src/Components/PageBuilder/EditorMenu/Editables/EditGetElement.vue +9 -10
- package/src/Components/PageBuilder/EditorMenu/Editables/ImageEditor.vue +6 -6
- package/src/Components/PageBuilder/ToolbarOption/ToolbarOption.vue +2 -2
- package/src/Components/TipTap/TipTapInput.vue +1 -1
- package/src/PageBuilder/PageBuilder.vue +9 -8
- package/src/locales/ar.json +23 -1
- package/src/locales/de.json +23 -1
- package/src/locales/en.json +24 -2
- package/src/locales/es.json +23 -2
- package/src/locales/fr.json +23 -2
- package/src/locales/hi.json +23 -2
- package/src/locales/ja.json +23 -2
- package/src/locales/pt.json +23 -2
- package/src/locales/ru.json +23 -2
- package/src/locales/zh-Hans.json +24 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e = "保存",
|
|
1
|
+
const e = "保存", t = "选项", o = "头像", n = "发布", a = "组件", i = "样式", s = "排版", r = "选择", l = "内边距", d = "边距", c = "全局", p = "具体", u = "边框", g = "透明", y = "添加", h = "属性", m = "值", S = "关闭", T = "编辑", w = "删除", C = "预览", f = "移动", b = "加粗", v = "链接", B = "列表", D = "搜索", L = "横向", P = "纵向", k = "方形", M = "图片", A = "上一页", H = "下一页", R = "信息", x = {
|
|
2
2
|
"Reset Page": "重置页面",
|
|
3
3
|
"Global Page Styles": "全局页面样式",
|
|
4
4
|
"Try the powerful Click & Drop Page Builder—designed for developers and creators who want full control without the hassle. Customize layouts, fonts, and colors. Edit content visually in real time. Add media, embed YouTube videos, or export everything as clean HTML. With responsive editing, local auto-save, Tailwind support, and even Unsplash integration, it's everything you need—wrapped in one seamless builder. Build Stunning Pages in Minutes.": "试试强大的Click & Drop Page Builder——专为希望完全控制而无需麻烦的开发者和创作者设计。自定义布局、字体和颜色。实时可视化编辑内容。添加媒体、嵌入YouTube视频或将所有内容导出为干净的HTML。凭借响应式编辑、本地自动保存、Tailwind支持,甚至Unsplash集成,它是您所需的一切——集成在一个无缝的构建器中。几分钟内构建令人惊叹的页面。",
|
|
@@ -9,31 +9,30 @@ const e = "保存", o = "选项", t = "头像", n = "发布", i = "关闭", s =
|
|
|
9
9
|
"Download or install our powerful, flexible, and easy-to-use free Vue 3 Page Builder via": "通过下载或安装我们强大、灵活且易于使用的免费 Vue 3 页面构建器",
|
|
10
10
|
Save: e,
|
|
11
11
|
"Add new Components": "添加新组件",
|
|
12
|
-
Options:
|
|
12
|
+
Options: t,
|
|
13
13
|
"Config Overview": "配置概览",
|
|
14
14
|
"HTML Overview": "HTML概览",
|
|
15
15
|
"Delete Layout": "删除布局",
|
|
16
|
-
avatar:
|
|
16
|
+
avatar: o,
|
|
17
17
|
Publish: n,
|
|
18
18
|
"Add Components to Page": "将组件添加到页面",
|
|
19
|
-
Close: i,
|
|
20
19
|
"Helper Components": "辅助组件",
|
|
21
20
|
"Click to add": "点击添加",
|
|
22
|
-
component:
|
|
21
|
+
component: a,
|
|
23
22
|
"Layout Components": "布局组件",
|
|
24
23
|
"Click to add component": "点击添加组件",
|
|
25
24
|
"Remove all Components": "删除所有组件",
|
|
26
25
|
"Are you sure you want to remove all Components?": "您确定要删除所有组件吗?",
|
|
27
|
-
Styles:
|
|
26
|
+
Styles: i,
|
|
28
27
|
"Apply styles that affect the entire page. These settings include global font family, text color, background color, and other universal styles that apply to all sections.": "应用影响整个页面的样式。这些设置包括全局字体系列、文本颜色、背景颜色和适用于所有部分的其他通用样式。",
|
|
29
28
|
"Update Page Styles": "更新页面样式",
|
|
30
29
|
"Download HTML": "下载HTML",
|
|
31
30
|
"Export the entire page as a standalone HTML file. This includes all sections, content, and applied styles, making it ready for use or integration elsewhere.": "将整个页面导出为独立的HTML文件。这包括所有部分、内容和应用的样式,使其可以随时使用或集成到其他地方。",
|
|
32
31
|
"Download HTML file": "下载HTML文件",
|
|
33
|
-
Typographies:
|
|
32
|
+
Typographies: s,
|
|
34
33
|
"Font Appearance": "字体外观",
|
|
35
34
|
"Font Size": "字体大小",
|
|
36
|
-
Select:
|
|
35
|
+
Select: r,
|
|
37
36
|
"Font size": "字体大小",
|
|
38
37
|
"Font tablet size": "平板字体大小",
|
|
39
38
|
"Font small screens": "小屏幕字体大小",
|
|
@@ -41,38 +40,38 @@ const e = "保存", o = "选项", t = "头像", n = "发布", i = "关闭", s =
|
|
|
41
40
|
"Font family": "字体家族",
|
|
42
41
|
"Font Style": "字体样式",
|
|
43
42
|
"Opacity & Transparency": "不透明度和透明度",
|
|
44
|
-
Padding:
|
|
43
|
+
Padding: l,
|
|
45
44
|
"Vertical Padding": "垂直内边距",
|
|
46
45
|
"Horizontal Padding": "水平内边距",
|
|
47
|
-
Margin:
|
|
46
|
+
Margin: d,
|
|
48
47
|
"Vertical Margin": "垂直边距",
|
|
49
48
|
"Horizontal Margin": "水平边距",
|
|
50
49
|
"Border Radius": "边框半径",
|
|
51
50
|
Global: c,
|
|
52
|
-
Specific:
|
|
51
|
+
Specific: p,
|
|
53
52
|
"Border Radius top left": "边框半径 左上",
|
|
54
53
|
"Border Radius top right": "边框半径 右上",
|
|
55
54
|
"Border Radius bottom left": "边框半径 左下",
|
|
56
55
|
"Border Radius bottom right": "边框半径 右下",
|
|
57
56
|
"Border Style, Width & Color": "边框样式、宽度和颜色",
|
|
58
|
-
Border:
|
|
57
|
+
Border: u,
|
|
59
58
|
"Border Style": "边框样式",
|
|
60
59
|
"Border Width": "边框宽度",
|
|
61
60
|
"Border Color": "边框颜色",
|
|
62
|
-
Transparent:
|
|
61
|
+
Transparent: g,
|
|
63
62
|
"Generated CSS": "生成的CSS",
|
|
64
63
|
"This is the CSS applied by the builder. Add your own CSS and press Enter to apply it to the selected element.": "这是构建器应用的CSS。添加您自己的CSS并按Enter将其应用于选定的元素。",
|
|
65
64
|
"Add your CSS.": "添加您的CSS。",
|
|
66
65
|
"The pbx- prefix is added automatically.": "pbx-前缀会自动添加。",
|
|
67
66
|
"Type class": "输入类",
|
|
68
|
-
Add:
|
|
67
|
+
Add: y,
|
|
69
68
|
"Inline Styles": "内联样式",
|
|
70
69
|
"These are the inline styles applied by the builder. Add your own styles and press Enter to apply them to the selected element.": "这些是构建器应用的内联样式。添加您自己的样式,然后按 Enter 将其应用于选定的元素。",
|
|
71
70
|
"Add your own style.": "添加您自己的样式。",
|
|
72
|
-
property:
|
|
73
|
-
value:
|
|
74
|
-
|
|
75
|
-
Editing:
|
|
71
|
+
property: h,
|
|
72
|
+
value: m,
|
|
73
|
+
Close: S,
|
|
74
|
+
Editing: T,
|
|
76
75
|
"Loading...": "加载中...",
|
|
77
76
|
"Background Color": "背景颜色",
|
|
78
77
|
"Text Color": "文字颜色",
|
|
@@ -81,7 +80,7 @@ const e = "保存", o = "选项", t = "头像", n = "发布", i = "关闭", s =
|
|
|
81
80
|
"Are you sure you want to remove this Component?": "您确定要删除此组件吗?",
|
|
82
81
|
Delete: w,
|
|
83
82
|
"Add to the bottom": "添加到底部",
|
|
84
|
-
Preview:
|
|
83
|
+
Preview: C,
|
|
85
84
|
Mobile: f,
|
|
86
85
|
"Demo Content": "演示内容",
|
|
87
86
|
"Demo Description": "介绍轻量级和免费的Vue Click & Drop页面构建器。使用Vue轻松创建和增强数字体验。并非所有强大的东西都需要复杂。这款简约轻便的页面构建器提供了一个优雅直观的界面,专注于简单性和速度。创建完全响应式的页面,例如列表、职位板或博客文章,并使用免费的Click & Drop页面构建器轻松管理您的内容。",
|
|
@@ -94,39 +93,68 @@ const e = "保存", o = "选项", t = "头像", n = "发布", i = "关闭", s =
|
|
|
94
93
|
"Edit text and links": "编辑文本和链接",
|
|
95
94
|
"Enter URL": "输入URL",
|
|
96
95
|
"Line break": "换行",
|
|
97
|
-
Bold:
|
|
98
|
-
Link:
|
|
96
|
+
Bold: b,
|
|
97
|
+
Link: v,
|
|
99
98
|
"Header 2": "标题2",
|
|
100
99
|
"Header 3": "标题3",
|
|
101
|
-
List:
|
|
102
|
-
"Add a valid URL to transform the selected text into a clickable hyperlink that directs users to the specified web address.": "添加一个有效的URL,将选定的文本转换为可点击的超链接,指向指定的网页地址。"
|
|
100
|
+
List: B,
|
|
101
|
+
"Add a valid URL to transform the selected text into a clickable hyperlink that directs users to the specified web address.": "添加一个有效的URL,将选定的文本转换为可点击的超链接,指向指定的网页地址。",
|
|
102
|
+
"Select image": "选择图片",
|
|
103
|
+
"Manage Content": "管理内容",
|
|
104
|
+
"Media Library": "媒体库",
|
|
105
|
+
"Reset changes": "重置更改",
|
|
106
|
+
"Do you want to reset this page?": "您想重置此页面吗?",
|
|
107
|
+
"Are you sure you want to reset this page? This will overwrite your current changes.": "您确定要重置此页面吗?这将覆盖您当前的更改。",
|
|
108
|
+
Search: D,
|
|
109
|
+
"Search...": "搜索...",
|
|
110
|
+
Landscape: L,
|
|
111
|
+
Portrait: P,
|
|
112
|
+
Squarish: k,
|
|
113
|
+
"Total pages": "总页数",
|
|
114
|
+
Images: M,
|
|
115
|
+
"First page": "第一页",
|
|
116
|
+
Prev: A,
|
|
117
|
+
Next: H,
|
|
118
|
+
"By:": "作者:",
|
|
119
|
+
"We did not find any images. Make a new search.": "我们没有找到任何图片。请重新搜索。",
|
|
120
|
+
"No results on current page. Navigate to First Page.": "当前页面没有结果。导航到第一页。",
|
|
121
|
+
Information: R,
|
|
122
|
+
"From:": "来自:",
|
|
123
|
+
" Select image": " 选择图片"
|
|
103
124
|
};
|
|
104
125
|
export {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
126
|
+
y as Add,
|
|
127
|
+
b as Bold,
|
|
128
|
+
u as Border,
|
|
129
|
+
S as Close,
|
|
109
130
|
w as Delete,
|
|
110
|
-
|
|
131
|
+
T as Editing,
|
|
111
132
|
c as Global,
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
133
|
+
M as Images,
|
|
134
|
+
R as Information,
|
|
135
|
+
L as Landscape,
|
|
136
|
+
v as Link,
|
|
137
|
+
B as List,
|
|
138
|
+
d as Margin,
|
|
115
139
|
f as Mobile,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
140
|
+
H as Next,
|
|
141
|
+
t as Options,
|
|
142
|
+
l as Padding,
|
|
143
|
+
P as Portrait,
|
|
144
|
+
A as Prev,
|
|
145
|
+
C as Preview,
|
|
119
146
|
n as Publish,
|
|
120
147
|
e as Save,
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
148
|
+
D as Search,
|
|
149
|
+
r as Select,
|
|
150
|
+
p as Specific,
|
|
151
|
+
k as Squarish,
|
|
152
|
+
i as Styles,
|
|
153
|
+
g as Transparent,
|
|
154
|
+
s as Typographies,
|
|
155
|
+
o as avatar,
|
|
156
|
+
a as component,
|
|
157
|
+
x as default,
|
|
158
|
+
h as property,
|
|
159
|
+
m as value
|
|
132
160
|
};
|
package/package.json
CHANGED
|
@@ -5,6 +5,9 @@ import { usePageBuilderModal } from '../composables/usePageBuilderModal'
|
|
|
5
5
|
import { delay } from '../composables/delay'
|
|
6
6
|
import { preloadImage } from '../composables/preloadImage'
|
|
7
7
|
import { getPageBuilder } from '../composables/builderInstance'
|
|
8
|
+
import { useTranslations } from '../composables/useTranslations'
|
|
9
|
+
const { translate } = useTranslations()
|
|
10
|
+
|
|
8
11
|
const pageBuilderService = getPageBuilder()
|
|
9
12
|
|
|
10
13
|
const { closeMediaLibraryModal } = usePageBuilderModal()
|
|
@@ -126,7 +129,7 @@ onMounted(async () => {
|
|
|
126
129
|
<label
|
|
127
130
|
for="default-search"
|
|
128
131
|
class="pbx-mb-2 pbx-text-sm pbx-font-normal pbx-text-gray-900 pbx-sr-only dark:pbx-text-gray-300"
|
|
129
|
-
>Search</label
|
|
132
|
+
>{{ translate('Search') }}</label
|
|
130
133
|
>
|
|
131
134
|
|
|
132
135
|
<div class="pbx-mysearchBarWithOptions">
|
|
@@ -142,7 +145,7 @@ onMounted(async () => {
|
|
|
142
145
|
v-model="getSearchTerm"
|
|
143
146
|
class="pbx-myPrimarySearchInput"
|
|
144
147
|
autocomplete="off"
|
|
145
|
-
placeholder="Search..."
|
|
148
|
+
:placeholder="translate('Search...')"
|
|
146
149
|
/>
|
|
147
150
|
</div>
|
|
148
151
|
|
|
@@ -156,7 +159,7 @@ onMounted(async () => {
|
|
|
156
159
|
type="submit"
|
|
157
160
|
class="pbx-myPrimaryTag pbx-break-keep pbx-mr-4"
|
|
158
161
|
>
|
|
159
|
-
Search
|
|
162
|
+
{{ translate('Search') }}
|
|
160
163
|
</button>
|
|
161
164
|
</div>
|
|
162
165
|
</form>
|
|
@@ -175,7 +178,7 @@ onMounted(async () => {
|
|
|
175
178
|
'': getOrientationValue !== 'landscape',
|
|
176
179
|
}"
|
|
177
180
|
>
|
|
178
|
-
Landscape
|
|
181
|
+
{{ translate('Landscape') }}
|
|
179
182
|
</button>
|
|
180
183
|
<button
|
|
181
184
|
@click="searchByOrientation('portrait')"
|
|
@@ -186,7 +189,7 @@ onMounted(async () => {
|
|
|
186
189
|
'': getOrientationValue !== 'portrait',
|
|
187
190
|
}"
|
|
188
191
|
>
|
|
189
|
-
Portrait
|
|
192
|
+
{{ translate('Portrait') }}
|
|
190
193
|
</button>
|
|
191
194
|
<button
|
|
192
195
|
@click="searchByOrientation('squarish')"
|
|
@@ -197,7 +200,7 @@ onMounted(async () => {
|
|
|
197
200
|
'': getOrientationValue !== 'squarish',
|
|
198
201
|
}"
|
|
199
202
|
>
|
|
200
|
-
Squarish
|
|
203
|
+
{{ translate('Squarish') }}
|
|
201
204
|
</button>
|
|
202
205
|
|
|
203
206
|
<svg
|
|
@@ -218,10 +221,10 @@ onMounted(async () => {
|
|
|
218
221
|
aria-label="Pagination"
|
|
219
222
|
>
|
|
220
223
|
<p class="pbx-myPrimaryParagraph pbx-text-xs pbx-italic">
|
|
221
|
-
Total pages {{ getUnsplashImages.total_pages }}
|
|
224
|
+
{{ translate('Total pages') }} {{ getUnsplashImages.total_pages }}
|
|
222
225
|
</p>
|
|
223
226
|
<p class="pbx-myPrimaryParagraph pbx-text-xs pbx-italic">
|
|
224
|
-
Images {{ getUnsplashImages.total }}
|
|
227
|
+
{{ translate('Images') }} {{ getUnsplashImages.total }}
|
|
225
228
|
</p>
|
|
226
229
|
<div
|
|
227
230
|
class="pbx-flex pbx-flex-1 pbx-justify-between sm:pbx-justify-end pbx-items-center pbx-gap-2"
|
|
@@ -231,7 +234,7 @@ onMounted(async () => {
|
|
|
231
234
|
class="pbx-myPrimaryParagraph pbx-text-xs pbx-italic pbx-pr-2 pbx-pl-1 pbx-cursor-pointer pbx-underline"
|
|
232
235
|
@click="nextPage(Number((getCurrentPageNumber = 1)))"
|
|
233
236
|
>
|
|
234
|
-
First page
|
|
237
|
+
{{ translate('First page') }}
|
|
235
238
|
</span>
|
|
236
239
|
</div>
|
|
237
240
|
<button
|
|
@@ -241,7 +244,7 @@ onMounted(async () => {
|
|
|
241
244
|
@click="previousPage(Number(getCurrentPageNumber--))"
|
|
242
245
|
>
|
|
243
246
|
{{
|
|
244
|
-
|
|
247
|
+
`${translate('Prev')} ${Number(getCurrentPageNumber) > 0 ? Number(getCurrentPageNumber) - 1 : Number(getCurrentPageNumber) - 1}`
|
|
245
248
|
}}
|
|
246
249
|
</button>
|
|
247
250
|
|
|
@@ -257,7 +260,7 @@ onMounted(async () => {
|
|
|
257
260
|
@click="nextPage(Number(getCurrentPageNumber++))"
|
|
258
261
|
>
|
|
259
262
|
{{
|
|
260
|
-
|
|
263
|
+
`${translate('Next')} ${Number(getCurrentPageNumber) > 0 ? Number(getCurrentPageNumber) + 1 : Number(getCurrentPageNumber) + 1}`
|
|
261
264
|
}}
|
|
262
265
|
</button>
|
|
263
266
|
</nav>
|
|
@@ -272,7 +275,7 @@ onMounted(async () => {
|
|
|
272
275
|
>
|
|
273
276
|
<span
|
|
274
277
|
class="!pbx-absolute !pbx-m-px !pbx-h-px !pbx-w-px !pbx-overflow-hidden !pbx-whitespace-nowrap !pbx-border-0 !pbx-p-0 !pbx-[clip:rect(0,0,0,0)]"
|
|
275
|
-
>Loading
|
|
278
|
+
>{{ translate('Loading...') }}</span
|
|
276
279
|
>
|
|
277
280
|
</div>
|
|
278
281
|
</div>
|
|
@@ -294,7 +297,7 @@ onMounted(async () => {
|
|
|
294
297
|
:src="image.urls.thumb"
|
|
295
298
|
/>
|
|
296
299
|
<p class="pbx-myPrimaryParagraph pbx-text-xs pbx-font-normal pbx-mt-2">
|
|
297
|
-
By: {{ image.user.name }}
|
|
300
|
+
{{ translate('By:') }} {{ image.user.name }}
|
|
298
301
|
</p>
|
|
299
302
|
</div>
|
|
300
303
|
</div>
|
|
@@ -309,14 +312,14 @@ onMounted(async () => {
|
|
|
309
312
|
>
|
|
310
313
|
<p class="pbx-myPrimaryParagraph pbx-py-4 pbx-px-4">
|
|
311
314
|
<span v-if="getCurrentPageNumber === 1">
|
|
312
|
-
We did not find any images. Make a new search.
|
|
315
|
+
{{ translate('We did not find any images. Make a new search.') }}
|
|
313
316
|
</span>
|
|
314
317
|
<span
|
|
315
318
|
v-if="getCurrentPageNumber > 1"
|
|
316
319
|
@click="nextPage(1)"
|
|
317
320
|
class="pbx-myPrimaryLink"
|
|
318
321
|
>
|
|
319
|
-
No results on current page. Navigate to First Page.
|
|
322
|
+
{{ translate('No results on current page. Navigate to First Page.') }}
|
|
320
323
|
</span>
|
|
321
324
|
</p>
|
|
322
325
|
</div>
|
|
@@ -330,7 +333,7 @@ onMounted(async () => {
|
|
|
330
333
|
>
|
|
331
334
|
<span
|
|
332
335
|
class="!pbx-absolute !pbx-m-px !pbx-h-px !pbx-w-px !pbx-overflow-hidden !pbx-whitespace-nowrap !pbx-border-0 !pbx-p-0 !pbx-[clip:rect(0,0,0,0)]"
|
|
333
|
-
>Loading
|
|
336
|
+
>{{ translate('Loading...') }}</span
|
|
334
337
|
>
|
|
335
338
|
</div>
|
|
336
339
|
</div>
|
|
@@ -344,21 +347,21 @@ onMounted(async () => {
|
|
|
344
347
|
<div class="md:pbx-px-3 pbx-px-2">
|
|
345
348
|
<div>
|
|
346
349
|
<p class="pbx-myPrimaryParagraph pbx-font-normal pbx-text-gray-900 pbx-pt-4">
|
|
347
|
-
Information
|
|
350
|
+
{{ translate('Information') }}
|
|
348
351
|
</p>
|
|
349
352
|
<dl
|
|
350
|
-
class="pbx-mt-2 pbx-border-
|
|
353
|
+
class="pbx-mt-2 pbx-border-t pbx-border-b pbx-border-gray-200 pbx-divide-y pbx-divide-gray-200"
|
|
351
354
|
>
|
|
352
355
|
<div
|
|
353
356
|
class="pbx-py-3 pbx-flex pbx-justify-between pbx-text-sm pbx-font-normal pbx-items-center"
|
|
354
357
|
>
|
|
355
|
-
<dt class="pbx-text-gray-500">From
|
|
358
|
+
<dt class="pbx-text-gray-500">{{ translate('From:') }}</dt>
|
|
356
359
|
<dd class="pbx-text-gray-900">Unsplash</dd>
|
|
357
360
|
</div>
|
|
358
361
|
<div
|
|
359
362
|
class="pbx-py-3 pbx-flex pbx-justify-between pbx-text-sm pbx-font-normal pbx-items-center"
|
|
360
363
|
>
|
|
361
|
-
<dt class="pbx-text-gray-500">By
|
|
364
|
+
<dt class="pbx-text-gray-500">{{ translate('By:') }}</dt>
|
|
362
365
|
<dd class="pbx-text-gray-900">{{ getCurrentUser }}</dd>
|
|
363
366
|
</div>
|
|
364
367
|
</dl>
|
|
@@ -383,7 +386,7 @@ onMounted(async () => {
|
|
|
383
386
|
class="pbx-mySecondaryButton"
|
|
384
387
|
type="button"
|
|
385
388
|
>
|
|
386
|
-
Close
|
|
389
|
+
{{ translate('Close') }}
|
|
387
390
|
</button>
|
|
388
391
|
<button
|
|
389
392
|
v-if="getApplyImageToSelection && typeof getApplyImageToSelection === 'string'"
|
|
@@ -391,7 +394,7 @@ onMounted(async () => {
|
|
|
391
394
|
class="pbx-myPrimaryButton"
|
|
392
395
|
type="button"
|
|
393
396
|
>
|
|
394
|
-
Select image
|
|
397
|
+
{{ translate(' Select image') }}
|
|
395
398
|
</button>
|
|
396
399
|
</div>
|
|
397
400
|
<!-- Actions footer # end -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import DynamicModalBuilder from '../../../Modals/DynamicModalBuilder.vue'
|
|
3
|
-
import {
|
|
3
|
+
import { ref } from 'vue'
|
|
4
4
|
import { getPageBuilder } from '../../../../composables/builderInstance'
|
|
5
5
|
import { useTranslations } from '../../../../composables/useTranslations'
|
|
6
6
|
|
|
@@ -7,6 +7,9 @@ import TextColorEditor from './TextColorEditor.vue'
|
|
|
7
7
|
import BackgroundColorEditor from './BackgroundColorEditor.vue'
|
|
8
8
|
import { sharedPageBuilderStore } from '../../../../stores/shared-store'
|
|
9
9
|
import { getPageBuilder } from '../../../../composables/builderInstance'
|
|
10
|
+
import { useTranslations } from '../../../../composables/useTranslations'
|
|
11
|
+
|
|
12
|
+
const { translate } = useTranslations()
|
|
10
13
|
const pageBuilderService = getPageBuilder()
|
|
11
14
|
|
|
12
15
|
// Use shared store instance
|
|
@@ -53,7 +56,7 @@ const handleModalPreviewTiptap = function () {
|
|
|
53
56
|
|
|
54
57
|
typeModal.value = 'success'
|
|
55
58
|
gridColumnModal.value = 2
|
|
56
|
-
titleModal.value = 'Manage Content'
|
|
59
|
+
titleModal.value = translate('Manage Content')
|
|
57
60
|
descriptionModal.value = null
|
|
58
61
|
firstButtonModal.value = null
|
|
59
62
|
secondButtonModal.value = null
|
|
@@ -76,8 +79,6 @@ const getBasePrimaryImage = computed(() => {
|
|
|
76
79
|
return pageBuilderStateStore.getBasePrimaryImage
|
|
77
80
|
})
|
|
78
81
|
|
|
79
|
-
//
|
|
80
|
-
// use media library
|
|
81
82
|
const showMediaLibraryModal = ref(false)
|
|
82
83
|
// modal content
|
|
83
84
|
const titleMedia = ref('')
|
|
@@ -92,15 +93,13 @@ const handleAddImage = function () {
|
|
|
92
93
|
// open modal to true
|
|
93
94
|
showMediaLibraryModal.value = true
|
|
94
95
|
|
|
95
|
-
|
|
96
|
-
titleMedia.value = `Media Library`
|
|
96
|
+
titleMedia.value = translate('Media Library')
|
|
97
97
|
descriptionMedia.value = null
|
|
98
|
-
firstButtonMedia.value = 'Close'
|
|
99
|
-
secondButtonMedia.value = 'Select image'
|
|
98
|
+
firstButtonMedia.value = translate('Close')
|
|
99
|
+
secondButtonMedia.value = translate(' Select image')
|
|
100
100
|
|
|
101
101
|
// handle click
|
|
102
102
|
firstMediaButtonFunction.value = function () {
|
|
103
|
-
// close media library modal
|
|
104
103
|
showMediaLibraryModal.value = false
|
|
105
104
|
}
|
|
106
105
|
}
|
|
@@ -151,7 +150,7 @@ const handleModalIframeSrc = function () {
|
|
|
151
150
|
gridColumnModal.value = 2
|
|
152
151
|
titleModal.value = 'Add video url'
|
|
153
152
|
descriptionModal.value = null
|
|
154
|
-
firstButtonModal.value = 'Close'
|
|
153
|
+
firstButtonModal.value = translate('Close')
|
|
155
154
|
secondButtonModal.value = 'Save'
|
|
156
155
|
thirdButtonModal.value = null
|
|
157
156
|
|
|
@@ -343,7 +342,7 @@ const getRestoredElement = computed(() => {
|
|
|
343
342
|
class="pbx-h-10 pbx-w-10 pbx-flex-end pbx-cursor-pointer pbx-rounded-full pbx-flex pbx-items-center pbx-border-none pbx-justify-center pbx-bg-gray-200 pbx-aspect-square hover:pbx-bg-gray-100 hover:pbx-fill-white focus-visible:pbx-ring-0"
|
|
344
343
|
@click="pageBuilderService.clearHtmlSelection()"
|
|
345
344
|
>
|
|
346
|
-
<span class="material-symbols-outlined"> close
|
|
345
|
+
<span class="material-symbols-outlined"> close</span>
|
|
347
346
|
</div>
|
|
348
347
|
</div>
|
|
349
348
|
</div>
|
|
@@ -4,6 +4,9 @@ import MediaLibraryModal from '../../../Modals/MediaLibraryModal.vue'
|
|
|
4
4
|
import { sharedPageBuilderStore } from '../../../../stores/shared-store'
|
|
5
5
|
import { preloadImage } from '../../../../composables/preloadImage'
|
|
6
6
|
import { delay } from '../../../../composables/delay'
|
|
7
|
+
import { useTranslations } from '../../../../composables/useTranslations'
|
|
8
|
+
|
|
9
|
+
const { translate } = useTranslations()
|
|
7
10
|
|
|
8
11
|
// Use shared store instance
|
|
9
12
|
const pageBuilderStateStore = sharedPageBuilderStore
|
|
@@ -11,7 +14,6 @@ const customMediaComponent = inject('CustomMediaComponent')
|
|
|
11
14
|
|
|
12
15
|
const getIsLoadingImage = ref(false)
|
|
13
16
|
|
|
14
|
-
// use media library
|
|
15
17
|
const showMediaLibraryModal = ref(false)
|
|
16
18
|
// modal content
|
|
17
19
|
const titleMedia = ref('')
|
|
@@ -34,15 +36,13 @@ const handleAddImage = function () {
|
|
|
34
36
|
// open modal to true
|
|
35
37
|
showMediaLibraryModal.value = true
|
|
36
38
|
|
|
37
|
-
|
|
38
|
-
titleMedia.value = `Media Library`
|
|
39
|
+
titleMedia.value = translate('Media Library')
|
|
39
40
|
descriptionMedia.value = null
|
|
40
|
-
firstButtonMedia.value = 'Close'
|
|
41
|
-
secondButtonMedia.value = 'Select image'
|
|
41
|
+
firstButtonMedia.value = translate('Close')
|
|
42
|
+
secondButtonMedia.value = translate(' Select image')
|
|
42
43
|
|
|
43
44
|
// handle click
|
|
44
45
|
firstMediaButtonFunction.value = function () {
|
|
45
|
-
// close media library modal
|
|
46
46
|
showMediaLibraryModal.value = false
|
|
47
47
|
}
|
|
48
48
|
//
|
|
@@ -44,9 +44,9 @@ const handleDeleteComponentsFromDOM = function () {
|
|
|
44
44
|
gridColumnModal.value = 2
|
|
45
45
|
titleModal.value = translate('Remove all Components')
|
|
46
46
|
descriptionModal.value = translate('Are you sure you want to remove all Components?')
|
|
47
|
-
firstButtonModal.value = 'Close'
|
|
47
|
+
firstButtonModal.value = translate('Close')
|
|
48
48
|
secondButtonModal.value = null
|
|
49
|
-
thirdButtonModal.value = 'Delete'
|
|
49
|
+
thirdButtonModal.value = translate('Delete')
|
|
50
50
|
|
|
51
51
|
// handle click
|
|
52
52
|
firstModalButtonFunctionDynamicModalBuilder.value = function () {
|
|
@@ -113,7 +113,7 @@ const handleURL = function () {
|
|
|
113
113
|
descriptionModal.value = translate(
|
|
114
114
|
'Add a valid URL to transform the selected text into a clickable hyperlink that directs users to the specified web address.',
|
|
115
115
|
)
|
|
116
|
-
firstButtonModal.value = 'Close'
|
|
116
|
+
firstButtonModal.value = translate('Close')
|
|
117
117
|
secondButtonModal.value = urlEnteret.value ? 'Remove url' : null
|
|
118
118
|
thirdButtonModal.value = translate('Save')
|
|
119
119
|
|
|
@@ -297,12 +297,13 @@ const handleRestoreOriginalContent = async function () {
|
|
|
297
297
|
typeModalRestore.value = 'success'
|
|
298
298
|
showModalRestore.value = true
|
|
299
299
|
|
|
300
|
-
titleModalRestore.value = 'Do you want to reset this page?'
|
|
301
|
-
descriptionModalRestore.value =
|
|
302
|
-
'Are you sure you want to reset this page? This will overwrite your current changes.'
|
|
303
|
-
|
|
300
|
+
titleModalRestore.value = translate('Do you want to reset this page?')
|
|
301
|
+
descriptionModalRestore.value = translate(
|
|
302
|
+
'Are you sure you want to reset this page? This will overwrite your current changes.',
|
|
303
|
+
)
|
|
304
|
+
firstButtonRestore.value = translate('Close')
|
|
304
305
|
secondButtonRestore.value = null
|
|
305
|
-
thirdButtonRestore.value = 'Reset changes'
|
|
306
|
+
thirdButtonRestore.value = translate('Reset changes')
|
|
306
307
|
|
|
307
308
|
firstModalButtonRestoreFunction.value = function () {
|
|
308
309
|
showModalRestore.value = false
|
|
@@ -515,7 +516,7 @@ onMounted(async () => {
|
|
|
515
516
|
|
|
516
517
|
<div
|
|
517
518
|
id="pagebuilder-toolbar-area"
|
|
518
|
-
class="pbx-flex pbx-items-center pbx-justify-between pbx-bg-myPrimaryLightGrayColor pbx-border-0 pbx-border-solid pbx-border-b pbx-border-gray-200 pbx-mb-2 lg:pbx-px-6 pbx-px-4 pbx-font-sans
|
|
519
|
+
class="pbx-flex pbx-items-center pbx-justify-between pbx-bg-myPrimaryLightGrayColor pbx-border-0 pbx-border-solid pbx-border-b pbx-border-gray-200 pbx-mb-2 lg:pbx-px-6 pbx-px-4 pbx-font-sans"
|
|
519
520
|
>
|
|
520
521
|
<template
|
|
521
522
|
v-if="
|
|
@@ -736,7 +737,7 @@ onMounted(async () => {
|
|
|
736
737
|
</div>
|
|
737
738
|
<!-- Options # Start -->
|
|
738
739
|
|
|
739
|
-
<!--
|
|
740
|
+
<!-- Publish buttons start -->
|
|
740
741
|
<template v-if="showPublishButton">
|
|
741
742
|
<div class="pbx-flex-1 pbx-ml-2">
|
|
742
743
|
<button
|
|
@@ -776,7 +777,7 @@ onMounted(async () => {
|
|
|
776
777
|
</div>
|
|
777
778
|
</template>
|
|
778
779
|
|
|
779
|
-
<!--
|
|
780
|
+
<!-- Publish buttons end -->
|
|
780
781
|
|
|
781
782
|
<template
|
|
782
783
|
v-if="
|
package/src/locales/ar.json
CHANGED
|
@@ -97,5 +97,27 @@
|
|
|
97
97
|
"Header 2": "عنوان 2",
|
|
98
98
|
"Header 3": "عنوان 3",
|
|
99
99
|
"List": "قائمة",
|
|
100
|
-
"Add a valid URL to transform the selected text into a clickable hyperlink that directs users to the specified web address.": "أضف عنوان URL صالحًا لتحويل النص المحدد إلى ارتباط تشعبي قابل للنقر يوجه المستخدمين إلى عنوان الويب المحدد."
|
|
100
|
+
"Add a valid URL to transform the selected text into a clickable hyperlink that directs users to the specified web address.": "أضف عنوان URL صالحًا لتحويل النص المحدد إلى ارتباط تشعبي قابل للنقر يوجه المستخدمين إلى عنوان الويب المحدد.",
|
|
101
|
+
"Select image": "اختر صورة",
|
|
102
|
+
"Manage Content": "إدارة المحتوى",
|
|
103
|
+
"Media Library": "مكتبة الوسائط",
|
|
104
|
+
"Reset changes": "إعادة التغييرات",
|
|
105
|
+
"Do you want to reset this page?": "هل تريد إعادة تعيين هذه الصفحة؟",
|
|
106
|
+
"Are you sure you want to reset this page? This will overwrite your current changes.": "هل أنت متأكد أنك تريد إعادة تعيين هذه الصفحة؟ سيؤدي هذا إلى الكتابة فوق التغييرات الحالية.",
|
|
107
|
+
"Search": "بحث",
|
|
108
|
+
"Search...": "ابحث...",
|
|
109
|
+
"Landscape": "أفقي",
|
|
110
|
+
"Portrait": "عمودي",
|
|
111
|
+
"Squarish": "مربع الشكل",
|
|
112
|
+
"Total pages": "إجمالي الصفحات",
|
|
113
|
+
"Images": "صور",
|
|
114
|
+
"First page": "الصفحة الأولى",
|
|
115
|
+
"Prev": "السابق",
|
|
116
|
+
"Next": "التالي",
|
|
117
|
+
"By:": "بواسطة:",
|
|
118
|
+
"We did not find any images. Make a new search.": "لم نجد أي صور. قم ببحث جديد.",
|
|
119
|
+
"No results on current page. Navigate to First Page.": "لا توجد نتائج في الصفحة الحالية. انتقل إلى الصفحة الأولى.",
|
|
120
|
+
"Information": "معلومات",
|
|
121
|
+
"From:": "من:",
|
|
122
|
+
" Select image": " اختر صورة"
|
|
101
123
|
}
|
package/src/locales/de.json
CHANGED
|
@@ -99,5 +99,27 @@
|
|
|
99
99
|
"Header 2": "Überschrift 2",
|
|
100
100
|
"Header 3": "Überschrift 3",
|
|
101
101
|
"List": "Liste",
|
|
102
|
-
"Add a valid URL to transform the selected text into a clickable hyperlink that directs users to the specified web address.": "Fügen Sie eine gültige URL hinzu, um den ausgewählten Text in einen anklickbaren Hyperlink zu verwandeln, der Benutzer zur angegebenen Webadresse führt."
|
|
102
|
+
"Add a valid URL to transform the selected text into a clickable hyperlink that directs users to the specified web address.": "Fügen Sie eine gültige URL hinzu, um den ausgewählten Text in einen anklickbaren Hyperlink zu verwandeln, der Benutzer zur angegebenen Webadresse führt.",
|
|
103
|
+
"Select image": "Bild auswählen",
|
|
104
|
+
"Manage Content": "Inhalte verwalten",
|
|
105
|
+
"Media Library": "Medienbibliothek",
|
|
106
|
+
"Reset changes": "Änderungen zurücksetzen",
|
|
107
|
+
"Do you want to reset this page?": "Möchten Sie diese Seite zurücksetzen?",
|
|
108
|
+
"Are you sure you want to reset this page? This will overwrite your current changes.": "Sind Sie sicher, dass Sie diese Seite zurücksetzen möchten? Dadurch werden Ihre aktuellen Änderungen überschrieben.",
|
|
109
|
+
"Search": "Suche",
|
|
110
|
+
"Search...": "Suchen...",
|
|
111
|
+
"Landscape": "Querformat",
|
|
112
|
+
"Portrait": "Hochformat",
|
|
113
|
+
"Squarish": "Quadratisch",
|
|
114
|
+
"Total pages": "Gesamtseiten",
|
|
115
|
+
"Images": "Bilder",
|
|
116
|
+
"First page": "Erste Seite",
|
|
117
|
+
"Prev": "Zurück",
|
|
118
|
+
"Next": "Weiter",
|
|
119
|
+
"By:": "Von:",
|
|
120
|
+
"We did not find any images. Make a new search.": "Wir haben keine Bilder gefunden. Machen Sie eine neue Suche.",
|
|
121
|
+
"No results on current page. Navigate to First Page.": "Keine Ergebnisse auf der aktuellen Seite. Zur ersten Seite navigieren.",
|
|
122
|
+
"Information": "Informationen",
|
|
123
|
+
"From:": "Von:",
|
|
124
|
+
" Select image": " Bild auswählen"
|
|
103
125
|
}
|