diff --git a/bigbluebutton-html5/client/stylesheets/toggleSwitch.css b/bigbluebutton-html5/client/stylesheets/toggleSwitch.css
index ee3766cb2e55e989f40cf39c5a06873a0b684d70..afb10cd298a5b146f17e02231ebd5828bdc92548 100644
--- a/bigbluebutton-html5/client/stylesheets/toggleSwitch.css
+++ b/bigbluebutton-html5/client/stylesheets/toggleSwitch.css
@@ -44,6 +44,10 @@
   transition: all calc(var(--enableAnimation) * 0.2s) ease;
 }
 
+.react-toggle-track:dir(rtl) {
+  width: 4rem;
+}
+
 .react-toggle--checked .react-toggle-track {
   background-color: #008081;
 }
@@ -59,6 +63,10 @@
   transition: opacity calc(var(--enableAnimation) * 0.25s) ease;
 }
 
+.react-toggle-track-check:dir(rtl) {
+  left: 0.8rem;
+}
+
 .react-toggle--checked .react-toggle-track-check {
   opacity: 1;
   transition: opacity calc(var(--enableAnimation) * 0.25s) ease;
@@ -75,6 +83,10 @@
   transition: opacity calc(var(--enableAnimation) * 0.25s) ease;
 }
 
+.react-toggle-track-x:dir(rtl) {
+  left: 2.2rem;
+}
+
 .react-toggle--checked .react-toggle-track-x {
   opacity: 0;
 }
@@ -98,6 +110,10 @@
   box-shadow: -2px 0px 10px -1px rgba(0,0,0,0.4);
 }
 
+.react-toggle--checked:dir(rtl) .react-toggle-thumb:dir(rtl) {
+  left: 2.6rem;
+}
+
 .react-toggle--focus .react-toggle-thumb {
   box-shadow: 0px 0px 2px 3px #0F70D7;
 }
diff --git a/bigbluebutton-html5/imports/startup/client/intl.jsx b/bigbluebutton-html5/imports/startup/client/intl.jsx
index 0918cfa8d2b9fcbbec51496136df40b3419abd06..37bc4600f0a6695aa86efc4e56813e1237c77ad5 100644
--- a/bigbluebutton-html5/imports/startup/client/intl.jsx
+++ b/bigbluebutton-html5/imports/startup/client/intl.jsx
@@ -63,6 +63,8 @@ const propTypes = {
 
 const DEFAULT_LANGUAGE = Meteor.settings.public.app.defaultSettings.application.locale;
 
+const RTL_LANGUAGES = ['ar', 'he', 'fa'];
+
 const defaultProps = {
   locale: DEFAULT_LANGUAGE,
 };
@@ -111,19 +113,29 @@ class IntlStartup extends Component {
         .then(({ messages, normalizedLocale }) => {
           const dasherizedLocale = normalizedLocale.replace('_', '-');
           this.setState({ messages, fetching: false, normalizedLocale: dasherizedLocale }, () => {
-            Settings.application.locale = dasherizedLocale;
-            Settings.save();
+            this.saveLocale(dasherizedLocale);
           });
         })
         .catch(() => {
           this.setState({ fetching: false, normalizedLocale: null }, () => {
-            Settings.application.locale = DEFAULT_LANGUAGE;
-            Settings.save();
+            this.saveLocale(DEFAULT_LANGUAGE);
           });
         });
     });
   }
 
+  saveLocale(localeName) {
+    Settings.application.locale = localeName;
+    if (RTL_LANGUAGES.includes(localeName.substring(0,2))) {
+      document.body.parentNode.setAttribute('dir', 'rtl');
+      Settings.application.isRTL = true;
+    } else {
+      document.body.parentNode.setAttribute('dir', 'ltr');
+      Settings.application.isRTL = false;
+    }
+    Settings.save();
+  }
+
   render() {
     const { fetching, normalizedLocale, messages } = this.state;
     const { children } = this.props;
diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/styles.scss b/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/styles.scss
index 40030e5469c47e2c094c63f56856039808f0452c..1c19356f41634c6ec203bbcf84ffcd68fe0ee008 100644
--- a/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/styles.scss
@@ -73,7 +73,10 @@ input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-i
   font-size: var(--font-size-large);
   @include mq($small-only) {
     font-size: 2rem;
-    margin-left: .5rem;
+    margin: 0 0 0 .5rem;
+    [dir="rtl"] & {
+      margin: 0 .5rem 0 0;
+    }
   }
 }
 
@@ -87,8 +90,12 @@ input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-i
   color: var(--color-primary);
   font-size: var(--font-size-small);
   white-space: nowrap;
-  margin-right: auto;
+  margin: 0 auto 0 0;
   align-self: flex-end;
+
+  [dir="rtl"] & {
+    margin: 0 0 0 auto;
+  }
 }
 
 .freeJoinCheckbox {
@@ -101,7 +108,11 @@ input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-i
   align-items: center;
   font-size: var(--font-size-small);
   & > * {
-    margin-right: .5rem;
+    margin: 0 .5rem 0 0;
+
+    [dir="rtl"] & {
+      margin: 0 0 0 .5rem;
+    }
   }
 }
 
@@ -151,14 +162,15 @@ input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-i
 .roomUserItem {
   width: 11rem;
   margin: 0;
-  padding-top: .25rem;
-  padding-bottom: .25rem;
-  padding-left: .25rem;
-  margin-right: 0;
+  padding: .25rem 0 .25rem .25rem;
   overflow: hidden;
   text-overflow: ellipsis;
   white-space: nowrap;
   cursor: pointer;
+
+  [dir="rtl"] & {
+    padding: .25rem .25rem .25rem 0;
+  }
 }
 
 .selectedItem {
@@ -254,15 +266,29 @@ input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-i
     cursor: pointer;
     height: 28px;
     left: 0;
+    right : auto;
     position: absolute;
     top: 0;
     width: 28px;
+
+    [dir="rtl"] & {
+      left : auto;
+      right: 0;
+    }
   }
 
   & label:after {
-    border: 2px solid #fff;
-    border-top: none;
-    border-right: none;
+    border: {
+      style: solid;
+      color:  #fff;
+      width: 2px;
+      right: {
+        style : none;
+      }
+      top: {
+        style: none;
+      }
+    }
     content: "";
     height: 6px;
     left: 7px;
@@ -271,6 +297,20 @@ input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-i
     top: 8px;
     transform: rotate(-45deg);
     width: 12px;
+
+    [dir="rtl"] & {
+      border: {
+        style: solid;
+        color:  #fff;
+        width: 2px;
+        left: {
+          style : none;
+        }
+        top: {
+          style: none;
+        }
+      }
+    }
   }
 
   & input[type="checkbox"] {
diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/styles.scss b/bigbluebutton-html5/imports/ui/components/actions-bar/styles.scss
index 8dc4421e38db088ffc9fcc2434efdb0f4568acfd..2238f885d12646c179b8100351a5e93fac80885d 100755
--- a/bigbluebutton-html5/imports/ui/components/actions-bar/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/actions-bar/styles.scss
@@ -28,6 +28,12 @@
   @include mq($small-only) {
     bottom: var(--sm-padding-x);
     left: var(--sm-padding-x);
+    right: auto;
+
+    [dir="rtl"] & {
+      left: auto;
+      right: var(--sm-padding-x);
+    }
   }
 }
 
@@ -35,6 +41,12 @@
   position: absolute;
   bottom: var(--sm-padding-x);
   right: var(--sm-padding-x);
+  left: auto;
+
+  [dir="rtl"] & {
+    right: auto;
+    left: var(--sm-padding-x);
+  }
 }
 
 .centerWithActions {
diff --git a/bigbluebutton-html5/imports/ui/components/app/component.jsx b/bigbluebutton-html5/imports/ui/components/app/component.jsx
index fd5621054dd19bd12cea263454a4544d5cdf975b..9d57d5bc770118eb97bec012357c1563557c215b 100755
--- a/bigbluebutton-html5/imports/ui/components/app/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/app/component.jsx
@@ -258,7 +258,7 @@ class App extends Component {
         <PollingContainer />
         <ModalContainer />
         <AudioContainer />
-        <ToastContainer />
+        <ToastContainer rtl />
         <ChatAlertContainer />
         <WaitingNotifierContainer />
         <LockNotifier />
diff --git a/bigbluebutton-html5/imports/ui/components/app/styles.scss b/bigbluebutton-html5/imports/ui/components/app/styles.scss
index e552643630ee0598e82f5c1ffaf46a7f8578052b..cf92fd45a82ef5b70227c3fef124762ea305aca2 100755
--- a/bigbluebutton-html5/imports/ui/components/app/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/app/styles.scss
@@ -95,7 +95,11 @@
 }
 
 .content{
-  margin-left: var(--panel-margin-left);
+  margin:0 0 0 var(--panel-margin-left);
+
+  [dir="rtl"] & {
+    margin:0 var(--panel-margin-left) 0 0;
+  }
 }
 
 .userList {
@@ -187,7 +191,12 @@
   order: 2;
   flex-direction: row;
   position: relative;
-  margin-left: var(--panel-margin-right);
+  margin: 0 0 0 var(--panel-margin-right);
+
+  [dir="rtl"] & {
+    margin: 0 var(--panel-margin-right) 0 0;
+  }
+
   @include mq($portrait) {
     flex-direction: column;
   }
diff --git a/bigbluebutton-html5/imports/ui/components/audio/audio-controls/styles.scss b/bigbluebutton-html5/imports/ui/components/audio/audio-controls/styles.scss
index 9742498e4bf5fab181189c7674a2aceed6320e66..702f765146bfd25adb75f2b88c60bb9a0c21877a 100755
--- a/bigbluebutton-html5/imports/ui/components/audio/audio-controls/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/audio/audio-controls/styles.scss
@@ -15,10 +15,22 @@
 
   > :first-child {
     margin-left: 0;
+    margin-right: inherit;
+
+    [dir="rtl"] & {
+      margin-left: inherit;
+      margin-right: 0;
+    }
   }
 
   > :last-child {
-    margin-right: 0;
+      margin-left: inherit;
+      margin-right: 0;
+
+    [dir="rtl"] & {
+      margin-left: 0;
+      margin-right: inherit;
+    }
   }
 }
 
diff --git a/bigbluebutton-html5/imports/ui/components/audio/audio-modal/styles.scss b/bigbluebutton-html5/imports/ui/components/audio/audio-modal/styles.scss
index 3a5255305d0a954983413fd0a1f0fc1112ec25df..bbbefe01c00a664cd1f02f4f82f9d5a6b5abd097 100755
--- a/bigbluebutton-html5/imports/ui/components/audio/audio-modal/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/audio/audio-modal/styles.scss
@@ -2,7 +2,7 @@
 @import "/imports/ui/components/modal/simple/styles";
 
 :root {
- --audioDial-margin-left: 2rem;
+  --audioDial-margin-left: 2rem;
 }
 
 .header {
@@ -22,14 +22,27 @@
   padding: 0.5rem 0;
 
   .audioBtn:first-child {
-    margin-right: 3rem;
+    margin: 0 3rem 0 0;
+
+    [dir="rtl"] & {
+      margin: 0 0 0 3rem;
+    }
 
     @include mq($small-only) {
-      margin-right: 1rem;
+      margin: 0 1rem 0 0;
+
+      [dir="rtl"] & {
+        margin: 0 0 0 1rem;
+      }
     }
   }
+
   .audioBtn:only-child {
-    margin-right: 0;
+    margin: inherit 0 inherit inherit;
+
+    [dir="rtl"] & {
+      margin: inherit!important inherit!important inherit!important 0;
+    }
   }
 }
 
@@ -107,7 +120,7 @@
   color: #1b3c4b;
   background-color: #f1f8ff;
   box-shadow: none;
-  border: 5px solid  #f1f8ff;
+  border: 5px solid #f1f8ff;
   font-size: 3.5rem;
 
   @include mq($small-only) {
@@ -155,10 +168,11 @@
     vertical-align: bottom;
     content: "\2026"; /* ascii code for the ellipsis character */
     width: 0;
-    margin-right: 1.25em;
+    margin-right: 0.75em;
+    margin-left: 0.75em;
 
     :global(.animationsEnabled) & {
-      animation: ellipsis steps(4,end) 900ms infinite;
+      animation: ellipsis steps(4, end) 900ms infinite;
     }
   }
 }
@@ -167,6 +181,7 @@
   to {
     width: 1.25em;
     margin-right: 0;
+    margin-left: 0;
   }
 }
 
