Bug 1270622 - Land version 1.3.2 of the Loop system add-on in mozilla-central, rs=standard8 for already reviewed code. a=lizzard
authorMark Banner <standard8@mozilla.com>
Thu, 05 May 2016 21:18:35 +0100
changeset 332856 967d8df94b1b3977f2baeb830a9b645fd68d4c2f
parent 332855 ef3f13b55fcce0f5d2a8c1c16d3f3c5c76499058
child 332857 2e36dd3e959436e23447a4a4b473eae5c7ef657e
push id6048
push userkmoir@mozilla.com
push dateMon, 06 Jun 2016 19:02:08 +0000
treeherdermozilla-beta@46d72a56c57d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersstandard8, lizzard
bugs1270622
milestone48.0a2
Bug 1270622 - Land version 1.3.2 of the Loop system add-on in mozilla-central, rs=standard8 for already reviewed code. a=lizzard
browser/extensions/loop/bootstrap.js
browser/extensions/loop/chrome/content/modules/MozLoopAPI.jsm
browser/extensions/loop/chrome/content/modules/MozLoopService.jsm
browser/extensions/loop/chrome/content/panels/js/feedbackViews.js
browser/extensions/loop/chrome/content/panels/test/feedbackViews_test.js
browser/extensions/loop/chrome/content/preferences/prefs.js
browser/extensions/loop/chrome/locale/da/loop.properties
browser/extensions/loop/chrome/locale/en-GB/loop.properties
browser/extensions/loop/chrome/locale/es-AR/loop.properties
browser/extensions/loop/chrome/locale/es-MX/loop.properties
browser/extensions/loop/chrome/locale/et/loop.properties
browser/extensions/loop/chrome/locale/fi/loop.properties
browser/extensions/loop/chrome/locale/hy-AM/loop.properties
browser/extensions/loop/chrome/locale/jar.mn
browser/extensions/loop/chrome/locale/lv/loop.properties
browser/extensions/loop/chrome/locale/nb-NO/loop.properties
browser/extensions/loop/chrome/locale/nn-NO/loop.properties
browser/extensions/loop/chrome/locale/si/loop.properties
browser/extensions/loop/chrome/locale/sk/loop.properties
browser/extensions/loop/chrome/locale/sl/loop.properties
browser/extensions/loop/chrome/locale/sr/loop.properties
browser/extensions/loop/chrome/locale/tr/loop.properties
browser/extensions/loop/chrome/test/mochitest/browser_copypanel.js
browser/extensions/loop/chrome/test/mochitest/browser_throttler.js
browser/extensions/loop/install.rdf.in
--- a/browser/extensions/loop/bootstrap.js
+++ b/browser/extensions/loop/bootstrap.js
@@ -386,19 +386,20 @@ var WindowListener = {
       },
 
       /**
        * Maybe add the copy panel if it's not throttled and passes other checks.
        * @return {Promise} Resolved when decided and maybe panel-added.
        */
       maybeAddCopyPanel() {
         // Don't bother adding the copy panel if we're in private browsing or
-        // we've already shown it.
+        // the user wants to never see it again or we've shown it enough times.
         if (PrivateBrowsingUtils.isWindowPrivate(window) ||
-            Services.prefs.getBoolPref("loop.copy.shown")) {
+            Services.prefs.getBoolPref("loop.copy.shown") ||
+            Services.prefs.getIntPref("loop.copy.showLimit") <= 0) {
           return Promise.resolve();
         }
 
         return Throttler.check("loop.copy").then(() => this.addCopyPanel());
       },
 
       /**
        * Hook into the location bar copy command to open up the copy panel.
@@ -464,18 +465,33 @@ var WindowListener = {
 
         // Override the default behavior of the copy command.
         let controller = gURLBar._copyCutController;
         controller._doCommand = controller.doCommand;
         controller.doCommand = () => {
           // Do the normal behavior first.
           controller._doCommand.apply(controller, arguments);
 
+          // Remove the panel if the user has seen it enough times.
+          let showLimit = Services.prefs.getIntPref("loop.copy.showLimit");
+          if (showLimit <= 0) {
+            LoopUI.removeCopyPanel();
+            return;
+          }
+
+          // Don't bother prompting the user if already sharing.
+          if (this.MozLoopService.screenShareActive) {
+            return;
+          }
+
+          // Update various counters.
+          Services.prefs.setIntPref("loop.copy.showLimit", showLimit - 1);
+          addTelemetry("SHOWN");
+
           // Open up the copy panel at the loop button.
-          addTelemetry("SHOWN");
           LoopUI.PanelFrame.showPopup(window, LoopUI.toolbarButton.anchor, "loop-copy",
             null, "chrome://loop/content/panels/copy.html", null, onIframe);
         };
       },
 
       /**
        * Removes the copy panel copy hook and the panel.
        */
