Bug 1060525 - Various string changes for Loop based on UX feedback. rs=MattN
authorJared Wein <jwein@mozilla.com>
Mon, 01 Sep 2014 01:14:03 -0400
changeset 224395 43aa410f01081d5aaa8cb971808f96c284252b70
parent 224394 5fc50e5cd5490b8ce475c4869a5784de05fc3145
child 224396 61b046e65d0271f7510ba518e4f4e73eea137e98
push id3979
push userraliiev@mozilla.com
push dateMon, 13 Oct 2014 16:35:44 +0000
treeherdermozilla-beta@30f2cc610691 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersMattN
bugs1060525
milestone34.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1060525 - Various string changes for Loop based on UX feedback. rs=MattN
browser/components/loop/content/js/conversation.js
browser/components/loop/content/js/conversation.jsx
browser/components/loop/content/js/panel.js
browser/components/loop/content/js/panel.jsx
browser/components/loop/standalone/content/js/webapp.js
browser/components/loop/standalone/content/js/webapp.jsx
browser/components/loop/standalone/content/l10n/data.ini
browser/components/loop/test/desktop-local/panel_test.js
browser/locales/en-US/chrome/browser/loop/loop.properties
--- a/browser/components/loop/content/js/conversation.js
+++ b/browser/components/loop/content/js/conversation.js
@@ -93,47 +93,47 @@ loop.conversation = (function(OT, mozL10
             React.DOM.div({className: "fx-embedded-incoming-call-button-spacer"}), 
 
             React.DOM.div({className: "btn-chevron-menu-group"}, 
               React.DOM.div({className: "btn-group-chevron"}, 
                 React.DOM.div({className: "btn-group"}, 
 
                   React.DOM.button({className: btnClassDecline, 
                           onClick: this._handleDecline}, 
-                    __("incoming_call_decline_button")
+                    __("incoming_call_cancel_button")
                   ), 
                   React.DOM.div({className: "btn-chevron", 
                        onClick: this._toggleDeclineMenu}
                   )
                 ), 
 
                 React.DOM.ul({className: dropdownMenuClassesDecline}, 
                   React.DOM.li({className: "btn-block", onClick: this._handleDeclineBlock}, 
-                    __("incoming_call_decline_and_block_button")
+                    __("incoming_call_cancel_and_block_button")
                   )
                 )
 
               )
             ), 
 
             React.DOM.div({className: "fx-embedded-incoming-call-button-spacer"}), 
 
             React.DOM.div({className: "btn-chevron-menu-group"}, 
               React.DOM.div({className: "btn-group"}, 
                 React.DOM.button({className: btnClassAccept, 
                         onClick: this._handleAccept("audio-video")}, 
                   React.DOM.span({className: "fx-embedded-answer-btn-text"}, 
-                    __("incoming_call_answer_button")
+                    __("incoming_call_accept_button")
                   ), 
                   React.DOM.span({className: "fx-embedded-btn-icon-video"}
                   )
                 ), 
                 React.DOM.div({className: "call-audio-only", 
                      onClick: this._handleAccept("audio"), 
-                     title: __("incoming_call_answer_audio_only_tooltip")}
+                     title: __("incoming_call_accept_audio_only_tooltip")}
                 )
               )
             ), 
 
             React.DOM.div({className: "fx-embedded-incoming-call-button-spacer"})
 
           )
         )