diff --git a/bigbluebutton-html5/imports/ui/components/audio/audio-settings/styles.scss b/bigbluebutton-html5/imports/ui/components/audio/audio-settings/styles.scss
index 62983124d14549ffec3b1f252b13681bab00a7d4..5b28ea63cb417ea7cce594ac739b2854cf171edb 100644
--- a/bigbluebutton-html5/imports/ui/components/audio/audio-settings/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/audio/audio-settings/styles.scss
@@ -29,12 +29,22 @@
   display: flex;
   flex-grow: 1;
   flex-basis: 0;
-  margin-right: 1rem;
+  margin: 0 1rem 0 0;
+
+  [dir="rtl"] & {
+    margin: 0 0 0 1rem;
+  }
 
   &:last-child {
     margin-right: 0;
-    padding-right: 0.1rem;
-    padding-left: 4rem;
+    margin-left: inherit;
+    padding: 0 0.1rem 0 4rem;
+
+    [dir="rtl"] & {
+      margin-right: inherit;
+      margin-left: 0;
+      padding: 0 4rem 0 0.1rem;
+    }
   }
 
   &.spacedLeft {
@@ -42,8 +52,14 @@
       flex-grow: 1;
       flex-basis: 0;
       margin-right: 0;
-      padding-right: 0.1rem;
-      padding-left: 4rem;
+      margin-left: inherit;
+      padding: 0 0.1rem 0 4rem;
+
+      [dir="rtl"] & {
+        margin-right: inherit;
+        margin-left: 0;
+        padding: 0 4rem 0 0.1rem;
+      }
     }
 
     &:before {
@@ -52,12 +68,24 @@
       flex-grow: 1;
       flex-basis: 0;
       margin-right: 1rem;
+      margin-left: inherit;
+
+      [dir="rtl"] & {
+        margin-right: inherit;
+        margin-left: 1rem;
+      }
     }
 
     &:last-child {
       margin-right: 0;
+      margin-left: inherit;
       padding-right: 0;
       padding-left: 0;
+
+      [dir="rtl"] & {
+        margin-right: 0;
+        margin-left: inherit;
+      }
     }
   }
 }
@@ -113,15 +141,29 @@
 .verticalLine {
   color: #f3f6f9;
   border-left: 1px solid;
+  border-right: none;
   height: 5rem;
+
+  [dir="rtl"] & {
+    border-left: none;
+    border-right: 1px solid;
+  }
 }
 
 .backBtn {
-  margin-right: 0.5rem;
+  margin: 0 0.5rem 0 0;
   border: none;
 
+  [dir="rtl"] & {
+    margin: 0 0 0 0.5rem;
+  }
+
   @include mq($small-only) {
-    margin-right: auto;
+    margin:0 auto 0 0;
+
+    [dir="rtl"] & {
+      margin:0 0 0 auto;
+    }
   }
 }
 
diff --git a/bigbluebutton-html5/imports/ui/components/audio/echo-test/styles.scss b/bigbluebutton-html5/imports/ui/components/audio/echo-test/styles.scss
index a4762035ba616b4a267b9749e4028e8ee3bf26fe..dd266f725f456ffd0d21a039ad534112de36f624 100644
--- a/bigbluebutton-html5/imports/ui/components/audio/echo-test/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/audio/echo-test/styles.scss
@@ -11,10 +11,18 @@
   }
 
   &:first-child {
-    margin-right: 3rem;
+    margin: 0 3rem 0 0;
+
+    [dir="rtl"] & {
+      margin: 0 0 0 3rem;
+    }
 
     @include mq($small-only) {
-      margin-right: 1rem;
+      margin: 0 1rem 0 0;
+
+      [dir="rtl"] & {
+        margin: 0 0 0 1rem;
+      }
     }
   }
 
diff --git a/bigbluebutton-html5/imports/ui/components/audio/help/styles.scss b/bigbluebutton-html5/imports/ui/components/audio/help/styles.scss
index 43f81fcff866e9ab7d51edf7a596354f920a8593..97e7b5202eb2c275fa18c7c19cc44b389ee3082c 100644
--- a/bigbluebutton-html5/imports/ui/components/audio/help/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/audio/help/styles.scss
@@ -13,10 +13,22 @@
 
 .backBtn {
   margin-right: 0.5rem;
+  margin-left: inherit;
   border: none;
 
+  [dir="rtl"] & {
+    margin-right: inherit;
+    margin-left: 0.5rem;
+  }
+
   @include mq($small-only) {
     margin-right: auto;
+    margin-left: inherit;
+
+    [dir="rtl"] & {
+      margin-right: inherit;
+      margin-left: auto;
+    }
   }
 }
 
diff --git a/bigbluebutton-html5/imports/ui/components/audio/permissions-overlay/styles.scss b/bigbluebutton-html5/imports/ui/components/audio/permissions-overlay/styles.scss
index d629d4f29404737c26d7b9e0be6a15e267cc6816..e6fe67e30a4d8d56e867da0ee13053a4832080df 100644
--- a/bigbluebutton-html5/imports/ui/components/audio/permissions-overlay/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/audio/permissions-overlay/styles.scss
@@ -22,12 +22,18 @@
   &:after {
     top: var(--arrow-top);
     left: var(--arrow-left);
+    right: auto;
     font-size: 20px;
     display: block;
     font-family: 'bbb-icons';
     content: "\E906";
     position: relative;
 
+    [dir="rtl"] & {
+      left: auto;
+      right: var(--arrow-left);
+    }
+
     :global(.animationsEnabled) & {
       animation: bounce 2s infinite;
     }
@@ -36,39 +42,87 @@
   :global(.browser-edge) &:after {
     top: var(--arrow-top-edge);
     left: var(--arrow-left-edge);
+    right: auto;
     font-size: 20px;
     :global(.animationsEnabled) & {
       animation: bounceRotate 2s infinite;
     }
+
+    [dir="rtl"] & {
+      left: auto;
+      right: var(--arrow-left-edge);
+    }
   }
 }
 
 @mixin positionHint() {
   :global(.browser-edge) & {
     left: var(--position-left-edge);
+    right: auto;
     bottom: var(--position-bottom-edge);
+
+    [dir="rtl"] & {
+      left: auto;
+      right: var(--position-left-edge);
+    }
   }
   :global(.browser-firefox) & {
     top: var(--position-top-firefox);
     left: var(--position-left-firefox);
+    right: auto;
+
+    [dir="rtl"] & {
+      right: var(--position-left-firefox-left-edge);
+      left: auto;
+    }
   }
   :global(.browser-chrome) & {
     top: var(--position-top-chrome);
     left: var(--position-left-chrome);
+    right: auto;
+
+    [dir="rtl"] & {
+      left: auto;
+      right: var(--position-left-chrome);
+    }
   }
   :global(.browser-safari) & {
     top: var(--position-top-safari);
     @include mq($safari1280) {
       left: var(--position-left-safari-1280);
+      right: auto;
+
+      [dir="rtl"] & {
+        left: auto;
+        right: var(--position-left-safari-1280);
+      }
     }
     @include mq($safari1440) {
       left: var(--position-left-safari-1440);
+      right: auto;
+
+      [dir="rtl"] & {
+        right: var(--position-left-safari-1440);
+        left: auto;
+      }
     }
     @include mq($safari1680) {
       left: var(--position-left-safari-1680);
+      right: auto;
+
+      [dir="rtl"] & {
+        right: var(--position-left-safari-1680);
+        left: auto;
+      }
     }
     @include mq($safari1920) {
       left: var(--position-left-safari-1920);
+      right: auto;
+
+      [dir="rtl"] & {
+        right: var(--position-left-safari-1920);
+        left: auto;
+      }
     }
   }
 }
@@ -99,10 +153,14 @@
   color: #fff;
   font-size: 16px;
   font-weight: 400;
-  padding-left: var(--jumbo-padding-x);
+  padding: 0 0 0 var(--jumbo-padding-x);
   line-height: 18px;
   width: 340px;
 
+  [dir="rtl"] & {
+    padding-right: 0 var(--jumbo-padding-x) 0 0;
+  }
+
   small {
     display: block;
     font-size: 12px;
diff --git a/bigbluebutton-html5/imports/ui/components/breakout-room/styles.scss b/bigbluebutton-html5/imports/ui/components/breakout-room/styles.scss
index 470a6076d36f15529b5c6946f76b0fbbdd89e162..c51c62b65f728df2626bf745477fe9f75222d513 100644
--- a/bigbluebutton-html5/imports/ui/components/breakout-room/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/breakout-room/styles.scss
@@ -24,12 +24,26 @@
 
 .header {
   position: relative;
-  margin-bottom: 2rem;
-  margin-right: auto;
+  margin: 0 auto 2rem 0;
   padding-left: 0;
+  padding-right: inherit;
+
+  [dir="rtl"] & {
+    margin: 0 0 2rem auto;
+    padding-left: inherit;
+    padding-right: 0;
+  }
   
   > i  {
     color: var(--color-gray-dark);
+
+    [dir="rtl"] & {
+      -webkit-transform: scale(-1, 1);
+      -moz-transform: scale(-1, 1);
+      -ms-transform: scale(-1, 1);
+      -o-transform: scale(-1, 1);
+      transform: scale(-1, 1);
+    }
   }
 }
 
@@ -73,6 +87,7 @@
   position: fixed;
   top: 0; 
   left: 0;
+  right: auto;
   z-index: 100;
   display: flex;
   justify-content: center;
@@ -80,6 +95,11 @@
   height: 100%;
   width: 100%;
   color: var(--color-gray);
+
+  [dir="rtl"] & {
+    left: auto;
+    right: 0;
+  }
 }
 
 .connectingAnimation{
@@ -89,7 +109,11 @@
     vertical-align: bottom;
     content: "\2026"; /* ascii code for the ellipsis character */
     width: 0;
-    margin-right: 1.25em;
+    margin: 0 1.25em 0 0;
+
+    [dir="rtl"] & {
+      margin: 0 0 0 1.25em;
+    }
 
     :global(.animationsEnabled) & {
       animation: ellipsis steps(4,end) 900ms infinite;
@@ -101,6 +125,7 @@
   to {
     width: 1.25em;
     margin-right: 0;
+    margin-left: 0;
   }
 }
 
@@ -111,5 +136,9 @@
 }
 
 .usersAssignedNumberLabel {
-  margin-left: .25rem;
+  margin: 0 0 0 .25rem;
+
+  [dir="rtl"] & {
+    margin: 0 .25em 0 0;
+  }
 }
