Widget UI strings
Overrides widget UI strings (input placeholder, header buttons, carousel). Scenario texts and the title / subtitle fields in kw('init') are not part of this object.
Launch fields: Widget settings parameters.
How to pass them
Shape: language → group → key. Pass only what you change: the widget merges the object into the built-in dictionary.
Built-in languages: uk, en, ru, de, vn. Any other code (for example pl) creates a new locale based on Ukrainian.
kw('init', {
bot_id: 1,
language_code: "en",
custom_lang_translations: {
en: {
common: {
write_a_message: "Type a message…"
},
header: {
privacy_agree: "I agree"
}
},
uk: {
common: {
write_a_message: "Напишіть нам…"
}
}
}
});
In header.privacy_policy_text keep {url} — privacy_policy_url is inserted there. In carousel.goToSlide keep {slide} and {total}.
Locale dictionaries are not identical: uk has no common.frame_title and no language_settings group; de and vn have no header.expand / header.minimize. An override still works if you pass the key.
Strings on screen
Default text is English, as in the en dictionary.
| Key | Where it appears | Default (en) |
|---|---|---|
common.write_a_message |
Input placeholder | Write a message |
common.send |
Send-button tooltip | Send |
common.reopen_dialog |
Restart-dialog control | Restart chat |
common.you_offline |
Offline title | You’re Offline |
common.check_offline |
Offline hint | Check Your Internet Connection |
common.too_many_tries |
Anti-spam title | You are sending messages too often. |
common.please_wait |
Anti-spam hint | Please wait and try again later. |
common.input_phone_label |
Phone field in the scenario | Enter phone here... |
common.input_email_label |
Email field in the scenario | Enter email here... |
common.file_sent_message |
After a file is sent | File successfully sent |
header.expand |
Expand the window | Expand widget |
header.minimize |
Collapse the window | Minimize widget |
header.stop_chat_sure |
Close-chat confirmation | Do you really want to close the chat? |
header.stop_chat_btn |
Button in that confirmation | Stop chat |
header.continue_chat_btn |
Button in that confirmation | Continue chat |
header.switch_channel |
Switch to messenger (multi-channel) | Switch to messenger |
header.privacy_policy_text |
Privacy consent copy | …<a href="{url}">Privacy Policy</a>… |
header.privacy_agree |
Consent button | Agree, continue |
header.ip_ban |
If there is no user_block_message for the language |
Chat access from this IP address… |
agent.thinking |
“Agent thinking” if the scenario step has no custom text | Agent is thinking... |
errors.max_size |
File larger than 10 MB | File size should not exceed 10MB |
errors.invalid_file_type |
Unsupported file type | Unsupported file type. |
notifications.new_message |
Notification / tab title | New message |
weekday_names.mon |
Weekday label | Mon |
weekday_names.tue |
Weekday label | Tue |
weekday_names.wed |
Weekday label | Wed |
weekday_names.thu |
Weekday label | Thu |
weekday_names.fri |
Weekday label | Fri |
weekday_names.sat |
Weekday label | Sat |
weekday_names.sun |
Weekday label | Sun |
weekday_names.minutes_age |
“N min ago” | min ago |
carousel.previous |
Carousel, accessibility | Previous slide |
carousel.next |
Carousel, accessibility | Next slide |
carousel.container |
Carousel, accessibility | Carousel with slides |
carousel.item |
Carousel, accessibility | Slide |
carousel.goToSlide |
Carousel; keep {slide} {total} |
Go to slide {slide} of {total} |
product_cards.buy_button |
Product card if there is no custom CTA | Buy |
product_cards.show_all_specs |
Card specifications | View all specifications |
product_cards.hide_details |
Card specifications | Hide details |
In the dictionary, almost never on screen
The widget does not show these strings on screen. You can still override them.
| Key | Default (en) |
|---|---|
app.access_denied |
Access denied |
header.logout |
Logout |
common.close |
Close |
common.save |
Save |
common.success |
Success |
common.error |
Error |
common.error_permitions |
permissions error |
common.error_delete |
removal |
common.error_update |
updating |
common.error_save |
preservations |
common.error_get |
receiving |
common.error_exit |
exit |
common.error_modify |
receiving |
common.remove_the_file |
Remove the file |
common.cancel |
Cancel |
common.edit |
Edit |
common.frame_title |
Switching to Business plat having Personal plan paid |
common.frame_subtitle_number |
Number |
common.frame_subtitle_status |
Status |
common.frame_subtitle_open |
Open |
errors.connect |
Connection error |
rules.required |
Required field |
rules.not_empty |
The field must not be empty |
rules.phone |
The phone field must be in the format +380XXXXXXXXX |
rules.email |
Please enter a valid email |
login.authorization |
Authorization |
login.email_field |
|
login.password_field |
Password |
login.login_button |
Entry |
login.auth_error |
Authorisation error |
language_settings.choose_lang |
Choose language: |
language_settings.ru |
Russian |
language_settings.en |
English |
language_settings.de |
Deutsch |
common.frame_title and language_settings.* are not in the uk dictionary. language_settings.de is only in the de dictionary.
The widget dictionary does not include modules.op.access_denied, modules.op.lack_rights, or modules.op.texts.without_subject. An override via custom_lang_translations can still work; this is not a public string set.