Chore: Add translated languages to account settings (#826)
* Add available languages in account settings Co-authored-by: Sojan <sojan@pepalo.com>
This commit is contained in:
parent
d6d15c8c3c
commit
c7120e9637
37 changed files with 473 additions and 250 deletions
|
@ -18,6 +18,7 @@ class Api::V1::Widget::BaseController < ApplicationController
|
|||
def set_web_widget
|
||||
@web_widget = ::Channel::WebWidget.find_by!(website_token: permitted_params[:website_token])
|
||||
@account = @web_widget.account
|
||||
switch_locale @account
|
||||
end
|
||||
|
||||
def set_contact
|
||||
|
|
|
@ -24,9 +24,14 @@ class ApplicationController < ActionController::Base
|
|||
elsif @resource&.is_a?(AgentBot)
|
||||
account_accessible_for_bot?(account)
|
||||
end
|
||||
switch_locale account
|
||||
account
|
||||
end
|
||||
|
||||
def switch_locale(account)
|
||||
I18n.locale = (I18n.available_locales.map(&:to_s).include?(account.locale) ? account.locale : nil) || I18n.default_locale
|
||||
end
|
||||
|
||||
def account_accessible_for_user?(account)
|
||||
render_unauthorized('You are not authorized to access this account') unless account.account_users.find_by(user_id: current_user.id)
|
||||
end
|
||||
|
|
|
@ -1,2 +1,5 @@
|
|||
module ApplicationHelper
|
||||
def available_locales_with_name
|
||||
LANGUAGES_CONFIG.map { |_key, val| val.slice(:name, :iso_639_1_code) }
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
import en from './locale/ca';
|
||||
|
||||
export default {
|
||||
...en,
|
||||
APP_GLOBAL: {
|
||||
TRIAL_MESSAGE: 'dies de prova restants.',
|
||||
TRAIL_BUTTON: 'Comprar ara',
|
||||
},
|
||||
COMPONENTS: {
|
||||
CODE: {
|
||||
BUTTON_TEXT: 'Copiar',
|
||||
COPY_SUCCESSFUL: 'Codi copiat al porta-retalls correctament',
|
||||
},
|
||||
FILE_BUBBLE: {
|
||||
DOWNLOAD: 'Descarrega',
|
||||
UPLOADING: "S'està pujant...",
|
||||
},
|
||||
},
|
||||
CONFIRM_EMAIL: "S'està verificant...",
|
||||
SETTINGS: {
|
||||
INBOXES: {
|
||||
NEW_INBOX: "Afegeix una safata d'entrada",
|
||||
},
|
||||
},
|
||||
SIDEBAR: {
|
||||
CONVERSATIONS: 'Conversacions',
|
||||
REPORTS: 'Informes',
|
||||
SETTINGS: 'Configuració',
|
||||
HOME: 'Inici',
|
||||
AGENTS: 'Agents',
|
||||
INBOXES: "Safates d'entrada",
|
||||
CANNED_RESPONSES: 'Respostes Predeterminades',
|
||||
BILLING: 'Facturació',
|
||||
INTEGRATIONS: 'Integracions',
|
||||
ACCOUNT_SETTINGS: 'Configuració del compte',
|
||||
},
|
||||
};
|
|
@ -1,41 +0,0 @@
|
|||
import de from './locale/de';
|
||||
|
||||
export default {
|
||||
...de,
|
||||
APP_GLOBAL: {
|
||||
TRIAL_MESSAGE: 'verbleibende Tage Probezeit.',
|
||||
TRAIL_BUTTON: 'Kaufe jetzt',
|
||||
},
|
||||
COMPONENTS: {
|
||||
CODE: {
|
||||
BUTTON_TEXT: 'Kopieren',
|
||||
COPY_SUCCESSFUL: 'Code erfolgreich in die Zwischenablage kopiert',
|
||||
},
|
||||
FILE_BUBBLE: {
|
||||
DOWNLOAD: 'Herunterladen',
|
||||
UPLOADING: 'Hochladen...',
|
||||
},
|
||||
|
||||
FORM_BUBBLE: {
|
||||
SUBMIT: 'Einreichen',
|
||||
},
|
||||
},
|
||||
CONFIRM_EMAIL: 'Überprüfen...',
|
||||
SETTINGS: {
|
||||
INBOXES: {
|
||||
NEW_INBOX: 'Posteingang hinzufügen',
|
||||
},
|
||||
},
|
||||
SIDEBAR: {
|
||||
CONVERSATIONS: 'Gespräche',
|
||||
REPORTS: 'Berichte',
|
||||
SETTINGS: 'Die Einstellungen',
|
||||
HOME: 'Zuhause',
|
||||
AGENTS: 'Agenten',
|
||||
INBOXES: 'Posteingänge',
|
||||
CANNED_RESPONSES: 'Vorgefertigte Antworten',
|
||||
BILLING: 'Abrechnung',
|
||||
INTEGRATIONS: 'Integrationen',
|
||||
ACCOUNT_SETTINGS: 'Kontoeinstellungen',
|
||||
},
|
||||
};
|
|
@ -1,40 +0,0 @@
|
|||
import en from './locale/en';
|
||||
|
||||
export default {
|
||||
...en,
|
||||
APP_GLOBAL: {
|
||||
TRIAL_MESSAGE: 'days trial remaining.',
|
||||
TRAIL_BUTTON: 'Buy Now',
|
||||
},
|
||||
COMPONENTS: {
|
||||
CODE: {
|
||||
BUTTON_TEXT: 'Copy',
|
||||
COPY_SUCCESSFUL: 'Code copied to clipboard successfully',
|
||||
},
|
||||
FILE_BUBBLE: {
|
||||
DOWNLOAD: 'Download',
|
||||
UPLOADING: 'Uploading...',
|
||||
},
|
||||
FORM_BUBBLE: {
|
||||
SUBMIT: 'Submit',
|
||||
},
|
||||
},
|
||||
CONFIRM_EMAIL: 'Verifying...',
|
||||
SETTINGS: {
|
||||
INBOXES: {
|
||||
NEW_INBOX: 'Add Inbox',
|
||||
},
|
||||
},
|
||||
SIDEBAR: {
|
||||
CONVERSATIONS: 'Conversations',
|
||||
REPORTS: 'Reports',
|
||||
SETTINGS: 'Settings',
|
||||
HOME: 'Home',
|
||||
AGENTS: 'Agents',
|
||||
INBOXES: 'Inboxes',
|
||||
CANNED_RESPONSES: 'Canned Responses',
|
||||
BILLING: 'Billing',
|
||||
INTEGRATIONS: 'Integrations',
|
||||
ACCOUNT_SETTINGS: 'Account Settings',
|
||||
},
|
||||
};
|
|
@ -1,37 +0,0 @@
|
|||
import en from './locale/es';
|
||||
|
||||
export default {
|
||||
...en,
|
||||
APP_GLOBAL: {
|
||||
TRIAL_MESSAGE: 'días de prueba restantes.',
|
||||
TRAIL_BUTTON: 'Comprar ahora',
|
||||
},
|
||||
COMPONENTS: {
|
||||
CODE: {
|
||||
BUTTON_TEXT: 'Copiar',
|
||||
COPY_SUCCESSFUL: 'Código copiado al portapapeles correctamente',
|
||||
},
|
||||
FILE_BUBBLE: {
|
||||
DOWNLOAD: 'Descarga',
|
||||
UPLOADING: 'Se está subiendo...',
|
||||
},
|
||||
},
|
||||
CONFIRM_EMAIL: 'Se está verificando...',
|
||||
SETTINGS: {
|
||||
INBOXES: {
|
||||
NEW_INBOX: 'Añadir bandeja de entrada',
|
||||
},
|
||||
},
|
||||
SIDEBAR: {
|
||||
CONVERSATIONS: 'Conversaciones',
|
||||
REPORTS: 'Informes',
|
||||
SETTINGS: 'Configuración',
|
||||
HOME: 'Inicio',
|
||||
AGENTS: 'Agentes',
|
||||
INBOXES: 'Bandejas de entrada',
|
||||
CANNED_RESPONSES: 'Respuestas Predeterminadas',
|
||||
BILLING: 'Facturación',
|
||||
INTEGRATIONS: 'Integraciones',
|
||||
ACCOUNT_SETTINGS: 'Configuración de la cuenta',
|
||||
},
|
||||
};
|
|
@ -1,11 +1,15 @@
|
|||
import ca from './ca';
|
||||
import en from './en';
|
||||
import de from './de';
|
||||
import ml from './ml';
|
||||
import ca from './locale/ca';
|
||||
import de from './locale/de';
|
||||
import el from './locale/el';
|
||||
import en from './locale/en';
|
||||
import ml from './locale/ml';
|
||||
import pt from './locale/pt';
|
||||
|
||||
export default {
|
||||
ca,
|
||||
de,
|
||||
el,
|
||||
en,
|
||||
ml,
|
||||
pt,
|
||||
};
|
||||
|
|
|
@ -58,5 +58,37 @@
|
|||
"SIDEBAR_ITEMS": {
|
||||
"PROFILE_SETTINGS": "Configuració del Perfil",
|
||||
"LOGOUT": "Sortir"
|
||||
},
|
||||
"APP_GLOBAL": {
|
||||
"TRIAL_MESSAGE": "dies de prova restants.",
|
||||
"TRAIL_BUTTON": "Comprar ara"
|
||||
},
|
||||
"COMPONENTS": {
|
||||
"CODE": {
|
||||
"BUTTON_TEXT": "Copiar",
|
||||
"COPY_SUCCESSFUL": "Codi copiat al porta-retalls correctament"
|
||||
},
|
||||
"FILE_BUBBLE": {
|
||||
"DOWNLOAD": "Descarrega",
|
||||
"UPLOADING": "S'està pujant..."
|
||||
}
|
||||
},
|
||||
"CONFIRM_EMAIL": "S'està verificant...",
|
||||
"SETTINGS": {
|
||||
"INBOXES": {
|
||||
"NEW_INBOX": "Afegeix una safata d'entrada"
|
||||
}
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"CONVERSATIONS": "Conversacions",
|
||||
"REPORTS": "Informes",
|
||||
"SETTINGS": "Configuració",
|
||||
"HOME": "Inici",
|
||||
"AGENTS": "Agents",
|
||||
"INBOXES": "Safates d'entrada",
|
||||
"CANNED_RESPONSES": "Respostes Predeterminades",
|
||||
"BILLING": "Facturació",
|
||||
"INTEGRATIONS": "Integracions",
|
||||
"ACCOUNT_SETTINGS": "Configuració del compte"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,5 +58,41 @@
|
|||
"SIDEBAR_ITEMS": {
|
||||
"PROFILE_SETTINGS": "Profileinstellungen",
|
||||
"LOGOUT": "Ausloggen"
|
||||
},
|
||||
"APP_GLOBAL": {
|
||||
"TRIAL_MESSAGE": "verbleibende Tage Probezeit.",
|
||||
"TRAIL_BUTTON": "Kaufe jetzt"
|
||||
},
|
||||
"COMPONENTS": {
|
||||
"CODE": {
|
||||
"BUTTON_TEXT": "Kopieren",
|
||||
"COPY_SUCCESSFUL": "Code erfolgreich in die Zwischenablage kopiert"
|
||||
},
|
||||
"FILE_BUBBLE": {
|
||||
"DOWNLOAD": "Herunterladen",
|
||||
"UPLOADING": "Hochladen..."
|
||||
},
|
||||
"FORM_BUBBLE": {
|
||||
"SUBMIT": "Einreichen"
|
||||
}
|
||||
},
|
||||
"CONFIRM_EMAIL": "Überprüfen...",
|
||||
"SETTINGS": {
|
||||
"INBOXES": {
|
||||
"NEW_INBOX": "Posteingang hinzufügen"
|
||||
}
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"CONVERSATIONS": "Gespräche",
|
||||
"REPORTS": "Berichte",
|
||||
"SETTINGS": "Die Einstellungen",
|
||||
"HOME": "Zuhause",
|
||||
"AGENTS": "Agenten",
|
||||
"INBOXES": "Posteingänge",
|
||||
"CANNED_RESPONSES": "Vorgefertigte Antworten",
|
||||
"BILLING": "Abrechnung",
|
||||
"INTEGRATIONS": "Integrationen",
|
||||
"ACCOUNT_SETTINGS": "Kontoeinstellungen"
|
||||
}
|
||||
|
||||
}
|
||||
|
|
34
app/javascript/dashboard/i18n/locale/el/index.js
Normal file
34
app/javascript/dashboard/i18n/locale/el/index.js
Normal file
|
@ -0,0 +1,34 @@
|
|||
/* eslint-disable */
|
||||
import { default as _agentMgmt } from './agentMgmt.json';
|
||||
import { default as _billing } from './billing.json';
|
||||
import { default as _cannedMgmt } from './cannedMgmt.json';
|
||||
import { default as _chatlist } from './chatlist.json';
|
||||
import { default as _contact } from './contact.json';
|
||||
import { default as _conversation } from './conversation.json';
|
||||
import { default as _inboxMgmt } from './inboxMgmt.json';
|
||||
import { default as _login } from './login.json';
|
||||
import { default as _report } from './report.json';
|
||||
import { default as _resetPassword } from './resetPassword.json';
|
||||
import { default as _setNewPassword } from './setNewPassword.json';
|
||||
import { default as _settings } from './settings.json';
|
||||
import { default as _signup } from './signup.json';
|
||||
import { default as _integrations } from './integrations.json';
|
||||
import { default as _generalSettings } from './generalSettings.json';
|
||||
|
||||
export default {
|
||||
..._agentMgmt,
|
||||
..._billing,
|
||||
..._cannedMgmt,
|
||||
..._chatlist,
|
||||
..._contact,
|
||||
..._conversation,
|
||||
..._inboxMgmt,
|
||||
..._login,
|
||||
..._report,
|
||||
..._resetPassword,
|
||||
..._setNewPassword,
|
||||
..._settings,
|
||||
..._signup,
|
||||
..._integrations,
|
||||
..._generalSettings,
|
||||
};
|
|
@ -68,5 +68,40 @@
|
|||
"SIDEBAR_ITEMS": {
|
||||
"PROFILE_SETTINGS": "Profile Settings",
|
||||
"LOGOUT": "Logout"
|
||||
},
|
||||
"APP_GLOBAL": {
|
||||
"TRIAL_MESSAGE": "days trial remaining.",
|
||||
"TRAIL_BUTTON": "Buy Now"
|
||||
},
|
||||
"COMPONENTS": {
|
||||
"CODE": {
|
||||
"BUTTON_TEXT": "Copy",
|
||||
"COPY_SUCCESSFUL": "Code copied to clipboard successfully"
|
||||
},
|
||||
"FILE_BUBBLE": {
|
||||
"DOWNLOAD": "Download",
|
||||
"UPLOADING": "Uploading..."
|
||||
},
|
||||
"FORM_BUBBLE": {
|
||||
"SUBMIT": "Submit"
|
||||
}
|
||||
},
|
||||
"CONFIRM_EMAIL": "Verifying...",
|
||||
"SETTINGS": {
|
||||
"INBOXES": {
|
||||
"NEW_INBOX": "Add Inbox"
|
||||
}
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"CONVERSATIONS": "Conversations",
|
||||
"REPORTS": "Reports",
|
||||
"SETTINGS": "Settings",
|
||||
"HOME": "Home",
|
||||
"AGENTS": "Agents",
|
||||
"INBOXES": "Inboxes",
|
||||
"CANNED_RESPONSES": "Canned Responses",
|
||||
"BILLING": "Billing",
|
||||
"INTEGRATIONS": "Integrations",
|
||||
"ACCOUNT_SETTINGS": "Account Settings"
|
||||
}
|
||||
}
|
||||
|
|
34
app/javascript/dashboard/i18n/locale/es/index.js
Normal file
34
app/javascript/dashboard/i18n/locale/es/index.js
Normal file
|
@ -0,0 +1,34 @@
|
|||
/* eslint-disable */
|
||||
import { default as _agentMgmt } from './agentMgmt.json';
|
||||
import { default as _billing } from './billing.json';
|
||||
import { default as _cannedMgmt } from './cannedMgmt.json';
|
||||
import { default as _chatlist } from './chatlist.json';
|
||||
import { default as _contact } from './contact.json';
|
||||
import { default as _conversation } from './conversation.json';
|
||||
import { default as _inboxMgmt } from './inboxMgmt.json';
|
||||
import { default as _login } from './login.json';
|
||||
import { default as _report } from './report.json';
|
||||
import { default as _resetPassword } from './resetPassword.json';
|
||||
import { default as _setNewPassword } from './setNewPassword.json';
|
||||
import { default as _settings } from './settings.json';
|
||||
import { default as _signup } from './signup.json';
|
||||
import { default as _integrations } from './integrations.json';
|
||||
import { default as _generalSettings } from './generalSettings.json';
|
||||
|
||||
export default {
|
||||
..._agentMgmt,
|
||||
..._billing,
|
||||
..._cannedMgmt,
|
||||
..._chatlist,
|
||||
..._contact,
|
||||
..._conversation,
|
||||
..._inboxMgmt,
|
||||
..._login,
|
||||
..._report,
|
||||
..._resetPassword,
|
||||
..._setNewPassword,
|
||||
..._settings,
|
||||
..._signup,
|
||||
..._integrations,
|
||||
..._generalSettings,
|
||||
};
|
34
app/javascript/dashboard/i18n/locale/fr/index.js
Normal file
34
app/javascript/dashboard/i18n/locale/fr/index.js
Normal file
|
@ -0,0 +1,34 @@
|
|||
/* eslint-disable */
|
||||
import { default as _agentMgmt } from './agentMgmt.json';
|
||||
import { default as _billing } from './billing.json';
|
||||
import { default as _cannedMgmt } from './cannedMgmt.json';
|
||||
import { default as _chatlist } from './chatlist.json';
|
||||
import { default as _contact } from './contact.json';
|
||||
import { default as _conversation } from './conversation.json';
|
||||
import { default as _inboxMgmt } from './inboxMgmt.json';
|
||||
import { default as _login } from './login.json';
|
||||
import { default as _report } from './report.json';
|
||||
import { default as _resetPassword } from './resetPassword.json';
|
||||
import { default as _setNewPassword } from './setNewPassword.json';
|
||||
import { default as _settings } from './settings.json';
|
||||
import { default as _signup } from './signup.json';
|
||||
import { default as _integrations } from './integrations.json';
|
||||
import { default as _generalSettings } from './generalSettings.json';
|
||||
|
||||
export default {
|
||||
..._agentMgmt,
|
||||
..._billing,
|
||||
..._cannedMgmt,
|
||||
..._chatlist,
|
||||
..._contact,
|
||||
..._conversation,
|
||||
..._inboxMgmt,
|
||||
..._login,
|
||||
..._report,
|
||||
..._resetPassword,
|
||||
..._setNewPassword,
|
||||
..._settings,
|
||||
..._signup,
|
||||
..._integrations,
|
||||
..._generalSettings,
|
||||
};
|
|
@ -58,5 +58,40 @@
|
|||
"SIDEBAR_ITEMS": {
|
||||
"PROFILE_SETTINGS": "പ്രൊഫൈൽ ക്രമീകരണങ്ങൾ",
|
||||
"LOGOUT": "ലോഗൗട്ട്"
|
||||
},
|
||||
"APP_GLOBAL": {
|
||||
"TRIAL_MESSAGE": "ദിവസത്തെ ട്രയൽ ശേഷിക്കുന്നു.",
|
||||
"TRAIL_BUTTON": "ഇപ്പോൾ വാങ്ങുക"
|
||||
},
|
||||
"COMPONENTS": {
|
||||
"CODE": {
|
||||
"BUTTON_TEXT": "പകർത്തുക",
|
||||
"COPY_SUCCESSFUL": "കോഡ് വിജയകരമായി ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തി"
|
||||
},
|
||||
"FILE_BUBBLE": {
|
||||
"DOWNLOAD": "ഡൗൺലോഡുചെയ്യുക",
|
||||
"UPLOADING": "അപ്ലോഡുചെയ്യുന്നു..."
|
||||
},
|
||||
"FORM_BUBBLE": {
|
||||
"SUBMIT": "സമർപ്പിക്കുക"
|
||||
}
|
||||
},
|
||||
"CONFIRM_EMAIL": "പരിശോധിച്ചുറപ്പിക്കുന്നു...",
|
||||
"SETTINGS": {
|
||||
"INBOXES": {
|
||||
"NEW_INBOX": "ഇൻബോക്സ് ചേർക്കുക"
|
||||
}
|
||||
},
|
||||
"SIDEBAR": {
|
||||
"CONVERSATIONS": "സംഭാഷണങ്ങൾ",
|
||||
"REPORTS": "റിപ്പോർട്ടുകൾ",
|
||||
"SETTINGS": "ക്രമീകരണങ്ങൾ",
|
||||
"HOME": "ഹോം",
|
||||
"AGENTS": "ഏജന്റുമാർ",
|
||||
"INBOXES": "ഇൻബോക്സുകൾ",
|
||||
"CANNED_RESPONSES": "ക്യാൻഡ് പ്രതികരണങ്ങൾ",
|
||||
"BILLING": "ബില്ലിംഗ്",
|
||||
"INTEGRATIONS": "സംയോജനങ്ങൾ",
|
||||
"ACCOUNT_SETTINGS": "അക്കൗണ്ട് ക്രമീകരണങ്ങൾ"
|
||||
}
|
||||
}
|
||||
|
|
34
app/javascript/dashboard/i18n/locale/pt/index.js
Normal file
34
app/javascript/dashboard/i18n/locale/pt/index.js
Normal file
|
@ -0,0 +1,34 @@
|
|||
/* eslint-disable */
|
||||
import { default as _agentMgmt } from './agentMgmt.json';
|
||||
import { default as _billing } from './billing.json';
|
||||
import { default as _cannedMgmt } from './cannedMgmt.json';
|
||||
import { default as _chatlist } from './chatlist.json';
|
||||
import { default as _contact } from './contact.json';
|
||||
import { default as _conversation } from './conversation.json';
|
||||
import { default as _inboxMgmt } from './inboxMgmt.json';
|
||||
import { default as _login } from './login.json';
|
||||
import { default as _report } from './report.json';
|
||||
import { default as _resetPassword } from './resetPassword.json';
|
||||
import { default as _setNewPassword } from './setNewPassword.json';
|
||||
import { default as _settings } from './settings.json';
|
||||
import { default as _signup } from './signup.json';
|
||||
import { default as _integrations } from './integrations.json';
|
||||
import { default as _generalSettings } from './generalSettings.json';
|
||||
|
||||
export default {
|
||||
..._agentMgmt,
|
||||
..._billing,
|
||||
..._cannedMgmt,
|
||||
..._chatlist,
|
||||
..._contact,
|
||||
..._conversation,
|
||||
..._inboxMgmt,
|
||||
..._login,
|
||||
..._report,
|
||||
..._resetPassword,
|
||||
..._setNewPassword,
|
||||
..._settings,
|
||||
..._signup,
|
||||
..._integrations,
|
||||
..._generalSettings,
|
||||
};
|
33
app/javascript/dashboard/i18n/locale/ro/index.js
Normal file
33
app/javascript/dashboard/i18n/locale/ro/index.js
Normal file
|
@ -0,0 +1,33 @@
|
|||
import { default as _agentMgmt } from './agentMgmt.json';
|
||||
import { default as _billing } from './billing.json';
|
||||
import { default as _cannedMgmt } from './cannedMgmt.json';
|
||||
import { default as _chatlist } from './chatlist.json';
|
||||
import { default as _contact } from './contact.json';
|
||||
import { default as _conversation } from './conversation.json';
|
||||
import { default as _inboxMgmt } from './inboxMgmt.json';
|
||||
import { default as _login } from './login.json';
|
||||
import { default as _report } from './report.json';
|
||||
import { default as _resetPassword } from './resetPassword.json';
|
||||
import { default as _setNewPassword } from './setNewPassword.json';
|
||||
import { default as _settings } from './settings.json';
|
||||
import { default as _signup } from './signup.json';
|
||||
import { default as _integrations } from './integrations.json';
|
||||
import { default as _generalSettings } from './generalSettings.json';
|
||||
|
||||
export default {
|
||||
..._agentMgmt,
|
||||
..._billing,
|
||||
..._cannedMgmt,
|
||||
..._chatlist,
|
||||
..._contact,
|
||||
..._conversation,
|
||||
..._inboxMgmt,
|
||||
..._login,
|
||||
..._report,
|
||||
..._resetPassword,
|
||||
..._setNewPassword,
|
||||
..._settings,
|
||||
..._signup,
|
||||
..._integrations,
|
||||
..._generalSettings,
|
||||
};
|
|
@ -1,40 +0,0 @@
|
|||
import ml from './locale/ml';
|
||||
|
||||
export default {
|
||||
...ml,
|
||||
APP_GLOBAL: {
|
||||
TRIAL_MESSAGE: 'ദിവസത്തെ ട്രയൽ ശേഷിക്കുന്നു.',
|
||||
TRAIL_BUTTON: 'ഇപ്പോൾ വാങ്ങുക',
|
||||
},
|
||||
COMPONENTS: {
|
||||
CODE: {
|
||||
BUTTON_TEXT: 'പകർത്തുക',
|
||||
COPY_SUCCESSFUL: 'കോഡ് വിജയകരമായി ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തി',
|
||||
},
|
||||
FILE_BUBBLE: {
|
||||
DOWNLOAD: 'ഡൗൺലോഡുചെയ്യുക',
|
||||
UPLOADING: 'അപ്ലോഡുചെയ്യുന്നു...',
|
||||
},
|
||||
FORM_BUBBLE: {
|
||||
SUBMIT: 'സമർപ്പിക്കുക',
|
||||
},
|
||||
},
|
||||
CONFIRM_EMAIL: 'പരിശോധിച്ചുറപ്പിക്കുന്നു...',
|
||||
SETTINGS: {
|
||||
INBOXES: {
|
||||
NEW_INBOX: 'ഇൻബോക്സ് ചേർക്കുക',
|
||||
},
|
||||
},
|
||||
SIDEBAR: {
|
||||
CONVERSATIONS: 'സംഭാഷണങ്ങൾ',
|
||||
REPORTS: 'റിപ്പോർട്ടുകൾ',
|
||||
SETTINGS: 'ക്രമീകരണങ്ങൾ',
|
||||
HOME: 'ഹോം',
|
||||
AGENTS: 'ഏജന്റുമാർ',
|
||||
INBOXES: 'ഇൻബോക്സുകൾ',
|
||||
CANNED_RESPONSES: 'ക്യാൻഡ് പ്രതികരണങ്ങൾ',
|
||||
BILLING: 'ബില്ലിംഗ്',
|
||||
INTEGRATIONS: 'സംയോജനങ്ങൾ',
|
||||
ACCOUNT_SETTINGS: 'അക്കൗണ്ട് ക്രമീകരണങ്ങൾ',
|
||||
},
|
||||
};
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div class="columns profile--settings ">
|
||||
<form @submit.prevent="updateAccount()">
|
||||
<form v-if="!uiFlags.isFetchingItem" @submit.prevent="updateAccount">
|
||||
<div class="small-12 row profile--settings--row">
|
||||
<div class="columns small-3 ">
|
||||
<h4 class="block-title">
|
||||
|
@ -24,10 +24,13 @@
|
|||
<label :class="{ error: $v.locale.$error }">
|
||||
{{ $t('GENERAL_SETTINGS.FORM.LANGUAGE.LABEL') }}
|
||||
<select v-model="locale">
|
||||
<option value="ca">Catalan</option>
|
||||
<option value="de">German</option>
|
||||
<option value="en">English</option>
|
||||
<option value="ml">Malayalam</option>
|
||||
<option
|
||||
v-for="lang in enabledLanguages"
|
||||
:key="lang.iso_639_1_code"
|
||||
:value="lang.iso_639_1_code"
|
||||
>
|
||||
{{ lang.name }}
|
||||
</option>
|
||||
</select>
|
||||
<span v-if="$v.locale.$error" class="message">
|
||||
{{ $t('GENERAL_SETTINGS.FORM.LANGUAGE.ERROR') }}
|
||||
|
@ -82,6 +85,8 @@
|
|||
>
|
||||
</woot-submit-button>
|
||||
</form>
|
||||
|
||||
<woot-loading-state v-if="uiFlags.isFetchingItem" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -91,9 +96,10 @@ import { required } from 'vuelidate/lib/validators';
|
|||
import { mapGetters } from 'vuex';
|
||||
import { accountIdFromPathname } from 'dashboard/helper/URLHelper';
|
||||
import alertMixin from 'shared/mixins/alertMixin';
|
||||
import configMixin from 'shared/mixins/configMixin';
|
||||
|
||||
export default {
|
||||
mixins: [alertMixin],
|
||||
mixins: [alertMixin, configMixin],
|
||||
data() {
|
||||
return {
|
||||
id: '',
|
||||
|
|
|
@ -57,7 +57,7 @@ export const mutations = {
|
|||
...data,
|
||||
};
|
||||
},
|
||||
[types.default.ADD_ACCOUNT]: MutationHelpers.create,
|
||||
[types.default.ADD_ACCOUNT]: MutationHelpers.setSingleRecord,
|
||||
[types.default.EDIT_ACCOUNT]: MutationHelpers.update,
|
||||
};
|
||||
|
||||
|
|
|
@ -9,5 +9,8 @@ export default {
|
|||
vapidPublicKey() {
|
||||
return window.chatwootConfig.vapidPublicKey;
|
||||
},
|
||||
enabledLanguages() {
|
||||
return window.chatwootConfig.enabledLanguages;
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
import { mapActions } from 'vuex';
|
||||
import { setHeader } from 'widget/helpers/axios';
|
||||
import { IFrameHelper } from 'widget/helpers/utils';
|
||||
import Vue from 'vue';
|
||||
|
||||
export default {
|
||||
name: 'App',
|
||||
|
@ -17,7 +18,9 @@ export default {
|
|||
};
|
||||
},
|
||||
mounted() {
|
||||
const { websiteToken } = window.chatwootWebChannel;
|
||||
const { websiteToken, locale } = window.chatwootWebChannel;
|
||||
Vue.config.lang = locale;
|
||||
|
||||
if (IFrameHelper.isIFrame()) {
|
||||
IFrameHelper.sendMessage({
|
||||
event: 'loaded',
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
<template>
|
||||
<div class="chat-message--input">
|
||||
<chat-input-area v-model="userInput" :placeholder="placeholder" />
|
||||
<chat-input-area
|
||||
v-model="userInput"
|
||||
:placeholder="$t('CHAT_PLACEHOLDER')"
|
||||
/>
|
||||
<div class="button-wrap">
|
||||
<chat-attachment-button
|
||||
v-if="showAttachment"
|
||||
|
@ -44,10 +47,6 @@ export default {
|
|||
},
|
||||
mixins: [clickaway],
|
||||
props: {
|
||||
placeholder: {
|
||||
type: String,
|
||||
default: 'Type your message',
|
||||
},
|
||||
onSendMessage: {
|
||||
type: Function,
|
||||
default: () => {},
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<input
|
||||
v-model.trim="email"
|
||||
class="form-input"
|
||||
placeholder="Please enter your email"
|
||||
:placeholder="$t('EMAIL_PLACEHOLDER')"
|
||||
:class="{ error: $v.email.$error }"
|
||||
@input="$v.email.$touch"
|
||||
@keyup.enter="onSubmit"
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
export default {
|
||||
COMPONENTS: {
|
||||
FILE_BUBBLE: {
|
||||
DOWNLOAD: 'Download',
|
||||
UPLOADING: 'Uploading...',
|
||||
},
|
||||
FORM_BUBBLE: {
|
||||
SUBMIT: 'Submit',
|
||||
},
|
||||
},
|
||||
POWERED_BY: 'Powered by Chatwoot',
|
||||
};
|
|
@ -1,5 +1,15 @@
|
|||
import en from './en';
|
||||
import { default as ca } from './locale/ca.json';
|
||||
import { default as de } from './locale/de.json';
|
||||
import { default as el } from './locale/el.json';
|
||||
import { default as en } from './locale/en.json';
|
||||
import { default as ml } from './locale/ml.json';
|
||||
import { default as pt } from './locale/pt.json';
|
||||
|
||||
export default {
|
||||
ca,
|
||||
de,
|
||||
el,
|
||||
en,
|
||||
ml,
|
||||
pt,
|
||||
};
|
||||
|
|
14
app/javascript/widget/i18n/locale/ca.json
Normal file
14
app/javascript/widget/i18n/locale/ca.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"COMPONENTS": {
|
||||
"FILE_BUBBLE": {
|
||||
"DOWNLOAD": "Descarrega",
|
||||
"UPLOADING": "S'està pujant..."
|
||||
},
|
||||
"FORM_BUBBLE": {
|
||||
"SUBMIT": "sotmetre's"
|
||||
}
|
||||
},
|
||||
"POWERED_BY": "Desenvolupat per Chatwoot",
|
||||
"EMAIL_PLACEHOLDER": "Introduïu el vostre correu electrònic",
|
||||
"CHAT_PLACEHOLDER": "Escriu el teu missatge"
|
||||
}
|
14
app/javascript/widget/i18n/locale/de.json
Normal file
14
app/javascript/widget/i18n/locale/de.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"COMPONENTS": {
|
||||
"FILE_BUBBLE": {
|
||||
"DOWNLOAD": "Herunterladen",
|
||||
"UPLOADING": "Hochladen..."
|
||||
},
|
||||
"FORM_BUBBLE": {
|
||||
"SUBMIT": "Submit"
|
||||
}
|
||||
},
|
||||
"POWERED_BY": "Unterstützt von Chatwoot",
|
||||
"EMAIL_PLACEHOLDER": "Bitte geben Sie ihre E-Mail-Adresse ein",
|
||||
"CHAT_PLACEHOLDER": "Geben Sie Ihre Nachricht ein"
|
||||
}
|
14
app/javascript/widget/i18n/locale/el.json
Normal file
14
app/javascript/widget/i18n/locale/el.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"COMPONENTS": {
|
||||
"FILE_BUBBLE": {
|
||||
"DOWNLOAD": "Κατεβάστε",
|
||||
"UPLOADING": "Μεταφόρτωση..."
|
||||
},
|
||||
"FORM_BUBBLE": {
|
||||
"SUBMIT": "υποβάλλουν"
|
||||
}
|
||||
},
|
||||
"POWERED_BY": "Με την υποστήριξη του Chatwoot",
|
||||
"EMAIL_PLACEHOLDER": "Εισαγάγετε το email σας",
|
||||
"CHAT_PLACEHOLDER": "Πληκτρολογήστε το μήνυμά σας"
|
||||
}
|
14
app/javascript/widget/i18n/locale/en.json
Normal file
14
app/javascript/widget/i18n/locale/en.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"COMPONENTS": {
|
||||
"FILE_BUBBLE": {
|
||||
"DOWNLOAD": "Download",
|
||||
"UPLOADING": "Uploading..."
|
||||
},
|
||||
"FORM_BUBBLE": {
|
||||
"SUBMIT": "Submit"
|
||||
}
|
||||
},
|
||||
"POWERED_BY": "Powered by Chatwoot",
|
||||
"EMAIL_PLACEHOLDER": "Please enter your email",
|
||||
"CHAT_PLACEHOLDER": "Type your message"
|
||||
}
|
14
app/javascript/widget/i18n/locale/ml.json
Normal file
14
app/javascript/widget/i18n/locale/ml.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"COMPONENTS": {
|
||||
"FILE_BUBBLE": {
|
||||
"DOWNLOAD": "ഡൗൺലോഡ്",
|
||||
"UPLOADING": "അപ്ലോഡുചെയ്യുന്നു..."
|
||||
},
|
||||
"FORM_BUBBLE": {
|
||||
"SUBMIT": "സമർപ്പിക്കുക"
|
||||
}
|
||||
},
|
||||
"POWERED_BY": "Powered by Chatwoot",
|
||||
"EMAIL_PLACEHOLDER": "നിങ്ങളുടെ ഇമെയിൽ നൽകുക",
|
||||
"CHAT_PLACEHOLDER": "നിങ്ങളുടെ സന്ദേശം ടൈപ്പുചെയ്യുക"
|
||||
}
|
14
app/javascript/widget/i18n/locale/pt.json
Normal file
14
app/javascript/widget/i18n/locale/pt.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"COMPONENTS": {
|
||||
"FILE_BUBBLE": {
|
||||
"DOWNLOAD": "Baixar",
|
||||
"UPLOADING": "Enviando..."
|
||||
},
|
||||
"FORM_BUBBLE": {
|
||||
"SUBMIT": "Enviar"
|
||||
}
|
||||
},
|
||||
"POWERED_BY": "Desenvolvido por Chatwoot",
|
||||
"EMAIL_PLACEHOLDER": "Por favor introduza o seu e-mail",
|
||||
"CHAT_PLACEHOLDER": "Digite sua mensagem"
|
||||
}
|
|
@ -38,6 +38,7 @@
|
|||
<% if ENV['VAPID_PUBLIC_KEY'] %>
|
||||
vapidPublicKey: new Uint8Array(<%= Base64.urlsafe_decode64(ENV['VAPID_PUBLIC_KEY']).bytes %>),
|
||||
<% end %>
|
||||
enabledLanguages: <%= available_locales_with_name.to_json.html_safe %>
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
|
|
@ -6,12 +6,13 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" />
|
||||
<script>
|
||||
window.chatwootWebChannel = {
|
||||
websiteName: '<%= @web_widget.inbox.name %>',
|
||||
widgetColor: '<%= @web_widget.widget_color %>',
|
||||
websiteToken: '<%= @web_widget.website_token %>',
|
||||
welcomeTitle: '<%= @web_widget.welcome_title %>',
|
||||
welcomeTagline: '<%= @web_widget.welcome_tagline %>',
|
||||
avatarUrl: '<%= @web_widget.inbox.avatar_url %>',
|
||||
locale: '<%= @web_widget.account.locale %>',
|
||||
websiteName: '<%= @web_widget.inbox.name %>',
|
||||
websiteToken: '<%= @web_widget.website_token %>',
|
||||
welcomeTagline: '<%= @web_widget.welcome_tagline %>',
|
||||
welcomeTitle: '<%= @web_widget.welcome_title %>',
|
||||
widgetColor: '<%= @web_widget.widget_color %>',
|
||||
}
|
||||
window.chatwootPubsubToken = '<%= @contact.pubsub_token %>'
|
||||
window.authToken = '<%= @token %>'
|
||||
|
|
|
@ -2,19 +2,22 @@
|
|||
# This Hash is used in account model, so do not change the index for existing languages
|
||||
|
||||
LANGUAGES_CONFIG = {
|
||||
0 => { name: 'English', iso_639_3_code: 'eng', iso_639_1_code: 'en' },
|
||||
1 => { name: 'Arabic', iso_639_3_code: 'ara', iso_639_1_code: 'ar' },
|
||||
2 => { name: 'Dutch', iso_639_3_code: 'nld', iso_639_1_code: 'nl' },
|
||||
3 => { name: 'French', iso_639_3_code: 'fra', iso_639_1_code: 'fr' },
|
||||
4 => { name: 'German', iso_639_3_code: 'deu', iso_639_1_code: 'de' },
|
||||
5 => { name: 'Hindi', iso_639_3_code: 'hin', iso_639_1_code: 'hi' },
|
||||
6 => { name: 'Italian', iso_639_3_code: 'ita', iso_639_1_code: 'it' },
|
||||
7 => { name: 'Japanese', iso_639_3_code: 'jpn', iso_639_1_code: 'ja' },
|
||||
8 => { name: 'Korean', iso_639_3_code: 'kor', iso_639_1_code: 'ko' },
|
||||
9 => { name: 'Portuguese', iso_639_3_code: 'por', iso_639_1_code: 'pt' },
|
||||
10 => { name: 'Russian', iso_639_3_code: 'rus', iso_639_1_code: 'ru' },
|
||||
11 => { name: 'Chinese', iso_639_3_code: 'zho', iso_639_1_code: 'zh' },
|
||||
12 => { name: 'Spanish', iso_639_3_code: 'spa', iso_639_1_code: 'es' },
|
||||
13 => { name: 'Malayalam', iso_639_3_code: 'mal', iso_639_1_code: 'ml' },
|
||||
14 => { name: 'Catalan', iso_639_3_code: 'cat', iso_639_1_code: 'ca' }
|
||||
}.freeze
|
||||
0 => { name: 'English', iso_639_3_code: 'eng', iso_639_1_code: 'en', enabled: true },
|
||||
1 => { name: 'Arabic', iso_639_3_code: 'ara', iso_639_1_code: 'ar', enabled: false },
|
||||
2 => { name: 'Dutch', iso_639_3_code: 'nld', iso_639_1_code: 'nl', enabled: false },
|
||||
3 => { name: 'French', iso_639_3_code: 'fra', iso_639_1_code: 'fr', enabled: false },
|
||||
4 => { name: 'German', iso_639_3_code: 'deu', iso_639_1_code: 'de', enabled: true },
|
||||
5 => { name: 'Hindi', iso_639_3_code: 'hin', iso_639_1_code: 'hi', enabled: false },
|
||||
6 => { name: 'Italian', iso_639_3_code: 'ita', iso_639_1_code: 'it', enabled: false },
|
||||
7 => { name: 'Japanese', iso_639_3_code: 'jpn', iso_639_1_code: 'ja', enabled: false },
|
||||
8 => { name: 'Korean', iso_639_3_code: 'kor', iso_639_1_code: 'ko', enabled: false },
|
||||
9 => { name: 'Portuguese', iso_639_3_code: 'por', iso_639_1_code: 'pt', enabled: true },
|
||||
10 => { name: 'Russian', iso_639_3_code: 'rus', iso_639_1_code: 'ru', enabled: false },
|
||||
11 => { name: 'Chinese', iso_639_3_code: 'zho', iso_639_1_code: 'zh', enabled: false },
|
||||
12 => { name: 'Spanish', iso_639_3_code: 'spa', iso_639_1_code: 'es', enabled: false },
|
||||
13 => { name: 'Malayalam', iso_639_3_code: 'mal', iso_639_1_code: 'ml', enabled: true },
|
||||
14 => { name: 'Catalan', iso_639_3_code: 'cat', iso_639_1_code: 'ca', enabled: true },
|
||||
15 => { name: 'Greek', iso_639_3_code: 'ell', iso_639_1_code: 'el', enabled: true }
|
||||
}.filter { |_key, val| val[:enabled] }.freeze
|
||||
|
||||
Rails.configuration.i18n.available_locales = LANGUAGES_CONFIG.map { |_index, lang| lang[:iso_639_1_code].to_sym }
|
||||
|
|
|
@ -6,5 +6,5 @@ files:
|
|||
translation: /config/locales/%two_letters_code%.yml
|
||||
- source: /config/locales/devise.en.yml
|
||||
translation: /config/locales/devise.%two_letters_code%.yml
|
||||
- source: /app/javascript/widget/i18n/en.js
|
||||
translation: /app/javascript/widget/i18n/%two_letters_code%.js
|
||||
- source: /app/javascript/widget/i18n/locale/en.json
|
||||
translation: /app/javascript/widget/i18n/locale/%two_letters_code%.json
|
||||
|
|
|
@ -136,7 +136,7 @@ RSpec.describe 'Accounts API', type: :request do
|
|||
context 'when it is an authenticated user' do
|
||||
params = {
|
||||
name: 'New Name',
|
||||
locale: 'ar',
|
||||
locale: 'en',
|
||||
domain: 'example.com',
|
||||
support_email: 'care@example.com',
|
||||
domain_emails_enabled: true
|
||||
|
|
Loading…
Reference in a new issue