\ No newline at end of file
diff --git a/bigbluebutton-html5/imports/ui/components/button/styles.scss b/bigbluebutton-html5/imports/ui/components/button/styles.scss
index f4d8fa85810979d68d11fba5d3170ccda5da9ae3..31063b282ceb34eec443b9e2009878e2b48ff1fd 100755
--- a/bigbluebutton-html5/imports/ui/components/button/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/button/styles.scss
@@ -150,13 +150,20 @@
 
   .buttonWrapper.sm & {
     display: inline-block;
-    margin-top: 0;
-    margin-left: var(--btn-spacing);
+    margin: 0 0 0var(--btn-spacing);
+
+    [dir="rtl"] & {
+      margin:0 var(--btn-spacing) 0 0;
+    }
   }
 
   & + .icon,
   & + .button {
-    margin-left: var(--btn-spacing);
+    margin: 0 0 0 var(--btn-spacing);
+
+    [dir="rtl"] & {
+      margin: 0 var(--btn-spacing) 0 0;
+    }
   }
   &:hover {
     opacity: .5;
@@ -183,7 +190,11 @@
   }
 
   & + .label {
-    margin-left: var(--btn-spacing);
+    margin: 0 0 0 var(--btn-spacing);
+
+    [dir="rtl"] & {
+      margin: 0 var(--btn-spacing) 0 0;
+    }
   }
   .buttonWrapper:hover & {
     opacity: .75;
diff --git a/bigbluebutton-html5/imports/ui/components/chat/component.jsx b/bigbluebutton-html5/imports/ui/components/chat/component.jsx
index a243df8eab02c83daddc1d953c79bd317bbac1ce..f49c1451ab79bf2e54d411cd348c4d7c938880bc 100755
--- a/bigbluebutton-html5/imports/ui/components/chat/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/chat/component.jsx
@@ -5,7 +5,7 @@ import injectWbResizeEvent from '/imports/ui/components/presentation/resize-wrap
 import Button from '/imports/ui/components/button/component';
 import { Session } from 'meteor/session';
 import withShortcutHelper from '/imports/ui/components/shortcut-help/service';
-import { styles } from './styles';
+import { styles } from './styles.scss';
 import MessageForm from './message-form/component';
 import MessageList from './message-list/component';
 import ChatDropdown from './chat-dropdown/component';
diff --git a/bigbluebutton-html5/imports/ui/components/chat/message-form/component.jsx b/bigbluebutton-html5/imports/ui/components/chat/message-form/component.jsx
index 120ef17a7168af1818a79f5b2d718acf2334956c..682cf6451a837ee7f6e0f5f0b852b013a2b36612 100755
--- a/bigbluebutton-html5/imports/ui/components/chat/message-form/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/chat/message-form/component.jsx
@@ -3,7 +3,7 @@ import { defineMessages, injectIntl } from 'react-intl';
 import cx from 'classnames';
 import TextareaAutosize from 'react-autosize-textarea';
 import browser from 'browser-detect';
-import { styles } from './styles';
+import { styles } from './styles.scss';
 import Button from '../../button/component';
 
 const propTypes = {
diff --git a/bigbluebutton-html5/imports/ui/components/chat/message-form/styles.scss b/bigbluebutton-html5/imports/ui/components/chat/message-form/styles.scss
index 0efaa5db080d159f916ce3875a43e8ab2ffd24d0..af446e7709680d8b4bd1a9e49d0577e460ed4243 100755
--- a/bigbluebutton-html5/imports/ui/components/chat/message-form/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/chat/message-form/styles.scss
@@ -86,9 +86,18 @@
 }
 
 .sendButton {
-  margin-left: var(--sm-padding-x);
+  margin:0 0 0 var(--sm-padding-x);
   align-self: center;
   font-size: 0.9rem;
+
+  [dir="rtl"]  & {
+    margin: 0 var(--sm-padding-x) 0 0;
+    -webkit-transform: scale(-1, 1);
+    -moz-transform: scale(-1, 1);
+    -ms-transform: scale(-1, 1);
+    -o-transform: scale(-1, 1);
+    transform: scale(-1, 1);
+  }
 }
 
 .info {
@@ -97,6 +106,10 @@
   text-align: right;
   padding: var(--border-size) 0;
 
+  [dir="rtl"] & {
+    text-align: left;
+  }
+
   &:before {
     content: "\00a0"; // non-breaking space
   }
diff --git a/bigbluebutton-html5/imports/ui/components/chat/message-list/message-list-item/styles.scss b/bigbluebutton-html5/imports/ui/components/chat/message-list/message-list-item/styles.scss
index 6b1d169defb39895638c02366ced58fd9b3038c8..7c63422e8057c0b78780070fe93a96044fbceeb9 100755
--- a/bigbluebutton-html5/imports/ui/components/chat/message-list/message-list-item/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/chat/message-list/message-list-item/styles.scss
@@ -19,8 +19,11 @@
   flex-flow: row;
   flex: 1;
   position: relative;
-  margin-left: var(--border-size);
-  margin-top: var(--border-size);
+  margin:var(--border-size) 0 0 var(--border-size);
+
+  [dir="rtl"] & {
+    margin: var(--border-size) var(--border-size) 0 0;
+  }
 }
 
 .systemMessage {
@@ -35,7 +38,11 @@
   flex-basis: 2.25rem;
   flex-shrink: 0;
   flex-grow: 0;
-  margin-right: calc(var(--line-height-computed) / 2);
+  margin: 0 calc(var(--line-height-computed) / 2) 0 0;
+
+  [dir="rtl"] & {
+    margin: 0 0 0 calc(var(--line-height-computed) / 2);
+  }
 }
 
 .avatar {
@@ -83,9 +90,15 @@
 .logout {
   text-transform: capitalize;
   font-style: italic;
+
   & > span {
     text-align: right;
-    padding-right: .1rem;
+    padding: 0 .1rem 0 0;
+
+    [dir="rtl"] & {
+      text-align: left;
+      padding: 0 0 0 .1rem;
+    }
   }
 }
 
@@ -106,7 +119,11 @@
   color: var(--color-gray-light);
   text-transform: uppercase;
   font-size: 75%;
-  margin-left: calc(var(--line-height-computed) / 2);
+  margin: 0 0 0 calc(var(--line-height-computed) / 2);
+
+  [dir="rtl"] & {
+    margin: 0 calc(var(--line-height-computed) / 2) 0 0;
+  }
 
   > span {
     vertical-align: sub;
diff --git a/bigbluebutton-html5/imports/ui/components/chat/message-list/styles.scss b/bigbluebutton-html5/imports/ui/components/chat/message-list/styles.scss
index 41b19036093c469528d7859cd47686a8b7efad57..6cd21c3684ceadd47676d57fd65bbfdfc6d889af 100644
--- a/bigbluebutton-html5/imports/ui/components/chat/message-list/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/chat/message-list/styles.scss
@@ -15,6 +15,13 @@
   margin-right: calc(-1 * var(--md-padding-x));
   padding-bottom: var(--md-padding-x);
   margin-bottom: calc(-1 * var(--md-padding-x));
+
+  [dir="rtl"] & {
+    padding-right: var(--md-padding-x);
+    margin-right: calc(-1 * var(--md-padding-x));
+    padding-left: var(--sm-padding-y);
+    margin-left: calc(-1 * var(--md-padding-x));
+  }
 }
 
 .messageList {
@@ -22,10 +29,16 @@
   flex-flow: column;
   flex-grow: 1;
   flex-shrink: 1;
-  margin-right: auto;
-  padding-right: var(--md-padding-x);
+  margin: 0 auto 0 0;
+  right: 0 var(--md-padding-x) 0 0;
   padding-top: 0;
   width: 100%;
+
+  [dir="rtl"] & {
+    margin: 0 0 0 auto;
+    padding: 0 0 0 var(--md-padding-x);
+  }
+
   &:after {
     content: "";
     display: block;
diff --git a/bigbluebutton-html5/imports/ui/components/chat/styles.scss b/bigbluebutton-html5/imports/ui/components/chat/styles.scss
index 08ffa1f092e41f2272b5d6c7699e78739cc989ec..0883508cf25f4e64987e8789f97392a07745ef7a 100755
--- a/bigbluebutton-html5/imports/ui/components/chat/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/chat/styles.scss
@@ -53,11 +53,25 @@
   display: block;
   margin: var(--border-size-large);
   margin-bottom: var(--border-size);
-  padding-left: 0px;
+  padding-left: 0;
+  padding-right: inherit;
+
+  [dir="rtl"] & {
+    padding-left: inherit;
+    padding-right: 0;
+  }
 
   > i {
       color: var(--color-gray-dark);
       font-size: smaller;
+
+      [dir="rtl"] & {
+        -webkit-transform: scale(-1, 1);
+        -moz-transform: scale(-1, 1);
+        -ms-transform: scale(-1, 1);
+        -o-transform: scale(-1, 1);
+        transform: scale(-1, 1);
+      }
   }
 
   &:hover {
diff --git a/bigbluebutton-html5/imports/ui/components/closed-captions/styles.scss b/bigbluebutton-html5/imports/ui/components/closed-captions/styles.scss
index 2ce5b6a4fb2393c8e3a0ff4cc67bea88b8b4ba29..53f4371003caefa37f9ef98592e25a4bf2f12371 100644
--- a/bigbluebutton-html5/imports/ui/components/closed-captions/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/closed-captions/styles.scss
@@ -25,5 +25,9 @@
   height: 20px;
   margin-top: 0px;
   margin-bottom: 0px;
-  padding-left: 20px;
+  padding: 0 0 0 20px;
+
+  [dir="rtl"] & {
+    padding: 0 20px 0 0;
+  }
 }
diff --git a/bigbluebutton-html5/imports/ui/components/dropdown/list/styles.scss b/bigbluebutton-html5/imports/ui/components/dropdown/list/styles.scss
index 01682827335f7615c7fa952f2de930742b3da1ba..c4caf291afa428e0958a6b7230f6d4a3c107ad2c 100755
--- a/bigbluebutton-html5/imports/ui/components/dropdown/list/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/dropdown/list/styles.scss
@@ -12,6 +12,10 @@
   overflow-wrap: break-word;
   white-space: pre-line;
 
+  [dir="rtl"] & {
+    text-align: right;
+  }
+
   @include mq($small-only) {
     font-size: calc(var(--font-size-large) * 1.1);
     padding: var(--line-height-computed);
@@ -86,6 +90,13 @@
       margin-right: -.25rem;
       padding-left: .25rem;
       padding-right: .25rem;
+
+      [dir="rtl"] & {
+        margin-right: -.25rem;
+        margin-left: -.25rem;
+        padding-right: .25rem;
+        padding-left: .25rem;
+      }
     }
 
     .horizontalList & {
@@ -123,9 +134,13 @@
 
 .iconRight,
 .itemIcon {
-  margin-right: calc(var(--line-height-computed) / 2);
+  margin: 0 calc(var(--line-height-computed) / 2) 0 0;
   color: var(--color-text);
   flex: 0 0;
+
+  [dir="rtl"] & {
+    margin: 0 0 0 calc(var(--line-height-computed) / 2);
+  }
 }
 
 .iconRight {
@@ -133,6 +148,16 @@
   margin-left: 1rem;
   font-size: 12px;
   line-height: 16px;
+
+  [dir="rtl"] & {
+    margin-left: 0;
+    margin-right: 1rem;
+    -webkit-transform: scale(-1, 1);
+    -moz-transform: scale(-1, 1);
+    -ms-transform: scale(-1, 1);
+    -o-transform: scale(-1, 1);
+    transform: scale(-1, 1);
+  }
 }
 
 .itemLabel {
diff --git a/bigbluebutton-html5/imports/ui/components/dropdown/styles.scss b/bigbluebutton-html5/imports/ui/components/dropdown/styles.scss
index b7db62dbf66d90c062ea4536738f64873a24d82b..1a6e4ba70413a9fd09706223d7d89357205678f3 100755
--- a/bigbluebutton-html5/imports/ui/components/dropdown/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/dropdown/styles.scss
@@ -9,6 +9,9 @@
 
   --dropdown-caret-width: 12px;
   --dropdown-caret-height: 8px;
+
+  --rtl-caret-offset: -0.4375rem;
+  --rtl-content-offset: 10.75rem;
 }
 
 .dropdown {
@@ -30,6 +33,10 @@
   border: 0;
   padding: calc(var(--line-height-computed) / 2);
 
+  [dir="rtl"] & {
+    right: var(--rtl-content-offset);
+  }
+
   &:after,
   &:before {
     content: '';
@@ -136,6 +143,11 @@
     border-bottom: var(--dropdown-caret-height) solid var(--dropdown-bg);
     margin-top: calc(var(--dropdown-caret-height) * -1);
     top: 0;
+
+    [dir="rtl"] & {
+      right: 50%;
+      transform: translateX(-150%);
+    }
   }
 
   &:before {
@@ -156,10 +168,26 @@
     margin-right: calc(var(--dropdown-caret-height) * -1);
     top: 50%;
     right: 0;
+
+    [dir="rtl"] & {
+      left: 0;
+      border-left: 0;
+      border-right: var(--dropdown-caret-height) solid var(--dropdown-bg);
+      margin-left: calc(var(--dropdown-caret-height) * -1);
+    }
   }
 
   &:before {
+
+    
     border-left: var(--dropdown-caret-height) solid var(--caret-shadow-color);
+    border-right: 0;
+
+    [dir="rtl"] & {
+      transform: rotate(180deg);
+      border-left: 0;
+      border-right: var(--dropdown-caret-height) solid var(--caret-shadow-color);
+    }
   }
 }
 
@@ -176,10 +204,23 @@
     margin-left: calc(var(--dropdown-caret-height) * -1);
     top: 50%;
     left: 0;
+
+    [dir="rtl"] & {
+      transform: rotate(180deg);
+      margin-right: calc(var(--dropdown-caret-height) * -1);
+      right: 1px;
+    }
   }
 
   &:before {
     border-right: var(--dropdown-caret-height) solid var(--caret-shadow-color);
+    border-left: 0;
+
+    [dir="rtl"] & {
+      right: var(--rtl-caret-offset);
+      border: none;
+      margin: 0;
+    }
   }
 }
 
@@ -188,6 +229,10 @@
   &:before {
     left: 50%;
     margin-left: calc(var(--dropdown-caret-width) * -1);
+
+    [dir="rtl"] & {
+      margin-right: calc(var(--dropdown-caret-width) * -1);
+    }
   }
 }
 
@@ -195,6 +240,10 @@
   transform: translateX(-100%);
   left: 100%;
 
+  [dir="rtl"] & {
+    right: 100%;
+  }
+
   &:after,
   &:before {
     right: calc(var(--dropdown-caret-width) / 2);
@@ -237,6 +286,11 @@
   &:before {
     top: auto;
     bottom: calc(var(--dropdown-caret-width) / 2);
+
+    [dir="rtl"] & {
+      top: calc(var(--dropdown-caret-width) / 2);
+      bottom: auto;
+    }
   }
 }
 
@@ -245,7 +299,7 @@
   @extend %horz-center-caret;
 }
 
-.top-left {
+.top-left, [dir="rtl"] .top-right {
   @extend %down-caret;
   @extend %horz-right-caret;
   min-width: 11.5rem;
@@ -260,17 +314,23 @@
   @extend %horz-left-caret;
 }
 
+[dir="rtl"] .top-left {
+  @extend %down-caret;
+  @extend %horz-left-caret;
+  transform: translateX(25%);
+}
+
 .bottom {
   @extend %up-caret;
   @extend %horz-center-caret;
 }
 
-.bottom-left {
+.bottom-left, [dir="rtl"] .bottom-right {
   @extend %up-caret;
   @extend %horz-right-caret;
 }
 
-.bottom-right {
+.bottom-right, [dir="rtl"] .bottom-left  {
   @extend %up-caret;
   @extend %horz-left-caret;
   min-width: 10rem;
@@ -280,12 +340,12 @@
   }
 }
 
-.left {
+.left, [dir="rtl"] .right {
   @extend %right-caret;
   @extend %vert-center-caret;
 }
 
-.left-top {
+.left-top, [dir="rtl"] .right-top {
   @extend %right-caret;
   @extend %vert-top-caret;
   transform: translateX(-100%) translateY(0);
@@ -297,18 +357,34 @@
   transform: translateX(-100%) translateY(0);
 }
 
-.right {
+[dir="rtl"] .right-bottom  {
+  @extend %right-caret;
+  @extend %vert-bottom-caret;
+  transform: translateX(-110%) translateY(0);
+}
+
+.right, [dir="rtl"] .left {
   @extend %left-caret;
   @extend %vert-center-caret;
 }
 
-.right-top {
+.right-top  {
   @extend %left-caret;
   @extend %vert-top-caret;
   transform: translateX(100%) translateY(0);
 }
 
-.right-bottom {
+[dir="rtl"] .right-top {
+  transform: translateX(-25%) translateY(0%);
+}
+
+[dir="rtl"] .left-top {
+  @extend %left-caret;
+  @extend %vert-top-caret;
+  transform: translateX(125%) translateY(-25%);
+}
+
+.right-bottom, [dir="rtl"] .left-bottom {
   @extend %left-caret;
   @extend %vert-bottom-caret;
   transform: translateX(100%) translateY(0);
diff --git a/bigbluebutton-html5/imports/ui/components/end-meeting-confirmation/styles.scss b/bigbluebutton-html5/imports/ui/components/end-meeting-confirmation/styles.scss
index 494cec75407419aa87ced1ee8b589e9d5dd28683..0b008cd872b20e369b8edab227c5f8342e630936 100755
--- a/bigbluebutton-html5/imports/ui/components/end-meeting-confirmation/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/end-meeting-confirmation/styles.scss
@@ -30,7 +30,11 @@
 .button {
   padding-right: var(--jumbo-padding-y);
   padding-left: var(--jumbo-padding-y);
-  margin-right: var(--sm-padding-x);
+  margin: 0 var(--sm-padding-x) 0 0;
+
+  [dir="rtl"] & {
+    margin: 0 0 0 var(--sm-padding-x);
+  }
 }
 
 .description {
diff --git a/bigbluebutton-html5/imports/ui/components/external-video-player/styles.scss b/bigbluebutton-html5/imports/ui/components/external-video-player/styles.scss
index e278d6d4208f811c8abf5a5e47c19cbb29f199a2..5bb369f6e5cf3772faba2e0595a05f75f2a579ae 100644
--- a/bigbluebutton-html5/imports/ui/components/external-video-player/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/external-video-player/styles.scss
@@ -23,10 +23,13 @@ $icon-offset: -.4em;
 
   a {
     @include elementFocus(var(--color-primary));
-    padding-bottom: var(--sm-padding-y);
-    padding-left: var(--sm-padding-y);
+    padding: 0 0 var(--sm-padding-y) var(--sm-padding-y);
     text-decoration: none;
     display: block;
+
+    [dir="rtl"] & {
+      padding: 0 var(--sm-padding-y) var(--sm-padding-y) 0;
+    }
   }
 
   [class^="icon-bbb-"],
diff --git a/bigbluebutton-html5/imports/ui/components/lock-viewers/styles.scss b/bigbluebutton-html5/imports/ui/components/lock-viewers/styles.scss
index d853bc994fa7b827e4f86b8cac0465c61c0b3b7d..04eed241c25f952915b718069900c9dc01ee3d70 100755
--- a/bigbluebutton-html5/imports/ui/components/lock-viewers/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/lock-viewers/styles.scss
@@ -10,10 +10,16 @@
 
 .title {
   left: var(--title-position-left);
+  right: auto;
   color: var(--color-gray-dark);
   font-weight: bold;
   font-size: var(--font-size-large);
   text-align: center;
+
+  [dir="rtl"] & {
+    left: auto;
+    right: var(--title-position-left);
+  }
 }
 
 .form {
@@ -64,7 +70,11 @@
   display: flex;
   flex-grow: 1;
   flex-basis: 0;
-  margin-right: var(--md-padding-x);
+  margin: 0 var(--md-padding-x) 0 0;
+
+  [dir="rtl"] & {
+    margin: 0 0 0 var(--md-padding-x);
+  }
 }
 
 .label {
@@ -94,12 +104,18 @@
   position: relative;
   background-color: var(--color-white);
   left: var(--closeBtn-position-left);
+  right: auto;
   bottom: var(--closeBtn-position-left);
 
+  [dir="rtl"] & {
+    left: auto;
+    right: var(--closeBtn-position-left);
+  }
+
   i {
     color: var(--color-gray-light);
    }
-  
+
   &:focus,
   &:hover {
       background-color: var(--color-gray-lighter);
diff --git a/bigbluebutton-html5/imports/ui/components/media/styles.scss b/bigbluebutton-html5/imports/ui/components/media/styles.scss
index 32e9171f0d6b71792bb00600d711f11ee9fa661e..333bc57b9819f0fd08f42abacc6243ec3680f4bb 100644
--- a/bigbluebutton-html5/imports/ui/components/media/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/media/styles.scss
@@ -54,6 +54,7 @@
     position: fixed;
     margin: 0;
     bottom: .8rem;
+    left: auto;
     right: .8rem;
     width: var(--overlay-width);
     min-width: var(--overlay-min-width);
@@ -61,5 +62,10 @@
     height: calc(var(--overlay-width) / var(--overlay-ratio));
     min-height: calc(var(--overlay-min-width) / var(--overlay-ratio));
     max-height: calc(var(--overlay-max-width) / var(--overlay-ratio));
+
+    [dir="rtl"] & {
+      right: auto;
+      left: .8rem;
+    }
   }
 }
diff --git a/bigbluebutton-html5/imports/ui/components/meeting-ended/rating/styles.scss b/bigbluebutton-html5/imports/ui/components/meeting-ended/rating/styles.scss
index e411231c031350f16ffbfead1187708e878742bd..c972fafa90394076b400049685232cd644923475 100755
--- a/bigbluebutton-html5/imports/ui/components/meeting-ended/rating/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/meeting-ended/rating/styles.scss
@@ -16,15 +16,18 @@
       > label {
         float: right;
         width: 1em;
-        padding: 0 .05em;
+        padding: 0 .05em 0 .1rem;
         overflow: hidden;
         white-space: nowrap;
         cursor: pointer;
         font-size: 2.5rem;
-        padding-left: .1rem;
         color: black;
         font-weight: 100;
 
+        [dir="rtl"] & {
+          padding: 0 .1rem 0 .05em;
+        }
+
         @include mq($small-only) {
           font-size: 2rem;
         }
diff --git a/bigbluebutton-html5/imports/ui/components/modal/fullscreen/component.jsx b/bigbluebutton-html5/imports/ui/components/modal/fullscreen/component.jsx
index db4fc67d5b92a9ba61599a068a5d16ef2edd35fd..8eed87d99674b257d6b4c8a6b400cbbd6640a662 100644
--- a/bigbluebutton-html5/imports/ui/components/modal/fullscreen/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/modal/fullscreen/component.jsx
@@ -2,21 +2,37 @@ import React, { PureComponent } from 'react';
 import PropTypes from 'prop-types';
 import Button from '/imports/ui/components/button/component';
 import cx from 'classnames';
+import { defineMessages, injectIntl } from 'react-intl';
 import ModalBase, { withModalState } from '../base/component';
 import { styles } from './styles.scss';
 
+const intlMessages = defineMessages({
+  modalClose: {
+    id: 'app.modal.close',
+    description: 'Close',
+  },
+  modalCloseDescription: {
+    id: 'app.modal.close.description',
+    description: 'Disregards changes and closes the modal',
+  },
+  modalDone: {
+    id: 'app.modal.confirm',
+    description: 'Close',
+  },
+  modalDoneDescription: {
+    id: 'app.modal.confirm.description',
+    description: 'Disregards changes and closes the modal',
+  },
+});
+
 const propTypes = {
   title: PropTypes.string.isRequired,
   confirm: PropTypes.shape({
     callback: PropTypes.func.isRequired,
-    label: PropTypes.string.isRequired,
-    description: PropTypes.string,
     disabled: PropTypes.bool,
   }),
   dismiss: PropTypes.shape({
     callback: PropTypes.func,
-    label: PropTypes.string.isRequired,
-    description: PropTypes.string,
     disabled: PropTypes.bool,
   }),
   preventClosing: PropTypes.bool,
@@ -25,13 +41,9 @@ const propTypes = {
 const defaultProps = {
   shouldCloseOnOverlayClick: false,
   confirm: {
-    label: 'Done',
-    description: 'Saves changes and closes the modal',
     disabled: false,
   },
   dismiss: {
-    label: 'Cancel',
-    description: 'Disregards changes and closes the modal',
     disabled: false,
   },
   preventClosing: false,
@@ -45,6 +57,7 @@ class ModalFullscreen extends PureComponent {
 
   render() {
     const {
+      intl,
       title,
       confirm,
       dismiss,
@@ -67,8 +80,8 @@ class ModalFullscreen extends PureComponent {
             <Button
               data-test="modalDismissButton"
               className={styles.dismiss}
-              label={dismiss.label}
-              aria-label={`${dismiss.label} ${title}`}
+              label={intl.formatMessage(intlMessages.modalClose)}
+              aria-label={`${intl.formatMessage(intlMessages.modalClose)} ${title}`}
               disabled={dismiss.disabled}
               onClick={this.handleAction.bind(this, 'dismiss')}
               aria-describedby="modalDismissDescription"
@@ -77,8 +90,8 @@ class ModalFullscreen extends PureComponent {
               data-test="modalConfirmButton"
               color="primary"
               className={styles.confirm}
-              label={confirm.label}
-              aria-label={`${confirm.label} ${title}`}
+              label={intl.formatMessage(intlMessages.modalDone)}
+              aria-label={`${intl.formatMessage(intlMessages.modalDone)} ${title}`}
               disabled={confirm.disabled}
               onClick={this.handleAction.bind(this, 'confirm')}
               aria-describedby="modalConfirmDescription"
@@ -88,8 +101,8 @@ class ModalFullscreen extends PureComponent {
         <div className={styles.content}>
           {this.props.children}
         </div>
-        <div id="modalDismissDescription" hidden>{dismiss.description}</div>
-        <div id="modalConfirmDescription" hidden>{confirm.description}</div>
+        <div id="modalDismissDescription" hidden>{intl.formatMessage(intlMessages.modalCloseDescription)}</div>
+        <div id="modalConfirmDescription" hidden>{intl.formatMessage(intlMessages.modalDoneDescription)}</div>
       </ModalBase>
     );
   }
@@ -98,4 +111,4 @@ class ModalFullscreen extends PureComponent {
 ModalFullscreen.propTypes = propTypes;
 ModalFullscreen.defaultProps = defaultProps;
 
-export default withModalState(ModalFullscreen);
+export default withModalState(injectIntl(ModalFullscreen));
diff --git a/bigbluebutton-html5/imports/ui/components/modal/simple/component.jsx b/bigbluebutton-html5/imports/ui/components/modal/simple/component.jsx
index 37f63a5abdf1d0aad868445cb4e1e5257df33d89..37b0592fb007d7bf8f0f9e2c9062c229b2e8e1af 100755
--- a/bigbluebutton-html5/imports/ui/components/modal/simple/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/modal/simple/component.jsx
@@ -2,15 +2,25 @@ import React, { Component } from 'react';
 import PropTypes from 'prop-types';
 import cx from 'classnames';
 import Button from '/imports/ui/components/button/component';
+import { defineMessages, injectIntl } from 'react-intl';
 import ModalBase, { withModalState } from '../base/component';
 import { styles } from './styles';
 
+const intlMessages = defineMessages({
+  modalClose: {
+    id: 'app.modal.close',
+    description: 'Close',
+  },
+  modalCloseDescription: {
+    id: 'app.modal.close.description',
+    description: 'Disregards changes and closes the modal',
+  },
+});
+
 const propTypes = {
   title: PropTypes.string,
   dismiss: PropTypes.shape({
-    callback: PropTypes.func,
-    label: PropTypes.string.isRequired,
-    description: PropTypes.string,
+    callback: PropTypes.func
   }),
 };
 
@@ -18,10 +28,6 @@ const defaultProps = {
   shouldCloseOnOverlayClick: true,
   shouldShowCloseButton: true,
   overlayClassName: styles.overlay,
-  dismiss: {
-    label: 'Cancel',
-    description: 'Disregards changes and closes the modal',
-  },
 };
 
 class ModalSimple extends Component {
@@ -36,6 +42,7 @@ class ModalSimple extends Component {
 
   render() {
     const {
+      intl,
       title,
       hideBorder,
       dismiss,
@@ -62,8 +69,8 @@ class ModalSimple extends Component {
           {shouldShowCloseButton ? (
             <Button
               className={styles.dismiss}
-              label={dismiss.label}
-              aria-label={`${dismiss.label} ${title || contentLabel}`}
+              label={intl.formatMessage(intlMessages.modalClose)}
+              aria-label={`${intl.formatMessage(intlMessages.modalClose)} ${title || contentLabel}`}
               icon="close"
               circle
               hideLabel
@@ -75,7 +82,7 @@ class ModalSimple extends Component {
         <div className={styles.content}>
           {this.props.children}
         </div>
-        <div id="modalDismissDescription" hidden>{confirm.description}</div>
+        <div id="modalDismissDescription" hidden>{intl.formatMessage(intlMessages.modalCloseDescription)}</div>
       </ModalBase>
     );
   }
@@ -84,4 +91,4 @@ class ModalSimple extends Component {
 ModalSimple.propTypes = propTypes;
 ModalSimple.defaultProps = defaultProps;
 
-export default withModalState(ModalSimple);
+export default withModalState(injectIntl(ModalSimple));
diff --git a/bigbluebutton-html5/imports/ui/components/nav-bar/recording-indicator/styles.scss b/bigbluebutton-html5/imports/ui/components/nav-bar/recording-indicator/styles.scss
index e43e8a7015304b1f14005896a9e3f6317cd3e02a..df74708ba018243476241121f951bf6e864850f4 100755
--- a/bigbluebutton-html5/imports/ui/components/nav-bar/recording-indicator/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/nav-bar/recording-indicator/styles.scss
@@ -66,12 +66,18 @@
   color: var(--color-white);
   font-size: var(--font-size-base);
   padding: 0;
-  margin: 0 0 0 var(--sm-padding-x);
+  margin-left: var(--sm-padding-x);
+  margin-right: 0;
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
   max-width: 30vw;
 
+  [dir="rtl"]  & {
+    margin-left: 0;
+    margin-right: var(--sm-padding-x);
+  }
+
   > [class^="icon-bbb-"] {
     font-size: 75%;
   }
diff --git a/bigbluebutton-html5/imports/ui/components/note/styles.scss b/bigbluebutton-html5/imports/ui/components/note/styles.scss
index 63f8f336873b438546134f040fb13fc19f74145a..7186bf114f0863b3167f03604a345af67c5b2bf3 100644
--- a/bigbluebutton-html5/imports/ui/components/note/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/note/styles.scss
@@ -21,10 +21,13 @@
 
   a {
     @include elementFocus(var(--color-primary));
-    padding-bottom: var(--sm-padding-y);
-    padding-left: var(--sm-padding-y);
+    padding: 0 0 var(--sm-padding-y) var(--sm-padding-y);
     text-decoration: none;
     display: block;
+
+    [dir="rtl"] & {
+      padding: 0 var(--sm-padding-y) var(--sm-padding-y) 0;
+    }
   }
 
   [class^="icon-bbb-"],
@@ -50,7 +53,11 @@
   display: block;
   margin: 4px;
   margin-bottom: 2px;
-  padding-left: 0px;
+  padding: inherit inherit inherit 0;
+
+  [dir="rtl"] & {
+    padding: inherit 0 inherit inherit;
+  }
 
   > i {
     color: black;
@@ -71,9 +78,13 @@
     color: var(--color-gray);
     font-size: var(--font-size-small);
     font-style: italic;
-    padding-top: var(--sm-padding-x);
-    padding-left: var(--lg-padding-y);
+    padding: var(--sm-padding-x) 0 0 var(--sm-padding-x);
     text-align: left;
+
+    [dir="rtl"] & {
+      padding-right: var(--lg-padding-y) var(--lg-padding-y) 0 0;
+      text-align: right;
+    }
   }
 }
 
diff --git a/bigbluebutton-html5/imports/ui/components/poll/live-result/styles.scss b/bigbluebutton-html5/imports/ui/components/poll/live-result/styles.scss
index dda3147bd45bf603fa76e5ff6a203e43d1e824b2..442e4cfbfdee2d18988d313878f82e2273796426 100644
--- a/bigbluebutton-html5/imports/ui/components/poll/live-result/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/poll/live-result/styles.scss
@@ -26,8 +26,14 @@
   position: relative;
   flex: 1 1 auto;
   border-left: 1px solid var(--color-gray-lighter);
+  border-right : none;
   width: 100%;
   height: 100%;
+
+  [dir="rtl"] & {
+    border-left: none;
+    border-right: 1px solid var(--color-gray-lighter);
+  }
 }
 
 .left {
@@ -41,6 +47,10 @@
   text-align: right;
   max-width: var(--poll-stats-element-width);
   min-width: var(--poll-stats-element-width);
+
+  [dir="rtl"] & {
+    text-align: left;
+  }
 }
 
 .left,
@@ -101,11 +111,19 @@
 
 .theading {
   text-align: left;
+
+  [dir="rtl"] & {
+    text-align: right;
+  }
 }
 
 .resultLeft {
-  padding-right: .5rem;
+  padding: 0 .5rem 0 0;
   border-bottom: 1px solid var(--color-gray-lightest);
+
+  [dir="rtl"] & {
+    padding: 0 0 0 .5rem;
+  }
 }
 
 .resultRight,
@@ -126,7 +144,11 @@
     vertical-align: bottom;
     content: "\2026"; /* ascii code for the ellipsis character */
     width: 0;
-    margin-right: 1.25em;
+    margin: 0 1.25em 0 0;
+
+    [dir="rtl"] & {
+      margin: 0 0 0 1.25em;
+    }
 
     :global(.animationsEnabled) & {
       animation: ellipsis steps(4,end) 900ms infinite;
@@ -138,5 +160,6 @@
   to {
     width: 1.25em;
     margin-right: 0;
+    margin-left: 0;
   }
 }
diff --git a/bigbluebutton-html5/imports/ui/components/poll/styles.scss b/bigbluebutton-html5/imports/ui/components/poll/styles.scss
index c513b9680e8e8ca881c3ebb809dcacac0a1dce15..d9c5c029a2e950dcb6a37715fe938b5ae78d5e4b 100644
--- a/bigbluebutton-html5/imports/ui/components/poll/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/poll/styles.scss
@@ -11,7 +11,7 @@
 .closeBtn {
     position: relative;
 	> i {
-		color: var(--color-text);
+        color: var(--color-text);
 	}
 }
 
@@ -26,11 +26,25 @@
     display: block;
     margin: var(--border-size-large);
     margin-bottom: var(--border-size);
-    padding-left: 0px;
+    padding-left: 0;
+    padding-right: inherit;
+
+    [dir="rtl"] & {
+      padding-left: inherit;
+      padding-right: 0;
+    }
 
     > i {
         color: var(--color-gray-dark);
         font-size: smaller;
+
+        [dir="rtl"] & {
+            -webkit-transform: scale(-1, 1);
+            -moz-transform: scale(-1, 1);
+            -ms-transform: scale(-1, 1);
+            -o-transform: scale(-1, 1);
+            transform: scale(-1, 1);
+        }
     }
 
     &:hover {
@@ -91,11 +105,23 @@
 }
 
 .pollBtn:nth-child(even) {
+    margin-right: inherit;
     margin-left: var(--sm-padding-y);
+
+    [dir="rtl"] & {
+        margin-right: var(--sm-padding-y);
+        margin-left: inherit;
+    }
 }
 
 .pollBtn:nth-child(odd) {
     margin-right: var(--sm-padding-y);
+    margin-left: inherit;
+
+    [dir="rtl"] & {
+        margin-right: inherit;
+        margin-left: var(--sm-padding-y);
+    }
 }
 
 .customBtn:hover,
@@ -172,6 +198,11 @@
     border-radius: var(--border-radius);
     padding: .3rem * 1 .3rem * 0.25;
     padding-left: var(--lg-padding-y);
+
+    [dir="rtl"] & {
+    	padding: .3rem * 1 .3rem * 0.25;
+        padding-right:var(--lg-padding-y);
+    }
 }
 
 .noSlidePanelContainer {
diff --git a/bigbluebutton-html5/imports/ui/components/polling/styles.scss b/bigbluebutton-html5/imports/ui/components/polling/styles.scss
index 6add4b11f4c9247628b856f8378327cdef6aee23..d1282c6fb8029779e1b665368a5b95b1706b8872 100644
--- a/bigbluebutton-html5/imports/ui/components/polling/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/polling/styles.scss
@@ -49,8 +49,12 @@
     right: auto;
     top: 50%;
     left: 50%;
-    margin-right: -50%;
+    margin:0 -50% 0 0;
     transform: translate(-50%, -50%);
+
+    [dir="rtl"] & {
+      margin: 0 -50% 0 0;
+    }
   }
 }
 
diff --git a/bigbluebutton-html5/imports/ui/components/presentation/download-presentation-button/styles.scss b/bigbluebutton-html5/imports/ui/components/presentation/download-presentation-button/styles.scss
index 84afff7093dbf9eaea532eef2063ad3f7e31ddfd..2387f0bab9df2163a711a20490cce04a833a333c 100644
--- a/bigbluebutton-html5/imports/ui/components/presentation/download-presentation-button/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/presentation/download-presentation-button/styles.scss
@@ -9,9 +9,15 @@
 .wrapper {
   position: absolute;
   left: 0;
+  right: auto;
   background-color: var(--color-transparent);
   cursor: pointer;
   border: none !important;
+
+  [dir="rtl"] & {
+    left: auto;
+    right: 0;
+  }
 }
 
 .button {
diff --git a/bigbluebutton-html5/imports/ui/components/presentation/presentation-close-button/styles.scss b/bigbluebutton-html5/imports/ui/components/presentation/presentation-close-button/styles.scss
index 9764bcfb537e14ccb12daef35f191952056d8561..3ea4463d2dd635b694fe9d0266ae078f1773114b 100644
--- a/bigbluebutton-html5/imports/ui/components/presentation/presentation-close-button/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/presentation/presentation-close-button/styles.scss
@@ -4,5 +4,11 @@
   position: absolute;
   top: 0;
   right: 0;
+  left: auto;
   cursor: pointer;
+
+  [dir="rtl"] & {
+    right: auto;
+    left :0;
+  }
 }
diff --git a/bigbluebutton-html5/imports/ui/components/presentation/presentation-toolbar/styles.scss b/bigbluebutton-html5/imports/ui/components/presentation/presentation-toolbar/styles.scss
index 24e23c5a2e98e376e41141c22408e410f4cb45f3..a250c30cc09f28a5e295ed3222d256e4cb6fa6da 100644
--- a/bigbluebutton-html5/imports/ui/components/presentation/presentation-toolbar/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/presentation/presentation-toolbar/styles.scss
@@ -30,7 +30,11 @@
 
 .presentationZoomControls {
   justify-content: flex-end;
-  padding-right: var(--whiteboard-toolbar-padding);
+  padding: 0 var(--whiteboard-toolbar-padding) 0 0;
+
+  [dir="rtl"] & {
+    padding: 0 0 0 var(--whiteboard-toolbar-padding);
+  }
 }
 
 .presentationSlideControls,
@@ -66,10 +70,16 @@
       outline: none;
     }
 
-    margin-right: var(--whiteboard-toolbar-margin);
+    margin: 0 var(--whiteboard-toolbar-margin) 0 0;
     padding: var(--whiteboard-toolbar-padding);
     padding-left: var(--whiteboard-toolbar-padding-sm);
 
+    [dir="rtl"] & {
+      margin: 0 0 0 var(--whiteboard-toolbar-margin);
+      padding: var(--whiteboard-toolbar-padding);
+      padding-right: var(--whiteboard-toolbar-padding-sm);
+    }
+
     option {
       color: var(--toolbar-button-color);
       background-color: var(--color-off-white);
@@ -81,9 +91,6 @@
   >div {
     color: var(--toolbar-button-color);
     background-color: var(--color-off-white);
-    border-top: 0;
-    border-bottom: 0;
-    border-left: 0;
     border-radius: 0;
     box-shadow: none !important;
     border: 0;
@@ -118,6 +125,14 @@
 
   i {
     font-size: 1rem;
+
+    [dir="rtl"] & {
+      -webkit-transform: scale(-1, 1);
+      -moz-transform: scale(-1, 1);
+      -ms-transform: scale(-1, 1);
+      -o-transform: scale(-1, 1);
+      transform: scale(-1, 1);
+    }
   }
 }
 
@@ -141,6 +156,11 @@
   margin: var(--border-size);
   margin-left: var(--whiteboard-toolbar-margin);
 
+  [dir="rtl"] & {
+    margin: var(--border-size);
+    margin-right: var(--whiteboard-toolbar-margin);
+  }
+
   &:-moz-focusring {
     outline: none;
   }
diff --git a/bigbluebutton-html5/imports/ui/components/presentation/presentation-uploader/styles.scss b/bigbluebutton-html5/imports/ui/components/presentation/presentation-uploader/styles.scss
index 3bfcc63bbe370363242beb05f3fc38d83f40c56a..e61b23e13273ab48d57ccb48e28c18d60da28370 100644
--- a/bigbluebutton-html5/imports/ui/components/presentation/presentation-uploader/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/presentation/presentation-uploader/styles.scss
@@ -30,6 +30,10 @@
   > tbody {
     text-align: left;
 
+    [dir="rtl"] & {
+      text-align: right;
+    }
+
     > tr {
       border-bottom: 1px solid var(--color-gray-light);
 
@@ -69,6 +73,10 @@
 .tableItemActions {
   min-width: 68px; // size of the 2 icons (check/trash)
   text-align: left;
+
+  [dir="rtl"] & {
+    text-align: right;
+  }
 }
 
 .tableItemIcon > i {
@@ -95,10 +103,20 @@
 
 .tableItemCurrent {
   padding-left: 0;
+  padding-right: inherit;
+
+  [dir="rtl"] & {
+    padding-left: inherit;
+    padding-right: 0;
+  }
 }
 
 .tableItemStatus {
   text-align: right;
+
+  [dir="rtl"] & {
+    text-align: left;
+  }
 }
 
 .tableItemNew {
diff --git a/bigbluebutton-html5/imports/ui/components/recording/styles.scss b/bigbluebutton-html5/imports/ui/components/recording/styles.scss
index 494cec75407419aa87ced1ee8b589e9d5dd28683..0b008cd872b20e369b8edab227c5f8342e630936 100755
--- a/bigbluebutton-html5/imports/ui/components/recording/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/recording/styles.scss
@@ -30,7 +30,11 @@
 .button {
   padding-right: var(--jumbo-padding-y);
   padding-left: var(--jumbo-padding-y);
-  margin-right: var(--sm-padding-x);
+  margin: 0 var(--sm-padding-x) 0 0;
+
+  [dir="rtl"] & {
+    margin: 0 0 0 var(--sm-padding-x);
+  }
 }
 
 .description {
diff --git a/bigbluebutton-html5/imports/ui/components/settings/styles.scss b/bigbluebutton-html5/imports/ui/components/settings/styles.scss
index 49722b765171260ae7e967ef98fb452e64ce196f..1c13b8f053705f2aff2e4dab23745a7b4fe6ebe3 100644
--- a/bigbluebutton-html5/imports/ui/components/settings/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/settings/styles.scss
@@ -27,8 +27,12 @@
 }
 
 .icon {
-  margin-right: .5rem;
+  margin: 0 .5rem 0 0;
   font-size: var(--font-size-large);
+
+  [dir="rtl"] & {
+     margin: 0 0 0 .5rem;
+  }
 }
 
 .tabSelector {
@@ -52,10 +56,14 @@
 
   @include mq($small-only) {
     max-width: 100%;
-    margin-right: var(--sm-padding-x);
+    margin: 0 var(--sm-padding-x) 0 0;
     & > .icon {
       display: none;
     }
+
+    [dir="rtl"] & {
+       margin: 0 0 0 var(--sm-padding-x);
+    }
   }
 }
 
@@ -71,13 +79,23 @@
 
 .tabPanel {
   display: none;
-  margin-left: 1rem;
+  margin: 0 0 0 1rem;
   width: calc(100% / 3 * 2);
 
+  [dir="rtl"] & {
+    margin: 0 1rem 0 0;
+  }
+
   @include mq($small-only) {
     width: 100%;
-    margin-left: 0;
-    margin-top: 1rem;
+    margin-left: 1rem;
+    margin-right: inherit;
+
+   [dir="rtl"] & {
+     margin-left: inherit;
+     margin-right: 1rem;
+   }
+
   }
 }
 
diff --git a/bigbluebutton-html5/imports/ui/components/settings/submenus/styles.scss b/bigbluebutton-html5/imports/ui/components/settings/submenus/styles.scss
index 3f11c890dd671be9d86298cb22ec247ad1926efe..801aff676be85f8c7534c2c71fb430c1b706ce62 100644
--- a/bigbluebutton-html5/imports/ui/components/settings/submenus/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/settings/submenus/styles.scss
@@ -31,11 +31,15 @@
   display: flex;
   flex-grow: 1;
   flex-basis: 0;
-  margin-right: 1rem;
 
   &:last-child {
-    margin-right: 0;
-    padding-right: 0.1rem;
+    padding-right: 0;
+    padding-left: 1rem;
+
+    [dir="rtl"] & {
+      padding-right: 0.1rem;
+      padding-left: 0;
+    }
   }
 }
 
@@ -103,7 +107,11 @@
 }
 
 .spacedLeft {
-  margin-left: 1rem;
+  margin: 0 0 0 1rem;
+
+  [dir="rtl"] & {
+    margin: 0 1rem 0 0;
+  }
 }
 
 .swatch {
diff --git a/bigbluebutton-html5/imports/ui/components/shortcut-help/styles.scss b/bigbluebutton-html5/imports/ui/components/shortcut-help/styles.scss
index 53ad63c01c1f102f5e7bf1d7ffd02ed708f92854..553affbff1d4140b4e608f22ff3858fe6c1a9ddd 100644
--- a/bigbluebutton-html5/imports/ui/components/shortcut-help/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/shortcut-help/styles.scss
@@ -12,7 +12,11 @@
 }
 
 .descCell {
-  padding-right: var(--jumbo-padding-x) !important;
+  padding: 0 var(--jumbo-padding-x) !important 0 0;
+
+  [dir="rtl"] & {
+    padding: 0 0 0 var(--jumbo-padding-x) !important;
+  }
 }
 
 .keyCell,
diff --git a/bigbluebutton-html5/imports/ui/components/toast/styles.scss b/bigbluebutton-html5/imports/ui/components/toast/styles.scss
index d1c231283b870bf2c71a2f287abd015226407025..87c738630089ef47fab7fc5aea4cac98fef1ca6e 100755
--- a/bigbluebutton-html5/imports/ui/components/toast/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/toast/styles.scss
@@ -52,14 +52,17 @@
 
 .icon {
   align-self: flex-start;
-  margin-bottom: auto;
-  margin-right: var(--sm-padding-x);
+  margin: 0 var(--sm-padding-x) auto 0;
   width: var(--toast-icon-md);
   height: var(--toast-icon-md);
   border-radius: 50%;
   position: relative;
   flex-shrink: 0;
 
+  [dir="rtl"]  & {
+    margin: 0 0 auto var(--sm-padding-x);
+  }
+
   > i {
     line-height: 0;
     color: inherit;
@@ -126,10 +129,16 @@
   max-width: var(--toast-container-max-width);
   box-sizing: border-box;
   right: var(--jumbo-padding-y);
+  left: auto;
   top: var(--toast-offset);
   max-height: 75vh;
   overflow: hidden;
 
+  [dir="rtl"] & {
+    right: auto;
+    left: var(--jumbo-padding-y);
+  }
+
   @include mq($small-only) {
     width: var(--toast-mobile-width);
   }
@@ -175,13 +184,22 @@
   position: relative;
   font-size: 70%;
   left: var(--toast-offset-sm);
+  
+  [dir="rtl"] & {
+    left: auto;
+    right: var(--toast-offset-sm);
+  }
 
   :global(.animationsEnabled) & {
     transition: .3s ease;
   }
 
   &:before {
-    margin-left: -.4rem;
+    margin: inherit inherit inherit -.4rem;
+
+    [dir="rtl"] & {
+      margin: inherit -.4rem inherit inherit;
+    }
   }
 
   &:hover,
@@ -212,10 +230,17 @@
   position: absolute;
   bottom: 0;
   left: 0;
+  right: auto;
   width: 0;
   height: 5px;
   z-index: 9999;
   animation: track-progress linear 1;
   background-color: var(--color-gray-lighter);
   border-radius: var(--border-radius);
+
+  
+  [dir="rtl"] & {
+    left: auto;
+    right: 0;
+  }
 }
diff --git a/bigbluebutton-html5/imports/ui/components/user-avatar/styles.scss b/bigbluebutton-html5/imports/ui/components/user-avatar/styles.scss
index 0f3a6938be9cc12dd5e6911824a001f371831872..b4ffcd80f635c581cce8ce1639b23fa8c4da8c81 100755
--- a/bigbluebutton-html5/imports/ui/components/user-avatar/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/user-avatar/styles.scss
@@ -32,7 +32,10 @@
     position: absolute;
     width: 0;
     height: 0;
-    padding: .5rem;
+    padding-top: .5rem;
+    padding-right: 0;
+    padding-left: 0;
+    padding-bottom: 0;
     color: inherit;
     top: auto;
     left: auto;
@@ -51,6 +54,13 @@
     letter-spacing: -.65rem;
     z-index: 1;
 
+    [dir="rtl"] & {
+      left: var(--user-indicators-offset);
+      right: auto;
+      padding-right: .65rem;
+      padding-left: 0;
+    }
+
     :global(.animationsEnabled) & {
         transition: .3s ease-in-out;
     }
@@ -114,6 +124,12 @@
     background-color: var(--user-indicator-voice-bg);
     top: 1.375rem;
     left: 1.375rem;
+    right: auto;
+
+    [dir="rtl"] & {
+      left: auto;
+      right: 1.375rem;
+    }
   }
 }
 
diff --git a/bigbluebutton-html5/imports/ui/components/user-list/chat-list-item/styles.scss b/bigbluebutton-html5/imports/ui/components/user-list/chat-list-item/styles.scss
index 172b30a282a6561430406ef0e916faa55fd151b3..3e38d3e900d1a727fa66214ebead257b230986d2 100755
--- a/bigbluebutton-html5/imports/ui/components/user-list/chat-list-item/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/user-list/chat-list-item/styles.scss
@@ -14,9 +14,18 @@
   padding-top: var(--lg-padding-y);
   padding-bottom: var(--lg-padding-y);
   padding-left: var(--lg-padding-y);
+  padding-right: 0;
   margin-left: var(--border-size);
   margin-top: var(--border-size);
   margin-bottom: var(--border-size);
+  margin-right: 0;
+
+  [dir="rtl"] & {
+    padding-left: 0;
+    padding-right: var(--lg-padding-y);
+    margin-left: 0;
+    margin-right: var(--border-size);
+  }
 }
 
 .chatListItemLink {
@@ -47,8 +56,13 @@
   flex-grow: 1;
   line-height: 2;
   text-align: left;
-  padding-left: var(--lg-padding-y);
+  padding: 0 0 0 var(--lg-padding-y);
   text-overflow: ellipsis;
+
+  [dir="rtl"] & {
+    text-align: right;
+    padding: 0 var(--lg-padding-y) 0 0;
+  }
 }
 
 .active {
diff --git a/bigbluebutton-html5/imports/ui/components/user-list/component.jsx b/bigbluebutton-html5/imports/ui/components/user-list/component.jsx
index d472c9e752415ef35a03956b4d23348de42b2bc0..16bc754db8e57698189f5b0b6ce8e5428d1ff4d7 100755
--- a/bigbluebutton-html5/imports/ui/components/user-list/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/user-list/component.jsx
@@ -2,7 +2,7 @@ import React, { PureComponent } from 'react';
 import { injectIntl } from 'react-intl';
 import PropTypes from 'prop-types';
 import injectWbResizeEvent from '/imports/ui/components/presentation/resize-wrapper/component';
-import { styles } from './styles';
+import { styles } from './styles.scss';
 import CustomLogo from './custom-logo/component';
 import UserContentContainer from './user-list-content/container';
 
diff --git a/bigbluebutton-html5/imports/ui/components/user-list/styles.scss b/bigbluebutton-html5/imports/ui/components/user-list/styles.scss
index 0be8600bad348689df36e18c144759cd812b6ced..bda4101dee35211df649652d1cc840ba3b19110b 100755
--- a/bigbluebutton-html5/imports/ui/components/user-list/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/user-list/styles.scss
@@ -47,8 +47,17 @@
   flex-flow: row;
   border-top-left-radius: 5px;
   border-bottom-left-radius: 5px;
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
   cursor: pointer;
 
+  [dir="rtl"] & {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+    border-top-right-radius: 5px;
+    border-bottom-right-radius: 5px;
+  }
+
   &:first-child {
     margin-top: 0;
   }
@@ -89,8 +98,11 @@
 }
 
 .participantsList {
-  padding-left: var(--border-size);
-  padding-bottom: var(--border-size);
+  padding: 0 0 var(--border-size) var(--border-size);
+
+  [dir="rtl"] & {
+    padding: 0 var(--border-size) var(--border-size) 0;
+  }
 }
 
 .participantsList,
diff --git a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/breakout-room/styles.scss b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/breakout-room/styles.scss
index 28a68ff40115562ef10189c28c464250c52518df..6f36c918df222a76cb5253ac5ada74056f865297 100644
--- a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/breakout-room/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/breakout-room/styles.scss
@@ -26,6 +26,11 @@
   font-size: 175%;
   flex-shrink: 1;
   color: var(--user-icons-color);
+
+  [dir="rtl"] & {
+    text-align: left;
+    margin-right: var(--sm-padding-x) / 2;
+  }
 }
 
 .BreakoutRoomsText {
@@ -40,6 +45,11 @@
   text-align: left;
   padding-left: var(--lg-padding-y);
   text-overflow: ellipsis;
+
+  [dir="rtl"] & {
+    text-align: right;
+    padding-right: var(--lg-padding-y);
+  }
 }
 
 .BreakoutRoomsItem {
@@ -48,6 +58,11 @@
   padding-top: var(--lg-padding-y);
   padding-bottom: var(--lg-padding-y);
   padding-left: var(--lg-padding-y);
+
+  [dir="rtl"] & {
+    margin-right: var(--md-padding-y);
+    padding-right: var(--lg-padding-y);
+  }
 }
 
 .link {
diff --git a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/styles.scss b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/styles.scss
index b1d2a7a5610be945cc6ca12e94a028d9bf2c98a0..5f91bb9d2ddb67975a278a29553f53da3c15237c 100755
--- a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/styles.scss
@@ -37,8 +37,11 @@
 }
 
 .list {
-  margin-left: var(--md-padding-y);
-  margin-bottom: 1px;
+  margin: 0 0 1px var(--md-padding-y);
+
+  [dir="rtl"] & {
+    margin: 0 var(--md-padding-y) 1px 0;
+  }
 }
 
 .smallTitle {
diff --git a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-notes/styles.scss b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-notes/styles.scss
index 90e5e416b93f1b8d284feed40562c64fd7cc73c3..1d75013085d9fa74e41c6faa28ffab7320d5b446 100644
--- a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-notes/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-notes/styles.scss
@@ -13,7 +13,11 @@
 }
 
 .scrollableList {
-  margin-left: var(--md-padding-y);
+  margin: 0 0 0 var(--md-padding-y);
+
+  [dir="rtl"] & {
+    margin: 0 var(--md-padding-y) 0 0;
+  }
 }
 
 .noteLink {
@@ -27,11 +31,17 @@
   padding-top: var(--lg-padding-y);
   padding-bottom: var(--lg-padding-y);
   padding-left: var(--lg-padding-y);
+  padding-right: 0;
   text-decoration: none;
   width: 100%;
   color: var(--color-gray-dark);
   background-color: var(--color-off-white);
 
+  [dir="rtl"] & {
+    padding-left: 0;
+    padding-right: var(--lg-padding-y);
+  }
+
   > i {
     display: flex;
     font-size: 175%;
@@ -40,15 +50,22 @@
   }
 
   > span {
-      font-weight: 400;
-      font-size: var(--font-size-small);
-      color: var(--color-gray-dark);
-      position: relative;
-      flex-grow: 1;
-      line-height: 2;
-      text-align: left;
-      padding-left: var(--lg-padding-y);
-      text-overflow: ellipsis;
+    font-weight: 400;
+    font-size: var(--font-size-small);
+    color: var(--color-gray-dark);
+    position: relative;
+    flex-grow: 1;
+    line-height: 2;
+    text-align: left;
+    padding-left: var(--lg-padding-y);
+    padding-right: 0;
+    text-overflow: ellipsis;
+
+    [dir="rtl"] & {
+      text-align: right;
+      padding-left: 0;
+      padding-right: var(--lg-padding-y);
+    }
   }
 
   &:active {
diff --git a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-participants/user-list-item/user-dropdown/styles.scss b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-participants/user-list-item/user-dropdown/styles.scss
index aaa87e897034a19702bff89fa90cac6c956a8aa1..7cd8f4fb93eb6a2ae31e1fd05e3384ef8deab57f 100644
--- a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-participants/user-list-item/user-dropdown/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-participants/user-list-item/user-dropdown/styles.scss
@@ -109,9 +109,11 @@
   display: flex;
   flex-flow: row;
 
-  padding-top: var(--lg-padding-y);
-  padding-bottom: var(--lg-padding-y);
-  padding-left: var(--lg-padding-y);
+  padding: var(--lg-padding-y) 0 var(--lg-padding-y) var(--lg-padding-y);
+
+  [dir="rtl"] & {
+    padding: var(--lg-padding-y) var(--lg-padding-y) var(--lg-padding-y) 0;
+  }
 }
 
 .dropdown {
diff --git a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-participants/user-list-item/user-icons/styles.scss b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-participants/user-list-item/user-icons/styles.scss
index 7d7c4ec5cd5134583bfa6c0022de0c989c1eb31a..523bac770a748dce6ce7688bd36c8d902545f08b 100644
--- a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-participants/user-list-item/user-icons/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-participants/user-list-item/user-icons/styles.scss
@@ -5,7 +5,11 @@
   text-align: center;
   flex-basis: 1rem;
   justify-content: center;
-  margin-left: var(--sm-padding-x) / 2;
+  margin: 0 0 0 var(--sm-padding-x) / 2;
+
+  [dir="rtl"] & {
+    margin: 0 var(--sm-padding-x) / 2 0 0;
+  }
 
   :global(.animationsEnabled) & {
     transition: .3s all;
@@ -16,9 +20,14 @@
   display: flex;
   flex-flow: row;
   justify-content: space-between;
-  margin-left: var(--sm-padding-x) / 2;
+  margin: 0 0 0 var(--sm-padding-x)/2;
   text-align: right;
   font-size: 1rem;
   flex-shrink: 1;
   color: var(--user-icons-color);
+
+  [dir="rtl"] & {
+    margin: 0 var(--sm-padding-x)/2 0 0;
+    text-align: left;
+  }
 }
diff --git a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-participants/user-list-item/user-name/styles.scss b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-participants/user-list-item/user-name/styles.scss
index 94d8cecc2b9aaf16196ac0165ba94907ea120d78..74bc71c0dede67bab96be8a4f3e404c7d42e9891 100755
--- a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-participants/user-list-item/user-name/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-participants/user-list-item/user-name/styles.scss
@@ -4,9 +4,13 @@
   @extend %flex-column;
   min-width: 0;
   flex-grow: 1;
-  margin-left: var(--sm-padding-x);
+  margin: 0 0 0 var(--sm-padding-x);
   justify-content: center;
   font-size: 0.95rem;
+
+  [dir="rtl"]  & {
+    margin: 0 var(--sm-padding-x) 0 0;
+  }
 }
 
 .userNameMain {
diff --git a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-participants/user-options/styles.scss b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-participants/user-options/styles.scss
index 9f8d1d3afdf4796084e0ae9d340040e348d82778..2f7a0dc89bacdbf9e24365c057bb151cd6c65362 100755
--- a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-participants/user-options/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-participants/user-options/styles.scss
@@ -9,13 +9,25 @@
 .dropdown {
   position: absolute;
   right: 0;
+  left: auto;
+
+  [dir="rtl"] & {
+    left: 0;
+    right: auto;
+  }
 }
 
 .dropdownContent {
   top: var(--user-manage-menu-top);
   right: var(--user-manage-menu-right);
+  left: auto;
   width: var(--user-manage-menu-width);
 
+  [dir="rtl"] & {
+    top: var(--user-manage-menu-top);
+    right: -1rem;
+  }
+
   @include mq($small-only) {
     width: 100vw;
   }
diff --git a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-polls/styles.scss b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-polls/styles.scss
index 556abad6d604fc374725a85639c851f461323a7e..cf4b74743f3e82b83efb8e3d25ed47ce10245b0e 100644
--- a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-polls/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/user-polls/styles.scss
@@ -15,8 +15,11 @@ $item-focus-border: #92BCEA;
 }
 
 .scrollableList {
-    margin-left: 0.45rem;
-    margin-bottom: 1px;
+    margin: 0 0 1px 0.45rem;
+
+    [dir="rtl"] & {
+        margin: 0 0.45rem 1px 0;
+    }
 }
 
 .pollLink {
@@ -29,11 +32,17 @@ $item-focus-border: #92BCEA;
     padding-top: var(--lg-padding-y);
     padding-bottom: var(--lg-padding-y);
     padding-left: var(--lg-padding-y);
+    padding-right: 0;
     text-decoration: none;
     width: 100%;
     color: var(--color-gray-dark);
     background-color: var(--color-off-white);
 
+    [dir="rtl"] & {
+        padding-left: 0;
+        padding-right: var(--lg-padding-y);
+    }
+
     > i {
         display: flex;
         font-size: 175%;
@@ -49,8 +58,13 @@ $item-focus-border: #92BCEA;
         flex-grow: 1;
         line-height: 2;
         text-align: left;
-        padding-left: var(--lg-padding-y);
+        padding: 0 0 0 var(--lg-padding-y);
         text-overflow: ellipsis;
+
+        [dir="rtl"] & {
+            text-align: right;
+            padding: 0 var(--lg-padding-y) 0 0;
+        }
     }
 
     &:active {
diff --git a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/waiting-users/styles.scss b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/waiting-users/styles.scss
index e169ad43151610deec5767056ecd9194be388e16..703a77bb77c3c9781b21722efef20a56b7dbbc99 100644
--- a/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/waiting-users/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/user-list/user-list-content/waiting-users/styles.scss
@@ -21,9 +21,12 @@
 }
 
 .scrollableList {
-  margin-left: 0.45rem;
-  margin-bottom: 1px;
+  margin: 0 0 1px 0.45rem;
   outline: none;
+
+  [dir="rtl"] & {
+    margin: 0 0.45rem 1px 0;
+  }
 }
 
 .noteLink {
@@ -37,11 +40,17 @@
   padding-top: var(--lg-padding-y);
   padding-bottom: var(--lg-padding-y);
   padding-left: var(--lg-padding-y);
+  padding-right: 0;
   text-decoration: none;
   width: 100%;
   color: var(--color-gray-dark);
   background-color: var(--color-off-white);
 
+  [dir="rtl"] & {
+    padding-left: 0;
+    padding-right: var(--lg-padding-y);
+  }
+
   > i {
     display: flex;
     font-size: 175%;
@@ -50,15 +59,20 @@
   }
 
   > span {
-      font-size: 0.9rem;
-      font-weight: 400;
-      color: black;
-      position: relative;
-      flex-grow: 1;
-      line-height: 2;
-      text-align: left;
-      padding-left: var(--lg-padding-y);
-      text-overflow: ellipsis;
+    font-size: 0.9rem;
+    font-weight: 400;
+    color: black;
+    position: relative;
+    flex-grow: 1;
+    line-height: 2;
+    text-align: left;
+    padding: 0 0 0 var(--lg-padding-y);
+    text-overflow: ellipsis;
+
+    [dir="rtl"] & {
+      text-align: right;
+      padding: 0 var(--lg-padding-y) 0 0;
+    }
   }
 
   &:active {
diff --git a/bigbluebutton-html5/imports/ui/components/video-preview/styles.scss b/bigbluebutton-html5/imports/ui/components/video-preview/styles.scss
index e77914ac4790e2bca7234b546da36ad9f1365103..061c3e6aa05e6c8df3a96874d2c072368160a402 100755
--- a/bigbluebutton-html5/imports/ui/components/video-preview/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/video-preview/styles.scss
@@ -6,8 +6,20 @@
   margin-left: auto;
   margin-right: 3px;
 
+
+  [dir="rtl"] & {
+    margin-right: auto;
+    margin-left: 3px;
+  }
+
   :first-child {
     margin-right: 3px;
+    margin-left: inherit;
+
+    [dir="rtl"] & {
+      margin-right: inherit;
+      margin-left: 3px;
+    }
   }
 }
 
@@ -15,16 +27,27 @@
   i {
     color: var(--color-gray-light);
   }
+
   margin-left: auto;
+  margin-right: 0;
+
+  [dir="rtl"] & {
+    margin-left: 0;
+    margin-right: auto;
+  }
 }
 
 .col {
   display: flex;
   flex-direction: column;
   height: 100%;
-  margin-right: 1.5rem;
+  margin: 0 1.5rem 0 0;
   justify-content: center;
 
+  [dir="rtl"] & {
+    margin: 0 0 0 1.5rem;
+  }
+
   //width: 50%;
   @include mq($small-only) {
     width: 100%;
diff --git a/bigbluebutton-html5/imports/ui/components/video-provider/fullscreen-button/styles.scss b/bigbluebutton-html5/imports/ui/components/video-provider/fullscreen-button/styles.scss
index e73901640e385eaa78973258c39238e5af9e19e9..c86eda215b58b3cddb9d4dfea1196562a2939c2c 100644
--- a/bigbluebutton-html5/imports/ui/components/video-provider/fullscreen-button/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/video-provider/fullscreen-button/styles.scss
@@ -9,10 +9,16 @@
 .wrapper {
   position: absolute;
   right: 0;
+  left: auto;
   background-color: var(--color-transparent);
   cursor: pointer;
   border: none !important;
 
+  [dir="rtl"] & {
+    right: auto;
+    left :0;
+  }
+
   [class*="presentationZoomControls"] & {
     position: relative !important;
   }
diff --git a/bigbluebutton-html5/imports/ui/components/video-provider/video-list/styles.scss b/bigbluebutton-html5/imports/ui/components/video-provider/video-list/styles.scss
index 0333ed376ae69e7554c832faaa9bb00ea465bcf8..4527df146ab4aa409963a400bc589529b4483e35 100755
--- a/bigbluebutton-html5/imports/ui/components/video-provider/video-list/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/video-provider/video-list/styles.scss
@@ -94,7 +94,11 @@
     display: inline-block;
     height: 100%;
     vertical-align: middle;
-    margin-right: -0.25em;
+    margin:0 -0.25em 0 0;
+
+    [dir="rtl"] & {
+      margin: 0 0 0 -0.25em
+    }
   }
 
   &::before {
@@ -172,6 +176,10 @@
 
 .dropdownContent {
   min-width: 8.5rem;
+  
+  [dir="rtl"] & {
+    right: 2rem;
+  }
 }
 
 .dropdownList {
diff --git a/bigbluebutton-html5/imports/ui/components/waiting-users/styles.scss b/bigbluebutton-html5/imports/ui/components/waiting-users/styles.scss
index f2ce795605e8867820b06f31f5c57fbb35c4203a..c5980f39186ed7d2318ffa28d027df83eda6ad19 100644
--- a/bigbluebutton-html5/imports/ui/components/waiting-users/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/waiting-users/styles.scss
@@ -19,10 +19,13 @@
 
   a {
     @include elementFocus(var(--color-primary));
-    padding-bottom: var(--sm-padding-y);
-    padding-left: var(--sm-padding-y);
+    padding: 0 0 var(--sm-padding-y) var(--sm-padding-y);
     text-decoration: none;
     display: block;
+
+    [dir="rtl"] & {
+      padding: 0 var(--sm-padding-y) var(--sm-padding-y) 0;
+    }
   }
 
   [class^="icon-bbb-"],
@@ -48,7 +51,13 @@
   display: block;
   margin: 4px;
   margin-bottom: 2px;
-  padding-left: 0px;
+  padding-left: 0;
+  padding-right: inherit;
+
+  [dir="rtl"] & {
+    padding-left: inherit;
+    padding-right: 0;
+  }
 
   > i {
     color: black;
@@ -154,5 +163,10 @@
     padding: 0;
     margin: 0;
     margin-left: .5rem;
+
+    [dir="rtl"] & {
+      margin: 0;
+      margin-right: .5rem;
+    }
   }
 }
\ No newline at end of file
diff --git a/bigbluebutton-html5/imports/ui/components/whiteboard/whiteboard-toolbar/styles.scss b/bigbluebutton-html5/imports/ui/components/whiteboard/whiteboard-toolbar/styles.scss
index 367d5355e4f3333904c115c70076ce8cb308620b..f15472d921727addede5aabda9e4448e414fcc1f 100644
--- a/bigbluebutton-html5/imports/ui/components/whiteboard/whiteboard-toolbar/styles.scss
+++ b/bigbluebutton-html5/imports/ui/components/whiteboard/whiteboard-toolbar/styles.scss
@@ -4,7 +4,7 @@
   --toolbar-margin: .8rem;
   --toolbar-box-shadow: 0 0 10px -2px rgba(0, 0, 0, .25);
   --toolbar-button-color: var(--btn-default-color);
-  --toolbar-button-bg: var(--btn-default-bg);  
+  --toolbar-button-bg: var(--btn-default-bg);
   --toolbar-button-width: 3rem;
   --toolbar-button-height: 3rem;
   --toolbar-button-font-size: 1.75rem;
@@ -21,13 +21,20 @@
   display: flex;
   flex-direction: column;
   justify-content: center;
-  margin-right: var(--toolbar-margin);
+  margin: 0 var(--toolbar-margin) 0 0;
   position: absolute;
   top: 0;
   right: 0;
+  left: auto;
   bottom: 0;
   pointer-events: none;
 
+  [dir="rtl"] & {
+    margin: 0 0 0 var(--toolbar-margin);
+    right: auto;
+    left: 0;
+  }
+
   @include mq("#{$landscape} and (max-height:#{upper-bound($small-range)}), #{$small-only}") {
     transform: scale(.75);
     transform-origin: right;
@@ -55,6 +62,12 @@
 
     &.toolbarActive {
       border-top-left-radius: 0;
+      border-top-right-radius: var(--toolbar-button-border-radius);
+
+      [dir="rtl"] & {
+        border-top-left-radius: var(--toolbar-button-border-radius);
+        border-top-right-radius: 0;
+      }
     }
   }
 
@@ -65,6 +78,12 @@
 
     &.toolbarActive {
       border-bottom-left-radius: 0;
+      border-top-right-radius: var(--toolbar-button-border-radius);
+
+      [dir="rtl"] & {
+        border-bottom-left-radius: var(--toolbar-button-border-radius);
+        border-top-right-radius: 0;
+      }
     }
   }
 }
@@ -85,7 +104,7 @@
   display: flex;
   flex-direction: row;
   align-items: center !important;
-  justify-content: center !important;  
+  justify-content: center !important;
   position: relative;
   border-radius: 0;
   box-shadow: none !important;
@@ -121,12 +140,27 @@
   height: var(--toolbar-button-height);
   position: absolute;
   right: var(--toolbar-button-height);
+  left: auto;
   top: 0;
   box-shadow: var(--toolbar-box-shadow);
 
+  [dir="rtl"] & {
+    right: auto;
+    left: var(--toolbar-button-height);
+  }
+
   .buttonWrapper:first-child > .toolbarListButton {
     border-top-left-radius: var(--toolbar-button-border-radius);
     border-bottom-left-radius: var(--toolbar-button-border-radius);
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+
+    [dir="rtl"] & {
+      border-top-left-radius: 0;
+      border-bottom-left-radius: 0;
+      border-top-right-radius: var(--toolbar-button-border-radius);
+      border-bottom-right-radius: var(--toolbar-button-border-radius);
+    }
   }
 }
 
diff --git a/bigbluebutton-html5/imports/ui/stylesheets/mixins/_indicators.scss b/bigbluebutton-html5/imports/ui/stylesheets/mixins/_indicators.scss
index cc81582d7aa09fe0a25521c53203d316642c847e..b57a542eb42a4399ee595d4676077efee9dfede1 100644
--- a/bigbluebutton-html5/imports/ui/stylesheets/mixins/_indicators.scss
+++ b/bigbluebutton-html5/imports/ui/stylesheets/mixins/_indicators.scss
@@ -10,6 +10,12 @@
     right: auto;
     border-radius: 5px;
     background-color: var(--color-primary);
+
+    [dir="rtl"] & {
+      left: auto;
+      right: var(--user-indicators-offset);
+      letter-spacing: -.33rem;
+    }
   }
 
   :global(.browser-chrome) &:before,
@@ -22,6 +28,11 @@
     padding-left: var(--indicator-padding-left);
     padding-right: var(--indicator-padding-right);
     padding-bottom: var(--indicator-padding-bottom);
+
+    [dir="rtl"] & {
+      padding-right: var(--indicator-padding-left);
+      padding-left: var(--indicator-padding-right);
+    }
   }
 }
 
diff --git a/bigbluebutton-html5/private/locales/ar.json b/bigbluebutton-html5/private/locales/ar.json
index a36090e26df4862e38bfc7a8b1f3f5809f7899cc..de45d08e1a1fb6352fb4fe435ed21a4bbfe74bcc 100644
--- a/bigbluebutton-html5/private/locales/ar.json
+++ b/bigbluebutton-html5/private/locales/ar.json
@@ -596,6 +596,4 @@
     "app.iOSWarning.label": "يرجى الترقية إلى iOS 12.2 أو اعلى",
     "app.legacy.unsupportedBrowser": "يبدو انك تستخدم مستعرضا غير معتمد. الرجاء استخدام {0} أو {1} للحصول علي الدعم الكامل.",
     "app.legacy.upgradeBrowser": "يبدو انك تستخدم إصدارا قديما من مستعرض معتمد. الرجاء ترقيه المتصفح للحصول علي الدعم الكامل."
-
 }
-
diff --git a/bigbluebutton-html5/private/locales/en.json b/bigbluebutton-html5/private/locales/en.json
index 0f061cecc4a1a1a10279e40e8c0f231402ebf920..d2271284eb152e39fa32219049c6ea392acce563 100755
--- a/bigbluebutton-html5/private/locales/en.json
+++ b/bigbluebutton-html5/private/locales/en.json
@@ -401,6 +401,10 @@
     "app.meeting.logout.userInactivityEjectReason": "User inactive for too long",
     "app.meeting-ended.rating.legendLabel": "Feedback rating",
     "app.meeting-ended.rating.starLabel": "Star",
+    "app.modal.close": "Close",
+    "app.modal.close.description": "Disregards changes and closes the modal",
+    "app.modal.confirm": "Done",
+    "app.modal.confirm.description": "Saves changes and closes the modal",
     "app.dropdown.close": "Close",
     "app.error.400": "Bad Request",
     "app.error.401": "Unauthorized",