@bigbinary/neeto-form-frontend 3.13.9 → 3.14.0
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/README.md +131 -81
- package/app/javascript/src/translations/ar.json +9 -1
- package/app/javascript/src/translations/bg.json +207 -0
- package/app/javascript/src/translations/ca.json +207 -0
- package/app/javascript/src/translations/cs.json +9 -1
- package/app/javascript/src/translations/da.json +207 -0
- package/app/javascript/src/translations/de.json +9 -1
- package/app/javascript/src/translations/en.json +10 -1
- package/app/javascript/src/translations/es-MX.json +207 -0
- package/app/javascript/src/translations/es.json +9 -1
- package/app/javascript/src/translations/et.json +207 -0
- package/app/javascript/src/translations/fi.json +207 -0
- package/app/javascript/src/translations/fil.json +207 -0
- package/app/javascript/src/translations/fr.json +9 -1
- package/app/javascript/src/translations/hi.json +207 -0
- package/app/javascript/src/translations/hr.json +207 -0
- package/app/javascript/src/translations/id.json +207 -0
- package/app/javascript/src/translations/it.json +9 -1
- package/app/javascript/src/translations/ja.json +207 -0
- package/app/javascript/src/translations/ko.json +207 -0
- package/app/javascript/src/translations/nl.json +9 -1
- package/app/javascript/src/translations/pl.json +9 -1
- package/app/javascript/src/translations/pt-BR.json +207 -0
- package/app/javascript/src/translations/pt.json +9 -1
- package/app/javascript/src/translations/ro.json +9 -1
- package/app/javascript/src/translations/ru.json +9 -1
- package/app/javascript/src/translations/sk.json +207 -0
- package/app/javascript/src/translations/sl.json +207 -0
- package/app/javascript/src/translations/sv.json +207 -0
- package/app/javascript/src/translations/th.json +207 -0
- package/app/javascript/src/translations/tr.json +207 -0
- package/app/javascript/src/translations/uk.json +207 -0
- package/app/javascript/src/translations/vi.json +207 -0
- package/app/javascript/src/translations/zh-CN.json +207 -0
- package/app/javascript/src/translations/zh-TW.json +207 -0
- package/dist/BuildForm.js +32 -7
- package/dist/BuildForm.js.map +1 -1
- package/dist/ExternalForm.js +39 -32
- package/dist/ExternalForm.js.map +1 -1
- package/dist/Submission.js +1 -1
- package/dist/UrlBuilder.js +10 -6
- package/dist/UrlBuilder.js.map +1 -1
- package/dist/{buildForm-miMj_S28.js → buildForm-CXy5L1RP.js} +2 -2
- package/dist/{buildForm-miMj_S28.js.map → buildForm-CXy5L1RP.js.map} +1 -1
- package/dist/{buildForm-DQ2wgwuW.js → buildForm-DNCW7prR.js} +2 -2
- package/dist/{buildForm-DQ2wgwuW.js.map → buildForm-DNCW7prR.js.map} +1 -1
- package/dist/cjs/BuildForm.js +32 -7
- package/dist/cjs/BuildForm.js.map +1 -1
- package/dist/cjs/ExternalForm.js +38 -31
- package/dist/cjs/ExternalForm.js.map +1 -1
- package/dist/cjs/Submission.js +1 -1
- package/dist/cjs/UrlBuilder.js +10 -6
- package/dist/cjs/UrlBuilder.js.map +1 -1
- package/dist/cjs/hooks.js +4 -4
- package/dist/cjs/index.js +8 -7
- package/dist/cjs/index.js.map +1 -1
- package/dist/{constants-Dq9-rvtB.js → constants-BVZZfXua.js} +5 -1
- package/dist/constants-BVZZfXua.js.map +1 -0
- package/dist/{constants-R6y-Scns.js → constants-Bw2NSI7-.js} +5 -4
- package/dist/constants-Bw2NSI7-.js.map +1 -0
- package/dist/{constants-CDhYxmSQ.js → constants-VzpftVgP.js} +5 -3
- package/dist/constants-VzpftVgP.js.map +1 -0
- package/dist/{constants-DBuFEVFA.js → constants-b1EQ6-AS.js} +4 -2
- package/dist/constants-b1EQ6-AS.js.map +1 -0
- package/dist/hooks.js +4 -4
- package/dist/{index-CAtNQTCZ.js → index-BARvqe7c.js} +2 -2
- package/dist/{index-CAtNQTCZ.js.map → index-BARvqe7c.js.map} +1 -1
- package/dist/{index-BGEdOqsc.js → index-BkNaYmLc.js} +2 -2
- package/dist/{index-BGEdOqsc.js.map → index-BkNaYmLc.js.map} +1 -1
- package/dist/index.js +8 -7
- package/dist/index.js.map +1 -1
- package/dist/{useFormSubmission-Bor3TuEO.js → useFormSubmission-CYqHLtkA.js} +2 -2
- package/dist/{useFormSubmission-Bor3TuEO.js.map → useFormSubmission-CYqHLtkA.js.map} +1 -1
- package/dist/{useFormSubmission-D3Bxhy6g.js → useFormSubmission-DMoyM44A.js} +2 -2
- package/dist/{useFormSubmission-D3Bxhy6g.js.map → useFormSubmission-DMoyM44A.js.map} +1 -1
- package/dist/{utils-BThu7JWp.js → utils-BjgmM0Qs.js} +521 -55
- package/dist/utils-BjgmM0Qs.js.map +1 -0
- package/dist/{utils-1blEk5zb.js → utils-DdrUdmyb.js} +512 -45
- package/dist/utils-DdrUdmyb.js.map +1 -0
- package/package.json +15 -15
- package/dist/constants-CDhYxmSQ.js.map +0 -1
- package/dist/constants-DBuFEVFA.js.map +0 -1
- package/dist/constants-Dq9-rvtB.js.map +0 -1
- package/dist/constants-R6y-Scns.js.map +0 -1
- package/dist/utils-1blEk5zb.js.map +0 -1
- package/dist/utils-BThu7JWp.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,22 +1,30 @@
|
|
|
1
1
|
# neeto-form-nano
|
|
2
2
|
|
|
3
|
-
The `neeto-form-nano` allows us to build forms within neeto applications. This
|
|
3
|
+
The `neeto-form-nano` allows us to build forms within neeto applications. This
|
|
4
|
+
nano exports `@bigbinary/neeto-form-frontend` NPM package and
|
|
5
|
+
`neeto-form-engine` Rails engine.
|
|
4
6
|
|
|
5
|
-
See
|
|
7
|
+
See
|
|
8
|
+
[this page](https://github.com/search?q=org%3Abigbinary+%22neeto-form-engine+%28%22&type=code)
|
|
9
|
+
to find host applications using this nano. Changes made in the nano should be
|
|
10
|
+
rolled out to all of them, especially migrations.
|
|
6
11
|
|
|
7
12
|
# Contents
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
|
|
14
|
+
1. [Development with Host Application](#development-with-host-application)
|
|
15
|
+
- [Engine](#engine)
|
|
16
|
+
- [Frontend package](#frontend-package)
|
|
17
|
+
- [Installation](#installation-1)
|
|
18
|
+
- [Instructions for development](#instructions-for-development)
|
|
19
|
+
- [Usage](#usage)
|
|
20
|
+
2. [Instructions for Publishing](#instructions-for-publishing)
|
|
15
21
|
|
|
16
22
|
# Development with Host Application
|
|
17
23
|
|
|
18
24
|
## Engine
|
|
19
|
-
|
|
25
|
+
|
|
26
|
+
The engine adds setup for form on backend and allows us to attach forms to any
|
|
27
|
+
model. It also stores submissions.
|
|
20
28
|
|
|
21
29
|
### Installation
|
|
22
30
|
|
|
@@ -48,13 +56,15 @@ The engine adds setup for form on backend and allows us to attach forms to any m
|
|
|
48
56
|
bundle exec rails db:migrate
|
|
49
57
|
```
|
|
50
58
|
|
|
51
|
-
5. Add this line to your application's `config/routes.rb` file (replace `at` to
|
|
59
|
+
5. Add this line to your application's `config/routes.rb` file (replace `at` to
|
|
60
|
+
your desired route):
|
|
52
61
|
|
|
53
62
|
```ruby
|
|
54
63
|
mount NeetoFormEngine::Engine, at: "/neeto_form_engine"
|
|
55
64
|
```
|
|
56
65
|
|
|
57
|
-
6. Create file `neeto_form_engine.rb` under `config/initializers` to provide the
|
|
66
|
+
6. Create file `neeto_form_engine.rb` under `config/initializers` to provide the
|
|
67
|
+
`owner_class` information
|
|
58
68
|
|
|
59
69
|
```ruby
|
|
60
70
|
NeetoFormEngine.owner_class = "Organization"
|
|
@@ -66,7 +76,8 @@ The engine adds setup for form on backend and allows us to attach forms to any m
|
|
|
66
76
|
has_many :forms, class_name: "::NeetoFormEngine::Form", as: :owner
|
|
67
77
|
```
|
|
68
78
|
|
|
69
|
-
8. Configure models to add below association to scope submission records
|
|
79
|
+
8. Configure models to add below association to scope submission records
|
|
80
|
+
(optional)
|
|
70
81
|
|
|
71
82
|
```ruby
|
|
72
83
|
has_one :submission, class_name: "::NeetoFormEngine::Submission", as: :record
|
|
@@ -80,83 +91,116 @@ The engine adds setup for form on backend and allows us to attach forms to any m
|
|
|
80
91
|
|
|
81
92
|
### Customizability
|
|
82
93
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
94
|
+
#### `NeetoFormEngine::Customizable::Forms::Createable`
|
|
95
|
+
|
|
96
|
+
The engine supports customizing the default behavior of `Forms::CreateService`
|
|
97
|
+
by overriding the supported methods in this concern.
|
|
98
|
+
|
|
99
|
+
#### Available methods:
|
|
100
|
+
|
|
101
|
+
1. `create_default_questions!`: If you want to use custom logic to create
|
|
102
|
+
default questions, you can specify them using this method. `owner`, `form`
|
|
103
|
+
and `params` will be available globally.
|
|
104
|
+
2. `additional_form_params`: If you want to include additional attributes while
|
|
105
|
+
creating forms, you can specify them using this method. It takes one argument
|
|
106
|
+
`params` which will be the form parameters passed from the front-end.
|
|
107
|
+
|
|
108
|
+
#### `NeetoFormEngine::Customizable::Questions::Createable`
|
|
109
|
+
|
|
110
|
+
The engine supports customizing the default behavior of
|
|
111
|
+
`Questions::CreateService` by overriding the supported methods in this concern.
|
|
112
|
+
|
|
113
|
+
#### Available methods:
|
|
114
|
+
|
|
115
|
+
1. `create_question!`: This method receives one argument `params` that contains
|
|
116
|
+
the question parameters passed from the front-end.
|
|
117
|
+
2. `additional_question_params`: If you want to include additional attributes
|
|
118
|
+
while creating questions, you can specify them using this method. It takes
|
|
119
|
+
one argument `params` which will be the question parameters passed from the
|
|
120
|
+
front-end.
|
|
121
|
+
|
|
122
|
+
#### `NeetoFormEngine::Customizable::Questions::Updateable`
|
|
123
|
+
|
|
124
|
+
The engine supports customizing the default behavior of
|
|
125
|
+
`Questions::UpdateService` by overriding the supported constants in this
|
|
126
|
+
concern.
|
|
127
|
+
|
|
128
|
+
#### Available constants:
|
|
129
|
+
|
|
130
|
+
1. `EXCLUDED_UPDATE_PARAMS`: If you have included extra parameters other than
|
|
131
|
+
`kind` for additional use cases that are not valid entity attributes, they
|
|
132
|
+
need to be specified as `EXCLUDED_UPDATE_PARAMS`.
|
|
133
|
+
|
|
134
|
+
#### `NeetoFormEngine::Customizable::QuestionResponses::Createable`
|
|
135
|
+
|
|
136
|
+
The engine supports customizing the default behavior of
|
|
137
|
+
`QuestionResponses::CreateService` by overriding the supported methods in this
|
|
138
|
+
concern.
|
|
139
|
+
|
|
140
|
+
#### Available methods:
|
|
141
|
+
|
|
142
|
+
1. `additional_initialization_logic`: If you want to initialize additional
|
|
143
|
+
variables, you can specify them using this method.
|
|
144
|
+
2. `additional_process_actions`: If you want to perform any additional actions
|
|
145
|
+
outside the transaction block, you can override this method.
|
|
146
|
+
3. `additional_create_submission_actions`: You can use this method to specify
|
|
147
|
+
any additional logic that needs to be executed after creating submissions.
|
|
148
|
+
4. `additional_create_response_actions`: If you want to perform some additional
|
|
149
|
+
actions on each of the responses, you can specify them using this method.
|
|
150
|
+
This method receives `question` and `response_param` passed from the
|
|
151
|
+
front-end as arguments.
|
|
152
|
+
|
|
153
|
+
### Set up Google reCAPTCHA
|
|
154
|
+
|
|
155
|
+
1. Sign up for an API key pair from the
|
|
156
|
+
[official website](http://www.google.com/recaptcha/admin).
|
|
157
|
+
2. Configure the following `environment variables` and `secrets` with suitable
|
|
158
|
+
values
|
|
159
|
+
|
|
160
|
+
- Under `.env` file:
|
|
161
|
+
|
|
162
|
+
```yaml
|
|
163
|
+
FORM_NANO_RECAPTCHA_V2_SITE_KEY=# Value from Google cloud console
|
|
164
|
+
FORM_NANO_RECAPTCHA_V2_SECRET_KEY=# Value from Google cloud console
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
- Under `secrets.yml` file:
|
|
168
|
+
|
|
169
|
+
```yaml
|
|
170
|
+
form_nano:
|
|
171
|
+
recaptcha_v2:
|
|
172
|
+
site_key: <%= ENV["FORM_NANO_RECAPTCHA_V2_SITE_KEY"] %>
|
|
173
|
+
secret_key: <%= ENV["FORM_NANO_RECAPTCHA_V2_SECRET_KEY"] %>
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
3. Include the site key in `global_props`
|
|
177
|
+
```ruby
|
|
178
|
+
module ApplicationHelper
|
|
179
|
+
def get_client_props
|
|
180
|
+
# other variables
|
|
181
|
+
custom_props = {
|
|
182
|
+
# other props
|
|
183
|
+
form_nano_recaptcha_v2_site_key: Rails.application.secrets.form_nano.dig(:recaptcha_v2, :site_key)
|
|
184
|
+
}
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
```
|
|
146
188
|
|
|
147
189
|
## Frontend package
|
|
190
|
+
|
|
148
191
|
The frontend package allows us to create forms across neeto products.
|
|
149
192
|
|
|
150
193
|
### Installation
|
|
151
194
|
|
|
152
195
|
1. Install the NPM package
|
|
196
|
+
|
|
153
197
|
```zsh
|
|
154
198
|
yarn add @bigbinary/neeto-form-frontend
|
|
155
199
|
```
|
|
156
200
|
|
|
157
|
-
2. The frontend package has a few peer dependencies that are required for
|
|
158
|
-
|
|
159
|
-
the below command:
|
|
201
|
+
2. The frontend package has a few peer dependencies that are required for the
|
|
202
|
+
proper functioning of the package. Install all the peer dependencies using
|
|
203
|
+
the below command:
|
|
160
204
|
|
|
161
205
|
```zsh
|
|
162
206
|
yarn add @bigbinary/neetoui @bigbinary/neeto-icons ramda@^0.28.0 classnames@^2.3.1 formik@2.2.9 @bigbinary/neeto-commons-frontend react-google-recaptcha
|
|
@@ -170,14 +214,20 @@ the below command:
|
|
|
170
214
|
|
|
171
215
|
### Instructions for development
|
|
172
216
|
|
|
173
|
-
Check the
|
|
217
|
+
Check the
|
|
218
|
+
[Frontend package development guide](https://neeto-engineering.neetokb.com/p/a-d34cb4b0)
|
|
219
|
+
for step-by-step instructions to develop the frontend package.
|
|
174
220
|
|
|
175
221
|
### Usage
|
|
176
222
|
|
|
177
223
|
You can learn more about the usage here:
|
|
224
|
+
|
|
178
225
|
1. [Components](./docs/frontend/components.md)
|
|
179
226
|
2. [Hooks](./docs/frontend/hooks.md)
|
|
227
|
+
3. [Email Verification](./docs/email-verification.md)
|
|
180
228
|
|
|
181
229
|
# Instructions for Publishing
|
|
182
230
|
|
|
183
|
-
Consult the
|
|
231
|
+
Consult the
|
|
232
|
+
[building and releasing packages](https://neeto-engineering.neetokb.com/articles/building-and-releasing-packages)
|
|
233
|
+
guide for details on how to publish.
|
|
@@ -202,6 +202,14 @@
|
|
|
202
202
|
"helpText": "اضغط على مفتاح المسافة أو تبويب أو مفتاح الإدخال بعد إضافة نطاق.",
|
|
203
203
|
"removeInvalidDomains": "انقر هنا لإزالة النطاقات غير الصالحة.",
|
|
204
204
|
"placeholder": "يرجى إدخال نطاقات البريد الإلكتروني"
|
|
205
|
+
},
|
|
206
|
+
"emailVerification": {
|
|
207
|
+
"switchLabel": "تأكيد البريد الإلكتروني",
|
|
208
|
+
"switchHelpText": "سيتم إرسال رمز تحقق إلى البريد الإلكتروني لحجز الاجتماع.",
|
|
209
|
+
"resendInSeconds": "تم إرسال رمز تحقق إلى بريدك الوارد. لم تستلم الرمز؟ أعد الإرسال خلال {{secondsLeft}} ثانية",
|
|
210
|
+
"resendCode": "تم إرسال رمز تحقق إلى بريدك الوارد. لم تستلم الرمز؟ <button>أعد إرسال رمز التحقق</button>",
|
|
211
|
+
"sendCode": "إرسال الرمز",
|
|
212
|
+
"verificationCode": "رمز التحقق"
|
|
205
213
|
}
|
|
206
214
|
}
|
|
207
|
-
}
|
|
215
|
+
}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
{
|
|
2
|
+
"neetoForm": {
|
|
3
|
+
"common": {
|
|
4
|
+
"fieldReq": "{{field}} е задължителен",
|
|
5
|
+
"thisFieldIsRequired": "Това поле е задължително",
|
|
6
|
+
"somethingWentWrong": "Нещо се обърка!",
|
|
7
|
+
"edit": "Редактиране",
|
|
8
|
+
"clone": "Копиране",
|
|
9
|
+
"delete": "Изтриване",
|
|
10
|
+
"agreeTermsAndConditions": "Съгласен съм с условията и правилата, споменати по-долу",
|
|
11
|
+
"agreeCondition": "Съгласен съм",
|
|
12
|
+
"mustAcceptTermsAndConditions": "Трябва да приемете условията и правилата",
|
|
13
|
+
"mustAcceptCondition": "Трябва да приемете условието, за да продължите",
|
|
14
|
+
"email": "Имейл",
|
|
15
|
+
"phone": "Телефон",
|
|
16
|
+
"phNo": "Телефонен номер",
|
|
17
|
+
"name": "Име",
|
|
18
|
+
"text": "Текст",
|
|
19
|
+
"rate": "Оценка",
|
|
20
|
+
"submit": "Изпрати",
|
|
21
|
+
"reset": "Нулиране",
|
|
22
|
+
"cancel": "Отмяна",
|
|
23
|
+
"singleChoice": "Единствен избор",
|
|
24
|
+
"company": "Компания",
|
|
25
|
+
"select": "Изберете",
|
|
26
|
+
"selectOne": "Изберете един",
|
|
27
|
+
"required": "Задължително",
|
|
28
|
+
"hideQuestion": "Скрий въпроса",
|
|
29
|
+
"readOnly": "Само за четене",
|
|
30
|
+
"responseVisibleOnlyToHost": "Отговорът е видим само за хоста",
|
|
31
|
+
"invalidURL": "Невалидно URL",
|
|
32
|
+
"generateLink": "Генериране на линк",
|
|
33
|
+
"paragraphCantBeEmpty": "Параграфът не може да бъде празен",
|
|
34
|
+
"fillTheFormToChat": "Моля, попълнете формуляра, за да започнете чат.",
|
|
35
|
+
"phoneNumberValidation": "Телефонен номер, започващ с код на държавата",
|
|
36
|
+
"yes": "Да",
|
|
37
|
+
"count": "Брой",
|
|
38
|
+
"shape": "Форма",
|
|
39
|
+
"good": "Добър",
|
|
40
|
+
"okay": "Добре",
|
|
41
|
+
"bad": "Лош",
|
|
42
|
+
"no": "Не",
|
|
43
|
+
"addAdditionalGuests": "Добавете допълнителни гости",
|
|
44
|
+
"unanswered": "Без отговор",
|
|
45
|
+
"hobbies": "Хобита",
|
|
46
|
+
"country": "Държава",
|
|
47
|
+
"addGuests": "Добавете гости",
|
|
48
|
+
"addGuestsHelper": "Въведете имейли, разделени с запетая.",
|
|
49
|
+
"start": "Начало",
|
|
50
|
+
"end": "Край",
|
|
51
|
+
"settings": "Настройки",
|
|
52
|
+
"advancedProperties": "Разширени свойства",
|
|
53
|
+
"clonedElementLabel": "Копие на {{label, anyCase}}",
|
|
54
|
+
"option": "Опция",
|
|
55
|
+
"rating": "Оценка",
|
|
56
|
+
"captchaType": "Тип captcha",
|
|
57
|
+
"reCaptchaV2": "reCAPTCHA v2",
|
|
58
|
+
"mathCaptcha": "Математическа captcha",
|
|
59
|
+
"remainingItemsCount": "{{count}} повече",
|
|
60
|
+
"domain": "Домейн",
|
|
61
|
+
"domains": "Домейни",
|
|
62
|
+
"viewHelpArticle": "Прегледайте статията за помощ",
|
|
63
|
+
"splitAsFirstAndLastNames": "Разделете на \"Име\" и \"Фамилия\""
|
|
64
|
+
},
|
|
65
|
+
"fields": {
|
|
66
|
+
"mcf": "Множествен избор",
|
|
67
|
+
"scf": "Единствен избор",
|
|
68
|
+
"def": "Параграф",
|
|
69
|
+
"drf": "Падащо меню",
|
|
70
|
+
"qif": "Текст с множество редове",
|
|
71
|
+
"nif": "Име",
|
|
72
|
+
"tif": "Текст в един ред",
|
|
73
|
+
"eif": "Имейл",
|
|
74
|
+
"pif": "Телефонен номер",
|
|
75
|
+
"rif": "Оценка",
|
|
76
|
+
"tcf": "Условия и правила",
|
|
77
|
+
"date": "Дата",
|
|
78
|
+
"fbf": "Обратна връзка",
|
|
79
|
+
"agif": "Допълнителни гости",
|
|
80
|
+
"rtf": "Поле за рибок текст",
|
|
81
|
+
"cf": "Условие",
|
|
82
|
+
"iif": "Цяло число",
|
|
83
|
+
"dif": "Десетично",
|
|
84
|
+
"fileUpload": "Качване на файл",
|
|
85
|
+
"captcha": "Captcha",
|
|
86
|
+
"smsReminder": "SMS напомняне"
|
|
87
|
+
},
|
|
88
|
+
"toasts": {
|
|
89
|
+
"formSubmitted": "Формулярът е подаден успешно!"
|
|
90
|
+
},
|
|
91
|
+
"callouts": {
|
|
92
|
+
"submitError": "Не можа да се подаде формулярът",
|
|
93
|
+
"hiddenQuestion": "Това е скрито поле. Хората, попълващи този формуляр, няма да виждат това поле.",
|
|
94
|
+
"responseVisibleOnlyToHost": "Тази поле е видимо за всички. Но отговорът му ще е видим само за хоста."
|
|
95
|
+
},
|
|
96
|
+
"successPage": {
|
|
97
|
+
"title1": "Благодаря ви.",
|
|
98
|
+
"title2": "Вашият отговор е получен."
|
|
99
|
+
},
|
|
100
|
+
"emptyState": {
|
|
101
|
+
"noData": "Не са намерени данни."
|
|
102
|
+
},
|
|
103
|
+
"questions": {
|
|
104
|
+
"deleteAlert": {
|
|
105
|
+
"title": "Изтриване на полето?",
|
|
106
|
+
"message_one": "Вие изтривате полето <strong>{{label}}</strong>. Това ще изтрие и всякакви свързани данни.",
|
|
107
|
+
"message_other": "Вие изтривате полето <strong>{{label}}</strong> за всички езици. Това ще изтрие и всякакви свързани данни."
|
|
108
|
+
},
|
|
109
|
+
"common": {
|
|
110
|
+
"noData": "Няма въпроси за показване.",
|
|
111
|
+
"helpText": {
|
|
112
|
+
"learnAbout": "Научете за",
|
|
113
|
+
"howToAddNewQuestions": "как да добавите нови въпроси"
|
|
114
|
+
},
|
|
115
|
+
"primaryPanel": {
|
|
116
|
+
"addQuestion": "Добавете въпрос",
|
|
117
|
+
"noQuestionLeft": "Няма повече полета за въпроси за добавяне"
|
|
118
|
+
},
|
|
119
|
+
"editQuestion": "Редактирайте въпрос",
|
|
120
|
+
"cloneBtn": "Копиране",
|
|
121
|
+
"questionFields": {
|
|
122
|
+
"field": {
|
|
123
|
+
"question": "Въпрос",
|
|
124
|
+
"firstNameQuestion": "Въпрос за име",
|
|
125
|
+
"lastNameQuestion": "Въпрос за фамилия",
|
|
126
|
+
"placeholder": "Текст на място",
|
|
127
|
+
"firstNamePlaceholder": "Място за име",
|
|
128
|
+
"lastNamePlaceholder": "Място за фамилия",
|
|
129
|
+
"required": "Задължително",
|
|
130
|
+
"addOption": "Добавете нова опция",
|
|
131
|
+
"option": "Опция",
|
|
132
|
+
"numberedOption": "Опция {{number}}",
|
|
133
|
+
"options": "Опции",
|
|
134
|
+
"labelExample": "Пример: {{what}}",
|
|
135
|
+
"label": "Етикет",
|
|
136
|
+
"fieldCodeTitle": "Разширени настройки",
|
|
137
|
+
"fieldCode": "Полева код",
|
|
138
|
+
"fieldCodeHelpDescription": "Ако промените кода на полето, всички съществуващи споделени линкове, съдържащи стария код на полето като параметър за заявка, няма да работят правилно. <Link>Прегледайте статията за помощ</Link> за повече информация.",
|
|
139
|
+
"questionType": "Тип на въпроса",
|
|
140
|
+
"hideQuestionHelpDescription": "Когато е активирано, този въпрос няма да е видим в създадения формуляр. Може да се използва за проследяване на \"идентификатори за справка\" и UTM параметри.",
|
|
141
|
+
"responseVisibleOnlyToHostHelpDescription": "Когато е активирано, отговорът на този въпрос ще бъде видим само за хоста",
|
|
142
|
+
"readOnlyHelpDescription": "Когато е активирано, клиентът ще може да вижда само отговора на този въпрос, но няма да може да променя отговора на този въпрос. Тъй като отбелязвате този въпрос като \"само за четене\", трябва предварително да попълните въпроса с отговор.",
|
|
143
|
+
"verifyHuman": "Потвърдете, че сте човек"
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
"changeLanguage": "Смена на езика"
|
|
148
|
+
},
|
|
149
|
+
"error": {
|
|
150
|
+
"invalidField": "Моля, въведете валиден {{label}}",
|
|
151
|
+
"invalidFieldCode": "Този полев код не може да се използва",
|
|
152
|
+
"requiredField": "Моля, въведете {{label}}",
|
|
153
|
+
"selectMin": "Моля, изберете {{min}} {{entity}}",
|
|
154
|
+
"invalidType": "{{label}} трябва да бъде валиден {{type}}",
|
|
155
|
+
"fieldCantBeEmpty": "{{field, anyCase}} не може да бъде празен",
|
|
156
|
+
"incompleteCaptcha": "Моля, завършете captcha",
|
|
157
|
+
"captchaVerificationFailed": "Потвърждаването на captcha не успя. Моля, опитайте отново.",
|
|
158
|
+
"invalidDomain": "Името на домейна е невалидно",
|
|
159
|
+
"minOneEntity": "Моля, добавете поне една {{entity}}",
|
|
160
|
+
"emailFromRestrictedDomain": "Имейли с домейн {{domain}} не се приемат."
|
|
161
|
+
},
|
|
162
|
+
"fileTypes": {
|
|
163
|
+
"documents": "Документи",
|
|
164
|
+
"images": "Изображения",
|
|
165
|
+
"audioVideo": "Аудио/Видео"
|
|
166
|
+
},
|
|
167
|
+
"fileUpload": {
|
|
168
|
+
"enableMultipleFilesUpload": "Разрешете качването на множество файлове",
|
|
169
|
+
"fileTypes": "Типове файлове",
|
|
170
|
+
"validations": {
|
|
171
|
+
"waitForUpload": "Моля, изчакайте, докато качването свърши",
|
|
172
|
+
"atLeastOneFileRequired": "Моля, качете поне един файл",
|
|
173
|
+
"removeDuplicates": "Моля, премахнете дублиращите се записи",
|
|
174
|
+
"fileIsRequired": "Моля, качете файл"
|
|
175
|
+
},
|
|
176
|
+
"dropzone": {
|
|
177
|
+
"errors": {
|
|
178
|
+
"fileTooLarge": "Файлът '{{fileName, anyCase}}' е по-голям от {{maxSize}} MB",
|
|
179
|
+
"fileInvalidType": "Типът файл {{fileType}} не е разрешен",
|
|
180
|
+
"tooManyFiles": "Можете да качите само един файл",
|
|
181
|
+
"defaultError": "Нещо се обърка при качването на {{fileName, anyCase}}"
|
|
182
|
+
},
|
|
183
|
+
"maxFileSize": "Максимално допустимият размер е {{size}} {{unit, anyCase}}",
|
|
184
|
+
"allowedFileTypes": "Разрешените типове файлове са {{types}}",
|
|
185
|
+
"oneFileAllowed": "Моля, качете само 1 файл",
|
|
186
|
+
"chooseOrDragFile": "<typography>Изберете файл <span>или</span> плъзнете тук.</typography>"
|
|
187
|
+
},
|
|
188
|
+
"fileSizeInMb": "{{fileSize}} MB",
|
|
189
|
+
"mb": "MB"
|
|
190
|
+
},
|
|
191
|
+
"domainRestriction": {
|
|
192
|
+
"whitelistedDomains": {
|
|
193
|
+
"label": "Разрешете имейл домейни",
|
|
194
|
+
"description": "Имейли с следните домейни ще бъдат приети.",
|
|
195
|
+
"popoverDescription": "Въведете домейни, които трябва да бъдат разрешени. Само имейли с тези домейни ще бъдат приети."
|
|
196
|
+
},
|
|
197
|
+
"blacklistedDomains": {
|
|
198
|
+
"label": "Откажете имейл домейни",
|
|
199
|
+
"description": "Имейли с следните домейни ще бъдат отхвърлени.",
|
|
200
|
+
"popoverDescription": "Въведете домейни, които трябва да бъдат ограничени. Имейли с тези домейни няма да бъдат приети."
|
|
201
|
+
},
|
|
202
|
+
"helpText": "Натиснете интервал, таб или клавиш Enter след добавяне на домейн.",
|
|
203
|
+
"removeInvalidDomains": "Натиснете тук, за да премахнете невалидни домейни.",
|
|
204
|
+
"placeholder": "Моля, въведете имейл домейни"
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|