Compare commits

...
Author SHA1 Message Date
Shivam Mishra ae075afb67 test: add more cases 2023-09-20 18:09:19 +05:30
Shivam Mishra e7e34f34b0 test: add more signature cases 2023-09-20 18:08:21 +05:30
Shivam Mishra 9da0258abc fix: test 2023-09-20 18:06:18 +05:30
Shivam Mishra 5ca28f0916 chore: update test data 2023-09-20 18:04:12 +05:30
Shivam Mishra 1ed60066fb fix: importing article styles 2023-09-20 18:03:13 +05:30
Shivam Mishra d18f3e283a feat: remove mock 2023-09-20 18:03:12 +05:30
Shivam Mishra d489f7ceb0 feat: get prosemirror-schema from npm 2023-09-20 18:03:12 +05:30
Sivin VargheseandGitHub 2d46aa0a0a Merge branch 'develop' into fix/signature-bullet-formatting 2023-09-20 17:29:45 +05:30
Sivin VargheseandGitHub 2c93d563c1 fix: Update colors to fix dark mode in the editor add-link modal header (#7947) 2023-09-20 17:29:27 +05:30
Shivam Mishra 695bcc32c1 test: mock prosemirror exports 2023-09-20 16:17:37 +05:30
Sivin VargheseandGitHub 4cc0d89cbd Merge branch 'develop' into fix/signature-bullet-formatting 2023-09-20 15:14:22 +05:30
Shivam Mishra 54769850e8 refactor: remove manual clean methods 2023-09-20 13:54:24 +05:30
Pranav Raj SandGitHub f1b556d4a3 fix: Downcase content filter values to fix the query (#7942) 2023-09-20 13:14:00 +05:30
Shivam MishraandGitHub 986e89b7c0 Merge branch 'develop' into fix/signature-bullet-formatting 2023-09-20 13:09:17 +05:30
Shivam Mishra 607e58465a fix: safer access to textarea ref 2023-09-20 12:51:50 +05:30
Shivam Mishra 47921bca3d fix: safer access to textarea 2023-09-20 12:51:00 +05:30
Shivam Mishra adf67b79ce feat: transform markdown to common mark before appending 2023-09-20 12:50:28 +05:30
Chatwoot BotandGitHub 73c119cd3d chore: Update translations (#7937) 2023-09-19 21:19:46 -07:00
Smit BosamiyaandGitHub 0ad2f94151 fix: Error when attempting to Delete User-Associated Accounts via Super Admin Console (#7810)
This pull request addresses the issue where an error is encountered while attempting to delete user-associated accounts through the Super Admin Console. The problem arises from an error that occurs when the "destroy" action is triggered on an associated account.

Fixes: #7809
2023-09-19 21:16:11 -07:00
f8cb806548 fix: remove trailing spaces before pushing signature (#7935)
Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com>
2023-09-19 13:29:44 +05:30
9ba5adfd60 chore: Support multiple values for automation message content (#7871)
Co-authored-by: Pranav Raj S <pranav@chatwoot.com>
Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com>
2023-09-19 13:04:58 +05:30
Muhsin KelothandGitHub 0dd5104acb chore: Move slack message concern to the helper (#7912) 2023-09-19 11:09:23 +05:30
Sojan JoseandGitHub 0968aead6c chore: Migration status in super admin (#7938) 2023-09-19 10:31:41 +05:30
Shivam MishraandGitHub 53d530b815 feat: Add upload under account scope (#7914) 2023-09-19 09:51:54 +05:30
2429daa45c feat: cwctl upgrade node for existing installations (#7772)
Co-authored-by: Sojan Jose <sojan@pepalo.com>
2023-09-18 23:49:29 +05:30
Sojan 86894b27b5 Merge branch 'release/3.1.0' into develop 2023-09-15 16:46:47 -07:00
81 changed files with 1403 additions and 135 deletions
+1 -1
View File
@@ -1 +1 @@
2.17.0
3.1.0
+1 -1
View File
@@ -1 +1 @@
2.3.0
2.4.0
@@ -1,4 +1,4 @@
class Api::V1::UploadController < Api::BaseController
class Api::V1::Accounts::UploadController < Api::V1::Accounts::BaseController
def create
file_blob = ActiveStorage::Blob.create_and_upload!(
key: nil,
@@ -6,6 +6,7 @@ class SuperAdmin::InstanceStatusesController < SuperAdmin::ApplicationController
postgres_status
redis_metrics
chatwoot_edition
instance_meta
end
def chatwoot_edition
@@ -18,6 +19,10 @@ class SuperAdmin::InstanceStatusesController < SuperAdmin::ApplicationController
end
end
def instance_meta
@metrics['Database Migrations'] = ActiveRecord::Base.connection.migration_context.needs_migration? ? 'pending' : 'completed'
end
def chatwoot_version
@metrics['Chatwoot version'] = Chatwoot.config[:version]
end
@@ -670,6 +670,10 @@ export default {
.ProseMirror-prompt {
@apply z-50 bg-slate-25 dark:bg-slate-700 rounded-md border border-solid border-slate-75 dark:border-slate-800;
h5 {
@apply dark:text-slate-25 text-slate-800;
}
}
.is-private {
@@ -218,7 +218,7 @@ export default {
</script>
<style lang="scss">
@import '~@chatwoot/prosemirror-schema/src/styles/article.scss';
@import '@chatwoot/prosemirror-schema/src/styles/article.scss';
.ProseMirror-menubar-wrapper {
display: flex;
@@ -1,3 +1,9 @@
import {
messageSchema,
MessageMarkdownTransformer,
MessageMarkdownSerializer,
} from '@chatwoot/prosemirror-schema';
/**
* The delimiter used to separate the signature from the rest of the body.
* @type {string}
@@ -5,12 +11,12 @@
export const SIGNATURE_DELIMITER = '--';
/**
* Trim the signature and remove all " \r" from the signature
* 1. Trim any extra lines or spaces at the start or end of the string
* 2. Converts all \r or \r\n to \f
* Parse and Serialize the markdown text to remove any extra spaces or new lines
*/
export function cleanSignature(signature) {
return signature.trim().replace(/\r\n?/g, '\n');
// convert from markdown to common mark format
const nodes = new MessageMarkdownTransformer(messageSchema).parse(signature);
return MessageMarkdownSerializer.serialize(nodes);
}
/**
@@ -1,21 +1,34 @@
const setArrayValues = item => {
return item.values[0]?.id ? item.values.map(val => val.id) : item.values;
};
const generateValues = item => {
if (item.attribute_key === 'content') {
const values = item.values || '';
return values.split(',');
}
if (Array.isArray(item.values)) {
return setArrayValues(item);
}
if (typeof item.values === 'object') {
return [item.values.id];
}
if (!item.values) {
return [];
}
return [item.values];
};
const generatePayload = data => {
// Make a copy of data to avoid vue data reactivity issues
const filters = JSON.parse(JSON.stringify(data));
let payload = filters.map(item => {
if (Array.isArray(item.values)) {
item.values = setArrayValues(item);
} else if (typeof item.values === 'object') {
item.values = [item.values.id];
} else if (!item.values) {
item.values = [];
} else {
item.values = [item.values];
}
// If item key is content, we will split it using comma and return as array
// FIX ME: Make this generic option instead of using the key directly here
item.values = generateValues(item);
return item;
});
// For every query added, the query_operator is set default to and so the
// last query will have an extra query_operator, this would break the api.
// Setting this to null for all query payload
@@ -3,6 +3,7 @@ import {
appendSignature,
removeSignature,
replaceSignature,
cleanSignature,
extractTextFromMarkdown,
} from '../editorHelper';
@@ -17,11 +18,19 @@ const DOES_NOT_HAVE_SIGNATURE = {
body: 'This is a test\n\n--\n\nThis is a signature\n\nThis is more text',
signature: 'This is a signature',
},
signature_has_images: {
'signature has images': {
body: 'This is a test',
signature:
'Testing \n![](http://localhost:3000/rails/active_storage/blobs/redirect/some-hash/image.png)',
},
'signature has non commonmark syntax': {
body: 'This is a test',
signature: '- Signature',
},
'signature has trailing spaces': {
body: 'This is a test',
signature: '**hello** \n**world**',
},
};
const HAS_SIGNATURE = {
@@ -37,6 +46,10 @@ const HAS_SIGNATURE = {
body: '\n\n--\n\nThis is a signature',
signature: 'This is a signature',
},
'signature has non-commonmark syntax': {
body: '\n\n--\n\n* Signature',
signature: '- Signature',
},
};
describe('findSignatureInBody', () => {
@@ -58,9 +71,10 @@ describe('appendSignature', () => {
it('appends the signature if it is not present', () => {
Object.keys(DOES_NOT_HAVE_SIGNATURE).forEach(key => {
const { body, signature } = DOES_NOT_HAVE_SIGNATURE[key];
expect(appendSignature(body, signature)).toBe(
`${body}\n\n--\n\n${signature}`
);
const cleanedSignature = cleanSignature(signature);
expect(
appendSignature(body, signature).includes(cleanedSignature)
).toBeTruthy();
});
});
it('does not append signature if already present', () => {
@@ -25,10 +25,10 @@ describe('#Upload Helpers', () => {
axios.post.mockResolvedValueOnce(mockResponse);
const result = await uploadFile(mockFile);
const result = await uploadFile(mockFile, '1602');
expect(axios.post).toHaveBeenCalledWith(
'/api/v1/upload',
'/api/v1/accounts/1602/upload',
expect.any(FormData),
{ headers: { 'Content-Type': 'multipart/form-data' } }
);
@@ -21,17 +21,25 @@ const HEADERS = {
* @param {File} file - The file to be uploaded. It should be a File object (typically coming from a file input element).
* @returns {Promise} A promise that resolves with the server's response when the upload is successful, or rejects if there's an error.
*/
export async function uploadFile(file) {
export async function uploadFile(file, accountId) {
// Create a new FormData instance.
let formData = new FormData();
if (!accountId) {
accountId = window.location.pathname.split('/')[3];
}
// Append the file to the FormData instance under the key 'attachment'.
formData.append('attachment', file);
// Use axios to send a POST request to the upload endpoint.
const { data } = await axios.post(`/api/${API_VERSION}/upload`, formData, {
headers: HEADERS,
});
const { data } = await axios.post(
`/api/${API_VERSION}/accounts/${accountId}/upload`,
formData,
{
headers: HEADERS,
}
);
return {
fileUrl: data.file_url,
@@ -110,7 +110,7 @@
"SNOOZE_CONVERSATION": "Adiar Conversa",
"ADD_LABEL": "Adicionar etiqueta à conversa",
"REMOVE_LABEL": "Remover etiqueta da conversa",
"SETTINGS": "Confirgurações",
"SETTINGS": "Configurações",
"AI_ASSIST": "Assistente IA",
"APPEARANCE": "Aspeto"
},
@@ -40,8 +40,8 @@
"BTN_TEXT": "Salvar assinatura da mensagem",
"API_ERROR": "Não foi possível salvar a assinatura! Tente novamente",
"API_SUCCESS": "Assinatura salva com sucesso",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
"IMAGE_UPLOAD_ERROR": "Não foi possível carregar a imagem! Tente novamente",
"IMAGE_UPLOAD_SUCCESS": "Imagem adicionada. Clique em salvar para salvar a assinatura",
"IMAGE_UPLOAD_SIZE_ERROR": "O tamanho da imagem deve ser inferior a {size}MB"
},
"MESSAGE_SIGNATURE": {
@@ -199,6 +199,12 @@ export default {
values: condition.values[0],
};
}
if (inputType === 'comma_separated_plain_text') {
return {
...condition,
values: condition.values.join(','),
};
}
return {
...condition,
query_operator: condition.query_operator || 'and',
@@ -52,7 +52,7 @@
{{ $t('AUTOMATION.ADD.FORM.CONDITIONS.LABEL') }}
</label>
<div
class="w-full w-full p-4 bg-slate-25 dark:bg-slate-700 rounded-lg border border-solid border-slate-50 dark:border-slate-700 mb-4"
class="w-full p-4 bg-slate-25 dark:bg-slate-700 rounded-lg border border-solid border-slate-50 dark:border-slate-700 mb-4"
>
<filter-input-box
v-for="(condition, i) in automation.conditions"
@@ -94,7 +94,7 @@
{{ $t('AUTOMATION.ADD.FORM.ACTIONS.LABEL') }}
</label>
<div
class="w-full w-full p-4 bg-slate-25 dark:bg-slate-700 rounded-lg border border-solid border-slate-50 dark:border-slate-700 mb-4"
class="w-full p-4 bg-slate-25 dark:bg-slate-700 rounded-lg border border-solid border-slate-50 dark:border-slate-700 mb-4"
>
<automation-action-input
v-for="(action, i) in automation.actions"
@@ -19,7 +19,7 @@ export const AUTOMATIONS = {
key: 'content',
name: 'Message Content',
attributeI18nKey: 'MESSAGE_CONTAINS',
inputType: 'plain_text',
inputType: 'comma_separated_plain_text',
filterOperators: OPERATOR_TYPES_2,
},
{
@@ -113,7 +113,6 @@ export default {
});
},
setCursor() {
const textarea = this.$refs.textarea;
const bodyWithoutSignature = removeSignature(
this.value,
this.cleanedSignature
@@ -121,9 +120,12 @@ export default {
// only trim at end, so if there are spaces at the start, those are not removed
const bodyEndsAt = bodyWithoutSignature.trimEnd().length;
const textarea = this.$refs.textarea;
textarea.focus();
textarea.setSelectionRange(bodyEndsAt, bodyEndsAt);
if (textarea) {
textarea.focus();
textarea.setSelectionRange(bodyEndsAt, bodyEndsAt);
}
},
onInput(event) {
this.$emit('input', event.target.value);
@@ -157,7 +159,7 @@ export default {
this.$emit('focus');
},
focus() {
this.$refs.textarea.focus();
if (this.$refs.textarea) this.$refs.textarea.focus();
},
},
};
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Start Conversation",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start a new conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "See new messages",
"CLOSE_MESSAGES_BUTTON": "Close",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Picture message"
},
"audio": {
"CONTENT": "Audio message"
},
"video": {
"CONTENT": "Video message"
},
"file": {
"CONTENT": "File Attachment"
},
"location": {
"CONTENT": "Location"
},
"fallback": {
"CONTENT": "has shared a url"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "ابدأ المحادثة",
"END_CONVERSATION": "إنهاء المحادثة",
"CONTINUE_CONVERSATION": "متابعة المحادثة",
"YOU": "You",
"START_NEW_CONVERSATION": "ابدأ محادثة جديدة",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "عرض الرسائل الجديدة",
"CLOSE_MESSAGES_BUTTON": "أغلق",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "رسالة صورة"
},
"audio": {
"CONTENT": "رسالة صوتية"
},
"video": {
"CONTENT": "رسالة فيديو"
},
"file": {
"CONTENT": "مرفقات"
},
"location": {
"CONTENT": "الموقع الجغرافي"
},
"fallback": {
"CONTENT": "قام بمشاركة رابط"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Започнете разговор",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Започнете нов разговор",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Вижте новите съобщения",
"CLOSE_MESSAGES_BUTTON": "Затвори",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Съобщение със снимка"
},
"audio": {
"CONTENT": "Аудио съобщение"
},
"video": {
"CONTENT": "Видео съобщение"
},
"file": {
"CONTENT": "Прикачен файл"
},
"location": {
"CONTENT": "Локация"
},
"fallback": {
"CONTENT": "сподели линк"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Inicia la conversa",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start a new conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Veure missatges nous",
"CLOSE_MESSAGES_BUTTON": "Tanca",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Missatge d'imatge"
},
"audio": {
"CONTENT": "Missatge d'àudio"
},
"video": {
"CONTENT": "Missatge de vídeo"
},
"file": {
"CONTENT": "Fitxer adjunt"
},
"location": {
"CONTENT": "Ubicació"
},
"fallback": {
"CONTENT": "ha compartit una URL"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Zahájit konverzaci",
"END_CONVERSATION": "Ukončit konverzaci",
"CONTINUE_CONVERSATION": "Pokračovat v konverzaci",
"YOU": "You",
"START_NEW_CONVERSATION": "Zahájit novou konverzaci",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Zobrazit nové zprávy",
"CLOSE_MESSAGES_BUTTON": "Zavřít",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Zpráva obrázku"
},
"audio": {
"CONTENT": "Zvuková zpráva"
},
"video": {
"CONTENT": "Video zpráva"
},
"file": {
"CONTENT": "Přílohu souboru"
},
"location": {
"CONTENT": "Poloha"
},
"fallback": {
"CONTENT": "sdílel URL"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Start Samtale",
"END_CONVERSATION": "Afslut Samtale",
"CONTINUE_CONVERSATION": "Fortsæt samtale",
"YOU": "You",
"START_NEW_CONVERSATION": "Start en ny samtale",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Se nye beskeder",
"CLOSE_MESSAGES_BUTTON": "Luk",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Billedbesked"
},
"audio": {
"CONTENT": "Lydbesked"
},
"video": {
"CONTENT": "Video besked"
},
"file": {
"CONTENT": "Fil Vedhæftning"
},
"location": {
"CONTENT": "Lokation"
},
"fallback": {
"CONTENT": "har delt en URL"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Unterhaltung beginnen",
"END_CONVERSATION": "Konversation beenden",
"CONTINUE_CONVERSATION": "Konversation fortsetzen",
"YOU": "You",
"START_NEW_CONVERSATION": "Neue Unterhaltung starten",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Neue Nachrichten anzeigen",
"CLOSE_MESSAGES_BUTTON": "Schließen",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "Alle Artikel anzeigen"
"VIEW_ALL_ARTICLES": "Alle Artikel anzeigen",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Bildnachricht"
},
"audio": {
"CONTENT": "Audio-Nachricht"
},
"video": {
"CONTENT": "Videonachricht"
},
"file": {
"CONTENT": "Dateianhang"
},
"location": {
"CONTENT": "Ort"
},
"fallback": {
"CONTENT": "hat eine URL geteilt"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Έναρξη Συνομιλίας",
"END_CONVERSATION": "Τέλος Συνομιλίας",
"CONTINUE_CONVERSATION": "Συνέχιση συνομιλίας",
"YOU": "You",
"START_NEW_CONVERSATION": "Έναρξη νέας συνομιλίας",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Δείτε τα νέα μηνύματα",
"CLOSE_MESSAGES_BUTTON": "Κλείσιμο",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Μήνυμα εικόνας"
},
"audio": {
"CONTENT": "Μήνυμα ήχου"
},
"video": {
"CONTENT": "Μήνυμα βίντεο"
},
"file": {
"CONTENT": "Επισυναπτόμενο αρχείο"
},
"location": {
"CONTENT": "Θέση"
},
"fallback": {
"CONTENT": "έχει μοιράσει ένα σύνδεσμο"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Iniciar conversación",
"END_CONVERSATION": "Finalizar conversación",
"CONTINUE_CONVERSATION": "Continuar conversación",
"YOU": "You",
"START_NEW_CONVERSATION": "Iniciar una nueva conversación",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Ver nuevos mensajes",
"CLOSE_MESSAGES_BUTTON": "Cerrar",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Artículos populares",
"VIEW_ALL_ARTICLES": "Ver todos los artículos"
"VIEW_ALL_ARTICLES": "Ver todos los artículos",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Mensaje de imagen"
},
"audio": {
"CONTENT": "Mensaje de audio"
},
"video": {
"CONTENT": "Mensaje de vídeo"
},
"file": {
"CONTENT": "Archivo adjunto"
},
"location": {
"CONTENT": "Ubicación"
},
"fallback": {
"CONTENT": "ha compartido una url"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "شروع گفتگو",
"END_CONVERSATION": "پایان گفتگو",
"CONTINUE_CONVERSATION": "ادامه گفتگو",
"YOU": "شما",
"START_NEW_CONVERSATION": "یک مکالمه جدید را شروع کنید",
"VIEW_UNREAD_MESSAGES": "شما پیام خوانده نشده دارید",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "مشاهده پیام‌های جدید",
"CLOSE_MESSAGES_BUTTON": "بستن",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "مشاهده همه مقالات"
"VIEW_ALL_ARTICLES": "مشاهده همه مقالات",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "پیام تصویری"
},
"audio": {
"CONTENT": "پیام صوتی"
},
"video": {
"CONTENT": "پیام ویدیویی"
},
"file": {
"CONTENT": "فایل الصاقی"
},
"location": {
"CONTENT": "مکان"
},
"fallback": {
"CONTENT": "یک آدرس URL به اشتراک گذاشته شده"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Aloita keskustelu",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start a new conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Näytä uudet viestit",
"CLOSE_MESSAGES_BUTTON": "Sulje",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Kuvaviesti"
},
"audio": {
"CONTENT": "Ääniviesti"
},
"video": {
"CONTENT": "Videoviesti"
},
"file": {
"CONTENT": "Liite"
},
"location": {
"CONTENT": "Sijainti"
},
"fallback": {
"CONTENT": "on jakanut URL-osoitteen"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Démarrer la conversation",
"END_CONVERSATION": "Clôturer la conversation",
"CONTINUE_CONVERSATION": "Continuer la conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Démarrer une nouvelle conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Voir les nouveaux messages",
"CLOSE_MESSAGES_BUTTON": "Fermer",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "Voir tous les articles"
"VIEW_ALL_ARTICLES": "Voir tous les articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Message image"
},
"audio": {
"CONTENT": "Message audio"
},
"video": {
"CONTENT": "Message vidéo"
},
"file": {
"CONTENT": "Pièce jointe"
},
"location": {
"CONTENT": "Localisation"
},
"fallback": {
"CONTENT": "a partagé une URL"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "התחל שיחה",
"END_CONVERSATION": "סיים שיחה",
"CONTINUE_CONVERSATION": "המשך שיחה",
"YOU": "You",
"START_NEW_CONVERSATION": "התחל שיחה חדשה",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "ראה הודעות חדשות",
"CLOSE_MESSAGES_BUTTON": "סגור",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "הודעת תמונה"
},
"audio": {
"CONTENT": "הודעות קוליות"
},
"video": {
"CONTENT": "הודעות וידאו"
},
"file": {
"CONTENT": "קובץ מצורף"
},
"location": {
"CONTENT": "מיקום"
},
"fallback": {
"CONTENT": "שיתף קישור"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Start Conversation",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start a new conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "See new messages",
"CLOSE_MESSAGES_BUTTON": "Close",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Picture message"
},
"audio": {
"CONTENT": "Audio message"
},
"video": {
"CONTENT": "Video message"
},
"file": {
"CONTENT": "File Attachment"
},
"location": {
"CONTENT": "Location"
},
"fallback": {
"CONTENT": "has shared a url"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Start Conversation",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start a new conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "See new messages",
"CLOSE_MESSAGES_BUTTON": "Close",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Picture message"
},
"audio": {
"CONTENT": "Audio message"
},
"video": {
"CONTENT": "Video message"
},
"file": {
"CONTENT": "File Attachment"
},
"location": {
"CONTENT": "Location"
},
"fallback": {
"CONTENT": "has shared a url"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Beszélgetés megkezdése",
"END_CONVERSATION": "Beszélgetés befejezése",
"CONTINUE_CONVERSATION": "Beszélgetés folytatása",
"YOU": "You",
"START_NEW_CONVERSATION": "Új beszélgetés megkezdése",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Új üzenetek",
"CLOSE_MESSAGES_BUTTON": "Bezárás",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "Mutasd az összes bejegyzést"
"VIEW_ALL_ARTICLES": "Mutasd az összes bejegyzést",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Képüzenet"
},
"audio": {
"CONTENT": "Hangüzenet"
},
"video": {
"CONTENT": "Videoüzenet"
},
"file": {
"CONTENT": "Csatolt file"
},
"location": {
"CONTENT": "Hely"
},
"fallback": {
"CONTENT": "megosztott URL-t tartalmaz"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Start Conversation",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start a new conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "See new messages",
"CLOSE_MESSAGES_BUTTON": "Close",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Picture message"
},
"audio": {
"CONTENT": "Audio message"
},
"video": {
"CONTENT": "Video message"
},
"file": {
"CONTENT": "File Attachment"
},
"location": {
"CONTENT": "Location"
},
"fallback": {
"CONTENT": "has shared a url"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Mulai Percakapan",
"END_CONVERSATION": "Akhiri Percakapan",
"CONTINUE_CONVERSATION": "Lanjutkan Percakapan",
"YOU": "You",
"START_NEW_CONVERSATION": "Mulai Percakapan",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Lihat pesan baru",
"CLOSE_MESSAGES_BUTTON": "Tutup",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "Lihat semua artikel"
"VIEW_ALL_ARTICLES": "Lihat semua artikel",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Pesan gambar"
},
"audio": {
"CONTENT": "Pesan audio"
},
"video": {
"CONTENT": "Pesan video"
},
"file": {
"CONTENT": "Lampiran File"
},
"location": {
"CONTENT": "Lokasi"
},
"fallback": {
"CONTENT": "telah membagikan url"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Hefja samtal",
"END_CONVERSATION": "Ljúka samtali",
"CONTINUE_CONVERSATION": "Halda samtali áfram",
"YOU": "You",
"START_NEW_CONVERSATION": "Hefja nýtt samtal",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Sjá nýjustu skilaboð",
"CLOSE_MESSAGES_BUTTON": "Loka",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Myndaskilaboð"
},
"audio": {
"CONTENT": "Hljóðskilaboð"
},
"video": {
"CONTENT": "Myndbandsskilaboð"
},
"file": {
"CONTENT": "File Attachment"
},
"location": {
"CONTENT": "Staðsetning"
},
"fallback": {
"CONTENT": "hefur deilt vefslóð"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Avvia conversazione",
"END_CONVERSATION": "Termina conversazione",
"CONTINUE_CONVERSATION": "Continua conversazione",
"YOU": "You",
"START_NEW_CONVERSATION": "Avvia una nuova conversazione",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Vedi i nuovi messaggi",
"CLOSE_MESSAGES_BUTTON": "Chiudi",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Messaggio immagine"
},
"audio": {
"CONTENT": "Messaggio audio"
},
"video": {
"CONTENT": "Messaggio video"
},
"file": {
"CONTENT": "File allegato"
},
"location": {
"CONTENT": "Posizione"
},
"fallback": {
"CONTENT": "ha condiviso un url"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "チャットを開始する",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start a new conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "新しいメッセージを見る",
"CLOSE_MESSAGES_BUTTON": "閉じる",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "画像メッセージ"
},
"audio": {
"CONTENT": "音声メッセージ"
},
"video": {
"CONTENT": "ビデオ メッセージ"
},
"file": {
"CONTENT": "添付ファイル"
},
"location": {
"CONTENT": "場所"
},
"fallback": {
"CONTENT": "URLを共有しています"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Start Conversation",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start a new conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "See new messages",
"CLOSE_MESSAGES_BUTTON": "Close",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Picture message"
},
"audio": {
"CONTENT": "Audio message"
},
"video": {
"CONTENT": "Video message"
},
"file": {
"CONTENT": "File Attachment"
},
"location": {
"CONTENT": "Location"
},
"fallback": {
"CONTENT": "has shared a url"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "대화 시작",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start a new conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "새 메시지 보기",
"CLOSE_MESSAGES_BUTTON": "닫기",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "사진 메시지"
},
"audio": {
"CONTENT": "음성 메시지"
},
"video": {
"CONTENT": "영상 메시지"
},
"file": {
"CONTENT": "파일 첨부"
},
"location": {
"CONTENT": "장소"
},
"fallback": {
"CONTENT": "URL을 공유함"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Pradėti Pokalbį",
"END_CONVERSATION": "Užbaigti Pokalbį",
"CONTINUE_CONVERSATION": "Tęsti pokalbį",
"YOU": "You",
"START_NEW_CONVERSATION": "Pradėti naują pokalbį",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Žiūrėti naujus pranešimus",
"CLOSE_MESSAGES_BUTTON": "Uždaryti",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "Žiūrėti visus straipsnius"
"VIEW_ALL_ARTICLES": "Žiūrėti visus straipsnius",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Vaizdinė žinutė"
},
"audio": {
"CONTENT": "Garso žinutė"
},
"video": {
"CONTENT": "Video žinutė"
},
"file": {
"CONTENT": "Failas pridėtas"
},
"location": {
"CONTENT": "Vieta"
},
"fallback": {
"CONTENT": "pasidalino URL"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Sākt Sarunu",
"END_CONVERSATION": "Beigt Sarunu",
"CONTINUE_CONVERSATION": "Turpināt Sarunu",
"YOU": "Jūs",
"START_NEW_CONVERSATION": "Sākt jaunu sarunu",
"VIEW_UNREAD_MESSAGES": "Jums ir nelasītas ziņas",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Skatīt jaunus ziņojumus",
"CLOSE_MESSAGES_BUTTON": "Aizvērt",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Populāri Raksti",
"VIEW_ALL_ARTICLES": "Skatīt visus rakstus"
"VIEW_ALL_ARTICLES": "Skatīt visus rakstus",
"IFRAME_LOAD_ERROR": "Ielādējot rakstu radās kļūda. Lūdzu, atsvaidziniet lapu un mēģiniet vēlreiz."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Attēla ziņojums"
},
"audio": {
"CONTENT": "Audio ziņojums"
},
"video": {
"CONTENT": "Video ziņojums"
},
"file": {
"CONTENT": "Faila pielikums"
},
"location": {
"CONTENT": "Atrašanās vieta"
},
"fallback": {
"CONTENT": "ir kopīgojis URL"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "സംഭാഷണം ആരംഭിക്കുക",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "ഒരു പുതിയ സംഭാഷണം ആരംഭിക്കുക",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "പുതിയ സന്ദേശങ്ങൾ കാണുക",
"CLOSE_MESSAGES_BUTTON": "അടയ്ക്കുക",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "ചിത്ര സന്ദേശം"
},
"audio": {
"CONTENT": "ഓഡിയോ സന്ദേശം"
},
"video": {
"CONTENT": "വീഡിയോ സന്ദേശം"
},
"file": {
"CONTENT": "ഫയൽ അറ്റാച്ചുമെന്റ്"
},
"location": {
"CONTENT": "സ്ഥാനം"
},
"fallback": {
"CONTENT": "ഒരു യു. ആർ. എൽ പങ്കിട്ടു"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Start Conversation",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start a new conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "See new messages",
"CLOSE_MESSAGES_BUTTON": "Close",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Picture message"
},
"audio": {
"CONTENT": "Audio message"
},
"video": {
"CONTENT": "Video message"
},
"file": {
"CONTENT": "File Attachment"
},
"location": {
"CONTENT": "Location"
},
"fallback": {
"CONTENT": "has shared a url"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "कुराकानी सुरु गर्नुहोस्",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start a new conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "नयाँ सन्देशहरू हेर्नुहोस्",
"CLOSE_MESSAGES_BUTTON": "बन्दा गार्नुहोस्",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Picture message"
},
"audio": {
"CONTENT": "Audio message"
},
"video": {
"CONTENT": "Video message"
},
"file": {
"CONTENT": "File Attachment"
},
"location": {
"CONTENT": "Location"
},
"fallback": {
"CONTENT": "has shared a url"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Start Chat",
"END_CONVERSATION": "Gesprek beëindigen",
"CONTINUE_CONVERSATION": "Verdergaan met gesprek",
"YOU": "You",
"START_NEW_CONVERSATION": "Een nieuw gesprek starten",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Bekijk nieuwe berichten",
"CLOSE_MESSAGES_BUTTON": "Sluiten",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Populaire artikelen",
"VIEW_ALL_ARTICLES": "Bekijk alle artikelen"
"VIEW_ALL_ARTICLES": "Bekijk alle artikelen",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Bericht met foto"
},
"audio": {
"CONTENT": "Audiobericht"
},
"video": {
"CONTENT": "Videobericht"
},
"file": {
"CONTENT": "Bestandsbijlage"
},
"location": {
"CONTENT": "Locatie"
},
"fallback": {
"CONTENT": "heeft een url gedeeld"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Start samtale",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start en ny samtale",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Se nye meldinger",
"CLOSE_MESSAGES_BUTTON": "Lukk",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Bildemelding"
},
"audio": {
"CONTENT": "Lydmelding"
},
"video": {
"CONTENT": "Video beskjed"
},
"file": {
"CONTENT": "Vedlegg"
},
"location": {
"CONTENT": "Plassering"
},
"fallback": {
"CONTENT": "har delt en URL"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Rozpocznij rozmowę",
"END_CONVERSATION": "Zakończ rozmowę",
"CONTINUE_CONVERSATION": "Kontynuuj rozmowę",
"YOU": "You",
"START_NEW_CONVERSATION": "Rozpocznij nową rozmowę",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Pokaż nowe wiadomości",
"CLOSE_MESSAGES_BUTTON": "Zamknij",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "Zobacz wszystkie artykuły"
"VIEW_ALL_ARTICLES": "Zobacz wszystkie artykuły",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Wiadomość z obrazkiem"
},
"audio": {
"CONTENT": "Wiadomość dźwiękowa"
},
"video": {
"CONTENT": "Wiadomość wideo"
},
"file": {
"CONTENT": "Załącznik pliku"
},
"location": {
"CONTENT": "Lokalizacja"
},
"fallback": {
"CONTENT": "udostępnił adres URL"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Iniciar Conversa",
"END_CONVERSATION": "Terminar Conversa",
"CONTINUE_CONVERSATION": "Continuar conversa",
"YOU": "Você",
"START_NEW_CONVERSATION": "Iniciar uma nova conversa",
"VIEW_UNREAD_MESSAGES": "Tem mensagens por ler",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Ver novas mensagens",
"CLOSE_MESSAGES_BUTTON": "FECHAR",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Artigos Mais Populares",
"VIEW_ALL_ARTICLES": "Ver todos os artigos"
"VIEW_ALL_ARTICLES": "Ver todos os artigos",
"IFRAME_LOAD_ERROR": "Ocorreu um erro ao carregar o artigo. Por favor, atualize a página e tente novamente."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Mensagem de imagem"
},
"audio": {
"CONTENT": "Mensagem de áudio"
},
"video": {
"CONTENT": "Mensagem de vídeo"
},
"file": {
"CONTENT": "Arquivo anexo"
},
"location": {
"CONTENT": "Local:"
},
"fallback": {
"CONTENT": "compartilhou uma url"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Iniciar Conversa",
"END_CONVERSATION": "Finalizar Conversa",
"CONTINUE_CONVERSATION": "Continuar conversa",
"YOU": "Você",
"START_NEW_CONVERSATION": "Iniciar uma nova conversa",
"VIEW_UNREAD_MESSAGES": "Você tem mensagens não lidas",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Ver novas mensagens",
"CLOSE_MESSAGES_BUTTON": "Fechar",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Artigos Populares",
"VIEW_ALL_ARTICLES": "Ver todos os artigos"
"VIEW_ALL_ARTICLES": "Ver todos os artigos",
"IFRAME_LOAD_ERROR": "Ocorreu um erro ao carregar o artigo. Por favor, atualize a página e tente novamente."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Mensagem de imagem"
},
"audio": {
"CONTENT": "Mensagem de áudio"
},
"video": {
"CONTENT": "Mensagem de vídeo"
},
"file": {
"CONTENT": "Arquivo anexo"
},
"location": {
"CONTENT": "Localização"
},
"fallback": {
"CONTENT": "compartilhou uma URL"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Începe conversația",
"END_CONVERSATION": "Terminați conversația",
"CONTINUE_CONVERSATION": "Continuați conversația",
"YOU": "You",
"START_NEW_CONVERSATION": "Începeți o conversație nouă",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Vezi mesajele noi",
"CLOSE_MESSAGES_BUTTON": "Închide",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "Vezi toate articolele"
"VIEW_ALL_ARTICLES": "Vezi toate articolele",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Mesaj imagine"
},
"audio": {
"CONTENT": "Mesaj audio"
},
"video": {
"CONTENT": "Mesaj video"
},
"file": {
"CONTENT": "Fişier ataşat"
},
"location": {
"CONTENT": "Locaţie"
},
"fallback": {
"CONTENT": "a partajat un URL"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Начать диалог",
"END_CONVERSATION": "Завершить диалог",
"CONTINUE_CONVERSATION": "Продолжить беседу",
"YOU": "You",
"START_NEW_CONVERSATION": "Начать диалог",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Посмотреть новые сообщения",
"CLOSE_MESSAGES_BUTTON": "Закрыть",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "Показать все статьи"
"VIEW_ALL_ARTICLES": "Показать все статьи",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Изображение"
},
"audio": {
"CONTENT": "Аудиосообщение"
},
"video": {
"CONTENT": "Видео"
},
"file": {
"CONTENT": "Прикрепленный файл"
},
"location": {
"CONTENT": "Местоположение"
},
"fallback": {
"CONTENT": "поделился ссылкой"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Start Conversation",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start a new conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "See new messages",
"CLOSE_MESSAGES_BUTTON": "Close",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Picture message"
},
"audio": {
"CONTENT": "Audio message"
},
"video": {
"CONTENT": "Video message"
},
"file": {
"CONTENT": "File Attachment"
},
"location": {
"CONTENT": "Location"
},
"fallback": {
"CONTENT": "has shared a url"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Začať konverzáciu",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Začať novú konverzáciu",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Zobraziť nové správy",
"CLOSE_MESSAGES_BUTTON": "Zatvoriť",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Obrázková správa"
},
"audio": {
"CONTENT": "Hlasová správa"
},
"video": {
"CONTENT": "Video správa"
},
"file": {
"CONTENT": "Súbor v prílohe"
},
"location": {
"CONTENT": "Lokácia"
},
"fallback": {
"CONTENT": "zdieľal/a url"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Start Conversation",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start a new conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "See new messages",
"CLOSE_MESSAGES_BUTTON": "Close",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Picture message"
},
"audio": {
"CONTENT": "Audio message"
},
"video": {
"CONTENT": "Video message"
},
"file": {
"CONTENT": "File Attachment"
},
"location": {
"CONTENT": "Location"
},
"fallback": {
"CONTENT": "has shared a url"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Započnite razgovor",
"END_CONVERSATION": "Završi razgovor",
"CONTINUE_CONVERSATION": "Nastavi razgovor",
"YOU": "You",
"START_NEW_CONVERSATION": "Započnite novi razgovor",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Pogledajte nove poruke",
"CLOSE_MESSAGES_BUTTON": "Zatvori",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Slikovita poruka"
},
"audio": {
"CONTENT": "Govorna poruka"
},
"video": {
"CONTENT": "Video poruka"
},
"file": {
"CONTENT": "Prilog"
},
"location": {
"CONTENT": "Lokacija"
},
"fallback": {
"CONTENT": "je podelio link"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Starta konversation",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Fortsätt konversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Starta konversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Se nya meddelanden",
"CLOSE_MESSAGES_BUTTON": "Stäng",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Bildmeddelande"
},
"audio": {
"CONTENT": "Ljudmeddelande"
},
"video": {
"CONTENT": "Videomeddelande"
},
"file": {
"CONTENT": "Bifogad fil"
},
"location": {
"CONTENT": "Plats"
},
"fallback": {
"CONTENT": "har delat en webbadress"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Start Conversation",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start a new conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "See new messages",
"CLOSE_MESSAGES_BUTTON": "மூடு",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "பட செய்தி"
},
"audio": {
"CONTENT": "ஆடியோ செய்தி"
},
"video": {
"CONTENT": "வீடியோ செய்தி"
},
"file": {
"CONTENT": "பைல் இணைப்புகள்"
},
"location": {
"CONTENT": "இருப்பிடம்"
},
"fallback": {
"CONTENT": "ஒரு URL ஐப் பகிர்ந்துள்ளார்"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "เริ่มการสนทนา",
"END_CONVERSATION": "จบการสนทนา",
"CONTINUE_CONVERSATION": "สนทนาต่อ",
"YOU": "You",
"START_NEW_CONVERSATION": "เริ่มการสนทนาใหม่",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "ดูข้อความใหม่",
"CLOSE_MESSAGES_BUTTON": "ปิด",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "ข้อความภาพ"
},
"audio": {
"CONTENT": "ข้อความเสียง"
},
"video": {
"CONTENT": "ข้อความวิดิโอ"
},
"file": {
"CONTENT": "เเนบไฟล์"
},
"location": {
"CONTENT": "สถานที่"
},
"fallback": {
"CONTENT": "ได้เเชร์ลิ้ง"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Görüşmeyi Başlatın",
"END_CONVERSATION": "Görüşmeyi Sonlandır",
"CONTINUE_CONVERSATION": "Görüşmeye devam et",
"YOU": "You",
"START_NEW_CONVERSATION": "Yeni Görüşme Başlatın",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Yeni mesajları gör",
"CLOSE_MESSAGES_BUTTON": "Kapat",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Görsel mesaj"
},
"audio": {
"CONTENT": "Sesli mesaj"
},
"video": {
"CONTENT": "Video mesajı"
},
"file": {
"CONTENT": "Dosya eklentisi"
},
"location": {
"CONTENT": "Yer"
},
"fallback": {
"CONTENT": "bir url paylaştı"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Розпочати розмову",
"END_CONVERSATION": "Закінчити спілкування",
"CONTINUE_CONVERSATION": "Продовжити спілкування",
"YOU": "You",
"START_NEW_CONVERSATION": "Розпочати нову розмову",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Переглянути нові повідомлення",
"CLOSE_MESSAGES_BUTTON": "Закрити",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "Переглянути всі статті"
"VIEW_ALL_ARTICLES": "Переглянути всі статті",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Повідомлення з картинкою"
},
"audio": {
"CONTENT": "Аудіо-повідомлення"
},
"video": {
"CONTENT": "Відеоповідомлення"
},
"file": {
"CONTENT": "Повідомлення з файлом"
},
"location": {
"CONTENT": "Місцезнаходження"
},
"fallback": {
"CONTENT": "поділився посиланням"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Start Conversation",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start a new conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "See new messages",
"CLOSE_MESSAGES_BUTTON": "Close",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "تصویری پیغام"
},
"audio": {
"CONTENT": "آڈیو پیغام"
},
"video": {
"CONTENT": "ویڈیو پیغام"
},
"file": {
"CONTENT": "فائل منسلک کرنا"
},
"location": {
"CONTENT": "مقام"
},
"fallback": {
"CONTENT": "نے ایک یو آر ایل بھیجا"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Start Conversation",
"END_CONVERSATION": "End Conversation",
"CONTINUE_CONVERSATION": "Continue conversation",
"YOU": "You",
"START_NEW_CONVERSATION": "Start a new conversation",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "See new messages",
"CLOSE_MESSAGES_BUTTON": "Close",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Picture message"
},
"audio": {
"CONTENT": "Audio message"
},
"video": {
"CONTENT": "Video message"
},
"file": {
"CONTENT": "File Attachment"
},
"location": {
"CONTENT": "Location"
},
"fallback": {
"CONTENT": "has shared a url"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "Bắt đầu một cuộc trò chuyện",
"END_CONVERSATION": "Kết thúc hội thoại",
"CONTINUE_CONVERSATION": "Tiếp tục hội thoại",
"YOU": "You",
"START_NEW_CONVERSATION": "Bắt đầu hội thoại mới",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "Xem tin nhắn mới",
"CLOSE_MESSAGES_BUTTON": "Đóng",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "Xem tất cả bài viết"
"VIEW_ALL_ARTICLES": "Xem tất cả bài viết",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "Tin nhắn hình ảnh"
},
"audio": {
"CONTENT": "Tin nhắn thoại"
},
"video": {
"CONTENT": "Tin nhắn video"
},
"file": {
"CONTENT": "Tập tin đính kèm"
},
"location": {
"CONTENT": "Địa điểm"
},
"fallback": {
"CONTENT": "có một đường dẫn chia sẻ"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "开始会话",
"END_CONVERSATION": "结束对话",
"CONTINUE_CONVERSATION": "继续对话",
"YOU": "You",
"START_NEW_CONVERSATION": "开始新的对话",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "查看新消息",
"CLOSE_MESSAGES_BUTTON": "关闭",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "图片消息"
},
"audio": {
"CONTENT": "音频消息"
},
"video": {
"CONTENT": "视频消息"
},
"file": {
"CONTENT": "附件"
},
"location": {
"CONTENT": "位置"
},
"fallback": {
"CONTENT": "分享了一个网址"
}
}
}
+24 -1
View File
@@ -34,7 +34,9 @@
"START_CONVERSATION": "開始對話",
"END_CONVERSATION": "結束對話",
"CONTINUE_CONVERSATION": "繼續對話",
"YOU": "You",
"START_NEW_CONVERSATION": "開始一個新對話",
"VIEW_UNREAD_MESSAGES": "You have unread messages",
"UNREAD_VIEW": {
"VIEW_MESSAGES_BUTTON": "查看新訊息",
"CLOSE_MESSAGES_BUTTON": "關閉",
@@ -108,6 +110,27 @@
},
"PORTAL": {
"POPULAR_ARTICLES": "Popular Articles",
"VIEW_ALL_ARTICLES": "View all articles"
"VIEW_ALL_ARTICLES": "View all articles",
"IFRAME_LOAD_ERROR": "There was an error loading the article, please refresh the page and try again."
},
"ATTACHMENTS": {
"image": {
"CONTENT": "圖片訊息"
},
"audio": {
"CONTENT": "聲音訊息"
},
"video": {
"CONTENT": "影片訊息"
},
"file": {
"CONTENT": "附件"
},
"location": {
"CONTENT": "位置"
},
"fallback": {
"CONTENT": "分享了一個網址"
}
}
}
+22 -3
View File
@@ -23,8 +23,8 @@ class FilterService
@filter_values["value_#{current_index}"] = filter_values(query_hash)
equals_to_filter_string(query_hash[:filter_operator], current_index)
when 'contains', 'does_not_contain'
@filter_values["value_#{current_index}"] = "%#{string_filter_values(query_hash)}%"
like_filter_string(query_hash[:filter_operator], current_index)
@filter_values["value_#{current_index}"] = values_for_ilike(query_hash)
ilike_filter_string(query_hash[:filter_operator], current_index)
when 'is_present'
@filter_values["value_#{current_index}"] = 'IS NOT NULL'
when 'is_not_present'
@@ -48,12 +48,16 @@ class FilterService
when 'message_type'
query_hash['values'].map { |x| Message.message_types[x.to_sym] }
when 'content'
string_filter_values(query_hash)
downcase_array_values(query_hash['values'])
else
case_insensitive_values(query_hash)
end
end
def downcase_array_values(values)
values.map(&:downcase)
end
def case_insensitive_values(query_hash)
if @custom_attribute_type.present? && query_hash['values'][0].is_a?(String)
string_filter_values(query_hash)
@@ -62,6 +66,15 @@ class FilterService
end
end
def values_for_ilike(query_hash)
if query_hash['values'].is_a?(Array)
query_hash['values']
.map { |item| "%#{item.strip}%" }
else
["%#{query_hash['values'].strip}%"]
end
end
def string_filter_values(query_hash)
return query_hash['values'][0].downcase if query_hash['values'].is_a?(Array)
@@ -149,6 +162,12 @@ class FilterService
"NOT IN (:value_#{current_index})"
end
def ilike_filter_string(filter_operator, current_index)
return "ILIKE ANY (ARRAY[:value_#{current_index}])" if %w[contains].include?(filter_operator)
"NOT ILIKE ALL (ARRAY[:value_#{current_index}])"
end
def like_filter_string(filter_operator, current_index)
return "LIKE :value_#{current_index}" if %w[contains starts_with].include?(filter_operator)
@@ -83,7 +83,7 @@ to display a collection of resources in an HTML table.
<% if existing_action? collection_presenter.resource_name, :destroy %>
<td><%= link_to(
t("administrate.actions.destroy"),
[namespace, resource.becomes(User)],
[namespace, collection_presenter.resource_name == 'account_user' ? resource : resource.becomes(User)],
class: "text-color-red",
method: :delete,
data: { confirm: t("administrate.actions.confirm") }
+3 -2
View File
@@ -138,8 +138,9 @@ class Rack::Attack
end
## Prevent Abuse of attachment upload APIs ##
throttle('/api/v1/upload', limit: 60, period: 1.hour) do |req|
req.ip if req.path_without_extentions == '/api/v1/upload' && req.post?
throttle('/api/v1/accounts/:account_id/upload', limit: 60, period: 1.hour) do |req|
match_data = %r{/api/v1/accounts/(?<account_id>\d+)/upload}.match(req.path)
match_data[:account_id] if match_data.present?
end
## ----------------------------------------------- ##
+11 -11
View File
@@ -184,21 +184,21 @@ tr:
description: "Integrate powerful AI features into Chatwoot by leveraging the GPT models from OpenAI."
public_portal:
search:
search_placeholder: Başlığa veya içeriğe göre arama yapın...
search_placeholder: Search for article by title or body...
empty_placeholder: Sonuç bulunamadı.
loading_placeholder: Aranıyor...
results_title: Arama sonuçları
toc_header: 'Bu sayfadakiler'
loading_placeholder: Searching...
results_title: Search results
toc_header: 'On this page'
hero:
sub_title: Makalelerde arayın veya aşağıdaki kategorilere göz atın.
sub_title: Search for the articles here or browse the categories below.
common:
home: Anasayfa
last_updated_on: "Son güncelleme: %{last_updated_on}"
view_all_articles: Tüm makaleleri görüntüle
article: makale
articles: makale
no_articles: Burada hiç makale yok.
last_updated_on: Last updated on %{last_updated_on}
view_all_articles: View all articles
article: article
articles: articles
no_articles: There are no articles here
footer:
made_with: Made with
header:
go_to_homepage: Ana siteye git
go_to_homepage: Go to the main site
+3 -3
View File
@@ -21,7 +21,7 @@ zh_TW:
messages:
reset_password_success: 密碼重設成功,請確認您的信箱有收到重設信件。
reset_password_failure: 我們找不到用戶指定的電子郵件。
inbox_deletetion_response: Your inbox deletion request will be processed in some time.
inbox_deletetion_response: 您的收件匣刪除請求將在一段時間後處理。
errors:
validations:
presence: must not be blank
@@ -71,8 +71,8 @@ zh_TW:
avg_first_response_time: 平均第一次回覆時間(分鐘)
avg_resolution_time: 平均解決時間(分鐘)
inbox_csv:
inbox_name: Inbox name
inbox_type: Inbox type
inbox_name: 收件匣名稱
inbox_type: 收件匣類型
conversations_count: No. of conversations
avg_first_response_time: 平均第一次回覆時間(分鐘)
avg_resolution_time: 平均解決時間(分鐘)
+2 -2
View File
@@ -217,13 +217,13 @@ Rails.application.routes.draw do
post :reorder, on: :collection
end
end
resources :upload, only: [:create]
end
end
# end of account scoped api routes
# ----------------------------------
resources :upload, only: [:create]
namespace :integrations do
resources :webhooks, only: [:create]
end
+33 -4
View File
@@ -2,7 +2,7 @@
# Description: Install and manage a Chatwoot installation.
# OS: Ubuntu 20.04 LTS
# Script Version: 2.3.0
# Script Version: 2.4.0
# Run this script as root
set -eu -o errexit -o pipefail -o noclobber -o nounset
@@ -19,7 +19,7 @@ fi
# option --output/-o requires 1 argument
LONGOPTS=console,debug,help,install,Install:,logs:,restart,ssl,upgrade,webserver,version
OPTIONS=cdhiI:l:rsuwv
CWCTL_VERSION="2.3.0"
CWCTL_VERSION="2.4.0"
pg_pass=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 15 ; echo '')
# if user does not specify an option
@@ -722,7 +722,30 @@ EOF
# None
##############################################################################
function upgrade_redis() {
echo "Checking Redis availability..."
# Check if Redis is installed
if ! command -v redis-server &> /dev/null; then
echo "Redis is not installed. Skipping Redis upgrade."
return
fi
echo "Checking Redis version..."
# Get current Redis version
current_version=$(redis-server --version | awk -F 'v=' '{print $2}' | awk '{print $1}')
# Parse major version number
major_version=$(echo "$current_version" | cut -d. -f1)
if [ "$major_version" -ge 7 ]; then
echo "Redis is already version $current_version (>= 7). Skipping Redis upgrade."
return
fi
echo "Upgrading Redis to v7+ for Rails 7 support(Chatwoot v2.17+)"
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
apt update -y
@@ -730,6 +753,11 @@ function upgrade_redis() {
apt install libvips -y
}
function upgrade_node() {
echo "Upgrading nodejs version to v20.x"
curl -sL https://deb.nodesource.com/setup_20.x | sudo bash -
apt install -y nodejs
}
##############################################################################
# Upgrade an existing installation to latest stable version(-u/--upgrade)
@@ -746,6 +774,7 @@ function upgrade() {
sleep 3
upgrade_prereq
upgrade_redis
upgrade_node
sudo -i -u chatwoot << "EOF"
# Navigate to the Chatwoot directory
@@ -765,7 +794,7 @@ function upgrade() {
yarn
# Recompile the assets
rake assets:precompile RAILS_ENV=production
rake assets:precompile RAILS_ENV=production NODE_OPTIONS=--openssl-legacy-provider
# Migrate the database schema
RAILS_ENV=production POSTGRES_STATEMENT_TIMEOUT=600s bundle exec rake db:migrate
@@ -829,7 +858,7 @@ function webserver() {
# None
##############################################################################
function version() {
echo "cwctl v$CWCTL_VERSION alpha build"
echo "cwctl v$CWCTL_VERSION beta build"
}
##############################################################################
@@ -1,5 +1,5 @@
class Integrations::Slack::IncomingMessageBuilder
include SlackMessageCreation
include Integrations::Slack::SlackMessageHelper
attr_reader :params
SUPPORTED_EVENT_TYPES = %w[event_callback url_verification].freeze
@@ -1,8 +1,4 @@
module SlackMessageCreation
extend ActiveSupport::Concern
private
module Integrations::Slack::SlackMessageHelper
def create_message
return unless conversation
+1 -1
View File
@@ -30,7 +30,7 @@
],
"dependencies": {
"@braid/vue-formulate": "^2.5.2",
"@chatwoot/prosemirror-schema": "https://github.com/chatwoot/prosemirror-schema.git#825755b53f1ef4ae14fac2393b53a02e14ce21e0",
"@chatwoot/prosemirror-schema": "^1.0.1",
"@chatwoot/utils": "^0.0.16",
"@hcaptcha/vue-hcaptcha": "^0.3.2",
"@june-so/analytics-next": "^1.36.5",
@@ -128,7 +128,7 @@ RSpec.describe 'Api::V1::Accounts::AutomationRulesController', type: :request do
expect(account.automation_rules.count).to eq(0)
post '/api/v1/upload',
post "/api/v1/accounts/#{account.id}/upload/",
headers: administrator.create_new_auth_token,
params: { attachment: file }
@@ -163,13 +163,13 @@ RSpec.describe 'Api::V1::Accounts::AutomationRulesController', type: :request do
file_1 = fixture_file_upload(Rails.root.join('spec/assets/avatar.png'), 'image/png')
file_2 = fixture_file_upload(Rails.root.join('spec/assets/sample.png'), 'image/png')
post '/api/v1/upload',
post "/api/v1/accounts/#{account.id}/upload/",
headers: administrator.create_new_auth_token,
params: { attachment: file_1 }
blob_1 = response.parsed_body
post '/api/v1/upload',
post "/api/v1/accounts/#{account.id}/upload/",
headers: administrator.create_new_auth_token,
params: { attachment: file_2 }
@@ -129,7 +129,7 @@ RSpec.describe 'Api::V1::Accounts::MacrosController', type: :request do
it 'Saves file in the macros actions to send an attachments' do
file = fixture_file_upload(Rails.root.join('spec/assets/avatar.png'), 'image/png')
post '/api/v1/upload',
post "/api/v1/accounts/#{account.id}/upload/",
headers: administrator.create_new_auth_token,
params: { attachment: file }
@@ -1,14 +1,14 @@
require 'rails_helper'
RSpec.describe 'Api::V1::UploadController', type: :request do
describe 'POST /api/v1/upload/' do
RSpec.describe 'Api::V1::Accounts::UploadController', type: :request do
describe 'POST /api/v1/account/1/upload/' do
let(:account) { create(:account) }
let(:user) { create(:user, account: account) }
it 'uploads the image when authorized' do
file = fixture_file_upload(Rails.root.join('spec/assets/avatar.png'), 'image/png')
post '/api/v1/upload/',
post "/api/v1/accounts/#{account.id}/upload/",
headers: user.create_new_auth_token,
params: { attachment: file }
@@ -25,7 +25,7 @@ RSpec.describe 'Api::V1::UploadController', type: :request do
it 'does not upload when un-authorized' do
file = fixture_file_upload(Rails.root.join('spec/assets/avatar.png'), 'image/png')
post '/api/v1/upload/',
post "/api/v1/accounts/#{account.id}/upload/",
headers: {},
params: { attachment: file }
@@ -10,7 +10,6 @@ describe Conversations::FilterService do
let!(:campaign_2) { create(:campaign, title: 'Campaign', account: account) }
let!(:inbox) { create(:inbox, account: account, enable_auto_assignment: false) }
let!(:unassigned_conversation) { create(:conversation, account: account, inbox: inbox) }
let!(:user_2_assigned_conversation) { create(:conversation, account: account, inbox: inbox, assignee: user_2) }
let!(:en_conversation_1) do
create(:conversation, account: account, inbox: inbox, assignee: user_1, campaign_id: campaign_1.id,
@@ -75,7 +74,7 @@ describe Conversations::FilterService do
params[:payload] = payload
result = filter_service.new(params, user_1).perform
conversations = Conversation.where("additional_attributes ->> 'browser_language' IN (?) AND status IN (?)", ['en'], [1, 2])
expect(result.length).to be conversations.count
expect(result[:count][:all_count]).to be conversations.count
end
it 'filter conversations by additional_attributes and status with pagination' do
@@ -83,7 +82,45 @@ describe Conversations::FilterService do
params[:page] = 2
result = filter_service.new(params, user_1).perform
conversations = Conversation.where("additional_attributes ->> 'browser_language' IN (?) AND status IN (?)", ['en'], [1, 2])
expect(result.length).to be conversations.count
expect(result[:count][:all_count]).to be conversations.count
end
it 'filters items with contains filter_operator with values being an array' do
params[:payload] = [{
attribute_key: 'browser_language',
filter_operator: 'contains',
values: %w[tr fr],
query_operator: '',
custom_attribute_type: ''
}.with_indifferent_access]
create(:conversation, account: account, inbox: inbox, assignee: user_1, campaign_id: campaign_1.id,
status: 'pending', additional_attributes: { 'browser_language': 'fr' })
create(:conversation, account: account, inbox: inbox, assignee: user_1, campaign_id: campaign_1.id,
status: 'pending', additional_attributes: { 'browser_language': 'tr' })
result = filter_service.new(params, user_1).perform
expect(result[:count][:all_count]).to be 2
end
it 'filters items with does not contain filter operator with values being an array' do
params[:payload] = [{
attribute_key: 'browser_language',
filter_operator: 'does_not_contain',
values: %w[tr en],
query_operator: '',
custom_attribute_type: ''
}.with_indifferent_access]
create(:conversation, account: account, inbox: inbox, assignee: user_1, campaign_id: campaign_1.id,
status: 'pending', additional_attributes: { 'browser_language': 'fr' })
create(:conversation, account: account, inbox: inbox, assignee: user_1, campaign_id: campaign_1.id,
status: 'pending', additional_attributes: { 'browser_language': 'tr' })
result = filter_service.new(params, user_1).perform
expect(result[:count][:all_count]).to be 1
expect(result[:conversations].first.additional_attributes['browser_language']).to eq 'fr'
end
it 'filter conversations by additional_attributes with NOT_IN filter' do
@@ -98,7 +135,7 @@ describe Conversations::FilterService do
end
it 'filter conversations by tags' do
unassigned_conversation.update_labels('support')
user_2_assigned_conversation.update_labels('support')
params[:payload] = [
{
attribute_key: 'assignee_id',
@@ -119,7 +156,7 @@ describe Conversations::FilterService do
}.with_indifferent_access
]
result = filter_service.new(params, user_1).perform
expect(result.length).to be 2
expect(result[:count][:all_count]).to be 1
end
it 'filter conversations by is_present filter_operator' do
+4 -3
View File
@@ -2994,9 +2994,10 @@
is-url "^1.2.4"
nanoid "^2.1.11"
"@chatwoot/prosemirror-schema@https://github.com/chatwoot/prosemirror-schema.git#825755b53f1ef4ae14fac2393b53a02e14ce21e0":
version "1.0.0"
resolved "https://github.com/chatwoot/prosemirror-schema.git#825755b53f1ef4ae14fac2393b53a02e14ce21e0"
"@chatwoot/prosemirror-schema@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@chatwoot/prosemirror-schema/-/prosemirror-schema-1.0.1.tgz#7beb7a9303fbf5281d3a7e6c470ac78cce21be04"
integrity sha512-fnT2zSzAmiAh1ElEWqBhISavGZF73DLUzQyml0iiXDy6IU7HS3TtQPI/AGoCK3CkCxvoqBtzhRLGZrHsftoQ9w==
dependencies:
markdown-it-sup "^1.0.0"
prosemirror-commands "^1.1.4"