@@ -1232,33 +1248,45 @@ let Throttler = {
       // Short circuit if the special ticket value indicates we're good to go.
       else if (ticket >= this.TICKET_LIMIT) {
         resolve();
         return;
       }
 
       // Handle responses from the DNS resolution service request.
       let onDNS = (request, record) => {
+        // Failed to get A-record, so skip for now.
+        if (record === null) {
+          reject();
+          return;
+        }
+
+        // Ensure we have a special loopback value before checking other blocks.
+        let ipBlocks = record.getNextAddrAsString().split(".");
+        if (ipBlocks[0] !== "127") {
+          reject();
+          return;
+        }
+
         // Use a specific part of the A-record IP address depending on the
         // channel. I.e., 127.[release/other].[beta].[aurora/nightly].
         let index = 1;
         switch (Services.prefs.getCharPref("app.update.channel")) {
           case "beta":
             index = 2;
             break;
           case "aurora":
           case "nightly":
             index = 3;
             break;
         }
 
         // Select the 1 out of 4 parts of the "."-separated IP address to check
         // if the 8-bit threshold (0-255) exceeds the ticket (0-254).
-        let threshold = record && record.getNextAddrAsString().split(".")[index];
-        if (threshold && ticket < threshold) {
+        if (ticket < ipBlocks[index]) {
           // Remember that we're good to go to avoid future DNS checks.
           Services.prefs.setIntPref(prefTicket, this.TICKET_LIMIT);
           resolve();
         }
         else {
           reject();
         }
       };
--- a/browser/extensions/loop/chrome/content/modules/MozLoopAPI.jsm
+++ b/browser/extensions/loop/chrome/content/modules/MozLoopAPI.jsm
@@ -595,16 +595,32 @@ const kMessageHandlers = {
    * @param {Function} reply   Callback function, invoked with the result of this
    *                           message handler. The result will be sent back to
    *                           the senders' channel.
    * @returns {String} The locale string
    */
   GetLocale: function(message, reply) {
     reply(MozLoopService.locale);
   },
+
+  /**
+   * Returns the version number for the addon.
+   *
+   * @param {Object}   message Message meant for the handler function, containing
+   *                           the following parameters in its `data` property:
+   *                           [ ]
+   * @param {Function} reply   Callback function, invoked with the result of this
+   *                           message handler. The result will be sent back to
+   *                           the senders' channel.
+   * @returns {String} Addon Version string.
+   */
+  GetAddonVersion: function(message, reply) {
+    reply(MozLoopService.addonVersion);
+  },
+
   /**
    * Return any preference under "loop.".
    * Any errors thrown by the Mozilla pref API are logged to the console
    * and cause null to be returned. This includes the case of the preference
    * not being found.
    *
    * @param {Object}   message Message meant for the handler function, containing
    *                           the following parameters in its `data` property:
--- a/browser/extensions/loop/chrome/content/modules/MozLoopService.jsm
+++ b/browser/extensions/loop/chrome/content/modules/MozLoopService.jsm
@@ -1587,16 +1587,28 @@ this.MozLoopService = {
       log.error("No string found for key: ", key);
       return "";
     }
 
     return JSON.stringify({ textContent: stringData.get(key) });
   },
 
   /**
+   * Returns the addon version
+   *
+   * @return {String} A string containing the Addon Version
+   */
+  get addonVersion() {
+    // remove "alpha", "beta" or any non numeric appended to the version string
+    let numericAddonVersion = gAddonVersion.replace(/[^0-9\.]/g, "");
+    return numericAddonVersion;
+  },
+
+  /**
+   *
    * Returns a new GUID (UUID) in curly braces format.
    */
   generateUUID: function() {
     return uuidgen.generateUUID().toString();
   },
 
   /**
    * Retrieves MozLoopService "do not disturb" value.
--- a/browser/extensions/loop/chrome/content/panels/js/feedbackViews.js
+++ b/browser/extensions/loop/chrome/content/panels/js/feedbackViews.js
@@ -18,18 +18,21 @@ loop.feedbackViews = function (_, mozL10
       onAfterFeedbackReceived: React.PropTypes.func.isRequired
     },
 
     /**
      * Pressing the button to leave feedback will open the form in a new page
      * and close the conversation window.
      */
     onFeedbackButtonClick: function () {
-      loop.request("GetLoopPref", "feedback.formURL").then(function (url) {
-        loop.request("OpenURL", url).then(this.props.onAfterFeedbackReceived);
+      loop.requestMulti(["GetLoopPref", "feedback.formURL"], ["GetAddonVersion"]).then(function (results) {
+        if (results[0] && results[1]) {
+          var finalURL = results[0].replace("%APP_VERSION%", results[1]);
+          loop.request("OpenURL", finalURL).then(this.props.onAfterFeedbackReceived);
+        }
       }.bind(this));
     },
 
     render: function () {
       return React.createElement(
         "div",
         { className: "feedback-view-container" },
         React.createElement(
--- a/browser/extensions/loop/chrome/content/panels/test/feedbackViews_test.js
+++ b/browser/extensions/loop/chrome/content/panels/test/feedbackViews_test.js
@@ -17,36 +17,40 @@ describe("loop.feedbackViews", function(
     });
   });
 
   afterEach(function() {
     sandbox.restore();
   });
 
   describe("FeedbackView", function() {
-    var openURLStub, getLoopPrefStub, feedbackReceivedStub;
-    var fakeURL = "fake.form", view;
+    var openURLStub, getLoopPrefStub, feedbackReceivedStub, getAddonVersionStub;
+    var view;
+    var fakeURL = "fake.form?version=";
+    var addonVersion = "1.3.0";
 
     function mountTestComponent(props) {
       props = _.extend({
         onAfterFeedbackReceived: feedbackReceivedStub
       }, props);
 
       return TestUtils.renderIntoDocument(
         React.createElement(FeedbackView, props));
     }
 
     beforeEach(function() {
       openURLStub = sandbox.stub();
       getLoopPrefStub = sandbox.stub();
       feedbackReceivedStub = sandbox.stub();
+      getAddonVersionStub = sandbox.stub();
 
       LoopMochaUtils.stubLoopRequest({
         OpenURL: openURLStub,
-        GetLoopPref: getLoopPrefStub
+        GetLoopPref: getLoopPrefStub,
+        GetAddonVersion: getAddonVersionStub
       });
     });
 
     afterEach(function() {
       view = null;
       LoopMochaUtils.restore();
     });
 
@@ -65,35 +69,50 @@ describe("loop.feedbackViews", function(
     it("should render a header with correct text", function() {
       view = mountTestComponent();
 
       sinon.assert.calledWithExactly(mozL10nGet, "feedback_window_heading");
     });
 
     it("should open a new page to the feedback form", function() {
       getLoopPrefStub.withArgs("feedback.formURL").returns(fakeURL);
+      getAddonVersionStub.returns(addonVersion);
       view = mountTestComponent();
 
       TestUtils.Simulate.click(view.refs.feedbackFormBtn.getDOMNode());
 
       sinon.assert.calledOnce(openURLStub);
       sinon.assert.calledWithExactly(openURLStub, fakeURL);
     });
 
     it("should fetch the feedback form URL from the prefs", function() {
       getLoopPrefStub.withArgs("feedback.formURL").returns(fakeURL);
+      getAddonVersionStub.returns(addonVersion);
       view = mountTestComponent();
 
       TestUtils.Simulate.click(view.refs.feedbackFormBtn.getDOMNode());
 
       sinon.assert.calledOnce(getLoopPrefStub);
       sinon.assert.calledWithExactly(getLoopPrefStub, "feedback.formURL");
     });
 
+    it("should fetch the addon version", function() {
+      getLoopPrefStub.withArgs("feedback.formURL").returns(fakeURL);
+      getAddonVersionStub.returns(addonVersion);
+      view = mountTestComponent();
+
+      TestUtils.Simulate.click(view.refs.feedbackFormBtn.getDOMNode());
+
+      sinon.assert.calledOnce(getAddonVersionStub);
+      sinon.assert.calledWithExactly(getAddonVersionStub);
+    });
+
     it("should close the window after opening the form", function() {
+      getLoopPrefStub.withArgs("feedback.formURL").returns(fakeURL);
+      getAddonVersionStub.returns(addonVersion);
       view = mountTestComponent();
 
       TestUtils.Simulate.click(view.refs.feedbackFormBtn.getDOMNode());
 
       sinon.assert.calledOnce(feedbackReceivedStub);
     });
   });
 });
--- a/browser/extensions/loop/chrome/content/preferences/prefs.js
+++ b/browser/extensions/loop/chrome/content/preferences/prefs.js
@@ -12,26 +12,27 @@ pref("loop.gettingStarted.url", "https:/
 pref("loop.gettingStarted.resumeOnFirstJoin", false);
 pref("loop.legal.ToS_url", "https://www.mozilla.org/about/legal/terms/firefox-hello/");
 pref("loop.legal.privacy_url", "https://www.mozilla.org/privacy/firefox-hello/");
 pref("loop.do_not_disturb", false);
 pref("loop.retry_delay.start", 60000);
 pref("loop.retry_delay.limit", 300000);
 pref("loop.ping.interval", 1800000);
 pref("loop.ping.timeout", 10000);
+pref("loop.copy.showLimit", 3);
 pref("loop.copy.shown", false);
 pref("loop.copy.throttler", "copy.loop.services.mozilla.com");
 pref("loop.copy.ticket", -1);
 pref("loop.debug.loglevel", "Error");
 pref("loop.debug.dispatcher", false);
 pref("loop.debug.sdk", false);
 pref("loop.debug.twoWayMediaTelemetry", false);
 pref("loop.feedback.dateLastSeenSec", 0);
 pref("loop.feedback.periodSec", 15770000); // 6 months.
-pref("loop.feedback.formURL", "https://www.surveygizmo.com/s3/2651383/Firefox-Hello-Product-Survey-II");
+pref("loop.feedback.formURL", "https://www.surveygizmo.com/s3/2651383/Firefox-Hello-Product-Survey-II?version=%APP_VERSION%");
 pref("loop.feedback.manualFormURL", "https://www.mozilla.org/firefox/hello/feedbacksurvey/");
 pref("loop.logDomains", false);
 pref("loop.mau.openPanel", 0);
 pref("loop.mau.openConversation", 0);
 pref("loop.mau.roomOpen", 0);
 pref("loop.mau.roomShare", 0);
 pref("loop.mau.roomDelete", 0);
 #ifdef DEBUG
--- a/browser/extensions/loop/chrome/locale/da/loop.properties
+++ b/browser/extensions/loop/chrome/locale/da/loop.properties
@@ -198,16 +198,18 @@ door_hanger_return2=Du kan vendte tilbage til denne delte session når som helst via Hello-panelet. Vil du give den et navn, der er nemmere at huske?
 door_hanger_current=Nuværende navn:
 door_hanger_button2=OK!
 
 # Infobar strings
 
 infobar_screenshare_no_guest_message=Lige så snart din ven deltager, vil hun kunne se de faneblade, du klikker på.
 infobar_screenshare_browser_message2=Du deler dine faneblade. Når du klikker på et faneblad kan dine venner se det
 infobar_screenshare_browser_message3=Du deler nu dine faneblade. Din ven vil kunne se de faneblade, du klikker på.
+infobar_screenshare_stop_sharing_message2=Du deler ikke længere dine faneblade.
+infobar_screenshare_stop_no_guest_message=Du er holdt op med at dele dine faneblade. Når din ven tilslutter sig kan hun/han ikke se noget indtil du begynder at dele igen.
 infobar_button_restart_label2=Genstart deling
 infobar_button_restart_accesskey=e
 infobar_button_stop_label2=Stop med at dele
 infobar_button_stop_accesskey=S
 infobar_button_disconnect_label=Afbryd
 infobar_button_disconnect_accesskey=A
 
 # Copy panel strings
--- a/browser/extensions/loop/chrome/locale/en-GB/loop.properties
+++ b/browser/extensions/loop/chrome/locale/en-GB/loop.properties
@@ -198,16 +198,18 @@ door_hanger_return2=You can return to this shared session at any time through the Hello panel. Would you like to give it a name that’s easier to remember?
 door_hanger_current=Current name:
 door_hanger_button2=OK!
 
 # Infobar strings
 
 infobar_screenshare_no_guest_message=As soon as your friend joins, they will be able to see any tab you click on.
 infobar_screenshare_browser_message2=You are sharing your tabs. Any tab you click on can be seen by your friends
 infobar_screenshare_browser_message3=You are now sharing your tabs. Your friend will see any tab you click on.
+infobar_screenshare_stop_sharing_message2=You are no longer sharing your tabs.
+infobar_screenshare_stop_no_guest_message=You have stopped sharing your tabs. When your friend joins, they won't be able to see anything until you restart sharing.
 infobar_button_restart_label2=Restart sharing
 infobar_button_restart_accesskey=e
 infobar_button_stop_label2=Stop sharing
 infobar_button_stop_accesskey=S
 infobar_button_disconnect_label=Disconnect
 infobar_button_disconnect_accesskey=D
 
 # Copy panel strings
new file mode 100644
--- /dev/null
+++ b/browser/extensions/loop/chrome/locale/es-AR/loop.properties
@@ -0,0 +1,112 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Panel Strings
+
+## LOCALIZATION_NOTE(loopMenuItem_label): Label of the menu item that is placed
+## inside the browser 'Tools' menu. Use the unicode ellipsis char, \u2026, or
+## use "..." if \u2026 doesn't suit traditions in your locale.
+
+## LOCALIZATION_NOTE(sign_in_again_title_line_one, sign_in_again_title_line_two2):
+## These are displayed together at the top of the panel when a user is needed to
+## sign-in again. The emphesis is on the first line to get the user to sign-in again,
+## and this is displayed in slightly larger font. Please arrange as necessary for
+## your locale.
+## {{clientShortname2}} will be replaced by the brand name for either string.
+## LOCALIZATION_NOTE(sign_in_again_use_as_guest_button2): {{clientSuperShortname}}
+## will be replaced by the super short brandname.
+
+
+## LOCALIZATION_NOTE(first_time_experience_subheading2, first_time_experience_subheading_button_above): Message inviting the
+## user to create his or her first conversation.
+
+## LOCALIZATION_NOTE(first_time_experience_content, first_time_experience_content2): Message describing
+## ways to use Hello project.
+
+## First Time Experience Slides
+## LOCALIZATION_NOTE(fte_slide_1_copy): {{clientShortname2}}
+## will be replaced by the short name 2.
+## LOCALIZATION_NOTE(fte_slide_2_copy2): {{clientShortname2}}
+## will be replaced by the short name 2.
+## LOCALIZATION_NOTE(fte_slide_3_copy): {{clientSuperShortname}}
+## will be replaced by the super short brand name.
+## LOCALIZATION_NOTE(fte_slide_4_title): {{clientSuperShortname}}
+## will be replaced by the super short brand name.
+## LOCALIZATION_NOTE(fte_slide_4_copy): {{brandShortname}}
+## will be replaced by the brand short name.
+
+## LOCALIZATION_NOTE(invite_copy_link_button, invite_copied_link_button,
+## invite_email_link_button, invite_facebook_button2): These labels appear under
+## an iconic button for the invite view.
+
+# Error bars
+## LOCALIZATION NOTE(session_expired_error_description,could_not_authenticate,password_changed_question,try_again_later,could_not_connect,check_internet_connection,login_expired,service_not_available,problem_accessing_account):
+## These may be displayed at the top of the panel.
+
+## LOCALIZATION NOTE(retry_button): Displayed when there is an error to retry
+## the appropriate action.
+
+## LOCALIZATION NOTE (share_email_body7): In this item, don't translate the
+## part between {{..}} and leave the \n\n part alone
+## LOCALIZATION NOTE (share_email_body_context3): In this item, don't translate
+## the part between {{..}} and leave the \n\n part alone.
+## LOCALIZATION NOTE (share_email_footer2): Common footer content for both email types
+## LOCALIZATION NOTE (share_tweeet): In this item, don't translate the part
+## between {{..}}. Please keep the text below 117 characters to make sure it fits
+## in a tweet.
+
+
+## LOCALIZATION NOTE (copy_link_menuitem, email_link_menuitem, delete_conversation_menuitem):
+## These menu items are displayed from a panel's context menu for a conversation.
+
+
+
+
+# Conversation Window Strings
+
+
+
+## LOCALIZATION NOTE (call_with_contact_title): The title displayed
+## when calling a contact. Don't translate the part between {{..}} because
+## this will be replaced by the contact's name.
+
+# Outgoing conversation
+
+
+
+## LOCALIZATION NOTE (contact_offline_title): Title which is displayed when the
+## contact is offline.
+## LOCALIZATION NOTE (call_timeout_notification_text): Title which is displayed
+## when the call didn't go through.
+
+## LOCALIZATION NOTE (cancel_button):
+## This button is displayed when a call has failed.
+
+
+## LOCALIZATION NOTE (legal_text_and_links3): In this item, don't translate the
+## parts between {{..}} because these will be replaced with links with the labels
+## from legal_text_tos and legal_text_privacy. clientShortname will be replaced
+## by the brand name.
+
+## LOCALIZATION NOTE (powered_by_beforeLogo, powered_by_afterLogo):
+## These 2 strings are displayed before and after a 'Telefonica'
+## logo.
+
+## LOCALIZATION_NOTE (feedback_rejoin_button): Displayed on the feedback form after
+## a signed-in to signed-in user call.
+## LOCALIZATION NOTE (feedback_report_user_button): Used to report a user in the case of
+## an abusive user.
+
+
+
+## LOCALIZATION NOTE (door_hanger_return, door_hanger_prompt_name, door_hanger_button): Dialog message on leaving conversation
+
+# Infobar strings
+
+
+# Copy panel strings
+
+
+# E10s not supported strings
+
--- a/browser/extensions/loop/chrome/locale/es-MX/loop.properties
+++ b/browser/extensions/loop/chrome/locale/es-MX/loop.properties
@@ -198,16 +198,18 @@ door_hanger_return2=Puedes regresar a esta sesión compartida en cualquier momento a través del panel de Hello. ¿Te gustaría darle un nombre más sencillo de recordar?
 door_hanger_current=Nombre actual:
 door_hanger_button2=¡De acuerdo!
 
 # Infobar strings
 
 infobar_screenshare_no_guest_message=Tan pronto como tus amigos se vayan uniendo, serán capaces de ver cualquier pestaña en la que hagas clic.
 infobar_screenshare_browser_message2=Estás compartiendo tus pestañas. Cualquier pestaña en la que des clic puede ser vista por tus amigos
 infobar_screenshare_browser_message3=Estás compartiendo tus pestañas. Tu amigo podrá ver cualquier pestaña en la que hagas clic.
+infobar_screenshare_stop_sharing_message2=Ya no estás compartiendo tus pestañas.
+infobar_screenshare_stop_no_guest_message=Has dejado de compartir tus pestañas. Cuando se unan tus amigos, no podrán ver nada hasta que vuelvas a compartirlas.
 infobar_button_restart_label2=Volver a compartir
 infobar_button_restart_accesskey=e
 infobar_button_stop_label2=Dejar de compartir
 infobar_button_stop_accesskey=c
 infobar_button_disconnect_label=Desconectar
 infobar_button_disconnect_accesskey=D
 
 # Copy panel strings
--- a/browser/extensions/loop/chrome/locale/et/loop.properties
+++ b/browser/extensions/loop/chrome/locale/et/loop.properties
@@ -199,16 +199,18 @@ door_hanger_return2=Saad sellesse seanssi mis tahes ajal Hello paneeli kaudu naasta. Kas soovid sellele kergesti meeldejääva nime anda?
 door_hanger_current=Praegune nimi:
 door_hanger_button2=Olgu!
 
 # Infobar strings
 
 infobar_screenshare_no_guest_message=Niipea kui su sõber liitub, näeb ta sinu valitud kaarti.
 infobar_screenshare_browser_message2=Jagad enda kaarte. Sinu sõbrad näevad kaarti, mille oled valinud.
 infobar_screenshare_browser_message3=Jagad nüüd enda kaarte. Sinu sõber näeb kaarti, mille oled valinud.
+infobar_screenshare_stop_sharing_message2=Kaartide jagamine on lõppenud.
+infobar_screenshare_stop_no_guest_message=Oled lõpetanud kaartide jagamise. Kui su sõber ühineb, siis ei näe ta midagi kuni jagamise taaskäivitamiseni.
 infobar_button_restart_label2=Alusta jagamist uuesti
 infobar_button_restart_accesskey=s
 infobar_button_stop_label2=Lõpeta jagamine
 infobar_button_stop_accesskey=L
 infobar_button_disconnect_label=Lõpeta ühendus
 infobar_button_disconnect_accesskey=L
 
 # Copy panel strings
--- a/browser/extensions/loop/chrome/locale/fi/loop.properties
+++ b/browser/extensions/loop/chrome/locale/fi/loop.properties
@@ -23,37 +23,47 @@ sign_in_again_button=Kirjaudu
 ## will be replaced by the super short brandname.
 sign_in_again_use_as_guest_button2=Käytä {{clientSuperShortname}}-palvelua vierastunnuksilla
 
 panel_browse_with_friend_button=Selaa sivua kaverin kanssa
 panel_disconnect_button=Katkaise
 
 ## LOCALIZATION_NOTE(first_time_experience_subheading2, first_time_experience_subheading_button_above): Message inviting the
 ## user to create his or her first conversation.
-first_time_experience_subheading2=Napsauta Hello-painiketta selataksesi verkkosivuja kaverin kanssa.
+first_time_experience_subheading2=Selaa verkkosivuja kaverin kanssa napsauttamalla Hello-painiketta.
+first_time_experience_subheading_button_above=Selaa verkkosivuja kaverin kanssa napsauttamalla yllä olevaa painiketta.
 
 ## LOCALIZATION_NOTE(first_time_experience_content, first_time_experience_content2): Message describing
 ## ways to use Hello project.
-first_time_experience_content=Käytä sitä suunnittelemaan, työskentelemään tai nauramaan yhdessä.
+first_time_experience_content=Käytä sitä suunnitellaksesi, pitääksesi hauskaa tai työskennelläksesi kaverin kanssa.
+first_time_experience_content2=Käytä sitä asioiden tekemiseen: suunnittele, pidä hauskaa tai työskentele kaverin kanssa.
 first_time_experience_button_label2=Katso miten se toimii
 
 ## First Time Experience Slides
+fte_slide_1_title=Selaa verkkosivuja kaverin kanssa
 ## LOCALIZATION_NOTE(fte_slide_1_copy): {{clientShortname2}}
 ## will be replaced by the short name 2.
+fte_slide_1_copy=Jos olet suunnittelemassa matkaa tai ostamassa lahjaa, {{clientShortname2}}n avulla päätökset syntyvät nopeammin.
 fte_slide_2_title2=Tehty verkon jakamista varten
 ## LOCALIZATION_NOTE(fte_slide_2_copy2): {{clientShortname2}}
 ## will be replaced by the short name 2.
+fte_slide_2_copy2=Kun nyt kutsut kaverin keskusteluun, {{clientShortname2}} jakaa aina automaattisesti näkyvillä olevan verkkosivun. Suunnittele, käy ostoksilla ja tee päätöksiä yhdessä.
+fte_slide_3_title=Kutsu kaveri lähettämällä linkki keskusteluun
 ## LOCALIZATION_NOTE(fte_slide_3_copy): {{clientSuperShortname}}
 ## will be replaced by the super short brand name.
+fte_slide_3_copy={{clientSuperShortname}} toimii useimpien selainten kanssa. Tilejä ei tarvita ja keskustelut ovat kaikille ilmaisia.
 ## LOCALIZATION_NOTE(fte_slide_4_title): {{clientSuperShortname}}
 ## will be replaced by the super short brand name.
+fte_slide_4_title=Valitse {{clientSuperShortname}}-kuvake aloittaaksesi
 ## LOCALIZATION_NOTE(fte_slide_4_copy): {{brandShortname}}
 ## will be replaced by the brand short name.
+fte_slide_4_copy=Löydettyäsi sivun, josta haluat keskustella, luo linkki napsauttamalla kuvaketta {{brandShortname}}issa. Lähetä linkki kaverillesi miten haluat.
 
 invite_header_text_bold2=Kutsu kaveri mukaasi!
+invite_header_text4=Jaa tämä linkki ja voit selata verkkoa yhdessä kaverin kanssa.
 ## LOCALIZATION_NOTE(invite_copy_link_button, invite_copied_link_button,
 ## invite_email_link_button, invite_facebook_button2): These labels appear under
 ## an iconic button for the invite view.
 invite_copy_link_button=Kopioi linkki
 invite_copied_link_button=Kopioitu!
 invite_email_link_button=Lähetä linkki
 invite_facebook_button3=Facebook
 invite_your_link=Linkkisi:
@@ -64,31 +74,31 @@ invite_your_link=Linkkisi:
 session_expired_error_description=Istunto vanhentunut. Kaikki aikaisemmin luodut ja jaetut linkit eivät enää toimi.
 could_not_authenticate=Todentaminen ei onnistunut
 password_changed_question=Oletko vaihtanut salasanaa?
 try_again_later=Yritä uudestaan myöhemmin
 could_not_connect=Ei voitu muodostaa yhteyttä palvelimeen
 check_internet_connection=Tarkista Internet-yhteytesi
 login_expired=Kirjautumisesi on vanhentunut
 service_not_available=Palvelu ei ole saatavilla tällä hetkellä
-problem_accessing_account=Pääsyssä tilillesi oli ongelma
+problem_accessing_account=Tilisi tietojen haussa tapahtui virhe
 
 ## LOCALIZATION NOTE(retry_button): Displayed when there is an error to retry
 ## the appropriate action.
 retry_button=Yritä uudestaan
 
 share_email_subject7=Sinut on kutsuttu selaamaan verkkoa yhdessä
 ## LOCALIZATION NOTE (share_email_body7): In this item, don't translate the
 ## part between {{..}} and leave the \n\n part alone
-share_email_body7=Kaveri odottaa sinua Firefox Hellossa. Napsauta linkkiä liittyäksesi selaamaan verkkoa yhdessä: {{callUrl}}
+share_email_body7=Kaverisi odottaa sinua Firefox Hellossa. Napsauta linkkiä liittyäksesi keskusteluun ja selaa verkkoa kaverin kanssa: {{callUrl}}
 ## LOCALIZATION NOTE (share_email_body_context3): In this item, don't translate
 ## the part between {{..}} and leave the \n\n part alone.
-share_email_body_context3=Kaveri odottaa sinua Firefox Hellossa. Napsauta linkkiä liittyäksesi selaamaan sivustoa {{title}} yhdessä: {{callUrl}}
+share_email_body_context3=Kaverisi odottaa sinua Firefox Hellossa. Napsauta linkkiä liittyäksesi keskusteluun ja selaamaan kaverin kanssa sivustoa {{title}}: {{callUrl}}
 ## LOCALIZATION NOTE (share_email_footer2): Common footer content for both email types
-share_email_footer2=\n\n____________\nFirefox Hello mahdollistaa verkon selaamisen kavereiden kanssa. Käytä sitä, kun haluat saada hommat hoidettua: suunnittele, työskentele ja naura yhdessä. Lue lisää osoitteesta http://www.firefox.com/hello
+share_email_footer2=\n\n____________\nFirefox Hello mahdollistaa verkon selaamisen kavereiden kanssa. Käytä sitä, kun haluat saada hommat hoidettua: suunnittele, työskentele ja pidä hauskaa yhdessä. Lue lisää osoitteesta http://www.firefox.com/hello
 ## LOCALIZATION NOTE (share_tweeet): In this item, don't translate the part
 ## between {{..}}. Please keep the text below 117 characters to make sure it fits
 ## in a tweet.
 share_tweet=Aloita kanssani {{clientShortname2}}-pohjainen videokeskustelu!
 
 share_add_service_button=Lisää palvelu
 
 ## LOCALIZATION NOTE (copy_link_menuitem, email_link_menuitem, delete_conversation_menuitem):
@@ -117,17 +127,17 @@ incoming_call_title2=Keskustelupyyntö
 incoming_call_block_button=Estä
 hangup_button_title=Katkaise
 hangup_button_caption2=Lopeta
 
 
 ## LOCALIZATION NOTE (call_with_contact_title): The title displayed
 ## when calling a contact. Don't translate the part between {{..}} because
 ## this will be replaced by the contact's name.
-call_with_contact_title=Keskustelussa {{contactName}}
+call_with_contact_title=Keskustelu henkilön {{contactName}} kanssa
 
 # Outgoing conversation
 
 outgoing_call_title=Aloitetaanko keskustelu?
 initiate_audio_video_call_button2=Aloita
 initiate_audio_video_call_tooltip2=Aloita videokeskustelu
 initiate_audio_call_button2=Äänikeskustelu
 
@@ -143,17 +153,17 @@ call_timeout_notification_text=Puhelusi ei mennyt läpi.
 
 ## LOCALIZATION NOTE (cancel_button):
 ## This button is displayed when a call has failed.
 cancel_button=Peruuta
 rejoin_button=Liity uudestaan keskusteluun
 
 cannot_start_call_session_not_ready=Ei voida soittaa, istunto ei ole valmis.
 network_disconnected=Verkkoyhteys katkesi yllättäen.
-connection_error_see_console_notification=Puhelu epäonnistui; katso lisätietoja konsolista.
+connection_error_see_console_notification=Puhelu epäonnistui. Katso lisätietoja konsolista.
 no_media_failure_message=Ei löytynyt kameraa tai mikrofonia.
 ice_failure_message=Yhteys epäonnistui. Palomuurisi voi estää puhelut.
 
 ## LOCALIZATION NOTE (legal_text_and_links3): In this item, don't translate the
 ## parts between {{..}} because these will be replaced with links with the labels
 ## from legal_text_tos and legal_text_privacy. clientShortname will be replaced
 ## by the brand name.
 legal_text_and_links3=Käyttämällä {{clientShortname}} -palvelua hyväksyt sen {{terms_of_use}} ja {{privacy_notice}}.
@@ -179,29 +189,37 @@ tour_label=Esittely
 
 rooms_list_recently_browsed2=Viimeiset sivustot
 rooms_list_currently_browsing2=Avoimet sivut
 rooms_signout_alert=Avoimet keskustelut suljetaan
 room_name_untitled_page=Nimetön sivu
 
 ## LOCALIZATION NOTE (door_hanger_return, door_hanger_prompt_name, door_hanger_button): Dialog message on leaving conversation
 door_hanger_bye=Nähdään taas!
+door_hanger_return2=Voit palata tähän jaettuun istuntoon koska tahansa Hello-sivupaneelin kautta. Haluatko antaa sille nimen, jolla muistat sen paremmin?
 door_hanger_current=Nykyinen nimi:
-door_hanger_button2=Okei!
+door_hanger_button2=OK!
 
 # Infobar strings
 
-infobar_screenshare_browser_message2=Jaat parhaillaan välilehtiäsi. Kaverisi näkevät kaikki välilehdet, joita napsautat
+infobar_screenshare_no_guest_message=Jokainen napsauttamasi välilehti on näkyvissä kaverillesi kun he liittyvät keskusteluun.
+infobar_screenshare_browser_message2=Jaat välilehtiäsi. Kaverisi näkevät kaikki välilehdet, joita napsautat
+infobar_screenshare_browser_message3=Jaat parhaillaan välilehtiäsi. Kaverisi näkevät kaikki välilehdet, joita napsautat.
+infobar_screenshare_stop_sharing_message2=Et enää jaa välilehtiäsi.
+infobar_screenshare_stop_no_guest_message=Lopetit välilehtien jakamisen. Kaverisi eivät näe niitä ennen kuin jaat välilehtesi uudestaan.
+infobar_button_restart_label2=Jaa uudestaan
+infobar_button_restart_accesskey=u
 infobar_button_stop_label2=Lopeta jakaminen
 infobar_button_stop_accesskey=L
 infobar_button_disconnect_label=Katkaise yhteys
 infobar_button_disconnect_accesskey=K
 
 # Copy panel strings
 
+copy_panel_message=Haluatko jakaa tämän verkkosivun? Jaa selaimesi välilehti kaverin kanssa.
 copy_panel_dont_show_again_label=Älä näytä tätä uudelleen
 copy_panel_cancel_button_label=Ei nyt
 copy_panel_accept_button_label=Kyllä, näytä miten
 
 # E10s not supported strings
 
 e10s_not_supported_button_label=Avaa uusi ikkuna
 e10s_not_supported_subheading={{brandShortname}} ei toimi useampaa prosessia hyödyntävässä ikkunassa.
@@ -234,23 +252,26 @@ unmute_local_video_button_title2=Näytä video
 ## This button is displayed when a call has failed.
 retry_call_button=Yritä uudestaan
 
 rooms_leave_button_label=Poistu
 
 rooms_panel_title=Valitse keskustelu tai aloita uusi
 
 rooms_room_full_call_to_action_label=Lue lisää {{clientShortname}}ista »
-rooms_room_full_call_to_action_nonFx_label=Lataa {{brandShortname}} aloittaaksesi oman keskustelun
+rooms_room_full_call_to_action_nonFx_label=Lataa {{brandShortname}} aloittaaksesi omia keskusteluja
 rooms_room_full_label=Keskustelussa on jo kaksi henkilöä paikalla.
 rooms_room_join_label=Liity keskusteluun
+rooms_room_joined_owner_connected_label2=Yhteys kaveriisi on nyt muodostettu ja hän voi nähdä välilehtesi.
+rooms_room_joined_owner_not_connected_label=Kaverisi odottaa päästä selaamaan sivustoa {{roomURLHostname}} kanssasi.
 
-self_view_hidden_message=Omanäkymä piilotettu, mutta lähetetään edelleen. Muuta ikkunan kokoa nähdäksesi.
+self_view_hidden_message=Lähettämäsi kuva on piilotettu, mutta sitä lähetetään edelleen. Muuta ikkunan kokoa nähdäksesi sen.
 
 peer_left_session=Kaverisi lähti.
+peer_unexpected_quit=Kaverisi yhteys katkesi yllättäen.
 
 ## LOCALIZATION NOTE (tos_failure_message): Don't translate {{clientShortname}}
 ## as this will be replaced by clientShortname2.
 tos_failure_message={{clientShortname}} ei ole saatavilla maassasi.
 
 display_name_guest=Vieras
 
 ## LOCALIZATION NOTE(clientSuperShortname): This should not be localized and
--- a/browser/extensions/loop/chrome/locale/hy-AM/loop.properties
+++ b/browser/extensions/loop/chrome/locale/hy-AM/loop.properties
@@ -23,30 +23,30 @@ sign_in_again_button=Մուտք գործել
 ## will be replaced by the super short brandname.
 sign_in_again_use_as_guest_button2=Օգտագործել {{clientSuperShortname}}-ը որպես Հյուր
 
 panel_browse_with_friend_button=Դիտել էջը ընկերոջ հետ
 panel_disconnect_button=Կապախզել
 
 ## LOCALIZATION_NOTE(first_time_experience_subheading2, first_time_experience_subheading_button_above): Message inviting the
 ## user to create his or her first conversation.
-first_time_experience_subheading2=Սեղմեք Hello կոճակը՝ վեբ էջերը ընկեոջ հետ դիտելու համար
+first_time_experience_subheading2=Սեղմեք Hello կոճակը՝ վեբ էջերը ընկերոջ հետ դիտելու համար:
 first_time_experience_subheading_button_above=Սեղմեք կոճակը՝ վեբ ընկերոջ հետ դիտարկելու համար:
 
 ## LOCALIZATION_NOTE(first_time_experience_content, first_time_experience_content2): Message describing
 ## ways to use Hello project.
 first_time_experience_content=Օգտագործեք այն՝ միասին պլանավորելու, աշխատելու և ծիծաղելու համար:
 first_time_experience_content2=Օգտագործեք այն՝ միասին պլանավորելու, միասին ծիծաղելու, միասին աշխատելու համար:
 first_time_experience_button_label2=Տեսեք, թե ինչպես է աշխատում
 
 ## First Time Experience Slides
 fte_slide_1_title=Դիտարկել վեբ էջերը ընկերների հետ
 ## LOCALIZATION_NOTE(fte_slide_1_copy): {{clientShortname2}}
 ## will be replaced by the short name 2.
-fte_slide_1_copy=Անկախ նրանից, թե պլանավորում եք ուղևորություն կամ գնումներ նվերի համար՝ {{clientShortname2}}-ը կօգնի արագ որոշումներ կայացնել իրական ժամանակում:
+fte_slide_1_copy=Անկախ նրանից՝ պլանավորում եք ուղևորություն կամ գնումներ նվերի համար՝ {{clientShortname2}}-ը կօգնի արագ որոշումներ կայացնել իրական ժամանակում:
 fte_slide_2_title2=Ստեղծված է վեբը համաօգտագործելու համար
 ## LOCALIZATION_NOTE(fte_slide_2_copy2): {{clientShortname2}}
 ## will be replaced by the short name 2.
 fte_slide_2_copy2=Այժմ, երբ հրավիրել եք ձեր ընկերոջը զրույցի՝ {{clientShortname2}}-ը ինքնաբար կհամաօգտագործի ցանկացած վեբ էջ, որը դիտում եք:  Պլանավորեք: Կատարեք գնումներ: Կայացրեք որոշումներ: Միասին:
 fte_slide_3_title=Հրավիրեք ընկերոջը՝ ուղարկելով հղումը
 ## LOCALIZATION_NOTE(fte_slide_3_copy): {{clientSuperShortname}}
 ## will be replaced by the super short brand name.
 fte_slide_3_copy={{clientSuperShortname}}-ը աշխատում է գրեթե բոլոր դիտարկիչների հետ: Հաշիվ պետք չէ և անվճար է:
--- a/browser/extensions/loop/chrome/locale/jar.mn
+++ b/browser/extensions/loop/chrome/locale/jar.mn
@@ -4,34 +4,36 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # These are used for the big if statement, as the preprocessor can't handle
 # dashes.
 #define bn_BD bn-BD
 #define bn_IN bn-IN
 #define en_GB en-GB
 #define en_US en-US
+#define es_AR es-AR
 #define es_CL es-CL
 #define es_ES es-ES
 #define es_MX es-MX
 #define fy_NL fy-NL
 #define gu_IN gu-IN
 #define hi_IN hi-IN
 #define hy_AM hy-AM
 #define nb_NO nb-NO
 #define ne_NP ne-NP
+#define nn_NO nn-NO
 #define pa_IN pa-IN
 #define pt_BR pt-BR
 #define pt_PT pt-PT
 #define sv_SE sv-SE
 #define zh_CN zh-CN
 #define zh_TW zh-TW
 
 [features/loop@mozilla.org] @AB_CD@.jar:
 % locale loop @AB_CD@ %locale/@AB_CD@/
   # For locales we support, include the file from the locale's directory in the
   # source tree.
   # For other locales (and en-US) fallback to the en-US directory.
-#if AB_CD == af || AB_CD == ar || AB_CD == as || AB_CD == ast || AB_CD == az || AB_CD == be || AB_CD == bg || AB_CD == bn_BD || AB_CD == bn_IN || AB_CD == bs || AB_CD == ca || AB_CD == cs || AB_CD == cy || AB_CD == da || AB_CD == de || AB_CD == dsb || AB_CD == el || AB_CD == en_GB || AB_CD == en_US || AB_CD == eo || AB_CD == es_CL || AB_CD == es_ES || AB_CD == es_MX || AB_CD == et || AB_CD == eu || AB_CD == fa || AB_CD == ff || AB_CD == fi || AB_CD == fr || AB_CD == fy || AB_CD == fy_NL || AB_CD == ga || AB_CD == gd || AB_CD == gl || AB_CD == gu_IN || AB_CD == he || AB_CD == hi_IN || AB_CD == hr || AB_CD == hsb || AB_CD == ht || AB_CD == hu || AB_CD == hy_AM || AB_CD == id || AB_CD == it || AB_CD == ja || AB_CD == kk || AB_CD == km || AB_CD == kn || AB_CD == ko || AB_CD == ku || AB_CD == lij || AB_CD == lt || AB_CD == lv || AB_CD == mk || AB_CD == ml || AB_CD == mn || AB_CD == ms || AB_CD == my || AB_CD == nb_NO || AB_CD == ne_NP || AB_CD == nl || AB_CD == or || AB_CD == pa || AB_CD == pa_IN || AB_CD == pl || AB_CD == pt || AB_CD == pt_BR || AB_CD == pt_PT || AB_CD == rm || AB_CD == ro || AB_CD == ru || AB_CD == si || AB_CD == sk || AB_CD == sl || AB_CD == son || AB_CD == sq || AB_CD == sr || AB_CD == sv_SE || AB_CD == ta || AB_CD == te || AB_CD == th || AB_CD == tr || AB_CD == uk || AB_CD == ur || AB_CD == vi || AB_CD == xh || AB_CD == zh_CN || AB_CD == zh_TW || AB_CD == zu
+#if AB_CD == af || AB_CD == ar || AB_CD == as || AB_CD == ast || AB_CD == az || AB_CD == be || AB_CD == bg || AB_CD == bn_BD || AB_CD == bn_IN || AB_CD == bs || AB_CD == ca || AB_CD == cs || AB_CD == cy || AB_CD == da || AB_CD == de || AB_CD == dsb || AB_CD == el || AB_CD == en_GB || AB_CD == en_US || AB_CD == eo || AB_CD == es_AR || AB_CD == es_CL || AB_CD == es_ES || AB_CD == es_MX || AB_CD == et || AB_CD == eu || AB_CD == fa || AB_CD == ff || AB_CD == fi || AB_CD == fr || AB_CD == fy || AB_CD == fy_NL || AB_CD == ga || AB_CD == gd || AB_CD == gl || AB_CD == gu_IN || AB_CD == he || AB_CD == hi_IN || AB_CD == hr || AB_CD == hsb || AB_CD == ht || AB_CD == hu || AB_CD == hy_AM || AB_CD == id || AB_CD == it || AB_CD == ja || AB_CD == kk || AB_CD == km || AB_CD == kn || AB_CD == ko || AB_CD == ku || AB_CD == lij || AB_CD == lt || AB_CD == lv || AB_CD == mk || AB_CD == ml || AB_CD == mn || AB_CD == ms || AB_CD == my || AB_CD == nb_NO || AB_CD == ne_NP || AB_CD == nl || AB_CD == nn_NO || AB_CD == or || AB_CD == pa || AB_CD == pa_IN || AB_CD == pl || AB_CD == pt || AB_CD == pt_BR || AB_CD == pt_PT || AB_CD == rm || AB_CD == ro || AB_CD == ru || AB_CD == si || AB_CD == sk || AB_CD == sl || AB_CD == son || AB_CD == sq || AB_CD == sr || AB_CD == sv_SE || AB_CD == ta || AB_CD == te || AB_CD == th || AB_CD == tr || AB_CD == uk || AB_CD == ur || AB_CD == vi || AB_CD == xh || AB_CD == zh_CN || AB_CD == zh_TW || AB_CD == zu
   locale/@AB_CD@/                (@AB_CD@/*)
 #else
   locale/@AB_CD@/                (en-US/*)
 #endif
--- a/browser/extensions/loop/chrome/locale/lv/loop.properties
+++ b/browser/extensions/loop/chrome/locale/lv/loop.properties
@@ -2,157 +2,231 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # Panel Strings
 
 ## LOCALIZATION_NOTE(loopMenuItem_label): Label of the menu item that is placed
 ## inside the browser 'Tools' menu. Use the unicode ellipsis char, \u2026, or
 ## use "..." if \u2026 doesn't suit traditions in your locale.
+loopMenuItem_label=Sākt sarunu…
 
 ## LOCALIZATION_NOTE(sign_in_again_title_line_one, sign_in_again_title_line_two2):
 ## These are displayed together at the top of the panel when a user is needed to
 ## sign-in again. The emphesis is on the first line to get the user to sign-in again,
 ## and this is displayed in slightly larger font. Please arrange as necessary for
 ## your locale.
 ## {{clientShortname2}} will be replaced by the brand name for either string.
+sign_in_again_title_line_one=Lūdzu pieslēdzieties vēlreiz
+sign_in_again_title_line_two2=lai turpinātu izmantot {{clientShortname2}}
+sign_in_again_button=Ieiet
 ## LOCALIZATION_NOTE(sign_in_again_use_as_guest_button2): {{clientSuperShortname}}
 ## will be replaced by the super short brandname.
+sign_in_again_use_as_guest_button2=Lietot {{clientSuperShortname}} kā viesis
 
+panel_browse_with_friend_button=Pārlūkot šo lapu kopā ar draugu
+panel_disconnect_button=Atvienoties
 
 ## LOCALIZATION_NOTE(first_time_experience_subheading2, first_time_experience_subheading_button_above): Message inviting the
 ## user to create his or her first conversation.
 
 ## LOCALIZATION_NOTE(first_time_experience_content, first_time_experience_content2): Message describing
 ## ways to use Hello project.
+first_time_experience_button_label2=Uzziniet kā tas darbojas
 
 ## First Time Experience Slides
+fte_slide_1_title=Pārlūkot tīmekļa lapas kopā ar draugu
 ## LOCALIZATION_NOTE(fte_slide_1_copy): {{clientShortname2}}
 ## will be replaced by the short name 2.
+fte_slide_2_title2=Domāts lai dalītu tīmekli
 ## LOCALIZATION_NOTE(fte_slide_2_copy2): {{clientShortname2}}
 ## will be replaced by the short name 2.
 ## LOCALIZATION_NOTE(fte_slide_3_copy): {{clientSuperShortname}}
 ## will be replaced by the super short brand name.
 ## LOCALIZATION_NOTE(fte_slide_4_title): {{clientSuperShortname}}
 ## will be replaced by the super short brand name.
 ## LOCALIZATION_NOTE(fte_slide_4_copy): {{brandShortname}}
 ## will be replaced by the brand short name.
 
+invite_header_text_bold2=Uzaiciniet draugu lai jums piebiedrotos!
+invite_header_text4=Daliet šo saiti lai jūs varētu sākt pārlūkot tīmekli kopā.
 ## LOCALIZATION_NOTE(invite_copy_link_button, invite_copied_link_button,
 ## invite_email_link_button, invite_facebook_button2): These labels appear under
 ## an iconic button for the invite view.
+invite_copy_link_button=Kopēt saiti
+invite_copied_link_button=Nokopēts!
+invite_email_link_button=Epasta saite
+invite_facebook_button3=Facebook
+invite_your_link=Jūsu saite:
 
 # Error bars
 ## LOCALIZATION NOTE(session_expired_error_description,could_not_authenticate,password_changed_question,try_again_later,could_not_connect,check_internet_connection,login_expired,service_not_available,problem_accessing_account):
 ## These may be displayed at the top of the panel.
+problem_accessing_account=Radās problēma piekļūstot jūsu kontam
 
 ## LOCALIZATION NOTE(retry_button): Displayed when there is an error to retry
 ## the appropriate action.
+retry_button=Mēģināt vēlreiz
 
+share_email_subject7=Jūsu uzaicinājums lai pārlūkotu tīmekli kopā
 ## LOCALIZATION NOTE (share_email_body7): In this item, don't translate the
 ## part between {{..}} and leave the \n\n part alone
 ## LOCALIZATION NOTE (share_email_body_context3): In this item, don't translate
 ## the part between {{..}} and leave the \n\n part alone.
 ## LOCALIZATION NOTE (share_email_footer2): Common footer content for both email types
 ## LOCALIZATION NOTE (share_tweeet): In this item, don't translate the part
 ## between {{..}}. Please keep the text below 117 characters to make sure it fits
 ## in a tweet.
 
 
 ## LOCALIZATION NOTE (copy_link_menuitem, email_link_menuitem, delete_conversation_menuitem):
 ## These menu items are displayed from a panel's context menu for a conversation.
+delete_conversation_menuitem2=Dzēst
 
+panel_footer_signin_or_signup_link=Pieslēdzieties vai reģistrējieties
 
+settings_menu_item_account=Konts
+settings_menu_item_settings=Iestatījumi
+settings_menu_item_signout=Iziet
+settings_menu_item_signin=Ieiet
+settings_menu_item_turnnotificationson=Ieslēgt paziņojumus
+settings_menu_item_turnnotificationsoff=Izslēgt paziņojumus
+settings_menu_item_feedback=Nosūtīt atsauksmi
+settings_menu_button_tooltip=Iestatījumi
 
 
 # Conversation Window Strings
 
+initiate_call_button_label2=Gatavs sākt sarunu?
+incoming_call_title2=Sarunas pieprasījums
+incoming_call_block_button=Bloķēt
 hangup_button_title=Nolikt klausuli
 hangup_button_caption2=Iziet
 
 
 ## LOCALIZATION NOTE (call_with_contact_title): The title displayed
 ## when calling a contact. Don't translate the part between {{..}} because
 ## this will be replaced by the contact's name.
 
 # Outgoing conversation
 
+outgoing_call_title=Sākt sarunu?
+initiate_audio_video_call_button2=Sākt
+initiate_audio_video_call_tooltip2=Sākt video sarunu
+initiate_audio_call_button2=Audio sarunu
 
+peer_ended_conversation2=Persona kurai zvanījāt beidza sarunu.
+restart_call=Atgriezties
 
 ## LOCALIZATION NOTE (contact_offline_title): Title which is displayed when the
 ## contact is offline.
+contact_offline_title=Šī persona nav tiešsaistē
 ## LOCALIZATION NOTE (call_timeout_notification_text): Title which is displayed
 ## when the call didn't go through.
+call_timeout_notification_text=Jūsu zvans netika savienots.
 
 ## LOCALIZATION NOTE (cancel_button):
 ## This button is displayed when a call has failed.
+cancel_button=Atcelt
+rejoin_button=Pieslēgties vēlreiz
 
 
 ## LOCALIZATION NOTE (legal_text_and_links3): In this item, don't translate the
 ## parts between {{..}} because these will be replaced with links with the labels
 ## from legal_text_tos and legal_text_privacy. clientShortname will be replaced
 ## by the brand name.
+legal_text_tos=Lietošanas noteikumi
+legal_text_privacy=Privātuma paziņojums
 
 ## LOCALIZATION NOTE (powered_by_beforeLogo, powered_by_afterLogo):
 ## These 2 strings are displayed before and after a 'Telefonica'
 ## logo.
+powered_by_beforeLogo=Nodrošina
 
 ## LOCALIZATION_NOTE (feedback_rejoin_button): Displayed on the feedback form after
 ## a signed-in to signed-in user call.
+feedback_rejoin_button=Atgriezties
 ## LOCALIZATION NOTE (feedback_report_user_button): Used to report a user in the case of
 ## an abusive user.
+feedback_report_user_button=Ziņot par lietotāju
+feedback_window_heading=Kāda bija jūsu saruna?
+feedback_request_button=Iesniegt atsauksmi
 
+tour_label=Ekskursija
 
+rooms_list_recently_browsed2=Nesen pārlūkots
+rooms_list_currently_browsing2=Šobrīd pārlūko
+rooms_signout_alert=Atvērtās sarunas tiks aizvērtas
+room_name_untitled_page=Nenosaukta lapa
 
 ## LOCALIZATION NOTE (door_hanger_return, door_hanger_prompt_name, door_hanger_button): Dialog message on leaving conversation
+door_hanger_bye=Tiksimies vēlāk!
+door_hanger_button2=Labi!
 
 # Infobar strings
 
+infobar_button_restart_label2=Atsākt dalīšanu
+infobar_button_stop_label2=Beigt dalīšanu
+infobar_button_disconnect_label=Atvienoties
 
 # Copy panel strings
 
+copy_panel_dont_show_again_label=Vairs nerādīt šo
+copy_panel_cancel_button_label=Ne tagad
+copy_panel_accept_button_label=Jā, parādiet man kā
 
 # E10s not supported strings
 
+e10s_not_supported_button_label=Uzsākt jaunu logu
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 ## LOCALIZATION NOTE: In this file, don't translate the part between {{..}}
 
 # Text chat strings
 chat_textbox_placeholder=Ierakstiet šeit…
 
 ## LOCALIZATION NOTE(clientShortname2): This should not be localized and
 ## should remain "Firefox Hello" for all locales.
 clientShortname2=Firefox Hello
 
 conversation_has_ended=Jūsu saruna beidzās.
+generic_failure_message=Mēs saskaramies ar tehniskām neērtībām…
 
 generic_failure_no_reason2=Vai vēlaties mēģināt vēlreiz?
 
 help_label=Palīdzība
 
 mute_local_audio_button_title=Apklusināt jūsu skaņu
 unmute_local_audio_button_title=Neapklusināt jūsu skaņu
+mute_local_video_button_title2=Deaktivēt video
+unmute_local_video_button_title2=Aktivēt video
 
 ## LOCALIZATION NOTE (retry_call_button):
 ## This button is displayed when a call has failed.
 retry_call_button=Mēģināt vēlreiz
 
 rooms_leave_button_label=Atstāt
 
 rooms_panel_title=Izvēlieties sarunu vai iesāciet jaunu
 
 rooms_room_full_call_to_action_label=Uzziniet vairāk par {{clientShortname}} »
 rooms_room_full_call_to_action_nonFx_label=Lejupielādējiet {{brandShortname}} lai sāktu jūsu
 rooms_room_full_label=Jau ir divi cilvēki šajā sarunā.
 rooms_room_join_label=Pievienoties sarunai
-rooms_room_joined_label=Kāds pievienojās sarunai!
+rooms_room_joined_owner_connected_label2=Jūsu draugs ir tagad pievienojies un varēs redzēt jūsu cilnes.
+rooms_room_joined_owner_not_connected_label=Jūsu draugs jūs gaida lai pārlūkotu {{roomURLHostname}} ar jums.
 
 self_view_hidden_message=Jūsu paša skats ir paslēpts, bet joprojām tiek sūtīts. Izmainiet loga izmēru, lai aplūkotu to
 
+peer_left_session=Jūsu draugs aizgāja.
+peer_unexpected_quit=Jūsu draugs negaidīti atvienojās.
+
 ## LOCALIZATION NOTE (tos_failure_message): Don't translate {{clientShortname}}
 ## as this will be replaced by clientShortname2.
+tos_failure_message={{clientShortname}} nav pieejams jūsu valstī.
+
+display_name_guest=Viesis
 
 ## LOCALIZATION NOTE(clientSuperShortname): This should not be localized and
 ## should remain "Hello" for all locales.
 clientSuperShortname=Hello
--- a/browser/extensions/loop/chrome/locale/nb-NO/loop.properties
+++ b/browser/extensions/loop/chrome/locale/nb-NO/loop.properties
@@ -9,18 +9,22 @@
 ## use "..." if \u2026 doesn't suit traditions in your locale.
 
 ## LOCALIZATION_NOTE(sign_in_again_title_line_one, sign_in_again_title_line_two2):
 ## These are displayed together at the top of the panel when a user is needed to
 ## sign-in again. The emphesis is on the first line to get the user to sign-in again,
 ## and this is displayed in slightly larger font. Please arrange as necessary for
 ## your locale.
 ## {{clientShortname2}} will be replaced by the brand name for either string.
+sign_in_again_title_line_one=Logg inn igjen
+sign_in_again_title_line_two2=for å fortsette å bruke {{clientShortname2}}
+sign_in_again_button=Logg inn
 ## LOCALIZATION_NOTE(sign_in_again_use_as_guest_button2): {{clientSuperShortname}}
 ## will be replaced by the super short brandname.
+sign_in_again_use_as_guest_button2=Bruk {{clientSuperShortname}} som gjest
 
 
 ## LOCALIZATION_NOTE(first_time_experience_subheading2, first_time_experience_subheading_button_above): Message inviting the
 ## user to create his or her first conversation.
 
 ## LOCALIZATION_NOTE(first_time_experience_content, first_time_experience_content2): Message describing
 ## ways to use Hello project.
 
@@ -38,16 +42,22 @@
 
 ## LOCALIZATION_NOTE(invite_copy_link_button, invite_copied_link_button,
 ## invite_email_link_button, invite_facebook_button2): These labels appear under
 ## an iconic button for the invite view.
 
 # Error bars
 ## LOCALIZATION NOTE(session_expired_error_description,could_not_authenticate,password_changed_question,try_again_later,could_not_connect,check_internet_connection,login_expired,service_not_available,problem_accessing_account):
 ## These may be displayed at the top of the panel.
+password_changed_question=Har du endret passordet?
+try_again_later=Prøv igjen senere
+could_not_connect=Klarte ikke koble til serveren
+check_internet_connection=Kontroller internett-tilknytningen din
+login_expired=Innloggingen din har utløpt
+service_not_available=Tjenesten er ikke tilgjengelig akkurat nå
 
 ## LOCALIZATION NOTE(retry_button): Displayed when there is an error to retry
 ## the appropriate action.
 
 ## LOCALIZATION NOTE (share_email_body7): In this item, don't translate the
 ## part between {{..}} and leave the \n\n part alone
 ## LOCALIZATION NOTE (share_email_body_context3): In this item, don't translate
 ## the part between {{..}} and leave the \n\n part alone.
new file mode 100644
--- /dev/null
+++ b/browser/extensions/loop/chrome/locale/nn-NO/loop.properties
@@ -0,0 +1,205 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Panel Strings
+
+## LOCALIZATION_NOTE(loopMenuItem_label): Label of the menu item that is placed
+## inside the browser 'Tools' menu. Use the unicode ellipsis char, \u2026, or
+## use "..." if \u2026 doesn't suit traditions in your locale.
+loopMenuItem_label=Start ein samtale …
+loopMenuItem_accesskey=t
+
+## LOCALIZATION_NOTE(sign_in_again_title_line_one, sign_in_again_title_line_two2):
+## These are displayed together at the top of the panel when a user is needed to
+## sign-in again. The emphesis is on the first line to get the user to sign-in again,
+## and this is displayed in slightly larger font. Please arrange as necessary for
+## your locale.
+## {{clientShortname2}} will be replaced by the brand name for either string.
+sign_in_again_title_line_one=Logg inn igjen
+sign_in_again_title_line_two2=for å fortsetja å bruka {{clientShortname2}}
+sign_in_again_button=Logg inn
+## LOCALIZATION_NOTE(sign_in_again_use_as_guest_button2): {{clientSuperShortname}}
+## will be replaced by the super short brandname.
+sign_in_again_use_as_guest_button2=Bruk {{clientSuperShortname}} som gjest
+
+panel_browse_with_friend_button=Surf på denne sida saman med ein ven
+panel_disconnect_button=Kopla frå
+
+## LOCALIZATION_NOTE(first_time_experience_subheading2, first_time_experience_subheading_button_above): Message inviting the
+## user to create his or her first conversation.
+first_time_experience_subheading2=Trykk på Hello-knappen for å surfa på nettet saman med ein ven.
+first_time_experience_subheading_button_above=Trykk på knappen ovanfor for å surfa på nettet saman med ein ven.
+
+## LOCALIZATION_NOTE(first_time_experience_content, first_time_experience_content2): Message describing
+## ways to use Hello project.
+first_time_experience_content=Bruk han til å planleggja, arbeida, og ha det moro i lag.
+first_time_experience_content2=Bruk han til å få gjort ting: planlegging, arbeid og for å ha det moro i lag.
+first_time_experience_button_label2=Sjå korleis det fungerar
+
+## First Time Experience Slides
+fte_slide_1_title=Surf på nettsider med ein ven
+## LOCALIZATION_NOTE(fte_slide_1_copy): {{clientShortname2}}
+## will be replaced by the short name 2.
+## LOCALIZATION_NOTE(fte_slide_2_copy2): {{clientShortname2}}
+## will be replaced by the short name 2.
+fte_slide_2_copy2=Når du inviterer ein ven til ei ykt, vil {{clientShortname2}} automatisk dela nettsidene du ser på. Planlegg. Handla. Ta avgjerder. Saman.
+## LOCALIZATION_NOTE(fte_slide_3_copy): {{clientSuperShortname}}
+## will be replaced by the super short brand name.
+## LOCALIZATION_NOTE(fte_slide_4_title): {{clientSuperShortname}}
+## will be replaced by the super short brand name.
+## LOCALIZATION_NOTE(fte_slide_4_copy): {{brandShortname}}
+## will be replaced by the brand short name.
+
+## LOCALIZATION_NOTE(invite_copy_link_button, invite_copied_link_button,
+## invite_email_link_button, invite_facebook_button2): These labels appear under
+## an iconic button for the invite view.
+invite_copy_link_button=Kopier lenke
+invite_email_link_button=Send e-postlenke
+invite_your_link=Di lenke:
+
+# Error bars
+## LOCALIZATION NOTE(session_expired_error_description,could_not_authenticate,password_changed_question,try_again_later,could_not_connect,check_internet_connection,login_expired,service_not_available,problem_accessing_account):
+## These may be displayed at the top of the panel.
+login_expired=Innlogginga di har gått ut
+service_not_available=Tenesta er ikkje tilgjengeleg akkurat no
+
+## LOCALIZATION NOTE(retry_button): Displayed when there is an error to retry
+## the appropriate action.
+retry_button=Prøv igjen
+
+## LOCALIZATION NOTE (share_email_body7): In this item, don't translate the
+## part between {{..}} and leave the \n\n part alone
+## LOCALIZATION NOTE (share_email_body_context3): In this item, don't translate
+## the part between {{..}} and leave the \n\n part alone.
+## LOCALIZATION NOTE (share_email_footer2): Common footer content for both email types
+## LOCALIZATION NOTE (share_tweeet): In this item, don't translate the part
+## between {{..}}. Please keep the text below 117 characters to make sure it fits
+## in a tweet.
+
+share_add_service_button=Legg til ei teneste
+
+## LOCALIZATION NOTE (copy_link_menuitem, email_link_menuitem, delete_conversation_menuitem):
+## These menu items are displayed from a panel's context menu for a conversation.
+copy_link_menuitem=Kopier lenke
+email_link_menuitem=E-postlenke
+edit_name_menuitem=Rediger namn
+delete_conversation_menuitem2=Slett
+
+panel_footer_signin_or_signup_link=Logg inn eller registrer deg
+
+settings_menu_item_account=Konto
+settings_menu_item_settings=Innstillingar
+settings_menu_item_signout=Logg ut
+settings_menu_item_signin=Logg inn
+settings_menu_item_turnnotificationson=Slå på meldingar
+settings_menu_item_turnnotificationsoff=Slå av meldingar
+settings_menu_item_feedback=Send tilbakemelding
+settings_menu_button_tooltip=Innstillingar
+
+
+# Conversation Window Strings
+
+incoming_call_block_button=Blokker
+hangup_button_title=Legg på
+hangup_button_caption2=Avslutt
+
+
+## LOCALIZATION NOTE (call_with_contact_title): The title displayed
+## when calling a contact. Don't translate the part between {{..}} because
+## this will be replaced by the contact's name.
+
+# Outgoing conversation
+
+initiate_audio_video_call_button2=Start
+
+
+## LOCALIZATION NOTE (contact_offline_title): Title which is displayed when the
+## contact is offline.
+## LOCALIZATION NOTE (call_timeout_notification_text): Title which is displayed
+## when the call didn't go through.
+
+## LOCALIZATION NOTE (cancel_button):
+## This button is displayed when a call has failed.
+cancel_button=Avbryt
+
+
+## LOCALIZATION NOTE (legal_text_and_links3): In this item, don't translate the
+## parts between {{..}} because these will be replaced with links with the labels
+## from legal_text_tos and legal_text_privacy. clientShortname will be replaced
+## by the brand name.
+
+## LOCALIZATION NOTE (powered_by_beforeLogo, powered_by_afterLogo):
+## These 2 strings are displayed before and after a 'Telefonica'
+## logo.
+
+## LOCALIZATION_NOTE (feedback_rejoin_button): Displayed on the feedback form after
+## a signed-in to signed-in user call.
+## LOCALIZATION NOTE (feedback_report_user_button): Used to report a user in the case of
+## an abusive user.
+
+
+room_name_untitled_page=Namnlaus side
+
+## LOCALIZATION NOTE (door_hanger_return, door_hanger_prompt_name, door_hanger_button): Dialog message on leaving conversation
+door_hanger_current=Gjeldande namn:
+
+# Infobar strings
+
+infobar_button_disconnect_label=Kopla frå
+
+# Copy panel strings
+
+copy_panel_cancel_button_label=Ikkje no
+copy_panel_accept_button_label=Ja, vis meg korleis
+
+# E10s not supported strings
+
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+## LOCALIZATION NOTE: In this file, don't translate the part between {{..}}
+
+# Text chat strings
+chat_textbox_placeholder=Skriv her …
+
+## LOCALIZATION NOTE(clientShortname2): This should not be localized and
+## should remain "Firefox Hello" for all locales.
+clientShortname2=Firefox Hello
+
+conversation_has_ended=Samtalen er avslutta.
+generic_failure_message=Vi har tekniske problem …
+
+generic_failure_no_reason2=Vil du prøva på nytt?
+
+help_label=Hjelp
+
+mute_local_audio_button_title=Demp lyd
+unmute_local_audio_button_title=Slå på lyd
+mute_local_video_button_title2=Slå av video
+unmute_local_video_button_title2=Slå på video
+
+## LOCALIZATION NOTE (retry_call_button):
+## This button is displayed when a call has failed.
+retry_call_button=Prøv igjen
+
+rooms_leave_button_label=Forlat
+
+rooms_panel_title=Vel ein samtale eller start ein ny
+
+rooms_room_full_call_to_action_label=Les meir om {{clientShortname}} »
+rooms_room_join_label=Ver med i samtalen
+
+
+peer_left_session=Venane dine fór.
+peer_unexpected_quit=Venane dine har uventa kopla seg frå.
+
+## LOCALIZATION NOTE (tos_failure_message): Don't translate {{clientShortname}}
+## as this will be replaced by clientShortname2.
+
+display_name_guest=Gjest
+
+## LOCALIZATION NOTE(clientSuperShortname): This should not be localized and
+## should remain "Hello" for all locales.
+clientSuperShortname=Hello
--- a/browser/extensions/loop/chrome/locale/si/loop.properties
+++ b/browser/extensions/loop/chrome/locale/si/loop.properties
@@ -2,157 +2,278 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # Panel Strings
 
 ## LOCALIZATION_NOTE(loopMenuItem_label): Label of the menu item that is placed
 ## inside the browser 'Tools' menu. Use the unicode ellipsis char, \u2026, or
 ## use "..." if \u2026 doesn't suit traditions in your locale.
+loopMenuItem_label=සංවාදයක් ආරම්භ කරන්න…
+loopMenuItem_accesskey=t
 
 ## LOCALIZATION_NOTE(sign_in_again_title_line_one, sign_in_again_title_line_two2):
 ## These are displayed together at the top of the panel when a user is needed to
 ## sign-in again. The emphesis is on the first line to get the user to sign-in again,
 ## and this is displayed in slightly larger font. Please arrange as necessary for
 ## your locale.
 ## {{clientShortname2}} will be replaced by the brand name for either string.
+sign_in_again_title_line_one=කරුණාකර නැවත පිවිසෙන්න
+sign_in_again_title_line_two2={{clientShortname2}} භාවිතා කරමින් පවත්වාගෙන යාමට
+sign_in_again_button=ඇතුළු වන්න
 ## LOCALIZATION_NOTE(sign_in_again_use_as_guest_button2): {{clientSuperShortname}}
 ## will be replaced by the super short brandname.
+sign_in_again_use_as_guest_button2=අමුත්තෙක් ලෙස {{clientSuperShortname}} භාවිතා කරන්න
 
+panel_browse_with_friend_button=යහළුවෙකු සමඟ මෙම පිටුව ගවේශනය කරන්න
+panel_disconnect_button=විසන්ධි කරනන්
 
 ## LOCALIZATION_NOTE(first_time_experience_subheading2, first_time_experience_subheading_button_above): Message inviting the
 ## user to create his or her first conversation.
+first_time_experience_subheading2=යහළුවෙකු සමඟ වෙබ් ගවේශනය කිරීමට Hello බොත්තම ක්ලික් කරන්න.
+first_time_experience_subheading_button_above=යහළුවෙකු සමඟ වෙබ් ගවේශනය කිරීමට ඉහත බොත්තම ක්ලික් කරන්න.
 
 ## LOCALIZATION_NOTE(first_time_experience_content, first_time_experience_content2): Message describing
 ## ways to use Hello project.
+first_time_experience_content=එක්ව සැලසුම් කිරීමට, එක්ව වැඩ කිරීමට, එක්ව සිනාසීමට එය භාවිතා කරන්න.
+first_time_experience_content2=වැඩ කරගැනීමට එය භාවිතා කරන්න: එක්ව සැලසුම් කිරීමට, එක්ව සිනාසීමට, එක්ව වැඩ කිරීමට.
+first_time_experience_button_label2=එය සිදුවෙන්නේ කෙසේදැයි බලන්න
 
 ## First Time Experience Slides
+fte_slide_1_title=යහළුවෙකය සමඟ වෙබ් පිටු ගවේශනය කරන්න
 ## LOCALIZATION_NOTE(fte_slide_1_copy): {{clientShortname2}}
 ## will be replaced by the short name 2.
+fte_slide_1_copy=ඔබ විනෝද ගමනක් සැලසුම් කරයි නම් හෝ තෑග්ගක් ගැනීමට සාප්පු යයි නම්, තත්කාලීනව වේගවත් තීරණ ගැනීමට {{clientShortname2}} ඔබට ඉඩ ලබා දෙයි.
+fte_slide_2_title2=වෙබය හවුල්කර ගැනීම සඳහාම සකසා ඇත
 ## LOCALIZATION_NOTE(fte_slide_2_copy2): {{clientShortname2}}
 ## will be replaced by the short name 2.
+fte_slide_2_copy2=ඔබ ඔබගේ යහළුවෙකුට සැසියකට ආරාධනා කල විට, {{clientShortname2}} මඟින් සවයංක්‍රීයවම ඔබ බලන වෙබ් පිටු හවුල් කරනු ඇත. එක්ව. සැලසුම් කරන්න. සාප්පු යන්න. තීරණය කරන්න.
+fte_slide_3_title=සබැඳිය යැවීමෙන් යහළුවෙකුට ආරාධනා කරන්න
 ## LOCALIZATION_NOTE(fte_slide_3_copy): {{clientSuperShortname}}
 ## will be replaced by the super short brand name.
+fte_slide_3_copy={{clientSuperShortname}} බොහෝ ඩෙස්ක්ටොප් ගවේශක සමඟ ක්‍රියා කරයි. ගිණුම් අවශ්‍ය නොවන අතර ඕනෑම කෙනෙක් නොමිළේ සම්බන්ධවේ.
 ## LOCALIZATION_NOTE(fte_slide_4_title): {{clientSuperShortname}}
 ## will be replaced by the super short brand name.
+fte_slide_4_title=ආරම්භ කිරීමට {{clientSuperShortname}} අයිකනය සොයන්න
 ## LOCALIZATION_NOTE(fte_slide_4_copy): {{brandShortname}}
 ## will be replaced by the brand short name.
+fte_slide_4_copy=ඔබට සාකච්ඡා කිරීමට අවශ්‍ය පිටුවක් හමුවූ විට, සබැඳියක් සෑදීමට {{brandShortname}} හි අයිකනය ක්ලික් කරන්න. ඉන්පසු ඔබ කැමති ඕනෑම ආකාරයකට එය ඔබේ යහළුවාට යවන්න!
 
+invite_header_text_bold2=ඔබට සම්බන්ධ වීමට යහළුවෙකුට ආරාධනා කරන්න!
+invite_header_text4=මෙම සබැඳිය හවුල් කරන්න එවිට ඔබට එක්ව වෙබය ගවේශනය කල හැක.
 ## LOCALIZATION_NOTE(invite_copy_link_button, invite_copied_link_button,
 ## invite_email_link_button, invite_facebook_button2): These labels appear under
 ## an iconic button for the invite view.
+invite_copy_link_button=සබැඳිය පිටපත් කරන්න
+invite_copied_link_button=පිටපත් කරන ලදි!
+invite_email_link_button=ඊ-මේල් සබැඳිය
+invite_facebook_button3=Facebook
+invite_your_link=ඔබගේ සබැඳිය:
 
 # Error bars
 ## LOCALIZATION NOTE(session_expired_error_description,could_not_authenticate,password_changed_question,try_again_later,could_not_connect,check_internet_connection,login_expired,service_not_available,problem_accessing_account):
 ## These may be displayed at the top of the panel.
+session_expired_error_description=සැසිය කල් ඉකුත්විය. ඔබ පෙරදී නිර්මාණය කළ හා හවුල්කල සියළු URLs ලිපින තවදුරටත් ක්‍රියා නොකරනු ඇත.
+could_not_authenticate=සත්‍යාපනය කිරීමට නොහැකි විය
+password_changed_question=ඔබ ඔබේ මුරපදය වෙනස් කළාද?
+try_again_later=කරුණාකර නැවත උත්සහ කරන්න
+could_not_connect=සේවාදායකයට සම්බන්ධ වීමට නොහැකි විය
+check_internet_connection=කරුණාකර ඔබේ අන්තර්ජාල සබඳතාව පිරික්සන්න
+login_expired=ඔබේ පිවිසුම කල් ඉකුත්වී ඇත
+service_not_available=සේවාව මේ මොහොතේ නොපවතී
+problem_accessing_account=ඔබේ ගිනුමට පිවිසීමේ ගැටළුවක් පැවතිනි
 
 ## LOCALIZATION NOTE(retry_button): Displayed when there is an error to retry
 ## the appropriate action.
+retry_button=නැවත උත්සහ කරන්න
 
+share_email_subject7=වෙබය එක්ව ගවේශනය කිරීමට ඔබගේ ආරාධනය
 ## LOCALIZATION NOTE (share_email_body7): In this item, don't translate the
 ## part between {{..}} and leave the \n\n part alone
+share_email_body7=ඔබගේ යහළුවෙක් Firefox Hello හි ඔබ එනතුරු බලා සිටියි. සම්බන්ධ වී වෙබය එක්ව ගවේශනය කිරීමක් සබැඳිය ක්ලික් කරන්න: {{callUrl}}
 ## LOCALIZATION NOTE (share_email_body_context3): In this item, don't translate
 ## the part between {{..}} and leave the \n\n part alone.
+share_email_body_context3=ඔබගේ යහළුවෙක් Firefox Hello හි ඔබ එනතුරු බලා සිටියි. සම්බන්ධ වී {{title}} එක්ව ගවේශනය කිරීමක් සබැඳිය ක්ලික් කරන්න: {{callUrl}}
 ## LOCALIZATION NOTE (share_email_footer2): Common footer content for both email types
+share_email_footer2=\n\n____________\n Firefox Hello වෙබය ඔබගේ යහළුවන් සමඟ ගවේශනය කිරීමට ඉඩ ලබා දෙයි. ඔබට දේවල් කරගැනීමට අවශ්‍ය වූ විට එය භාවිතා කරන්න: එක්ව සැලසුම් කරන්න, එක්ව වැඩ කරන්න, එක්ව සිනාසෙන්න. වැඩිදුර ඉගෙනීමට http://www.firefox.com/hello ට පිවිසෙන්න
 ## LOCALIZATION NOTE (share_tweeet): In this item, don't translate the part
 ## between {{..}}. Please keep the text below 117 characters to make sure it fits
 ## in a tweet.
+share_tweet=මා සමඟ දෘෂ්‍ය සංවාදයක් සඳහා {{clientShortname2}}හි සම්බන්ධ වෙන්න!
 
+share_add_service_button=සේවාවක් එක් කරන්න
 
 ## LOCALIZATION NOTE (copy_link_menuitem, email_link_menuitem, delete_conversation_menuitem):
 ## These menu items are displayed from a panel's context menu for a conversation.
+copy_link_menuitem=සබැඳිය පිටපත් කරන්න
+email_link_menuitem=ඊ-මේල් සබැඳිය
+edit_name_menuitem=නම සංස්කරණය කරන්න
+delete_conversation_menuitem2=මකන්න
 
+panel_footer_signin_or_signup_link=පිවිසෙන්න හෝ ලියාපදිංචි වන්න
 
+settings_menu_item_account=ගිණුම
+settings_menu_item_settings=සිටුවම්
+settings_menu_item_signout=ඉවත් වන්න
+settings_menu_item_signin=ඇතුළු වන්න
+settings_menu_item_turnnotificationson=දැනුම්දීම් සක්‍රිය කරන්න
+settings_menu_item_turnnotificationsoff=දැනුම්දීම් අක්‍රිය කරන්න
+settings_menu_item_feedback=ප්‍රතිපෝෂණය ඉදිරිපත් කරන්න
+settings_menu_button_tooltip=සිටුවම්
 
 
 # Conversation Window Strings
 
-hangup_button_title=Hang up
-hangup_button_caption2=Exit
+initiate_call_button_label2=ඔබේ සංවාදය ඇරඹීමට සූදානම්ද?
+incoming_call_title2=සංවාද ඉල්ලීම
+incoming_call_block_button=අවහිර කරන්න
+hangup_button_title=විසන්ධි කරන්න
+hangup_button_caption2=ඉවත්වන්න
 
 
 ## LOCALIZATION NOTE (call_with_contact_title): The title displayed
 ## when calling a contact. Don't translate the part between {{..}} because
 ## this will be replaced by the contact's name.
+call_with_contact_title={{contactName}} සමඟ සංවාදය
 
 # Outgoing conversation
 
+outgoing_call_title=සංවාදයක් ආරම්භ කරන්නද?
+initiate_audio_video_call_button2=ආරම්භ කරන්න
+initiate_audio_video_call_tooltip2=වීඩියෝ සංවාදයක් ආරම්භ කරන්න
+initiate_audio_call_button2=හඬ සංවාදය
 
+peer_ended_conversation2=ඔබ ඇමතූ පුද්ගලයා සංවාදය අවසන් කර ඇත.
+restart_call=යළි එක්වන්න
 
 ## LOCALIZATION NOTE (contact_offline_title): Title which is displayed when the
 ## contact is offline.
+contact_offline_title=මෙම පුද්ගලයා මාර්ගගතව නොසිටී
 ## LOCALIZATION NOTE (call_timeout_notification_text): Title which is displayed
 ## when the call didn't go through.
+call_timeout_notification_text=ඔබේ ඇමතුම ලඟා නොවිනි.
 
 ## LOCALIZATION NOTE (cancel_button):
 ## This button is displayed when a call has failed.
+cancel_button=අවලංගු කරන්න
+rejoin_button=සංවාදයට යළි එක්වන්න
 
+cannot_start_call_session_not_ready=ඇමතුම ඇරඹිය නොහැක, සැසිය සූදානම් නැත.
+network_disconnected=ජාල සබඳතාව හදිසියේ ඇණහිටින.
+connection_error_see_console_notification=ඇමතුම අසාර්ථකයි; තොරතුරු සඳහා කොන්සෝලය බලන්න.
+no_media_failure_message=කැමරාවක් හෝ මයික්‍රෆෝනයක් හමු නොවුණි.
+ice_failure_message=සම්බන්ධතාවය අසාර්ථක විය. ඔබගේ ෆයර්වෝලය ඇමතුම් අවහිර කරනු විය හැක.
 
 ## LOCALIZATION NOTE (legal_text_and_links3): In this item, don't translate the
 ## parts between {{..}} because these will be replaced with links with the labels
 ## from legal_text_tos and legal_text_privacy. clientShortname will be replaced
 ## by the brand name.
+legal_text_and_links3={{clientShortname}} භාවිතා කිරීමන් ඔබ {{terms_of_use}}ට සහ {{privacy_notice}}ට එකඟ වෙයි.
+legal_text_tos=භාවිත රීති
+legal_text_privacy=පෞද්ගලිකත්ව සටහන
 
 ## LOCALIZATION NOTE (powered_by_beforeLogo, powered_by_afterLogo):
 ## These 2 strings are displayed before and after a 'Telefonica'
 ## logo.
+powered_by_beforeLogo=බළගැන්වෙන්නේ
+powered_by_afterLogo=
 
 ## LOCALIZATION_NOTE (feedback_rejoin_button): Displayed on the feedback form after
 ## a signed-in to signed-in user call.
+feedback_rejoin_button=යළි එක්වන්න
 ## LOCALIZATION NOTE (feedback_report_user_button): Used to report a user in the case of
 ## an abusive user.
+feedback_report_user_button=පරිශීලක වාර්ථාකරන්න
+feedback_window_heading=ඔබේ සංවාදය කෙසේ විනි ද?
+feedback_request_button=ප්‍රතිපෝෂණය යවන්න
 
+tour_label=සංචාරය
 
+rooms_list_recently_browsed2=මෑතකදී ගවේශනය කල
+rooms_list_currently_browsing2=දැනට ගවේශනය කරන
+rooms_signout_alert=විවෘත සංවාද වැසෙනු ඇත
+room_name_untitled_page=නමක් නොයෙදූ පිටුව
 
 ## LOCALIZATION NOTE (door_hanger_return, door_hanger_prompt_name, door_hanger_button): Dialog message on leaving conversation
+door_hanger_bye=ඔබව පසුව මුණගැසෙමු!
+door_hanger_return2=Hello පැනලය හරහා ඔබට ඕනෑම වෙලාවක මෙම හවුල් සැසියට පිවිසීමට ඔබට හැක. එයට මතකතබා ගැනීමට පහසු නමක් ලබා දීමට ඔබ කැමතිද?
+door_hanger_current=වත්මන් නම:
+door_hanger_button2=හරි!
 
 # Infobar strings
 
+infobar_screenshare_no_guest_message=ඔබගේ යහළුවා සම්බන්ධ වූ විගස, ඔබ ක්ලික් කරන ඕනෑම ටැබයක් බලා ගැනීමට ඔවුන්ට හැකිවනු ඇත.
+infobar_screenshare_browser_message2=ඔබ ඔබගේ ටැබ හවුල් කර ඇත. ඔබ ක්ලික් කරන ඕනෑම ටැබයක් ඔබගේ යහළුවන්ට බලා ගැනීමට හැක
+infobar_screenshare_browser_message3=ඔබ දැන් ඔබගේ ටැබ හවුල් කර ඇත. ඔබ ක්ලික් කරන ඕනෑම ටැබයක් ඔබගේ යහළුවන්ට පෙනෙනු ඇත.
+infobar_screenshare_stop_sharing_message2=ඔබ තවදුරටත් ඔබගේ ටැබ හවුල් කර නොගනී.
+infobar_screenshare_stop_no_guest_message=ඔබ ඔබගේ ටැබ හවුල් කිරීම නවතා ඇත. ඔබගේ යහළුවන් සම්බන්ධ වූ විට, ඔබ නැවත හවුල් කිරීම ආරම්භ කරනතුරු ඔවුන්ට කිසිවක් දැකිය නොහැකි වනු ඇත.
+infobar_button_restart_label2=හවුල් කිරීම යළි ආරම්භ කරන්න
+infobar_button_restart_accesskey=R
+infobar_button_stop_label2=හවුල් කිරීම නතර කරන්න
+infobar_button_stop_accesskey=S
+infobar_button_disconnect_label=විසන්ධි කරන්න
+infobar_button_disconnect_accesskey=D
 
 # Copy panel strings
 
+copy_panel_message=මෙම වෙබ් පිටුව හවුල් කිරීමට අවශ්‍යද? ඔබගේ ගවේශක ටැබය යහළුවෙකු සමඟ හවුල් කරන්න.
+copy_panel_dont_show_again_label=මෙය නැවත පෙන්වන්න එපා
+copy_panel_cancel_button_label=දැන් නොවේ
+copy_panel_accept_button_label=ඔව්, කෙසේදැයි මට පෙන්වන්න
 
 # E10s not supported strings
 
+e10s_not_supported_button_label=නව කවුළුව දියත් කරන්න
+e10s_not_supported_subheading={{brandShortname}} බහු කාර්ය කවුළුවක වැඩ නොකරයි.
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 ## LOCALIZATION NOTE: In this file, don't translate the part between {{..}}
 
 # Text chat strings
-chat_textbox_placeholder=Type here…
+chat_textbox_placeholder=මෙහි ටයිප් කරන්න…
 
 ## LOCALIZATION NOTE(clientShortname2): This should not be localized and
 ## should remain "Firefox Hello" for all locales.
 clientShortname2=Firefox Hello
 
-conversation_has_ended=Your conversation has ended.
+conversation_has_ended=ඔබේ සංවාදය අවසන් විය.
+generic_failure_message=අපි තාක්ෂණික අපහසුතාවයන්ට ලක්ව ඇත…
 
-generic_failure_no_reason2=Would you like to try again?
+generic_failure_no_reason2=ඔබ නැවත උත්සහ කිරීමට කැමතිද?
 
-help_label=Help
+help_label=උදව්
 
-mute_local_audio_button_title=Mute your audio
-unmute_local_audio_button_title=Unmute your audio
+mute_local_audio_button_title=ඔබේ ශ්‍රව්‍ය නිහඬ කරන්න
+unmute_local_audio_button_title=ශ්‍රව්‍ය නිහඬතාව ඉවත් කරන්න
+mute_local_video_button_title2=විඩියෝ අක්‍රිය කරන්න
+unmute_local_video_button_title2=විඩියෝ සක්‍රිය කරන්න
 
 ## LOCALIZATION NOTE (retry_call_button):
 ## This button is displayed when a call has failed.
-retry_call_button=Retry
+retry_call_button=නැවත උත්සාහ කරන්න
 
-rooms_leave_button_label=Leave
+rooms_leave_button_label=පිටවන්න
 
-rooms_panel_title=Choose a conversation or start a new one
+rooms_panel_title=සංවාදයක් තෝරන්න හෝ නව එකක් අරඹන්න
 
-rooms_room_full_call_to_action_label=Learn more about {{clientShortname}} »
-rooms_room_full_call_to_action_nonFx_label=Download {{brandShortname}} to start your own
-rooms_room_full_label=There are already two people in this conversation.
-rooms_room_join_label=Join the conversation
-rooms_room_joined_label=Someone has joined the conversation!
+rooms_room_full_call_to_action_label={{clientShortname}} පිළිබඳ වැඩිදුර ඉගෙන ගන්න »
+rooms_room_full_call_to_action_nonFx_label=ඔබගේම එකක් ආරම්භ කිරීමට {{brandShortname}} භාගත කරන්න
+rooms_room_full_label=මෙම සංවාදයේ දැනටමත් පුද්ගලයින් දෙදෙනෙක් සිටියි.
+rooms_room_join_label=සංවාදයට එක් වෙන්න
+rooms_room_joined_owner_connected_label2=ඔබගේ යහළුවා සම්බන්ධ වී ඇති අතර ඔබගේ ටැබ බලා ගැනීමට හැක.
+rooms_room_joined_owner_not_connected_label=ඔබගේ යහළුවා ඔබ සමඟ {{roomURLHostname}} ගවේශනය කිරීමට බලා සිටියි.
 
-self_view_hidden_message=Self-view hidden but still being sent; resize window to show
+self_view_hidden_message=ස්ව-දැක්ම සඟවා තිබෙන නමුත් තවමත් යවමින් පවතී; පෙන්වීමට කවුළුව ප්‍රතිප්‍රමාණ කරන්න
+
+peer_left_session=ඔබගේ මිතුරා නික්ම ඇත.
+peer_unexpected_quit=ඔබගේ යහළුවා අනපේක්ෂිත ලෙස විසන්ධි වී ඇත.
 
 ## LOCALIZATION NOTE (tos_failure_message): Don't translate {{clientShortname}}
 ## as this will be replaced by clientShortname2.
+tos_failure_message={{clientShortname}} ඔබගේ රටට ලැබිය නොහැක.
+
+display_name_guest=අමුත්තා
 
 ## LOCALIZATION NOTE(clientSuperShortname): This should not be localized and
 ## should remain "Hello" for all locales.
 clientSuperShortname=Hello
--- a/browser/extensions/loop/chrome/locale/sk/loop.properties
+++ b/browser/extensions/loop/chrome/locale/sk/loop.properties
@@ -199,16 +199,18 @@ door_hanger_return2=K tejto zdieľanej relácii sa môžete kedykoľvek vrátiť cez panel Hello. Chcete jej dať názov, ktorý si lepšie zapamätáte?
 door_hanger_current=Aktuálne meno:
 door_hanger_button2=OK!
 
 # Infobar strings
 
 infobar_screenshare_no_guest_message=Akonáhle sa váš priateľ pripojí, bude môcť vidieť akúkoľvek kartu, na ktorú kliknete.
 infobar_screenshare_browser_message2=Zdieľajte svoje karty. Akúkoľvek kartu prehliadača, na ktorú kliknete, môžu vidieť vaši priatelia
 infobar_screenshare_browser_message3=Práve zdieľate svoje karty. Váš priateľ uvidí každú kartu, na ktorú kliknete.
+infobar_screenshare_stop_sharing_message2=Svoje karty už nezdieľate.
+infobar_screenshare_stop_no_guest_message=Ukončili ste zdieľanie vašich kariet. Ak sa váš priateľ pripojí, neuvidí nič dovtedy, kým svoje karty nezačnete opäť zdieľať.
 infobar_button_restart_label2=Znova spustiť zdieľanie
 infobar_button_restart_accesskey=R
 infobar_button_stop_label2=Zastaviť zdieľanie
 infobar_button_stop_accesskey=Z
 infobar_button_disconnect_label=Odpojiť
 infobar_button_disconnect_accesskey=O
 
 # Copy panel strings
--- a/browser/extensions/loop/chrome/locale/sl/loop.properties
+++ b/browser/extensions/loop/chrome/locale/sl/loop.properties
@@ -36,31 +36,31 @@ first_time_experience_subheading_button_
 first_time_experience_content=Uporabljajte ga za skupno načrtovanje, delo in zabavo.
 first_time_experience_content2=Uporabljajte ga za razna opravila: skupno načrtovanje, delo in zabavo.
 first_time_experience_button_label2=Oglejte si, kako deluje
 
 ## First Time Experience Slides
 fte_slide_1_title=Brskajte po spletu s prijateljem
 ## LOCALIZATION_NOTE(fte_slide_1_copy): {{clientShortname2}}
 ## will be replaced by the short name 2.
-fte_slide_1_copy=Ne glede na to, ali načrtujete izlet ali kupujete darilo - {{clientShortname2}} omogoča hitrejše odločanje v resničnem času.
+fte_slide_1_copy=Ne glede na to, ali načrtujete izlet ali kupujete darilo - {{clientShortname2}} omogoča hitrejše odločanje v realnem času.
 fte_slide_2_title2=Narejen za deljenje spleta
 ## LOCALIZATION_NOTE(fte_slide_2_copy2): {{clientShortname2}}
 ## will be replaced by the short name 2.
 fte_slide_2_copy2=Ko boste odslej v sejo povabili prijatelja, bo {{clientShortname2}} samodejno delil vsako stran, ki si jo ogledujete. Načrtujte. Nakupujte. Odločajte se. Skupaj.
 fte_slide_3_title=Povabite prijatelja s pošiljanjem povezave
 ## LOCALIZATION_NOTE(fte_slide_3_copy): {{clientSuperShortname}}
 ## will be replaced by the super short brand name.
 fte_slide_3_copy={{clientSuperShortname}} deluje z večino namiznih brskalnikov. Ne potrebujete računa in vsi se lahko povežejo brezplačno.
 ## LOCALIZATION_NOTE(fte_slide_4_title): {{clientSuperShortname}}
 ## will be replaced by the super short brand name.
 fte_slide_4_title=Za začetek poiščite ikono {{clientSuperShortname}}
 ## LOCALIZATION_NOTE(fte_slide_4_copy): {{brandShortname}}
 ## will be replaced by the brand short name.
-fte_slide_4_copy=Ko najdete stran, o kateri želite razpravljati, kliknite ikono v {{brandShortname}}, da ustvarite povezavo. Potem jo pošljite prijatelju na kateri koli način!
+fte_slide_4_copy=Ko najdete stran, o kateri želite razpravljati, kliknite ikono v {{brandShortname}}u, da ustvarite povezavo. Potem jo pošljite prijatelju na kateri koli način!
 
 invite_header_text_bold2=Povabite prijatelja, da se vam pridruži!
 invite_header_text4=Delite to povezavo za začetek skupnega brskanja po spletu.
 ## LOCALIZATION_NOTE(invite_copy_link_button, invite_copied_link_button,
 ## invite_email_link_button, invite_facebook_button2): These labels appear under
 ## an iconic button for the invite view.
 invite_copy_link_button=Kopiraj povezavo
 invite_copied_link_button=Kopirano!
--- a/browser/extensions/loop/chrome/locale/sr/loop.properties
+++ b/browser/extensions/loop/chrome/locale/sr/loop.properties
@@ -90,16 +90,17 @@ share_email_footer2=\n\n____________\nFirefox Hello вам омогућује да претражујете веб са пријатељима. Користите га када желите да урадите неке од следећих ствари: заједно планирате, заједно радите, смејете се. Сазнајте више на http://www.firefox.com/hello
 share_tweet=Прикључите се разговору на {{clientShortname2}}!
 
 share_add_service_button=Додај сервис
 
 ## LOCALIZATION NOTE (copy_link_menuitem, email_link_menuitem, delete_conversation_menuitem):
 ## These menu items are displayed from a panel's context menu for a conversation.
 copy_link_menuitem=Копирај везу
 email_link_menuitem=Пошаљи везу е-поштом
+edit_name_menuitem=Промени име
 delete_conversation_menuitem2=Избриши
 
 panel_footer_signin_or_signup_link=Пријави се или се региструј
 
 settings_menu_item_account=Налог
 settings_menu_item_settings=Поставке
 settings_menu_item_signout=Одјави се
 settings_menu_item_signin=Пријави се
@@ -178,25 +179,31 @@ feedback_request_button=Изађи
 tour_label=Водич
 
 rooms_list_recently_browsed2=Недавно прегледани
 rooms_list_currently_browsing2=Тренутно прегледавам
 rooms_signout_alert=Отворени разговори ће бити затворени
 room_name_untitled_page=Безимена страница
 
 ## LOCALIZATION NOTE (door_hanger_return, door_hanger_prompt_name, door_hanger_button): Dialog message on leaving conversation
+door_hanger_bye=Видимо се касније!
+door_hanger_current=Тренутно име:
+door_hanger_button2=У реду!
 
 # Infobar strings
 
 infobar_screenshare_browser_message2=Делите ваше језичке. Ваши пријатељи могу видети било који језичак на који кликнете
 infobar_button_restart_accesskey=е
+infobar_button_stop_label2=Престани делити
 infobar_button_stop_accesskey=З
 
 # Copy panel strings
 
+copy_panel_cancel_button_label=Не сада
+copy_panel_accept_button_label=Да, покажи ми како
 
 # E10s not supported strings
 
 e10s_not_supported_button_label=Покрени нови прозор
 e10s_not_supported_subheading={{brandShortname}} не ради у мулти-процес прозору.
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
@@ -229,19 +236,21 @@ retry_call_button=Покушај поново
 rooms_leave_button_label=Напусти
 
 rooms_panel_title=Изаберите разговор или започните нови
 
 rooms_room_full_call_to_action_label=Сазнајте више о {{clientShortname}} »
 rooms_room_full_call_to_action_nonFx_label=Преузмите {{brandShortname}} да би започели Ваш
 rooms_room_full_label=Већ има двоје људи у овом разговору.
 rooms_room_join_label=Придружи се разговору
-rooms_room_joined_label=Неко се придружио разговору!
 
 self_view_hidden_message=Приказ вашег екрана је сакривен али је и даље послат; промените величину прозора да би се приказао
 
+
 ## LOCALIZATION NOTE (tos_failure_message): Don't translate {{clientShortname}}
 ## as this will be replaced by clientShortname2.
 tos_failure_message={{clientShortname}} није доступан у вашој држави.
 
+display_name_guest=Гост
+
 ## LOCALIZATION NOTE(clientSuperShortname): This should not be localized and
 ## should remain "Hello" for all locales.
 clientSuperShortname=Hello
--- a/browser/extensions/loop/chrome/locale/tr/loop.properties
+++ b/browser/extensions/loop/chrome/locale/tr/loop.properties
@@ -198,16 +198,18 @@ door_hanger_return2=İstediğiniz zaman Hello paneli üzerinden bu paylaşılan oturuma dönebilirsiniz. Bu oturuma hatırlanması daha kolay bir ad vermek ister misiniz?
 door_hanger_current=Şu anki ad:
 door_hanger_button2=Tamam!
 
 # Infobar strings
 
 infobar_screenshare_no_guest_message=Arkadaşınız katıldıktan sonra tıkladığınız her sekmeyi görebilecek.
 infobar_screenshare_browser_message2=Sekmelerinizi paylaşıyorsunuz. Tıkladığınız her sekme arkadaşlarınız tarafından görülebilir
 infobar_screenshare_browser_message3=Şu an sekmelerinizi paylaşıyorsunuz. Arkadaşınız, tıkladığınız her sekmeyi görecek.
+infobar_screenshare_stop_sharing_message2=Artık sekmelerinizi paylaşmıyorsunuz.
+infobar_screenshare_stop_no_guest_message=Sekmelerinizi paylaşmayı durdurdunuz. Arkadaşınız katıldığında siz paylaşmayı yeniden başlatana kadar bir şey göremeyecek.
 infobar_button_restart_label2=Paylaşmayı yeniden başlat
 infobar_button_restart_accesskey=b
 infobar_button_stop_label2=Paylaşmayı durdur
 infobar_button_stop_accesskey=d
 infobar_button_disconnect_label=Bağlantıyı kes
 infobar_button_disconnect_accesskey=B
 
 # Copy panel strings
--- a/browser/extensions/loop/chrome/test/mochitest/browser_copypanel.js
+++ b/browser/extensions/loop/chrome/test/mochitest/browser_copypanel.js
@@ -90,73 +90,126 @@ function testClick(domain, onIframe) {
         });
       }
     });
   });
 }
 
 // Show the copy panel on location bar copy.
 add_task(function* test_copy_panel_shown() {
+  Services.prefs.setIntPref("loop.copy.showLimit", 2);
   let [histogram, detail] = yield testClick("some.site", iframe => {
     iframe.contentWindow.dispatchEvent(new CustomEvent("CopyPanelClick", {
       detail: { test: true }
     }));
   });
 
   Assert.notEqual(document.getElementById("loop-copy-notification-panel"), null, "copy panel exists on copy");
   Assert.strictEqual(histogram.snapshot().counts[gConstants.COPY_PANEL.SHOWN], 1, "triggered telemetry count for showing");
   Assert.ok(detail.test, "got the special event for testing");
 });
 
 // Click the accept button without checkbox.
 add_task(function* test_click_yes_again() {
+  Services.prefs.setIntPref("loop.copy.showLimit", 2);
   let [histogram] = yield testClick("yes.again", iframe => {
     iframe.contentDocument.querySelector(".copy-button:last-child").click();
   });
 
   Assert.notEqual(document.getElementById("loop-copy-notification-panel"), null, "copy panel still exists");
   Assert.strictEqual(histogram.snapshot().counts[gConstants.COPY_PANEL.YES_AGAIN], 1, "triggered telemetry count for yes again");
   yield waitForLoopPanelShowHide();
 });
 
 // Click the accept button with checkbox.
 add_task(function* test_click_yes_never() {
+  Services.prefs.setIntPref("loop.copy.showLimit", 2);
   let [histogram] = yield testClick("yes.never", iframe => {
     iframe.contentDocument.querySelector(".copy-toggle-label").click();
     iframe.contentDocument.querySelector(".copy-button:last-child").click();
   });
 
   Assert.equal(document.getElementById("loop-copy-notification-panel"), null, "copy panel removed");
   Assert.strictEqual(histogram.snapshot().counts[gConstants.COPY_PANEL.YES_NEVER], 1, "triggered telemetry count for yes never");
   yield waitForLoopPanelShowHide();
 });
 
 // Click the cancel button without checkbox.
 add_task(function* test_click_no_again() {
+  Services.prefs.setIntPref("loop.copy.showLimit", 2);
   let [histogram] = yield testClick("no.again", iframe => {
     iframe.contentDocument.querySelector(".copy-button").click();
   });
 
   Assert.notEqual(document.getElementById("loop-copy-notification-panel"), null, "copy panel still exists");
   Assert.strictEqual(histogram.snapshot().counts[gConstants.COPY_PANEL.NO_AGAIN], 1, "triggered telemetry count for no again");
 });
 
 // Click the cancel button with checkbox.
 add_task(function* test_click_no_never() {
+  Services.prefs.setIntPref("loop.copy.showLimit", 2);
   let [histogram] = yield testClick("no.never", iframe => {
     iframe.contentDocument.querySelector(".copy-toggle-label").click();
     iframe.contentDocument.querySelector(".copy-button").click();
   });
 
   Assert.equal(document.getElementById("loop-copy-notification-panel"), null, "copy panel removed");
   Assert.strictEqual(histogram.snapshot().counts[gConstants.COPY_PANEL.NO_NEVER], 1, "triggered telemetry count for no never");
 });
 
 // Try to trigger copy panel after saying no.
 add_task(function* test_click_no_never_retry() {
+  Services.prefs.setIntPref("loop.copy.showLimit", 2);
   yield testClick("no.never", iframe => {
     iframe.contentDocument.querySelector(".copy-toggle-label").click();
     iframe.contentDocument.querySelector(".copy-button").click();
   });
   yield LoopUI.maybeAddCopyPanel();
 
   Assert.equal(document.getElementById("loop-copy-notification-panel"), null, "copy panel stays removed");
 });
+
+// Only show the copy panel some number of times.
+add_task(function* test_click_no_several() {
+  Services.prefs.setIntPref("loop.copy.showLimit", 2);
+  let [histogram] = yield testClick("no.several.0", iframe => {
+    iframe.contentDocument.querySelector(".copy-button").click();
+  });
+
+  Assert.notEqual(document.getElementById("loop-copy-notification-panel"), null, "copy panel still exists");
+  Assert.equal(Services.prefs.getIntPref("loop.copy.showLimit"), 1, "decremented show limit");
+  Assert.strictEqual(histogram.snapshot().counts[gConstants.COPY_PANEL.SHOWN], 1, "triggered telemetry count for showing");
+
+  yield testClick("no.several.1", iframe => {
+    iframe.contentDocument.querySelector(".copy-button").click();
+  });
+
+  Assert.notEqual(document.getElementById("loop-copy-notification-panel"), null, "copy panel still exists");
+  Assert.equal(Services.prefs.getIntPref("loop.copy.showLimit"), 0, "decremented show limit again");
+  Assert.strictEqual(histogram.snapshot().counts[gConstants.COPY_PANEL.SHOWN], 1, "triggered telemetry count for showing again after resetting");
+
+  gURLBar.value = "http://no.several.2/";
+  gURLBar.focus();
+  gURLBar.select();
+  goDoCommand("cmd_copy");
+
+  Assert.equal(document.getElementById("loop-copy-notification-panel"), null, "copy panel removed");
+  Assert.equal(Services.prefs.getIntPref("loop.copy.showLimit"), 0, "show limit unchanged");
+  Assert.strictEqual(histogram.snapshot().counts[gConstants.COPY_PANEL.SHOWN], 1, "telemetry count for showing unchanged");
+});
+
+// Make sure there's no panel if already sharing.
+add_task(function* test_already_sharing_no_copy() {
+  let histogram = Services.telemetry.getHistogramById("LOOP_COPY_PANEL_ACTIONS");
+  histogram.clear();
+  cleanUp();
+  gURLBar.value = "http://already.sharing/";
+  MozLoopService.setScreenShareState("1", true);
+
+  // Continue testing when the click has been handled.
+  LoopUI.addCopyPanel();
+  gURLBar.focus();
+  gURLBar.select();
+  goDoCommand("cmd_copy");
+
+  Assert.strictEqual(histogram.snapshot().counts[gConstants.COPY_PANEL.SHOWN], 0, "no triggered telemetry count for not showing");
+  MozLoopService.setScreenShareState("1", false);
+});
--- a/browser/extensions/loop/chrome/test/mochitest/browser_throttler.js
+++ b/browser/extensions/loop/chrome/test/mochitest/browser_throttler.js
@@ -1,17 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 let { LoopThrottler } = window;
 const THROTTLE_HOSTNAME = "throttle.example.invalid";
 
-LoopUI.removeCopyPanel();
 let origChannel = Services.prefs.getCharPref("app.update.channel");
 Services.prefs.setCharPref("test.throttler", THROTTLE_HOSTNAME);
 let origDNS = LoopThrottler._dns;
 registerCleanupFunction(() => {
   Services.prefs.setCharPref("app.update.channel", origChannel);
   LoopThrottler._dns = origDNS;
 });
 
@@ -28,76 +27,107 @@ function setThreshold(release, beta, nig
 }
 LoopThrottler._dns = {
   RESOLVE_DISABLE_IPV6: {},
 
   asyncResolve(host, flags, callback) {
     gNumResolved++;
     Assert.strictEqual(host, THROTTLE_HOSTNAME, "should be using test host");
     Assert.strictEqual(flags, this.RESOLVE_DISABLE_IPV6, "should set disable ipv6 flag");
-    callback(null, { getNextAddrAsString() { return gTestIP; } }, 0);
+    if (gTestIP === null) {
+      callback({}, null, 1);
+    }
+    else {
+      callback(null, {
+        getNextAddrAsString() {
+          return gTestIP;
+        }
+      }, 0);
+    }
   }
 };
 
 function testThrottler() {
   return LoopThrottler.check("test").then(() => true, () => false);
 }
 
-// With a 0 threshold, copy panel shouldn't be created.
-add_task(function* test_init_copy_panel_not_exist() {
+// With a 0 threshold, no ticket will pass.
+add_task(function* test_0_percent() {
   resetResolved();
   setThreshold(0);
   Services.prefs.setIntPref("test.ticket", -1);
 
   Assert.ok(!(yield testThrottler()), "don't trigger for 0%");
   Assert.notEqual(Services.prefs.getIntPref("test.ticket"), -1, "ticket should be updated");
   Assert.equal(gNumResolved, 1, "dns resolved once");
 });
 
-// Even with 0 threshold, special ticket skips DNS and creates panel.
-add_task(function* test_init_copy_panel_short_circuit() {
+// Even with 0 threshold, special ticket skips DNS.
+add_task(function* test_short_circuit() {
   resetResolved();
   setThreshold(0);
   Services.prefs.setIntPref("test.ticket", 255);
 
   Assert.ok(yield testThrottler(), "trigger for short circuit");
   Assert.equal(Services.prefs.getIntPref("test.ticket"), 255, "ticket should be unchanged");
   Assert.equal(gNumResolved, 0, "dns not used");
 });
 
+// No ticket will pass for failed dns.
+add_task(function* test_failed_dns() {
+  resetResolved();
+  gTestIP = null;
+  Services.prefs.setIntPref("test.ticket", -1);
+
+  Assert.ok(!(yield testThrottler()), "don't trigger for failed dns");
+  Assert.notEqual(Services.prefs.getIntPref("test.ticket"), -1, "ticket should be updated");
+  Assert.equal(gNumResolved, 1, "dns resolved once");
+});
+
+// Even with max threshold, no ticket will pass for non-loopback entry.
+add_task(function* test_non_loopback() {
+  resetResolved();
+  gTestIP = "192.255.255.255";
+  Services.prefs.setIntPref("test.ticket", -1);
+
+  Assert.ok(!(yield testThrottler()), "don't trigger for invalid loopback");
+  Assert.notEqual(Services.prefs.getIntPref("test.ticket"), -1, "ticket should be updated");
+  Assert.equal(gNumResolved, 1, "dns resolved once");
+});
+
 // With max threshold, any ticket will pass.
-add_task(function* test_init_copy_panel_100_percent() {
+add_task(function* test_100_percent() {
   resetResolved();
   setThreshold(255);
   Services.prefs.setIntPref("test.ticket", -1);
 
   Assert.ok(yield testThrottler(), "trigger for 100%");
   Assert.equal(Services.prefs.getIntPref("test.ticket"), 255, "ticket should be set to max");
   Assert.equal(gNumResolved, 1, "dns resolved once");
 });
 
 // Check with tickets just over/match/under the threshold.
-add_task(function* test_init_copy_panel_1_threshold() {
+add_task(function* test_1_threshold() {
   setThreshold(1);
 
   resetResolved();
   Services.prefs.setIntPref("test.ticket", 2);
   Assert.ok(!(yield testThrottler()), "don't trigger for over");
 
   resetResolved();
   Services.prefs.setIntPref("test.ticket", 1);
   Assert.ok(!(yield testThrottler()), "don't trigger for match");
 
   resetResolved();
   Services.prefs.setIntPref("test.ticket", 0);
   Assert.ok(yield testThrottler(), "trigger for under");
 });
 
 // Check that only nightly channel is activated.
-add_task(function* test_init_copy_panel_nightly() {
+add_task(function* test_nightly() {
   setThreshold("0", "0", "1");
 
   resetResolved();
   Services.prefs.setCharPref("app.update.channel", "nightly");
   Services.prefs.setIntPref("test.ticket", 0);
   Assert.ok(yield testThrottler(), "trigger for nightly");
 
   resetResolved();
@@ -112,17 +142,17 @@ add_task(function* test_init_copy_panel_
 
   resetResolved();
   Services.prefs.setCharPref("app.update.channel", "other");
   Services.prefs.setIntPref("test.ticket", 0);
   Assert.ok(!(yield testThrottler()), "don't trigger for other");
 });
 
 // Check that only beta channel is activated.
-add_task(function* test_init_copy_panel_beta() {
+add_task(function* test_beta() {
   setThreshold("0", "1", "0");
 
   resetResolved();
   Services.prefs.setCharPref("app.update.channel", "nightly");
   Services.prefs.setIntPref("test.ticket", 0);
   Assert.ok(!(yield testThrottler()), "don't trigger for nightly");
 
   resetResolved();
@@ -137,17 +167,17 @@ add_task(function* test_init_copy_panel_
 
   resetResolved();
   Services.prefs.setCharPref("app.update.channel", "other");
   Services.prefs.setIntPref("test.ticket", 0);
   Assert.ok(!(yield testThrottler()), "don't trigger for other");
 });
 
 // Check that only release channel is activated.
-add_task(function* test_init_copy_panel_release() {
+add_task(function* test_release() {
   setThreshold("1", "0", "0");
 
   resetResolved();
   Services.prefs.setCharPref("app.update.channel", "nightly");
   Services.prefs.setIntPref("test.ticket", 0);
   Assert.ok(!(yield testThrottler()), "don't trigger for nightly");
 
   resetResolved();
--- a/browser/extensions/loop/install.rdf.in
+++ b/browser/extensions/loop/install.rdf.in
@@ -4,17 +4,17 @@
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 #filter substitution
 
 <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
   <Description about="urn:mozilla:install-manifest">
     <em:id>loop@mozilla.org</em:id>
     <em:bootstrap>true</em:bootstrap>
-    <em:version>1.3.1</em:version>
+    <em:version>1.3.2</em:version>
     <em:type>2</em:type>
 
     <!-- Target Application this extension can install into,
          with minimum and maximum supported versions. -->
     <em:targetApplication>
       <Description>
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
         <em:minVersion>46.0a1</em:minVersion>