From e4a95ebecb29f0c36b7562538f5c7cbbf6e6ee19 Mon Sep 17 00:00:00 2001 From: Priyadarshini Nadar Date: Tue, 29 Dec 2020 15:55:17 +0530 Subject: [PATCH] v1.2.9 --- CometChat/components/AddMemberView/index.js | 21 +- CometChat/components/Avatar/index.js | 28 ++- CometChat/components/Backdrop/index.js | 12 ++ CometChat/components/BadgeCount/index.js | 18 +- CometChat/components/BanMemberView/index.js | 34 ++-- CometChat/components/BanMemberView/style.js | 12 +- CometChat/components/CallAlert/index.js | 28 ++- CometChat/components/CallMessage/index.js | 79 ++++++-- CometChat/components/CallScreen/index.js | 24 ++- .../components/CometChatAddMembers/index.js | 34 +++- .../components/CometChatAddMembers/style.js | 11 +- .../components/CometChatBanMembers/index.js | 37 +++- .../components/CometChatBanMembers/style.js | 12 +- .../CometChatConversationList/index.js | 100 ++++++---- .../CometChatConversationList/style.js | 9 +- .../CometChatConversationListScreen/index.js | 69 +++++-- .../components/CometChatCreateGroup/index.js | 42 ++-- .../components/CometChatCreatePoll/index.js | 39 ++-- .../components/CometChatGroupDetail/index.js | 142 +++++++------- .../components/CometChatGroupList/index.js | 87 +++++---- .../components/CometChatGroupList/style.js | 9 +- .../CometChatGroupListScreen/index.js | 57 ++++-- .../CometChatMessageListScreen/index.js | 64 +++++-- .../CometChatUnified/NavBar/index.js | 45 ++++- .../components/CometChatUnified/index.js | 74 ++++--- .../components/CometChatUserDetail/index.js | 49 +++-- .../CometChatUserInfoScreen/index.js | 51 ++--- .../CometChatUserInfoScreen/style.js | 10 +- .../components/CometChatUserList/index.js | 52 +++-- .../components/CometChatUserList/style.js | 11 +- .../CometChatUserListScreen/index.js | 57 ++++-- .../components/CometChatViewMembers/index.js | 27 ++- .../components/ConversationView/index.js | 175 +++++++++++------ .../components/ConversationView/style.js | 10 +- CometChat/components/CreatePollView/index.js | 15 +- .../components/DeletedMessageBubble/index.js | 24 ++- CometChat/components/EmojiView/index.js | 62 +++++- CometChat/components/GroupView/index.js | 29 ++- CometChat/components/GroupView/style.js | 8 +- CometChat/components/ImageView/index.js | 20 +- CometChat/components/LinkPreview/index.js | 17 +- CometChat/components/MemberView/index.js | 62 +++--- CometChat/components/MemberView/style.js | 12 +- CometChat/components/MessageComposer/index.js | 102 +++++++--- CometChat/components/MessageComposer/style.js | 28 ++- CometChat/components/MessageHeader/index.js | 121 +++++++----- CometChat/components/MessageHeader/style.js | 5 +- CometChat/components/MessageList/index.js | 91 +++++---- .../components/MessageThread/controller.js | 24 --- CometChat/components/MessageThread/index.js | 75 ++++---- CometChat/components/ReadReciept/index.js | 22 ++- .../components/ReceiverAudioBubble/index.js | 32 ++-- .../ReceiverDocumentBubble/index.js | 40 ++-- .../components/ReceiverFileBubble/index.js | 36 ++-- .../components/ReceiverImageBubble/index.js | 35 ++-- .../components/ReceiverMessageBubble/index.js | 33 ++-- .../components/ReceiverPollBubble/index.js | 44 +++-- .../components/ReceiverStickerBubble/index.js | 35 ++-- .../components/ReceiverVideoBubble/index.js | 30 +-- .../ReceiverWhiteboardBubble/index.js | 40 ++-- .../components/RegularReactionView/index.js | 71 ++----- CometChat/components/ReplyCount/index.js | 23 ++- CometChat/components/ReplyPreview/index.js | 12 ++ .../components/SenderAudioBubble/index.js | 8 +- .../components/SenderDocumentBubble/index.js | 29 ++- .../components/SenderFileBubble/index.js | 20 +- .../components/SenderImageBubble/index.js | 22 ++- .../components/SenderMessageBubble/index.js | 20 +- .../components/SenderPollBubble/index.js | 34 +++- .../components/SenderStickerBubble/index.js | 25 ++- .../components/SenderVideoBubble/index.js | 9 +- .../SenderWhiteboardBubble/index.js | 29 ++- CometChat/components/SharedMediaView/index.js | 45 ++--- CometChat/components/StatusIndicator/index.js | 35 ++-- CometChat/components/StickerView/index.js | 21 +- CometChat/components/ToolTip/index.js | 31 +-- CometChat/components/UserView/index.js | 27 ++- CometChat/components/UserView/style.js | 8 +- .../localization/locales/ar/translation.json | 181 ++++++++++++++++++ .../localization/locales/de/translation.json | 181 ++++++++++++++++++ .../locales/en-gb/translation.json | 181 ++++++++++++++++++ .../locales/en-us/translation.json | 181 ++++++++++++++++++ .../localization/locales/en/translation.json | 181 ++++++++++++++++++ .../localization/locales/es/translation.json | 181 ++++++++++++++++++ .../localization/locales/fr/translation.json | 181 ++++++++++++++++++ .../localization/locales/hi/translation.json | 181 ++++++++++++++++++ .../localization/locales/ms/translation.json | 181 ++++++++++++++++++ .../localization/locales/pt/translation.json | 181 ++++++++++++++++++ .../localization/locales/ru/translation.json | 181 ++++++++++++++++++ .../locales/zh-tw/translation.json | 181 ++++++++++++++++++ .../localization/locales/zh/translation.json | 181 ++++++++++++++++++ .../resources/localization/translator.js | 98 ++++++++++ CometChat/resources/theme.js | 2 + CometChat/util/common.js | 2 +- CometChat/util/enums.js | 4 +- README.md | 159 +++++++++------ Screenshots/logo.png | Bin 0 -> 12602 bytes Screenshots/main.png | Bin 0 -> 424882 bytes 98 files changed, 4509 insertions(+), 1149 deletions(-) delete mode 100644 CometChat/components/MessageThread/controller.js create mode 100644 CometChat/resources/localization/locales/ar/translation.json create mode 100644 CometChat/resources/localization/locales/de/translation.json create mode 100644 CometChat/resources/localization/locales/en-gb/translation.json create mode 100644 CometChat/resources/localization/locales/en-us/translation.json create mode 100644 CometChat/resources/localization/locales/en/translation.json create mode 100644 CometChat/resources/localization/locales/es/translation.json create mode 100644 CometChat/resources/localization/locales/fr/translation.json create mode 100644 CometChat/resources/localization/locales/hi/translation.json create mode 100644 CometChat/resources/localization/locales/ms/translation.json create mode 100644 CometChat/resources/localization/locales/pt/translation.json create mode 100644 CometChat/resources/localization/locales/ru/translation.json create mode 100644 CometChat/resources/localization/locales/zh-tw/translation.json create mode 100644 CometChat/resources/localization/locales/zh/translation.json create mode 100644 CometChat/resources/localization/translator.js create mode 100644 Screenshots/logo.png create mode 100644 Screenshots/main.png diff --git a/CometChat/components/AddMemberView/index.js b/CometChat/components/AddMemberView/index.js index 42e863b4..f21518d9 100644 --- a/CometChat/components/AddMemberView/index.js +++ b/CometChat/components/AddMemberView/index.js @@ -2,6 +2,7 @@ import { useState } from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import Avatar from "../Avatar"; import StatusIndicator from "../StatusIndicator"; @@ -15,6 +16,7 @@ import { selectionBoxStyle } from "./style"; +import { theme } from "../../resources/theme"; import inactiveIcon from "./resources/checkbox-inactive.svg"; import activeIcon from "./resources/checkbox-blue-active.svg"; @@ -59,17 +61,11 @@ const AddMemberView = (props) => { onMouseEnter={event => toggleTooltip(event, true)} onMouseLeave={event => toggleTooltip(event, false)}>
- + + borderColor={props.theme.borderColor.primary} />
{props.user.name}
@@ -86,4 +82,13 @@ const AddMemberView = (props) => { ) } +// Specifies the default values for props: +AddMemberView.defaultProps = { + theme: theme +}; + +AddMemberView.propTypes = { + theme: PropTypes.object +} + export default AddMemberView; \ No newline at end of file diff --git a/CometChat/components/Avatar/index.js b/CometChat/components/Avatar/index.js index 05c6c13a..4c14d813 100644 --- a/CometChat/components/Avatar/index.js +++ b/CometChat/components/Avatar/index.js @@ -2,10 +2,9 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; -import { - imgStyle -} from "./style"; +import { imgStyle } from "./style"; import srcIcon from "./resources/1px.png"; @@ -19,9 +18,9 @@ class Avatar extends React.Component { render() { - const borderWidth = this.props.borderWidth || '1px'; - const borderColor = this.props.borderColor || '#AAA'; - const cornerRadius = this.props.cornerRadius || '50%'; + const borderWidth = this.props.borderWidth; + const borderColor = this.props.borderColor; + const cornerRadius = this.props.cornerRadius; const image = this.props.image; let img = new Image(); @@ -36,9 +35,24 @@ class Avatar extends React.Component { const getStyle = () => ({ borderWidth: borderWidth, borderStyle: 'solid', borderColor: borderColor, 'borderRadius': cornerRadius }); return ( - Avatar { this.imgRef = el;}} /> + {image} { this.imgRef = el;}} /> ); } } +// Specifies the default values for props: +Avatar.defaultProps = { + borderWidth: "1px", + borderColor: "#AAA", + cornerRadius: "50%", + image: srcIcon +}; + +Avatar.propTypes = { + borderWidth: PropTypes.string, + borderColor: PropTypes.string, + cornerRadius: PropTypes.string, + image: PropTypes.string +} + export default Avatar; \ No newline at end of file diff --git a/CometChat/components/Backdrop/index.js b/CometChat/components/Backdrop/index.js index 1fd583a5..d2db8ad9 100644 --- a/CometChat/components/Backdrop/index.js +++ b/CometChat/components/Backdrop/index.js @@ -1,5 +1,6 @@ /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { backdropStyle @@ -9,4 +10,15 @@ const backdrop = (props) => ( props.show ?
: null ); +// Specifies the default values for props: +backdrop.defaultProps = { + count: 0, + clicked: () => {} +}; + +backdrop.propTypes = { + show: PropTypes.bool, + clicked: PropTypes.func, +} + export default backdrop; \ No newline at end of file diff --git a/CometChat/components/BadgeCount/index.js b/CometChat/components/BadgeCount/index.js index b70f8be1..86da7a95 100644 --- a/CometChat/components/BadgeCount/index.js +++ b/CometChat/components/BadgeCount/index.js @@ -1,9 +1,9 @@ /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; -import { - badgeStyle -} from "./style"; +import { theme } from "../../resources/theme"; +import { badgeStyle } from "./style"; const badgecount = (props) => { @@ -14,7 +14,19 @@ const badgecount = (props) => { {props.count} ); } + return count; } +// Specifies the default values for props: +badgecount.defaultProps = { + count: 0, + theme: theme +}; + +badgecount.propTypes = { + count: PropTypes.number, + theme: PropTypes.object +} + export default badgecount; \ No newline at end of file diff --git a/CometChat/components/BanMemberView/index.js b/CometChat/components/BanMemberView/index.js index b528cf6a..17d4a6bd 100644 --- a/CometChat/components/BanMemberView/index.js +++ b/CometChat/components/BanMemberView/index.js @@ -1,5 +1,6 @@ /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; @@ -14,18 +15,20 @@ import { actionStyle } from "./style"; +import Translator from "../../resources/localization/translator"; +import { theme } from "../../resources/theme"; import unban from "./resources/block.png"; const memberview = (props) => { const roles = {} - roles[CometChat.GROUP_MEMBER_SCOPE.ADMIN] = "Administrator"; - roles[CometChat.GROUP_MEMBER_SCOPE.MODERATOR] = "Moderator"; - roles[CometChat.GROUP_MEMBER_SCOPE.PARTICIPANT] = "Participant"; + roles[CometChat.GROUP_MEMBER_SCOPE.ADMIN] = Translator.translate("ADMINISTRATOR", props.lang); + roles[CometChat.GROUP_MEMBER_SCOPE.MODERATOR] = Translator.translate("MODERATOR", props.lang); + roles[CometChat.GROUP_MEMBER_SCOPE.PARTICIPANT] = Translator.translate("PARTICIPANT", props.lang); let name = props.member.name; let scope = roles[props.member.scope]; - let unBan = (Unban {props.actionGenerated("unban", props.member)}} />); + let unBan = ({Translator.translate("UNBAN", {props.actionGenerated("unban", props.member)}} />); //if the loggedin user is moderator, don't allow unban of banned moderators or administrators if(props.item.scope === CometChat.GROUP_MEMBER_SCOPE.MODERATOR @@ -57,7 +60,7 @@ const memberview = (props) => { } else { nameContainer.removeAttribute("title"); } - } + } return ( @@ -65,17 +68,11 @@ const memberview = (props) => { onMouseEnter={event => toggleTooltip(event, true)} onMouseLeave={event => toggleTooltip(event, false)}>
- + + borderColor={props.theme.borderColor.primary} />
{name}
@@ -85,4 +82,15 @@ const memberview = (props) => { ); } +// Specifies the default values for props: +memberview.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +memberview.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default memberview; \ No newline at end of file diff --git a/CometChat/components/BanMemberView/style.js b/CometChat/components/BanMemberView/style.js index e1952251..796fc820 100644 --- a/CometChat/components/BanMemberView/style.js +++ b/CometChat/components/BanMemberView/style.js @@ -8,11 +8,6 @@ export const tableRowStyle = (props) => { fontSize: "14px", "td": { padding: ".625em", - "img": { - width: "36px", - height: "36px", - float: "left", - } } } } @@ -22,10 +17,9 @@ export const avatarStyle = () => { return { display: "inline-block", float: "left", - "span": { - top: "26px", - left: "-8px", - } + width: "36px", + height: "36px", + marginRight: "8px", } } diff --git a/CometChat/components/CallAlert/index.js b/CometChat/components/CallAlert/index.js index c1ec754b..c5230860 100644 --- a/CometChat/components/CallAlert/index.js +++ b/CometChat/components/CallAlert/index.js @@ -2,14 +2,17 @@ import React from "react"; /** @jsx jsx */ import { jsx, keyframes } from "@emotion/core"; +import PropTypes from 'prop-types'; + import { CometChat } from "@cometchat-pro/chat"; import { CometChatManager } from "../../util/controller"; import * as enums from '../../util/enums.js'; - +import { validateWidgetSettings } from "../../util/common"; +import Translator from "../../resources/localization/translator"; import Avatar from "../Avatar"; import { SvgAvatar } from '../../util/svgavatar'; -import { validateWidgetSettings } from "../../util/common"; + import { CallAlertManager } from "./controller"; import { @@ -172,13 +175,13 @@ class CallAlert extends React.PureComponent { let callType = ( - Incoming audio callIncoming audio call + {Translator.translate("INCOMING_AUDIO_CALL",{Translator.translate("INCOMING_AUDIO_CALL", this.props.lang)} ); if (this.state.incomingCall.type === "video") { callType = ( - Incoming video callIncoming video call + {Translator.translate("INCOMING_VIDEO_CALL",{Translator.translate("INCOMING_VIDEO_CALL", this.props.lang)} ); } @@ -191,11 +194,13 @@ class CallAlert extends React.PureComponent {
{this.state.incomingCall.sender.name}
{callType}
-
+
+ +
- - + +
@@ -206,4 +211,13 @@ class CallAlert extends React.PureComponent { } } +// Specifies the default values for props: +CallAlert.defaultProps = { + lang: Translator.getDefaultLanguage(), +}; + +CallAlert.propTypes = { + lang: PropTypes.string, +} + export default CallAlert; diff --git a/CometChat/components/CallMessage/index.js b/CometChat/components/CallMessage/index.js index 99cd3e2d..ed45b0ea 100644 --- a/CometChat/components/CallMessage/index.js +++ b/CometChat/components/CallMessage/index.js @@ -2,9 +2,12 @@ import { useCallback } from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core' +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; +import Translator from "../../resources/localization/translator"; + import { callMessageStyle, callMessageTxtStyle } from "./style"; const CallMessage = (props) => { @@ -19,30 +22,40 @@ const CallMessage = (props) => { case CometChat.CALL_STATUS.INITIATED: { - message = "Call initiated"; + message = Translator.translate("CALL_INITIATED", props.lang); if (call.type === "audio") { if (call.receiverType === "user") { - message = (call.callInitiator.uid === loggedInUser.uid) ? "Outgoing audio call" : "Incoming audio call"; + + message = (call.callInitiator.uid === loggedInUser.uid) ? Translator.translate("OUTGOING_AUDIO_CALL", props.lang) : Translator.translate("INCOMING_AUDIO_CALL", props.lang); + } else if (call.receiverType === "group") { if (call.action === CometChat.CALL_STATUS.INITIATED) { - message = (call.callInitiator.uid === loggedInUser.uid) ? "Outgoing audio call" : "Incoming audio call"; + + message = (call.callInitiator.uid === loggedInUser.uid) ? Translator.translate("OUTGOING_AUDIO_CALL", props.lang) : Translator.translate("INCOMING_AUDIO_CALL", props.lang); + } else if (call.action === CometChat.CALL_STATUS.REJECTED) { - message = (call.sender.uid === loggedInUser.uid) ? "Call rejected" : `${call.sender.name} rejected call`; + + message = (call.sender.uid === loggedInUser.uid) ? Translator.translate("CALL_REJECTED", props.lang) : (`${call.sender.name} ${Translator.translate("REJECTED_CALL", props.lang)}`); } } } else if (call.type === "video") { if (call.receiverType === "user") { - message = (call.callInitiator.uid === loggedInUser.uid) ? "Outgoing video call" : "Incoming video call"; + + message = (call.callInitiator.uid === loggedInUser.uid) ? Translator.translate("OUTGOING_VIDEO_CALL", props.lang) : Translator.translate("INCOMING_VIDEO_CALL", props.lang); + } else if (call.receiverType === "group") { if (call.action === CometChat.CALL_STATUS.INITIATED) { - message = (call.callInitiator.uid === loggedInUser.uid) ? "Outgoing video call" : "Incoming video call"; + + message = (call.callInitiator.uid === loggedInUser.uid) ? Translator.translate("OUTGOING_VIDEO_CALL", props.lang) : Translator.translate("INCOMING_VIDEO_CALL", props.lang); + } else if (call.action === CometChat.CALL_STATUS.REJECTED) { - message = (call.sender.uid === loggedInUser.uid) ? "Call rejected" : `${call.sender.name} rejected call`; + + message = (call.sender.uid === loggedInUser.uid) ? Translator.translate("CALL_REJECTED", props.lang) : (`${call.sender.name} ${Translator.translate("REJECTED_CALL", props.lang)}`); } } } @@ -51,42 +64,57 @@ const CallMessage = (props) => { case CometChat.CALL_STATUS.ONGOING: { if (call.receiverType === "user") { - message = "Call accepted"; + + message = Translator.translate("CALL_ACCEPTED", props.lang); + } else if (call.receiverType === "group") { if (call.action === CometChat.CALL_STATUS.ONGOING) { - message = (call.sender.uid === loggedInUser.uid) ? "Call accepted" : `${call.sender.name} joined`; + + message = (call.sender.uid === loggedInUser.uid) ? Translator.translate("CALL_ACCEPTED", props.lang) : (`${call.sender.name} ${Translator.translate("JOINED", props.lang)}`); + } else if (call.action === CometChat.CALL_STATUS.REJECTED) { - message = (call.sender.uid === loggedInUser.uid) ? "Call rejected" : `${call.sender.name} rejected call`; + + message = (call.sender.uid === loggedInUser.uid) ? Translator.translate("CALL_REJECTED", props.lang) : (`${call.sender.name} ${Translator.translate("REJECTED_CALL", props.lang)}`); + } else if(call.action === "left") { - message = (call.sender.uid === loggedInUser.uid) ? "You left the call" : `${call.sender.name} left the call`; + + if (call.sender.uid === loggedInUser.uid) { + + message = `${Translator.translate("YOU", props.lang)} ${Translator.translate("LEFT_THE_CALL", props.lang)}`; + + } else { + message = `${call.sender.name} ${Translator.translate("LEFT_THE_CALL", props.lang)}`; + } } } - break; } case CometChat.CALL_STATUS.UNANSWERED: { - message = "Call unanswered"; + message = Translator.translate("CALL_UNANSWERED", props.lang); + if (call.type === "audio" && (call.receiverType === "user" || call.receiverType === "group")) { - message = (call.callInitiator.uid === loggedInUser.uid) ? "Unanswered audio call" : "Missed audio call"; + + message = (call.callInitiator.uid === loggedInUser.uid) ? Translator.translate("UNANSWERED_AUDIO_CALL", props.lang) : Translator.translate("MISSED_AUDIO_CALL", props.lang); + } else if (call.type === "video" && (call.receiverType === "user" || call.receiverType === "group")) { - message = (call.callInitiator.uid === loggedInUser.uid) ? "Unanswered video call" : "Missed video call"; + + message = (call.callInitiator.uid === loggedInUser.uid) ? Translator.translate("UNANSWERED_VIDEO_CALL", props.lang) : Translator.translate("MISSED_VIDEO_CALL", props.lang); } break; } - case CometChat.CALL_STATUS.REJECTED: { - message = "Call rejected"; + case CometChat.CALL_STATUS.REJECTED: + message = Translator.translate("CALL_REJECTED", props.lang); break; - } case CometChat.CALL_STATUS.ENDED: - message = "Call ended"; + message = Translator.translate("CALL_ENDED", props.lang); break; case CometChat.CALL_STATUS.CANCELLED: - message = "Call cancelled" + message = Translator.translate("CALL_CANCELLED", props.lang); break; case CometChat.CALL_STATUS.BUSY: - message = "Call busy"; + message = Translator.translate("CALL_BUSY", props.lang); break; default: break; @@ -100,4 +128,13 @@ const CallMessage = (props) => { ) } +// Specifies the default values for props: +CallMessage.defaultProps = { + lang: Translator.getDefaultLanguage(), +}; + +CallMessage.propTypes = { + lang: PropTypes.string, +} + export default CallMessage; \ No newline at end of file diff --git a/CometChat/components/CallScreen/index.js b/CometChat/components/CallScreen/index.js index 5a9b5a90..f3b08981 100644 --- a/CometChat/components/CallScreen/index.js +++ b/CometChat/components/CallScreen/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx, keyframes } from "@emotion/core"; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; @@ -9,7 +10,6 @@ import { CometChatManager } from "../../util/controller"; import * as enums from '../../util/enums.js'; import { SvgAvatar } from '../../util/svgavatar'; import { validateWidgetSettings } from "../../util/common"; - import { CallScreenManager } from "./controller"; import Avatar from "../Avatar"; @@ -28,6 +28,8 @@ import { errorContainerStyle } from "./style"; +import Translator from "../../resources/localization/translator"; +import { theme } from "../../resources/theme"; import callIcon from "./resources/call-end-white-icon.svg"; import { outgoingCallAlert } from "../../resources/audio/"; @@ -43,12 +45,17 @@ class CallScreen extends React.PureComponent { errorScreen: false, errorMessage: null, outgoingCallScreen: false, - callInProgress: null + callInProgress: null, } this.outgoingAlert = new Audio(outgoingCallAlert); } + //Set default props + static defaultProps = { + lang: Translator.getDefaultLanguage(), + } + playOutgoingAlert = () => { //if audio sound is disabled in chat widget @@ -349,7 +356,7 @@ class CallScreen extends React.PureComponent { outgoingCallScreen = (
- Calling... + { Translator.translate("CALLING", this.props.lang) }
{this.state.callInProgress.receiver.name}
@@ -379,4 +386,15 @@ class CallScreen extends React.PureComponent { } } +// Specifies the default values for props: +CallScreen.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +CallScreen.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default CallScreen; diff --git a/CometChat/components/CometChatAddMembers/index.js b/CometChat/components/CometChatAddMembers/index.js index cdf500bc..4b89ae5f 100644 --- a/CometChat/components/CometChatAddMembers/index.js +++ b/CometChat/components/CometChatAddMembers/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; @@ -28,12 +29,14 @@ import { contactMsgTxtStyle, } from "./style"; +import Translator from "../../resources/localization/translator"; +import { theme } from "../../resources/theme"; import searchIcon from './resources/search-grey-icon.png'; import clearIcon from "./resources/close.png"; class CometChatAddMembers extends React.Component { - decoratorMessage = "Loading..."; + decoratorMessage = Translator.translate("LOADING", Translator.getDefaultLanguage()); static contextType = GroupDetailContext; constructor(props) { @@ -41,7 +44,7 @@ class CometChatAddMembers extends React.Component { this.state = { userlist: [], membersToAdd: [], - filteredlist: [] + filteredlist: [], } } @@ -120,20 +123,20 @@ class CometChatAddMembers extends React.Component { }); if (filteredUserList.length === 0) { - this.decoratorMessage = "No users found"; + this.decoratorMessage = Translator.translate("NO_USERS_FOUND", this.props.lang); } this.setState({ userlist: [...this.state.userlist, ...userList], filteredlist: [...this.state.filteredlist, ...filteredUserList] }); }).catch((error) => { - this.decoratorMessage = "Error"; + this.decoratorMessage = Translator.translate("ERROR", this.props.lang); console.error("[CometChatAddMembers] getUsers fetchNext error", error); }); }).catch((error) => { - this.decoratorMessage = "Error"; + this.decoratorMessage = Translator.translate("ERROR", this.props.lang); console.log("[CometChatAddMembers] getUsers getLoggedInUser error", error); }); } @@ -205,6 +208,7 @@ class CometChatAddMembers extends React.Component { this.props.actionGenerated("addGroupParticipants", membersToAdd); } this.props.close(); + }).catch(error => { console.log("addMembersToGroup failed with exception:", error); }); @@ -240,6 +244,7 @@ class CometChatAddMembers extends React.Component {
- +
- + {messageContainer} {users} - +
Contacts{Translator.translate("USERS", this.props.lang)}
@@ -282,4 +287,15 @@ class CometChatAddMembers extends React.Component { } } +// Specifies the default values for props: +CometChatAddMembers.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +CometChatAddMembers.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default CometChatAddMembers; \ No newline at end of file diff --git a/CometChat/components/CometChatAddMembers/style.js b/CometChat/components/CometChatAddMembers/style.js index 2d5c3e48..3fb0fe64 100644 --- a/CometChat/components/CometChatAddMembers/style.js +++ b/CometChat/components/CometChatAddMembers/style.js @@ -64,13 +64,20 @@ export const modalTableStyle = () => { } } -export const tableCaptionStyle = () => { +export const tableCaptionStyle = (dir) => { + + const textAlignStyle = (dir === "rtl") ? { + textAlign: "right", + paddingRight: "32px", + } : { + textAlign: "left", + }; return { fontSize: "20px", marginBottom: "16px", fontWeight: "bold", - textAlign: "left", + ...textAlignStyle } } diff --git a/CometChat/components/CometChatBanMembers/index.js b/CometChat/components/CometChatBanMembers/index.js index 85b57651..07034e88 100644 --- a/CometChat/components/CometChatBanMembers/index.js +++ b/CometChat/components/CometChatBanMembers/index.js @@ -2,12 +2,12 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core' +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; import BanMemberView from "../BanMemberView"; import Backdrop from '../Backdrop'; - import GroupDetailContext from '../CometChatGroupDetail/context'; import { @@ -23,18 +23,23 @@ import { contactMsgTxtStyle } from "./style"; +import Translator from "../../resources/localization/translator"; +import { theme } from "../../resources/theme"; import clearIcon from "./resources/close.png"; class CometChatBanMembers extends React.Component { - decoratorMessage = "Loading..."; static contextType = GroupDetailContext; constructor(props) { + super(props); + + this.decoratorMessage = Translator.translate("LOADING", props.lang); + this.state = { membersToBan: [], - membersToUnBan: [] + membersToUnBan: [], } } @@ -84,6 +89,7 @@ class CometChatBanMembers extends React.Component { member={member} item={this.props.item} loggedinuser={group.loggedinuser} + lang={this.props.lang} widgetsettings={this.props.widgetsettings} actionGenerated={this.updateMembers} />); @@ -92,7 +98,7 @@ class CometChatBanMembers extends React.Component { let messageContainer = null; if (bannedMembers.length === 0) { - this.decoratorMessage = "No banned members found"; + this.decoratorMessage = Translator.translate("NO_BANNED_MEMBERS_FOUND", this.props.lang); messageContainer = (

{this.decoratorMessage}

@@ -103,16 +109,16 @@ class CometChatBanMembers extends React.Component { return ( -
- +
+
- + - - - + + + {messageContainer} @@ -125,4 +131,15 @@ class CometChatBanMembers extends React.Component { } } +// Specifies the default values for props: +CometChatBanMembers.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +CometChatBanMembers.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default CometChatBanMembers; \ No newline at end of file diff --git a/CometChat/components/CometChatBanMembers/style.js b/CometChat/components/CometChatBanMembers/style.js index 1bf9f217..a300e3f0 100644 --- a/CometChat/components/CometChatBanMembers/style.js +++ b/CometChat/components/CometChatBanMembers/style.js @@ -75,13 +75,21 @@ export const modalTableStyle = (props) => { } } -export const tableCaptionStyle = () => { +export const tableCaptionStyle = (dir) => { + + const textAlignStyle = (dir === "rtl") ? { + textAlign: "right", + paddingRight: "32px", + } : { + textAlign: "left", + }; + return { fontSize: "20px", marginBottom: "16px", fontWeight: "bold", - textAlign: "left", + ...textAlignStyle } } diff --git a/CometChat/components/CometChatConversationList/index.js b/CometChat/components/CometChatConversationList/index.js index ed329743..f52cdfb3 100644 --- a/CometChat/components/CometChatConversationList/index.js +++ b/CometChat/components/CometChatConversationList/index.js @@ -2,14 +2,15 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; -import { CometChatManager } from "../../util/controller"; import { ConversationListManager } from "./controller"; import { SvgAvatar } from '../../util/svgavatar'; import * as enums from '../../util/enums.js'; import { validateWidgetSettings } from "../../util/common"; +import Translator from "../../resources/localization/translator"; import ConversationView from "../ConversationView"; @@ -32,7 +33,6 @@ import { incomingOtherMessageAlert } from "../../resources/audio/"; class CometChatConversationList extends React.Component { loggedInUser = null; - decoratorMessage = "Loading..."; constructor(props) { @@ -41,12 +41,23 @@ class CometChatConversationList extends React.Component { this.state = { conversationlist: [], onItemClick: null, - selectedConversation: undefined + selectedConversation: undefined, + lang: props.lang } - this.chatListRef = React.createRef(); - this.theme = Object.assign({}, theme, this.props.theme); + this.decoratorMessage = Translator.translate("LOADING", props.lang); + this.chatListRef = React.createRef(); this.audio = new Audio(incomingOtherMessageAlert); + + CometChat.getLoggedInUser().then((user) => { + + this.loggedInUser = user; + + }).catch((error) => { + + this.decoratorMessage = Translator.translate("ERROR", this.state.lang); + console.log("[CometChatConversationList] getConversations getLoggedInUser error", error); + }); } componentDidMount() { @@ -54,6 +65,8 @@ class CometChatConversationList extends React.Component { this.ConversationListManager = new ConversationListManager(); this.getConversations(); this.ConversationListManager.attachListeners(this.conversationUpdated); + + window.addEventListener('languagechange', this.setState({ lang: Translator.getLanguage() })); } componentDidUpdate(prevProps) { @@ -175,6 +188,10 @@ class CometChatConversationList extends React.Component { this.setState({ conversationlist: conversationList }); } } + + if (prevProps.lang !== this.props.lang) { + this.setState({ lang: this.props.lang }); + } } componentWillUnmount() { @@ -559,46 +576,37 @@ class CometChatConversationList extends React.Component { getConversations = () => { - new CometChatManager().getLoggedInUser().then(user => { - - this.loggedInUser = user; - this.ConversationListManager.fetchNextConversation().then(conversationList => { + this.ConversationListManager.fetchNextConversation().then(conversationList => { - if(conversationList.length === 0) { - this.decoratorMessage = "No chats found"; - } + if(conversationList.length === 0) { + this.decoratorMessage = Translator.translate("NO_CHATS_FOUND", this.state.lang); + } - conversationList.forEach(conversation => { + conversationList.forEach(conversation => { - if(conversation.conversationType === "user" && !conversation.conversationWith.avatar) { - conversation.conversationWith.avatar = this.setAvatar(conversation); - } else if(conversation.conversationType === "group" && !conversation.conversationWith.icon) { - conversation.conversationWith.icon = this.setAvatar(conversation); - } + if(conversation.conversationType === "user" && !conversation.conversationWith.avatar) { + conversation.conversationWith.avatar = this.setAvatar(conversation); + } else if(conversation.conversationType === "group" && !conversation.conversationWith.icon) { + conversation.conversationWith.icon = this.setAvatar(conversation); + } - - if (this.props.hasOwnProperty("type") && this.props.hasOwnProperty("item") && this.props.type === conversation.conversationType) { + + if (this.props.hasOwnProperty("type") && this.props.hasOwnProperty("item") && this.props.type === conversation.conversationType) { - if ((conversation.conversationType === "user" && this.props.item.uid === conversation.conversationWith.uid) || - (conversation.conversationType === "group" && this.props.item.guid === conversation.conversationWith.guid)) { + if ((conversation.conversationType === "user" && this.props.item.uid === conversation.conversationWith.uid) || + (conversation.conversationType === "group" && this.props.item.guid === conversation.conversationWith.guid)) { - conversation.unreadMessageCount = 0; - } + conversation.unreadMessageCount = 0; } - - }); - this.setState({ conversationlist: [...this.state.conversationlist, ...conversationList] }); - - }).catch(error => { - - this.decoratorMessage = "Error"; - console.error("[CometChatConversationList] getConversations fetchNext error", error); + } + }); + this.setState({ conversationlist: [...this.state.conversationlist, ...conversationList] }); }).catch(error => { - this.decoratorMessage = "Error"; - console.log("[CometChatConversationList] getConversations getLoggedInUser error", error); + this.decoratorMessage = Translator.translate("ERROR", this.state.lang); + console.error("[CometChatConversationList] getConversations fetchNext error", error); }); } @@ -626,8 +634,9 @@ class CometChatConversationList extends React.Component { return ( -

{this.decoratorMessage}

+

{this.decoratorMessage}

); } @@ -650,14 +658,13 @@ class CometChatConversationList extends React.Component { let closeBtn = (
); if (!this.props.hasOwnProperty("enableCloseMenu") || (this.props.hasOwnProperty("enableCloseMenu") && this.props.enableCloseMenu === 0)) { closeBtn = null; - } + } return (
-
+
{closeBtn} -

Chats

-
+

{Translator.translate("CHATS", this.state.lang)}

{messageContainer}
this.chatListRef = el}>{conversationList}
@@ -666,4 +673,15 @@ class CometChatConversationList extends React.Component { } } +// Specifies the default values for props: +CometChatConversationList.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +CometChatConversationList.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default CometChatConversationList; diff --git a/CometChat/components/CometChatConversationList/style.js b/CometChat/components/CometChatConversationList/style.js index d37f55ac..dd0e9812 100644 --- a/CometChat/components/CometChatConversationList/style.js +++ b/CometChat/components/CometChatConversationList/style.js @@ -27,7 +27,7 @@ export const chatsWrapperStyle = () => { export const chatsHeaderStyle = (theme) => { return { - padding: "19px 16px", + padding: "16px", display: "flex", alignItems: "center", borderBottom: `1px solid ${theme.color.darkSecondary}` @@ -60,10 +60,13 @@ export const chatsHeaderTitleStyle = (props) => { return { margin: "0", display: "inline-block", - width: "66%", + width: "100%", textAlign: "left", fontSize: "20px", - ...alignment + ...alignment, + "&[dir=rtl]": { + textAlign: "right", + } } } diff --git a/CometChat/components/CometChatConversationListScreen/index.js b/CometChat/components/CometChatConversationListScreen/index.js index 467bf041..75ff3c39 100644 --- a/CometChat/components/CometChatConversationListScreen/index.js +++ b/CometChat/components/CometChatConversationListScreen/index.js @@ -2,11 +2,13 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; import { CometChatManager } from "../../util/controller"; import * as enums from '../../util/enums.js'; +import Translator from "../../resources/localization/translator"; import CometChatConversationList from "../CometChatConversationList"; import CometChatMessageListScreen from "../CometChatMessageListScreen"; @@ -55,10 +57,9 @@ class CometChatConversationListScreen extends React.Component { sidebarview: false, imageView: null, groupmessage: {}, - lastmessage: {} + lastmessage: {}, + lang: props.lang } - - this.theme = Object.assign({}, theme, this.props.theme); } componentDidMount() { @@ -71,8 +72,16 @@ class CometChatConversationListScreen extends React.Component { this.loggedInUser = user; }).catch((error) => { console.log("[CometChatUnified] getLoggedInUser error", error); - }); + + window.addEventListener('languagechange', this.setState({ lang: Translator.getLanguage() })); + } + + componentDidUpdate(prevProps) { + + if (prevProps.lang !== this.props.lang) { + this.setState({ lang: this.props.lang }); + } } changeTheme = (e) => { @@ -186,7 +195,7 @@ class CometChatConversationListScreen extends React.Component { updateThreadMessage = (message, action) => { - if (this.state.threadmessageview === false) { + if (this.state.threadmessageview === false || message.id !== this.state.threadmessageparent.id) { return false; } @@ -426,7 +435,7 @@ class CometChatConversationListScreen extends React.Component { const messageList = []; members.forEach(eachMember => { - const message = `${this.loggedInUser.name} added ${eachMember.name}`; + const message = `${this.loggedInUser.name} ${Translator.translate("ADDED", this.state.lang)} ${eachMember.name}`; const sentAt = new Date() / 1000 | 0; const messageObj = { "category": "action", "message": message, "type": enums.ACTION_TYPE_GROUPMEMBER, "sentAt": sentAt }; messageList.push(messageObj); @@ -440,7 +449,7 @@ class CometChatConversationListScreen extends React.Component { const messageList = []; members.forEach(eachMember => { - const message = `${this.loggedInUser.name} unbanned ${eachMember.name}`; + const message = `${this.loggedInUser.name} ${Translator.translate("UNBANNED", this.state.lang)} ${eachMember.name}`; const sentAt = new Date() / 1000 | 0; const messageObj = { "category": "action", "message": message, "type": enums.ACTION_TYPE_GROUPMEMBER, "sentAt": sentAt }; messageList.push(messageObj); @@ -455,7 +464,7 @@ class CometChatConversationListScreen extends React.Component { members.forEach(eachMember => { - const message = `${this.loggedInUser.name} made ${eachMember.name} ${eachMember.scope}`; + const message = `${this.loggedInUser.name} ${Translator.translate("MADE", this.state.lang)} ${eachMember.name} ${eachMember.scope}`; const sentAt = new Date() / 1000 | 0; const messageObj = { "category": "action", "message": message, "type": enums.ACTION_TYPE_GROUPMEMBER, "sentAt": sentAt }; messageList.push(messageObj); @@ -469,14 +478,15 @@ class CometChatConversationListScreen extends React.Component { let threadMessageView = null; if(this.state.threadmessageview) { threadMessageView = ( -
+
); @@ -488,22 +498,24 @@ class CometChatConversationListScreen extends React.Component { if(this.state.type === "user") { detailScreen = ( -
+
); } else if (this.state.type === "group") { detailScreen = ( -
+
); @@ -514,7 +526,7 @@ class CometChatConversationListScreen extends React.Component { if(Object.keys(this.state.item).length) { messageScreen = ( ); } let imageView = null; if (this.state.imageView) { - imageView = ( this.toggleImageView(null)} message={this.state.imageView} />); + imageView = ( this.toggleImageView(null)} message={this.state.imageView} lang={this.state.lang} />); } return ( -
-
+
+
{ this.setState({password: event.target.value}) } @@ -61,12 +68,12 @@ class CometChatCreateGroup extends React.Component { const groupType = this.state.type.trim(); if(!groupName) { - this.setState({error: "Group name cannnot be blank."}) + this.setState({ error: Translator.translate("GROUP_NAME_BLANK", this.props.lang) }) return false; } if(!groupType) { - this.setState({error: "Group type cannnot be blank."}) + this.setState({ error: Translator.translate("GROUP_TYPE_BLANK", this.props.lang) }) return false; } @@ -75,7 +82,7 @@ class CometChatCreateGroup extends React.Component { password = this.state.password; if(!password.length) { - this.setState({error: "Group password cannnot be blank."}) + this.setState({ error: Translator.translate("GROUP_PASSWORD_BLANK", this.props.lang) }) return false; } } @@ -134,7 +141,7 @@ class CometChatCreateGroup extends React.Component {
- +
Banned Members{Translator.translate("BANNED_MEMBERS", this.props.lang)}
NameScopeUnban{Translator.translate("NAME", this.props.lang)}{Translator.translate("SCOPE", this.props.lang)}{Translator.translate("UNBAN", this.props.lang)}
- + @@ -162,7 +169,7 @@ class CometChatCreateGroup extends React.Component { autoComplete="off" css={inputStyle(this.props)} className="search__input" - placeholder="Enter group name" + placeholder={Translator.translate("ENTER_GROUP_NAME", this.props.lang)} type="text" tabIndex="1" onChange={this.nameChangeHandler} @@ -177,10 +184,10 @@ class CometChatCreateGroup extends React.Component { onChange={this.typeChangeHandler} value={this.state.type} tabIndex="2"> - - - - + + + + @@ -188,7 +195,7 @@ class CometChatCreateGroup extends React.Component { - +
Create Group{Translator.translate("CREATE_GROUP", this.props.lang)}
{this.state.error}
@@ -199,4 +206,13 @@ class CometChatCreateGroup extends React.Component { } } +// Specifies the default values for props: +CometChatCreateGroup.defaultProps = { + lang: Translator.getDefaultLanguage(), +}; + +CometChatCreateGroup.propTypes = { + lang: PropTypes.string, +} + export default CometChatCreateGroup; \ No newline at end of file diff --git a/CometChat/components/CometChatCreatePoll/index.js b/CometChat/components/CometChatCreatePoll/index.js index 52b43fea..6cae1fdf 100644 --- a/CometChat/components/CometChatCreatePoll/index.js +++ b/CometChat/components/CometChatCreatePoll/index.js @@ -2,10 +2,12 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; import { CometChatManager } from "../../util/controller"; +import Translator from "../../resources/localization/translator"; import Backdrop from '../Backdrop'; import CreatePollView from "../CreatePollView"; @@ -37,13 +39,13 @@ class CometChatCreatePoll extends React.Component { error: null, options: [] } + this.questionRef = React.createRef(); this.optionOneRef = React.createRef(); this.optionTwoRef = React.createRef(); this.optionRef = React.createRef(); - } - componentDidMount() { + new CometChatManager().getLoggedInUser().then(user => { this.loggedInUser = user; }).catch((error) => { @@ -90,13 +92,13 @@ class CometChatCreatePoll extends React.Component { if (question.length === 0) { - this.setState({ error: "Question cannnot be blank." }) + this.setState({ error: Translator.translate("POLL_QUESTION_BLANK", this.props.lang) }) return false; } if (firstOption.length === 0 || secondOption.length === 0) { - this.setState({ error: "Option cannnot be blank." }) + this.setState({ error: Translator.translate("POLL_OPTION_BLANK", this.props.lang) }) return false; } @@ -155,7 +157,6 @@ class CometChatCreatePoll extends React.Component { } else { this.setState({ error: "Error" }); } - }); } @@ -168,6 +169,7 @@ class CometChatCreatePoll extends React.Component { key={index} option={option} tabIndex={index+4} + lang={this.props.lang} optionChangeHandler={this.optionChangeHandler} removePollOption={this.removePollOption} /> ); @@ -186,34 +188,34 @@ class CometChatCreatePoll extends React.Component {
- +
- + {errorContainer} - + - + {pollOptionView} - + @@ -221,7 +223,7 @@ class CometChatCreatePoll extends React.Component { - +
Create Poll{Translator.translate("CREATE_POLL", this.props.lang)}
- +
- +
  - +
 
@@ -232,4 +234,13 @@ class CometChatCreatePoll extends React.Component { } } +// Specifies the default values for props: +CometChatCreatePoll.defaultProps = { + lang: Translator.getDefaultLanguage(), +}; + +CometChatCreatePoll.propTypes = { + lang: PropTypes.string, +} + export default CometChatCreatePoll; \ No newline at end of file diff --git a/CometChat/components/CometChatGroupDetail/index.js b/CometChat/components/CometChatGroupDetail/index.js index 65fce142..deb6ad46 100644 --- a/CometChat/components/CometChatGroupDetail/index.js +++ b/CometChat/components/CometChatGroupDetail/index.js @@ -2,13 +2,14 @@ import React from 'react'; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; import { CometChatManager } from "../../util/controller"; import { SvgAvatar } from '../../util/svgavatar'; - import * as enums from '../../util/enums.js'; +import { validateWidgetSettings } from "../../util/common"; import { GroupDetailManager } from "./controller"; import GroupDetailContext from './context'; @@ -16,9 +17,11 @@ import GroupDetailContext from './context'; import CometChatViewMembers from "../CometChatViewMembers"; import CometChatAddMembers from "../CometChatAddMembers"; import CometChatBanMembers from "../CometChatBanMembers"; - import SharedMediaView from "../SharedMediaView"; +import Translator from "../../resources/localization/translator"; +import { theme } from "../../resources/theme"; + import { detailStyle, headerStyle, @@ -400,7 +403,7 @@ class CometChatGroupDetail extends React.Component { let viewMembersBtn = (
-
this.clickHandler("viewmember", true)}>View Members
+
this.clickHandler("viewmember", true)}>{Translator.translate("VIEW_MEMBERS", this.props.lang)}
); @@ -408,13 +411,13 @@ class CometChatGroupDetail extends React.Component { if(this.props.item.scope === CometChat.GROUP_MEMBER_SCOPE.ADMIN) { addMembersBtn = (
-
this.clickHandler("addmember", true)}>Add Members
+
this.clickHandler("addmember", true)}>{Translator.translate("ADD_MEMBERS", this.props.lang)}
); deleteGroupBtn = (
- Delete and Exit + {Translator.translate("DELETE_AND_EXIT", this.props.lang)}
); } @@ -422,69 +425,62 @@ class CometChatGroupDetail extends React.Component { if(this.props.item.scope !== CometChat.GROUP_MEMBER_SCOPE.PARTICIPANT) { bannedMembersBtn = (
-
this.clickHandler("banmember", true)}>Banned Members
+
this.clickHandler("banmember", true)}>{Translator.translate("BANNED_MEMBERS", this.props.lang)}
); } let leaveGroupBtn = (
- Leave Group + {Translator.translate("LEAVE_GROUP", this.props.lang)}
); let sharedmediaView = ( - + ); - if(this.props.hasOwnProperty("widgetsettings") - && this.props.widgetsettings - && this.props.widgetsettings.hasOwnProperty("main")) { - - //if view_group_members is disabled in chatwidget - if(this.props.widgetsettings.main.hasOwnProperty("view_group_members") - && this.props.widgetsettings.main["view_group_members"] === false - && this.props.widgetsettings.main.hasOwnProperty("allow_kick_ban_members") - && this.props.widgetsettings.main["allow_kick_ban_members"] === false - && this.props.widgetsettings.main.hasOwnProperty("allow_promote_demote_members") - && this.props.widgetsettings.main["allow_promote_demote_members"] === false) { - viewMembersBtn = null; - } + //if viewing, kicking/banning, promoting/demoting group membersare disabled in chatwidget + if (validateWidgetSettings(this.props.widgetsettings, "view_group_members") === false + && validateWidgetSettings(this.props.widgetsettings, "allow_kick_ban_members") === false + && validateWidgetSettings(this.props.widgetsettings, "allow_promote_demote_members") === false) { + viewMembersBtn = null; + } - //if add_group_members is disabled in chatwidget - if(this.props.widgetsettings.main.hasOwnProperty("allow_add_members") - && this.props.widgetsettings.main["allow_add_members"] === false) { - addMembersBtn = null; - } + //if adding group members is disabled in chatwidget + if (validateWidgetSettings(this.props.widgetsettings, "allow_add_members") === false) { + addMembersBtn = null; + } - //if allow_kick_ban_members is disabled in chatwidget - if(this.props.widgetsettings.main.hasOwnProperty("allow_kick_ban_members") - && this.props.widgetsettings.main["allow_kick_ban_members"] === false) { - bannedMembersBtn = null; - } + //if kicking/banning/unbanning group members is disabled in chatwidget + if (validateWidgetSettings(this.props.widgetsettings, "allow_kick_ban_members") === false) { + bannedMembersBtn = null; + } - //if delete_group is disabled in chatwidget - if(this.props.widgetsettings.main.hasOwnProperty("allow_delete_groups") - && this.props.widgetsettings.main["allow_delete_groups"] === false) { - deleteGroupBtn = null; - } + //if deleting group is disabled in chatwidget + if (validateWidgetSettings(this.props.widgetsettings, "allow_delete_groups") === false) { + deleteGroupBtn = null; + } - //if leave_group is disabled in chatwidgets - if(this.props.widgetsettings.main.hasOwnProperty("join_or_leave_groups") - && this.props.widgetsettings.main["join_or_leave_groups"] === false) { - leaveGroupBtn = null; - } + //if leaving group is disabled in chatwidget + if (validateWidgetSettings(this.props.widgetsettings, "join_or_leave_groups") === false) { + leaveGroupBtn = null; + } - //if view_shared_media is disabled in chatwidget - if(this.props.widgetsettings.main.hasOwnProperty("view_shared_media") - && this.props.widgetsettings.main["view_shared_media"] === false) { - sharedmediaView = null; - } + //if viewing shared media group is disabled in chatwidget + if (validateWidgetSettings(this.props.widgetsettings, "view_shared_media") === false) { + sharedmediaView = null; } let members = (
-
Members
+
{Translator.translate("MEMBERS", this.props.lang)}
{viewMembersBtn} {addMembersBtn} @@ -495,7 +491,7 @@ class CometChatGroupDetail extends React.Component { let options = (
-
Options
+
{Translator.translate("OPTIONS", this.props.lang)}
{leaveGroupBtn} {deleteGroupBtn} @@ -517,6 +513,7 @@ class CometChatGroupDetail extends React.Component { this.clickHandler("viewmember", false)} widgetsettings={this.props.widgetsettings} @@ -530,6 +527,7 @@ class CometChatGroupDetail extends React.Component { this.clickHandler("addmember", false)} widgetsettings={this.props.widgetsettings} @@ -543,6 +541,7 @@ class CometChatGroupDetail extends React.Component { this.clickHandler("banmember", false)} widgetsettings={this.props.widgetsettings} @@ -554,29 +553,40 @@ class CometChatGroupDetail extends React.Component {
-
-
this.props.actionGenerated("closeDetailClicked")}>
-

Details

-
-
- {members} - {options} - {sharedmediaView} -
- {viewMembers} - {addMembers} - {bannedMembers} +
+
this.props.actionGenerated("closeDetailClicked")}>
+

{Translator.translate("DETAILS", this.props.lang)}

+
+
+ {members} + {options} + {sharedmediaView} +
+ {viewMembers} + {addMembers} + {bannedMembers}
); } } +// Specifies the default values for props: +CometChatGroupDetail.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +CometChatGroupDetail.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default CometChatGroupDetail; \ No newline at end of file diff --git a/CometChat/components/CometChatGroupList/index.js b/CometChat/components/CometChatGroupList/index.js index 940d1c03..47a82412 100644 --- a/CometChat/components/CometChatGroupList/index.js +++ b/CometChat/components/CometChatGroupList/index.js @@ -1,22 +1,19 @@ import React from "react"; /** @jsx jsx */ -import { jsx } from '@emotion/core' +import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; import { CometChatManager } from "../../util/controller"; import { SvgAvatar } from '../../util/svgavatar'; - import * as enums from '../../util/enums.js'; - +import { validateWidgetSettings } from "../../util/common"; import { GroupListManager } from "./controller"; - import CometChatCreateGroup from "../CometChatCreateGroup"; import GroupView from "../GroupView"; -import { theme } from "../../resources/theme"; - import { groupWrapperStyle, groupHeaderStyle, @@ -30,6 +27,9 @@ import { groupListStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import searchIcon from './resources/search-grey-icon.png'; import navigateIcon from './resources/navigate.png'; import addIcon from './resources/creategroup.png'; @@ -37,7 +37,6 @@ import addIcon from './resources/creategroup.png'; class CometChatGroupList extends React.Component { timeout; loggedInUser = null; - decoratorMessage = "Loading..."; constructor(props) { @@ -46,10 +45,12 @@ class CometChatGroupList extends React.Component { this.state = { grouplist: [], createGroup: false, - selectedGroup: null + selectedGroup: null, + lang: props.lang } + + this.decoratorMessage = Translator.translate("LOADING", props.lang); this.groupListRef = React.createRef(); - this.theme = Object.assign({}, theme, this.props.theme); } componentDidMount() { @@ -57,6 +58,8 @@ class CometChatGroupList extends React.Component { this.GroupListManager = new GroupListManager(); this.getGroups(); this.GroupListManager.attachListeners(this.groupUpdated); + + window.addEventListener('languagechange', this.setState({ lang: Translator.getLanguage() })); } componentDidUpdate(prevProps) { @@ -113,7 +116,7 @@ class CometChatGroupList extends React.Component { groups.splice(groupKey, 1); this.setState({grouplist: groups}); if(groups.length === 0) { - this.decoratorMessage = "No groups found"; + this.decoratorMessage = Translator.translate("NO_GROUPS_FOUND", this.state.lang); } } } @@ -135,6 +138,9 @@ class CometChatGroupList extends React.Component { } } + if (prevProps.lang !== this.props.lang) { + this.setState({ lang: this.props.lang }); + } } componentWillUnmount() { @@ -300,19 +306,15 @@ class CometChatGroupList extends React.Component { if (group.hasJoined === false) { - if(this.props.hasOwnProperty("widgetsettings") - && this.props.widgetsettings - && this.props.widgetsettings.hasOwnProperty("main") - && this.props.widgetsettings.main.hasOwnProperty("join_or_leave_groups") - && this.props.widgetsettings.main["join_or_leave_groups"] === false) { - + //if join or leave groups is disabled in chat widget + if (validateWidgetSettings(this.props.widgetsettings, "join_or_leave_groups") === false) { console.log("Group joining disabled in widget settings"); return false; } let password = ""; if(group.type === CometChat.GROUP_TYPE.PASSWORD) { - password = prompt("Enter your password"); + password = prompt(Translator.translate("ENTER_YOUR_PASSWORD", this.state.lang)); } const guid = group.guid; @@ -391,7 +393,7 @@ class CometChatGroupList extends React.Component { this.GroupListManager.fetchNextGroups().then(groupList => { if(groupList.length === 0) { - this.decoratorMessage = "No groups found"; + this.decoratorMessage = Translator.translate("NO_GROUPS_FOUND", this.state.lang); } groupList.forEach(group => group = this.setAvatar(group)); @@ -399,13 +401,13 @@ class CometChatGroupList extends React.Component { }).catch(error => { - this.decoratorMessage = "Error"; + this.decoratorMessage = Translator.translate("ERROR", this.state.lang); console.error("[CometChatGroupList] getGroups fetchNextGroups error", error); }); }).catch(error => { - this.decoratorMessage = "Error"; + this.decoratorMessage = Translator.translate("ERROR", this.state.lang); console.log("[CometChatGroupList] getUsers getLoggedInUser error", error); }); } @@ -445,7 +447,7 @@ class CometChatGroupList extends React.Component { if(this.state.grouplist.length === 0) { messageContainer = (
-

{this.decoratorMessage}

+

{this.decoratorMessage}

); } @@ -454,27 +456,24 @@ class CometChatGroupList extends React.Component { return ( ); }); - let creategroup = (
this.createGroupHandler(true)}> - Create Group + let creategroup = (
this.createGroupHandler(true)}> + {Translator.translate("CREATE_GROUP",
); - if(this.props.hasOwnProperty("config") - && this.props.config - && this.props.config.hasOwnProperty("group-create") - && this.props.config["group-create"] === false) { + + //if create group is disabled in v1 chat widget + if (validateWidgetSettings(this.props.config, "group-create") === false) { creategroup = null; } - if(this.props.hasOwnProperty("widgetsettings") - && this.props.widgetsettings - && this.props.widgetsettings.hasOwnProperty("main") - && this.props.widgetsettings.main.hasOwnProperty("create_groups") - && this.props.widgetsettings.main["create_groups"] === false) { + //if create group is disabled in chat widget + if (validateWidgetSettings(this.props.widgetsettings, "create_groups") === false) { creategroup = null; } @@ -485,24 +484,25 @@ class CometChatGroupList extends React.Component { return (
-
+
{closeBtn} -

Groups

+

{Translator.translate("GROUPS", this.state.lang)}

{creategroup}
{messageContainer}
this.groupListRef = el}>{groups}
this.createGroupHandler(false)} actionGenerated={this.createGroupActionHandler} /> @@ -511,4 +511,15 @@ class CometChatGroupList extends React.Component { } } +// Specifies the default values for props: +CometChatGroupList.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +CometChatGroupList.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default CometChatGroupList; \ No newline at end of file diff --git a/CometChat/components/CometChatGroupList/style.js b/CometChat/components/CometChatGroupList/style.js index bdc877c5..aa2a2fdb 100644 --- a/CometChat/components/CometChatGroupList/style.js +++ b/CometChat/components/CometChatGroupList/style.js @@ -27,7 +27,7 @@ export const groupWrapperStyle = () => { export const groupHeaderStyle = (theme) => { return { - padding: "19px 16px", + padding: "16px", position: "relative", display: "flex", justifyContent: "space-between", @@ -63,10 +63,13 @@ export const groupHeaderTitleStyle = (props) => { margin: "0", fontWeight: "700", display: "inline-block", - width: "66%", + width: "100%", textAlign: "left", fontSize: "20px", - ...alignment + ...alignment, + "&[dir=rtl]": { + textAlign: "right", + } } } diff --git a/CometChat/components/CometChatGroupListScreen/index.js b/CometChat/components/CometChatGroupListScreen/index.js index 72048123..5f055d75 100644 --- a/CometChat/components/CometChatGroupListScreen/index.js +++ b/CometChat/components/CometChatGroupListScreen/index.js @@ -2,11 +2,13 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; import { CometChatManager } from "../../util/controller"; import * as enums from '../../util/enums.js'; +import Translator from "../../resources/localization/translator"; import CometChatGroupList from "../CometChatGroupList"; import CometChatMessageListScreen from "../CometChatMessageListScreen"; @@ -52,10 +54,9 @@ class CometChatGroupListScreen extends React.Component { callmessage: {}, sidebarview: false, imageView: null, - groupmessage: {} + groupmessage: {}, + lang: props.lang } - - this.theme = Object.assign({}, theme, this.props.theme); } componentDidMount() { @@ -70,6 +71,15 @@ class CometChatGroupListScreen extends React.Component { console.log("[CometChatUnified] getLoggedInUser error", error); }); + + window.addEventListener('languagechange', this.setState({ lang: Translator.getLanguage() })); + } + + componentDidUpdate(prevProps) { + + if (prevProps.lang !== this.props.lang) { + this.setState({ lang: this.props.lang }); + } } changeTheme = (e) => { @@ -172,7 +182,7 @@ class CometChatGroupListScreen extends React.Component { updateThreadMessage = (message, action) => { - if (this.state.threadmessageview === false) { + if (this.state.threadmessageview === false|| message.id !== this.state.threadmessageparent.id) { return false; } @@ -449,14 +459,15 @@ class CometChatGroupListScreen extends React.Component { let threadMessageView = null; if(this.state.threadmessageview) { threadMessageView = ( -
+
); @@ -466,11 +477,12 @@ class CometChatGroupListScreen extends React.Component { if(this.state.viewdetailscreen) { detailScreen = ( -
+
); @@ -481,7 +493,7 @@ class CometChatGroupListScreen extends React.Component { if(Object.keys(this.state.item).length) { messageScreen = ( ); } let imageView = null; if (this.state.imageView) { - imageView = ( this.toggleImageView(null)} message={this.state.imageView} />); + imageView = ( this.toggleImageView(null)} message={this.state.imageView} lang={this.state.lang} />); } return ( -
-
+
+
{ @@ -109,8 +118,13 @@ class CometChatMessageListScreen extends React.PureComponent { this.props.actionGenerated("messageComposed", messages); break; } - case "messageUpdated": + case "onMessageEdited": { + this.updateMessages(messages); + //update the parent message of thread message + this.props.actionGenerated("updateThreadMessage", messages, "edit"); + + } break; case "messageFetched": this.prependMessages(messages); @@ -118,8 +132,13 @@ class CometChatMessageListScreen extends React.PureComponent { case "messageFetchedAgain": this.prependMessagesAndScrollBottom(messages); break; - case "messageDeleted": + case "messageDeleted": { + this.removeMessages(messages); + //remove the thread message + this.props.actionGenerated("updateThreadMessage", messages, "delete"); + + } break; case "viewMessageThread": this.props.actionGenerated("viewMessageThread", messages); @@ -203,6 +222,11 @@ class CometChatMessageListScreen extends React.PureComponent { const messageId = message.id; CometChat.deleteMessage(messageId).then(deletedMessage => { + + //remove edit preview when message is deleted + if (deletedMessage.id === this.state.messageToBeEdited.id) { + this.setState({ messageToBeEdited: "" }); + } this.removeMessages([deletedMessage]); @@ -381,9 +405,10 @@ class CometChatMessageListScreen extends React.PureComponent { let messageComposer = ( { this.composerRef = el; } } - theme={this.theme} + theme={this.props.theme} item={this.props.item} type={this.props.type} + lang={this.state.lang} widgetsettings={this.props.widgetsettings} loggedInUser={this.props.loggedInUser} messageToBeEdited={this.state.messageToBeEdited} @@ -402,18 +427,19 @@ class CometChatMessageListScreen extends React.PureComponent { if (this.state.liveReaction) { liveReactionView = (
- +
); } return ( -
+
this.props.actionGenerated("itemClicked", type, item)} />; @@ -53,6 +55,7 @@ class Navbar extends React.Component { theme={this.props.theme} item={this.props.item} type={this.props.type} + lang={this.props.lang} groupToUpdate={this.props.groupToUpdate} messageToMarkRead={this.props.messageToMarkRead} lastMessage={this.props.lastMessage} @@ -64,6 +67,7 @@ class Navbar extends React.Component { theme={this.props.theme} item={this.props.item} type={this.props.type} + lang={this.props.lang} groupToLeave={this.props.groupToLeave} groupToDelete={this.props.groupToDelete} groupToUpdate={this.props.groupToUpdate} @@ -73,14 +77,13 @@ class Navbar extends React.Component { case "info": return this.props.actionGenerated("itemClicked", type, item)} />; default: return null; } - } - render() { const chatsTabActive = (this.props.tab === "conversations") ? true : false; @@ -94,23 +97,45 @@ class Navbar extends React.Component {
this.props.actionGenerated('tabChanged', 'conversations')}> -
+
this.props.actionGenerated('tabChanged', 'contacts')}> -
+
this.props.actionGenerated('tabChanged', 'groups')}> -
+
this.props.actionGenerated('tabChanged', 'info')}> -
+
) - } } +// Specifies the default values for props: +Navbar.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +Navbar.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default Navbar; \ No newline at end of file diff --git a/CometChat/components/CometChatUnified/index.js b/CometChat/components/CometChatUnified/index.js index f5bd8ff9..3363a8a7 100644 --- a/CometChat/components/CometChatUnified/index.js +++ b/CometChat/components/CometChatUnified/index.js @@ -2,11 +2,13 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; import { CometChatManager } from "../../util/controller"; import * as enums from '../../util/enums.js'; +import Translator from "../../resources/localization/translator"; import NavBar from "./NavBar"; import CometChatMessageListScreen from "../CometChatMessageListScreen"; @@ -55,19 +57,17 @@ class CometChatUnified extends React.Component { sidebarview: false, imageView: null, groupmessage: {}, - lastmessage: {} + lastmessage: {}, + lang: props.lang, } - new CometChatManager().getLoggedInUser().then((user) => { + CometChat.getLoggedInUser().then((user) => { this.loggedInUser = user; }).catch((error) => { console.log("[CometChatUnified] getLoggedInUser error", error); - }); - - this.theme = Object.assign({}, theme, this.props.theme); - } + } componentDidMount() { @@ -75,14 +75,14 @@ class CometChatUnified extends React.Component { this.toggleSideBar(); } - // new CometChatManager().getLoggedInUser().then((user) => { - // this.loggedInUser = user; + window.addEventListener('languagechange', this.setState({ lang: Translator.getLanguage() })); + } - // }).catch((error) => { - // console.log("[CometChatUnified] getLoggedInUser error", error); - - // }); - + componentDidUpdate(prevProps) { + + if (prevProps.lang !== this.props.lang) { + this.setState({ lang: this.props.lang }); + } } changeTheme = (e) => { @@ -219,7 +219,7 @@ class CometChatUnified extends React.Component { updateThreadMessage = (message, action) => { - if (this.state.threadmessageview === false) { + if (this.state.threadmessageview === false || message.id !== this.state.threadmessageparent.id) { return false; } @@ -504,14 +504,15 @@ class CometChatUnified extends React.Component { let threadMessageView = null; if(this.state.threadmessageview) { threadMessageView = ( -
+
); @@ -523,11 +524,12 @@ class CometChatUnified extends React.Component { if(this.state.type === "user") { detailScreen = ( -
+
); @@ -535,11 +537,12 @@ class CometChatUnified extends React.Component { } else if (this.state.type === "group") { detailScreen = ( -
+
); @@ -550,7 +553,7 @@ class CometChatUnified extends React.Component { if(Object.keys(this.state.item).length) { messageScreen = ( ); } let imageView = null; if (this.state.imageView) { - imageView = ( this.toggleImageView(null)} message={this.state.imageView} />); + imageView = ( this.toggleImageView(null)} message={this.state.imageView} lang={this.state.lang} />); } - + return ( -
-
+
+
@@ -587,12 +592,14 @@ class CometChatUnified extends React.Component { {detailScreen} {threadMessageView} this.props.actionGenerated("unblockUser")}>Unblock User
+
this.props.actionGenerated("unblockUser")}>{Translator.translate("UNBLOCK_USER", this.props.lang)}
); } else { blockUserText = ( -
this.props.actionGenerated("blockUser")}>Block User
+
this.props.actionGenerated("blockUser")}>{Translator.translate("BLOCK_USER", this.props.lang)}
); } let blockUserView = (
-
Options
+
{Translator.translate("OPTIONS", this.props.lang)}
{blockUserText}
@@ -45,31 +48,30 @@ class CometChatUserDetail extends React.Component { ); let sharedmediaView = ( - + ); - if(this.props.hasOwnProperty("widgetsettings") - && this.props.widgetsettings - && this.props.widgetsettings.hasOwnProperty("main")) { - - //if block_user is disabled in chatwidget - if(this.props.widgetsettings.main.hasOwnProperty("block_user") - && this.props.widgetsettings.main["block_user"] === false) { - blockUserView = null; - } + //if block/unblock user is disabled in chat widget + if (validateWidgetSettings(this.props.widgetsettings, "block_user") === false) { + blockUserView = null; + } - //if view_shared_media is disabled in chatwidget - if(this.props.widgetsettings.main.hasOwnProperty("view_shared_media") - && this.props.widgetsettings.main["view_shared_media"] === false) { - sharedmediaView = null; - } + //if shared media is disabled in chat widget + if (validateWidgetSettings(this.props.widgetsettings, "view_shared_media") === false) { + sharedmediaView = null; } return (
this.props.actionGenerated("closeDetailClicked")}>
-

Details

+

{Translator.translate("DETAILS", this.props.lang)}

{blockUserView} @@ -80,4 +82,13 @@ class CometChatUserDetail extends React.Component { } } +// Specifies the default values for props: +CometChatUserDetail.defaultProps = { + lang: Translator.getDefaultLanguage(), +}; + +CometChatUserDetail.propTypes = { + lang: PropTypes.string +} + export default CometChatUserDetail; \ No newline at end of file diff --git a/CometChat/components/CometChatUserInfoScreen/index.js b/CometChat/components/CometChatUserInfoScreen/index.js index 06a4d370..ac0111b7 100644 --- a/CometChat/components/CometChatUserInfoScreen/index.js +++ b/CometChat/components/CometChatUserInfoScreen/index.js @@ -2,13 +2,12 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChatManager } from "../../util/controller"; import { SvgAvatar } from '../../util/svgavatar'; import Avatar from "../Avatar"; -import { theme } from "../../resources/theme"; - import { userInfoScreenStyle, headerStyle, @@ -25,13 +24,15 @@ import { optionNameStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import notificationIcon from "./resources/notification-black-icon.svg"; import privacyIcon from "./resources/privacy-black-icon.svg"; import chatIcon from "./resources/chat-black-icon.svg"; import helpIcon from "./resources/help-black-icon.svg"; import reportIcon from "./resources/report-black-icon.svg"; - class CometChatUserInfoScreen extends React.Component { constructor(props) { @@ -41,8 +42,6 @@ class CometChatUserInfoScreen extends React.Component { this.state = { user: {}, } - - this.theme = Object.assign({}, theme, this.props.theme); } componentDidMount() { @@ -69,52 +68,47 @@ class CometChatUserInfoScreen extends React.Component { const char = user.getName().charAt(0).toUpperCase(); user.setAvatar(SvgAvatar.getAvatar(uid, char)) } - } render() { let avatar = null; if(Object.keys(this.state.user).length) { - avatar = (); + avatar = (); } return ( -
-
-

More

+
+
+

{Translator.translate("MORE", this.props.lang)}

{avatar}
-
+
{this.state.user.name}
-

Online

+

{Translator.translate("ONLINE", this.props.lang)}

-
Preferences
+
{Translator.translate("PREFERENCES", this.props.lang)}
-
Notifications
+
{Translator.translate("NOTIFICATIONS", this.props.lang)}
-
Privacy and Security
+
{Translator.translate("PRIVACY_AND_SECURITY", this.props.lang)}
-
Chats
+
{Translator.translate("CHATS", this.props.lang)}
-
Other
+
{Translator.translate("OTHER", this.props.lang)}
-
Help
+
{Translator.translate("HELP", this.props.lang)}
-
Report a Problem
+
{Translator.translate("REPORT_PROBLEM", this.props.lang)}
@@ -123,4 +117,15 @@ class CometChatUserInfoScreen extends React.Component { } } +// Specifies the default values for props: +CometChatUserInfoScreen.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +CometChatUserInfoScreen.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default CometChatUserInfoScreen; \ No newline at end of file diff --git a/CometChat/components/CometChatUserInfoScreen/style.js b/CometChat/components/CometChatUserInfoScreen/style.js index 86236968..3cc1f0d3 100644 --- a/CometChat/components/CometChatUserInfoScreen/style.js +++ b/CometChat/components/CometChatUserInfoScreen/style.js @@ -15,7 +15,7 @@ export const userInfoScreenStyle = (theme) =>{ export const headerStyle = (theme) => { return { - padding: "19px 16px", + padding: "16px", position: "relative", borderBottom: `1px solid ${theme.borderColor.primary}` } @@ -33,7 +33,7 @@ export const headerTitleStyle = () => { export const detailStyle = () => { return { - padding: "19px 16px", + padding: "16px", display: "flex", flexDirection: "row", justifyContent: "left", @@ -56,7 +56,11 @@ export const userDetailStyle = () => { return { width: "calc(100% - 45px)", flexGrow: "1", - paddingLeft: "15px", + paddingLeft: "16px", + "&[dir=rtl]": { + paddingRight: "16px", + paddingLeft: "0", + } } } diff --git a/CometChat/components/CometChatUserList/index.js b/CometChat/components/CometChatUserList/index.js index 0a82165a..780fa06f 100644 --- a/CometChat/components/CometChatUserList/index.js +++ b/CometChat/components/CometChatUserList/index.js @@ -1,7 +1,8 @@ import React from "react"; /** @jsx jsx */ -import { jsx } from '@emotion/core' +import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChatManager } from "../../util/controller"; import { SvgAvatar } from '../../util/svgavatar'; @@ -9,8 +10,6 @@ import { UserListManager } from "./controller"; import UserView from "../UserView"; -import { theme } from "../../resources/theme"; - import { contactWrapperStyle, contactHeaderStyle, @@ -24,13 +23,14 @@ import { contactAlphabetStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; import searchIcon from './resources/search-grey-icon.png'; import navigateIcon from './resources/navigate.png'; class CometChatUserList extends React.PureComponent { timeout; friendsOnly = false; - decoratorMessage = "Loading..."; constructor(props) { @@ -38,14 +38,20 @@ class CometChatUserList extends React.PureComponent { this.state = { userlist: [], - selectedUser: null + selectedUser: null, + lang: props.lang } + + this.decoratorMessage = Translator.translate("LOADING", props.lang); this.userListRef = React.createRef(); - this.theme = Object.assign({}, theme, this.props.theme); } componentDidMount() { + window.addEventListener('languagechange', () => { + this.setState({ lang: Translator.getLanguage() }); + }); + if(this.props.hasOwnProperty("friendsOnly")) { this.friendsOnly = this.props.friendsOnly; } @@ -114,6 +120,10 @@ class CometChatUserList extends React.PureComponent { this.setState({ userlist: userlist }); } } + + if (prevProps.lang !== this.props.lang) { + this.setState({ lang: this.props.lang }); + } } componentWillUnmount() { @@ -188,7 +198,7 @@ class CometChatUserList extends React.PureComponent { this.UserListManager.fetchNextUsers().then((userList) => { if(userList.length === 0) { - this.decoratorMessage = "No users found"; + this.decoratorMessage = Translator.translate("NO_USERS_FOUND", this.state.lang); } userList.forEach(user => user = this.setAvatar(user)); @@ -196,13 +206,13 @@ class CometChatUserList extends React.PureComponent { }).catch((error) => { - this.decoratorMessage = "Error"; + this.decoratorMessage = Translator.translate("ERROR", this.state.lang); console.error("[CometChatUserList] getUsers fetchNext error", error); }); }).catch((error) => { - this.decoratorMessage = "Error"; + this.decoratorMessage = Translator.translate("ERROR", this.state.lang); console.log("[CometChatUserList] getUsers getLoggedInUser error", error); }); } @@ -224,7 +234,7 @@ class CometChatUserList extends React.PureComponent { if(this.state.userlist.length === 0) { messageContainer = (
-

{this.decoratorMessage}

+

{this.decoratorMessage}

); } @@ -246,9 +256,10 @@ class CometChatUserList extends React.PureComponent { {firstChar} @@ -263,18 +274,18 @@ class CometChatUserList extends React.PureComponent { return (
-
+
{closeBtn} -

Contacts

+

{Translator.translate("USERS", this.state.lang)}

{messageContainer} @@ -284,4 +295,15 @@ class CometChatUserList extends React.PureComponent { } } +// Specifies the default values for props: +CometChatUserList.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +CometChatUserList.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default CometChatUserList; diff --git a/CometChat/components/CometChatUserList/style.js b/CometChat/components/CometChatUserList/style.js index 8162e347..8a1723a9 100644 --- a/CometChat/components/CometChatUserList/style.js +++ b/CometChat/components/CometChatUserList/style.js @@ -26,7 +26,7 @@ export const contactWrapperStyle = () => { export const contactHeaderStyle = (theme) => { return { - padding: "19px 16px", + padding: "16px", position: "relative", display: "flex", alignItems: "center", @@ -61,10 +61,13 @@ export const contactHeaderTitleStyle = (props) => { margin: "0", fontWeight: "700", display: "inline-block", - width: "66%", + width: "100%", textAlign: "left", fontSize: "20px", - ...alignment + ...alignment, + "&[dir=rtl]": { + textAlign: "right", + } } } @@ -129,7 +132,7 @@ export const contactListStyle = () => { export const contactAlphabetStyle = () => { return { - padding: "0 15px", + padding: "0 16px", margin: "5px 0", width: "100%", fontSize: "14px" diff --git a/CometChat/components/CometChatUserListScreen/index.js b/CometChat/components/CometChatUserListScreen/index.js index 083966d8..1bfe61aa 100644 --- a/CometChat/components/CometChatUserListScreen/index.js +++ b/CometChat/components/CometChatUserListScreen/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; @@ -15,8 +16,6 @@ import CallAlert from "../CallAlert"; import CallScreen from "../CallScreen"; import ImageView from "../ImageView"; -import { theme } from "../../resources/theme"; - import { userScreenStyle, userScreenSidebarStyle, @@ -24,6 +23,9 @@ import { userScreenSecondaryStyle } from "./style" +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + class CometChatUserListScreen extends React.Component { loggedInUser = null; @@ -48,9 +50,8 @@ class CometChatUserListScreen extends React.Component { callmessage: {}, sidebarview: false, imageView: null, + lang: props.lang } - - this.theme = Object.assign({}, theme, this.props.theme); } componentDidMount() { @@ -67,6 +68,13 @@ class CometChatUserListScreen extends React.Component { }); } + componentDidUpdate(prevProps) { + + if (prevProps.lang !== this.props.lang) { + this.setState({ lang: this.props.lang }); + } + } + changeTheme = (e) => { const theme = this.state.darktheme; @@ -147,7 +155,7 @@ class CometChatUserListScreen extends React.Component { updateThreadMessage = (message, action) => { - if (this.state.threadmessageview === false) { + if (this.state.threadmessageview === false || message.id !== this.state.threadmessageparent.id) { return false; } @@ -346,14 +354,15 @@ class CometChatUserListScreen extends React.Component { let threadMessageView = null; if(this.state.threadmessageview) { threadMessageView = ( -
+
); @@ -362,11 +371,12 @@ class CometChatUserListScreen extends React.Component { let detailScreen; if(this.state.viewdetailscreen) { detailScreen = ( -
+
); } @@ -374,28 +384,30 @@ class CometChatUserListScreen extends React.Component { let messageScreen = null; if(Object.keys(this.state.item).length) { messageScreen = (); } let imageView = null; if (this.state.imageView) { - imageView = ( this.toggleImageView(null)} message={this.state.imageView} />); + imageView = ( this.toggleImageView(null)} message={this.state.imageView} lang={this.state.lang} />); } return ( -
-
+
+
@@ -404,15 +416,17 @@ class CometChatUserListScreen extends React.Component { {detailScreen} {threadMessageView} {imageView}
@@ -420,4 +434,15 @@ class CometChatUserListScreen extends React.Component { } } +// Specifies the default values for props: +CometChatUserListScreen.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +CometChatUserListScreen.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default CometChatUserListScreen; diff --git a/CometChat/components/CometChatViewMembers/index.js b/CometChat/components/CometChatViewMembers/index.js index 49129b67..cc3c4596 100644 --- a/CometChat/components/CometChatViewMembers/index.js +++ b/CometChat/components/CometChatViewMembers/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core' +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; @@ -21,6 +22,8 @@ import { actionColumnStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; import clearIcon from "./resources/close.png"; class CometChatViewMembers extends React.Component { @@ -112,6 +115,7 @@ class CometChatViewMembers extends React.Component { key={key} member={member} item={this.props.item} + lang={this.props.lang} widgetsettings={this.props.widgetsettings} actionGenerated={this.updateMembers} />); }); @@ -121,8 +125,8 @@ class CometChatViewMembers extends React.Component { editAccess = ( - Ban - Kick + {Translator.translate("BAN", this.props.lang)} + {Translator.translate("KICK", this.props.lang)} ); @@ -141,14 +145,14 @@ class CometChatViewMembers extends React.Component {
- +
- + - - + + {editAccess} @@ -161,4 +165,15 @@ class CometChatViewMembers extends React.Component { } } +// Specifies the default values for props: +CometChatViewMembers.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +CometChatViewMembers.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default CometChatViewMembers; \ No newline at end of file diff --git a/CometChat/components/ConversationView/index.js b/CometChat/components/ConversationView/index.js index 510eeca8..dd7b9e66 100644 --- a/CometChat/components/ConversationView/index.js +++ b/CometChat/components/ConversationView/index.js @@ -1,7 +1,8 @@ import React from "react"; import dateFormat from "dateformat"; /** @jsx jsx */ -import { jsx } from '@emotion/core' +import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChat } from '@cometchat-pro/chat'; @@ -22,6 +23,9 @@ import { itemLastMsgTimeStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + class ConversationView extends React.Component { constructor(props) { @@ -30,7 +34,7 @@ class ConversationView extends React.Component { this.state = { lastMessage: "", - lastMessageTimestamp: "" + lastMessageTimestamp: "", } } @@ -47,7 +51,7 @@ class ConversationView extends React.Component { const previousItem = JSON.stringify(prevProps.conversation); const currentItem = JSON.stringify(this.props.conversation); - if (previousItem !== currentItem) { + if (previousItem !== currentItem || prevProps.lang !== this.props.lang) { const message = this.getLastMessage(); const timestamp = this.getLastMessageTimestamp(); @@ -71,7 +75,7 @@ class ConversationView extends React.Component { if (lastMessage.hasOwnProperty("deletedAt")) { - message = (this.props.loggedInUser.uid === lastMessage.sender.uid) ? "⚠ You deleted this message." : "⚠ This message was deleted."; + message = (this.props.loggedInUser.uid === lastMessage.sender.uid) ? `${Translator.translate("YOU_DELETED_THIS_MESSAGE", this.props.lang)}` : `${Translator.translate("THIS_MESSAGE_DELETED", this.props.lang)}`; } else { @@ -92,7 +96,6 @@ class ConversationView extends React.Component { break; } } - return message; } @@ -116,18 +119,19 @@ class ConversationView extends React.Component { const currentTimestamp = Date.now(); const diffTimestamp = currentTimestamp - messageTimestamp; - + if (diffTimestamp < 24 * 60 * 60 * 1000) { timestamp = dateFormat(messageTimestamp, "shortTime"); } else if (diffTimestamp < 48 * 60 * 60 * 1000) { - timestamp = "Yesterday"; + timestamp = Translator.translate("YESTERDAY", this.props.lang); } else if (diffTimestamp < 7 * 24 * 60 * 60 * 1000) { - timestamp = dateFormat(messageTimestamp, "dddd"); + timestamp = dateFormat(messageTimestamp, "dddd").toUpperCase(); + timestamp = Translator.translate(timestamp, this.props.lang); } else { @@ -140,23 +144,36 @@ class ConversationView extends React.Component { getCustomMessage = (lastMessage) => { let message = null; + const sender = (this.props.loggedInUser.uid !== lastMessage.sender.uid) ? `${lastMessage.sender.name}: ` : ``; + switch(lastMessage.type) { - case enums.CUSTOM_TYPE_POLL: - message = "📊 Poll"; - break; - case enums.CUSTOM_TYPE_STICKER: - message = "💟 Sticker"; - break; - case enums.CUSTOM_TYPE_DOCUMENT: - message = "📃 Document"; - break; - case enums.CUSTOM_TYPE_WHITEBOARD: - message = "📝 Whiteboard"; - break; + case enums.CUSTOM_TYPE_POLL: { + + const pollMessage = Translator.translate("CUSTOM_MESSAGE_POLL", this.props.lang); + message = (lastMessage.receiverType === CometChat.RECEIVER_TYPE.GROUP) ? `${sender} ${pollMessage}` : `${pollMessage}`; + } + break; + case enums.CUSTOM_TYPE_STICKER: { + + const stickerMessage = Translator.translate("CUSTOM_MESSAGE_STICKER", this.props.lang); + message = (lastMessage.receiverType === CometChat.RECEIVER_TYPE.GROUP) ? `${sender} ${stickerMessage}` : `${stickerMessage}`; + } + break; + case enums.CUSTOM_TYPE_DOCUMENT: { + + const docMessage = Translator.translate("CUSTOM_MESSAGE_DOCUMENT", this.props.lang); + message = (lastMessage.receiverType === CometChat.RECEIVER_TYPE.GROUP) ? `${sender} ${docMessage}` : `${docMessage}`; + } + break; + case enums.CUSTOM_TYPE_WHITEBOARD: { + + const whiteboardMessage = Translator.translate("CUSTOM_MESSAGE_WHITEBOARD", this.props.lang); + message = (lastMessage.receiverType === CometChat.RECEIVER_TYPE.GROUP) ? `${sender} ${whiteboardMessage}` : `${whiteboardMessage}`; + } + break; default: - break; + break; } - return message; } @@ -190,37 +207,59 @@ class ConversationView extends React.Component { } return messageText; - } getMessage = (lastMessage) => { let message = null; + const sender = (this.props.loggedInUser.uid !== lastMessage.sender.uid) ? `${lastMessage.sender.name}: ` : ``; + switch (lastMessage.type) { - case CometChat.MESSAGE_TYPE.TEXT: - message = this.getTextMessage(lastMessage); - break; - case CometChat.MESSAGE_TYPE.MEDIA: - message = "Media message"; - break; - case CometChat.MESSAGE_TYPE.IMAGE: - message = "📷 Image "; - break - case CometChat.MESSAGE_TYPE.FILE: - message = "📁 File"; - break; - case CometChat.MESSAGE_TYPE.VIDEO: - message = "🎥 Video"; - break; - case CometChat.MESSAGE_TYPE.AUDIO: - message = "🎵 Audio"; - break; - case CometChat.MESSAGE_TYPE.CUSTOM: - message = "Custom message"; - break; + case CometChat.MESSAGE_TYPE.TEXT: { + + const textMessage = this.getTextMessage(lastMessage); + message = (lastMessage.receiverType === CometChat.RECEIVER_TYPE.GROUP) ? `${sender} ${textMessage}` : `${textMessage}`; + } + break; + case CometChat.MESSAGE_TYPE.MEDIA: { + + const mediaMessage = Translator.translate("MEDIA_MESSAGE", this.props.lang); + message = (lastMessage.receiverType === CometChat.RECEIVER_TYPE.GROUP) ? `${sender} ${mediaMessage}` : `${mediaMessage}`; + } + break; + case CometChat.MESSAGE_TYPE.IMAGE: { + + const imageMessage = Translator.translate("MESSAGE_IMAGE", this.props.lang); + message = (lastMessage.receiverType === CometChat.RECEIVER_TYPE.GROUP) ? `${sender} ${imageMessage}` : `${imageMessage}`; + } + break + case CometChat.MESSAGE_TYPE.FILE: { + + const fileMessage = Translator.translate("MESSAGE_FILE", this.props.lang); + message = (lastMessage.receiverType === CometChat.RECEIVER_TYPE.GROUP) ? `${sender} ${fileMessage}` : `${fileMessage}`; + } + break; + case CometChat.MESSAGE_TYPE.VIDEO: { + + const videoMessage = Translator.translate("MESSAGE_VIDEO", this.props.lang); + message = (lastMessage.receiverType === CometChat.RECEIVER_TYPE.GROUP) ? `${sender} ${videoMessage}` : `${videoMessage}`; + } + break; + case CometChat.MESSAGE_TYPE.AUDIO: { + + const audioMessage = Translator.translate("MESSAGE_AUDIO", this.props.lang); + message = (lastMessage.receiverType === CometChat.RECEIVER_TYPE.GROUP) ? `${sender} ${audioMessage}` : `${audioMessage}`; + } + break; + case CometChat.MESSAGE_TYPE.CUSTOM: { + + const customMessage = Translator.translate("CUSTOM_MESSAGE", this.props.lang); + message = (lastMessage.receiverType === CometChat.RECEIVER_TYPE.GROUP) ? `${sender} ${customMessage}` : `${customMessage}`; + } + break; default: - break; + break; } return message; @@ -229,19 +268,28 @@ class ConversationView extends React.Component { getCallMessage = (lastMessage) => { let message = null; + const sender = (this.props.loggedInUser.uid !== lastMessage.sender.uid) ? `${lastMessage.sender.name}: ` : ``; + switch (lastMessage.type) { - case CometChat.MESSAGE_TYPE.VIDEO: - message = "Video call"; - break; - case CometChat.MESSAGE_TYPE.AUDIO: - message = "Audio call"; - break; + case CometChat.MESSAGE_TYPE.VIDEO: { + + const videoMessage = Translator.translate("VIDEO_CALL", this.props.lang); + message = (lastMessage.receiverType === CometChat.RECEIVER_TYPE.GROUP) ? `${sender} ${videoMessage}` : `${videoMessage}`; + } + break; + case CometChat.MESSAGE_TYPE.AUDIO: { + + const audioMessage = Translator.translate("AUDIO_CALL", this.props.lang); + message = (lastMessage.receiverType === CometChat.RECEIVER_TYPE.GROUP) ? `${sender} ${audioMessage}` : `${audioMessage}`; + } + break; default: - break; + break; } return message; } + toggleTooltip = (event, flag) => { const elem = event.target; @@ -288,23 +336,17 @@ class ConversationView extends React.Component { + borderColor={this.props.theme.borderColor.primary} /> ); } return (
this.props.handleClick(this.props.conversation, this.props.conversationKey)}>
- + {presence}
-
+
this.toggleTooltip(event, true)} @@ -324,4 +366,15 @@ class ConversationView extends React.Component { } } +// Specifies the default values for props: +ConversationView.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +ConversationView.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default ConversationView; \ No newline at end of file diff --git a/CometChat/components/ConversationView/style.js b/CometChat/components/ConversationView/style.js index c5c5805a..4d60773e 100644 --- a/CometChat/components/ConversationView/style.js +++ b/CometChat/components/ConversationView/style.js @@ -11,11 +11,11 @@ export const listItem = (props) => { alignItems: "center", cursor: "pointer", width: "100%", - padding: "10px 20px", + padding: "8px 16px", ...selectedState, '&:hover': { backgroundColor: `${props.theme.backgroundColor.primary}` - } + }, } } @@ -34,7 +34,11 @@ export const itemDetailStyle = () => { return { width: "calc(100% - 45px)", flexGrow: "1", - paddingLeft: "15px", + paddingLeft: "16px", + "&[dir=rtl]": { + paddingRight: "16px", + paddingLeft: "0", + } } } diff --git a/CometChat/components/CreatePollView/index.js b/CometChat/components/CreatePollView/index.js index 6d72e5bb..a2aaeeb6 100644 --- a/CometChat/components/CreatePollView/index.js +++ b/CometChat/components/CreatePollView/index.js @@ -1,10 +1,12 @@ /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; +import { iconWrapperStyle } from "../CometChatCreatePoll/style"; import { removeOptionIconStyle } from "./style"; +import Translator from "../../resources/localization/translator"; import removeIcon from "./resources/remove.png"; -import { iconWrapperStyle } from "../CometChatCreatePoll/style"; const createpollview = (props) => { @@ -17,7 +19,7 @@ const createpollview = (props) => { tabIndex={props.tabIndex} type="text" autoComplete="off" - placeholder="Enter your option" + placeholder={Translator.translate("ENTER_YOUR_OPTION", props.lang)} value={props.value} onChange={(event) => props.optionChangeHandler(event, props.option)} /> @@ -28,4 +30,13 @@ const createpollview = (props) => { ); } +// Specifies the default values for props: +createpollview.defaultProps = { + lang: Translator.getDefaultLanguage(), +}; + +createpollview.propTypes = { + lang: PropTypes.string, +} + export default createpollview; \ No newline at end of file diff --git a/CometChat/components/DeletedMessageBubble/index.js b/CometChat/components/DeletedMessageBubble/index.js index 281c6be9..39ac9fb8 100644 --- a/CometChat/components/DeletedMessageBubble/index.js +++ b/CometChat/components/DeletedMessageBubble/index.js @@ -2,6 +2,7 @@ import React from "react"; import dateFormat from "dateformat"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { SvgAvatar } from '../../util/svgavatar'; import Avatar from "../Avatar"; @@ -19,6 +20,9 @@ import { nameStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + const deletedmessagebubble = (props) => { let message = null; @@ -28,7 +32,7 @@ const deletedmessagebubble = (props) => { message = (
-

You deleted this message.

+

{Translator.translate("YOU_DELETED_THIS_MESSAGE", props.lang)}

{dateFormat(messageDate, "shortTime")} @@ -59,7 +63,10 @@ const deletedmessagebubble = (props) => { image={props.message.sender.avatar} />
) - name = (
{props.message.sender.name}
); + name = ( +
+ {props.message.sender.name} +
); } message = ( @@ -68,7 +75,7 @@ const deletedmessagebubble = (props) => {
{name}
-

This message was deleted.

+

{Translator.translate("THIS_MESSAGE_DELETED", props.lang)}

{dateFormat(messageDate, "shortTime")} @@ -85,4 +92,15 @@ const deletedmessagebubble = (props) => { ) } +// Specifies the default values for props: +deletedmessagebubble.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +deletedmessagebubble.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default deletedmessagebubble; \ No newline at end of file diff --git a/CometChat/components/EmojiView/index.js b/CometChat/components/EmojiView/index.js index a5fecda2..35fa9f27 100644 --- a/CometChat/components/EmojiView/index.js +++ b/CometChat/components/EmojiView/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from "@emotion/core"; +import PropTypes from 'prop-types'; import { Picker } from "emoji-mart"; @@ -9,25 +10,84 @@ import { pickerStyle } from "./style"; +import Translator from "../../resources/localization/translator"; + class EmojiView extends React.Component { + categories = {}; + title = ""; + + constructor(props) { + + super(props); + + const categories = { + people: Translator.translate("SMILEY_PEOPLE", props.lang), + nature: Translator.translate("ANIMALES_NATURE", props.lang), + foods: Translator.translate("FOOD_DRINK", props.lang), + activity: Translator.translate("ACTIVITY", props.lang), + places: Translator.translate("TRAVEL_PLACES", props.lang), + objects: Translator.translate("OBJECTS", props.lang), + symbols: Translator.translate("SYMBOLS", props.lang), + flags: Translator.translate("FLAGS", props.lang) + } + + const title = Translator.translate("PICK_YOUR_EMOJI", props.lang); + + this.state = { + categories: categories, + title: title + } + } + + componentDidUpdate(prevProps) { + + if(prevProps.lang !== this.props.lang) { + + const categories = { + search: Translator.translate("SEARCH", this.props.lang), + people: Translator.translate("SMILEY_PEOPLE", this.props.lang), + nature: Translator.translate("ANIMALES_NATURE", this.props.lang), + foods: Translator.translate("FOOD_DRINK", this.props.lang), + activity: Translator.translate("ACTIVITY", this.props.lang), + places: Translator.translate("TRAVEL_PLACES", this.props.lang), + objects: Translator.translate("OBJECTS", this.props.lang), + symbols: Translator.translate("SYMBOLS", this.props.lang), + flags: Translator.translate("FLAGS", this.props.lang) + } + + const title = Translator.translate("PICK_YOUR_EMOJI", this.props.lang); + + this.setState({ categories: { ...categories}, title: title }); + } + } + render() { const exclude = ["search", "recent"]; return(
); } +} + +// Specifies the default values for props: +EmojiView.defaultProps = { + lang: Translator.getDefaultLanguage(), +}; +EmojiView.propTypes = { + lang: PropTypes.string, } export default EmojiView; \ No newline at end of file diff --git a/CometChat/components/GroupView/index.js b/CometChat/components/GroupView/index.js index 3f1e4075..4dc5c3e9 100644 --- a/CometChat/components/GroupView/index.js +++ b/CometChat/components/GroupView/index.js @@ -1,5 +1,6 @@ /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import Avatar from "../Avatar"; @@ -13,6 +14,9 @@ import { listItemName } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import shieldIcon from "./resources/shield.png"; import lockIcon from "./resources/lock.png"; @@ -39,33 +43,40 @@ const groupview = (props) => { let groupTypeIcon = null; if(props.group.type === "private") { - groupTypeIcon = (Private Group); + groupTypeIcon = ({Translator.translate("PRIVATE_GROUP",); } else if(props.group.type === "password") { - groupTypeIcon = (Protected Group); + groupTypeIcon = ({Translator.translate("PROTECTED_GROUP",); } return (
props.clickHandler(props.group)}>
- +
-
+
toggleTooltip(event, true)} onMouseLeave={event => toggleTooltip(event, false)}>

{props.group.name}

{groupTypeIcon}
-
{props.group.membersCount} members
+
{`${props.group.membersCount} ${Translator.translate("MEMBERS", props.lang).toLowerCase()}`}
) } +// Specifies the default values for props: +groupview.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +groupview.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default groupview; \ No newline at end of file diff --git a/CometChat/components/GroupView/style.js b/CometChat/components/GroupView/style.js index cbc819aa..bd9c6b2f 100644 --- a/CometChat/components/GroupView/style.js +++ b/CometChat/components/GroupView/style.js @@ -11,7 +11,7 @@ export const listItem = (props) => { alignItems: "center", cursor: "pointer", width: "100%", - padding: "10px 20px", + padding: "8px 16px", ...selectedState, '&:hover': { backgroundColor: `${props.theme.backgroundColor.primary}` @@ -54,7 +54,11 @@ export const itemDetailStyle = () => { return { width: "calc(100% - 70px)", flexGrow: "1", - paddingLeft: "15px", + paddingLeft: "16px", + "&[dir=rtl]": { + paddingRight: "16px", + paddingLeft: "0", + } } } diff --git a/CometChat/components/ImageView/index.js b/CometChat/components/ImageView/index.js index a4a213d9..485539a5 100644 --- a/CometChat/components/ImageView/index.js +++ b/CometChat/components/ImageView/index.js @@ -2,6 +2,9 @@ import React, { useRef } from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; + +import Backdrop from "../Backdrop"; import { imageWrapperStyle, @@ -11,8 +14,6 @@ import { import srcIcon from "./resources/ring.svg"; import closeIcon from "./resources/close.png"; -import Backdrop from "../Backdrop"; - const ImageView = (props) => { let imgRef = useRef(); @@ -30,9 +31,22 @@ const ImageView = (props) => {
- Full Screen View { imgRef = el; }} /> + {srcIcon} { imgRef = el; }} />
) } + + +// Specifies the default values for props: +ImageView.defaultProps = { + count: 0, + close: () => { } +}; + +ImageView.propTypes = { + show: PropTypes.bool, + close: PropTypes.func, +} + export default ImageView; \ No newline at end of file diff --git a/CometChat/components/LinkPreview/index.js b/CometChat/components/LinkPreview/index.js index 01c2bc7a..e4658da5 100644 --- a/CometChat/components/LinkPreview/index.js +++ b/CometChat/components/LinkPreview/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { checkMessageForExtensionsData } from "../../util/common"; @@ -16,6 +17,9 @@ import { previewTextStyle, } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + class LinkPreview extends React.PureComponent { constructor(props) { @@ -34,7 +38,7 @@ class LinkPreview extends React.PureComponent { const linkObject = linkPreviewData["links"][0]; const pattern = /(http:|https:)?\/\/(www\.)?(youtube.com|youtu.be)(\S+)?/; - const linkText = (linkObject["url"].match(pattern)) ? "View on Youtube" : "Visit"; + const linkText = (linkObject["url"].match(pattern)) ? Translator.translate("VIEW_ON_YOUTUBE", this.props.lang) : Translator.translate("VISIT", this.props.lang); return (
@@ -54,4 +58,15 @@ class LinkPreview extends React.PureComponent { } } +// Specifies the default values for props: +LinkPreview.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +LinkPreview.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default LinkPreview; \ No newline at end of file diff --git a/CometChat/components/MemberView/index.js b/CometChat/components/MemberView/index.js index 21a92004..ad12283e 100644 --- a/CometChat/components/MemberView/index.js +++ b/CometChat/components/MemberView/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core' +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; @@ -22,6 +23,8 @@ import { scopeSelectionStyle } from "./style"; +import Translator from "../../resources/localization/translator"; + import scopeIcon from "./resources/edit.png"; import doneIcon from "./resources/done.png"; import clearIcon from "./resources/close.png"; @@ -42,15 +45,25 @@ class MemberView extends React.Component { defaultValue={this.props.member.scope}> ) + this.state = { + showChangeScope: false, + scope: null + } + this.roles = {} - this.roles[CometChat.GROUP_MEMBER_SCOPE.ADMIN] = "Administrator"; - this.roles[CometChat.GROUP_MEMBER_SCOPE.MODERATOR] = "Moderator"; - this.roles[CometChat.GROUP_MEMBER_SCOPE.PARTICIPANT] = "Participant"; + this.roles[CometChat.GROUP_MEMBER_SCOPE.ADMIN] = Translator.translate("ADMINISTRATOR", props.lang); + this.roles[CometChat.GROUP_MEMBER_SCOPE.MODERATOR] = Translator.translate("MODERATOR", props.lang); + this.roles[CometChat.GROUP_MEMBER_SCOPE.PARTICIPANT] = Translator.translate("PARTICIPANT", props.lang); } - - state = { - showChangeScope: false, - scope: null + + componentDidUpdate(prevProps) { + + if (prevProps.lang !== this.props.lang) { + + this.roles[CometChat.GROUP_MEMBER_SCOPE.ADMIN] = Translator.translate("ADMINISTRATOR", this.props.lang); + this.roles[CometChat.GROUP_MEMBER_SCOPE.MODERATOR] = Translator.translate("MODERATOR", this.props.lang); + this.roles[CometChat.GROUP_MEMBER_SCOPE.PARTICIPANT] = Translator.translate("PARTICIPANT", this.props.lang); + } } toggleChangeScope = (flag) => { @@ -94,8 +107,8 @@ class MemberView extends React.Component { let name = this.props.member.name; let scope = ({this.roles[this.props.member.scope]}); let changescope = null; - let ban = (Ban {this.props.actionGenerated("ban", this.props.member)}} />); - let kick = (Kick {this.props.actionGenerated("kick", this.props.member)}} />); + let ban = ({Translator.translate("BAN", {this.props.actionGenerated("ban", this.props.member)}} />); + let kick = ({Translator.translate("KICK", {this.props.actionGenerated("kick", this.props.member)}} />); if(this.state.showChangeScope) { @@ -126,8 +139,8 @@ class MemberView extends React.Component { className="scope__select" onChange={this.scopeChangeHandler} defaultValue={this.props.member.scope}>{options} - Change Scope - Change Scope this.toggleChangeScope(false)} /> + {Translator.translate("CHANGE_SCOPE", + {Translator.translate("CHANGE_SCOPE", this.toggleChangeScope(false)} />
); @@ -139,7 +152,7 @@ class MemberView extends React.Component { changescope = ( {scope} - Change Scope this.toggleChangeScope(true)} /> + {Translator.translate("CHANGE_SCOPE", this.toggleChangeScope(true)} /> ); } @@ -147,7 +160,7 @@ class MemberView extends React.Component { //disable change scope, kick, ban of group owner if(this.props.item.owner === this.props.member.uid) { - scope = ({"Owner"}); + scope = ({Translator.translate("OWNER", this.props.lang)}); changescope = scope; ban = null; kick = null; @@ -155,7 +168,7 @@ class MemberView extends React.Component { //disable change scope, kick, ban of self if(group.loggedinuser.uid === this.props.member.uid) { - name = "You"; + name = Translator.translate("YOU", this.props.lang); changescope = scope; ban = null; kick = null; @@ -197,14 +210,12 @@ class MemberView extends React.Component { //if kick_ban_members is disabled in chatwidget if (this.props.widgetsettings.main.hasOwnProperty("allow_kick_ban_members") && this.props.widgetsettings.main["allow_kick_ban_members"] === false) { - editAccess = null; } //if promote_demote_members is disabled in chatwidget if (this.props.widgetsettings.main.hasOwnProperty("allow_promote_demote_members") && this.props.widgetsettings.main["allow_promote_demote_members"] === false) { - changescope = scope; } } @@ -214,9 +225,7 @@ class MemberView extends React.Component { + borderColor={this.props.theme.borderColor.primary} /> ); return ( @@ -225,11 +234,7 @@ class MemberView extends React.Component { onMouseEnter={event => this.toggleTooltip(event, true)} onMouseLeave={event => this.toggleTooltip(event, false)}>
- + {userPresence}
{name}
@@ -241,4 +246,13 @@ class MemberView extends React.Component { } } +// Specifies the default values for props: +MemberView.defaultProps = { + lang: Translator.getDefaultLanguage(), +}; + +MemberView.propTypes = { + lang: PropTypes.string, +} + export default MemberView; \ No newline at end of file diff --git a/CometChat/components/MemberView/style.js b/CometChat/components/MemberView/style.js index 22f29cb9..57a9fdde 100644 --- a/CometChat/components/MemberView/style.js +++ b/CometChat/components/MemberView/style.js @@ -13,11 +13,6 @@ export const tableColumnStyle = () => { return { padding: "8px", - "img": { - width: "36px", - height: "36px", - float: "left", - } } } @@ -32,10 +27,9 @@ export const avatarStyle = (participantView) => { return { display: "inline-block", float: "left", - "span": { - top: "26px", - left: "-8px", - }, + width: "36px", + height: "36px", + marginRight: "8px", [mq[0]]: { ...displayProp } diff --git a/CometChat/components/MessageComposer/index.js b/CometChat/components/MessageComposer/index.js index 7b67de8b..9c2d864a 100644 --- a/CometChat/components/MessageComposer/index.js +++ b/CometChat/components/MessageComposer/index.js @@ -3,6 +3,7 @@ import React from "react"; /** @jsx jsx */ import { jsx, keyframes } from "@emotion/core"; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; @@ -38,6 +39,9 @@ import { stickerBtnStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import roundedPlus from "./resources/attach.png"; import videoIcon from "./resources/attachvideo.png"; import audioIcon from "./resources/attachaudio.png"; @@ -85,6 +89,13 @@ class MessageComposer extends React.PureComponent { this.audio = new Audio(outgoingMessageAlert); } + componentDidMount() { + + if (this.messageInputRef && this.messageInputRef.current) { + this.messageInputRef.current.focus(); + } + } + componentDidUpdate(prevProps, prevState) { if (prevProps.messageToBeEdited !== this.props.messageToBeEdited) { @@ -128,8 +139,13 @@ class MessageComposer extends React.PureComponent { } if (prevProps.item !== this.props.item) { + this.messageInputRef.current.textContent = ""; this.setState({ stickerViewer: false, emojiViewer: false, replyPreview: null, messageToBeEdited: "", messageInput: "" }); + + if (this.messageInputRef && this.messageInputRef.current) { + this.messageInputRef.current.focus(); + } } } @@ -683,12 +699,13 @@ class MessageComposer extends React.PureComponent { render() { let liveReactionBtn = null; + const liveReactionText = Translator.translate("LIVE_REACTION", this.props.lang); if (enums.LIVE_REACTIONS.hasOwnProperty(this.props.reaction)) { const reactionName = this.props.reaction; const imgSrc = enums.LIVE_REACTIONS[reactionName]; liveReactionBtn = ( -
+
{reactionName}
); @@ -699,86 +716,97 @@ class MessageComposer extends React.PureComponent { disabledState = true; } + const docText = Translator.translate("ATTACH_FILE", this.props.lang); let docs = (
{ this.openFileDialogue("file") }}> - Attach a file + {docText}
); + const videoText = Translator.translate("ATTACH_VIDEO", this.props.lang); + const audioText = Translator.translate("ATTACH_AUDIO", this.props.lang); + const imageText = Translator.translate("ATTACH_IMAGE", this.props.lang); let avp = ( -
{ this.openFileDialogue("video") }}> - Attach video +
{ this.openFileDialogue("video") }}> + {videoText}
-
{ this.openFileDialogue("audio") }}> - Attach audio +
{ this.openFileDialogue("audio") }}> + {audioText}
-
{ this.openFileDialogue("image") }}> - Attach an image +
{ this.openFileDialogue("image") }}> + {imageText}
); + const pollText = Translator.translate("CREATE_POLL", this.props.lang); let createPollBtn = (
- Create a poll + {pollText}
); + const collaborativeDocText = Translator.translate("COLLABORATE_USING_DOCUMENT", this.props.lang); let collaborativeDocBtn = (
- Collaborate using a document + {collaborativeDocText}
); + const collaborativeBoardText = Translator.translate("COLLABORATE_USING_WHITEBOARD", this.props.lang); let collaborativeBoardBtn = (
- Collaborate using a document + {collaborativeBoardText}
); + const emojiText = Translator.translate("EMOJI", this.props.lang); let emojiBtn = (
{ - this.toggleEmojiPicker(); - this.setState({ messageToReact: "" }); - }}>Insert Emoticon
+ this.toggleEmojiPicker(); + this.setState({ messageToReact: "" });}}> + {emojiText} +
); + const StickerText = Translator.translate("STICKER", this.props.lang); let stickerBtn = (
Add Sticker
+ onClick={this.toggleStickerPicker} > {StickerText}
); + const sendMessageText = Translator.translate("SEND_MESSAGE", this.props.lang); let sendBtn = ( -
- Send Message +
+ {sendMessageText}
); @@ -827,12 +855,13 @@ class MessageComposer extends React.PureComponent { sendBtn = null; } + const attachText = Translator.translate("ATTACH", this.props.lang); let attach = (
-
- Attach +
+ {attachText}
-
+
{avp} {docs} @@ -857,6 +886,7 @@ class MessageComposer extends React.PureComponent { type={this.props.type} open={this.state.createPoll} close={this.closeCreatePoll} + lang={this.props.lang} widgetsettings={this.props.widgetsettings} actionGenerated={this.actionHandler} /> ); @@ -898,7 +928,7 @@ class MessageComposer extends React.PureComponent { editPreview = (
-
Edit message
+
{Translator.translate("EDIT_MESSAGE", this.props.lang)}
{messageText}
@@ -929,6 +959,7 @@ class MessageComposer extends React.PureComponent { theme={this.props.theme} item={this.props.item} type={this.props.type} + lang={this.props.lang} widgetsettings={this.props.widgetsettings} actionGenerated={this.actionHandler} /> ); @@ -937,7 +968,7 @@ class MessageComposer extends React.PureComponent { let emojiViewer = null; if (this.state.emojiViewer) { emojiViewer = ( - + ); } @@ -953,8 +984,8 @@ class MessageComposer extends React.PureComponent { css={messageInputStyle(disabledState)} className="input__message-input" contentEditable="true" - placeholder="Enter your message here" - dir="ltr" + placeholder={Translator.translate("ENTER_YOUR_MESSAGE_HERE", this.props.lang)} + dir={Translator.getDirection(this.props.lang)} onInput={this.changeHandler} onBlur={this.endTyping} onKeyDown={this.sendMessageOnEnter} @@ -976,4 +1007,15 @@ class MessageComposer extends React.PureComponent { } } +// Specifies the default values for props: +MessageComposer.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +MessageComposer.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default MessageComposer; diff --git a/CometChat/components/MessageComposer/style.js b/CometChat/components/MessageComposer/style.js index 6e6dfe50..c90f1505 100644 --- a/CometChat/components/MessageComposer/style.js +++ b/CometChat/components/MessageComposer/style.js @@ -1,7 +1,7 @@ export const chatComposerStyle = (props) => { return { - padding: "14px 16px", + padding: "16px", backgroundColor: `${props.theme.backgroundColor.white}`, zIndex: "1", order: "3", @@ -172,7 +172,7 @@ export const attachmentIconStyle = () => { export const filePickerStyle = (state) => { const active = (state.showFilePicker) ? { - width: "100%", + width: "calc(100% - 100px)", opacity: "1", } : {}; @@ -186,7 +186,11 @@ export const filePickerStyle = (state) => { textAlign: "center", opacity: "0", transition: "width 0.5s linear", - ...active + ...active, + "&[dir=rtl]": { + left: "0", + right: "48px", + } } } @@ -197,9 +201,7 @@ export const fileListStyle = () => { display: "flex", flexDirection: "row", alignItems: "center", - "div:not(:last-of-type)": { - marginRight: "14px" - } + justifyContent: "space-between" } } @@ -234,27 +236,19 @@ export const stickyAttachButtonStyle = () => { export const stickyButtonStyle = (props, state) => { - const mq = [...props.theme.breakPoints]; - const active = (state.showFilePicker) ? { display: "none", } : { display: "flex", }; - return { display: "flex", alignItems: "center", - justifyContent: "space-between", - "div:not(:last-of-type)": { - marginRight: "14px" - }, + justifyContent: "space-around", cursor: "pointer", - maxWidth: "100px", - [`@media ${mq[0]}`]: { - ...active - } + width: "100px", + ...active } } diff --git a/CometChat/components/MessageHeader/index.js b/CometChat/components/MessageHeader/index.js index c9c313e2..d0480ea3 100644 --- a/CometChat/components/MessageHeader/index.js +++ b/CometChat/components/MessageHeader/index.js @@ -1,15 +1,16 @@ import React from "react"; import dateFormat from "dateformat"; /** @jsx jsx */ -import { jsx } from '@emotion/core' +import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { MessageHeaderManager } from "./controller"; import StatusIndicator from "../StatusIndicator"; import Avatar from "../Avatar"; import { SvgAvatar } from '../../util/svgavatar'; - import * as enums from '../../util/enums.js'; +import { validateWidgetSettings } from "../../util/common"; import { chatHeaderStyle, @@ -23,6 +24,9 @@ import { chatOptionStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import menuIcon from './resources/menuicon.png'; import audioCallIcon from './resources/audiocall.png'; import videoCallIcon from './resources/videocall.png'; @@ -57,18 +61,24 @@ class MessageHeader extends React.Component { this.MessageHeaderManager = new MessageHeaderManager(); this.MessageHeaderManager.attachListeners(this.updateHeader); - if (this.props.type === 'user' && prevProps.item.uid !== this.props.item.uid) { + if (this.props.type === 'user' + && (prevProps.item.uid !== this.props.item.uid + || (prevProps.item.uid === this.props.item.uid && prevProps.lang !== this.props.lang))) { + this.setStatusForUser(); + } else if (this.props.type === 'group' && (prevProps.item.guid !== this.props.item.guid - || (prevProps.item.guid === this.props.item.guid && prevProps.item.membersCount !== this.props.item.membersCount)) ) { + || (prevProps.item.guid === this.props.item.guid && prevProps.item.membersCount !== this.props.item.membersCount) + || (prevProps.item.guid === this.props.item.guid && prevProps.lang !== this.props.lang)) ) { + this.setStatusForGroup(); } } setStatusForUser = () => { - let status = this.props.item.status; + let status = ""; const presence = (this.props.item.status === "online") ? "online" : "offline"; if(this.props.item.status === "offline" && this.props.item.lastActiveAt) { @@ -76,9 +86,15 @@ class MessageHeader extends React.Component { const lastActive = (this.props.item.lastActiveAt * 1000); const messageDate = dateFormat(lastActive, "d mmmm yyyy, h:MM TT"); - status = "Last active at: " + messageDate; + status = `${Translator.translate("LAST_ACTIVE_AT", this.props.lang)} : ${messageDate}`; + } else if(this.props.item.status === "offline") { - status = "offline"; + + status = (Translator.translate("OFFLINE", this.props.lang)); + + } else if (this.props.item.status === "online") { + + status = (Translator.translate("ONLINE", this.props.lang)); } this.setState({status: status, presence: presence}); @@ -86,7 +102,8 @@ class MessageHeader extends React.Component { setStatusForGroup = () => { - const status = `${this.props.item.membersCount} members`; + let membersText = (Translator.translate("MEMBERS", this.props.lang)).toLowerCase(); + const status = `${this.props.item.membersCount} ${membersText}`; this.setState({status: status}); } @@ -104,12 +121,11 @@ class MessageHeader extends React.Component { case enums.USER_OFFLINE: { if(this.props.type === "user" && this.props.item.uid === item.uid) { - if(this.props.widgetsettings - && this.props.widgetsettings.hasOwnProperty("main") - && this.props.widgetsettings.main.hasOwnProperty("show_user_presence") - && this.props.widgetsettings.main["show_user_presence"] === false) { + //if user presence is disabled in chat widget + if (validateWidgetSettings(this.props.widgetsettings, "show_user_presence") === false) { return false; } + this.setState({ status: item.status, presence: item.status }); } break; @@ -122,7 +138,7 @@ class MessageHeader extends React.Component { && this.props.loggedInUser.uid !== groupUser.uid) { let membersCount = parseInt(item.membersCount); - const status = `${membersCount} members`; + const status = `${membersCount} ${Translator.translate("MEMBERS", this.props.lang).toLowerCase()}`; this.setState({status: status}); } break; @@ -130,7 +146,7 @@ class MessageHeader extends React.Component { if(this.props.type === "group" && this.props.item.guid === item.guid) { let membersCount = parseInt(item.membersCount); - const status = `${membersCount} members`; + const status = `${membersCount} ${(Translator.translate("MEMBERS", this.props.lang)).toLowerCase()}`; this.setState({status: status}); } break; @@ -138,7 +154,7 @@ class MessageHeader extends React.Component { if(this.props.type === "group" && this.props.item.guid === item.guid) { let membersCount = parseInt(item.membersCount); - const status = `${membersCount} members`; + const status = `${membersCount} ${(Translator.translate("MEMBERS", this.props.lang)).toLowerCase()}`; this.setState({status: status}); } break; @@ -146,15 +162,17 @@ class MessageHeader extends React.Component { if (this.props.type === "group" && this.props.type === item.receiverType && this.props.item.guid === item.receiverId) { - this.setState({ status: `${item.sender.name} is typing...` }); + const typingText = `${item.sender.name} ${Translator.translate("IS_TYPING", this.props.lang)}`; + this.setState({ status: typingText }); this.props.actionGenerated("showReaction", item); } else if (this.props.type === "user" && this.props.type === item.receiverType && this.props.item.uid === item.sender.uid) { - this.setState({ status: "typing..." }); + const typingText = `${Translator.translate("TYPING", this.props.lang)}`; + this.setState({ status: typingText }); this.props.actionGenerated("showReaction", item); - } + break; } case enums.TYPING_ENDED: { @@ -217,9 +235,7 @@ class MessageHeader extends React.Component { + borderColor={this.props.theme.borderColor.primary} /> ); } else { @@ -237,16 +253,21 @@ class MessageHeader extends React.Component { {this.state.status} ); - let audioCallBtn = ( -
this.props.actionGenerated("audioCall")} css={chatOptionStyle(audioCallIcon)}> - Voice call + const audioCallText = Translator.translate("AUDIO_CALL", this.props.lang); + let audioCallBtn = ( +
this.props.actionGenerated("audioCall")} css={chatOptionStyle(audioCallIcon)}> + {audioCallText}
); + + const videoCallText = Translator.translate("VIDEO_CALL", this.props.lang); let videoCallBtn = ( -
this.props.actionGenerated("videoCall")} css={chatOptionStyle(videoCallIcon)}> - Video call +
this.props.actionGenerated("videoCall")} css={chatOptionStyle(videoCallIcon)}> + {videoCallText}
); - let viewDetailBtn = (
this.props.actionGenerated("viewDetail")} css={chatOptionStyle(detailPaneIcon)}> - View detail + + const viewDetailText = Translator.translate("VIEW_DETAIL", this.props.lang); + let viewDetailBtn = (
this.props.actionGenerated("viewDetail")} css={chatOptionStyle(detailPaneIcon)}> + {viewDetailText}
); if(this.props.viewdetail === false) { @@ -261,24 +282,19 @@ class MessageHeader extends React.Component { videoCallBtn = null; } - if(this.props.widgetsettings && this.props.widgetsettings.hasOwnProperty("main")) { - - if(this.props.widgetsettings.main.hasOwnProperty("enable_voice_calling") - && this.props.widgetsettings.main["enable_voice_calling"] === false) { - audioCallBtn = null; - } + //if audiocall is disabled in chat widget + if (validateWidgetSettings(this.props.widgetsettings, "enable_voice_calling") === false) { + audioCallBtn = null; + } - if(this.props.widgetsettings.main.hasOwnProperty("enable_video_calling") - && this.props.widgetsettings.main["enable_video_calling"] === false) { - videoCallBtn = null; - } + //if videocall is disabled in chat widget + if (validateWidgetSettings(this.props.widgetsettings, "enable_video_calling") === false) { + videoCallBtn = null; + } - if(this.props.widgetsettings.main.hasOwnProperty("show_user_presence") - && this.props.widgetsettings.main["show_user_presence"] === false - && this.props.type === "user") { - status = null; - } - + //if user presence is disabled in chat widget + if (validateWidgetSettings(this.props.widgetsettings, "show_user_presence") === false && this.props.type === "user") { + status = null; } return ( @@ -286,11 +302,7 @@ class MessageHeader extends React.Component {
this.props.actionGenerated("menuClicked")}>
- + {presence}
@@ -310,4 +322,15 @@ class MessageHeader extends React.Component { } } +// Specifies the default values for props: +MessageHeader.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +MessageHeader.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default MessageHeader; \ No newline at end of file diff --git a/CometChat/components/MessageHeader/style.js b/CometChat/components/MessageHeader/style.js index 69d1e7cb..7bddd853 100644 --- a/CometChat/components/MessageHeader/style.js +++ b/CometChat/components/MessageHeader/style.js @@ -138,12 +138,9 @@ export const chatOptionWrapStyle = () => { return { display: "flex", flexDirection: "row", - justifyContent: "center", + justifyContent: "space-between", alignItems: "center", width: "110px", - "div:not(:last-of-type)": { - marginRight: "14px" - }, } } diff --git a/CometChat/components/MessageList/index.js b/CometChat/components/MessageList/index.js index a68b5639..38bd4eeb 100644 --- a/CometChat/components/MessageList/index.js +++ b/CometChat/components/MessageList/index.js @@ -1,13 +1,13 @@ import React from "react"; import dateFormat from "dateformat"; /** @jsx jsx */ -import { jsx } from '@emotion/core' +import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; import { CometChatManager } from "../../util/controller"; import { MessageListManager } from "./controller"; - import * as enums from "../../util/enums.js"; import { validateWidgetSettings } from "../../util/common"; @@ -33,6 +33,9 @@ import ReceiverWhiteboardBubble from "../ReceiverWhiteboardBubble"; import CallMessage from "../CallMessage"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import { chatListStyle, listWrapperStyle, @@ -48,7 +51,7 @@ class MessageList extends React.PureComponent { loggedInUser = null; lastScrollTop = 0; times = 0; - decoratorMessage = "Loading..."; + decoratorMessage = Translator.translate("LOADING", Translator.getDefaultLanguage()); constructor(props) { @@ -80,7 +83,7 @@ class MessageList extends React.PureComponent { if (this.props.type === 'user' && prevProps.item.uid !== this.props.item.uid) { - this.decoratorMessage = "Loading..."; + this.decoratorMessage = Translator.translate("LOADING", this.props.lang); this.MessageListManager.removeListeners(); if (this.props.parentMessageId) { @@ -94,7 +97,7 @@ class MessageList extends React.PureComponent { } else if (this.props.type === 'group' && prevProps.item.guid !== this.props.item.guid){ - this.decoratorMessage = "Loading..."; + this.decoratorMessage = Translator.translate("LOADING", this.props.lang); this.MessageListManager.removeListeners(); if (this.props.parentMessageId) { @@ -108,7 +111,7 @@ class MessageList extends React.PureComponent { } else if(prevProps.parentMessageId !== this.props.parentMessageId) { - this.decoratorMessage = "Loading..."; + this.decoratorMessage = Translator.translate("LOADING", this.props.lang); this.MessageListManager.removeListeners(); this.MessageListManager = new MessageListManager(this.props.widgetsettings, this.props.item, this.props.type, this.props.parentMessageId); this.getMessages(); @@ -142,7 +145,7 @@ class MessageList extends React.PureComponent { this.MessageListManager.fetchPreviousMessages().then(messageList => { if (messageList.length === 0) { - this.decoratorMessage = "No messages found"; + this.decoratorMessage = Translator.translate("NO_MESSAGES_FOUND", this.props.lang); } messageList.forEach((message) => { @@ -188,12 +191,12 @@ class MessageList extends React.PureComponent { }).catch((error) => { //TODO Handle the erros in contact list. console.error("[MessageList] getMessages fetchPrevious error", error); - this.decoratorMessage = "Error"; + this.decoratorMessage = Translator.translate("ERROR", this.props.lang); }); }).catch((error) => { console.log("[MessageList] getMessages getLoggedInUser error", error); - this.decoratorMessage = "Error"; + this.decoratorMessage = Translator.translate("ERROR", this.props.lang); }); } @@ -269,7 +272,7 @@ class MessageList extends React.PureComponent { const newMessageObj = Object.assign({}, messageObj, message); messageList.splice(messageKey, 1, newMessageObj); - this.props.actionGenerated("messageUpdated", messageList); + this.props.actionGenerated("onMessageEdited", messageList); } } @@ -426,8 +429,6 @@ class MessageList extends React.PureComponent { && message.getReceiverType() === 'user' && message.getSender().uid === this.props.item.uid) { - console.log("inside 1st else if"); - triggerCustomMessageReceived(message); } else if (this.props.type === 'user' @@ -435,12 +436,8 @@ class MessageList extends React.PureComponent { && this.loggedInUser.uid === message.getSender().uid && message.getReceiverId() === this.props.item.uid && (message.type === enums.CUSTOM_TYPE_DOCUMENT || message.type === enums.CUSTOM_TYPE_WHITEBOARD)) { - console.log("inside 2nd else if"); - triggerCustomMessageReceived(message); - } - } addMetadataToCustomData = (message) => { @@ -535,25 +532,25 @@ class MessageList extends React.PureComponent { if(message.hasOwnProperty("deletedAt")) { - component = (); + component = (); } else { switch (message.type) { case CometChat.MESSAGE_TYPE.TEXT: - component = (message.text ? : null); + component = (message.text ? : null); break; case CometChat.MESSAGE_TYPE.IMAGE: - component = (message.data.url ? : null); + component = (message.data.url ? : null); break; case CometChat.MESSAGE_TYPE.FILE: - component = (message.data.attachments ? : null); + component = (message.data.attachments ? : null); break; case CometChat.MESSAGE_TYPE.VIDEO: - component = (message.data.url ? : null); + component = (message.data.url ? : null); break; case CometChat.MESSAGE_TYPE.AUDIO: - component = (message.data.url ? : null); + component = (message.data.url ? : null); break; default: break; @@ -570,26 +567,26 @@ class MessageList extends React.PureComponent { if(message.hasOwnProperty("deletedAt")) { - component = (); + component = (); } else { switch (message.type) { case "message": case CometChat.MESSAGE_TYPE.TEXT: - component = (message.text ? : null); + component = (message.text ? : null); break; case CometChat.MESSAGE_TYPE.IMAGE: - component = (message.data.url ? : null); + component = (message.data.url ? : null); break; case CometChat.MESSAGE_TYPE.FILE: - component = (message.data.attachments ? : null); + component = (message.data.attachments ? : null); break; case CometChat.MESSAGE_TYPE.AUDIO: - component = (message.data.url ? : null); + component = (message.data.url ? : null); break; case CometChat.MESSAGE_TYPE.VIDEO: - component = (message.data.url ? : null); + component = (message.data.url ? : null); break; default: break; @@ -602,21 +599,21 @@ class MessageList extends React.PureComponent { let component; if (message.hasOwnProperty("deletedAt")) { - component = (); + component = (); } else { switch (message.type) { case enums.CUSTOM_TYPE_POLL: - component = ; + component = ; break; case enums.CUSTOM_TYPE_STICKER: - component = ; + component = ; break; case enums.CUSTOM_TYPE_DOCUMENT: - component = ; + component = ; break; case enums.CUSTOM_TYPE_WHITEBOARD: - component = ; + component = ; break; default: break; @@ -630,21 +627,21 @@ class MessageList extends React.PureComponent { let component; if (message.hasOwnProperty("deletedAt")) { - component = (); + component = (); } else { switch (message.type) { case enums.CUSTOM_TYPE_POLL: - component = ; + component = ; break; case enums.CUSTOM_TYPE_STICKER: - component = ; + component = ; break; case enums.CUSTOM_TYPE_DOCUMENT: - component = ; + component = ; break; case enums.CUSTOM_TYPE_WHITEBOARD: - component = ; + component = ; break; default: break; @@ -656,14 +653,13 @@ class MessageList extends React.PureComponent { getCallMessageComponent = (message, key) => { return ( - + ); } getActionMessageComponent = (message, key) => { let component = null; - //console.log("getActionMessageComponent message", message); if(message.message) { component = ( @@ -738,7 +734,9 @@ class MessageList extends React.PureComponent { const messageDate = (message.sentAt * 1000); const messageSentDate = dateFormat(messageDate, "dd/mm/yyyy"); if (cDate !== messageSentDate) { - dateSeparator = (
{messageSentDate}
); + dateSeparator = (
+ {messageSentDate} +
); } cDate = messageSentDate; @@ -766,4 +764,15 @@ class MessageList extends React.PureComponent { } } +// Specifies the default values for props: +MessageList.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +MessageList.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default MessageList; diff --git a/CometChat/components/MessageThread/controller.js b/CometChat/components/MessageThread/controller.js deleted file mode 100644 index 6ce899c5..00000000 --- a/CometChat/components/MessageThread/controller.js +++ /dev/null @@ -1,24 +0,0 @@ -import { CometChat } from "@cometchat-pro/chat"; - -import * as enums from '../../util/enums.js'; - -export class MessageThreadManager { - - msgListenerId = "threadmessage_" + new Date().getTime(); - - attachListeners(callback) { - - CometChat.addMessageListener( - this.msgListenerId, - new CometChat.MessageListener({ - onMessageEdited: editedMessage => { - callback(enums.MESSAGE_EDITED, editedMessage); - } - }) - ); - } - - removeListeners() { - CometChat.removeMessageListener(this.msgListenerId); - } -} \ No newline at end of file diff --git a/CometChat/components/MessageThread/index.js b/CometChat/components/MessageThread/index.js index 5fbcfdef..9e682318 100644 --- a/CometChat/components/MessageThread/index.js +++ b/CometChat/components/MessageThread/index.js @@ -2,12 +2,12 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; import { checkMessageForExtensionsData } from "../../util/common"; import * as enums from "../../util/enums.js"; -import { MessageThreadManager } from "./controller"; import MessageList from "../MessageList"; import MessageComposer from "../MessageComposer"; @@ -45,6 +45,9 @@ import { messageReplyStyle, } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import clearIcon from "./resources/close.png"; class MessageThread extends React.PureComponent { @@ -53,9 +56,6 @@ class MessageThread extends React.PureComponent { super(props); - this.MessageThreadManager = new MessageThreadManager(); - this.MessageThreadManager.attachListeners(this.listenerCallback); - this.composerRef = React.createRef(); this.loggedInUser = props.loggedInUser; @@ -82,18 +82,6 @@ class MessageThread extends React.PureComponent { } } - listenerCallback = (key, message) => { - - switch (key) { - - case enums.MESSAGE_EDITED: - this.parentMessageEdited(message); - break; - default: - break; - } - } - parentMessageEdited = (message) => { const parentMessage = { ...this.props.parentMessage }; @@ -138,7 +126,7 @@ class MessageThread extends React.PureComponent { this.props.actionGenerated("threadMessageComposed", messages); } break; - case "messageUpdated": + case "onMessageEdited": this.updateMessages(messages); break; case "messageFetched": @@ -270,19 +258,19 @@ class MessageThread extends React.PureComponent { switch (message.type) { case CometChat.MESSAGE_TYPE.TEXT: - component = ; + component = ; break; case CometChat.MESSAGE_TYPE.IMAGE: - component = ; + component = ; break; case CometChat.MESSAGE_TYPE.FILE: - component = ; + component = ; break; case CometChat.MESSAGE_TYPE.VIDEO: - component = ; + component = ; break; case CometChat.MESSAGE_TYPE.AUDIO: - component = ; + component = ; break; default: break; @@ -298,19 +286,19 @@ class MessageThread extends React.PureComponent { switch (message.type) { case "message": case CometChat.MESSAGE_TYPE.TEXT: - component = ; + component = ; break; case CometChat.MESSAGE_TYPE.IMAGE: - component = ; + component = ; break; case CometChat.MESSAGE_TYPE.FILE: - component = ; + component = ; break; case CometChat.MESSAGE_TYPE.AUDIO: - component = ; + component = ; break; case CometChat.MESSAGE_TYPE.VIDEO: - component = ; + component = ; break; default: break; @@ -325,16 +313,16 @@ class MessageThread extends React.PureComponent { switch (message.type) { case enums.CUSTOM_TYPE_POLL: - component = ; + component = ; break; case enums.CUSTOM_TYPE_STICKER: - component = ; + component = ; break; case enums.CUSTOM_TYPE_DOCUMENT: - component = ; + component = ; break; case enums.CUSTOM_TYPE_WHITEBOARD: - component = ; + component = ; break; default: break; @@ -348,16 +336,16 @@ class MessageThread extends React.PureComponent { let component; switch (message.type) { case enums.CUSTOM_TYPE_POLL: - component = ; + component = ; break; case enums.CUSTOM_TYPE_STICKER: - component = ; + component = ; break; case enums.CUSTOM_TYPE_DOCUMENT: - component = ; + component = ; break; case enums.CUSTOM_TYPE_WHITEBOARD: - component = ; + component = ; break; default: break; @@ -411,7 +399,7 @@ class MessageThread extends React.PureComponent { if (this.state.parentMessage.hasOwnProperty("replyCount")) { const replyCount = this.state.parentMessage.replyCount; - const replyText = (replyCount === 1) ? `${replyCount} reply` : `${replyCount} replies`; + const replyText = (replyCount === 1) ? (`${replyCount} ${Translator.translate("REPLY", this.props.lang)}`) : (`${replyCount} ${Translator.translate("REPLIES", this.props.lang)}`); seperator = (
@@ -426,7 +414,7 @@ class MessageThread extends React.PureComponent {
-
Thread
+
{Translator.translate("THREAD", this.props.lang)}
{this.props.item.name}
this.props.actionGenerated("closeThreadClicked")}>
@@ -445,12 +433,14 @@ class MessageThread extends React.PureComponent { widgetsettings={this.props.widgetsettings} parentMessageId={this.props.parentMessage.id} loggedInUser={this.props.loggedInUser} + lang={this.props.lang} actionGenerated={this.actionHandler} /> { this.composerRef = el; }} theme={this.props.theme} item={this.props.item} type={this.props.type} + lang={this.props.lang} widgetsettings={this.props.widgetsettings} parentMessageId={this.props.parentMessage.id} messageToBeEdited={this.state.messageToBeEdited} @@ -463,4 +453,15 @@ class MessageThread extends React.PureComponent { } } +// Specifies the default values for props: +MessageThread.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +MessageThread.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default MessageThread; \ No newline at end of file diff --git a/CometChat/components/ReadReciept/index.js b/CometChat/components/ReadReciept/index.js index 248b97d4..56c2fefc 100644 --- a/CometChat/components/ReadReciept/index.js +++ b/CometChat/components/ReadReciept/index.js @@ -2,11 +2,15 @@ import React from "react"; import dateFormat from "dateformat"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { validateWidgetSettings } from "../../util/common"; import { msgTimestampStyle } from "./style"; +import Translator from "../../resources/localization/translator"; +import { theme } from "../../resources/theme"; + import blueDoubleTick from "./resources/blue-double-tick-icon.png"; import greyDoubleTick from "./resources/grey-double-tick-icon.png"; import greyTick from "./resources/grey-tick-icon.png"; @@ -33,14 +37,17 @@ class ReadReceipt extends React.PureComponent { render() { - let ticks = null; + let ticks, receiptText = null; if(this.state.message.messageFrom === "sender") { ticks = blueDoubleTick; + receiptText = "SEEN"; if (this.props.message.sentAt && !this.props.message.readAt && !this.props.message.deliveredAt) { ticks = greyTick; + receiptText = "SENT"; } else if (this.props.message.sentAt && !this.props.message.readAt && this.props.message.deliveredAt) { ticks = greyDoubleTick; + receiptText = "DELIVERED"; } } @@ -49,7 +56,7 @@ class ReadReceipt extends React.PureComponent { ticks = null; } - const receipt = (ticks) ? time : null; + const receipt = (ticks) ? {Translator.translate(receiptText, : null; const messageDate = (this.state.message.sentAt * 1000); const timestamp = dateFormat(messageDate, "shortTime"); @@ -60,4 +67,15 @@ class ReadReceipt extends React.PureComponent { } } +// Specifies the default values for props: +ReadReceipt.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme, +}; + +ReadReceipt.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default ReadReceipt; \ No newline at end of file diff --git a/CometChat/components/ReceiverAudioBubble/index.js b/CometChat/components/ReceiverAudioBubble/index.js index e361fa2b..84b9580c 100644 --- a/CometChat/components/ReceiverAudioBubble/index.js +++ b/CometChat/components/ReceiverAudioBubble/index.js @@ -1,7 +1,8 @@ import React from "react"; /** @jsx jsx */ -import { jsx } from '@emotion/core' +import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { checkMessageForExtensionsData } from "../../util/common"; import { SvgAvatar } from '../../util/svgavatar'; @@ -12,6 +13,8 @@ import ReplyCount from "../ReplyCount"; import ReadReciept from "../ReadReciept"; import RegularReactionView from "../RegularReactionView"; +import { theme } from "../../resources/theme"; + import { messageContainerStyle, messageWrapperStyle, @@ -70,15 +73,13 @@ class ReceiverAudioBubble extends React.Component { avatar = (
- +
); - name = (
{this.state.message.sender.name}
); + name = (
+ {this.state.message.sender.name} +
); } let messageReactions = null; @@ -88,13 +89,7 @@ class ReceiverAudioBubble extends React.Component { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } @@ -103,7 +98,6 @@ class ReceiverAudioBubble extends React.Component { return (
-
{avatar}
@@ -128,7 +122,15 @@ class ReceiverAudioBubble extends React.Component {
) } +} + +// Specifies the default values for props: +ReceiverAudioBubble.defaultProps = { + theme: theme +}; +ReceiverAudioBubble.propTypes = { + theme: PropTypes.object } export default ReceiverAudioBubble; \ No newline at end of file diff --git a/CometChat/components/ReceiverDocumentBubble/index.js b/CometChat/components/ReceiverDocumentBubble/index.js index ade3284d..cbe9f02a 100644 --- a/CometChat/components/ReceiverDocumentBubble/index.js +++ b/CometChat/components/ReceiverDocumentBubble/index.js @@ -2,6 +2,8 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; + import { checkMessageForExtensionsData } from "../../util/common"; import ToolTip from "../ToolTip"; @@ -27,6 +29,9 @@ import { messageReactionsWrapperStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import documentIcon from "./resources/receiverdocument.png"; class ReceiverDocumentBubble extends React.PureComponent { @@ -86,15 +91,13 @@ class ReceiverDocumentBubble extends React.PureComponent { avatar = (
- +
); - name = (
{this.props.message.sender.name}
); + name = (
+ {this.props.message.sender.name} +
); } let messageReactions = null; @@ -104,19 +107,13 @@ class ReceiverDocumentBubble extends React.PureComponent { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } } - const documentTitle = this.state.message.sender.name + " has shared a collaborative document"; + const documentTitle = `${this.state.message.sender.name} ${Translator.translate("SHARED_COLLABORATIVE_DOCUMENT", this.props.lang)}`; return (
@@ -129,13 +126,13 @@ class ReceiverDocumentBubble extends React.PureComponent {
- Collaborative Document + {Translator.translate("COLLABORATIVE_DOCUMENT",

{documentTitle}

  • -

    Launch

    +

    {Translator.translate("JOIN", this.props.lang)}

@@ -154,4 +151,15 @@ class ReceiverDocumentBubble extends React.PureComponent { } } +// Specifies the default values for props: +ReceiverDocumentBubble.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +ReceiverDocumentBubble.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default ReceiverDocumentBubble; \ No newline at end of file diff --git a/CometChat/components/ReceiverFileBubble/index.js b/CometChat/components/ReceiverFileBubble/index.js index 4c04672c..dd84ee2e 100644 --- a/CometChat/components/ReceiverFileBubble/index.js +++ b/CometChat/components/ReceiverFileBubble/index.js @@ -2,7 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; - +import PropTypes from 'prop-types'; import { checkMessageForExtensionsData } from "../../util/common"; import { SvgAvatar } from '../../util/svgavatar'; @@ -26,6 +26,9 @@ import { messageReactionsWrapperStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import blueFile from "./resources/receiverfile.png"; class ReceiverFileBubble extends React.Component { @@ -71,15 +74,13 @@ class ReceiverFileBubble extends React.Component { avatar = (
- +
); - name = (
{this.state.message.sender.name}
); + name = (
+ {this.state.message.sender.name} +
); } let messageReactions = null; @@ -89,13 +90,7 @@ class ReceiverFileBubble extends React.Component { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } @@ -112,7 +107,7 @@ class ReceiverFileBubble extends React.Component {
@@ -131,4 +126,15 @@ class ReceiverFileBubble extends React.Component { } } +// Specifies the default values for props: +ReceiverFileBubble.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +ReceiverFileBubble.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default ReceiverFileBubble; \ No newline at end of file diff --git a/CometChat/components/ReceiverImageBubble/index.js b/CometChat/components/ReceiverImageBubble/index.js index 39ac14dd..b8cc58db 100644 --- a/CometChat/components/ReceiverImageBubble/index.js +++ b/CometChat/components/ReceiverImageBubble/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from "@emotion/core"; +import PropTypes from 'prop-types'; import { checkMessageForExtensionsData } from "../../util/common"; import { SvgAvatar } from '../../util/svgavatar'; @@ -27,6 +28,9 @@ import { import srcIcon from "./resources/1px.png"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + class ReceiverImageBubble extends React.PureComponent { messageFrom = "receiver"; @@ -177,15 +181,13 @@ class ReceiverImageBubble extends React.PureComponent { avatar = (
- +
); - name = (
{this.state.message.sender.name}
); + name = (
+ {this.state.message.sender.name} +
); } let messageReactions = null; @@ -195,13 +197,7 @@ class ReceiverImageBubble extends React.PureComponent { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } @@ -217,7 +213,7 @@ class ReceiverImageBubble extends React.PureComponent {
- message { this.imgRef = el; }} /> + {this.state.imageUrl} { this.imgRef = el; }} />
@@ -234,4 +230,15 @@ class ReceiverImageBubble extends React.PureComponent { } } +// Specifies the default values for props: +ReceiverImageBubble.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +ReceiverImageBubble.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default ReceiverImageBubble; \ No newline at end of file diff --git a/CometChat/components/ReceiverMessageBubble/index.js b/CometChat/components/ReceiverMessageBubble/index.js index 51b42c4f..c49aed21 100644 --- a/CometChat/components/ReceiverMessageBubble/index.js +++ b/CometChat/components/ReceiverMessageBubble/index.js @@ -1,6 +1,7 @@ import React from "react"; import twemoji from "twemoji"; import ReactHtmlParser from "react-html-parser"; +import PropTypes from 'prop-types'; /** @jsx jsx */ import { jsx } from '@emotion/core'; @@ -29,6 +30,9 @@ import { messageReactionsWrapperStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + class ReceiverMessageBubble extends React.Component { messageFrom = "receiver"; @@ -127,15 +131,13 @@ class ReceiverMessageBubble extends React.Component { avatar = (
- +
); - name = (
{this.state.message.sender.name}
); + name = (
+ {this.state.message.sender.name} +
); } let messageText = this.getMessageText(); @@ -156,13 +158,7 @@ class ReceiverMessageBubble extends React.Component { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } @@ -191,4 +187,15 @@ class ReceiverMessageBubble extends React.Component { } } +// Specifies the default values for props: +ReceiverMessageBubble.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +ReceiverMessageBubble.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default ReceiverMessageBubble; \ No newline at end of file diff --git a/CometChat/components/ReceiverPollBubble/index.js b/CometChat/components/ReceiverPollBubble/index.js index 93b97af4..1abe834c 100644 --- a/CometChat/components/ReceiverPollBubble/index.js +++ b/CometChat/components/ReceiverPollBubble/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; @@ -32,6 +33,9 @@ import { messageReactionsWrapperStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import checkIcon from "./resources/check.svg"; class ReceiverPollBubble extends React.Component { @@ -109,15 +113,13 @@ class ReceiverPollBubble extends React.Component { avatar = (
- +
); - name = (
{this.props.message.sender.name}
); + name = (
+ {this.props.message.sender.name} +
); } const pollOptions = []; @@ -125,8 +127,17 @@ class ReceiverPollBubble extends React.Component { this.pollId = pollExtensionData.id; const total = pollExtensionData.results.total; - const totalText = (total === 1) ? `${total} vote` : `${total} votes`; + let totalText = Translator.translate("NO_VOTE", this.props.lang); + if(total === 1) { + + totalText = `${total} ${Translator.translate("VOTE", this.props.lang)}`; + + } else if (total > 1) { + + totalText = `${total} ${Translator.translate("VOTES", this.props.lang)}`; + } + for (const option in pollExtensionData.options) { const optionData = pollExtensionData.results.options[option]; @@ -158,13 +169,7 @@ class ReceiverPollBubble extends React.Component { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } @@ -201,4 +206,15 @@ class ReceiverPollBubble extends React.Component { } } +// Specifies the default values for props: +ReceiverPollBubble.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +ReceiverPollBubble.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default ReceiverPollBubble; \ No newline at end of file diff --git a/CometChat/components/ReceiverStickerBubble/index.js b/CometChat/components/ReceiverStickerBubble/index.js index 9e4c9b11..8c1e7b13 100644 --- a/CometChat/components/ReceiverStickerBubble/index.js +++ b/CometChat/components/ReceiverStickerBubble/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core' +import PropTypes from 'prop-types'; import { SvgAvatar } from '../../util/svgavatar'; @@ -26,6 +27,9 @@ import { messageReactionsWrapperStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + class ReceiverStickerBubble extends React.Component { messageFrom = "receiver"; @@ -67,15 +71,13 @@ class ReceiverStickerBubble extends React.Component { avatar = (
- +
); - name = (
{this.state.message.sender.name}
); + name = (
+ {this.state.message.sender.name} +
); } let stickerData = null; @@ -85,7 +87,7 @@ class ReceiverStickerBubble extends React.Component { stickerData = this.state.message.data.customData; if (stickerData.hasOwnProperty("sticker_url")) { - const stickerName = (stickerData.hasOwnProperty("sticker_name")) ? stickerData.sticker_name : "Sticker"; + const stickerName = (stickerData.hasOwnProperty("sticker_name")) ? stickerData.sticker_name : Translator.translate("STICKER", this.props.lang); stickerImg = ({stickerName}); } } @@ -97,13 +99,7 @@ class ReceiverStickerBubble extends React.Component { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } @@ -134,4 +130,15 @@ class ReceiverStickerBubble extends React.Component { } } +// Specifies the default values for props: +ReceiverStickerBubble.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +ReceiverStickerBubble.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default ReceiverStickerBubble; \ No newline at end of file diff --git a/CometChat/components/ReceiverVideoBubble/index.js b/CometChat/components/ReceiverVideoBubble/index.js index d9fb8e9a..9fd01f9b 100644 --- a/CometChat/components/ReceiverVideoBubble/index.js +++ b/CometChat/components/ReceiverVideoBubble/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from "@emotion/core"; +import PropTypes from 'prop-types'; import { checkMessageForExtensionsData } from "../../util/common"; import { SvgAvatar } from '../../util/svgavatar'; @@ -25,6 +26,8 @@ import { messageReactionsWrapperStyle } from "./style"; +import { theme } from "../../resources/theme"; + class ReceiverVideoBubble extends React.Component { messageFrom = "receiver"; @@ -76,15 +79,13 @@ class ReceiverVideoBubble extends React.Component { avatar = (
- +
); - name = (
{this.props.message.sender.name}
); + name = (
+ {this.props.message.sender.name} +
); } let messageReactions = null; @@ -94,13 +95,7 @@ class ReceiverVideoBubble extends React.Component { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } @@ -135,4 +130,13 @@ class ReceiverVideoBubble extends React.Component { } } +// Specifies the default values for props: +ReceiverVideoBubble.defaultProps = { + theme: theme +}; + +ReceiverVideoBubble.propTypes = { + theme: PropTypes.object +} + export default ReceiverVideoBubble; \ No newline at end of file diff --git a/CometChat/components/ReceiverWhiteboardBubble/index.js b/CometChat/components/ReceiverWhiteboardBubble/index.js index 5f25b0fc..e356b845 100644 --- a/CometChat/components/ReceiverWhiteboardBubble/index.js +++ b/CometChat/components/ReceiverWhiteboardBubble/index.js @@ -2,6 +2,8 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; + import { checkMessageForExtensionsData } from "../../util/common"; import ToolTip from "../ToolTip"; @@ -27,6 +29,9 @@ import { messageReactionsWrapperStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import whiteboardIcon from "./resources/receiverwhiteboard.png"; class ReceiverWhiteboardBubble extends React.PureComponent { @@ -88,15 +93,13 @@ class ReceiverWhiteboardBubble extends React.PureComponent { avatar = (
- +
); - name = (
{this.props.message.sender.name}
); + name = (
+ {this.props.message.sender.name} +
); } let messageReactions = null; @@ -106,19 +109,13 @@ class ReceiverWhiteboardBubble extends React.PureComponent { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } } - const documentTitle = this.state.message.sender.name + " has shared a collaborative whiteboard"; + const documentTitle = `${this.state.message.sender.name} ${Translator.translate("SHARED_COLLABORATIVE_WHITEBOARD", this.props.lang)}`; return (
@@ -131,13 +128,13 @@ class ReceiverWhiteboardBubble extends React.PureComponent {
- Collaborative Document + {Translator.translate("COLLABORATIVE_WHITEBOARD",

{documentTitle}

  • -

    Launch

    +

    {Translator.translate("JOIN", this.props.lang)}

@@ -156,4 +153,15 @@ class ReceiverWhiteboardBubble extends React.PureComponent { } } +// Specifies the default values for props: +ReceiverWhiteboardBubble.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +ReceiverWhiteboardBubble.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default ReceiverWhiteboardBubble; \ No newline at end of file diff --git a/CometChat/components/RegularReactionView/index.js b/CometChat/components/RegularReactionView/index.js index 594db1ac..fdae1a66 100644 --- a/CometChat/components/RegularReactionView/index.js +++ b/CometChat/components/RegularReactionView/index.js @@ -2,6 +2,8 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; + import { Emoji } from "emoji-mart"; import { CometChat } from "@cometchat-pro/chat"; @@ -13,6 +15,9 @@ import { emojiButtonStyle, } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import reactIcon from "./resources/add-reaction.png"; class RegularReactionView extends React.Component { @@ -75,8 +80,10 @@ class RegularReactionView extends React.Component { } if (userList.length) { + reactionTitle = userList.join(", "); - reactionTitle = reactionTitle.concat(" reacted"); + const str = ` ${Translator.translate("REACTED", this.props.lang)}`; + reactionTitle = reactionTitle.concat(str); } const reactionClassName = `reaction reaction__${reactionName}`; @@ -112,7 +119,7 @@ class RegularReactionView extends React.Component { key="-1" css={messageReactionsStyle(this.props, {})} className="reaction reaction__add" - title="Add reaction..."> + title={Translator.translate("ADD_REACTION", this.props.lang)}> - //
- // ); - if (messageReactions !== null && messageReactions.length && addReactionEmoji !== null) { if (this.props.message.messageFrom === "receiver") { @@ -193,4 +151,15 @@ class RegularReactionView extends React.Component { } } +// Specifies the default values for props: +RegularReactionView.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +RegularReactionView.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default RegularReactionView; \ No newline at end of file diff --git a/CometChat/components/ReplyCount/index.js b/CometChat/components/ReplyCount/index.js index 205c9610..c6f7c966 100644 --- a/CometChat/components/ReplyCount/index.js +++ b/CometChat/components/ReplyCount/index.js @@ -1,16 +1,24 @@ /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { validateWidgetSettings } from "../../util/common"; import { replyCountStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + const replycount = (props) => { const replyCount = props.message.replyCount; - const replyText = (replyCount === 1) ? `${replyCount} reply` : `${replyCount} replies`; + const replyText = (replyCount === 1) ? (`${replyCount} ${Translator.translate("REPLY", props.lang)}`) : (`${replyCount} ${Translator.translate("REPLIES", props.lang)}`); - let replies = ( props.actionGenerated("viewMessageThread", props.message)}>{replyText}); + let replies = ( + props.actionGenerated("viewMessageThread", props.message)}>{replyText}); if(props.message.hasOwnProperty("replyCount") === false) { replies = null; @@ -30,4 +38,15 @@ const replycount = (props) => { return replies; } +// Specifies the default values for props: +replycount.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +replycount.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default replycount; \ No newline at end of file diff --git a/CometChat/components/ReplyPreview/index.js b/CometChat/components/ReplyPreview/index.js index c55ec8f5..7c4ec879 100644 --- a/CometChat/components/ReplyPreview/index.js +++ b/CometChat/components/ReplyPreview/index.js @@ -1,5 +1,6 @@ /** @jsx jsx */ import { jsx, keyframes } from '@emotion/core'; +import PropTypes from 'prop-types'; import { previewWrapperStyle, @@ -9,6 +10,8 @@ import { previewOptionStyle, } from "./style"; +import { theme } from "../../resources/theme"; + import closeIcon from "./resources/close.png"; const ReplyPreview = (props) => { @@ -28,4 +31,13 @@ const ReplyPreview = (props) => { ) } +// Specifies the default values for props: +ReplyPreview.defaultProps = { + theme: theme +}; + +ReplyPreview.propTypes = { + theme: PropTypes.object +} + export default ReplyPreview; diff --git a/CometChat/components/SenderAudioBubble/index.js b/CometChat/components/SenderAudioBubble/index.js index 43d3002f..8bdb3e05 100644 --- a/CometChat/components/SenderAudioBubble/index.js +++ b/CometChat/components/SenderAudioBubble/index.js @@ -51,13 +51,7 @@ class SenderAudioBubble extends React.Component { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } diff --git a/CometChat/components/SenderDocumentBubble/index.js b/CometChat/components/SenderDocumentBubble/index.js index 07014502..15855fb7 100644 --- a/CometChat/components/SenderDocumentBubble/index.js +++ b/CometChat/components/SenderDocumentBubble/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { checkMessageForExtensionsData } from "../../util/common"; @@ -21,6 +22,9 @@ import { messageReactionsWrapperStyle, } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import documentIcon from "./resources/senderdocument.png"; class SenderDocumentBubble extends React.PureComponent { @@ -71,19 +75,13 @@ class SenderDocumentBubble extends React.PureComponent { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } } - const documentTitle = "You’ve created a new collaborative document"; + const documentTitle = Translator.translate("CREATED_DOCUMENT", this.props.lang); return (
@@ -92,12 +90,12 @@ class SenderDocumentBubble extends React.PureComponent {
- Collaborative Document + {Translator.translate("COLLABORATIVE_DOCUMENT",

{documentTitle}

  • -

    Launch

    +

    {Translator.translate("LAUNCH", this.props.lang)}

@@ -115,4 +113,15 @@ class SenderDocumentBubble extends React.PureComponent { } } +// Specifies the default values for props: +SenderDocumentBubble.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +SenderDocumentBubble.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default SenderDocumentBubble; \ No newline at end of file diff --git a/CometChat/components/SenderFileBubble/index.js b/CometChat/components/SenderFileBubble/index.js index 8a9399be..a77a50dd 100644 --- a/CometChat/components/SenderFileBubble/index.js +++ b/CometChat/components/SenderFileBubble/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { checkMessageForExtensionsData } from "../../util/common"; @@ -18,6 +19,7 @@ import { messageReactionsWrapperStyle } from "./style"; +import { theme } from "../../resources/theme"; import blueFile from "./resources/senderfile.png"; class SenderFileBubble extends React.Component { @@ -56,13 +58,7 @@ class SenderFileBubble extends React.Component { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } @@ -93,4 +89,14 @@ class SenderFileBubble extends React.Component { } } +// Specifies the default values for props: +SenderFileBubble.defaultProps = { + theme: theme +}; + +SenderFileBubble.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default SenderFileBubble; \ No newline at end of file diff --git a/CometChat/components/SenderImageBubble/index.js b/CometChat/components/SenderImageBubble/index.js index 88e58336..ffe4ef31 100644 --- a/CometChat/components/SenderImageBubble/index.js +++ b/CometChat/components/SenderImageBubble/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { checkMessageForExtensionsData } from "../../util/common"; @@ -18,6 +19,8 @@ import { messageReactionsWrapperStyle } from "./style"; +import { theme } from "../../resources/theme"; + import srcIcon from "./resources/1px.png"; class SenderImageBubble extends React.PureComponent { @@ -164,13 +167,7 @@ class SenderImageBubble extends React.PureComponent { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } @@ -183,7 +180,7 @@ class SenderImageBubble extends React.PureComponent {
- message { this.imgRef = el; }} /> + {this.state.imageUrl} { this.imgRef = el; }} />
@@ -198,4 +195,13 @@ class SenderImageBubble extends React.PureComponent { } } +// Specifies the default values for props: +SenderImageBubble.defaultProps = { + theme: theme +}; + +SenderImageBubble.propTypes = { + theme: PropTypes.object +} + export default SenderImageBubble; \ No newline at end of file diff --git a/CometChat/components/SenderMessageBubble/index.js b/CometChat/components/SenderMessageBubble/index.js index a086937c..08b8850e 100644 --- a/CometChat/components/SenderMessageBubble/index.js +++ b/CometChat/components/SenderMessageBubble/index.js @@ -4,6 +4,7 @@ import ReactHtmlParser from "react-html-parser"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { linkify, checkMessageForExtensionsData, validateWidgetSettings } from "../../util/common"; @@ -22,6 +23,8 @@ import { messageReactionsWrapperStyle, } from "./style"; +import { theme } from "../../resources/theme"; + class SenderMessageBubble extends React.PureComponent { messageFrom = "sender"; @@ -124,13 +127,7 @@ class SenderMessageBubble extends React.PureComponent { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } @@ -153,4 +150,13 @@ class SenderMessageBubble extends React.PureComponent { } } +// Specifies the default values for props: +SenderMessageBubble.defaultProps = { + theme: theme +}; + +SenderMessageBubble.propTypes = { + theme: PropTypes.object +} + export default SenderMessageBubble; \ No newline at end of file diff --git a/CometChat/components/SenderPollBubble/index.js b/CometChat/components/SenderPollBubble/index.js index 97ee79a9..033ac260 100644 --- a/CometChat/components/SenderPollBubble/index.js +++ b/CometChat/components/SenderPollBubble/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { checkMessageForExtensionsData } from "../../util/common"; @@ -23,6 +24,9 @@ import { messageReactionsWrapperStyle, } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + class SenderPollBubble extends React.Component { pollId; requestInProgress = null; @@ -73,7 +77,16 @@ class SenderPollBubble extends React.Component { this.pollId = pollExtensionData.id; const total = pollExtensionData.results.total; - const totalText = (total === 1) ? `${total} vote` : `${total} votes`; + let totalText = Translator.translate("NO_VOTE", this.props.lang); + + if (total === 1) { + + totalText = `${total} ${Translator.translate("VOTE", this.props.lang)}`; + + } else if (total > 1) { + + totalText = `${total} ${Translator.translate("VOTES", this.props.lang)}`; + } for (const option in pollExtensionData.results.options) { @@ -106,13 +119,7 @@ class SenderPollBubble extends React.Component { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } @@ -144,4 +151,15 @@ class SenderPollBubble extends React.Component { } } +// Specifies the default values for props: +SenderPollBubble.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +SenderPollBubble.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default SenderPollBubble; \ No newline at end of file diff --git a/CometChat/components/SenderStickerBubble/index.js b/CometChat/components/SenderStickerBubble/index.js index 0a86194d..7bfd642d 100644 --- a/CometChat/components/SenderStickerBubble/index.js +++ b/CometChat/components/SenderStickerBubble/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { checkMessageForExtensionsData } from "../../util/common"; @@ -18,6 +19,9 @@ import { messageReactionsWrapperStyle, } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + class SenderStickerBubble extends React.Component { messageFrom = "sender"; @@ -53,7 +57,7 @@ class SenderStickerBubble extends React.Component { stickerData = this.state.message.data.customData; if (stickerData.hasOwnProperty("sticker_url")) { - const stickerName = (stickerData.hasOwnProperty("sticker_name")) ? stickerData.sticker_name : "Sticker"; + const stickerName = (stickerData.hasOwnProperty("sticker_name")) ? stickerData.sticker_name : Translator.translate("STICKER", this.props.lang); stickerImg = ({stickerName}); } } @@ -65,13 +69,7 @@ class SenderStickerBubble extends React.Component { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } @@ -99,4 +97,15 @@ class SenderStickerBubble extends React.Component { } } +// Specifies the default values for props: +SenderStickerBubble.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +SenderStickerBubble.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default SenderStickerBubble; \ No newline at end of file diff --git a/CometChat/components/SenderVideoBubble/index.js b/CometChat/components/SenderVideoBubble/index.js index ef5b6d5a..feee2074 100644 --- a/CometChat/components/SenderVideoBubble/index.js +++ b/CometChat/components/SenderVideoBubble/index.js @@ -1,6 +1,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { checkMessageForExtensionsData } from "../../util/common"; @@ -54,13 +55,7 @@ class SenderVideoBubble extends React.PureComponent { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } diff --git a/CometChat/components/SenderWhiteboardBubble/index.js b/CometChat/components/SenderWhiteboardBubble/index.js index 7a371fba..b27db032 100644 --- a/CometChat/components/SenderWhiteboardBubble/index.js +++ b/CometChat/components/SenderWhiteboardBubble/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { checkMessageForExtensionsData } from "../../util/common"; @@ -21,6 +22,9 @@ import { messageReactionsWrapperStyle, } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import whiteboardIcon from "./resources/senderwhiteboard.png"; class SenderWhiteboardBubble extends React.PureComponent { @@ -73,19 +77,13 @@ class SenderWhiteboardBubble extends React.PureComponent { if (Object.keys(reactionsData).length) { messageReactions = (
- +
); } } - const documentTitle = "You’ve created a new collaborative whiteboard"; + const documentTitle = Translator.translate("CREATED_WHITEBOARD", this.props.lang); return (
@@ -94,12 +92,12 @@ class SenderWhiteboardBubble extends React.PureComponent {
- Collaborative Whiteboard + {Translator.translate("COLLABORATIVE_WHITEBOARD",

{documentTitle}

  • -

    Launch

    +

    {Translator.translate("LAUNCH", this.props.lang)}

@@ -117,4 +115,15 @@ class SenderWhiteboardBubble extends React.PureComponent { } } +// Specifies the default values for props: +SenderWhiteboardBubble.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +SenderWhiteboardBubble.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default SenderWhiteboardBubble; \ No newline at end of file diff --git a/CometChat/components/SharedMediaView/index.js b/CometChat/components/SharedMediaView/index.js index 4bef8fab..79ca6ff8 100644 --- a/CometChat/components/SharedMediaView/index.js +++ b/CometChat/components/SharedMediaView/index.js @@ -2,10 +2,10 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChatManager } from "../../util/controller"; import { SharedMediaManager } from "./controller"; - import * as enums from '../../util/enums.js'; import { @@ -19,6 +19,9 @@ import { } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import fileIcon from "./resources/file.png"; class SharedMediaView extends React.Component { @@ -142,23 +145,6 @@ class SharedMediaView extends React.Component { this.setState({messagetype: type, messageList: []}); } - lazyLoad = (target) => { - const obs = new IntersectionObserver((entries, observer) => { - entries.forEach(entry => { - if (entry.isIntersecting) { - const img = entry.target.querySelector("img"); - const src = img.getAttribute('data-lazy'); - - img.setAttribute('src', src); - img.classList.add('fadeIn'); - - observer.disconnect(); - } - }); - }); - obs.observe(target); - } - render() { const template = (message, key) => { @@ -167,7 +153,7 @@ class SharedMediaView extends React.Component { return (
- Media Item + {Translator.translate("SHARED_MEDIA",
); @@ -198,16 +184,16 @@ class SharedMediaView extends React.Component { return (
-
Shared Media
+
{Translator.translate("SHARED_MEDIA", this.props.lang)}
- this.mediaClickHandler("image")}>Photos - this.mediaClickHandler("video")}>Videos - this.mediaClickHandler("file")}>Docs + this.mediaClickHandler("image")}>{Translator.translate("PHOTOS", this.props.lang)} + this.mediaClickHandler("video")}>{Translator.translate("VIDEOS", this.props.lang)} + this.mediaClickHandler("file")}>{Translator.translate("DOCS", this.props.lang)}
this.messageContainer = el} - onScroll={this.handleScroll}>{(messageList.length) ? messageList : "No records found."} + onScroll={this.handleScroll}>{(messageList.length) ? messageList : Translator.translate("NO_RECORDS_FOUND", this.props.lang)}
@@ -220,4 +206,15 @@ class SharedMediaView extends React.Component { } } +// Specifies the default values for props: +SharedMediaView.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +SharedMediaView.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default SharedMediaView; diff --git a/CometChat/components/StatusIndicator/index.js b/CometChat/components/StatusIndicator/index.js index f98af2c7..e0769b6e 100644 --- a/CometChat/components/StatusIndicator/index.js +++ b/CometChat/components/StatusIndicator/index.js @@ -1,29 +1,40 @@ /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; -import { - presenceStyle -} from "./style"; +import { validateWidgetSettings } from "../../util/common"; + +import { presenceStyle } from "./style"; const statusindicator = (props) => { - if(props.hasOwnProperty("widgetsettings") - && props.widgetsettings - && props.widgetsettings.hasOwnProperty("main") - && props.widgetsettings.main.hasOwnProperty("show_user_presence") - && props.widgetsettings.main["show_user_presence"] === false) { + //if user presence is disabled in chat widget + if (validateWidgetSettings(props.widgetsettings, "show_user_presence") === false) { return null; } - const borderWidth = props.borderWidth || '1px'; - const borderColor = props.borderColor || '#AAA'; - const cornerRadius = props.cornerRadius || '50%'; + const borderWidth = props.borderWidth; + const borderColor = props.borderColor; + const cornerRadius = props.cornerRadius; - const getStyle = () => ({borderWidth:borderWidth, borderStyle:'solid',borderColor:borderColor ,'borderRadius': cornerRadius}) + const getStyle = () => ({borderWidth:borderWidth, borderStyle:'solid', borderColor:borderColor , 'borderRadius': cornerRadius}) return ( ); } +// Specifies the default values for props: +statusindicator.defaultProps = { + borderWidth: "1px", + borderColor: "#AAA", + cornerRadius: "50%", +}; + +statusindicator.propTypes = { + borderWidth: PropTypes.string, + borderColor: PropTypes.string, + cornerRadius: PropTypes.string, +} + export default statusindicator; \ No newline at end of file diff --git a/CometChat/components/StickerView/index.js b/CometChat/components/StickerView/index.js index 245f6b6d..c7827ebc 100644 --- a/CometChat/components/StickerView/index.js +++ b/CometChat/components/StickerView/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx, keyframes } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; @@ -16,14 +17,18 @@ import { stickerCloseStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import closeIcon from "./resources/close.png"; class StickerView extends React.PureComponent { constructor(props) { + super(props); - this.decoratorMessage = "Loading..."; + this.decoratorMessage = Translator.translate("LOADING", props.lang); this.state = { stickerlist: [], @@ -57,7 +62,7 @@ class StickerView extends React.PureComponent { const stickerList = [...defaultStickers, ...customStickers]; if (stickerList.length === 0) { - this.decoratorMessage = "No stickers found"; + this.decoratorMessage = Translator.translate("NO_STICKERS_FOUND", this.props.lang); } const stickerSet = stickerList.reduce((r, sticker, index) => { @@ -95,7 +100,7 @@ class StickerView extends React.PureComponent { // Some error occured console.warn("Error: ", error); - this.decoratorMessage = "No stickers found"; + this.decoratorMessage = Translator.translate("NO_STICKERS_FOUND", this.props.lang); this.setState({ "activestickerlist": [], "stickerset": {} }); @@ -174,7 +179,17 @@ class StickerView extends React.PureComponent {
); } +} + +// Specifies the default values for props: +StickerView.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; +StickerView.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object } export default StickerView; \ No newline at end of file diff --git a/CometChat/components/ToolTip/index.js b/CometChat/components/ToolTip/index.js index 0e6f6d06..e4af5efc 100644 --- a/CometChat/components/ToolTip/index.js +++ b/CometChat/components/ToolTip/index.js @@ -2,6 +2,7 @@ import React from "react"; /** @jsx jsx */ import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import { CometChat } from "@cometchat-pro/chat"; @@ -13,6 +14,9 @@ import { groupButtonStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + import replyIcon from "./resources/startthread.png"; import deleteIcon from "./resources/deletemessage.png"; import editIcon from "./resources/edit.png"; @@ -20,14 +24,6 @@ import reactIcon from "./resources/add-reaction.png"; class Tooltip extends React.PureComponent { - constructor(props) { - super(props); - - this.state = { - - } - } - toggleTooltip = (event, flag) => { const elem = event.target; @@ -49,7 +45,7 @@ class Tooltip extends React.PureComponent { onMouseLeave={event => this.toggleTooltip(event, false)} css={groupButtonStyle(reactIcon)} className="group__button button__reacttomessage" - data-title="Add reaction" + data-title={Translator.translate("ADD_REACTION", this.props.lang)} onClick={() => this.props.actionGenerated("reactToMessage", this.props.message)}> ); @@ -67,7 +63,7 @@ class Tooltip extends React.PureComponent { onMouseLeave={event => this.toggleTooltip(event, false)} css={groupButtonStyle(replyIcon)} className="group__button button__threadedchats" - data-title={(this.props.message.replyCount) ? "Reply to thread" : "Reply in thread"} + data-title={(this.props.message.replyCount) ? Translator.translate("REPLY_TO_THREAD", this.props.lang) : Translator.translate("REPLY_IN_THREAD", this.props.lang) } onClick={() => this.props.actionGenerated("viewMessageThread", this.props.message)}> ); @@ -87,7 +83,7 @@ class Tooltip extends React.PureComponent { onMouseLeave={event => this.toggleTooltip(event, false)} css={groupButtonStyle(deleteIcon)} className="group__button button__delete" - data-title="Delete message" + data-title={Translator.translate("DELETE_MESSAGE", this.props.lang)} onClick={() => this.props.actionGenerated("deleteMessage", this.props.message)}> ); @@ -106,7 +102,7 @@ class Tooltip extends React.PureComponent { onMouseLeave={event => this.toggleTooltip(event, false)} css={groupButtonStyle(editIcon)} className="group__button button__edit" - data-title="Edit message" + data-title={Translator.translate("EDIT_MESSAGE", this.props.lang)} onClick={() => this.props.actionGenerated("editMessage", this.props.message)}> ); @@ -135,4 +131,15 @@ class Tooltip extends React.PureComponent { } } +// Specifies the default values for props: +Tooltip.defaultProps = { + lang: Translator.getDefaultLanguage(), + theme: theme +}; + +Tooltip.propTypes = { + lang: PropTypes.string, + theme: PropTypes.object +} + export default Tooltip; \ No newline at end of file diff --git a/CometChat/components/UserView/index.js b/CometChat/components/UserView/index.js index 7bf77952..7d718155 100644 --- a/CometChat/components/UserView/index.js +++ b/CometChat/components/UserView/index.js @@ -1,20 +1,22 @@ /** @jsx jsx */ -import { jsx } from '@emotion/core' +import { jsx } from '@emotion/core'; +import PropTypes from 'prop-types'; import Avatar from "../Avatar"; import StatusIndicator from "../StatusIndicator"; import { listItem, itemThumbnailStyle, itemDetailStyle, itemNameStyle, itemDescStyle } from "./style"; +import { theme } from "../../resources/theme"; +import Translator from "../../resources/localization/translator"; + const userview = (props) => { let userPresence = ( + borderColor={props.theme.borderColor.primary} /> ); const toggleTooltip = (event, flag) => { @@ -38,14 +40,10 @@ const userview = (props) => { return (
props.clickeHandler(props.user)} className="list__item">
- + {userPresence}
-
+
toggleTooltip(event, true)} onMouseLeave={event => toggleTooltip(event, false)}>{props.user.name}
@@ -55,4 +53,13 @@ const userview = (props) => { ) } +// Specifies the default values for props: +userview.defaultProps = { + theme: theme +}; + +userview.propTypes = { + theme: PropTypes.object +} + export default userview; diff --git a/CometChat/components/UserView/style.js b/CometChat/components/UserView/style.js index ae6f5c2b..cc5376d7 100644 --- a/CometChat/components/UserView/style.js +++ b/CometChat/components/UserView/style.js @@ -11,7 +11,7 @@ export const listItem = (props) => { alignItems: "center", cursor: "pointer", width: "100%", - padding: "10px 20px", + padding: "8px 16px", ...selectedState, '&:hover': { backgroundColor: `${props.theme.backgroundColor.primary}` @@ -34,7 +34,11 @@ export const itemDetailStyle = () => { return { width: "calc(100% - 45px)", flexGrow: 1, - paddingLeft: "15px" + paddingLeft: "16px", + "&[dir=rtl]": { + paddingRight: "16px", + paddingLeft: "0", + } } } diff --git a/CometChat/resources/localization/locales/ar/translation.json b/CometChat/resources/localization/locales/ar/translation.json new file mode 100644 index 00000000..e122fd82 --- /dev/null +++ b/CometChat/resources/localization/locales/ar/translation.json @@ -0,0 +1,181 @@ +{ + "USERS": "المستخدمون", + "CHATS": "دردشات", + "GROUPS": "المجموعات", + "MORE": "المزيد", + "MESSAGE_IMAGE": "📷 صورة", + "MESSAGE_FILE": "📁 ملف", + "MESSAGE_VIDEO": "📹 فيديو", + "MESSAGE_AUDIO": "🎵 الصوت", + "CUSTOM_MESSAGE": "لديك رسالة", + "MISSED_VOICE_CALL": "مكالمة صوتية غاب", + "MISSED_VIDEO_CALL": "مكالمة فيديو غاب", + "CUSTOM_MESSAGE_POLL": "📊 استطلاع للرأي", + "CUSTOM_MESSAGE_STICKER": "💟 ملصق", + "CUSTOM_MESSAGE_DOCUMENT": "📃 وثيقة", + "CUSTOM_MESSAGE_WHITEBOARD": "📝 السبورة", + "ONLINE": "عبر الإنترنت", + "ADMINISTRATOR": "مدير", + "MODERATOR": "مدير الجلسة", + "PARTICIPANT": "مشارك", + "PUBLIC": "عامة", + "PRIVATE": "خاص", + "PASSWORD_PROTECTED": "محمية بكلمة مرور", + "PRIVACY_AND_SECURITY": "الخصوصية والأمان", + "PREFERENCES": "التفضيلات", + "MEMBERS": "الأعضاء", + "TODAY": "اليوم", + "YESTERDAY": "البارحة", + "TYPING": "كتابة...", + "IS_TYPING": "هو كتابة...", + "CLOSE": "إغلاق", + "ENTER_GROUP_NAME": "أدخل اسم المجموعة", + "ADD_MEMBERS": "إضافة أعضاء", + "SEND_MESSAGE": "ارسل رسالة", + "UNBLOCK_USER": "إلغاء حظر المستخدم", + "BLOCK_USER": "كتلة المستخدم", + "DELETE_AND_EXIT": "حذف وخروج", + "LEAVE_GROUP": "ترك المجموعة", + "CREATE_GROUP": "إنشاء مجموعة", + "SHARED_MEDIA": "وسائل الإعلام المشتركة", + "VIDEO_CALL": "مكالمة فيديو", + "AUDIO_CALL": "مكالمة صوتية", + "LOADING": "التحميل...", + "REPLY": "الرد", + "REPLIES": "الردود", + "LAUNCH": "إطلاق", + "SHARED_COLLABORATIVE_DOCUMENT": "وقد شارك وثيقة تعاونية", + "SHARED_COLLABORATIVE_WHITEBOARD": "مشاركة السبورة التعاونية", + "CREATED_WHITEBOARD": "لقد قمت بإنشاء لوحة بيضاء تعاونية جديدة", + "CREATED_DOCUMENT": "لقد قمت بإنشاء مستند تعاوني جديد", + "PHOTOS": "صور", + "VIDEOS": "فيديوهات", + "DOCUMENT": "مستند", + "YOU_DELETED_THIS_MESSAGE": "⚠️ قمت بحذف هذه الرسالة", + "THIS_MESSAGE_DELETED": "⚠️ تم حذف هذه الرسالة", + "VIEW_ON_YOUTUBE": "عرض على يوتيوب", + "SEARCH": "البحث", + "NO_USERS_FOUND": "لم يتم العثور على المستخدمين", + "ERROR": "خطأ", + "NO_GROUPS_FOUND": "لم يتم العثور على مجموعات", + "NO_CHATS_FOUND": "لم يتم العثور على دردشات", + "MEDIA_MESSAGE": "رسالة إعلامية", + "INCOMING_AUDIO_CALL": "مكالمة صوتية واردة", + "INCOMING_VIDEO_CALL": "مكالمة فيديو واردة", + "DECLINE": "انخفاض", + "ACCEPT": "قبول", + "CALL_INITIATED": "بدأ الاتصال", + "OUTGOING_AUDIO_CALL": "مكالمة صوتية صادرة", + "OUTGOING_VIDEO_CALL": "مكالمة فيديو صادرة", + "CALL_REJECTED": "تم رفض المكالمة", + "REJECTED_CALL": "مكالمة مرفوضة", + "CALL_ACCEPTED": "تم قبول المكالمة", + "JOINED": "انضم", + "LEFT_THE_CALL": "ترك المكالمة", + "UNANSWERED_AUDIO_CALL": "مكالمة صوتية لم تتم الإجابة عليها", + "UNANSWERED_VIDEO_CALL": "مكالمة فيديو لم تتم الإجابة عليها", + "CALL_ENDED": "انتهت المكالمة", + "CALL_CANCELLED": "تم إلغاء المكالمة", + "CALL_BUSY": "استدعاء مشغول", + "CALLING": "الدعوة...", + "ADD": "إضافة", + "NO_BANNED_MEMBERS_FOUND": "لم يتم العثور على أعضاء محظورين", + "BANNED_MEMBERS": "الأعضاء المحظورين", + "NAME": "اسم", + "SCOPE": "النطاق", + "UNBAN": "نبان", + "SELECT_GROUP_TYPE": "تحديد نوع المجموعة", + "ENTER_GROUP_PASSWORD": "أدخل كلمة مرور المجموعة", + "CREATE": "إنشاء", + "CREATE_POLL": "إنشاء استطلاع للرأي", + "QUESTION": "سؤال", + "ENTER_YOUR_QUESTION": "أدخل سؤالك", + "OPTIONS": "خيارات", + "ENTER_YOUR_OPTION": "أدخل الخيار الخاص بك", + "ADD_NEW_OPTION": "إضافة خيار جديد", + "VIEW_MEMBERS": "عرض الأعضاء", + "DETAILS": "تفاصيل", + "NOTIFICATIONS": "الإشعارات", + "OTHER": "أخرى", + "HELP": "مساعدة", + "REPORT_PROBLEM": "الإبلاغ عن مشكلة", + "GROUP_MEMBERS": "أعضاء المجموعة", + "BAN": "بان", + "KICK": "ركلة", + "PICK_YOUR_EMOJI": "اختيار الرموز التعبيرية الخاصة بك", + "PRIVATE_GROUP": "مجموعة خاصة", + "PROTECTED_GROUP": "المجموعة المحمية", + "VISIT": "زيارة", + "ATTACH": "إرفاق", + "ATTACH_FILE": "إرفاق ملف", + "ATTACH_VIDEO": "إرفاق الفيديو", + "ATTACH_AUDIO": "إرفاق الصوت", + "ATTACH_IMAGE": "إرفاق صورة", + "COLLABORATE_USING_DOCUMENT": "التعاون باستخدام مستند", + "COLLABORATE_USING_WHITEBOARD": "التعاون باستخدام لوح معلومات", + "EMOJI": "رمز تعبيري", + "ENTER_YOUR_MESSAGE_HERE": "أدخل رسالتك هنا", + "NO_MESSAGES_FOUND": "لم يتم العثور على رسائل", + "THREAD": "الموضوع", + "COLLABORATIVE_DOCUMENT": "وثيقة تعاونية", + "COLLABORATIVE_WHITEBOARD": "السبورة التعاونية", + "ADD_REACTION": "إضافة رد فعل", + "NO_STICKERS_FOUND": "لم يتم العثور على ملصقات", + "REPLY_TO_THREAD": "الرد على موضوع", + "REPLY_IN_THREAD": "الرد في موضوع", + "DELETE_MESSAGE": "حذف الرسالة", + "EDIT_MESSAGE": "تحرير الرسالة", + "SUNDAY": "الأحد", + "MONDAY": "الاثنين", + "TUESDAY": "الثلاثاء", + "WEDNESDAY": "الأربعاء", + "THURSDAY": "الخميس", + "FRIDAY": "الجمعة", + "SATURDAY": "السبت", + "GROUP_NAME_BLANK": "اسم المجموعة لا يمكن أن تكون فارغة", + "GROUP_TYPE_BLANK": "نوع المجموعة لا يمكن أن تكون فارغة", + "GROUP_PASSWORD_BLANK": "كلمة مرور المجموعة لا يمكن أن تكون فارغة", + "POLL_QUESTION_BLANK": "السؤال لا يمكن أن تكون فارغة", + "POLL_OPTION_BLANK": "الخيار لا يمكن أن تكون فارغة", + "OWNER": "مالك", + "CHANGE_SCOPE": "تغيير النطاق", + "STICKER": "ملصق", + "LAST_ACTIVE_AT": "آخر نشط في", + "VOICE_CALL": "مكالمة صوتية", + "VIEW_DETAIL": "عرض التفاصيل", + "VOTES": "التصويت", + "VOTE": "تصويت", + "NO_VOTE": "لا تصويت", + "REACTED": "رد فعل", + "ADDED": "أضاف", + "UNBANNED": "غير محظور", + "MADE": "صنع", + "CALL_UNANSWERED": "اتصل دون إجابة", + "MISSED_AUDIO_CALL": "مكالمة صوتية فائتة", + "ENTER_YOUR_PASSWORD": "أدخل كلمة المرور", + "DOCS": "مستندات", + "NO_RECORDS_FOUND": "لم يتم العثور على سجلات", + "LIVE_REACTION": "رد فعل حي", + "SMILEY_PEOPLE": "الوجوه الضاحكة والناس", + "ANIMALES_NATURE": "الحيوانات والطبيعة", + "FOOD_DRINK": "الطعام والشراب", + "ACTIVITY": "النشاط", + "TRAVEL_PLACES": "السفر والأماكن", + "OBJECTS": "كائنات", + "SYMBOLS": "الرموز", + "FLAGS": "أعلام", + "SENT": "أرسلت", + "SEEN": "شاهد", + "DELIVERED": "سلمت", + "CALLS": "المكالمات", + "CUSTOM_MESSAGE_LOCATION": "📍 الموقع", + "OFFLINE": "غير متصل", + "YOU": "أنت", + "PRIVACY": "الخصوصية", + "BLOCKED_USERS": "المستخدمون المحظورون", + "YOU'VE_BLOCKED": "لقد حظرت", + "NO_PHOTOS": "لا توجد صور", + "NO_VIDEOS": "لا توجد فيديوهات", + "NO_DOCUMENTS": "لا توجد وثائق", + "JOIN": "جوي" +} \ No newline at end of file diff --git a/CometChat/resources/localization/locales/de/translation.json b/CometChat/resources/localization/locales/de/translation.json new file mode 100644 index 00000000..09a54924 --- /dev/null +++ b/CometChat/resources/localization/locales/de/translation.json @@ -0,0 +1,181 @@ +{ + "USERS": "Nutzer", + "CHATS": "Chats", + "GROUPS": "Gruppen", + "MORE": "mehr", + "MESSAGE_IMAGE": "📷 Bild", + "MESSAGE_FILE": "📁 Datei", + "MESSAGE_VIDEO": "📹 Video", + "MESSAGE_AUDIO": "🎵 Audio", + "CUSTOM_MESSAGE": "Du hast eine Nachricht", + "MISSED_VOICE_CALL": "Sprachanruf verpasst", + "MISSED_VIDEO_CALL": "Videoanruf verpasst", + "CUSTOM_MESSAGE_POLL": "📊 Umfrage", + "CUSTOM_MESSAGE_STICKER": "💟 Aufkleber", + "CUSTOM_MESSAGE_DOCUMENT": "📃 Dokument", + "CUSTOM_MESSAGE_WHITEBOARD": "📝 Whiteboard", + "ONLINE": "Online", + "ADMINISTRATOR": "Verwalter", + "MODERATOR": "Moderator", + "PARTICIPANT": "Teilnehmerin", + "PUBLIC": "Öffentlich", + "PRIVATE": "Privat", + "PASSWORD_PROTECTED": "Passwort-geschützt", + "PRIVACY_AND_SECURITY": "Datenschutz und Sicherheit", + "PREFERENCES": "Präferenzen", + "MEMBERS": "Mitglieder", + "TODAY": "heute", + "YESTERDAY": "Gestern", + "TYPING": "tippen...", + "IS_TYPING": "tippt...", + "CLOSE": "schliessen", + "ENTER_GROUP_NAME": "Gruppennamen eingeben", + "ADD_MEMBERS": "Mitglieder hinzufügen", + "SEND_MESSAGE": "Nachricht senden", + "UNBLOCK_USER": "Benutzer entsperren", + "BLOCK_USER": "Benutzer blockieren", + "DELETE_AND_EXIT": "Löschen und beenden", + "LEAVE_GROUP": "Verlasse die Gruppe", + "CREATE_GROUP": "Gruppe erstellen", + "SHARED_MEDIA": "Geteilte Medien", + "VIDEO_CALL": "Videoanruf", + "AUDIO_CALL": "Audio-Anruf", + "LOADING": "Wird geladen...", + "REPLY": "Antwort", + "REPLIES": "Antworten", + "LAUNCH": "starten", + "SHARED_COLLABORATIVE_DOCUMENT": "hat ein gemeinschaftliches Dokument geteilt", + "SHARED_COLLABORATIVE_WHITEBOARD": "hat ein kollaboratives Whiteboard geteilt", + "CREATED_WHITEBOARD": "Du hast ein neues kollaboratives Whiteboard erstellt", + "CREATED_DOCUMENT": "Sie haben ein neues kollaboratives Dokument erstellt", + "PHOTOS": "Fotos", + "VIDEOS": "VIDEOS", + "DOCUMENT": "dokument", + "YOU_DELETED_THIS_MESSAGE": "⚠️ Du hast diese Nachricht gelöscht", + "THIS_MESSAGE_DELETED": "⚠️ Diese Nachricht wurde gelöscht", + "VIEW_ON_YOUTUBE": "Auf Youtube ansehen", + "SEARCH": "Suche", + "NO_USERS_FOUND": "Keine Benutzer gefunden", + "ERROR": "Fehler", + "NO_GROUPS_FOUND": "Keine Gruppen gefunden", + "NO_CHATS_FOUND": "Keine Chats gefunden", + "MEDIA_MESSAGE": "Mediale Botschaft", + "INCOMING_AUDIO_CALL": "Eingehender Audioanruf", + "INCOMING_VIDEO_CALL": "Eingehender Videoanruf", + "DECLINE": "Rückgang", + "ACCEPT": "Akzeptieren", + "CALL_INITIATED": "Anruf initiiert", + "OUTGOING_AUDIO_CALL": "Ausgehender Audioanruf", + "OUTGOING_VIDEO_CALL": "Ausgehender Videoanruf", + "CALL_REJECTED": "Anruf abgelehnt", + "REJECTED_CALL": "Anruf abgelehnt", + "CALL_ACCEPTED": "Anruf akzeptiert", + "JOINED": "verbunden", + "LEFT_THE_CALL": "hat den Anruf verlassen", + "UNANSWERED_AUDIO_CALL": "Unbeantworteter Audioan", + "UNANSWERED_VIDEO_CALL": "Unbeantworteter Videoan", + "CALL_ENDED": "Anruf endete", + "CALL_CANCELLED": "Anruf wurde abgebrochen", + "CALL_BUSY": "Anruf beschäftigt", + "CALLING": "Rufen...", + "ADD": "Add", + "NO_BANNED_MEMBERS_FOUND": "Keine verbotenen Mitglieder gefunden", + "BANNED_MEMBERS": "Verbotene Mitglieder", + "NAME": "Nennen", + "SCOPE": "Scope", + "UNBAN": "Unban", + "SELECT_GROUP_TYPE": "Gruppentyp wählen", + "ENTER_GROUP_PASSWORD": "Gruppenkennwort eingeben", + "CREATE": "erstellen", + "CREATE_POLL": "Umfrage erstellen", + "QUESTION": "Frage", + "ENTER_YOUR_QUESTION": "Gib deine Frage ein", + "OPTIONS": "Optionen", + "ENTER_YOUR_OPTION": "Geben Sie Ihre Option", + "ADD_NEW_OPTION": "Neue Option hinzufügen", + "VIEW_MEMBERS": "Mitglieder ansehen", + "DETAILS": "Einzelheiten", + "NOTIFICATIONS": "Benachrichtigungen", + "OTHER": "andere", + "HELP": "Hilfe", + "REPORT_PROBLEM": "Melden Sie ein Problem", + "GROUP_MEMBERS": "Mitglieder der Gruppe", + "BAN": "Ban", + "KICK": "Tritt", + "PICK_YOUR_EMOJI": "Wähle dein Emoji", + "PRIVATE_GROUP": "Private Gruppe", + "PROTECTED_GROUP": "Geschützte Gruppe", + "VISIT": "Besuch", + "ATTACH": "anhängen", + "ATTACH_FILE": "Datei anhängen", + "ATTACH_VIDEO": "Video anhängen", + "ATTACH_AUDIO": "Anhängen von Audio", + "ATTACH_IMAGE": "Bild anhängen", + "COLLABORATE_USING_DOCUMENT": "Zusammenarbeit mit einem Dokument", + "COLLABORATE_USING_WHITEBOARD": "Arbeiten Sie mit einem Whiteboard zusammen", + "EMOJI": "Emoji", + "ENTER_YOUR_MESSAGE_HERE": "Gib hier deine Nachricht ein", + "NO_MESSAGES_FOUND": "Keine Nachrichten gefunden", + "THREAD": "Gewinde", + "COLLABORATIVE_DOCUMENT": "Gemeinschaftliches Dokument", + "COLLABORATIVE_WHITEBOARD": "Kollaboratives Whiteboard", + "ADD_REACTION": "Reaktion hinzufügen", + "NO_STICKERS_FOUND": "Keine Aufkleber gefunden", + "REPLY_TO_THREAD": "Antwort auf Thread", + "REPLY_IN_THREAD": "Antwort im Thread", + "DELETE_MESSAGE": "Nachricht löschen", + "EDIT_MESSAGE": "Nachricht bearbeiten", + "SUNDAY": "SONNTAG", + "MONDAY": "MONTAG", + "TUESDAY": "DIENSTAG", + "WEDNESDAY": "MITTWOCH", + "THURSDAY": "DONNERSTAG", + "FRIDAY": "FREITAG", + "SATURDAY": "SAMSTAG", + "GROUP_NAME_BLANK": "Gruppenname ist nicht leer", + "GROUP_TYPE_BLANK": "Gruppentyp ist nicht leer", + "GROUP_PASSWORD_BLANK": "Gruppenkennwort darf nicht leer sein", + "POLL_QUESTION_BLANK": "Frage wird nicht leer sein", + "POLL_OPTION_BLANK": "Option kannte nicht leer sein", + "OWNER": "Inhaber", + "CHANGE_SCOPE": "Umfang ändern", + "STICKER": "aufkleber", + "LAST_ACTIVE_AT": "Zuletzt aktiv bei", + "VOICE_CALL": "Sprach-Anruf", + "VIEW_DETAIL": "Details anzeigen", + "VOTES": "Wahlen", + "VOTE": "Abstimmung", + "NO_VOTE": "Keine Abstimmung", + "REACTED": "reagiert", + "ADDED": "hinzugefügt", + "UNBANNED": "unverbannt", + "MADE": "hergestellt", + "CALL_UNANSWERED": "Anruf unbeantwortet", + "MISSED_AUDIO_CALL": "Audioanruf verpasst", + "ENTER_YOUR_PASSWORD": "Geben Sie Ihr Passwort ein", + "DOCS": "docs", + "NO_RECORDS_FOUND": "Keine Aufzeichnungen gefunden", + "LIVE_REACTION": "Live-Reaktion", + "SMILEY_PEOPLE": "Smileys & Leute", + "ANIMALES_NATURE": "Tiere & Natur", + "FOOD_DRINK": "Essen & Trinken", + "ACTIVITY": "Die Aktivität", + "TRAVEL_PLACES": "Reisen & Orte", + "OBJECTS": "objekte", + "SYMBOLS": "Die Symbole", + "FLAGS": "Flaggen", + "SENT": "Gesendet", + "SEEN": "Gesehen", + "DELIVERED": "Ausgeliefert", + "CALLS": "Anrufe", + "CUSTOM_MESSAGE_LOCATION": "📍 Standort", + "OFFLINE": "Offline", + "YOU": "Du", + "PRIVACY": "Datenschutz", + "BLOCKED_USERS": "Gesperrte", + "YOU'VE_BLOCKED": "Du hast geblockt", + "NO_PHOTOS": "Keine Fotos", + "NO_VIDEOS": "Keine Videos", + "NO_DOCUMENTS": "Keine Dokumente", + "JOIN": "Joi" +} \ No newline at end of file diff --git a/CometChat/resources/localization/locales/en-gb/translation.json b/CometChat/resources/localization/locales/en-gb/translation.json new file mode 100644 index 00000000..6aa3ce83 --- /dev/null +++ b/CometChat/resources/localization/locales/en-gb/translation.json @@ -0,0 +1,181 @@ +{ + "USERS": "Users", + "CHATS": "Chats", + "GROUPS": "Groups", + "MORE": "More", + "MESSAGE_IMAGE": "📷 Image", + "MESSAGE_FILE": "📁 File", + "MESSAGE_VIDEO": "📹 Video", + "MESSAGE_AUDIO": "🎵 Audio", + "CUSTOM_MESSAGE": "You have a message", + "MISSED_VOICE_CALL": "Missed voice call", + "MISSED_VIDEO_CALL": "Missed video call", + "CUSTOM_MESSAGE_POLL": "📊 Poll", + "CUSTOM_MESSAGE_STICKER": "💟 Sticker", + "CUSTOM_MESSAGE_DOCUMENT": "📃 Document", + "CUSTOM_MESSAGE_WHITEBOARD": "📝 Whiteboard", + "ONLINE": "Online", + "ADMINISTRATOR": "Administrator", + "MODERATOR": "Moderator", + "PARTICIPANT": "Participant", + "PUBLIC": "Public", + "PRIVATE": "Private", + "PASSWORD_PROTECTED": "Password Protected", + "PRIVACY_AND_SECURITY": "Privacy and Security", + "PREFERENCES": "Preferences", + "MEMBERS": "Members", + "TODAY": "Today", + "YESTERDAY": "Yesterday", + "TYPING": "typing...", + "IS_TYPING": "is typing...", + "CLOSE": "Close", + "ENTER_GROUP_NAME": "Enter group name", + "ADD_MEMBERS": "Add Members", + "SEND_MESSAGE": "Send Message", + "UNBLOCK_USER": "Unblock User", + "BLOCK_USER": "Block User", + "DELETE_AND_EXIT": "Delete and Exit", + "LEAVE_GROUP": "Leave Group", + "CREATE_GROUP": "Create Group", + "SHARED_MEDIA": "Shared Media", + "VIDEO_CALL": "Video call", + "AUDIO_CALL": "Audio call", + "LOADING": "Loading...", + "REPLY": "reply", + "REPLIES": "replies", + "LAUNCH": "Launch", + "SHARED_COLLABORATIVE_DOCUMENT": "has shared a collaborative document", + "SHARED_COLLABORATIVE_WHITEBOARD": "has shared a collaborative whiteboard", + "CREATED_WHITEBOARD": "You’ve created a new collaborative whiteboard", + "CREATED_DOCUMENT": "You’ve created a new collaborative document", + "PHOTOS": "Photos", + "VIDEOS": "Videos", + "DOCUMENT": "Document", + "YOU_DELETED_THIS_MESSAGE": "⚠️ You deleted this message", + "THIS_MESSAGE_DELETED": "⚠️ This message was deleted", + "VIEW_ON_YOUTUBE": "View on Youtube", + "SEARCH": "Search", + "NO_USERS_FOUND": "No users found", + "ERROR": "Error", + "NO_GROUPS_FOUND": "No groups found", + "NO_CHATS_FOUND": "No chats found", + "MEDIA_MESSAGE": "Media message", + "INCOMING_AUDIO_CALL": "Incoming audio call", + "INCOMING_VIDEO_CALL": "Incoming video call", + "DECLINE": "Decline", + "ACCEPT": "Accept", + "CALL_INITIATED": "Call initiated", + "OUTGOING_AUDIO_CALL": "Outgoing audio call", + "OUTGOING_VIDEO_CALL": "Outgoing video call", + "CALL_REJECTED": "Call rejected", + "REJECTED_CALL": "rejected call", + "CALL_ACCEPTED": "Call accepted", + "JOINED": "joined", + "LEFT_THE_CALL": "left the call", + "UNANSWERED_AUDIO_CALL": "Unanswered audio call", + "UNANSWERED_VIDEO_CALL": "Unanswered video call", + "CALL_ENDED": "Call ended", + "CALL_CANCELLED": "Call cancelled", + "CALL_BUSY": "Call busy", + "CALLING": "Calling...", + "ADD": "Add", + "NO_BANNED_MEMBERS_FOUND": "No banned members found", + "BANNED_MEMBERS": "Banned Members", + "NAME": "Name", + "SCOPE": "Scope", + "UNBAN": "Unban", + "SELECT_GROUP_TYPE": "Select group type", + "ENTER_GROUP_PASSWORD": "Enter group password", + "CREATE": "Create", + "CREATE_POLL": "Create Poll", + "QUESTION": "Question", + "ENTER_YOUR_QUESTION": "Enter your question", + "OPTIONS": "Options", + "ENTER_YOUR_OPTION": "Enter your option", + "ADD_NEW_OPTION": "Add new option", + "VIEW_MEMBERS": "View Members", + "DETAILS": "Details", + "NOTIFICATIONS": "Notifications", + "OTHER": "Other", + "HELP": "Help", + "REPORT_PROBLEM": "Report a Problem", + "GROUP_MEMBERS": "Group Members", + "BAN": "Ban", + "KICK": "Kick", + "PICK_YOUR_EMOJI": "Pick your emoji", + "PRIVATE_GROUP": "Private Group", + "PROTECTED_GROUP": "Protected Group", + "VISIT": "Visit", + "ATTACH": "Attach", + "ATTACH_FILE": "Attach file", + "ATTACH_VIDEO": "Attach video", + "ATTACH_AUDIO": "Attach audio", + "ATTACH_IMAGE": "Attach image", + "COLLABORATE_USING_DOCUMENT": "Collaborate using a document", + "COLLABORATE_USING_WHITEBOARD": "Collaborate using a whiteboard", + "EMOJI": "Emoji", + "ENTER_YOUR_MESSAGE_HERE": "Enter your message here", + "NO_MESSAGES_FOUND": "No messages found", + "THREAD": "Thread", + "COLLABORATIVE_DOCUMENT": "Collaborative Document", + "COLLABORATIVE_WHITEBOARD": "Collaborative Whiteboard", + "ADD_REACTION": "Add reaction", + "NO_STICKERS_FOUND": "No stickers found", + "REPLY_TO_THREAD": "Reply to thread", + "REPLY_IN_THREAD": "Reply in thread", + "DELETE_MESSAGE": "Delete message", + "EDIT_MESSAGE": "Edit message", + "SUNDAY": "SUNDAY", + "MONDAY": "MONDAY", + "TUESDAY": "TUESDAY", + "WEDNESDAY": "WEDNESDAY", + "THURSDAY": "THURSDAY", + "FRIDAY": "FRIDAY", + "SATURDAY": "SATURDAY", + "GROUP_NAME_BLANK": "Group name cannnot be blank", + "GROUP_TYPE_BLANK": "Group type cannnot be blank", + "GROUP_PASSWORD_BLANK": "Group password cannnot be blank", + "POLL_QUESTION_BLANK": "Question cannnot be blank", + "POLL_OPTION_BLANK": "Option cannnot be blank", + "OWNER": "Owner", + "CHANGE_SCOPE": "Change Scope", + "STICKER": "Sticker", + "LAST_ACTIVE_AT": "Last Active At", + "VOICE_CALL": "Voice call", + "VIEW_DETAIL": "View Detail", + "VOTES": "votes", + "VOTE": "vote", + "NO_VOTE": "No vote", + "REACTED": "reacted", + "ADDED": "added", + "UNBANNED": "unbanned", + "MADE": "made", + "CALL_UNANSWERED": "Call unanswered", + "MISSED_AUDIO_CALL": "Missed audio call", + "ENTER_YOUR_PASSWORD": "Enter your password", + "DOCS": "Docs", + "NO_RECORDS_FOUND": "No records found", + "LIVE_REACTION": "Live Reaction", + "SMILEY_PEOPLE": "Smileys & People", + "ANIMALES_NATURE": "Animals & Nature", + "FOOD_DRINK": "Food & Drink", + "ACTIVITY": "Activity", + "TRAVEL_PLACES": "Travel & Places", + "OBJECTS": "Objects", + "SYMBOLS": "Symbols", + "FLAGS": "Flags", + "SENT": "Sent", + "SEEN": "Seen", + "DELIVERED": "Delivered", + "CALLS": "Calls", + "CUSTOM_MESSAGE_LOCATION": "📍Location", + "OFFLINE": "Offline", + "YOU": "You", + "PRIVACY": "Privacy", + "BLOCKED_USERS": "Blocked Users", + "YOU'VE_BLOCKED": "You've blocked", + "NO_PHOTOS": "No Photos", + "NO_VIDEOS": "No Videos", + "NO_DOCUMENTS": "No Documents", + "JOIN": "Join" +} \ No newline at end of file diff --git a/CometChat/resources/localization/locales/en-us/translation.json b/CometChat/resources/localization/locales/en-us/translation.json new file mode 100644 index 00000000..5b8ca267 --- /dev/null +++ b/CometChat/resources/localization/locales/en-us/translation.json @@ -0,0 +1,181 @@ +{ + "USERS": "Users", + "CHATS": "Chats", + "GROUPS": "Groups", + "MORE": "More", + "MESSAGE_IMAGE": "📷 Image", + "MESSAGE_FILE": "📁 File", + "MESSAGE_VIDEO": "📹 Video", + "MESSAGE_AUDIO": "🎵 Audio", + "CUSTOM_MESSAGE": "You have a message", + "MISSED_VOICE_CALL": "Missed voice call", + "MISSED_VIDEO_CALL": "Missed video call", + "CUSTOM_MESSAGE_POLL": "📊 Poll", + "CUSTOM_MESSAGE_STICKER": "💟 Sticker", + "CUSTOM_MESSAGE_DOCUMENT": "📃 Document", + "CUSTOM_MESSAGE_WHITEBOARD": "📝 Whiteboard", + "ONLINE": "Online", + "ADMINISTRATOR": "Administrator", + "MODERATOR": "Moderator", + "PARTICIPANT": "Participant", + "PUBLIC": "Public", + "PRIVATE": "Private", + "PASSWORD_PROTECTED": "Password Protected", + "PRIVACY_AND_SECURITY": "Privacy and Security", + "PREFERENCES": "Preferences", + "MEMBERS": "Members", + "TODAY": "Today", + "YESTERDAY": "Yesterday", + "TYPING": "typing...", + "IS_TYPING": "is typing...", + "CLOSE": "Close", + "ENTER_GROUP_NAME": "Enter group name", + "ADD_MEMBERS": "Add Members", + "SEND_MESSAGE": "Send Message", + "UNBLOCK_USER": "Unblock User", + "BLOCK_USER": "Block User", + "DELETE_AND_EXIT": "Delete and Exit", + "LEAVE_GROUP": "Leave Group", + "CREATE_GROUP": "Create Group", + "SHARED_MEDIA": "Shared Media", + "VIDEO_CALL": "Video call", + "AUDIO_CALL": "Audio call", + "LOADING": "Loading...", + "REPLY": "reply", + "REPLIES": "replies", + "LAUNCH": "Launch", + "SHARED_COLLABORATIVE_DOCUMENT": "has shared a collaborative document", + "SHARED_COLLABORATIVE_WHITEBOARD": "has shared a collaborative whiteboard", + "CREATED_WHITEBOARD": "You’ve created a new collaborative whiteboard", + "CREATED_DOCUMENT": "You’ve created a new collaborative document", + "PHOTOS": "Photos", + "VIDEOS": "Videos", + "DOCUMENT": "Document", + "YOU_DELETED_THIS_MESSAGE": "⚠️ You deleted this message", + "THIS_MESSAGE_DELETED": "⚠️ This message was deleted", + "VIEW_ON_YOUTUBE": "View on Youtube", + "SEARCH": "Search", + "NO_USERS_FOUND": "No users found", + "ERROR": "Error", + "NO_GROUPS_FOUND": "No groups found", + "NO_CHATS_FOUND": "No chats found", + "MEDIA_MESSAGE": "Media message", + "INCOMING_AUDIO_CALL": "Incoming audio call", + "INCOMING_VIDEO_CALL": "Incoming video call", + "DECLINE": "Decline", + "ACCEPT": "Accept", + "CALL_INITIATED": "Call initiated", + "OUTGOING_AUDIO_CALL": "Outgoing audio call", + "OUTGOING_VIDEO_CALL": "Outgoing video call", + "CALL_REJECTED": "Call rejected", + "REJECTED_CALL": "rejected call", + "CALL_ACCEPTED": "Call accepted", + "JOINED": "joined", + "LEFT_THE_CALL": "left the call", + "UNANSWERED_AUDIO_CALL": "Unanswered audio call", + "UNANSWERED_VIDEO_CALL": "Unanswered video call", + "CALL_ENDED": "Call ended", + "CALL_CANCELLED": "Call cancelled", + "CALL_BUSY": "Call busy", + "CALLING": "Calling...", + "ADD": "Add", + "NO_BANNED_MEMBERS_FOUND": "No banned members found", + "BANNED_MEMBERS": "Banned Members", + "NAME": "Name", + "SCOPE": "Scope", + "UNBAN": "Unban", + "SELECT_GROUP_TYPE": "Select group type", + "ENTER_GROUP_PASSWORD": "Enter group password", + "CREATE": "Create", + "CREATE_POLL": "Create Poll", + "QUESTION": "Question", + "ENTER_YOUR_QUESTION": "Enter your question", + "OPTIONS": "Options", + "ENTER_YOUR_OPTION": "Enter your option", + "ADD_NEW_OPTION": "Add new option", + "VIEW_MEMBERS": "View Members", + "DETAILS": "Details", + "NOTIFICATIONS": "Notifications", + "OTHER": "Other", + "HELP": "Help", + "REPORT_PROBLEM": "Report a Problem", + "GROUP_MEMBERS": "Group Members", + "BAN": "Ban", + "KICK": "Kick", + "PICK_YOUR_EMOJI": "Pick your emoji", + "PRIVATE_GROUP": "Private Group", + "PROTECTED_GROUP": "Protected Group", + "VISIT": "Visit", + "ATTACH": "Attach", + "ATTACH_FILE": "Attach file", + "ATTACH_VIDEO": "Attach video", + "ATTACH_AUDIO": "Attach audio", + "ATTACH_IMAGE": "Attach image", + "COLLABORATE_USING_DOCUMENT": "Collaborate using a document", + "COLLABORATE_USING_WHITEBOARD": "Collaborate using a whiteboard", + "EMOJI": "Emoji", + "ENTER_YOUR_MESSAGE_HERE": "Enter your message here", + "NO_MESSAGES_FOUND": "No messages found", + "THREAD": "Thread", + "COLLABORATIVE_DOCUMENT": "Collaborative Document", + "COLLABORATIVE_WHITEBOARD": "Collaborative Whiteboard", + "ADD_REACTION": "Add reaction", + "NO_STICKERS_FOUND": "No stickers found", + "REPLY_TO_THREAD": "Reply to thread", + "REPLY_IN_THREAD": "Reply in thread", + "DELETE_MESSAGE": "Delete message", + "EDIT_MESSAGE": "Edit message", + "SUNDAY": "SUNDAY", + "MONDAY": "MONDAY", + "TUESDAY": "TUESDAY", + "WEDNESDAY": "WEDNESDAY", + "THURSDAY": "THURSDAY", + "FRIDAY": "FRIDAY", + "SATURDAY": "SATURDAY", + "GROUP_NAME_BLANK": "Group name cannnot be blank", + "GROUP_TYPE_BLANK": "Group type cannnot be blank", + "GROUP_PASSWORD_BLANK": "Group password cannnot be blank", + "POLL_QUESTION_BLANK": "Question cannnot be blank", + "POLL_OPTION_BLANK": "Option cannnot be blank", + "OWNER": "Owner", + "CHANGE_SCOPE": "Change Scope", + "STICKER": "Sticker", + "LAST_ACTIVE_AT": "Last Active At", + "VOICE_CALL": "Voice call", + "VIEW_DETAIL": "View Detail", + "VOTES": "votes", + "VOTE": "vote", + "NO_VOTE": "No vote", + "REACTED": "reacted", + "ADDED": "added", + "UNBANNED": "unbanned", + "MADE": "made", + "CALL_UNANSWERED": "Call unanswered", + "MISSED_AUDIO_CALL": "Missed audio call", + "ENTER_YOUR_PASSWORD": "Enter your password", + "DOCS": "Docs", + "NO_RECORDS_FOUND": "No records found", + "LIVE_REACTION": "Live Reaction", + "SMILEY_PEOPLE": "Smileys & People", + "ANIMALES_NATURE": "Animals & Nature", + "FOOD_DRINK": "Food & Drink", + "ACTIVITY": "Activity", + "TRAVEL_PLACES": "Travel & Places", + "OBJECTS": "Objects", + "SYMBOLS": "Symbols", + "FLAGS": "Flags", + "SENT": "Sent", + "SEEN": "Seen", + "DELIVERED": "Delivered", + "CALLS": "Calls", + "CUSTOM_MESSAGE_LOCATION": "📍Location", + "OFFLINE": "Offline", + "YOU": "You", + "PRIVACY": "Privacy", + "BLOCKED_USERS": "Blocked Users", + "YOU'VE_BLOCKED": "You've blocked", + "NO_PHOTOS": "No Photos", + "NO_VIDEOS": "No Videos", + "NO_DOCUMENTS": "No Documents", + "JOIN": "Join" +} diff --git a/CometChat/resources/localization/locales/en/translation.json b/CometChat/resources/localization/locales/en/translation.json new file mode 100644 index 00000000..6aa3ce83 --- /dev/null +++ b/CometChat/resources/localization/locales/en/translation.json @@ -0,0 +1,181 @@ +{ + "USERS": "Users", + "CHATS": "Chats", + "GROUPS": "Groups", + "MORE": "More", + "MESSAGE_IMAGE": "📷 Image", + "MESSAGE_FILE": "📁 File", + "MESSAGE_VIDEO": "📹 Video", + "MESSAGE_AUDIO": "🎵 Audio", + "CUSTOM_MESSAGE": "You have a message", + "MISSED_VOICE_CALL": "Missed voice call", + "MISSED_VIDEO_CALL": "Missed video call", + "CUSTOM_MESSAGE_POLL": "📊 Poll", + "CUSTOM_MESSAGE_STICKER": "💟 Sticker", + "CUSTOM_MESSAGE_DOCUMENT": "📃 Document", + "CUSTOM_MESSAGE_WHITEBOARD": "📝 Whiteboard", + "ONLINE": "Online", + "ADMINISTRATOR": "Administrator", + "MODERATOR": "Moderator", + "PARTICIPANT": "Participant", + "PUBLIC": "Public", + "PRIVATE": "Private", + "PASSWORD_PROTECTED": "Password Protected", + "PRIVACY_AND_SECURITY": "Privacy and Security", + "PREFERENCES": "Preferences", + "MEMBERS": "Members", + "TODAY": "Today", + "YESTERDAY": "Yesterday", + "TYPING": "typing...", + "IS_TYPING": "is typing...", + "CLOSE": "Close", + "ENTER_GROUP_NAME": "Enter group name", + "ADD_MEMBERS": "Add Members", + "SEND_MESSAGE": "Send Message", + "UNBLOCK_USER": "Unblock User", + "BLOCK_USER": "Block User", + "DELETE_AND_EXIT": "Delete and Exit", + "LEAVE_GROUP": "Leave Group", + "CREATE_GROUP": "Create Group", + "SHARED_MEDIA": "Shared Media", + "VIDEO_CALL": "Video call", + "AUDIO_CALL": "Audio call", + "LOADING": "Loading...", + "REPLY": "reply", + "REPLIES": "replies", + "LAUNCH": "Launch", + "SHARED_COLLABORATIVE_DOCUMENT": "has shared a collaborative document", + "SHARED_COLLABORATIVE_WHITEBOARD": "has shared a collaborative whiteboard", + "CREATED_WHITEBOARD": "You’ve created a new collaborative whiteboard", + "CREATED_DOCUMENT": "You’ve created a new collaborative document", + "PHOTOS": "Photos", + "VIDEOS": "Videos", + "DOCUMENT": "Document", + "YOU_DELETED_THIS_MESSAGE": "⚠️ You deleted this message", + "THIS_MESSAGE_DELETED": "⚠️ This message was deleted", + "VIEW_ON_YOUTUBE": "View on Youtube", + "SEARCH": "Search", + "NO_USERS_FOUND": "No users found", + "ERROR": "Error", + "NO_GROUPS_FOUND": "No groups found", + "NO_CHATS_FOUND": "No chats found", + "MEDIA_MESSAGE": "Media message", + "INCOMING_AUDIO_CALL": "Incoming audio call", + "INCOMING_VIDEO_CALL": "Incoming video call", + "DECLINE": "Decline", + "ACCEPT": "Accept", + "CALL_INITIATED": "Call initiated", + "OUTGOING_AUDIO_CALL": "Outgoing audio call", + "OUTGOING_VIDEO_CALL": "Outgoing video call", + "CALL_REJECTED": "Call rejected", + "REJECTED_CALL": "rejected call", + "CALL_ACCEPTED": "Call accepted", + "JOINED": "joined", + "LEFT_THE_CALL": "left the call", + "UNANSWERED_AUDIO_CALL": "Unanswered audio call", + "UNANSWERED_VIDEO_CALL": "Unanswered video call", + "CALL_ENDED": "Call ended", + "CALL_CANCELLED": "Call cancelled", + "CALL_BUSY": "Call busy", + "CALLING": "Calling...", + "ADD": "Add", + "NO_BANNED_MEMBERS_FOUND": "No banned members found", + "BANNED_MEMBERS": "Banned Members", + "NAME": "Name", + "SCOPE": "Scope", + "UNBAN": "Unban", + "SELECT_GROUP_TYPE": "Select group type", + "ENTER_GROUP_PASSWORD": "Enter group password", + "CREATE": "Create", + "CREATE_POLL": "Create Poll", + "QUESTION": "Question", + "ENTER_YOUR_QUESTION": "Enter your question", + "OPTIONS": "Options", + "ENTER_YOUR_OPTION": "Enter your option", + "ADD_NEW_OPTION": "Add new option", + "VIEW_MEMBERS": "View Members", + "DETAILS": "Details", + "NOTIFICATIONS": "Notifications", + "OTHER": "Other", + "HELP": "Help", + "REPORT_PROBLEM": "Report a Problem", + "GROUP_MEMBERS": "Group Members", + "BAN": "Ban", + "KICK": "Kick", + "PICK_YOUR_EMOJI": "Pick your emoji", + "PRIVATE_GROUP": "Private Group", + "PROTECTED_GROUP": "Protected Group", + "VISIT": "Visit", + "ATTACH": "Attach", + "ATTACH_FILE": "Attach file", + "ATTACH_VIDEO": "Attach video", + "ATTACH_AUDIO": "Attach audio", + "ATTACH_IMAGE": "Attach image", + "COLLABORATE_USING_DOCUMENT": "Collaborate using a document", + "COLLABORATE_USING_WHITEBOARD": "Collaborate using a whiteboard", + "EMOJI": "Emoji", + "ENTER_YOUR_MESSAGE_HERE": "Enter your message here", + "NO_MESSAGES_FOUND": "No messages found", + "THREAD": "Thread", + "COLLABORATIVE_DOCUMENT": "Collaborative Document", + "COLLABORATIVE_WHITEBOARD": "Collaborative Whiteboard", + "ADD_REACTION": "Add reaction", + "NO_STICKERS_FOUND": "No stickers found", + "REPLY_TO_THREAD": "Reply to thread", + "REPLY_IN_THREAD": "Reply in thread", + "DELETE_MESSAGE": "Delete message", + "EDIT_MESSAGE": "Edit message", + "SUNDAY": "SUNDAY", + "MONDAY": "MONDAY", + "TUESDAY": "TUESDAY", + "WEDNESDAY": "WEDNESDAY", + "THURSDAY": "THURSDAY", + "FRIDAY": "FRIDAY", + "SATURDAY": "SATURDAY", + "GROUP_NAME_BLANK": "Group name cannnot be blank", + "GROUP_TYPE_BLANK": "Group type cannnot be blank", + "GROUP_PASSWORD_BLANK": "Group password cannnot be blank", + "POLL_QUESTION_BLANK": "Question cannnot be blank", + "POLL_OPTION_BLANK": "Option cannnot be blank", + "OWNER": "Owner", + "CHANGE_SCOPE": "Change Scope", + "STICKER": "Sticker", + "LAST_ACTIVE_AT": "Last Active At", + "VOICE_CALL": "Voice call", + "VIEW_DETAIL": "View Detail", + "VOTES": "votes", + "VOTE": "vote", + "NO_VOTE": "No vote", + "REACTED": "reacted", + "ADDED": "added", + "UNBANNED": "unbanned", + "MADE": "made", + "CALL_UNANSWERED": "Call unanswered", + "MISSED_AUDIO_CALL": "Missed audio call", + "ENTER_YOUR_PASSWORD": "Enter your password", + "DOCS": "Docs", + "NO_RECORDS_FOUND": "No records found", + "LIVE_REACTION": "Live Reaction", + "SMILEY_PEOPLE": "Smileys & People", + "ANIMALES_NATURE": "Animals & Nature", + "FOOD_DRINK": "Food & Drink", + "ACTIVITY": "Activity", + "TRAVEL_PLACES": "Travel & Places", + "OBJECTS": "Objects", + "SYMBOLS": "Symbols", + "FLAGS": "Flags", + "SENT": "Sent", + "SEEN": "Seen", + "DELIVERED": "Delivered", + "CALLS": "Calls", + "CUSTOM_MESSAGE_LOCATION": "📍Location", + "OFFLINE": "Offline", + "YOU": "You", + "PRIVACY": "Privacy", + "BLOCKED_USERS": "Blocked Users", + "YOU'VE_BLOCKED": "You've blocked", + "NO_PHOTOS": "No Photos", + "NO_VIDEOS": "No Videos", + "NO_DOCUMENTS": "No Documents", + "JOIN": "Join" +} \ No newline at end of file diff --git a/CometChat/resources/localization/locales/es/translation.json b/CometChat/resources/localization/locales/es/translation.json new file mode 100644 index 00000000..a8314d32 --- /dev/null +++ b/CometChat/resources/localization/locales/es/translation.json @@ -0,0 +1,181 @@ +{ + "USERS": "Usuarios", + "CHATS": "Chats", + "GROUPS": "Grupos", + "MORE": "Más", + "MESSAGE_IMAGE": "📷 Imagen", + "MESSAGE_FILE": "📁 Archivo", + "MESSAGE_VIDEO": "📹 Vídeo", + "MESSAGE_AUDIO": "🎵 Audio", + "CUSTOM_MESSAGE": "Tienes un mensaje", + "MISSED_VOICE_CALL": "Llamada de voz perdida", + "MISSED_VIDEO_CALL": "Videollamada perdida", + "CUSTOM_MESSAGE_POLL": "📊 Encuesta", + "CUSTOM_MESSAGE_STICKER": "💟 Pegatina", + "CUSTOM_MESSAGE_DOCUMENT": "📃 Documento", + "CUSTOM_MESSAGE_WHITEBOARD": "📝 Pizarra blanca", + "ONLINE": "En línea", + "ADMINISTRATOR": "Administrador", + "MODERATOR": "Moderador", + "PARTICIPANT": "Participante", + "PUBLIC": "Público", + "PRIVATE": "Privado", + "PASSWORD_PROTECTED": "Protegido con contraseña", + "PRIVACY_AND_SECURITY": "Privacidad y Seguridad", + "PREFERENCES": "Preferencias", + "MEMBERS": "Miembros", + "TODAY": "Hoy", + "YESTERDAY": "Ayer", + "TYPING": "escribiendo...", + "IS_TYPING": "está escribiendo...", + "CLOSE": "Cerrar", + "ENTER_GROUP_NAME": "Introducir nombre de grupo", + "ADD_MEMBERS": "Agregar miembros", + "SEND_MESSAGE": "Enviar mensaje", + "UNBLOCK_USER": "Desbloquear usuario", + "BLOCK_USER": "Bloquear usuario", + "DELETE_AND_EXIT": "Eliminar y salir", + "LEAVE_GROUP": "Salir del grupo", + "CREATE_GROUP": "Crear grupo", + "SHARED_MEDIA": "Medios compartidos", + "VIDEO_CALL": "Videollamada", + "AUDIO_CALL": "Llamada de audio", + "LOADING": "Cargando...", + "REPLY": "responder", + "REPLIES": "respuestas", + "LAUNCH": "Lanzamiento", + "SHARED_COLLABORATIVE_DOCUMENT": "ha compartido un documento colaborativo", + "SHARED_COLLABORATIVE_WHITEBOARD": "ha compartido una pizarra colaborativa", + "CREATED_WHITEBOARD": "Has creado una nueva pizarra colaborativa", + "CREATED_DOCUMENT": "Ha creado un nuevo documento colaborativo", + "PHOTOS": "Fotos", + "VIDEOS": "Vídeos", + "DOCUMENT": "Documento", + "YOU_DELETED_THIS_MESSAGE": "⚠️ Has eliminado este mensaje", + "THIS_MESSAGE_DELETED": "⚠️ Este mensaje fue eliminado", + "VIEW_ON_YOUTUBE": "Ver en Youtube", + "SEARCH": "Buscar", + "NO_USERS_FOUND": "No se han encontrado usuarios", + "ERROR": "Error", + "NO_GROUPS_FOUND": "No se han encontrado grupos", + "NO_CHATS_FOUND": "No se encontraron chats", + "MEDIA_MESSAGE": "Mensaje multimedia", + "INCOMING_AUDIO_CALL": "Llamada de audio entrante", + "INCOMING_VIDEO_CALL": "Videollamada entrante", + "DECLINE": "Declive", + "ACCEPT": "Aceptar", + "CALL_INITIATED": "Llamada iniciada", + "OUTGOING_AUDIO_CALL": "Llamada de audio saliente", + "OUTGOING_VIDEO_CALL": "Videollamada saliente", + "CALL_REJECTED": "Llamada rechazada", + "REJECTED_CALL": "llamada rechazada", + "CALL_ACCEPTED": "Llamada aceptada", + "JOINED": "se unieron", + "LEFT_THE_CALL": "dejó la llamada", + "UNANSWERED_AUDIO_CALL": "Llamada de audio sin respuesta", + "UNANSWERED_VIDEO_CALL": "Videollamada sin respuesta", + "CALL_ENDED": "Llamada finalizada", + "CALL_CANCELLED": "Llamada cancelada", + "CALL_BUSY": "Llamada ocupada", + "CALLING": "Llamando...", + "ADD": "Añadir", + "NO_BANNED_MEMBERS_FOUND": "No se encontraron miembros prohibidos", + "BANNED_MEMBERS": "Miembros prohibidos", + "NAME": "Nombre", + "SCOPE": "Ámbito", + "UNBAN": "Unban la prohibición", + "SELECT_GROUP_TYPE": "Seleccionar tipo de grupo", + "ENTER_GROUP_PASSWORD": "Introducir contraseña de grupo", + "CREATE": "Crear", + "CREATE_POLL": "Crear encuesta", + "QUESTION": "Pregunta", + "ENTER_YOUR_QUESTION": "Introduce tu pregunta", + "OPTIONS": "Opciones", + "ENTER_YOUR_OPTION": "Introduce tu opción", + "ADD_NEW_OPTION": "Agregar nueva opción", + "VIEW_MEMBERS": "Ver miembros", + "DETAILS": "Detalles", + "NOTIFICATIONS": "Notificaciones", + "OTHER": "Otro", + "HELP": "Ayudar", + "REPORT_PROBLEM": "Informar de un problema", + "GROUP_MEMBERS": "Miembros del grupo", + "BAN": "Prohibición", + "KICK": "Patada", + "PICK_YOUR_EMOJI": "Elige tu emoji", + "PRIVATE_GROUP": "Grupo Privado", + "PROTECTED_GROUP": "Grupo protegido", + "VISIT": "Visitar", + "ATTACH": "Adjuntar", + "ATTACH_FILE": "Adjuntar archivo", + "ATTACH_VIDEO": "Adjuntar vídeo", + "ATTACH_AUDIO": "Adjuntar audio", + "ATTACH_IMAGE": "Adjuntar imagen", + "COLLABORATE_USING_DOCUMENT": "Colaborar con un documento", + "COLLABORATE_USING_WHITEBOARD": "Colaborar con una pizarra", + "EMOJI": "Emoji", + "ENTER_YOUR_MESSAGE_HERE": "Introduzca su mensaje aquí", + "NO_MESSAGES_FOUND": "No se han encontrado mensajes", + "THREAD": "Rosca", + "COLLABORATIVE_DOCUMENT": "Documento colaborativo", + "COLLABORATIVE_WHITEBOARD": "Pizarra colaborativa", + "ADD_REACTION": "Añadir reacción", + "NO_STICKERS_FOUND": "No se encontraron pegatinas", + "REPLY_TO_THREAD": "Responder al hilo", + "REPLY_IN_THREAD": "Responder en hilo", + "DELETE_MESSAGE": "Eliminar mensaje", + "EDIT_MESSAGE": "Editar mensaje", + "SUNDAY": "DOMINGO", + "MONDAY": "LUNES", + "TUESDAY": "MARTES", + "WEDNESDAY": "MIÉRCOLES", + "THURSDAY": "JUEVES", + "FRIDAY": "VIERNES", + "SATURDAY": "SÁBADO", + "GROUP_NAME_BLANK": "El nombre del grupo no puede estar en blanco", + "GROUP_TYPE_BLANK": "El tipo de grupo no puede estar en blanco", + "GROUP_PASSWORD_BLANK": "La contraseña de grupo no puede estar en blanco", + "POLL_QUESTION_BLANK": "La pregunta no puede estar en blanco", + "POLL_OPTION_BLANK": "La opción no puede estar en blanco", + "OWNER": "Propietario", + "CHANGE_SCOPE": "Cambiar ámbito", + "STICKER": "Pegatina", + "LAST_ACTIVE_AT": "Último activo en", + "VOICE_CALL": "Llamada de voz", + "VIEW_DETAIL": "Ver detalle", + "VOTES": "votos", + "VOTE": "Votar", + "NO_VOTE": "Sin voto", + "REACTED": "reaccionó", + "ADDED": "añadido", + "UNBANNED": "no prohibida", + "MADE": "hecho", + "CALL_UNANSWERED": "Llamada sin respuesta", + "MISSED_AUDIO_CALL": "Llamada de audio perdida", + "ENTER_YOUR_PASSWORD": "Introduce tu contraseña", + "DOCS": "Documentos", + "NO_RECORDS_FOUND": "No se encontraron registros", + "LIVE_REACTION": "Reacción en vivo", + "SMILEY_PEOPLE": "Smileys & Gente", + "ANIMALES_NATURE": "Animales y Naturaleza", + "FOOD_DRINK": "Comida y bebida", + "ACTIVITY": "Actividad", + "TRAVEL_PLACES": "Viajes y Lugares", + "OBJECTS": "Objetos", + "SYMBOLS": "Símbolos", + "FLAGS": "Banderas", + "SENT": "Enviado", + "SEEN": "Visto", + "DELIVERED": "Entregado", + "CALLS": "Llamadas", + "CUSTOM_MESSAGE_LOCATION": "📍 Ubicación", + "OFFLINE": "Offline", + "YOU": "Usted", + "PRIVACY": "Privacidad", + "BLOCKED_USERS": "Usuarios bloqueados", + "YOU'VE_BLOCKED": "Has bloqueado", + "NO_PHOTOS": "No hay fotos", + "NO_VIDEOS": "No hay vídeos", + "NO_DOCUMENTS": "Sin documentos", + "JOIN": "Joi" +} \ No newline at end of file diff --git a/CometChat/resources/localization/locales/fr/translation.json b/CometChat/resources/localization/locales/fr/translation.json new file mode 100644 index 00000000..b868e897 --- /dev/null +++ b/CometChat/resources/localization/locales/fr/translation.json @@ -0,0 +1,181 @@ +{ + "USERS": "Utilisateurs", + "CHATS": "Discussions", + "GROUPS": "Groupes", + "MORE": "Plus", + "MESSAGE_IMAGE": "📷 Image", + "MESSAGE_FILE": "📁 Fichier", + "MESSAGE_VIDEO": "📹 Vidéo", + "MESSAGE_AUDIO": "🎵 Audio", + "CUSTOM_MESSAGE": "Vous avez un message", + "MISSED_VOICE_CALL": "Appel vocal manqué", + "MISSED_VIDEO_CALL": "Appel vidéo manqué", + "CUSTOM_MESSAGE_POLL": "📊 Sondage", + "CUSTOM_MESSAGE_STICKER": "💟 Autocollant", + "CUSTOM_MESSAGE_DOCUMENT": "📃 Document", + "CUSTOM_MESSAGE_WHITEBOARD": "📝 Tableau blanc", + "ONLINE": "En ligne", + "ADMINISTRATOR": "Administrateur", + "MODERATOR": "Modérateur", + "PARTICIPANT": "Participant", + "PUBLIC": "Public", + "PRIVATE": "Privé", + "PASSWORD_PROTECTED": "Mot de passe", + "PRIVACY_AND_SECURITY": "Confidentialité et sécurité", + "PREFERENCES": "Préférences", + "MEMBERS": "Membres", + "TODAY": "Aujourd'hui", + "YESTERDAY": "Hier", + "TYPING": "dactylographie...", + "IS_TYPING": "est en train de taper...", + "CLOSE": "Fermer", + "ENTER_GROUP_NAME": "Saisir le nom du groupe", + "ADD_MEMBERS": "Ajouter des membres", + "SEND_MESSAGE": "Envoyer un message", + "UNBLOCK_USER": "Débloquer l'utilisateur", + "BLOCK_USER": "Bloquer l'utilisateur", + "DELETE_AND_EXIT": "Supprimer et quitter", + "LEAVE_GROUP": "Groupe de congé", + "CREATE_GROUP": "Créer un groupe", + "SHARED_MEDIA": "Médias partagés", + "VIDEO_CALL": "Appel vidéo", + "AUDIO_CALL": "Appel audio", + "LOADING": "Chargement...", + "REPLY": "répondre", + "REPLIES": "réponses", + "LAUNCH": "Lancement", + "SHARED_COLLABORATIVE_DOCUMENT": "a partagé un document collaboratif", + "SHARED_COLLABORATIVE_WHITEBOARD": "a partagé un tableau blanc collaboratif", + "CREATED_WHITEBOARD": "Vous avez créé un nouveau tableau blanc collaboratif", + "CREATED_DOCUMENT": "Vous avez créé un nouveau document collaboratif", + "PHOTOS": "Photos", + "VIDEOS": "Vidéos", + "DOCUMENT": "Document", + "YOU_DELETED_THIS_MESSAGE": "⚠️ Vous avez supprimé ce message", + "THIS_MESSAGE_DELETED": "⚠️ Ce message a été supprimé", + "VIEW_ON_YOUTUBE": "Voir sur Youtube", + "SEARCH": "Rechercher", + "NO_USERS_FOUND": "Aucun utilisateur trouvé", + "ERROR": "Erreur", + "NO_GROUPS_FOUND": "Aucun groupe trouvé", + "NO_CHATS_FOUND": "Aucun chat trouvé", + "MEDIA_MESSAGE": "Message pour les médias", + "INCOMING_AUDIO_CALL": "Appel audio entrant", + "INCOMING_VIDEO_CALL": "Appel vidéo entrant", + "DECLINE": "Refuser", + "ACCEPT": "Accepter", + "CALL_INITIATED": "Appel lancé", + "OUTGOING_AUDIO_CALL": "Appel audio sortant", + "OUTGOING_VIDEO_CALL": "Appel vidéo sortant", + "CALL_REJECTED": "Appel rejeté", + "REJECTED_CALL": "appel rejeté", + "CALL_ACCEPTED": "Appel accepté", + "JOINED": "joint", + "LEFT_THE_CALL": "a quitté l'appel", + "UNANSWERED_AUDIO_CALL": "Appel audio sans réponse", + "UNANSWERED_VIDEO_CALL": "Appel vidéo sans réponse", + "CALL_ENDED": "Appel terminé", + "CALL_CANCELLED": "Appel annulé", + "CALL_BUSY": "Appeler occupé", + "CALLING": "Appeler...", + "ADD": "Ajouter", + "NO_BANNED_MEMBERS_FOUND": "Aucun membre interdit n'a été trouvé", + "BANNED_MEMBERS": "Membres interdits", + "NAME": "Nom", + "SCOPE": "Portée", + "UNBAN": "Unban", + "SELECT_GROUP_TYPE": "Sélectionner le type de groupe", + "ENTER_GROUP_PASSWORD": "Saisir le mot de passe", + "CREATE": "Créer", + "CREATE_POLL": "Créer un sondage", + "QUESTION": "Question", + "ENTER_YOUR_QUESTION": "Saisissez votre question", + "OPTIONS": "Options", + "ENTER_YOUR_OPTION": "Saisissez votre option", + "ADD_NEW_OPTION": "Ajouter une nouvelle option", + "VIEW_MEMBERS": "Afficher les membres", + "DETAILS": "Détails", + "NOTIFICATIONS": "Notifications", + "OTHER": "Autres", + "HELP": "Aide", + "REPORT_PROBLEM": "Signaler un problème", + "GROUP_MEMBERS": "Membres du groupe", + "BAN": "Interdiction", + "KICK": "Coup de pied", + "PICK_YOUR_EMOJI": "Choisissez vos emoji", + "PRIVATE_GROUP": "Groupe privé", + "PROTECTED_GROUP": "Groupe protégé", + "VISIT": "Visitez", + "ATTACH": "Attacher", + "ATTACH_FILE": "Joindre le fichier", + "ATTACH_VIDEO": "Joindre une vidéo", + "ATTACH_AUDIO": "Attacher audio", + "ATTACH_IMAGE": "Joindre l'image", + "COLLABORATE_USING_DOCUMENT": "Collaborer à l'aide d'un document", + "COLLABORATE_USING_WHITEBOARD": "Collaborez à l'aide d'un tableau blanc", + "EMOJI": "Emoji", + "ENTER_YOUR_MESSAGE_HERE": "Entrez votre message ici", + "NO_MESSAGES_FOUND": "Aucun message trouvé", + "THREAD": "Fil", + "COLLABORATIVE_DOCUMENT": "Document collaboratif", + "COLLABORATIVE_WHITEBOARD": "Tableau blanc collaboratif", + "ADD_REACTION": "Ajouter une réaction", + "NO_STICKERS_FOUND": "Aucun autocollant trouvé", + "REPLY_TO_THREAD": "Répondre au fil", + "REPLY_IN_THREAD": "Répondre dans le thread", + "DELETE_MESSAGE": "Supprimer un message", + "EDIT_MESSAGE": "Modifier le message", + "SUNDAY": "DIMANCHE", + "MONDAY": "LUNDI", + "TUESDAY": "MARDI", + "WEDNESDAY": "MERCREDI", + "THURSDAY": "JEUDI", + "FRIDAY": "VENDREDI", + "SATURDAY": "SAMEDI", + "GROUP_NAME_BLANK": "Le nom du groupe ne peut pas être vide", + "GROUP_TYPE_BLANK": "Le type de groupe ne peut pas être vide", + "GROUP_PASSWORD_BLANK": "Le mot de passe du groupe ne peut pas être vide", + "POLL_QUESTION_BLANK": "La question ne peut pas être vide", + "POLL_OPTION_BLANK": "Option ne peut pas être vide", + "OWNER": "Propriétaire", + "CHANGE_SCOPE": "Modifier l'étendue", + "STICKER": "Autocollant", + "LAST_ACTIVE_AT": "Dernier actif à", + "VOICE_CALL": "Appel vocal", + "VIEW_DETAIL": "Afficher les détails", + "VOTES": "votes", + "VOTE": "vote", + "NO_VOTE": "Pas de vote", + "REACTED": "réagissait", + "ADDED": "ajoutée", + "UNBANNED": "non interdite", + "MADE": "confectionné", + "CALL_UNANSWERED": "Appel sans réponse", + "MISSED_AUDIO_CALL": "Appel audio manqué", + "ENTER_YOUR_PASSWORD": "Entrez votre mot de passe", + "DOCS": "Docs", + "NO_RECORDS_FOUND": "Aucun enregistrement trouvé", + "LIVE_REACTION": "Réaction en direct", + "SMILEY_PEOPLE": "Smileys & Personnes", + "ANIMALES_NATURE": "Animaux & Nature", + "FOOD_DRINK": "Nourriture et boissons", + "ACTIVITY": "Activité", + "TRAVEL_PLACES": "Voyages & Lieux", + "OBJECTS": "Objets", + "SYMBOLS": "Symboles", + "FLAGS": "Drapeaux", + "SENT": "Envoyé", + "SEEN": "Vu", + "DELIVERED": "Livré", + "CALLS": "Appels", + "CUSTOM_MESSAGE_LOCATION": "📍 Emplacement", + "OFFLINE": "Hors ligne", + "YOU": "Vous", + "PRIVACY": "Vie privée", + "BLOCKED_USERS": "Utilisateurs bloqués", + "YOU'VE_BLOCKED": "Vous avez bloqué", + "NO_PHOTOS": "Pas de photos", + "NO_VIDEOS": "Pas de vidéos", + "NO_DOCUMENTS": "Aucun document", + "JOIN": "Joii" +} \ No newline at end of file diff --git a/CometChat/resources/localization/locales/hi/translation.json b/CometChat/resources/localization/locales/hi/translation.json new file mode 100644 index 00000000..1547ca62 --- /dev/null +++ b/CometChat/resources/localization/locales/hi/translation.json @@ -0,0 +1,181 @@ +{ + "USERS": "उपयोक्ता", + "CHATS": "चैट", + "GROUPS": "समूह", + "MORE": "अधिक", + "MESSAGE_IMAGE": "📷 छवि", + "MESSAGE_FILE": "📁 फ़ाइल", + "MESSAGE_VIDEO": "📹 वीडियो", + "MESSAGE_AUDIO": "🎵 ऑडियो", + "CUSTOM_MESSAGE": "आपके पास एक संदेश है", + "MISSED_VOICE_CALL": "मिस्ड वॉयस कॉल", + "MISSED_VIDEO_CALL": "मिस्ड वीडियो कॉल", + "CUSTOM_MESSAGE_POLL": "📊 पोल", + "CUSTOM_MESSAGE_STICKER": "💟 स्टीकर", + "CUSTOM_MESSAGE_DOCUMENT": "📃 दस्तावेज़", + "CUSTOM_MESSAGE_WHITEBOARD": "📝 व्हाइटबोर्ड", + "ONLINE": "ऑनलाइन", + "ADMINISTRATOR": "प्रशासक", + "MODERATOR": "मॉडरेटर", + "PARTICIPANT": "प्रतिभागी", + "PUBLIC": "पब्लिक", + "PRIVATE": "निजी", + "PASSWORD_PROTECTED": "कूटशब्द सुरक्षित", + "PRIVACY_AND_SECURITY": "गोपनीयता और सुरक्षा", + "PREFERENCES": "प्राथमिकताएं", + "MEMBERS": "सदस्य", + "TODAY": "आज", + "YESTERDAY": "कल", + "TYPING": "टाइपिंग...", + "IS_TYPING": "टाइप कर रहा है...", + "CLOSE": "बंद करें", + "ENTER_GROUP_NAME": "समूह नाम भरें", + "ADD_MEMBERS": "सदस्य जोड़ें", + "SEND_MESSAGE": "संदेश भेजें", + "UNBLOCK_USER": "उपयोगकर्ता अनवरोधित करें", + "BLOCK_USER": "अवरोधित उपयोक्ता", + "DELETE_AND_EXIT": "मिटाएँ और बाहर निकलें", + "LEAVE_GROUP": "समूह छोड़ें", + "CREATE_GROUP": "समूह बनाएँ", + "SHARED_MEDIA": "साझा मीडिया", + "VIDEO_CALL": "वीडियो कॉल", + "AUDIO_CALL": "ऑडियो कॉल", + "LOADING": "लोड हो रहा है...", + "REPLY": "उत्तर", + "REPLIES": "उत्तर", + "LAUNCH": "लांच", + "SHARED_COLLABORATIVE_DOCUMENT": "ने एक सहयोगी दस्तावेज़ साझा किया है", + "SHARED_COLLABORATIVE_WHITEBOARD": "ने एक सहयोगी व्हाइटबोर्ड साझा किया है", + "CREATED_WHITEBOARD": "आपने एक नया सहयोगी व्हाइटबोर्ड बनाया है", + "CREATED_DOCUMENT": "आपने एक नया सहयोगी दस्तावेज़ बनाया है", + "PHOTOS": "तस्वीरें", + "VIDEOS": "वीडियो", + "DOCUMENT": "दस्तावेज़", + "YOU_DELETED_THIS_MESSAGE": "⚠️ आपने यह संदेश हटा दिया है", + "THIS_MESSAGE_DELETED": "⚠️ यह संदेश मिटाया गया था", + "VIEW_ON_YOUTUBE": "यूट्यूब पर देखें", + "SEARCH": "खोज", + "NO_USERS_FOUND": "कोई उपयोक्ता नहीं मिला", + "ERROR": "त्रुटि", + "NO_GROUPS_FOUND": "कोई समूह नहीं मिला", + "NO_CHATS_FOUND": "कोई चैट नहीं मिला", + "MEDIA_MESSAGE": "मीडिया संदेश", + "INCOMING_AUDIO_CALL": "आवक ऑडियो कॉल", + "INCOMING_VIDEO_CALL": "आने वाली वीडियो कॉल", + "DECLINE": "अस्वीकार", + "ACCEPT": "स्वीकार करें", + "CALL_INITIATED": "कॉल आरंभिक", + "OUTGOING_AUDIO_CALL": "जावक ऑडियो कॉल", + "OUTGOING_VIDEO_CALL": "जावक वीडियो कॉल", + "CALL_REJECTED": "कॉल अस्वीकृत", + "REJECTED_CALL": "अस्वीकृत कॉल", + "CALL_ACCEPTED": "कॉल स्वीकृत", + "JOINED": "शामिल हो गए", + "LEFT_THE_CALL": "कॉल छोड़ दिया", + "UNANSWERED_AUDIO_CALL": "अनुत्तरित ऑडियो कॉल", + "UNANSWERED_VIDEO_CALL": "अनुत्तरित वीडियो कॉल", + "CALL_ENDED": "कॉल समाप्त", + "CALL_CANCELLED": "कॉल रद्द", + "CALL_BUSY": "व्यस्त कॉल करें", + "CALLING": "कॉल कर रहा है...", + "ADD": "जोड़ें", + "NO_BANNED_MEMBERS_FOUND": "कोई प्रतिबंधित सदस्य नहीं मिला", + "BANNED_MEMBERS": "प्रतिबंधित सदस्य", + "NAME": "नाम", + "SCOPE": "स्कोप", + "UNBAN": "Unban", + "SELECT_GROUP_TYPE": "समूह क़िस्म चुनें", + "ENTER_GROUP_PASSWORD": "समूह कूटशब्द भरें", + "CREATE": "बनाएँ", + "CREATE_POLL": "सर्वेक्षण बनाएँ", + "QUESTION": "प्रश्न", + "ENTER_YOUR_QUESTION": "अपना प्रश्न दर्ज करें", + "OPTIONS": "विकल्प", + "ENTER_YOUR_OPTION": "अपना विकल्प दर्ज करें", + "ADD_NEW_OPTION": "नया विकल्प जोड़ें", + "VIEW_MEMBERS": "सदस्य देखें", + "DETAILS": "विवरण", + "NOTIFICATIONS": "सूचनाएँ", + "OTHER": "अन्य", + "HELP": "मदद", + "REPORT_PROBLEM": "किसी समस्या की रिपोर्ट करें", + "GROUP_MEMBERS": "समूह के सदस्य", + "BAN": "बान", + "KICK": "लात", + "PICK_YOUR_EMOJI": "अपने इमोजी उठाओ", + "PRIVATE_GROUP": "निजी समूह", + "PROTECTED_GROUP": "सुरक्षित समूह", + "VISIT": "विज़िट करें", + "ATTACH": "संलग्न करें", + "ATTACH_FILE": "फ़ाइल संलग्न करें", + "ATTACH_VIDEO": "वीडियो संलग्न करें", + "ATTACH_AUDIO": "ऑडियो संलग्न करें", + "ATTACH_IMAGE": "छवि संलग्न करें", + "COLLABORATE_USING_DOCUMENT": "दस्तावेज़ का उपयोग करके सहयोग करें", + "COLLABORATE_USING_WHITEBOARD": "व्हाइटबोर्ड का उपयोग करके सहयोग करें", + "EMOJI": "इमोजी", + "ENTER_YOUR_MESSAGE_HERE": "अपना संदेश यहाँ दर्ज करें", + "NO_MESSAGES_FOUND": "कोई संदेश नहीं मिला", + "THREAD": "धागा", + "COLLABORATIVE_DOCUMENT": "सहयोगी दस्तावेज़", + "COLLABORATIVE_WHITEBOARD": "सहयोगी व्हाइटबोर्ड", + "ADD_REACTION": "प्रतिक्रिया जोड़ें", + "NO_STICKERS_FOUND": "कोई स्टिकर नहीं मिला", + "REPLY_TO_THREAD": "थ्रेड को जवाब दें", + "REPLY_IN_THREAD": "थ्रेड में जवाब दें", + "DELETE_MESSAGE": "संदेश मिटाएँ", + "EDIT_MESSAGE": "संदेश संपादित करें", + "SUNDAY": "रविवार", + "MONDAY": "सोमवार", + "TUESDAY": "मंगलवार", + "WEDNESDAY": "बुधवार", + "THURSDAY": "गुरुवार", + "FRIDAY": "शुक्रवार", + "SATURDAY": "शनिवार", + "GROUP_NAME_BLANK": "समूह का नाम खाली नहीं होना चाहिए", + "GROUP_TYPE_BLANK": "समूह प्रकार कैननॉट खाली हो", + "GROUP_PASSWORD_BLANK": "समूह कूटशब्द खाली नहीं होना चाहिए", + "POLL_QUESTION_BLANK": "प्रश्न कैनॉट खाली हो", + "POLL_OPTION_BLANK": "विकल्प कैननॉट खाली हो", + "OWNER": "मालिक", + "CHANGE_SCOPE": "स्कोप बदलें", + "STICKER": "स्टीकर", + "LAST_ACTIVE_AT": "पर अंतिम सक्रिय", + "VOICE_CALL": "वॉयस कॉल", + "VIEW_DETAIL": "विवरण देखें", + "VOTES": "वोट", + "VOTE": "वोट", + "NO_VOTE": "कोई वोट नहीं", + "REACTED": "प्रतिक्रिया व्यक्त की", + "ADDED": "जोड़ा गया", + "UNBANNED": "अप्रतिबंधित", + "MADE": "बनाया", + "CALL_UNANSWERED": "अनुत्तरित कॉल करें", + "MISSED_AUDIO_CALL": "मिस ऑडियो कॉल", + "ENTER_YOUR_PASSWORD": "अपना पासवर्ड दर्ज करें", + "DOCS": "डॉक्स", + "NO_RECORDS_FOUND": "कोई रिकॉर्ड नहीं मिला", + "LIVE_REACTION": "लाइव रिएक्शन", + "SMILEY_PEOPLE": "स्माइली और लोग", + "ANIMALES_NATURE": "पशु और प्रकृति", + "FOOD_DRINK": "खाद्य और पेय", + "ACTIVITY": "गतिविधि", + "TRAVEL_PLACES": "यात्रा और स्थान", + "OBJECTS": "वस्तुएँ", + "SYMBOLS": "प्रतीक", + "FLAGS": "झंडे", + "SENT": "भेजा गया", + "SEEN": "देखा", + "DELIVERED": "डिलीवर", + "CALLS": "कॉल", + "CUSTOM_MESSAGE_LOCATION": "📍 स्थान", + "OFFLINE": "ऑफ़लाइन", + "YOU": "आप", + "PRIVACY": "निजता", + "BLOCKED_USERS": "अवरोधित उपयोगकर्ता", + "YOU'VE_BLOCKED": "आपने अवरोधित किया है", + "NO_PHOTOS": "कोई तस्वीरें नहीं", + "NO_VIDEOS": "कोई वीडियो नहीं", + "NO_DOCUMENTS": "कोई दस्तावेज़ नहीं", + "JOIN": "जॉय" +} \ No newline at end of file diff --git a/CometChat/resources/localization/locales/ms/translation.json b/CometChat/resources/localization/locales/ms/translation.json new file mode 100644 index 00000000..68b06229 --- /dev/null +++ b/CometChat/resources/localization/locales/ms/translation.json @@ -0,0 +1,181 @@ +{ + "USERS": "Pengguna", + "CHATS": "Sembang", + "GROUPS": "Kumpulan", + "MORE": "Lagi", + "MESSAGE_IMAGE": "📷 Imej", + "MESSAGE_FILE": "📁 Fail", + "MESSAGE_VIDEO": "📹 Video", + "MESSAGE_AUDIO": "🎵 Audio", + "CUSTOM_MESSAGE": "Anda mempunyai mesej", + "MISSED_VOICE_CALL": "Panggilan suara tidak dijawab", + "MISSED_VIDEO_CALL": "Panggilan video tidak dijawab", + "CUSTOM_MESSAGE_POLL": "📊 Undian", + "CUSTOM_MESSAGE_STICKER": "💟 Pelekat", + "CUSTOM_MESSAGE_DOCUMENT": "📃 Dokumen", + "CUSTOM_MESSAGE_WHITEBOARD": "📝 Papan Putih", + "ONLINE": "Dalam Talian", + "ADMINISTRATOR": "Pentadbir", + "MODERATOR": "Moderator", + "PARTICIPANT": "Peserta", + "PUBLIC": "Awam", + "PRIVATE": "Persendirian", + "PASSWORD_PROTECTED": "Dilindungi", + "PRIVACY_AND_SECURITY": "Privasi dan Keselamatan", + "PREFERENCES": "Keutamaan", + "MEMBERS": "Ahli-ahli", + "TODAY": "Hari ini", + "YESTERDAY": "Semalam", + "TYPING": "menaip...", + "IS_TYPING": "sedang menaip...", + "CLOSE": "Tutup", + "ENTER_GROUP_NAME": "Masukkan nama kumpulan", + "ADD_MEMBERS": "Tambah Ahli", + "SEND_MESSAGE": "Hantar Mesej", + "UNBLOCK_USER": "Nyahsekat Pengguna", + "BLOCK_USER": "Sekat Pengguna", + "DELETE_AND_EXIT": "Padam dan Keluar", + "LEAVE_GROUP": "Tinggalkan Kumpulan", + "CREATE_GROUP": "Cipta Kumpulan", + "SHARED_MEDIA": "Media Kongsi", + "VIDEO_CALL": "Panggilan video", + "AUDIO_CALL": "Panggilan audio", + "LOADING": "Memuatkan...", + "REPLY": "jawapan", + "REPLIES": "balasannya", + "LAUNCH": "Pelancaran", + "SHARED_COLLABORATIVE_DOCUMENT": "telah berkongsi dokumen kolaboratif", + "SHARED_COLLABORATIVE_WHITEBOARD": "telah berkongsi papan putih kolaboratif", + "CREATED_WHITEBOARD": "Anda telah membuat papan putih kolaboratif baru", + "CREATED_DOCUMENT": "Anda telah membuat dokumen kolaboratif baru", + "PHOTOS": "Foto", + "VIDEOS": "Video", + "DOCUMENT": "Dokumen", + "YOU_DELETED_THIS_MESSAGE": "⚠️ Anda memadam mesej ini", + "THIS_MESSAGE_DELETED": "⚠️ Mesej ini telah dipadamkan", + "VIEW_ON_YOUTUBE": "Lihat di Youtube", + "SEARCH": "Cari", + "NO_USERS_FOUND": "Tiada pengguna ditemui", + "ERROR": "Ralat", + "NO_GROUPS_FOUND": "Tiada kumpulan ditemui", + "NO_CHATS_FOUND": "Tiada sembang ditemui", + "MEDIA_MESSAGE": "Mesej media", + "INCOMING_AUDIO_CALL": "Panggilan audio masuk", + "INCOMING_VIDEO_CALL": "Panggilan video masuk", + "DECLINE": "Tolak", + "ACCEPT": "Terima", + "CALL_INITIATED": "Panggilan dimulakan", + "OUTGOING_AUDIO_CALL": "Panggilan audio keluar", + "OUTGOING_VIDEO_CALL": "Panggilan video keluar", + "CALL_REJECTED": "Panggilan ditolak", + "REJECTED_CALL": "panggilan ditolak", + "CALL_ACCEPTED": "Panggilan diterima", + "JOINED": "menyertai", + "LEFT_THE_CALL": "meninggalkan panggilan", + "UNANSWERED_AUDIO_CALL": "Panggilan audio tidak dijawab", + "UNANSWERED_VIDEO_CALL": "Panggilan video tidak dijawab", + "CALL_ENDED": "Panggilan berakhir", + "CALL_CANCELLED": "Panggilan dibatalkan", + "CALL_BUSY": "Panggilan sibuk", + "CALLING": "Memanggil...", + "ADD": "Tambah", + "NO_BANNED_MEMBERS_FOUND": "Tiada ahli yang diharamkan ditemui", + "BANNED_MEMBERS": "Ahli diharamkan", + "NAME": "Nama", + "SCOPE": "Skop", + "UNBAN": "Unban", + "SELECT_GROUP_TYPE": "Pilih jenis kumpulan", + "ENTER_GROUP_PASSWORD": "Masukkan kata laluan kumpulan", + "CREATE": "Cipta", + "CREATE_POLL": "Buat Undian", + "QUESTION": "Soalan", + "ENTER_YOUR_QUESTION": "Masukkan soalan anda", + "OPTIONS": "Pilihan", + "ENTER_YOUR_OPTION": "Masukkan pilihan anda", + "ADD_NEW_OPTION": "Tambah opsyen baru", + "VIEW_MEMBERS": "Lihat Ahli", + "DETAILS": "Perincian", + "NOTIFICATIONS": "Pemberitahuan", + "OTHER": "Lain-lain", + "HELP": "Bantuan", + "REPORT_PROBLEM": "Laporkan Masalah", + "GROUP_MEMBERS": "Ahli Kumpulan", + "BAN": "Ban", + "KICK": "Kick", + "PICK_YOUR_EMOJI": "Pilih emoji anda", + "PRIVATE_GROUP": "Kumpulan Persendirian", + "PROTECTED_GROUP": "Kumpulan Terlindung", + "VISIT": "Lawati", + "ATTACH": "Lampirkan", + "ATTACH_FILE": "Lampirkan fail", + "ATTACH_VIDEO": "Lampirkan video", + "ATTACH_AUDIO": "Lampirkan audio", + "ATTACH_IMAGE": "Lampirkan imej", + "COLLABORATE_USING_DOCUMENT": "Berkolaborasi menggunakan dokumen", + "COLLABORATE_USING_WHITEBOARD": "Berkolaborasi menggunakan papan putih", + "EMOJI": "Emotikon", + "ENTER_YOUR_MESSAGE_HERE": "Masukkan mesej anda di sini", + "NO_MESSAGES_FOUND": "Tiada mesej ditemui", + "THREAD": "Thread", + "COLLABORATIVE_DOCUMENT": "Dokumen Kerjasama", + "COLLABORATIVE_WHITEBOARD": "Papan Putih Kolaboratif", + "ADD_REACTION": "Tambah reaksi", + "NO_STICKERS_FOUND": "Tiada pelekat ditemui", + "REPLY_TO_THREAD": "Balas kepada bebenang", + "REPLY_IN_THREAD": "Balas dalam bebenang", + "DELETE_MESSAGE": "Padam mesej", + "EDIT_MESSAGE": "Sunting mesej", + "SUNDAY": "AHAD", + "MONDAY": "ISNIN", + "TUESDAY": "SELASA", + "WEDNESDAY": "RABU", + "THURSDAY": "KHAMIS", + "FRIDAY": "JUMAAT", + "SATURDAY": "SABTU", + "GROUP_NAME_BLANK": "Nama kumpulan tidak boleh kosong", + "GROUP_TYPE_BLANK": "Jenis kumpulan meriam tidak kosong", + "GROUP_PASSWORD_BLANK": "Kata laluan kumpulan tidak boleh kosong", + "POLL_QUESTION_BLANK": "Soalan meriam tidak kosong", + "POLL_OPTION_BLANK": "Opsyen meriam tidak kosong", + "OWNER": "Pemilik", + "CHANGE_SCOPE": "Tukar Skop", + "STICKER": "Pelekat", + "LAST_ACTIVE_AT": "Terakhir Aktif di", + "VOICE_CALL": "Panggilan suara", + "VIEW_DETAIL": "Lihat Perincian", + "VOTES": "undi", + "VOTE": "undi", + "NO_VOTE": "Tiada undi", + "REACTED": "bertindak balas", + "ADDED": "campurkan", + "UNBANNED": "tidak diharamkan", + "MADE": "diperbuat", + "CALL_UNANSWERED": "Panggilan tidak dijawab", + "MISSED_AUDIO_CALL": "Panggilan audio tidak dijawab", + "ENTER_YOUR_PASSWORD": "Masukkan kata laluan anda", + "DOCS": "Dokumen", + "NO_RECORDS_FOUND": "Tiada rekod ditemui", + "LIVE_REACTION": "Reaksi Langsung", + "SMILEY_PEOPLE": "Smiley & People", + "ANIMALES_NATURE": "Haiwan & Alam Semula Jadi", + "FOOD_DRINK": "Makanan & Minuman", + "ACTIVITY": "Aktiviti", + "TRAVEL_PLACES": "Perjalanan & Tempat", + "OBJECTS": "Objek", + "SYMBOLS": "Simbol", + "FLAGS": "Bendera", + "SENT": "Dihantar", + "SEEN": "Seen", + "DELIVERED": "Dihantar", + "CALLS": "Panggilan", + "CUSTOM_MESSAGE_LOCATION": "📍 Lokasi", + "OFFLINE": "Luar Talian", + "YOU": "Anda", + "PRIVACY": "Privasi", + "BLOCKED_USERS": "Pengguna Dihalang", + "YOU'VE_BLOCKED": "Anda telah menyekat", + "NO_PHOTOS": "Tiada Foto", + "NO_VIDEOS": "Tiada Video", + "NO_DOCUMENTS": "Tiada Dokumen", + "JOIN": "Joi" +} \ No newline at end of file diff --git a/CometChat/resources/localization/locales/pt/translation.json b/CometChat/resources/localization/locales/pt/translation.json new file mode 100644 index 00000000..becfa110 --- /dev/null +++ b/CometChat/resources/localization/locales/pt/translation.json @@ -0,0 +1,181 @@ +{ + "USERS": "Usuários", + "CHATS": "Bate-papo", + "GROUPS": "Grupos", + "MORE": "Mais", + "MESSAGE_IMAGE": "📷 Imagem", + "MESSAGE_FILE": "📁 Arquivo", + "MESSAGE_VIDEO": "📹 Vídeo", + "MESSAGE_AUDIO": "🎵 Áudio", + "CUSTOM_MESSAGE": "Você tem uma mensagem", + "MISSED_VOICE_CALL": "Chamada de voz perdida", + "MISSED_VIDEO_CALL": "Chamada de vídeo perdida", + "CUSTOM_MESSAGE_POLL": "📊 Enquete", + "CUSTOM_MESSAGE_STICKER": "💟 Adesivo", + "CUSTOM_MESSAGE_DOCUMENT": "📃 Documento", + "CUSTOM_MESSAGE_WHITEBOARD": "📝 quadro branco", + "ONLINE": "On-line", + "ADMINISTRATOR": "Administrador", + "MODERATOR": "Moderador", + "PARTICIPANT": "Participante", + "PUBLIC": "Público", + "PRIVATE": "Privado", + "PASSWORD_PROTECTED": "Protegido por senha", + "PRIVACY_AND_SECURITY": "Privacidade e Segurança", + "PREFERENCES": "Preferências", + "MEMBERS": "Membros", + "TODAY": "Hoje", + "YESTERDAY": "Ontem", + "TYPING": "digitando...", + "IS_TYPING": "está digitando...", + "CLOSE": "Fechar", + "ENTER_GROUP_NAME": "Digite o nome do grupo", + "ADD_MEMBERS": "Adicionar Membros", + "SEND_MESSAGE": "Enviar Mensagem", + "UNBLOCK_USER": "Desbloquear Usuário", + "BLOCK_USER": "Bloquear usuário", + "DELETE_AND_EXIT": "Excluir e sair", + "LEAVE_GROUP": "Sair do grupo", + "CREATE_GROUP": "Criar grupo", + "SHARED_MEDIA": "Mídia compartilhada", + "VIDEO_CALL": "Chamada de vídeo", + "AUDIO_CALL": "Chamada de áudio", + "LOADING": "Carregando...", + "REPLY": "resposta", + "REPLIES": "respostas", + "LAUNCH": "Lançamento", + "SHARED_COLLABORATIVE_DOCUMENT": "compartilhou um documento colaborativo", + "SHARED_COLLABORATIVE_WHITEBOARD": "compartilhou um quadro de comunicações colaborativo", + "CREATED_WHITEBOARD": "Você criou um novo quadro de comunicações colaborativo", + "CREATED_DOCUMENT": "Você criou um novo documento colaborativo", + "PHOTOS": "Fotos", + "VIDEOS": "Vídeos", + "DOCUMENT": "Documento", + "YOU_DELETED_THIS_MESSAGE": "⚠️ Você excluiu esta mensagem", + "THIS_MESSAGE_DELETED": "⚠️ Esta mensagem foi excluída", + "VIEW_ON_YOUTUBE": "Ver no Youtube", + "SEARCH": "Pesquisar", + "NO_USERS_FOUND": "Nenhum usuário encontrado", + "ERROR": "Erro", + "NO_GROUPS_FOUND": "Nenhum grupo encontrado", + "NO_CHATS_FOUND": "Não foram encontrados chats", + "MEDIA_MESSAGE": "Mensagem de mídia", + "INCOMING_AUDIO_CALL": "Chamada de áudio recebida", + "INCOMING_VIDEO_CALL": "Chamada de vídeo recebida", + "DECLINE": "Declínio", + "ACCEPT": "Aceitar", + "CALL_INITIATED": "Chamada iniciada", + "OUTGOING_AUDIO_CALL": "Chamada de áudio de saída", + "OUTGOING_VIDEO_CALL": "Chamada de vídeo de saída", + "CALL_REJECTED": "Chamada rejeitada", + "REJECTED_CALL": "chamada rejeitada", + "CALL_ACCEPTED": "Chamada aceita", + "JOINED": "ingressou", + "LEFT_THE_CALL": "deixou a chamada", + "UNANSWERED_AUDIO_CALL": "Chamada de áudio sem resposta", + "UNANSWERED_VIDEO_CALL": "Chamada de vídeo sem resposta", + "CALL_ENDED": "Chamada encerrada", + "CALL_CANCELLED": "Chamada cancelada", + "CALL_BUSY": "Ligue ocupado", + "CALLING": "Chamando...", + "ADD": "Adicionar", + "NO_BANNED_MEMBERS_FOUND": "Não foram encontrados membros proibidos", + "BANNED_MEMBERS": "Membros Banidos", + "NAME": "Nome", + "SCOPE": "Âmbito", + "UNBAN": "Unban", + "SELECT_GROUP_TYPE": "Selecionar tipo de grupo", + "ENTER_GROUP_PASSWORD": "Digite a senha do grupo", + "CREATE": "Criar", + "CREATE_POLL": "Criar enquete", + "QUESTION": "Pergunta", + "ENTER_YOUR_QUESTION": "Insira sua pergunta", + "OPTIONS": "Opções", + "ENTER_YOUR_OPTION": "Introduza a sua opção", + "ADD_NEW_OPTION": "Adicionar nova opção", + "VIEW_MEMBERS": "Ver Membros", + "DETAILS": "Detalhes", + "NOTIFICATIONS": "Notificações", + "OTHER": "Outros", + "HELP": "Ajuda", + "REPORT_PROBLEM": "Denunciar um problema", + "GROUP_MEMBERS": "Membros do Grupo", + "BAN": "Proibição", + "KICK": "Chute", + "PICK_YOUR_EMOJI": "Escolha o seu emoji", + "PRIVATE_GROUP": "Grupo Privado", + "PROTECTED_GROUP": "Grupo protegido", + "VISIT": "Visitar", + "ATTACH": "Anexar", + "ATTACH_FILE": "Anexar arquivo", + "ATTACH_VIDEO": "Anexar vídeo", + "ATTACH_AUDIO": "Anexar áudio", + "ATTACH_IMAGE": "Anexar imagem", + "COLLABORATE_USING_DOCUMENT": "Colaborar usando um documento", + "COLLABORATE_USING_WHITEBOARD": "Colaborar usando um quadro branco", + "EMOJI": "Emoji", + "ENTER_YOUR_MESSAGE_HERE": "Introduza aqui a sua mensagem", + "NO_MESSAGES_FOUND": "Nenhuma mensagem encontrada", + "THREAD": "Rosca", + "COLLABORATIVE_DOCUMENT": "Documento Colaborativo", + "COLLABORATIVE_WHITEBOARD": "Quadro Colaborativo", + "ADD_REACTION": "Adicionar reação", + "NO_STICKERS_FOUND": "Não foram encontrados adesivos", + "REPLY_TO_THREAD": "Responder ao thread", + "REPLY_IN_THREAD": "Responder no tópico", + "DELETE_MESSAGE": "Excluir mensagem", + "EDIT_MESSAGE": "Editar mensagem", + "SUNDAY": "DOMINGO", + "MONDAY": "SEGUNDA-FEIRA", + "TUESDAY": "TERÇA-FEIRA", + "WEDNESDAY": "QUARTA-FEIRA", + "THURSDAY": "QUINTA-FEIRA", + "FRIDAY": "SEXTA-FEIRA", + "SATURDAY": "SÁBADO", + "GROUP_NAME_BLANK": "O nome do grupo não pode estar em branco", + "GROUP_TYPE_BLANK": "Tipo de grupo não pode estar em branco", + "GROUP_PASSWORD_BLANK": "A senha do grupo não pode estar em branco", + "POLL_QUESTION_BLANK": "Pergunta não pode ser em branco", + "POLL_OPTION_BLANK": "Opção não estar em branco", + "OWNER": "Proprietário", + "CHANGE_SCOPE": "Alterar escopo", + "STICKER": "Adesivo", + "LAST_ACTIVE_AT": "Último ativo em", + "VOICE_CALL": "Chamada de voz", + "VIEW_DETAIL": "Ver detalhes", + "VOTES": "vota", + "VOTE": "votar", + "NO_VOTE": "Sem votação", + "REACTED": "reagiu", + "ADDED": "adicionada", + "UNBANNED": "não banido", + "MADE": "fez", + "CALL_UNANSWERED": "Chamada sem resposta", + "MISSED_AUDIO_CALL": "Chamada de áudio perdida", + "ENTER_YOUR_PASSWORD": "Digite sua senha", + "DOCS": "Documentos", + "NO_RECORDS_FOUND": "Nenhum registro encontrado", + "LIVE_REACTION": "Reação ao vivo", + "SMILEY_PEOPLE": "Smileys & Pessoas", + "ANIMALES_NATURE": "Animais & Natureza", + "FOOD_DRINK": "Comidas & Bebidas", + "ACTIVITY": "Atividade", + "TRAVEL_PLACES": "Viagens e lugares", + "OBJECTS": "Objetos", + "SYMBOLS": "Símbolos", + "FLAGS": "Bandeiras", + "SENT": "Enviado", + "SEEN": "Visto", + "DELIVERED": "Entregue", + "CALLS": "Chamadas", + "CUSTOM_MESSAGE_LOCATION": "📍 Localização", + "OFFLINE": "Offline", + "YOU": "Você", + "PRIVACY": "Privacidade", + "BLOCKED_USERS": "Usuários bloqueados", + "YOU'VE_BLOCKED": "Você bloqueou", + "NO_PHOTOS": "Sem Fotos", + "NO_VIDEOS": "Sem vídeos", + "NO_DOCUMENTS": "Sem Documentos", + "JOIN": "Joi" +} \ No newline at end of file diff --git a/CometChat/resources/localization/locales/ru/translation.json b/CometChat/resources/localization/locales/ru/translation.json new file mode 100644 index 00000000..b5cd943e --- /dev/null +++ b/CometChat/resources/localization/locales/ru/translation.json @@ -0,0 +1,181 @@ +{ + "USERS": "Пользователи", + "CHATS": "Чаты", + "GROUPS": "Группы", + "MORE": "Больше", + "MESSAGE_IMAGE": "📷 Изображение", + "MESSAGE_FILE": "📁 Файл", + "MESSAGE_VIDEO": "📹 Видео", + "MESSAGE_AUDIO": "🎵 Аудио", + "CUSTOM_MESSAGE": "У вас есть сообщение", + "MISSED_VOICE_CALL": "Пропущенный голосовой вызов", + "MISSED_VIDEO_CALL": "Пропущенный видеозвонок", + "CUSTOM_MESSAGE_POLL": "📊 Опрос", + "CUSTOM_MESSAGE_STICKER": "💟 наклейка", + "CUSTOM_MESSAGE_DOCUMENT": "📃 Документ", + "CUSTOM_MESSAGE_WHITEBOARD": "📝 Белая доска", + "ONLINE": "Онлайн", + "ADMINISTRATOR": "Администратор", + "MODERATOR": "Модератор", + "PARTICIPANT": "Участник", + "PUBLIC": "Публичный", + "PRIVATE": "Частные", + "PASSWORD_PROTECTED": "Защищен паролем", + "PRIVACY_AND_SECURITY": "Конфиденциальность и безопасность", + "PREFERENCES": "Предпочтения", + "MEMBERS": "Члены", + "TODAY": "Сегодня", + "YESTERDAY": "Вчера", + "TYPING": "набрав...", + "IS_TYPING": "набирает...", + "CLOSE": "Закрыть", + "ENTER_GROUP_NAME": "Введите имя группы", + "ADD_MEMBERS": "Добавить участников", + "SEND_MESSAGE": "Отправить сообщение", + "UNBLOCK_USER": "Разблокировать пользователя", + "BLOCK_USER": "Блокировать пользователя", + "DELETE_AND_EXIT": "Удаление и выход", + "LEAVE_GROUP": "Выйти из группы", + "CREATE_GROUP": "Создать группу", + "SHARED_MEDIA": "Общий носитель", + "VIDEO_CALL": "Видеозвонок", + "AUDIO_CALL": "Аудио вызов", + "LOADING": "Загрузка...", + "REPLY": "Ответить", + "REPLIES": "ответы", + "LAUNCH": "Запустить", + "SHARED_COLLABORATIVE_DOCUMENT": "опубликовал совместный документ", + "SHARED_COLLABORATIVE_WHITEBOARD": "поделился совместной доске", + "CREATED_WHITEBOARD": "Вы создали новую доску для совместной работы", + "CREATED_DOCUMENT": "Вы создали новый документ для совместной работы", + "PHOTOS": "Фотографии", + "VIDEOS": "Видео", + "DOCUMENT": "Документ", + "YOU_DELETED_THIS_MESSAGE": "⚠️ Вы удалили это сообщение", + "THIS_MESSAGE_DELETED": "⚠️ Это сообщение было удалено", + "VIEW_ON_YOUTUBE": "Посмотреть на Youtube", + "SEARCH": "Поиск", + "NO_USERS_FOUND": "Пользователи не найдены", + "ERROR": "Ошибка", + "NO_GROUPS_FOUND": "Группы не найдены", + "NO_CHATS_FOUND": "Чаты не найдены", + "MEDIA_MESSAGE": "Сообщение мультимедиа", + "INCOMING_AUDIO_CALL": "Входящий аудиовызов", + "INCOMING_VIDEO_CALL": "Входящий видеозвонок", + "DECLINE": "Отклонить", + "ACCEPT": "Принять", + "CALL_INITIATED": "Вызов инициирован", + "OUTGOING_AUDIO_CALL": "Исходящий аудиовызов", + "OUTGOING_VIDEO_CALL": "Исходящий видеозвонок", + "CALL_REJECTED": "Вызов отклонен", + "REJECTED_CALL": "отклоненный вызов", + "CALL_ACCEPTED": "Звонок принят", + "JOINED": "совместный", + "LEFT_THE_CALL": "оставил вызов", + "UNANSWERED_AUDIO_CALL": "Звуковой звонок без ответа", + "UNANSWERED_VIDEO_CALL": "Видеозвонок без ответа", + "CALL_ENDED": "Вызов завершен", + "CALL_CANCELLED": "Звонок отменен", + "CALL_BUSY": "Звонок занят", + "CALLING": "Звоню...", + "ADD": "Добавить", + "NO_BANNED_MEMBERS_FOUND": "Запрещенные участники не найдены", + "BANNED_MEMBERS": "Запрещенные участники", + "NAME": "Имя", + "SCOPE": "Область применения", + "UNBAN": "Unban", + "SELECT_GROUP_TYPE": "Выберите тип группы", + "ENTER_GROUP_PASSWORD": "Введите пароль группы", + "CREATE": "Создать", + "CREATE_POLL": "Создать опрос", + "QUESTION": "Вопрос", + "ENTER_YOUR_QUESTION": "Введите свой вопрос", + "OPTIONS": "Опции", + "ENTER_YOUR_OPTION": "Введите свой вариант", + "ADD_NEW_OPTION": "Добавить новую опцию", + "VIEW_MEMBERS": "Просмотр участников", + "DETAILS": "Подробности", + "NOTIFICATIONS": "Уведомления", + "OTHER": "Прочее", + "HELP": "Помощь", + "REPORT_PROBLEM": "Сообщить о проблеме", + "GROUP_MEMBERS": "Члены группы", + "BAN": "Запрет", + "KICK": "Удар", + "PICK_YOUR_EMOJI": "Выберите свой эмодзи", + "PRIVATE_GROUP": "Частная группа", + "PROTECTED_GROUP": "Защищенная группа", + "VISIT": "Посетить", + "ATTACH": "Прикрепить", + "ATTACH_FILE": "Прикрепить файл", + "ATTACH_VIDEO": "Прикрепить видео", + "ATTACH_AUDIO": "Прикрепить аудио", + "ATTACH_IMAGE": "Прикрепить изображение", + "COLLABORATE_USING_DOCUMENT": "Совместная работа с использованием документа", + "COLLABORATE_USING_WHITEBOARD": "Совместная работа с помощью доски", + "EMOJI": "смайлик", + "ENTER_YOUR_MESSAGE_HERE": "Введите свое сообщение здесь", + "NO_MESSAGES_FOUND": "Сообщения не найдены", + "THREAD": "Нить", + "COLLABORATIVE_DOCUMENT": "Совместный документ", + "COLLABORATIVE_WHITEBOARD": "Совместная доска", + "ADD_REACTION": "Добавить реакцию", + "NO_STICKERS_FOUND": "Стикеры не найдены", + "REPLY_TO_THREAD": "Ответить на тему", + "REPLY_IN_THREAD": "Ответ в потоке", + "DELETE_MESSAGE": "Удалить сообщение", + "EDIT_MESSAGE": "Редактировать сообщение", + "SUNDAY": "ВОСКРЕСЕНЬЕ", + "MONDAY": "ПОНЕДЕЛЬНИК", + "TUESDAY": "ВТОРНИК", + "WEDNESDAY": "СРЕДА", + "THURSDAY": "ЧЕТВЕРГ", + "FRIDAY": "ПЯТНИЦА", + "SATURDAY": "СУББОТА", + "GROUP_NAME_BLANK": "Имя группы не может быть пустым", + "GROUP_TYPE_BLANK": "Тип группы не может быть пустым", + "GROUP_PASSWORD_BLANK": "Пароль группы не может быть пустым", + "POLL_QUESTION_BLANK": "Вопрос не может быть пустым", + "POLL_OPTION_BLANK": "Опция не может быть пустой", + "OWNER": "Владелец", + "CHANGE_SCOPE": "Изменить область", + "STICKER": "Наклейка", + "LAST_ACTIVE_AT": "Последний активный в", + "VOICE_CALL": "Голосовой вызов", + "VIEW_DETAIL": "Посмотреть деталь", + "VOTES": "голосов", + "VOTE": "голосования", + "NO_VOTE": "Нет голоса", + "REACTED": "отреагировал", + "ADDED": "добавил", + "UNBANNED": "незапрещенный", + "MADE": "сделал", + "CALL_UNANSWERED": "Звоните без ответа", + "MISSED_AUDIO_CALL": "Пропущенный аудиовызов", + "ENTER_YOUR_PASSWORD": "Введите пароль", + "DOCS": "Документы", + "NO_RECORDS_FOUND": "Записи не найдены", + "LIVE_REACTION": "Живая реакция", + "SMILEY_PEOPLE": "Смайлики и люди", + "ANIMALES_NATURE": "Животные и природа", + "FOOD_DRINK": "Еда и напитки", + "ACTIVITY": "Деятельность", + "TRAVEL_PLACES": "Путешествия и места", + "OBJECTS": "Объекты", + "SYMBOLS": "Символы", + "FLAGS": "Флаги", + "SENT": "Отправлено", + "SEEN": "Видел", + "DELIVERED": "Доставлено", + "CALLS": "Звонки", + "CUSTOM_MESSAGE_LOCATION": "📍 Расположение", + "OFFLINE": "Оффлайн", + "YOU": "Ты", + "PRIVACY": "Privacy", + "BLOCKED_USERS": "Заблокированные пользователи", + "YOU'VE_BLOCKED": "Вы заблокировали", + "NO_PHOTOS": "Нет фотографий", + "NO_VIDEOS": "Нет видео", + "NO_DOCUMENTS": "Нет документов", + "JOIN": "Joi" +} \ No newline at end of file diff --git a/CometChat/resources/localization/locales/zh-tw/translation.json b/CometChat/resources/localization/locales/zh-tw/translation.json new file mode 100644 index 00000000..835d2a69 --- /dev/null +++ b/CometChat/resources/localization/locales/zh-tw/translation.json @@ -0,0 +1,181 @@ +{ + "USERS": "使用者", + "CHATS": "聊天", + "GROUPS": "群組", + "MORE": "更多", + "MESSAGE_IMAGE": "📷 圖片", + "MESSAGE_FILE": "📁 檔案", + "MESSAGE_VIDEO": "📹 影片", + "MESSAGE_AUDIO": "🎵 音訊", + "CUSTOM_MESSAGE": "你有一個訊息", + "MISSED_VOICE_CALL": "未接語音通話", + "MISSED_VIDEO_CALL": "未接視訊通話", + "CUSTOM_MESSAGE_POLL": "📊 投票", + "CUSTOM_MESSAGE_STICKER": "💟 貼紙", + "CUSTOM_MESSAGE_DOCUMENT": "📃 文件", + "CUSTOM_MESSAGE_WHITEBOARD": "📝 白板", + "ONLINE": "線上", + "ADMINISTRATOR": "管理員", + "MODERATOR": "主持人", + "PARTICIPANT": "參與者", + "PUBLIC": "公共", + "PRIVATE": "私人", + "PASSWORD_PROTECTED": "密碼保護", + "PRIVACY_AND_SECURITY": "隱私權與安全性", + "PREFERENCES": "偏好設定", + "MEMBERS": "成員", + "TODAY": "今天", + "YESTERDAY": "昨天", + "TYPING": "輸入...", + "IS_TYPING": "正在輸入...", + "CLOSE": "關閉", + "ENTER_GROUP_NAME": "輸入群組名稱", + "ADD_MEMBERS": "加入成員", + "SEND_MESSAGE": "傳送訊息", + "UNBLOCK_USER": "解除封鎖使用者", + "BLOCK_USER": "封鎖使用者", + "DELETE_AND_EXIT": "刪除並結束", + "LEAVE_GROUP": "離開群組", + "CREATE_GROUP": "建立群組", + "SHARED_MEDIA": "共用媒體", + "VIDEO_CALL": "視訊通話", + "AUDIO_CALL": "音訊通話", + "LOADING": "正在載入中...", + "REPLY": "回覆", + "REPLIES": "回覆", + "LAUNCH": "啟動", + "SHARED_COLLABORATIVE_DOCUMENT": "已共用協同合作文件", + "SHARED_COLLABORATIVE_WHITEBOARD": "共享了一個合作白板", + "CREATED_WHITEBOARD": "您已建立新的協同合作白板", + "CREATED_DOCUMENT": "您已建立新的協同合作文件", + "PHOTOS": "相片", + "VIDEOS": "影片", + "DOCUMENT": "文件", + "YOU_DELETED_THIS_MESSAGE": "⚠️ 您刪除了此訊息", + "THIS_MESSAGE_DELETED": "⚠️ 此訊息已被刪除", + "VIEW_ON_YOUTUBE": "在 YouTube 上觀看", + "SEARCH": "搜尋", + "NO_USERS_FOUND": "找不到使用者", + "ERROR": "錯誤", + "NO_GROUPS_FOUND": "找不到群組", + "NO_CHATS_FOUND": "找不到對話", + "MEDIA_MESSAGE": "媒體訊息", + "INCOMING_AUDIO_CALL": "來電音訊通話", + "INCOMING_VIDEO_CALL": "來電視訊通話", + "DECLINE": "拒絕", + "ACCEPT": "接受", + "CALL_INITIATED": "呼叫已啟動", + "OUTGOING_AUDIO_CALL": "撥出音訊通話", + "OUTGOING_VIDEO_CALL": "撥出視訊通話", + "CALL_REJECTED": "電話拒絕", + "REJECTED_CALL": "拒絕的呼叫", + "CALL_ACCEPTED": "已接聽電話", + "JOINED": "加入", + "LEFT_THE_CALL": "留下電話", + "UNANSWERED_AUDIO_CALL": "未接聽的音訊通話", + "UNANSWERED_VIDEO_CALL": "未接聽視訊通話", + "CALL_ENDED": "呼叫結束", + "CALL_CANCELLED": "來電已取消", + "CALL_BUSY": "呼叫忙碌", + "CALLING": "呼叫...", + "ADD": "新增", + "NO_BANNED_MEMBERS_FOUND": "找不到被禁用的會員", + "BANNED_MEMBERS": "禁止的會員", + "NAME": "名稱", + "SCOPE": "範圍", + "UNBAN": "取消禁止", + "SELECT_GROUP_TYPE": "選取群組類型", + "ENTER_GROUP_PASSWORD": "輸入群組密碼", + "CREATE": "建立", + "CREATE_POLL": "建立投票", + "QUESTION": "問題", + "ENTER_YOUR_QUESTION": "輸入您的問題", + "OPTIONS": "選項", + "ENTER_YOUR_OPTION": "輸入您的選項", + "ADD_NEW_OPTION": "新增選項", + "VIEW_MEMBERS": "檢視成員", + "DETAILS": "詳細資料", + "NOTIFICATIONS": "通知", + "OTHER": "其他", + "HELP": "說明", + "REPORT_PROBLEM": "報告問題", + "GROUP_MEMBERS": "群組成員", + "BAN": "禁令", + "KICK": "踢", + "PICK_YOUR_EMOJI": "挑選您的表情符號", + "PRIVATE_GROUP": "私人群組", + "PROTECTED_GROUP": "受保護群組", + "VISIT": "造訪", + "ATTACH": "貼附", + "ATTACH_FILE": "附加檔案", + "ATTACH_VIDEO": "附加視訊", + "ATTACH_AUDIO": "附加音訊", + "ATTACH_IMAGE": "貼附影像", + "COLLABORATE_USING_DOCUMENT": "使用文件共同作業", + "COLLABORATE_USING_WHITEBOARD": "使用白板進行協同作業", + "EMOJI": "表情符號", + "ENTER_YOUR_MESSAGE_HERE": "在此輸入您的訊息", + "NO_MESSAGES_FOUND": "找不到訊息", + "THREAD": "螺紋", + "COLLABORATIVE_DOCUMENT": "協同合作文件", + "COLLABORATIVE_WHITEBOARD": "協同合作白板", + "ADD_REACTION": "加入反應", + "NO_STICKERS_FOUND": "找不到貼圖", + "REPLY_TO_THREAD": "回覆執行緒", + "REPLY_IN_THREAD": "在執行緒中回覆", + "DELETE_MESSAGE": "刪除訊息", + "EDIT_MESSAGE": "編輯訊息", + "SUNDAY": "星期日", + "MONDAY": "星期一", + "TUESDAY": "星期二", + "WEDNESDAY": "星期三", + "THURSDAY": "星期四", + "FRIDAY": "星期五", + "SATURDAY": "星期六", + "GROUP_NAME_BLANK": "群組名稱不能為空白", + "GROUP_TYPE_BLANK": "群組類型不能為空白", + "GROUP_PASSWORD_BLANK": "群組密碼不能為空白", + "POLL_QUESTION_BLANK": "問題不能為空白", + "POLL_OPTION_BLANK": "選項不能為空白", + "OWNER": "擁有者", + "CHANGE_SCOPE": "變更範圍", + "STICKER": "貼紙", + "LAST_ACTIVE_AT": "上次作用中日期", + "VOICE_CALL": "語音通話", + "VIEW_DETAIL": "檢視詳細資料", + "VOTES": "票", + "VOTE": "投票", + "NO_VOTE": "沒有投票", + "REACTED": "反應", + "ADDED": "添加", + "UNBANNED": "取消禁止", + "MADE": "製作", + "CALL_UNANSWERED": "未接聽來電", + "MISSED_AUDIO_CALL": "未接的音訊通話", + "ENTER_YOUR_PASSWORD": "輸入您的密碼", + "DOCS": "文件", + "NO_RECORDS_FOUND": "找不到記錄", + "LIVE_REACTION": "即時反應", + "SMILEY_PEOPLE": "笑臉與人", + "ANIMALES_NATURE": "動物與自然", + "FOOD_DRINK": "食物與飲料", + "ACTIVITY": "活動", + "TRAVEL_PLACES": "旅遊與地點", + "OBJECTS": "物件", + "SYMBOLS": "符號", + "FLAGS": "旗標", + "SENT": "已送出", + "SEEN": "見過", + "DELIVERED": "已遞送", + "CALLS": "呼叫", + "CUSTOM_MESSAGE_LOCATION": "📍 位置", + "OFFLINE": "離線", + "YOU": "你", + "PRIVACY": "隱私", + "BLOCKED_USERS": "封鎖的使用者", + "YOU'VE_BLOCKED": "您已封鎖", + "NO_PHOTOS": "沒有相片", + "NO_VIDEOS": "沒有視訊", + "NO_DOCUMENTS": "沒有文件", + "JOIN": "喬伊" +} \ No newline at end of file diff --git a/CometChat/resources/localization/locales/zh/translation.json b/CometChat/resources/localization/locales/zh/translation.json new file mode 100644 index 00000000..618c4875 --- /dev/null +++ b/CometChat/resources/localization/locales/zh/translation.json @@ -0,0 +1,181 @@ +{ + "USERS": "用户", + "CHATS": "聊天", + "GROUPS": "团体", + "MORE": "更多", + "MESSAGE_IMAGE": "📷 图片", + "MESSAGE_FILE": "📁 文件", + "MESSAGE_VIDEO": "📹 视频", + "MESSAGE_AUDIO": "🎵 音频", + "CUSTOM_MESSAGE": "你有消息", + "MISSED_VOICE_CALL": "未接的语音通话", + "MISSED_VIDEO_CALL": "错过视频通话", + "CUSTOM_MESSAGE_POLL": "📊 民意调查", + "CUSTOM_MESSAGE_STICKER": "💟 贴纸", + "CUSTOM_MESSAGE_DOCUMENT": "📃 文档", + "CUSTOM_MESSAGE_WHITEBOARD": "📝 白板", + "ONLINE": "在线", + "ADMINISTRATOR": "管理员", + "MODERATOR": "主持人", + "PARTICIPANT": "参与者", + "PUBLIC": "公开", + "PRIVATE": "私人", + "PASSWORD_PROTECTED": "密码保护", + "PRIVACY_AND_SECURITY": "隐私和安全", + "PREFERENCES": "偏好", + "MEMBERS": "会员", + "TODAY": "今天", + "YESTERDAY": "昨天", + "TYPING": "打字...", + "IS_TYPING": "正在打字...", + "CLOSE": "关闭", + "ENTER_GROUP_NAME": "输入组名", + "ADD_MEMBERS": "添加成员", + "SEND_MESSAGE": "发送消息", + "UNBLOCK_USER": "解锁用户", + "BLOCK_USER": "阻止用户", + "DELETE_AND_EXIT": "删除并退出", + "LEAVE_GROUP": "离开小组", + "CREATE_GROUP": "创建群组", + "SHARED_MEDIA": "共享媒体", + "VIDEO_CALL": "视频通话", + "AUDIO_CALL": "音频通话", + "LOADING": "正在加载...", + "REPLY": "答复", + "REPLIES": "回复", + "LAUNCH": "启动", + "SHARED_COLLABORATIVE_DOCUMENT": "共享了协作文档", + "SHARED_COLLABORATIVE_WHITEBOARD": "共享了协作式白板", + "CREATED_WHITEBOARD": "你创建了一个新的协作白板", + "CREATED_DOCUMENT": "你创建了一个新的协作文档", + "PHOTOS": "照片", + "VIDEOS": "视频", + "DOCUMENT": "文档", + "YOU_DELETED_THIS_MESSAGE": "⚠️ 你删除了此消息", + "THIS_MESSAGE_DELETED": "⚠️ 此消息已删除", + "VIEW_ON_YOUTUBE": "在 Youtube 上查看", + "SEARCH": "搜索", + "NO_USERS_FOUND": "找不到用户", + "ERROR": "错误", + "NO_GROUPS_FOUND": "没有找到团体", + "NO_CHATS_FOUND": "没有找到聊天", + "MEDIA_MESSAGE": "媒体消息", + "INCOMING_AUDIO_CALL": "来音频通话", + "INCOMING_VIDEO_CALL": "来的视频通话", + "DECLINE": "拒绝", + "ACCEPT": "接受", + "CALL_INITIATED": "呼叫已启动", + "OUTGOING_AUDIO_CALL": "传出音频通话", + "OUTGOING_VIDEO_CALL": "外出的视频通话", + "CALL_REJECTED": "来电已拒绝", + "REJECTED_CALL": "拒绝的电话", + "CALL_ACCEPTED": "电话已接受", + "JOINED": "已加入", + "LEFT_THE_CALL": "离开了电话", + "UNANSWERED_AUDIO_CALL": "未应答的音频通话", + "UNANSWERED_VIDEO_CALL": "未应答的视频通话", + "CALL_ENDED": "呼叫已结束", + "CALL_CANCELLED": "电话已取消", + "CALL_BUSY": "呼叫忙", + "CALLING": "打电话...", + "ADD": "添加", + "NO_BANNED_MEMBERS_FOUND": "没有找到被禁的成员", + "BANNED_MEMBERS": "被禁的会员", + "NAME": "姓名", + "SCOPE": "范围", + "UNBAN": "Unban", + "SELECT_GROUP_TYPE": "选择群组类型", + "ENTER_GROUP_PASSWORD": "输入群组密码", + "CREATE": "创建", + "CREATE_POLL": "创建投票", + "QUESTION": "问题", + "ENTER_YOUR_QUESTION": "输入你的问题", + "OPTIONS": "选项", + "ENTER_YOUR_OPTION": "输入你的选项", + "ADD_NEW_OPTION": "添加新选项", + "VIEW_MEMBERS": "查看会员", + "DETAILS": "详情", + "NOTIFICATIONS": "通知", + "OTHER": "其他", + "HELP": "帮助", + "REPORT_PROBLEM": "报告问题", + "GROUP_MEMBERS": "集团成员", + "BAN": "禁", + "KICK": "踢", + "PICK_YOUR_EMOJI": "选择你的表情符号", + "PRIVATE_GROUP": "私人团体", + "PROTECTED_GROUP": "受保护的组", + "VISIT": "访问", + "ATTACH": "附上", + "ATTACH_FILE": "附加文件", + "ATTACH_VIDEO": "附上视频", + "ATTACH_AUDIO": "附加音频", + "ATTACH_IMAGE": "附上图片", + "COLLABORATE_USING_DOCUMENT": "使用文档进行协作", + "COLLABORATE_USING_WHITEBOARD": "使用白板进行协作", + "EMOJI": "表情符号", + "ENTER_YOUR_MESSAGE_HERE": "在这里输入你的消息", + "NO_MESSAGES_FOUND": "没有找到消息", + "THREAD": "线程", + "COLLABORATIVE_DOCUMENT": "协作文档", + "COLLABORATIVE_WHITEBOARD": "协作白板", + "ADD_REACTION": "添加反应", + "NO_STICKERS_FOUND": "找不到贴纸", + "REPLY_TO_THREAD": "回复线程", + "REPLY_IN_THREAD": "在线程中回复", + "DELETE_MESSAGE": "删除留言", + "EDIT_MESSAGE": "编辑消息", + "SUNDAY": "周日", + "MONDAY": "周一", + "TUESDAY": "周二", + "WEDNESDAY": "周三", + "THURSDAY": "周四", + "FRIDAY": "周五", + "SATURDAY": "周六", + "GROUP_NAME_BLANK": "组名不能为空", + "GROUP_TYPE_BLANK": "群组类型不能为空", + "GROUP_PASSWORD_BLANK": "组密码不能为空", + "POLL_QUESTION_BLANK": "问题不能为空", + "POLL_OPTION_BLANK": "选项不能为空", + "OWNER": "所有者", + "CHANGE_SCOPE": "更改范围", + "STICKER": "贴纸", + "LAST_ACTIVE_AT": "最后活动在", + "VOICE_CALL": "语音通话", + "VIEW_DETAIL": "查看详情", + "VOTES": "选票", + "VOTE": "投票", + "NO_VOTE": "没有投票", + "REACTED": "反应", + "ADDED": "添加", + "UNBANNED": "未被禁止", + "MADE": "制作", + "CALL_UNANSWERED": "来电未应答", + "MISSED_AUDIO_CALL": "错过了音频通话", + "ENTER_YOUR_PASSWORD": "输入你的密码", + "DOCS": "文档", + "NO_RECORDS_FOUND": "没有找到记录", + "LIVE_REACTION": "实时反应", + "SMILEY_PEOPLE": "笑脸与人", + "ANIMALES_NATURE": "动物与自然", + "FOOD_DRINK": "食物 & 饮料", + "ACTIVITY": "活动", + "TRAVEL_PLACES": "旅行 & 地点", + "OBJECTS": "对象", + "SYMBOLS": "符号", + "FLAGS": "旗", + "SENT": "已发送", + "SEEN": "看见", + "DELIVERED": "已交付", + "CALLS": "来电", + "CUSTOM_MESSAGE_LOCATION": "📍 位置", + "OFFLINE": "离线", + "YOU": "你", + "PRIVACY": "隐私", + "BLOCKED_USERS": "封锁的用户", + "YOU'VE_BLOCKED": "你已经封锁了", + "NO_PHOTOS": "没有照片", + "NO_VIDEOS": "没有视频", + "NO_DOCUMENTS": "没有文档", + "JOIN": "Joi" +} \ No newline at end of file diff --git a/CometChat/resources/localization/translator.js b/CometChat/resources/localization/translator.js new file mode 100644 index 00000000..801eb25f --- /dev/null +++ b/CometChat/resources/localization/translator.js @@ -0,0 +1,98 @@ +import * as enums from "../../util/enums.js"; + +import translationAR from "./locales/ar/translation.json"; +import translationDE from "./locales/de/translation.json"; +import translationEN from "./locales/en/translation.json"; +import translationENGB from "./locales/en-gb/translation.json"; +import translationENUS from "./locales/en-us/translation.json"; +import translationES from "./locales/es/translation.json"; +import translationFR from "./locales/fr/translation.json"; +import translationHI from "./locales/hi/translation.json"; +import translationMS from "./locales/ms/translation.json"; +import translationPT from "./locales/pt/translation.json"; +import translationRU from "./locales/ru/translation.json"; +import translationZH from "./locales/zh/translation.json"; +import translationZHTW from "./locales/zh-tw/translation.json"; + +// the translations +const translations = { + "ar": translationAR, + "de": translationDE, + "en": translationEN, + "en-gb": translationENGB, + "en-us": translationENUS, + "es": translationES, + "fr": translationFR, + "hi": translationHI, + "ms": translationMS, + "pt": translationPT, + "ru": translationRU, + "zh": translationZH, + "zh-tw": translationZHTW +}; + +window.addEventListener('languagechange', () => { + let language = Translator.getBrowserLanguage().toLowerCase(); + Translator.setLanguage(language); +}); + +class Translator { + + static key = enums["LOCALE_KEY"]; + static rtlLanguages = ["ar"]; + + static getLanguage = () => { + + return localStorage.getItem(this.key); + } + + static setLanguage = (language) => { + + const item = this.key; + localStorage.setItem(item, language); + } + + static getBrowserLanguage = () => ((navigator.languages && navigator.languages[0]) || navigator.language || navigator.userLanguage); + + static getDefaultLanguage = () => { + + let language = this.getLanguage(); + if (language) { + + return language; + + } else { + + let language = this.getBrowserLanguage().toLowerCase(); + this.setLanguage(language); + + return language; + } + } + + static getDirection(language) { + return this.rtlLanguages.includes(language) ? "rtl" : "ltr"; + } + + static translate(str, language) { + + try { + + const languageDb = translations[language]; + + if (languageDb.hasOwnProperty(str)) { + return languageDb[str]; + } + + return str; + + } catch (error) { + + console.error("Error while translating::translateWord", error); + // If something goes wrong return the word as it is. + return str; + } + } +} + +export default Translator; \ No newline at end of file diff --git a/CometChat/resources/theme.js b/CometChat/resources/theme.js index 12176b44..e9260efa 100644 --- a/CometChat/resources/theme.js +++ b/CometChat/resources/theme.js @@ -13,6 +13,8 @@ export const theme = { }, borderColor: { primary: "#eaeaea", + secondary: "#cccccc", + darkSecondary: "#eaeaea", white: "#fff", blue: "#39f", }, diff --git a/CometChat/util/common.js b/CometChat/util/common.js index d35ee7fa..1bbc1ea8 100644 --- a/CometChat/util/common.js +++ b/CometChat/util/common.js @@ -1,3 +1,4 @@ +/* eslint-disable no-extend-native */ const emailPattern = new RegExp("[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}", "gi");///([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi; const urlPattern = new RegExp("(^|[\\s.:;?\\-\\]<\\(])"+"((https?://|www\\.|pic\\.)[-\\w;/?:@&=+$\\|\\_.!~*\\|'()\\[\\]%#,☺]+[\\w/#](\\(\\))?)"+"(?=$|[\\s',\\|\\(\\).:;?\\-\\[\\]>\\)])", "gi"); ///(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])/gi; const phoneNumPattern = new RegExp("^\\s*(?:\\+?(\\d{1,3}))?([-. (]*(\\d{3})[-. )]*)?((\\d{3})[-. ]*(\\d{2,4})(?:[-.x ]*(\\d+))?)\\s*", "gi"); @@ -11,7 +12,6 @@ export const linkify = (message) => { return outputStr; } - export const validateWidgetSettings = (wSettings, checkAgainst) => { let output = null; diff --git a/CometChat/util/enums.js b/CometChat/util/enums.js index ccebd342..f4d5e5be 100644 --- a/CometChat/util/enums.js +++ b/CometChat/util/enums.js @@ -52,4 +52,6 @@ export const CALL_TYPE_AUDIO = "audio"; export const CALL_TYPE_VIDEO = "video"; export const LIVE_REACTION_KEY = "live_reaction"; -export const LIVE_REACTIONS = { "heart": "./resources/heart.png", "thumbsup": "👍", "clap": "👏", "wink": "😉" }; \ No newline at end of file +export const LIVE_REACTIONS = { "heart": "./resources/heart.png", "thumbsup": "👍", "clap": "👏", "wink": "😉" }; + +export const LOCALE_KEY = "cometchat:locale"; \ No newline at end of file diff --git a/README.md b/README.md index 6ed995f0..09bbf5ea 100644 --- a/README.md +++ b/README.md @@ -1,46 +1,75 @@ +
+
+
+ CometChat +
+
+
+ +

# React Chat UI Kit -React Chat UI Kit is a collection of custom UI Components and UI Screens designed to build chat application with fully customizable UI. It is designed to avoid boilerplate code for building UI. -![alt text](https://files.readme.io/68c7762-launch_cometchat.png "UI Unified") +

-It has the following 3 ways of implementation: -* [UI Unified](https://prodocs.cometchat.com/docs/react-ui-kit-ui-unified) -* [UI Screens](https://prodocs.cometchat.com/docs/react-ui-kit-ui-screens) -* [UI Components](https://prodocs.cometchat.com/docs/react-ui-kit-ui-components) + + + -## Requirements - 1. [CometChat Account](#cometchat-account) + + + -### CometChat Account -To use this library, you need application keys from your CometChat account. If you don't have an account, you can create one here. + + + -1. Sign in to your CometChat Dashboard -2. Click **Add New App** -3. Give your app a name, and select a region and click Add App -4. Click your new app to open its settings. -5. Locate API Keys and Create Auth Key. You'll need `App ID`, `Auth Key` and `Region` +

-## Installation +
-1. Install CometChat SDK +
+
+
+ Main +
+
+
+ +
+ +React Chat UI Kit is a collection of custom **UI Components** and **UI Screens** designed to build chat application with fully customizable UI. It is designed to avoid boilerplate code for building UI. + +___ -```javascript - npm install @cometchat-pro/chat@2.1.5 --save -``` -2. See UI kit's package.json file and add the missing packages in your project's package.json file. -3. Import CometChat Object +## Installing React Chat UI Kit + +## 1. Setup + +To install React UI Kit, you need to first register on CometChat Dashboard. Click here to sign up + +### i. Get your Application Keys + +* Create a new app +* Head over to the Quick Start or API & Auth Keys section and note the `App ID`, `Auth Key`, and `Region`. + +### ii. Add the CometChat Dependency ```javascript - import { CometChat } from "@cometchat-pro/" + npm install @cometchat-pro/chat@2.1.5 --save ``` -4. Initialize CometChat +
+ +## 2. Configure CometChat inside your app + +### i. Initialize CometChat The `init()` method initializes the settings required for CometChat. - We suggest calling the `init()` method on app startup, preferably in the `onCreate()` method of the Application class. +We suggest calling the `init()` method on app startup, preferably in the `onCreate()` method of the Application class. + ```javascript const appID = "APP_ID"; const region = "REGION"; @@ -56,42 +85,17 @@ CometChat.init(appID, appSetting).then( } ); ``` -**Note:** -Replace APP_ID and REGION with your CometChat `App ID` and `REGION` in the above code. - -5. Create & Login your User +**Note:**
+* Replace APP_ID and REGION with your CometChat `App ID` and `Region` in the above code. -Once initialization is successful, you will need to create a user. -To create users on the fly, you can use the `createUser()` method. This method takes a User object and the `Auth Key` as input parameters and returns the created User object if the request is successful. - -```javascript -const authKey = "AUTH_KEY"; -const uid = "UID"; -const name = "NAME"; -const user = new CometChat.User(uid); +### ii. Login your user -user.setName(name); - -CometChat.createUser(user, authKey).then( - user => { - console.log("user created", user); - },error => { - console.log("error", error); - } -); -``` -**Note:**
-* Replace `AUTH_KEY` with your CometChat `Auth Key` in the above code. -* Replace `UID` and `NAME` with the uid and name of the user to be created. -* We have setup 5 users for testing having UIDs: `SUPERHERO1`, `SUPERHERO2`, `SUPERHERO3`,`SUPERHERO4` and `SUPERHERO5`. - - -Once you have created the user successfully, you need to use the `login()` method. +This method takes `UID` and `Auth Key` as input parameters and returns the User object containing all the information of the logged-in user.. ```javascript const authKey = "AUTH_KEY"; -const uid = "UID"; +const uid = "SUPERHERO1"; CometChat.login(uid, authKey).then( user => { @@ -104,26 +108,55 @@ CometChat.login(uid, authKey).then( ``` **Note:**
* Replace `AUTH_KEY` with your CometChat `Auth Key` in the above code. -* Replace `UID` with the uid of the user created. -6. Import the components. +* We have setup 5 users for testing having UIDs: `SUPERHERO1`, `SUPERHERO2`, `SUPERHERO3`,`SUPERHERO4` and `SUPERHERO5`. -Here is an implementation of UI Unified. +
+## 3. Add UI Kit to your project + +Clone this repository and copy the CometChat folder to your source folder + +
+ +## 4. Launch UI Unified + +**UI Unified** is an option to launch a fully functional chat application using the UI Kit. In UI Unified all the UI Screens and UI Components are interlinked and work together to launch a fully functional chat on your website/application. ```html import {CometChatUnified} from "./CometChat"; + render() { - return ( - - ); + + return (); } ``` -
+
+ +## Checkout our sample app + +Visit our [React sample app] (https://github.com/cometchat-pro/javascript-react-chat-app) repo to run the React sample app. + +
+ +## Troubleshooting + +- To read the full documentation on UI Kit integration visit our [Documentation](https://prodocs.cometchat.com/docs/react-ui-kit). + +- Facing any issues while integrating or installing the UI Kit please connect with us via real time support present in CometChat Dashboard. + +
+ +## Contributors + +Thanks to the following people who have contributed to this project: + +[@priyadarshininadar](https://github.com/priyadarshininadar)
+[@ajaygajra](https://github.com/ajaygajra)
## Further Information - Please refer our [Documentation](https://prodocs.cometchat.com/docs/react-ui-kit) for more information about how to integrate UI Kit to your applications. +Please refer our Documentation for more information about how to integrate UI Kit to your applications. Please visit our [Forum](https://forum.cometchat.com/) if you are facing any issues while installation or integration of this library. diff --git a/Screenshots/logo.png b/Screenshots/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..27b5aab8d1271aef5ae63ee2701f4476008a49fd GIT binary patch literal 12602 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 MIn|fN&rO5=2iE8P#sB~S literal 0 HcmV?d00001 diff --git a/Screenshots/main.png b/Screenshots/main.png new file mode 100644 index 0000000000000000000000000000000000000000..b6b41dc43e78bb1e664124eda3361f17dae7eabf GIT binary patch literal 424882 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 z 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Μ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≷fYOT-T4dzTw$R@Q>q1;EAK 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

MS5WR1QrL}=3VVF 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�K(jvGy}rp4g^D!-%7KPr z{(Q$$9q4;uwXL;MZ0T9p3E8_$T4IIT(y7bw#F~i5)e`d2#+B-{hg}kE^qF#XPuR^3^=; zb+gBCzHOEGYQO44v-;%#j^w=a)xBkEGA7O9IAi~AxKpf&HB@;?79HvF>_U4nv576c z^}Dbv)MpymGR^$I)U+EPjE5vI@@}@$z+DV!Pr@^Ypek~H*!znh0@A_kV?F3JR@X%qw)$hrXa`ag`k2}+{?fAiO3V3&Px$+gF`DLyIcs2`kT{@xVi5Dtr`bD_v(<>*&e9c=Dk z`*hcBsiG5mf{pE+ve906;@*su!{b=kEa-JMCfL0+5w&I5NSgNFvMVG@FACbq;G6L> z!>Bv#)-Id+5y=!0DKpN13^I zTe8L+u_d1XiC9c+Z)z-jnnv43!{JWtSZ9*>GGA)XT~8#B zgUn;oF=Lhmxs}iZ5~@wC=%t+&#cCG^muB#5v`aVNRD7Yh^A(`JIuH8(q~~*#`!jNn z0y9mOIO8T%$QMu+h3e^As4r{LkhbP3vBfdRB>2QkkSou%v?X zT8noY5>snz9dK+ihHT1UwD*kXz2ieMh?vKr$76n@CEDhzbF&MVTN zx_y*AHzQj(3V^#zZWq2^KLPpT2Y1j+On$HhI$*2>b`j|Zgz57c{Ho2W;4gB6{~phI zbBAi%Zc3AB^n^5rRK0Q3xPxMP3leX*r^c5jFg#OV3c(1{K~Dh>QS|o<0fP27^9M~c zuO~0ktd97KyWwbx2Bqg~xesZt2_7u3P79g)-;(N(Dc6QOm{my^V;p6$Kar6OQg40u z$q#M#FUp+q(7B+{{F&HDiQRmeRzQ7RJt6TwH;8;b>`_ha;dt;6g6@i@&kT93$X6#?{Enxk?KjuCxPzxJHYh(l&JVmuZ+*><@umG% zCi!Ax`_?9&JnVH-R-RC?Q4BVac*W|Q{@&qvtzaukJbD~^u=sZMjOKa2@?KLodjF5D z$48p!c!7(F=<##>Y-!>|V3DhlS;mgNrLbeBsx%oqYo6Y6;2JYUq9Rs6B}IyIq0apD z;iZ);l2m#gsyEs;U4XayIH4&r zlPsB*f!X*-oZ>$BUxSrM1s*Pm(%*nks9GAeY!K>Bod6bqk>=|fQ9&X!w*0PI>0!j4 z1buZ@fiS@#p_&_a)TR^Mng?{_VjTtIx5rSo~bS{zSFz>+P$WOq8cWvj6;)dmvEKzCh|(4{UB=~B7-OZ_zjhHP#)u60$>Cis zmmyt`Fd29qx#JK=5sc7*qz{?G5liFyg6I|v4OpkS_otZ}j+Pq_mlxRt0Lx5?6S+aj z$+Y5D*-&j@ov%{~O}<8Hmi$P+hT;2N)nx{n_Q^ZfCs1gly5@vX{p+ z*^&_M&%f5_RZu38uV-k8Ou5_Rr=KEpzJXoaRU651?o;0U8}!W@@G)MD>pr~NhmQ5n znGa$d?yFp(|A;CqGau*=6+E_IhE!^5J)bpM^n??BRZyN%<4qb`8FX=U7tTqL*~HVvI`fyHQ<6^^K;X^I@pU@ z{_bkn+@kiN+nB4AovER3)Q0%r@MgjP%&})%5nN6gWXh2Qmp z5q?&qS0|t|@FioP8{G19RYpRxpr`*MR`VSTEOo|-Py3)whw89VBqyS1?pao8+FpI$Os3#1&| zi8O&eNXHdAQYtMAM!;oB$UsOtXarJTbcYp7HVVRNx*RS4tcs|>xJ$zKE`}ueg;3~j zj>y2b4256(KyMn8&dHvK0mF<;82mh~N8sHC`z1ABO2Q45h>b7Bg(hSi9ENnpiZxwp z>Oo*@>t0dCgxOx~Q(9RUPySa?77?py>S*5SdKN2oomc80a)^;N2_tfEs`MMC3_jHk z566<4@0p+qrkV2Q$c4z!ul)#WpugvFT9;PA3CNh99UL?FC$Y{4l44&U79&fR)3XZA zVRfWO_Y?5mJih|-d)@vTcEulKS$CdXx>4V+scl2h-nNV9p7Z^s2cQ{TkoiK|_Og~a zw)C>Z+EtoaGP^={qw|bfX9=3hT#yv>LK&cbEy1SEX*b(?w_cGS!KC|5jTUYcv{QSD-n@FTlH5f~K>9!Hy8(ue_!Kl97g|OJp)6%T zrc;B_1Caf5J1pK3MaP;0C_@p8WEG*(gRpf8gz=jaR1{w_sWdGS9;Op!k2$rcI^$D% z$45{}d;JaJ6F6gM+W4>1csD)1TI(%Ly)tY&Mwqzj;<+^-&$=t3V8(7*MDS3pgB^l{ zL9aF%7wYN+OPncSQX6!6qosyhINe676nwEa>Cl55%XV&`zF-Vf5K>ZP#>le!E`WZ0 z!3?2N19uByxgZsr?`-DxdENS4fYZB$L({@D6;Kx>(JYMO*R*jxhEu_9gByS~B>_qnZGqe;u zWmB_BuBs|lC}W;26TqDgroKS9r82XLhYCuhV%jl9S~mL5_TKksY`6F2gK86FV?ZmY zP-&M2H+G7D9+PI6xm-V~4e$)Ys;66I{k<7+`)dZ1z#hC`Pp-tPTJ0z;`4ElA57!F_ zMbwF^Zy&uj8On3_0Subkpx1mW-P+v3>^DUu*xkfvX1V?jhtFDpak@`&hojf3CsX%T z>gW9z+lFp==e+4Kj7TvQL^+zTC4fxY>BVwHgu z(vCDNV6#SaUCVS&Dg?g0Mfpv9kbn6VXpHt1KL3a_d$^#Sd+H34fd3K01`uf5fE09s zsqqajkF(D}6{skq#;jRW-~OZbA*aWW{83HnkF(S^!{}_RxL519w9)wK^3PMze5o+dkMf}k-qxpiVFM_ z9m$VdST|!e{j}iCtV1r7x@?Qx&n*ae;SQ##lj?%&PbScxHUtADNT@J!ssN@ z1b_CpY5*Ns3MAv z43OEW?&rgdgU=_`%XWR^226%kJ1)$h@?E>k-vVzu5(cZD#f?51-%>V44=?arPI=#( zAkmW>Z`krJPZ@9Stsc4f5}Y-M4i{^KZ(P;V4=pF!-}`_4bVQ6^~ zB?PgquRo8LXs{#DaB@-{flrd)@*)+&v-JngT0DjywR;1%~*56aL*Hj=#ia>Z*muWlR<{54UlYu1hP;%lGzrkmLReFo*yjZjf8@I4dXG=rrjsj{Jdm~bw-FsE`7 z%OGPh@x&m>4#J>rOXs-Ke$_VA4Tr$-H}ENA#K4({+F(vC1IB`-X^hw~BO;jlGd~P; z;Y(~l#Rvh&YG&GA!%^T=baHjPvR2w5n5?5r8U6$-g|x!sDX>i zHLL!0uStZDI_7vU1+AplegY<7tbc5wZ*2-cY!3z8NliNFE$^Hy}0r8|4I$((9-&nh2Mgi#| zgj^EQ6n8obS11(soMDMA1|}x*CpjJM?FZ+2yrZc;rFwO|pJfC|AwPcW=eaTpV$KQ? za*h|Hg_c&*&lpA(sbEeObva3dMDi@#M=2X3#^~UloG=s6A!%u;B}|k76JYa-*rDtM z;)O9woY@>P^J=FmPv|RB5xI~zed@b>f1q^o00wB|bqnu5)jM*WQje$iJG)WB(flpQ z@@{^)#3}ycQ}f3_x&+0_9S-3^B|%rRe`En4Gv?rO^fU5ez(R)`)x0VTFK8KyC*=f4 zM~0*mq<#dPgVi_wrTV{KL?OQ3~!HO%2k zLt@%%;5@qaOXbaqeA5p!Vw~hN)*19PpM@5CCvoX6D@(}cZ0|Yt^2O#cZb0z=Fm)DO zZH8N$Mgjy+a3?q|6nA$hRwxuLR@~j)-HR26Vx_nh0tC0>F2$ihad()US@V5o{z2AC z-aOB{_kCYiVFCHlk*NHdUs3fRbD?K)T*h!;+kRD7oxh*~VIxEc4#B=f)=&1`=8p=$ z{40JhKdDMNy47RGb|4nMbS^#~9kjGlZ(qLLoZ71KxQj>bz1!q&NwWw=_H-q~v8=<~ z^sim&M63|xKODGTy_<2ddxwQ^C9JmMz1VWucYB%l-(Pl%nQ-!G2$@tyK^~>zluc1YU=cEZ3BVDQloyzepy2ABbce2X-+7U# zhotszz5SM^;xxxQ+eC!e3!b*8)PLNcC7SrL(ezJu{P=^p3w=%HM$w9_RszwZbajKYH_!q5Md_$%?0=NKgKaRXlZsVDk;3BG{%QR7tzq z*v%&$M{4llfvm>`FaCrq_zS792SqT%xf~o8aDA_BtQ7;)<>TT+ssadjb45u3_@O+L z{7_UGt`H&C*UJmqA9H*?ttL-Hi7z~}Ryn&R1@;6?6X#o7Z_V@zH0J4(>_0x+>j3gl zLVj@tJO4Jrhg^WhsJ_&3$Ux&;Tb*@UMYsS1S=}5tdypv8UyZfFjHG%^e8Pc@Tg7kR zUfLra2PN}zrcle44HX)eOV}>yFgc0W3u8ckNHYjjjUX+@^YL8Z{;cK$B}OLG?;#i| zNG{EGv0zV@^y!F1Ae*LY9x&&T{s{WTI}3_rJI+vrH8318S_PrZ5;5>~A0=IPvll90Qu35di!mDH{&sQ6T;YbY%> z_Qfnr){1EeJS8p1V=aud;{7&%EnKfI$d4^LK8*iz- zGomGQAhgRJ*6d4n+MYb~{E^e=QoP|qFNee0e2YQBsS#XK`K4bj>p?snt?ia5>+eyF z93jpD@H+85)rh`=%V)Kl(4^Y{cv?4?EfkfTMz#~3mK$`uHaO}$_@K_{_ycROaIk|j zEro@h*}^3^^d%Y{t=q)2Rs5YiY%fL|&cb*WUiTUJWzF;J@YNpCqO9*aYR|Um5h-`o zAKRl76^_9!SULWK7QTV2sC9zd`rj_^#Cu3kQFAi6_Ry~ygSe#KI*2?v1P zu`zE_u#M$2s=cEniZ0Z7S5U;h>C`HPisQ69Ejw$Qtr0>Z;2AUoi%359w5g_t;SKRFQY_$0}`9qx=`Hqp9yM21?FSc`)>gX5C6pcb3}voX6@7BV zJNv6vG0Q2I75sfMs*e_MrDAnV^|qfZWmtf;qTW^Yq?J8Zsb)#1tv2o&n>_z@ni~Y{ zd!73*6`w8xF^1T!vEeOansppL%pJ$`Tpp_0aR>T7C3PF^L5z=$_G%WgZ2Hofu;jW;`5rLXBPBbD*vF)e<%CzDG*I^D??*vlXIpaWicdqqs2>W z^pFlYj*_u0ljN8Y9zI&D-%8_5Ug_!5$np>uKY{T4=h;CxyO0F$J!w5{C~?+#!6bF? zoGRGhL5Y!o*(D~(mH>4@(!`VydUGVp%&q#=7G^gj<9fiV%2u`UCyV05_sa0I9vr*b zh)G_;H@`4}7iL%d*`biJLPtkOhJLF5Vp`I-^_t!!z!!iHy~WFZ~Fb{@mlz`D={b;Xf?$r*AY6hMaYbAt%>f! zPRxsi8(wRAi#0yM-Yb#a)rNyl+4qHFR)=!x50H&LjUz{ehM&TvC`EnO#ELSm#07AB z&~{Go&5iZTq8uxgRIzojT2*12u18T*>Kxx!HNdU~J`14>-w@++n}jL?*COyct_l-a zvAH{&C>MDtOD!ok+b8!Q0WBbqT&?PCo>k+PFO{wwWgVohCKAq*<2Fq5!#lm^^2~W3?1e zW4E>PBqt$LoOzZ>3Wo!p&fEBu0LT*c^U=uRliP3T?~eTHX5{e~p^n}5 ziTLB3UoCzEg4uSmg2F4UsbC?BETOhT@c5d-p4e-`F}eDzgZJ${{O8}I`$ArnFaPSn zV^zRowSoWtO)+WAS?yU(TAjeYw~1e@zG4SgGHXMbYhXcH(G)49$l>9aB)Q*^$WN9n z&=?U-qp-uw34L$-AkiA2Pnh+iw4Zev-7rHwp|JN&rS&ZOpY{qoD+6+4!mViIo)n_G z_CVP6US?&dq4wxWRiFVT%uMDcHHTZE4cY!Tj5bk}TgtqFJ_V%gL*lawr5e+hX~HWZ zbAoL9kh~gWhY7K-BMdx3_T@IHbBdG?PQk|47%5<_mM9SRGIs?C?+UuSzjZW+H?OD? z$Jm>x5(#1|uZ{=`!;>yt4RL68y8p-Ew2r==D*mXwPhyUgs~#5@FTDda!{n;3kHaoh z9klK?ONHQp;7GN`cinn?+t9J%rEM@#Z|zt5>aW(~jU5d9we@ug7G*(<_W1F)py*m} zqKYaEjwWt&nh{fzhKOB4Y)c~GC}_h_k5xL^hZ$!9!pM+G`@4!+3Mp~7U*)^}m!TbQ zK>p$6vU^T0EN0mPbJ#Cu+#lF%SM1iLG}#uq)Zrbn%4ML9GuQN%s77;gMpo$5?ypZ? zS5uVES6SNB2IHy|Wz{U@2F(pFxCaHP)Z)S|k332Sz319YQ^~+ZLMC~v0^sO{G>=+p zIqh{(p<(6TrX!*r(#NtB74@+dpqeZ60YL~Z`1<{RclyL?=WDrOYj-N(u@@d;CsLfn z!7QE)2p$hC)ak$c@NSzu@PXupYBf=@D!MOLgc1EnzDQh6@w$4pV5m-#Z?+1{9rjdk z(~Ny7b`feCxY9AWkwGozn>d(X->aX&PrFP#JQ~0)u?3IF+F$khp2~!aOrQuBz;HS5 zo&rVf3yQPh@dt$WgpRQ~5Alzs!N_!7+T&Sw3+wgg3)Eke;vFUs7CX8iXSm$QF_`B% zRI5R{03W6pL522;*vv&3smDb9hudR(M*gC8>Vu(d54+uQLu)1_^#|F@5kD>)81y@TNT!i3gG zA#eXT@|w%GdIY|k;S|muywb#)f?MX(+}rQAxcJgnGFLc*^Pl<*RP(G>PJ&OftY+t@ zei+Kov*Fb;sQmyn?e1%g;^*+?P)xD1^TeXz4`=S5)08J;U6{^TjZkuB#xfK0o20Qz zw(!b)6htb>)?wjOZ?YrtqvDdZMWq>tG!IFm%gh-GYWYS&t-+ZBBTtL>_c{;P5O9Wf z*D#5PyP}Kd=D-OSoV?ALz1}EI1E_J;2vt*(pLuBT?G~2FmPHdbYD3Z#F|#d5e0rs{ zrn;LmAp2Bea|O*6Cp&&!1+8`1p>}*v3R3wDV#JR z4PGIQ0FzJQ0W0PFygQ|qK!{VQ>>h z^>^Ir+WeWi{!JcG6`?xFIO$&IZ|}kRwd{FNQ-+Sqex+;CDk-LAhs=BO5pc8H@<7+pkTnmsZDCh!sF2zMe{9|!( z@*rWL8!qMu1yTKqQepN`~?P&>w&_M}DqjKKAl6}g&r zd*@q}cFwnB`C?Nm)yHBTD?Tlkd6?o?XL5g93nugvecAprVwPH?yaBI$*IBqin;>^% zQ+b;9zdE|3`7W4{a(T*5iQ4I07`g77(7W#c*~Mk^79aY;nsF=~jQ`8qeMzPsF$^B4 z!yB}h73BtwJ-ojWR9Fkh^>6d9Sohu^@i+9MseirSdA?m@x7UQ3uSotqUWV6$6ILuv z9spsgkABuX&GU}_Tcs1W$rB6SJbP$U9`NXQ)Wy1SK++$_+}ns_?HjGN)c@w`8b~-y zQn3;eWs=@U(9pzdSLcP!6HeKn171dSR&=_~^5{6wSzG1}-&~I#VxbL^-=H7O? zSs=K;uFse`}7S=8y(wN8LQy8sU6__(Kvl1nZg@Mv# z-O_~tx#&eo7*fd~vMQXBZ}Bb-u~Sn5!LFDGQApW>_%TEV>x^1^P!6DRHjbw~cJ5j(lNM8wp z4@g${edpQ}ep^BXp0{L09_}a-PV!3*ZSWgUX^EsESBWGiXdch_eAls87i3o_7m{kX z9w8y9X@|tl$B8zk7k@FY(_JO&;E3@gtYZi4KNVx7RM|?BbKz zGtnhfTK{o|Ad6Gn9nGQrUF?fwe0ide{6O(9(QC2K`V???G!j2x0fLtlJY(q9e^ITD z(&jC}$mjFhrY4lvt`ye97N3uAZVd}uURI+D9=h) zojSdXvs<%c@9FYa3E8}wYY?pkCRoOYkrO2xp{T1QEf+7`*m@^{Du=mOPX8^9SANf8 zbgK-vVh!~YNaSYv$6V!Jz^kt&5S)&#Q1a<&+1+kD9|H77KWF~^Sc#Xz5Gr9jHNi>7 zE{m==vLPj?phcwRiT|+%yF(V?n}k(H#PH^50EN#J&CoQPUTH`cRSF3chfSe_S>eDy zax7-1CiGY3g3QFev4aIc$+Y(@#$M7;oFoBUOCM>BX(!f4^u+|l6BmXH{rh$Z8-K`v z59e3mo$F?fh8 z>D`=|z$&@uWe%iD^}gG@C%n$vs|EqDi4Hh-MLcS8l4rgji!2&6{`uQra-Fm07$=sz zN5MD@$W0VUFb+~+FZgI%@VUA`_now(<8(l3(uL_z0+#fg%uhnaUoK5DNqp$ZDySqy zuBt&fr&pjal3hf&Rm(_&O5-vSLQPW=xT_Ahwk3EG=s+c16fX5I;Sp7Mb4#?$T0dqv zvoTF|@TTUh?QE~g1G=+*CdmfZ5U;p(@Cq%MO-{Bs3CIl4kh+WJQJ_;EiGt{AadX7& zA&es+paYM-`_X!8gyI5BE7`cQJihn+sInZW&{mW{wNSd&Yj2;;$_MSECgV^?bh+Y! zhZj@*5`ZTG!M!R$Mg&LDMDld%Wy<5ifIG>cVh*IPF|^CD6Db9+Wf*73>_P>6yfC01 zI8**ZE@w9TVFEvEs)fLRf@|%sE{<7mS7g?9Kj#w=w>$(eT}Ye5a`z1W&adN2+!-z0 z^jM1bIlZGgEHYRaCN6>gDz@P-r>WLKkJCJ8@o~GgDSWZZG{kcdK(9E$IBND>lKs{~t=ck> z`c!3U(_ep(<#dHPbf;?ORKab*agXGBUNq{>4WWL&5&XaRkr53Ro80mi*&)w(^7-VA zu`lMDR{~8`P=K#HQ=Z4G@vzar>&hv5>s-M9)a-)S;=ibu%1|XUA{emhc>Qf%NRG3d zIwbRY?e#5Cz)P>r>s4^bGF1s zvh=W|fZisVESMf>ZUG8}BR$|vbWC&feLPFj9Eh~YzRjWia;u`xaW_b7 z|IdfG@h{%ysR_mC!8t@J^bj};e$%v(8e6Xnskl;dVJX0ktfqnaE!dN~hE8>XYqDz7 z5hjrhCpoQ6tkglD_!g>;Y6H5Z;Ie~%>nA!7a|b9BSmUkW*)^d*3PQwQUd7w(>K=w1 z$DOJt@qMOF5*QRTo- zk!HgRyRYlHZ+G4Ln_mVS71SRe^NFAHBG>j}VAYZnJg28s*a-X?6Z6e^@zt`t>+MyT z*&P)^e&Cq}BKTz0{%fGbPDWr7*FNL<+QxG`Bcj*;B&R#H;T1NVXfRjv;F)jWlkE2h zt}A^B`W}}@xul74V>dIVU=tJ~e!vVB1M4rvGd>v(!4J(Z-;wiVvmkYZay1=64%^;n zcsD-wTmo{r6rEM7l&BN5g=Mwv?a_d4?X}FlJ`kLA#DKLRlV1ZSIW@Uf zB<(eIW(JQTRv;Y<)2<^@PMWs){KiKd$2Z1T4skh$rAa-%V_8CM3jS{=OS0 zegQU1O-9ENhX>WeJ!`4tIfH1E;f52wH1XeZrCGi^O^dUKDPlq?!%t5!!D^=gPUBXT+i7) z2(Ww_9?Mi`I*5}aEDBKBQ+u0+t~RJv`IS>NtJf#l7(;$9j#OQgye?{MN0P`2#;WJ_ z@)prjfn>yzgNr9Ds}8sW>^4d8{Al3RoPc$l&$LJp)1Mqu?l!)!W2#}5MSBs;KF#|B zyl6#NEwleEe6m51Y1%+*-zUVFE#8;>oei20$?rsUN?&v_aw|{tn{s;|KH{Y4gb>Wj zeGmoF!5a7;&#~y!$hKhh zjkHxG&=&VPe5TOMSVvf|ZV%Ky-Kz@meF%2)gzCSeZlpfta%=+!nl%zTd6_iA#vFL^ z^z&q|>Q0YlP-fbOUCQYuDfe4hME~%I2j8c6{3A3(X}On;;%q}b7ZGsDS@J>d*diMh zGRRKO4@p{$Y>~npM|!=1iuxTDAbe_{`qhFV(clJPOESGpu09yIOcYem?J0H07)Sr` ze0jXC_CmlLjP&f(l(wE(5@~|)?fLr9b@gS|zql{oqL+|mFa3ON?*;M^COuslkcImM zYjK@@I9zmCYSO4pyIorP)7fcfTl{Xw?$MiD#5~vjIGeVxrilrDhCtngoxFr=9tyJU z)kOcha(j1fl`{1bJ`so(0x-KUX=HgP@^t2Kl=+LibO37`l@!+&@M#+O=F#fTHwr6= z;XzF5%p0lwD=o*WT#GjxOD4zzod9FyNQ>Olgv4_3n5Gt3l3iQit&17JX9>bUk${^I zs$U#VNdm5-b2D>mIe0CM?JJNvYU4I{cvRW;bq=DKc~B_G4!7>|FqCzRo;z`A4wy;z zEGMn8OH%<%3RlL(WIv#=e~Yx%9e+exT77Nn92py)u@A$tJZ& z#1M4fsSzovz$M~80M3Mx49veRtoAtZFonIV@!xP!v!-YB#Ow-1j(w!uGxPyVXHkgV z$HJnr2F0T)C;Va)xFwI3OiuO<1bn?IMLXc{39tm{sSw8MenDfsg1tt?a~QFntX<A_Nmgc>h5jJ_$*ueQDvbb!m$mUKwPPm{95Texnud!+n3m@qK ziMsSqRxU49;*;bDNRQH>?vh=xrcsC$d(W(P;f3{%DLycAU??+I0G!QNHtnr`pf|(! zCU#j-B5PcwWmTrQS%&Iaw6Tr;DTw=l|tNob8r z7*L=Am{8j1v3m7Eb5^1KWmgdXwwoASXf@hOq%MS>9ED(rJn#_;E^_w#Oe&XykUAt^ zu&^W(Z64ywI%u7V(4nxBt=7ZUmdi(4jT$kK0^||cFI^WBH@nUtCm=muov&PpPP)ms zhT$ED!-H;?7p2Sl3#j5E)BybU$t9x!DEkdr>*L#Bk1O$8rtTaCByhc2_1w4c);~Aq zcJYwQUGZSn-0;TN;*DMS4ZMpr_U2e}RAarYMjCb|JgHsUefnIf$ryJk&lzr0_R^%3 zh;~hOa4tW&9=+(1oh|EkIDEQsly$jNV7F}<@R!N?X%P(XlRxFZE}Rx+jf~{@iVw!NRIko3S)z>6qU<=q(|dp` zjFEx;INd~28{Y+dMyL>3_!T4=OdXCu~xFu7|4z=X@W)J z{riw26XtmV$u(Kc>(rzsZ={w-2#DYm{V2^rk9x#-!GO9aq2shy{zY*xtM*Jk|2|NS zp3W$KHfMh&e2$PJ2Dw$4WY7*@@DszNZ3wqcRP_#^94MOI6&Vt?EIrdWS%l3S+I!pi z!bM9bd^RKgEJ<;{LB}D3!!(gUxMoUCzx^iEj4g8huh3scrrIT)UfUX2gig5^nGUt%*89HbUdpU1&W_QyIU`5APs3A2Oao*JX!ChdXl(88ZL9p>tJh zE)WsN3<}yKSj0=DT8~IQ?9(!_Mn!Zt=F0DvIWZxzNJVW9`!>hpFL%H)*WK`)+O9_u zU2CG?ISNox?AA_{o{<+?LYxD1q2lZ_-Ja!(Ubd!Fu7w#GF(y$XAxm;eTI(wm$wFkY z>_Lg}rAaMPu`^iD7rZ);6ud)5TZFVmP^-95FwZi5O|LMrV8GxZ?*R-5zS`Fe zpp^W>{18N^Nl%tBwbdGrr-t5yL`yI$BSwBK_9g zBkZLm_Y|&zG-5<64`Isl!g7=|lvgc~5LaIMiA#KUI4;b;ob|r_rv0Wg&Uu~w{HDo4 z{P#}y+>7NfWN-)avd4BiK{tu3`51WXn$($0Y8X1U_)TW=J!N03caHbxiGxw+UxI*d z(29g?@fzyT1_;Ud6R6Q3?DE(_c<6BxZR)>A6+;>y3*a0G%yE_=Q-*R{x@!|zw{e9c&(9t?avHla#yzJ^lQGi=1^)o8fLW-N ziLp**<6!~@jfh<5kNdYwb|RcN*nL2$mPR`C6cDn?x95m(`5r)#TR$$a^83 zN_3P=WhQM@jna{7s8#ZSXcW|pU@@`8BLY`lMshavm~WO!cSX2vk7(7P5t}kt$NwaG z`2VV{n;SE;q$Kw=$ZkUuveKLi)huy~96STSgAW2`YXuFWk zW;u6`Oli=V1*8pyuSTdWp{Twtc=^IMN)g~w0wT56?!q7YYbx4jj@~AQTU{n~>Z00) zy#|zQ!3TXKTkgR~X%LSXi(Qw58vqRVi9J3cn4$@X~?l)l^`?3(XlEow?EAAz?Bo9%^6p&v?X*s%O ziH|INf;EP{xI7=x*E}q#hBlur7@mrC9G^F550f(-+r#*2;o_=fVu`y$Pnve|$ZGv& zqYejpp48j9a|usIv{pOU<*WWZ8h4`*0Z;zxPlvTaZk@b1E?j>FW_2daXDcS~htlLA z`V?g0pF~kykIm0CaAAd=mpk-Nmaj+ok~2IMVtyond#6v7|5De0KOE)6*7FzX8(;6m z1Hpl(3$M1{Kd!*4Ojd&F=q7!of3mx4jQ+Y15?KvcSto{G+|)R<28<5`Oi;WwBo03+ zU!B+{^)^#yQeBB0E}-V^eKzyk7N55?U?1`RXzSJI{9Ke*li`}LgcuY+z6(2Bk>&Dj zqO?2N^Y>i%pMnrl$3h=!Z>tQzRd{BRcihA;s>{WTNpgorIV3n_j$RsuA<2L+w!sjZ z!`D52V@<+}GzKhQyJG|x%G%s*o7rO(+x{s33dgocVGDb#M4c7ijkJ(2S~-T`I@(WU z3sDJ(#bIW|>a>59)lo4KAdfIErp30`< z(Iba0Kl*18Z;b5AGIayJAjvbnw6vTYxG|2TPzKn~)m>JN5)N^m0VQkKD~!C?^u?&Z z7x`s}!Om_t@Us<>7jJN2zrY+tjD~SFo_v5jxb`%r>>%R?(c?SdT~=91(`eY9p(6MOpK%l_?qRMe-Rz~(M@}^AS{#L+u@%1w1TJk;Z3_1^%X=@ zPk)%p%f(CZm`7gR|E^zdQ*`JDoZbeTHUO}8-_m{|<}#wy5k!4YD%;{PZCt)B)4$v< z1JNi^7w;wtsam~xA0}O#BsB>9cH+L#@J5H3!1eAgcg>eqJM;r9Dx~h^x-8I-O8Y)d z^2dRmDDa}es#Rf8meAOHoy{wI|QR5!aN#Og4~di5HHj;85b1?SrhTT=9>-6)T)(l9en{;_7mZ0 z29GaHZvSH@#HPXBv9VXtGS@Y@VvRRY zx7lMgD8|WkjNLeX&oxaDg(ryn9TZF=M1`nI-+~t-+?wtE2APvb+E@=V89;2eiO2;nYYnc(I7HPCWviEUp6EOBBU9f5qOz` zg&US(6l+LTwFjejAjfxTDcP$r7^mPL+?i@7A_gl6Db?XAVr_1maU!X_aj_w>YRQ-^ zv8Al67TCq=KwGt%qLyUzV0Sq>`3g>gk+*^U`*9mHo+3Iibvq(DTf|;(1Ad?MIgkO8 zS5IHKLX8`JS=ZbR3pSpQGUR8g2FXkI^7tLekWV`on^}(|glW>D9Wx1CZhlH7_J)P> zlZ0RM^C0rOlCwrns6BXs;`%C$`%574N$KO(N?-?D4~Bg0i!x>%R16_kSP7?-wlPgZ zjR|L6bFb$0p~m#~WK|U-?)=>OpXu_QWQ+=<&LZo^M&a}L>Fa^fGx^WzD!RNVIlcK`Z$Gh%G%@ z#1IQWIkJaWjC}KbpS!M(U8Gt@bAzlLbH^Lf{9P6{>iw%u4(D2T1&sQ*n@5D(m$F$N z;&C?MoBdF@qLj=n^*S}s2`^~>|2ylr;BjhMnJ5UWK1hi1E-G5HRB_{@ zWJ@u=Oj<7bp&gS~GZGZ4>f}ZlQA(E_NFo~2%NppUtF$?*nAX)8vzaW&ReHIv$8O5l zLTtkvhOb&yQd>v+~b@Tw)20#R4X>)$s6o?nMDG=srPy*|v&QOn4zrZsXZ-zoo{}m7|y0yFPd&mLRZUhF(0;7^Iw_0 z-|f*!95F*taht<}ItIDRGJ$f$cu*!?s(v74BBe9Lx8S9Q?lI#r{w5$;5PpR#DteTa z3lz7%k!!qnUG#C4@?AMxhl$fVfc$RCw$Bz0Uc3)4U+di2!aCRFgrh$Dv&%OYFFSg;B#z8b2P&*958&&;DMLm1$TpG$?@v1owBc`ZFW0(B!x1|mo z3V{v3z<(8GXa6c|wk!j0EYCw{cYkYhw%9IQuLm9zi>o|}Mn_V$j%IX&Hh z!=&{6b*i*HDJZg($^N4=*}d7u;%b0j(CR;+=C4vrKD#_ala>!juJ$f1FK)(OhAeBI zCOA&HP8*CTxu-tCE?$Hj32ywH|C0SdHG^%EF0*4iFanSL(BVxFolsQym+V>i={!dE z|AoUQviAA-3h_St&^gNJ|J&x7R$&-)!eN0eVd&}nkS zbi1vJLJMUu?TJ#vIr*KGB2#pKl(7ik+t^?{R0JfoZG-d7}uXBpivB}tI zkSlv%#N|xiM+u_m+l&jItBj2*2PE3MDaYfr6_R!PaJg7v#wN7LL;CRqtN_L05E9%gO1(xZIgG`gytA%3Y84mcZSHq;e@{ zBQE&-iAU?h3rf0vD#^GdCyy@$3wc>>U0d`CvIcYh6NS$K&+L&&yIb@i?0)YR@pUWz zMVq7|UkVD1qojU*bjvlAZD|ggZ^g92=lLeY6MR$hDNg(eb0c!#e2X|wCU)auN;FmB z*o&mb@3`S^8I#4!i7mlb>}Cc4Rr$)N&Ea_@_F2#si3aJkLy5iT-(uAB2u0ubkk{$C z3E=7N-||OAH*p6D~5pqcH)}1BjM|C zNrS4$(7g9$R!rX0RB&hDK|B%x6pgMe`X7o*T+B{wQNXXN)KnYol;n2`+g$(jumw?_ zpa$@7Q!8%_!YsIQt5K-dC4SHJ3V7Y8ex_6Y@L?ORLbWVb%?p#Q;c;i1`W5WAg-_kl z`9l5rH_&qimR6P@kZ$Y-JPmy9g_{~yS%V+sp2?gnzMN&rNfIO%hwxz<|8++pGqdEzVfyBblRKydGIaU?9E50awXV)VE*v+lK0n9bl6`9#j(u* z2YXNZ_0RB#jY3-*(-)}uiqE_M?ooSFWbu0ism_0eC`h3&H4N{wmLtVS0&CwU^MvW8 zqwesGx?2S3h0cGbGyW#)u(J)?MpI+ByS-9_Qk8QInZM&waIjk#evZ}{ z-;N4?H-)Mn4Daix=vj2xX*w^gad=gQC}}Ht{oBPb^lObtY!3u@QjgK5E7Ed30i`OS zleWZDKVX2WbFObqyx-%HmSaB%gZs72h+NzVh9^m6tO+X4O`ej|5rxH=s@E-LLSmE7x(0358q+`X$A?O1qV|{rUO?4ZuB*|Knb;r^$UcrI&s!85MU4!CY#BF;^4yQMwzhXAMh^`C5vIPS z3b;eV^_G{9IJ@GW5Lk!3TszX_Pizk*XEUkzM-*@)&r#oPm@=oa2)H?6!B4A|IoFFV z$6fCe;^5J~jYj_Xl$AklZkvC=*exsL}P&C-Bo2TwBz-@Ik!6F?9B9} z6y?O_!vpr?gOrgPkLL_i%N#@)Ve%B=8cN!%&$mzAlk0W-Up`5EiaAc!_c*7oFSJO2 zDLGmyX|9aoI<>GMI6;FCP^lj_sV`XumDFcQB71RGNG`S_q3FD8GJjf!!Qu*)De@mO zBjm;X0N{{GT0~8y9nkL=_vHwL_|a+f8OxgZ#{~IvQKbGlD*)PQEUjWvp@B~6I(pc) zs7*!)K+-0`_*da!Ilqk+{?Qwvn4x2#uq{1`oT-6eQp6?Z$ew?AWF@?DI3;x-?KZCn z$tw?QOnEMW1L%z&LX`B}q(jy}#LsDDvTVm*Y!R!(;pf^;5Ey&cVjMh;n+e4O0>Q5?{?zmbyO5(1W6n8ihJ!;Bj1coZ-MUx2=MbNS|gVoa#|}E6=$ukT_Op@CUkwXvYWDc{f4FG>{B` zL!Ah`;(2y}h%2eJO-ZtjZVD62gq@+p^`k%JK5{>e*1S;U>1v*bml<|5x7JFn2{ZbJa!{ zc5}u3(BW>UJ&&34*tGr_)1p6)S>JKigEGAKzV43;+gFbn7Y@jl+*RHB5fp-|uu=6j zWj%bJA(X;{&qACdVmX*E-H4f1jF18Cjo>zqKx(TT)%SoiMSOhRcu2a&L2_|%qn*_I zi9ee8suQU&_@p7vm6Di<=u97Wtq%xI+?bN5?#ERuHZ9gMVkug+**<|LZW}#MybeTv zU2nCWZ_OCbhlRoJF0{{$UaO3pM{3_3@0DoR*NNfh_UqAK;Ag)XMXw8Y zuN|X+%N6-?a(>`db;_-UTcB@-w_}%Z$L4>Jvh#ZDKc>s9$|y)o5HjNAG3=>59N<3= z<%dK%l0TI--6w24JJ!!b+iF{pQ}l}$yEWQpXn~)LPu~gwti^BNp|qZ3lzK)1DzVMv z8+86ak`(y{0l^=uR1u)r5V{p9p+dT%0jEtn%t%kyAzX&@F67%nYq40Hc!{Q}f~B8@ zhIDs->_eD1e7!rvjuPN3E0G9|w|U+dvQOPD)mx(_*gFxQ{`jsVZ>ZBdz1s+W986M% z=bA1ZUq!18XF1zUDa0?L6E`;uJd26(Okz2&jsPycFD#8VmQz(ZWiWG|f9!OE4}iBN z8vDG4$b;0~vFtg$BmWpRo8sfskUU167Jcclp;$aVW<2jP01ViMG`}daiY|Fj87Ly( zeRtXj76lX^suJXnW3d?0P)rnR7)aXhzPKKSF z&XqB+{Nyz%kSpER>YCawNtK;IN63$QD zS@GO(?dR!_zkYYD+{HTwK09hXOVq=AkVQ-Ok<@Hgwk`Z9k+8T|lBc9)%y&=ruD@Fm z`lzw@*j$%wP;NK%D;7tc?Zil>%HB_4B0W#}5%`LOk!vtEe2)BPTFdqp`}})r6C4E5 zbbN|cmE?;pXt=$vN*@+^AMf*Dy=V7Zx8CAKWBqy6mqie}3zk0{47|{NN`qa@+|>l^ zW}M%{8;3^s%ltV6C^0`a76Psvg_5UW&nqw`jwhPI3NZ5|)IcAnvr0_;S9;!%Ft`x& zdq?fku~NtH=c%FRJi5@ef^&B2E3C^h|BIW;XGXqu%Do@QI{~N;iuv7;D{@AXs{o;< z?Z30+H)Fvw`g^nr-RHg21!}&qmOpa^hzUlBZvUG+${>tSfbergy0yt62w>@cq8U!z zM;GqaXT)xM_aG`Y@W5!M158{+=Dh`xKAE(8)P;$^e5ABz!O=aCsP%fgFtFF@LY26- z-dAWkqoY@~@vlcnb4doO*9*sD3%Kk!%=&WmB`F5Y4;cA*qtGoqD<}^O_#BbYa#H2r zkM60zxt+8-wDQ!OGwMWgE4{~BgvLb|FtI2_pS zIy%5a9V<~M9=k2C+6%oPd4TZ3WyZP9}5-S4OF1-Kc*6FB&An#2!4M$?RE+ zPNZZ6$BDmF%#H;b`jVCHfK=P$Pv%|a#0Bmu`}XAZvnbl&+L2uv$`^$BK4v$M0a>ou zMjXVu-vHxpwV0Jwqxs?L)pW_~lxUJQ8o_2tz{qzpgvg?VB&rHlydR1`;zMQv*z%u< zW^1vkl_Vl1UI)Tw)D&6D(^;7R4^M9y6-T&qjV6Hvhv2T0;K5ykli&n*cOP7Xy9IX* z?!ny$7;JEN2A9E|%Q@%$?%(bo-K*DAUAuPe+7)k@l#!n2U+urO__ZQSJ0yK4ZkZoB z?NE2E85#09&vktBkj|>B)Y!}ju@>{ATl}v)DO=lN{#t7LUS%|a%rN7IJfr8GdC1)j z{{C7?UM(b;CU1^c;&j-vRVTG(d=PWm;9YKk+!S{!5 zwY;AAOTC0q3PC-%Bknp38zVNK)N>xlMDaTV1=;)D&p|I(q7Z@)ww99_na`+>ujQk9 z{FeOMhhtW85Fy%g5V1!i>AUkjlh?*m*Hbn>oO%?oC(wx~HuH|_uH>P|W%{R^?X1XJ z>b@^5v!O+ZKjHJzXcTpyKU@=k(BtWd5mk~3Ac@%G#ngH`DlQg&|q(?oWr=XFXicR)cSS*a)@4ooly6c9!bd1zo zmj}!B_ubjcsrk?knoSspeBicVgADa;HqO?5HTHN6ZceJK?C>h%R6OYULC0SBWQ3n^ zQ?0|^8vr66KF-pZ(>;4Wb?d$XTD887&MhZhzjVG-IH}hPnJ`dZHLOgw!{rN_BR~89 zGfzAD_OC(dty&vuO_K7RG^o%geIaJvANqgT@{Ci$NNmC9JOy$hh#)V7qA5Kk?U(uK z99}sZOFW>3HDKoY3R6o>#PtqDn(KM-lep{AOZP*ViR?l$+vBXOQjp503N(SMA+bq565nm|7wd|O#yIlq?|caZQhqzEI_}Rd9|(v} z7nwJW$ww&&JwAo#4Z^(sX)u3S_bG!Cz!@${g>vuTg}JA44F19u2ha^^eQ2!&V6VR) zju18Zt)3HXHp7xmBKoBrP7s{SYWN|aQHNT7UQf7Q3#>7!g0KO!R_A!S=o z^q54zmk%73;o>~-{@opOr6P#rUlcpxiW+`XrF^Z)9#pZyj77vhKMt?X<7~u^CC>_= zN~+bM&DEAQP93*>yaFr!!Ay;s!Qnhda@8{$GDE_d$e^`xbv$ z50#V5dF9q|@Pxt9d``%UOogIfh}qAcu*?b7vEj8yk6k*5nW>@d+Yi=`};{Jej&wsl1` zVpqSI8&>PrJ#C+d7EnttN2!^C63*iQ!Y{8}%ssCdS*GfC)cgykgz10P%~8i!)u+ ztC==-N`E!)oo?TCBdo2vT{JAKZonhG%^wjHUpz&JnQ@PW9Mu3Hm6JpIvPveGCt5ca zT|V3G>0I}j`0dm&2=5);${rvzKMGnu@VcyCjNjP7b7-Hk>{fbD+{ks`7r{?9(+OW) zha;`mkY~)2|7S*Z8I9@Fx7+Hr*|F_Yn*V5;gerRL;`0?evS-?Ay z4;1gPD4bR@FOQFR1hVWqW}k1`e`yz+a~Zh0-af;1_&j9txrpAXWO*KzHjVa;UrU?g z83^o4ejM-}N2Qd`sli^6DB#Yu9bPTkjT2uI7kU6JNF_jIjZ(H1Ms=xOe_pAd*9g>^#a=J+b~8j)2ScGZFi z4*7l~kZFXBEWDF{Ny79ej$&C3GT}3Rb z7VM)^xt}c1MSXdwy}DDFoSO;4t}Xveu4^$x#wiLE9w`IzxKjmd0eu+o>I)vl5z@=s zAZ{fe!O44*>@}DO7`qO$TeqW?B%(8j<$_-NlGdiYe|ABNn7X!|MZ}*;Nk#6TNJ98A zD1rIdu%Qp$_m9yQ6?Q#>#Eq2vOJS|aA4@Fk`nFnFGZ$c3W!g}~@uJv*(ke2L{;SZR zK&kix;_jhImIt>eqn#ZVXoYTw4cPnYHmiSAY<9u7h9oit?OnmPM!WaNK`+_Rfz1Ty zGN}|e{j2-lwQh4+CE@Z-w&-Y>{jI%~n3y@Lu@As~D@zROnqvIYa81BjcG;;x)KK(3 zO~@OyI*Xt;APMO3jK;m)W&0?UpC#Ov1(nhB-L*>mR@QSK4hX}z+1l@+JSHz4@NruY za8b8qx%I+WvS0sQCPB=y)`XDL;)9OItY;<;`x%A7WjyLk%kkZ?SJJIjp55-UnU$k& z3R|ejaiMm_)Xi(*p%nh@xs1X&6g~5YAx91pC>{#lZyvc~(mcF!&WhtdH$3g;8J)4ENPsWlvWo2Q8ePxorUcR!XTMe#w3B`^y ze&xZJNBw~7I8CX3>ZX-VSHBKAdqos-J`;4`TfMFE0m(BkR_b+pxLv*Vzr=D4^vj4~ zBbNTlMvHyPF1-ircO@D)jwG2P0c-N*uF4AsfHgEjF3qtjOtqShQ%oB&aw?3yVYxo{ z!H!y4rUU!!L|G^%-WCU*pQusB2i%Fhi`XjVMR}(0d_T)Bz=fS{ikzPL-t1P=M* zIF)`D|1`FJd|AQ>5PlnSjm~BXxOj8;H^xNxKG zL068(RlEL?_cN5%@VZXI)DUIONEJ`iv=N>dm*ej&-X9S3JjTP8CGV=D($%r4Tq-TB zHG`|FnphU51LJ#8LqO$_SwSlzb%4c+C(6Sg+|=o384j+>-d`Z~e7b!JpYu<6-{kY@ z=YL-nU(eXHNm`v|ebn1JThM$n;tDvA-ISK1VG{w2>~R_%%#lp3hSokG&|nV3 zr)sZ8xZ9u_gVsb+Fc+GPaYq7>b$o8^DI5hl0Wj)3>mlNCAG z8|=5^12-M4BqSB$-X&O-3|P_aw<0`++BT2Q5b(=H?^x8t|w#7H%kmk zx|;7zJ#ESKJr9Ij2aNB>!M`|ri>(yyi7pJ~t=)W5|BW?OE4Ulvi5127!mY!(t~z>R zDeQFY2@Z;H#OILVw(LXE31omfR zLX|`*xlp6uFn?4h+j)bR=vTzq%ef7m`^}qoZmGaX9$^{v9ll>9U~t89n%*8UZcfr7 zd`k{H)c$Y9hC6k0d(x?yRlKd%EerK#~sA)Nv$~a3oq1^LU&g z(o13E{GY><3R;ccOG>q|3OON)G@^(snwdmtL|)N)KEQcD!rnh^MLR|n`PbDU*H74r zI@|Rk&Lds9?Z(M|smLq%+wfi_5kCLj55TEwrhpw0C5|7ZVN7Zdu|4?!P~rIl`Aa{Z zirT11RR4xFjwP_9%9rTEPCU5w*U%>y#3%|@d)2Ra_7)Om^Uau@*gTM03{VWZ;mgIn zMolhm{bZ-uz2Gkl4V`A_~S`RMHS42@#a(vd#0?%?$rP#7JUJY63x%a?qcg)?T&4Z~*BZ_-%)jzOrSL5HVp7%*c_4YP7R~DkK z6pQ(yY6-o4U+F&j45%FD^}0FnTb!tN#`Q~E&LC`cbtqXCz-AA?%fp_H3{h+{LD?F9 z*C)oD*CY_ws)F9-2@<%vp@Ccvs>5RK=s}r9KUGq-(@H9Pw#tR04+n##kA=c=e6DE- z_-3QrwfWIqF#z04K^f)Ht#kv70OyZM#lxT2E#!ok+WirUG<3oGzMoN&6TXVsb>Sh3v!S70DaIBXk(thJtx1z8d@W_Ro#RKuy zFk;K`E?ZKtC0?d!C}j%7=}Uxt8ttxD@^vr+AG?qst1SDKWy1YKxkG!euq!aGZ%1)_ z;NO-Y&Dj@jgn`TA&m??Eo3g(~Hc67JRP;{8l8@dg{$H#i2GCNq(3?0JOVhY%yV-C| zg}{!L`XNDwW&Cp1xg+vHw^QH__nTQe@$zL%)MzRqVljFjtZn0G0zyKTEk~knK>WN` z>R^e;Jwt~eBBUP)3Lm)bwZg6pKAato=L=``q-tubv0`|+p;5H9iilb*Ml-hzD3y6Ln8I1h)L4XJorS6XpmQ_orvHjoFxl z;Hb@$^+)VeU=^USB$rFrnKZT7^A?7{T}3lV`j{+`Oe1#jb5qz68EA8J6i_OM10HX; zRWy;Ux#tXex{;30I>}TUzR^x}#&F6Ioxq0;_ejo+WrS|_7(?44w)?}GY=l?B%dS;< zo_Z;SUPHOJOy-H*FSE#0j0m?H9$B?KkRzA&^%^$a3(2lCgnsMTkV%f!e#)pC%m^i( zY-=NDC|5I5`h~_-|8??FO?b|BF<^Ig8Md@$I87NRGH*e$O2f8rJ@*+(=Jn}lPh!&R z%G5bJ$#5D(Ceq%38HnI(NtCi}p+EV%*6}jKO6Rvvo00qTqe8yZ3tfc{H~H8>e7ms_ zsl>n%8)Jq2ca!}uWpwS*RNWeU-v`cVV>)0s>D+#(Qswg-Ce|oRTFaA@I0pBJRs}BR zleOjqez0Ty1*h$#g+_aRyy)9}PdmZ7;o5wblDlC!ph=0%t8_~Bge4xeP)<01y0F4* z3<`fIPPmU9w9s$dRX2(mq2yfci4-m@FL)?%|)FRx#N>d zE8Y6umX+B#F0ao+{Ueobt|~fr!!rhFoLSh>YHgFzSVUndW5W5ORdgsO*CCJo`vgTN z0)9$ODET^^hQ>t5lOg?o0A#+7vZ6aOplooo&w<*FBz%+(zD16f9T(qoX4%{nK~qB+lsdpDHulhMV5GwVfXt8la{8_&wOM zodM=K9&p^NEx6qJO?b;U01Ax14_OYuFT_J3Un4c}b$1(Isy7q&xNVaJhDtdqv$ z--Kdj%jF78X`|PCfiYv2quQ%s{+p;;84NW}@(i69^RL9~4|Bf=6k;eYS4pfG3Ys?` zf}5d5N3|v}TMOIesIoEw`tm&rESU@hSL9GgbRGmgz+_2J+f)wK7zrqUxkuqsNW2^) z0pWK?t}RnjNwnqM3c=)2K&KpH>~C9+H6pl#Xg~sO6k{M|AEniq`~5q~iADHAH(ywf z5A=g}We^~WX+03*M^+6;gm^w)IW#%1-5V!qS8o3VY%~_aH8US=K=CWu--0)NBwa}r zh{H@`D^bWF{Wse2?c4?TxVak1YjZ*;%D)5Ux-jpXat+6wD)i?~KJ}p3@H;T=R9#a^*K!wi8B+mCs+dtaR3z}fCa&1Mm>_J5r+&>*ZzJyE@pb*8E z$r-y_AZ~}_cq$AkaZZJd2ZEG1-O#H#JbC#PP&X^p(Tz7pS_sI=dY7)}^ZsqWeplUP zwb4}#UvNMx8;Ca8BJa>${XiMvx)eT6KoyMqWGbrAX>f7AI0eV|MDxjx&ze*VQ%(cU@b>ZsoLDL zWd3v$bb6o`kX$lqs(ihlJ9~GQwUNdg)>__oQ9_?RW%0JS^LyG6n}7(*h-oIU>48-; zGn2h#uRLC1OXglYothn|!fVSL5>h>J*hMa^mI)MHvlg}z>%keUk!{kOTKfh?u;@x{mEX(61 z7?)bZn3S9`Ur?JtZH0$ohmf{z27wj*80pVkt{V46LZ;#gSUP8b+CE^+&YmhMBKPPI0UZYIEgx;Y;6=N{u}n#S^gR`&?UnVJL&t(?%5V z>xp~2zYEp##D3N#g?cG0)X)$63*K!s0KyoTf@E!x!E;@aoG4sIubWOQEq483Fv&Y| z>+a4fg41@Vuaf@)_s_h*VW480s2QD1BF}FcEnDaUf)~hEcnCNH@PLkOXj@pWBTQ!p zx)Pz^-iU&5L)uG2{uFedrDEvp@Q%5?83kebM5F1PZzn`saaF~?XbBZMZrPn&P6Tl@ zA^^n{K~|GQr>FQ?*&cjmVy-ChCQ^+}Fr(#ekaWj`S~B{GCJl{F56}(-I-AqYorEsh zy^nr2Ot0KzEuR8u$}V&#RP4CPMo!4o(GiN>TqQ60TNEl$wB%&W$C5u58MCW~RCgx# zR)YVr416mCvj7zDirp06DV!m_u~7u4TI>z=eF>kOq<^D)RM;t^{TD6GLCzK^W&1M?A+PF+$;vwCw41sm=t#2hk*c1n(cZZESiaxe{ui$w!{EKqf-y}f8it(-Ysvz zrf315YM#H~oj9)(2pfH;e1NHNSdk6Gxz}eU7+oJG%CKeeN7$;_I%k zu<3XKzMGEA*Qzd8Kr)kdn182U`!!Vij{NN=C9i-P**u7464?93<1DmbJg=@wHdjdK zdhn+oCFj<8BO{9?$C=oQ@auYL(OyIZbGZ;G>lcM0jPoTZNDY?Rz^AOQhyl$+Ol#+ebKlq-qUWPDE%njpckAFg#uRsXpK zcMPi3B+whfipVX$^+l-t`BMH0l}XIhm3e7tWRjob&6Ab?Pm($Xw)MatRhjcHG6sJzi@}diEqz6#+AKErg;k-?HKgjuXxDZ9atYi z>+YuX1!B>N)eMwm(8=5ENj*abCszdns-D#ioi}i2_W0uDrrAA%7=J7F%CXmBG7YHd zYY#`motz$l0iz_&)V8$ij=h-+oi}L;D$wgHi}3>!0yI(d18R+Tl=0$v%qS#``5OK~ zz0M}H;eJdyO&kF?tvtT<-=gs`OluA0(aZPV$*Fp<@_AX~ZB%04 zpWSS0Z!NGeJ1zAG8pa{Yb$xvBF)_bu+f$?{ESnlCxTuBO>#t!=m)Sqw+iUHImc{?q57 zZg@Uy!ZjFq@*iT(o8z;nQ*OuN|1hADxY0LB!ygn0QB=Rw0?X1dDAKG&sWT)^PecJM zW|JATpnVHYqNCV+_XNhdm40?mDUHDRI7^rP?1){jD9611h9 z{2&)qY5IJh;{){RJ}C^9T)YxfmV1=6uTz)i9Lld?ycxhJ@UZY|48KK??f2mERQ>t_ zcXfN6JC2xR3ag0!`Y%j1k+7CKTD%O^_R>!3i*LRusHSmEAb5#uTTi_nO<~f6}<1&HYJCd)Oqjt`=|^rh)w@3zP<Ed?<0XHymWcHOfTYpoS*KT?{$&Q-S1+y@=ebJY(8?xE0_xXat*pm_Mxc zh3T00oau&4#&DuGsAWxzfQ+nXGvufDeoWi>4ZkDF(b{hhFZndQi zIVs2EZo`>k*IdUnJjUg_Sckj*X=&Hf?@Z~EXKS{!1vM0HAjP@Ku$K|f#A=S)f*U+% zSB!!>#?W|iti_?YVSYnCoHrhoJ7DQTdrT0c#>Vk0ee`74(ayV&sgs2^b5sz93GAP` z{$O1r=F014xg(youRMN0GWBQIv&k+ZR5{J>{C`k}v4Mo1W6nFr%y$_U)67%gKqZtdvU zdmZrXNrt!Dmh1M(hY5Rl%=!5y5Ux1qRpBi-dT+L%w5RJN1|HV%yS420m(y+&U6feh zH3caS6eDlhS=vNRg&rhEuonHV(#wz$1tuw^(|uzTP!3~GvD3H57bb6)Ovc+)d4)wf zLbbD`GH!{(@ET%~s?QipmCH^>Q$5Ol)A!CTz2k31)`ueY_L1G^GK&9l7)oaB@po9c zHszKq^3SJY2npbgv(=hAPpgj{PzR&D=*pcKdRpf&IX>?hA z#4-k0Sd{lCyPQbUGJzcEV=^&={%!ZU?>4MTOZ}02iY~|-MvRBBkqFKCOOz)Ycw1l) zX)V`YA4W@~(Tx7`#R3vd?UOKai<;pq>Z~AwHBn=sHRe(nzDMs39L{-M?H+kwUXDl? zI&LYTje`!LG41nJP^W4CP8Kwk)1oSJgWS)R9r~?mfOt6+GUfgi@0(r>r1m{(th3?X z3uCsg9ZigL;p9weFPK?1_n_)t5{F6ZY}5DYncFug=k>{@zDa#!ur0Zu^)J%n7;kLX zqgVn|OQ*JOIE>Oq+N?F6m z8Yg``IJ_;kFPPMyvE9ML8z-r7#^Nb8Ma>LQNl`W6Fc!ZpLo5Rtr!LO~Jf2z%9tppG zRAbbSO84k8h4(Pn)7BpdP?apv^#kz5o(>kNo*5VvqJ}U0tcMasS$N@ak^C_INHhY5 zC@TdnJrk~Ln8n@1I z?a0zd;>HLA7s5mUceag7&g*3_x%K}^CpZ;PHh$G~Hq zwCEB=odAvBgPQ|p08Fh7aWg|?# zqRi=~Otbn7`F2c#rt(Pe4tq(1x4lvl%a#k{PBNM&SG!a?RAu$=xO0`X5)=PAF~ne7=Z%ETXT3Vcqzi_>C`;E#@7(-lNWy+gMLI^882<52}?H8BzK&M zSAr!=>RtsT(PKfLX3}M!!u3obOhX_*LPqUv7y4=mmjXCaok`5amN(?VKf8zWQMSWw z^#fqe%wZjYdsAxSRLWKkwc~lmeONf9<6k+kj6GR*tlv4t{{E?$+XU?vSg-8IBEpbAK96`FtX`(O*jW)?|V!TY>-&i3+Hg2lG~KhrayM zQ2j@GyW;h&(M~HwLltknnn_GSf#yM8Z5z~e+*6ytYl5Xj!hgm7MJkkqhe(V{-LxNy zgGIPt&900`FWXjFnTLwIiy0+B99Nna`L!J1P!EVIcLI(oS+^fI?hbpcP9N0#{TIqV zBwjtxKC2CjH23vi&_LH+)VdbgAuL_0x zw8a3-f=&t${)7!0FSK-^s8?h~R#pAvm}nseRzKh*4mUF~>BFtL2(=A0{!!R*iB&Hf zQyGEBff@i~&-i27LrVJ*+&XOVTWv-0C>J2~x>a9TsIkI-^!ki;u$*kX7|D$ zWQ&Ykc=sxhsfBjL?d~6bkWR9XsbKILc6|8@Z)^|o4rT67j+QxpSmtNt68Jq^ZYT0pQYqU;f@wNv0GOfp3wxjj)6VLs z++j~nCc0!bnAfyVo|&gBxQlUa5X8d^?%A8dU9l!6aTMb$&1W;sR_J z=^rsp?Q+Iu>+wcKGiPz%!XZj8bC6rsEh*KCDFC4xPlh!Vz}{#6{MO(6M!&fv8Q*X9 zHAA7Xl<`H1gaG&L2JSeH`@h(Z0NRfWo<5v^S|n0`>Bd4}W{j4^eIX3Oq2<+!HblR~ zN*EcW>f8v{UqWeEdH%o;PD4qCW)s9Une6&BR0gIks%%*fuq{eSK!0wWMs4kDs?!hI zfc9e^d6-fNQ6<_+!CxbzXjgd<)K{M=^nCAA?(XEQ<*fT?wM*X@8mn4ZS%4lIzKGiQ zEm^B?zC&6nx}=!r{4F`%T|Sg03i=K|yQ^zaDPz3&&DwFx0C#XpkY{l{_G0O4iJgu` z|Fuwk6SvXgmXbIi(qRl&uK6I4d)s`%&FDHw#sTy|7DZMrQDpN?OG`TrZLro*l`w|< zI3VjQn|dI`pAwK=JZ4`?f)-s~b5J#5Xfw^CrB>B5=?@?v_QK7Qx-qcGMU&Z^FQ{GO z5I6o|^656O)CLiS_%M$2NP_MD(~{bXA^fB7ilZ^gX?w#k;wBOauTrG8UBpIu`H{oU z9qnm{`B&(8b)Uu?Pj9P(yz6WtwoD`1mcTI_;+-lsN@MWY_@j48#ZVNc(p!s@exKf#O+&OZiA-{vvT;sw^+#;@Kh-+U>KKV#AlQ&hjtXog ziae+z59WawW<@)7u_Rd1MNiNK00sNN=J^=VSgEtc_AQ%#NXUo(j+~inGU|U;<;2y+ z3&(cz^#RK?#%X`8p4R9&+`rp8vW)itUtiU1dJ%XDFLt>xCs*qrNwlaCl9M+jMWCzy z`ft8?E-Wra2t_BY1CNar0St$++Vyq9%-zXGj$1wZmY6$39#w*Pb5=k3m2OTL-c5n8 z|1Q~d8cQpQweHZOMUF7qObUGoIq!)3&>;%~e-TJXeM@$<)Et6f>R*;KvvavPY3ws4 zUafp`#mgjbym@=hTWKQ>Jh}p>mx``+U5u2|GEXQZYX16V9K1g=^7FCo5ufk0qK`|TywmaYX~m!MvU5;#vh)~wEV`u5Tq%uli?6aTH>-d=}xdVppo z*~z{|-e7QkAt~tqa6&ND=kX@5vJ&m~?M1Dut!e(|op{|G)A@FuG%nXz&C-(y`;sts z-ccH%~sE?6K9IBiDwyb*+1J=zk<4zih`bPd(u#Iv>w*!J5OHkEml@l z1#h}|O$OrsqmIZu$qGNkRV%UTHpdUJ8W#sTS7jeKPF%SsK97$xt_h`!yq2`Au{#_8 z*|ya4fp4k^%Wp9|G&d1iI|^kdAezXkeN2eeRL9(CRAptfnc2Hgz7vNY@HDPm|CQxA ztpzbvC57c8L6$9K$3xrRt>*c-; zHsDVPzX~+kE{DW=?*QD7Dx1#T{BGUuj?IO&aSFAyv})YW^cc{qb=&4n#RAyFC-k2W z)jLjnAJ8$#g`(~+_l&O(XI)>beNL?JR`!IWT{HY!uC;NdDRiouP@Q^62?ZJDgJsN)4b-;fE{KZK0tc!SlpJ$DBhDy)eW74qpoO z3_*VA!{tW|2s5rxL^kU|^B%zN*g0mNJ+p7U^G|Pb3*k!ZOjv8u_hVGFjBt)g&deUS zb@_t7Trn8-Q6W$WXJVha{uudLw(57)#WeC*ium@o{@8$C`W0J*{vwu`&tIX86sii5 zlOn_SbGrIv&%Z{7NvQGKa%38&HSSy{Z0RBC^R=`+e(IT$@&rR*#xIlW=qO|)*?qW_ zw4~2Ij%%64-?#(X>vL@ffuSS)C(BLRu$Hp2k=8`s{^9Ld;TZnY=04=f=jUfN5^9>= zOkUt|%}Z@9tM^4hPJaw3|8X6LlR&k0(|BjsJv4)h14Cq;l+^8LuF~~>H$`94!-E&+ zZL!GEds}e-ig*~BrYjgpM>7gKF4i=96An=^yX?%QDUQE?I7D*mIBLwc(g|6?rv?F?g^TtIg=S!q->`pfI{^9b$f(ljW@eL z#SgPjxRW*JV*dd22=UtU6$lVNnj_kHiRL9aQrPx;5s372G{3h5sZi&x``ajnhL5!C zA;SgPOaEhL)^9tIok+M$%#q=3^clDIkaseYp!))TDnul89b+r}6bT@?OuJ0+SdK^K zL)hdM+ub@pXUX<}5_%~-K0KWFVE9hjJ+7`l>oOoGTxRw;JG3w8zh3J%otnL^g*sVM zy&$*}B_4Ol(bzQ78eVeC1HKZkluH>wdjV*yQj=-(!*br@h{Mq`QJC?z+e-uzXHD1<}FD zi)_JB-XrnnOI^s$7*hVYj}p`bGE5Js*V%hv`MQ+xf0DWbk?7o8F>f~ zWLH#qT1tuk3MwW=#F?37TH1FnQovex*_u31+jhq76Lz+5n{x=A=+dIDQz1w*LcNj? znT_Kit3xOw*cY`VAMg+{mrglr-}>aQ@HVIi6g62TicE-xf|nQU%xxG{c0}uYH7@^m zWCu`C6!z-;+|(x$4@#82=6o%MIScjL$=1OyloL4t`8qGxP|b|dqPJxo1a__}AALTyPPrckHFe=c=qja4 ze01dn619wuTj)*Xf5f24q2wos$c+7QT+TV5f{JPr6R@=(_SN z`8+mXCoy*^!>2lMD;)p9KKp16RPxS7tnK0Dk-~f2Q!jZ7dBmf?=hxkjWSu&&rCW+Z z+}QuL=V?d&f?D`;EMNDsUkB=^ACi6G!wV1xZ?<&eKnv?hwRXG8CfI^Q(Qex|&0f)% zS+@#dJ*0v*`#}p^7oN)JJZ5racQ{GFy#gOfjsv(N$ z8j8(q;n3x{51#<@m*#lF3;v)SBr>*fk175ZOUn`uj{HB}EuxgHRjr5gPv@b+_42#+ z-rK~kQ{N-5+r96d7-SQqpKq4!x9wkV>|xJme(Moa#N2k7YA=ZxNGnckKg@PVk|aQ1 zN#COQU+C+ghIdhyHeR7+8YzSgkD~*q!Qq*bb*LqSIeGXeq9B|BCcNqg{Rrvt^`_l258{g^d~Cm zi4Qu29>@m8+nM@dvSl5;az%nUJ57v63i9&Ew43Z|`+5%U9WJ408pc5u zRt7#BaBlf^bw*2|^uy+s3tmJ?bPDczd=aGg>C~eSkzIEvPn+Z~lv-L^qOmDyTkdH) zJfE6;NI8$VDZI9n3^uF1rXf2ze%I=L!G2G%udH}XIvP6qmRE<6LhqLw&bvBV{-@%w zG5rrJmF(7|@-4oXuWoVs9YiffM+(cu#l;{!ayikPvzOJb4CiRmqTM9rXI`Ae-%PVN zZ*$ZRq=udCJDt;p^uX9^xxI)rwrFdDKa{NA%ieYlbWAnnX-z;OI{_t6SfLwZh%94* zL#6HD<@?p!O6{g4bpj5hjgzMJ(^cvLi;zxZtXv=ITaK1oLabceH=wXpq*K`S#ua#^ z8C8JC1?k01Ln%PZDK76$&gS4&2x%oO^mVt(!FRya?$MmL0q$Ey^`HBV4^G`h&`cJd zwk`I^>2}`>D8u0xD;U$jIby|;3bmR>c}_Ia(ab0T>1OI&wPdre(w8R zX8-C%;^`&4)i;r0{AgU-dAAjL{X;bAEgvqDt_SwzRp-!a_c%}G~`!U z&Qp%0jj&IC_4AwX?B((7O)UR%mLdO}+)JJ;B9OR>iZS|e(FL2KmA@94%h zHd3Kt_lI{VAGy}*FiCYBH6kW5voDSI>dsnCWL*j2w2+CF3pbD&czo&p0ziyNa1RM8 zI1&R+Bv^KZ1UR4_3<}o`lg|QC$ zUHSEQVcxA@P$m+DcZ$CwdV;d85 z|Az|lbv(Z$&}AO;gqK&fet5l<@e34w;eN%>_B_<|z5%|{+>rAa5Yx=-d2x=T9Eeb` z2UzT_1Cj-z!Ynff&|h9ZpWIXC`zX9Got7}eGS}U^BxLo)*_9%f9Ds#Fcph*~0z6GZ zZvpey0o?c1Pb1X^FHiS8znm61*!a8rcV1)Ozs@uJGYdvS-25Uo6!gDut&@E}oW+^E zT(W$O*N)E&j}>~L<+5FZH?``O^ld#MzWqwPB(!(#EMdETQ`4BV0-`|=3NDK`V(n@( z`n}9$BBEut=b{WBe=CZPy%#R1OPRSH^C$I>z8aF25>9X~TP@EIYs&slDP8qzq`{(K zojE6uvE7PehaGS4tl~N*N2y+i>nQu6=oMyJdq&@JB)Ub($&FX>AhedV!fpO* z>CduS6W2*08>xo96{piKY;71colo8vtp5+pPVDc~(wEWO_U$(bKW6M73k2_iQ;fzl zxfnIuhq$EIJdbpBJa+LiQF`tu6J4I%>Hry^A}x2|9i!Y%xX2L{$xtbHxuRAgT;Z=X z9EHMNeeeOA5k2jn+ERhAWC;VPqj~h1QK`?=rmg)UoI& z!u2-g)O5Y&g3I+Qm~y_eeb>Q`juCuBrDI+%%N&nxfmNi5lb5%%;|pCV3O6D8PYQ=u zF>{heqh~mf$oXLdWlI4&pI#;Ga)4IML2R2b@`gWW0d^gm$P0G5G!i!R?{&+3GkMZ_ zg)wFEGH7xLsaGb(Tf-xjzDpK|UscZ3XXdvROaZ(KGSk@$M8-202 z0|C;}XiJS!Opw4!IhHyM(?vkoSO?tpSk8B+LX`Lm$*5a0F)rSaONqjKvh4%f^j8mF zKD&LXV>nLQSaqZGMjT1u6p4W(&BDNt=^L-jVEprjY9BPISh4~32?01$&$~>0!)C{1 z-i~V4QzmvpTe@|jzi-WSAkE4-e!E-*=IQ<8%5-}*Lu& z#dR=OU1|0d>a&vwH9U}EwKNeLMO+mQ16BJ=8B`QW!ECg26WEf z6&uox2;t-$`s&3()bSw+w_&Ya=zdrs`$k9hvP$Bo0KHVyLZ;OV#h-13Z4EEpR(@qf zc{D0k<`C!#&!1IZ6+NG6%ST<8S=GA{^-iOd9|VaDZ z|NR99f{${Y^Y*&=qbA=5E6-_9J0D#+I61ZFFXt+?YiyU%M=h-f0zOVhhLg;(P}L=s zvot<_{v_|Jh2Sh^EwRRFLS!43NLixuyE|-Bh!(zE1ymk(|8c+0G^gjhEk~>Yk{)Q0 zz*~$H!iQd9139CLYHe+up37o;@c4Dz4^t+@!lYTBA8dQEzw&2^zo`8MrP$34rw z&HA0ws#W`%V9{uxgbkerJSD*3UW3GV2KS4J7Ty5w8aw~_LXWv;`Kb8`?i*I6EP=}j zGGUS_t*EG~VzMh97eKe{H)TrtheNIvauT;yPyEu0o9h$coJug3Rb5py1TZ0R^V2sk z(!PbjM=2S)jVmem;9y^3;w4-L1@(vzp{I2-wQllU$oxm|dm0#3&D}q5e74MVnUJH4 z@cX|7MTFDA#vuBYlD2l>f6nH>gx?F6rVc2P!E&JBCM03K(}g2WFK z1~rP>bIN|anY?!Tn9fyw(8fznZdE68p@_NmsmSN*fwXQrx%>vEfYW$Jt+Fg2eYKR) zZqDX{OpcVQ4L(*l@|Ppwn7IM&P1%LD_d2x>TMtl9aTbnj3ENO~NCPq9TcWz+08 zf>?&nM`gaxrcjT?$qm1_=l1Uyy`J~Oyq*_~vhgI4j;1sV+G6+5N*jgVD?QoRf67^L zdT>eRW)yu2T>oxn18)jr>mQ+ape~eKcG6eCAzu@4Y(Gktgsr@w3f1{u!17&y5C;&T z@BmX#EltB5VFfy<;~M}9xN9;s#D*uTkTkNqTw71kGu0& ze*$K34)K?CD&c>e=-96=mgWEKCOggTGc0~MSoxd7n$?8Y+rD@yYVNGY+6$f@VyW$S z%ocLV`uQ*HoCN>=f(6I?#vEkdTCK;8qQ^}3n+0;QjToDb?u>X4J`?+@j0U(Hw_Rx< zDz4>zYJ;C?I}m$&VU6k~{9-JbZGt0$_y@V9@pjqIn~K=S_D2AzUr2lXDdz0Bs;6TW#l|L0dX$;yMu_cKQH)`r_GpqSW|~P)1XKQG=!M0(58RmL z>yPNwA69oKWcdPSrry14C_9`Bgz-aJUl2sEB|1KRFr1MuGQ*#$Qk?rpBK2Y3Ea?g& zRp8avTXwR>+zkiSboclHj8?dZN@REmxM#PjV02&NP?YnD(EbbE2~#A3{rreJ%`Ov; z?ptYH?#Mu)736TDwFaifp8V@kiF6$Cm{CFH`m>VhV-av=+XvzY?>ynv2F>7qn;#I& zO`=bB{?eiW^KIF;-S^puAFPrT8XEdTn#XP*3k8DfkvMY_VXGODgT(zqT9th4VO#wJ zM~9dJPKWPFn~H+XTA~rxd_VFwc`>KiJ>^A*>JT#Z`}xF4LuZWK`jWM zjF7UDsIgRZ3uDv))#T}W`avV(@Z&AweWDE{8O2AaW2x>__fVV!iezTNm_ZU~uH2-0 zya#xPgxWmIZRc5I{2|j$nPo&t?kgH!+gcHETU=!X9YiMe5{A}=HC+Aq;{Yk|Jc_V9 z=^-##&Mo`WliEahqYhWk+(S?A{@3JC%8lE}7GprE)HPrFl=|vfmAxtoV@EO>j6r1` zv^-mVg!ynfJXwF5cYNy2nWKACx1ke=A<4U#nMeF?e&9jeYhB3120J^WN5c8Q54TpZ zuw{bSG@Z*VHABMZ7C~Wx-7UObv^eh{aTcJmtH7754jOQ$ikY2;GD!TpOasH~K_{Uw zXbkKuNeg7Kb(R^kA<|so4Amq-6rvVMp+iXJU?F5@7lwA0Qc%!04~#o|d4L+@U$5W` z(^UU1kgHr=<>bwDdOh0XvIgY4Dh^QZ!fyd40O)uCvSHf#xD$yU3fIe(&I%q zd9PnMO@Ctx!={MY&SkG(gDm)W!KzEZT3UshOU5Kxs*nZ(*`4se9Qh+ZjL0W%IP`sw z-za-Y>-i3Xt#mTg4@_*}e)7GM2yE+3zimf^r(Rten4u{jbi4K^)SdDC1}5pjDI2b7 zb!r{|FbzB;kjA6VwiJ1@ACZy=syu(G#{;FKj}z}(baly|YCre%pr}@D z6}NX#Qc@Ct5PM%F@oUaEX|2Zl=Dkbov7^ZMoiNOgXNNHlj4|-MRo8us(-&$yJ>b;3 z*qA5&gO|H0EkvOeS-9mmjT9%1Z~OSkd26lNl0LKclq7{3c22aR_fp);pR?->?7#b; zEE;g5y5>;zua;F7j|*hL8kb+L?^)T}m9=-f<+g=ZR`c{2n)`9~4m$A+hKu}!C2nut zwR=&xcu%Sl2PYN?6n_|6dxT4HoMjF8^+|*_JO_4ck-{;w(gkTAGsIq0zHiX~cEZdy ze&L)OXkl|Jf@#S1M39h^Z4)HbLadmd2L|rfQZ<*hWh-Zy3ON6*>m1?0xo~6nob5=0 zBYN~f@Bk@30+p&zht;V|mKU{v|qoHYKOIe@|6I2;VIF*+cs zF#r4>!NRns$<2ObFPux)8fZEUzTz-xO=ged=do81BmrJolk!(FPr5Pj?^Y zdQUWYDv|A-O6n!KEt*ysa;KX%rjuEg@DE=%^+}L!2$*(er<+=I$%H%BUcRv6{rh)E>cP#YeDIo?y$>my z6_r}=tTPC@_B1wYOs2r?1K6epBKqHX@xcbkZ*oL}!QC`jsCdMaPw9EMR{{^jNFGl^ z_eI5oRb)Tnj0yF7^w^r6$-GM)?AzOvn~dQ3-;)DziD>rVjNP9{i46jP8DQl>)P9o0n zfqxvGRoHgVjwJqah~8&6+9slwwk$Kuwu?M%vAIhOo2lh1HuXLW-ZEN9>+Y1U`|J-E z_7dXDd7kZjwE~ggMDJxujkgWC`8qbS+v1;LSpNJ+*pn9f|IMyIWiVk{&CE+ij^sKl z4&R?G-x<$;;O66NJXpTJJ3mUTgrMK==HJ#%o|O#D->nedJph=`i(0vBA;^LMGR#&M zMSatEf5GT96Q2-xQq)t&%DY@67+l%UI-mgXnhU<-rDP*ZVG=d;D5Z?^`xIQwlfU^QtU`-&%6^+h8+-PWV>kE4s?pXFc1fWL z`p^IOg1K&{8oWKqTo`)%`0>RbgN|sIpzC>`qaMmV*ZH0pN-Ialp%%V9RQ}y$P!|AP zgg8_{dn;OydH#pHwWD(w$Y#%-X!~tqh?_oIK9o295}z32>O}T zw-o9d8zIu2X+Rn1LW?9{=rgHsm(b_}GbdHS7ohAaU&mr{CfjwWc`U)cjtLvTY%MHL zUR~v9=cNa9)s~TK4T|-9t02}T=j$(TL%PmP0_poa!*lGan&`+vw;vEOd#(D=JoaPb zd@78RT;~72eKK)<{9oAxZm&^ALK$nAt6!+jRB3K8k2t#JM@uX3VvnOTp-aAjFsCV8uw6UQlpP|bbf)csHNlD z>gd+>|E|%2$(fl*xqFnHoRdrs4nUB zK?w?(IQgiuUx^@dL;TDA?3{tdT?g+liSY&Slj7{*;d%1zr#yyD2YSEK`jDqQ!c`aY z!I81rT&BKwEvKr_SFLLGMLh1Xo5sAJ|5qh-Q)c5wpYGBI^GplWJRFJhGWQ>t&chMHO1;{Z zim0-fkR^WGTmpjFa4Mtj_GMOXW|;ac(UEX1sXULw33q9I3Y9IT3Of?anm?v`0QgRt z_*lY5>SXI_n3dnafI0Rbw2foK-WWEYOt^&+q9r%3L{eRXFUlpmJfWDjIpwb3{zpa5 za6)t@Q4%h*L^OoUt{HnnlJR{W~|zve*K zhP2`S@%Lpmey#I#{En&!Tf?aoKZ90GL+L!Ugwh zTPxPO!)=z2gSp>I$hH1eZd9}ql9bs!dZnam!%h~+%uYA#E~p@8BPTyEE=<{}Ak@)P zAl%f7I5tVUcAmk@$Ji>{*`n(jDsz94=ptp+h~zM#%2m_~wE=83?@^>g?hCftUZu_4 z#u`$q;d#5!yuaLNf~|npj3|FkG0DX)ZB*v}N>8-Az>33qQ=BtrtJc%E@LNz`$zdj> ztJ~FA)&irT>MXC7VOiwmbWYAfbQtD##rk!plfoU(da}DDiDv&^+PLVtZ&>&i%DNN= zgZBG}y!V`p zjocgBX%YVqzXmsPnDndM|Y*Ys=bqBrx7?sa&iQ21P1H z5UkQJUnuMTd_xAZ;pA@06bjRlG!g~((YItl={7+xtrTf3nCU*zJ%sJ}=HexHgF48* zfpVXqp1kyIK$O~h$o$Y3mBTH__2I|dUr6n%ambl2E`l$#mA(GZ{-DXcu7xMaZl4g& zE)Bm`mjTS8{~ERE!XY-3^s355QUpnwZ&Q2)zd?1klN3~;W>gcw0Q06lu9X%$m!75W zBS7#M%*iki;-=e!%5^yd`>7^dHJpvv%D_bJe7p0Fgk^7jbjh4Ag#49h1hTn(uc;wn zyq@XXjae8U`q8)){r3U}xH?61b4D_yOkd?bk_NgT6%~2H??cmlNfdbXsT*@nQ&EES z>9fud!5T&E~UxyOj;gdz_L zdd{DB*_V=hS;Q1*{G#};;s4iD*+^OJQ7?Ri2N2emMMR(Do4h6k-pbXg^m<)y5t70^?w0mA8 zxf1yJ>t85?Y|#SP7dUmy%w)IEOE?CHC058;=|0_M2!%a?%T}~P;U6n2Qqn*2Op>j9ggr|zHoACX` zMrx!Dy2L`8Q@-wjW!1fNv&Fu6uSb1akzd1tI{F52dR47J=5C`k%-_97fI_~F~q%E!w0I7tE&1)QHrCQXvIMK7Ig4QMPKe&ANycH$uohO|Y&mfsi^QFsl}k>kQ0>p0 zb^kY9bbZ}_ZxO2VhkzaT+beCrNrBMxRZ>A4=(C`qq5x0XaxkBO4uHPyiU9AYJ2v&LsV zFJ+h9NGkUae)1&{uCI(y4Ks)P44K$+g^ceL&{sxqUdNS_~h$qu*D!3 zS|)8Z^xoz6unF`%J7?$KSp^HBsdA%`bn`&!7>Z|IbM+2;x21r44?-*=BJx)<6}^LX zbqA0Mw&~NA=H_Hy49X1)6zU62bb{5AG2JiK3WYombt6(M702U{LkdDJjVxL(+MZZF zhmZ7BHOIQCTs6(B|Ms`AkG=#AU3PCt@3PZIveQz^_CBzWg)O^mfT^7G+eRW>3Z4ws zeU0>*8bK59Mb9QgmIK?Kc7A2^pYLiN!~O?tjZL@h*ZZ{xtXe`Tfcl6s+_B(hM1sYn z37nv0O*t#TC4~-}eTLfni)40AC-oz{F2l`2SVGeUe>R^M$T&~s_>=jrN^rz}s_u35 zl7ydIDqEByEte365`ViAJwQ(`7p})^J59eL`{92e4NyvzA;G+>q8YvtJVRjzru*Eq zrxtN;=dBCiliU!E^%jb4AFoB{il+U2?jFZG9&~(yADu^G_8DS?r#7pZD;dRfr7Voe z!tUdlX6U5V)vUkYoo6A>aB@i09GK4{PJj(X|*u`}saungrL=uWwM5~YqAWWP3=Xmf4QZy_cBcG+?x!SKD&IUU_&HK$ zr1ijFAg|pJK ztTGEd!^gv00kOyi1@v)R4>H@8b1DMKMO<+gbOPraNB5^9cn8bjWp92JlosOkNn#|* zOB5mmuazgaXtkJ>mSGnh$_e{Qwt{hk5_>+oi^;0iH5Wd@@gQ}IZ<*@4yo#2kjv5*6 zbv1=u;a#i5tgjl}?dT-1dD1K0KgkEfEgBh;EIwi7w`87sOG!v9L{zefl#?2)d3g<5 zX+n4%zm%xHstDfeQDkDM`$fBH0l?lFswf}=U^47GFrpkqjp|4B?mvz-IY8`?*8cy! zg_N^#FL~ZmJ!^bYaKLqFeL6&;%7xLpgTHe&j(!lX2T6N`j(lnrJeW@QY{sImZ+(>K zP3?82tD>iBr!}*-iLlNPa@vdj=lPij^^rt$^B=)q*#?>*z!L?UIo;*9+m-qdbWLmQ z3Ll2+yrJlem&uI;6=8kCrrW3MB(0?DF2nQ_;AepOh=v^9X~lZd$-|h?yF=&# ze>6{M(R}3?+*IO9RaR2EEH=C}*{`|aUf%{w+vPhL#e1!K(shOOSWm0|p`~U)J#E@W zNC$M)NF8_W&1^_7#_L5lSiFx84$Z0OwR>q%Z+Bgth#AKPoyPY%06+@|RN@XQssAc=?W6pn z8B+pvBmvk9bt(aS89?CRe|d(=HJ-U_=?c9bfi+-ndz@iYAJ^^#uSWqVEiIj+=sG4E zZ8YTDT}au7dSW_%7ZP!Z0&=xPk!A*_@mE>yzuxrdzGetZ`dEcxm+L{wd7?Xad`EvB z_q!j#-1Hu$z}h>ZN|;d4R)PT@k~QEx=*6A)JGyC?-4Ntt4foRlz1ThS_|WHl`ff6~ z=xaqqL#2?6N_^X%P|`4kbp+bIESZvgb!@S_2L!U9^<j4%Lp9Aig@z zRzq+II81_KcvM@!bWNv`3)2Q2&}o*{^$TGb7LuM!QeI7*0O$0*S;K#2WK19ZuYtzyQ1kAdL+Z z{s3aI>;4ySR1QAbUur_}NWJEhE{3`=qDBX-^{{4|IK(~wkOlhIVfsgq zetmj0+xq9b)mM=&H%(9`aRzAyDRt-X>^Wj?p>tmTX$Ap>7N}X)XZ}c)A6gSLMDK3b z{K_+o<6gea*R)zu#pL2D`uaVdg*tBKz+CPlOeJ2cB|vjqwV1gxddZa7uc7V2`{}4r zJ(|*h_TbA+w$8O`o-*I;n`vD%KIE+l#PhvC(A$Q6 z(Eh^k!yfQwdUte-%ro3_eVQIrKlxcM(U-mJ7pn0;y%H5N1t5eR#}Qi?EPP?t?+|lH zbs0RMYWlj}T)1)blah(K0K-Z^K)_6kH=lFc>6_NWE?nROZ-CJ>I?g`&*LS95mcEi2 zAUE=rIzWOMN%yV8c>Y|`S=Bu2@x7dYJ`!zQhcJiuo3)Pwax%NhPQ323FP@zD960h+ zGZ2o6<|#b9V^xNqP=;Kmj-Xz76Pn401aq;78cdc+hjXC-v%0R5bnt$s?2t?002VjV zx1lFyuRm(UFNATvcm&p-K!~LbFv%~=2gxxjV@FK{f!toz3m23&&{?U0mp>WN(QB

9pb5cAfl5;D`}HTWc4{rQsia|b#BO#ZMXGADk>`4qNP(F{YmucoA4mq(ypRR-YOuM z{?5Bp$PT5$#Dz;hFBuv~D>jF@)wtw`TVG#4)9PDGUbH>4GhNx&>Wiwf>Ld7Xlrh2T zq8V|9nK*k#kVe#(Y>e5NJ8CTZhSD2|o-FzdSA=Nx;&}Evrlg28bu*GIy)>0vUAXR4 zh>{M+uh-28O$;M^X>OB8PWnyQM#?&GCh$GhI^xrxLCz&G+2%>KO5BBGcOjPMbF8{y z`{xD+;@_2r&&TthgB_j`#bob{tR&9f&m_qghxhTzV(?_hO>g`Ly+CpxDvg5Y!e64X zs1;9us02sH`53nQJh@x;z&;rq{+yAcc;>kEj3af61sv%(!q`kbVm4pPiw7`461?}a zO|^;e_tc_MaQs@YJ)pEj6Zr8lMILE+d9B$>#jnN1 z%hS=*0Up$dPJJ0Fai0gEQlZm7&π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

  • FI(-$dQQjjsFH+Mgts%PAJCGY>IIj`Ez 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 Wu~d@*&|g#l0000
  • Group Members{Translator.translate("GROUP_MEMBERS", this.props.lang)}
    NameScope{Translator.translate("NAME", this.props.lang)}{Translator.translate("SCOPE", this.props.lang)}