@@ -329,17 +329,17 @@ loop.conversation = (function(OT, mozL10
       // this by better "call failed" UI.
       this._notifier.errorL10n("cannot_start_call_session_not_ready");
     },
 
     /**
      * Call has ended, display a feedback form.
      */
     feedback: function() {
-      document.title = mozL10n.get("call_has_ended");
+      document.title = mozL10n.get("conversation_has_ended");
 
       var feebackAPIBaseUrl = navigator.mozLoop.getLoopCharPref(
         "feedback.baseUrl");
 
       var appVersionInfo = navigator.mozLoop.appVersionInfo;
 
       var feedbackClient = new loop.FeedbackAPIClient(feebackAPIBaseUrl, {
         product: navigator.mozLoop.getLoopCharPref("feedback.product"),
--- a/browser/components/loop/content/js/conversation.jsx
+++ b/browser/components/loop/content/js/conversation.jsx
@@ -93,47 +93,47 @@ loop.conversation = (function(OT, mozL10
             <div className="fx-embedded-incoming-call-button-spacer"></div>
 
             <div className="btn-chevron-menu-group">
               <div className="btn-group-chevron">
                 <div className="btn-group">
 
                   <button className={btnClassDecline}
                           onClick={this._handleDecline}>
-                    {__("incoming_call_decline_button")}
+                    {__("incoming_call_cancel_button")}
                   </button>
                   <div className="btn-chevron"
                        onClick={this._toggleDeclineMenu}>
                   </div>
                 </div>
 
                 <ul className={dropdownMenuClassesDecline}>
                   <li className="btn-block" onClick={this._handleDeclineBlock}>
-                    {__("incoming_call_decline_and_block_button")}
+                    {__("incoming_call_cancel_and_block_button")}
                   </li>
                 </ul>
 
               </div>
             </div>
 
             <div className="fx-embedded-incoming-call-button-spacer"></div>
 
             <div className="btn-chevron-menu-group">
               <div className="btn-group">
                 <button className={btnClassAccept}
                         onClick={this._handleAccept("audio-video")}>
                   <span className="fx-embedded-answer-btn-text">
-                    {__("incoming_call_answer_button")}
+                    {__("incoming_call_accept_button")}
                   </span>
                   <span className="fx-embedded-btn-icon-video">
                   </span>
                 </button>
                 <div className="call-audio-only"
                      onClick={this._handleAccept("audio")}
-                     title={__("incoming_call_answer_audio_only_tooltip")} >
+                     title={__("incoming_call_accept_audio_only_tooltip")} >
                 </div>
               </div>
             </div>
 
             <div className="fx-embedded-incoming-call-button-spacer"></div>
 
           </div>
         </div>
@@ -329,17 +329,17 @@ loop.conversation = (function(OT, mozL10
       // this by better "call failed" UI.
       this._notifier.errorL10n("cannot_start_call_session_not_ready");
     },
 
     /**
      * Call has ended, display a feedback form.
      */
     feedback: function() {
-      document.title = mozL10n.get("call_has_ended");
+      document.title = mozL10n.get("conversation_has_ended");
 
       var feebackAPIBaseUrl = navigator.mozLoop.getLoopCharPref(
         "feedback.baseUrl");
 
       var appVersionInfo = navigator.mozLoop.appVersionInfo;
 
       var feedbackClient = new loop.FeedbackAPIClient(feebackAPIBaseUrl, {
         product: navigator.mozLoop.getLoopCharPref("feedback.product"),
--- a/browser/components/loop/content/js/panel.js
+++ b/browser/components/loop/content/js/panel.js
@@ -202,18 +202,18 @@ loop.panel = (function(_, mozL10n) {
           this.props.notifier.errorL10n("unable_retrieve_url");
           this.setState(this.getInitialState());
         }
       }
     },
 
     _generateMailTo: function() {
       return encodeURI([
-        "mailto:?subject=" + __("share_email_subject2") + "&",
-        "body=" + __("share_email_body2", {callUrl: this.state.callUrl})
+        "mailto:?subject=" + __("share_email_subject3") + "&",
+        "body=" + __("share_email_body3", {callUrl: this.state.callUrl})
       ].join(""));
     },
 
     handleEmailButtonClick: function(event) {
       // Note: side effect
       document.location = event.target.dataset.mailto;
     },
 
--- a/browser/components/loop/content/js/panel.jsx
+++ b/browser/components/loop/content/js/panel.jsx
@@ -202,18 +202,18 @@ loop.panel = (function(_, mozL10n) {
           this.props.notifier.errorL10n("unable_retrieve_url");
           this.setState(this.getInitialState());
         }
       }
     },
 
     _generateMailTo: function() {
       return encodeURI([
-        "mailto:?subject=" + __("share_email_subject2") + "&",
-        "body=" + __("share_email_body2", {callUrl: this.state.callUrl})
+        "mailto:?subject=" + __("share_email_subject3") + "&",
+        "body=" + __("share_email_body3", {callUrl: this.state.callUrl})
       ].join(""));
     },
 
     handleEmailButtonClick: function(event) {
       // Note: side effect
       document.location = event.target.dataset.mailto;
     },
 
--- a/browser/components/loop/standalone/content/js/webapp.js
+++ b/browser/components/loop/standalone/content/js/webapp.js
@@ -68,17 +68,17 @@ loop.webapp = (function($, _, OT, webL10
 
     render: function() {
       /* jshint ignore:start */
       return (
         React.DOM.div({className: "expired-url-info"}, 
           React.DOM.div({className: "info-panel"}, 
             React.DOM.div({className: "firefox-logo"}), 
             React.DOM.h1(null, __("call_url_unavailable_notification_heading")), 
-            React.DOM.h4(null, __("call_url_unavailable_notification_message"))
+            React.DOM.h4(null, __("call_url_unavailable_notification_message2"))
           ), 
           PromoteFirefoxView({helper: this.props.helper})
         )
       );
       /* jshint ignore:end */
     }
   });
 
--- a/browser/components/loop/standalone/content/js/webapp.jsx
+++ b/browser/components/loop/standalone/content/js/webapp.jsx
@@ -68,17 +68,17 @@ loop.webapp = (function($, _, OT, webL10
 
     render: function() {
       /* jshint ignore:start */
       return (
         <div className="expired-url-info">
           <div className="info-panel">
             <div className="firefox-logo" />
             <h1>{__("call_url_unavailable_notification_heading")}</h1>
-            <h4>{__("call_url_unavailable_notification_message")}</h4>
+            <h4>{__("call_url_unavailable_notification_message2")}</h4>
           </div>
           <PromoteFirefoxView helper={this.props.helper} />
         </div>
       );
       /* jshint ignore:end */
     }
   });
 
--- a/browser/components/loop/standalone/content/l10n/data.ini
+++ b/browser/components/loop/standalone/content/l10n/data.ini
@@ -1,64 +1,64 @@
 ## LOCALIZATION NOTE: In this file, don't translate the part between {{..}}
 [en]
-call_has_ended=Your call has ended.
+restart_call=Rejoin
+begin_call_prompt=Ready to start your conversation?
+conversation_has_ended=Your conversation has ended.
 call_timeout_notification_text=Your call did not go through.
 missing_conversation_info=Missing conversation information.
 network_disconnected=The network connection terminated abruptly.
 peer_ended_conversation2=The person you were calling has ended the conversation.
 unable_retrieve_call_info=Unable to retrieve conversation information.
 hangup_button_title=Hang up
 hangup_button_caption=End Call
 mute_local_audio_button_title=Mute your audio
 unmute_local_audio_button_title=Unmute your audio
 mute_local_video_button_title=Mute your video
 unmute_local_video_button_title=Unmute your video
-start_call=Start the call
+start_call_no_identity=Start conversation?
+start_call_identity=Conversation with {{incomingCallIdentity}}
 welcome=Welcome to the {{clientShortname}} web client.
 incompatible_browser=Incompatible Browser
 powered_by_webrtc=The audio and video components of {{clientShortname}} are powered by WebRTC.
 use_latest_firefox.innerHTML=Please try this link in a WebRTC-enabled browser, such as <a href="{{ff_url}}">{{brandShortname}}</a>.
 incompatible_device=Incompatible device
 sorry_device_unsupported=Sorry, {{clientShortname}} does not currently support your device.
 use_firefox_windows_mac_linux=Please open this page using the latest {{brandShortname}} on Windows, Android, Mac or Linux.
 connection_error_see_console_notification=Call failed; see console for details.
 call_url_unavailable_notification_heading=Oops!
-call_url_unavailable_notification_message=This URL is unavailable.
+call_url_unavailable_notification_message2=Sorry, this URL is not available. It may be expired or entered incorrectly.
 promote_firefox_hello_heading=Download {{brandShortname}} to make free audio and video calls!
 get_firefox_button=Get {{brandShortname}}
-call_url_unavailable_notification=This URL is unavailable.
 initiate_call_button_label=Click Call to start a video chat
 initiate_audio_video_call_button=Call
 initiate_audio_video_call_tooltip=Start a video call
 initiate_audio_call_button=Voice call
+reject_incoming_call=Cancel
 legal_text_and_links=By using this product you agree to the {{terms_of_use_url}} and {{privacy_notice_url}}
 terms_of_use_link_text=Terms of use
 privacy_notice_link_text=Privacy notice
 brandShortname=Firefox
 clientShortname=WebRTC!
 ## LOCALIZATION NOTE (call_url_creation_date_label): Example output: (from May 26, 2014)
 call_url_creation_date_label=(from {{call_url_creation_date}})
 
 [fr]
-call_has_ended=L'appel est terminé.
 call_timeout_notification_text=Votre appel n'a pas abouti.
 missing_conversation_info=Informations de communication manquantes.
 network_disconnected=La connexion réseau semble avoir été interrompue.
 unable_retrieve_call_info=Impossible de récupérer les informations liées à cet appel.
 hangup_button_title=Terminer l'appel
 hangup_button_caption=Raccrocher
 mute_local_audio_button_title=Couper la diffusion audio
 unmute_local_audio_button_title=Reprendre la diffusion audio
 mute_local_video_button_title=Couper la diffusion vidéo
 unmute_local_video_button_title=Reprendre la diffusion vidéo
-start_call=Démarrer l'appel
 welcome=Bienvenue sur {{clientShortname}}.
 incompatible_browser=Navigateur non supporté
 powered_by_webrtc=Les fonctionnalités audio et vidéo de {{clientShortname}} utilisent WebRTC.
 use_latest_firefox.innerHTML=Veuillez essayer ce lien dans un navigateur acceptant WebRTC, par exemple <a href="{{ff_url}}">{{brandShortname}}</a>.
 incompatible_device=Plateforme non supportée
 sorry_device_unsupported=Désolé, {{clientShortname}} ne fonctionne actuellement pas sur votre appareil.
 use_firefox_windows_mac_linux=Merci d'ouvrir cette page avec une version récente de {{brandShortname}} pour Windows, Android, Mac ou Linux.
 call_url_unavailable_notification_heading=Oups !
-call_url_unavailable_notification_message=Cette URL n'est pas disponible.
 promote_firefox_hello_heading=Téléchargez {{brandShortname}} pour passer des appels audio et vidéo gratuitement !
 get_firefox_button=Téléchargez {{brandShortname}}
--- a/browser/components/loop/test/desktop-local/panel_test.js
+++ b/browser/components/loop/test/desktop-local/panel_test.js
@@ -259,19 +259,19 @@ describe("loop.panel", function() {
 
     describe("Rendering the component should generate a call URL", function() {
 
       beforeEach(function() {
         document.mozL10n.initialize({
           getStrings: function(key) {
             var text;
 
-            if (key === "share_email_subject2")
+            if (key === "share_email_subject3")
               text = "email-subject";
-            else if (key === "share_email_body2")
+            else if (key === "share_email_body3")
               text = "{{callUrl}}";
 
             return JSON.stringify({textContent: text});
           }
         });
       });
 
       it("should make a request to requestCallUrl", function() {
--- a/browser/locales/en-US/chrome/browser/loop/loop.properties
+++ b/browser/locales/en-US/chrome/browser/loop/loop.properties
@@ -9,32 +9,34 @@ share_link_header_text=Share this link t
 # Status text
 display_name_dnd_status=Do Not Disturb
 display_name_available_status=Available
 
 unable_retrieve_url=Sorry, we were unable to retrieve a call url.
 
 # Conversation Window Strings
 
+begin_call_prompt=Ready to start your conversation?
 incoming_call_title=Incoming Call…
 incoming_call=Incoming call
-incoming_call_answer_button=Answer
-incoming_call_answer_audio_only_tooltip=Answer with voice
-incoming_call_decline_button=Decline
-incoming_call_decline_and_block_button=Decline and Block
+incoming_call_accept_button=Accept
+incoming_call_accept_audio_only_tooltip=Accept with voice
+incoming_call_cancel_button=Cancel
+incoming_call_cancel_and_block_button=Cancel and Block
 incoming_call_block_button=Block
 hangup_button_title=Hang up
 hangup_button_caption=End Call
 mute_local_audio_button_title=Mute your audio
 unmute_local_audio_button_title=Unmute your audio
 mute_local_video_button_title=Mute your video
 unmute_local_video_button_title=Unmute your video
 
 peer_ended_conversation2=The person you were calling has ended the conversation.
-call_has_ended=Your call has ended.
+conversation_has_ended=Your conversation has ended.
+restart_call=Rejoin
 
 cannot_start_call_session_not_ready=Can't start call, session is not ready.
 network_disconnected=The network connection terminated abruptly.
 
 connection_error_see_console_notification=Call failed; see console for details.
 
 ## LOCALIZATION NOTE (legal_text_and_links2): In this item, don't translate the
 ## parts between {{..}} because these will be replaced with links with the labels
@@ -56,17 +58,17 @@ feedback_custom_category_text_placeholde
 feedback_submit_button=Submit
 feedback_back_button=Back
 ## LOCALIZATION NOTE (feedback_window_will_close_in2):
 ## Semicolon-separated list of plural forms. See:
 ## http://developer.mozilla.org/en/docs/Localization_and_Plurals
 ## In this item, don't translate the part between {{..}}
 feedback_window_will_close_in2=This window will close in {{countdown}} second;This window will close in {{countdown}} seconds
 
-share_email_subject2=Invitation to chat
-## LOCALIZATION NOTE (share_email_body2): In this item, don't translate the
+share_email_subject3=You have been invited to a conversation
+## LOCALIZATION NOTE (share_email_body3): In this item, don't translate the
 ## part between {{..}} and leave the \r\n\r\n part alone
-share_email_body2=Please click this link to call me:\r\n\r\n{{callUrl}}
+share_email_body3=To accept this invitation, just copy or click this link to start your conversation:\r\n\r\n{{callUrl}}
 share_button=Email
 copy_url_button=Copy
 copied_url_button=Copied!
 
 panel_footer_signin_or_signup_link=Sign In or Sign Up