Bug 1079430 - Land the new Loop strings for Firefox 35. r=Standard8
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -1602,16 +1602,17 @@ pref("loop.throttled", false);
pref("loop.enabled", true);
pref("loop.throttled", true);
pref("loop.soft_start_ticket_number", -1);
pref("loop.soft_start_hostname", "soft-start.loop.services.mozilla.com");
#endif
pref("loop.server", "https://loop.services.mozilla.com");
pref("loop.seenToS", "unseen");
+pref("loop.learnMoreUrl", "https://www.firefox.com/hello/");
pref("loop.legal.ToS_url", "https://call.mozilla.com/legal/terms/");
pref("loop.legal.privacy_url", "https://www.mozilla.org/privacy/");
pref("loop.do_not_disturb", false);
pref("loop.ringtone", "chrome://browser/content/loop/shared/sounds/Firefox-Long.ogg");
pref("loop.retry_delay.start", 60000);
pref("loop.retry_delay.limit", 300000);
pref("loop.feedback.baseUrl", "https://input.mozilla.org/api/v1/feedback");
pref("loop.feedback.product", "Loop");
--- a/browser/components/customizableui/CustomizableWidgets.jsm
+++ b/browser/components/customizableui/CustomizableWidgets.jsm
@@ -900,19 +900,18 @@ const CustomizableWidgets = [
tooltiptext: "email-link-button.tooltiptext3",
onCommand: function(aEvent) {
let win = aEvent.view;
win.MailIntegration.sendLinkForWindow(win.content);
}
}, {
id: "loop-call-button",
type: "custom",
- // XXX Bug 1013989 will provide a label for the button
- label: "loop-call-button.label",
- tooltiptext: "loop-call-button.tooltiptext",
+ label: "loop-call-button2.label",
+ tooltiptext: "loop-call-button2.tooltiptext",
defaultArea: CustomizableUI.AREA_NAVBAR,
introducedInVersion: 1,
onBuild: function(aDocument) {
let node = aDocument.createElementNS(kNSXUL, "toolbarbutton");
node.setAttribute("id", this.id);
node.classList.add("toolbarbutton-1");
node.classList.add("chromeclass-toolbar-additional");
node.classList.add("badged-button");
--- a/browser/components/loop/MozLoopService.jsm
+++ b/browser/components/loop/MozLoopService.jsm
@@ -1348,17 +1348,17 @@ this.MozLoopService = {
*
* @param {key} The element id to get strings for.
* @return {String} A JSON string containing the localized
* attribute/value pairs for the element.
*/
getStrings: function(key) {
var stringData = MozLoopServiceInternal.localizedStrings;
if (!(key in stringData)) {
- Cu.reportError('No string for key: ' + key + 'found');
+ log.error("No string found for key: ", key);
return "";
}
return JSON.stringify(stringData[key]);
},
/**
* Returns a new GUID (UUID) in curly braces format.
--- a/browser/components/loop/content/js/panel.js
+++ b/browser/components/loop/content/js/panel.js
@@ -163,17 +163,17 @@ loop.panel = (function(_, mozL10n) {
return {seenToS: navigator.mozLoop.getLoopCharPref('seenToS')};
},
render: function() {
if (this.state.seenToS == "unseen") {
var terms_of_use_url = navigator.mozLoop.getLoopCharPref('legal.ToS_url');
var privacy_notice_url = navigator.mozLoop.getLoopCharPref('legal.privacy_url');
var tosHTML = __("legal_text_and_links3", {
- "clientShortname": __("client_shortname_fallback"),
+ "clientShortname": __("clientShortname2"),
"terms_of_use": React.renderComponentToStaticMarkup(
React.DOM.a({href: terms_of_use_url, target: "_blank"},
__("legal_text_tos")
)
),
"privacy_notice": React.renderComponentToStaticMarkup(
React.DOM.a({href: privacy_notice_url, target: "_blank"},
__("legal_text_privacy")
@@ -361,18 +361,21 @@ loop.panel = (function(_, mozL10n) {
this.setState(this.getInitialState());
}
}
},
handleEmailButtonClick: function(event) {
this.handleLinkExfiltration(event);
- navigator.mozLoop.composeEmail(__("share_email_subject3"),
- __("share_email_body3", { callUrl: this.state.callUrl }));
+ navigator.mozLoop.composeEmail(
+ __("share_email_subject4", { clientShortname: __("clientShortname2")}),
+ __("share_email_body4", { callUrl: this.state.callUrl,
+ clientShortname: __("clientShortname2"),
+ learnMoreUrl: navigator.mozLoop.getLoopCharPref("learnMoreUrl") }));
},
handleCopyButtonClick: function(event) {
this.handleLinkExfiltration(event);
// XXX the mozLoop object should be passed as a prop, to ease testing and
// using a fake implementation in UI components showcase.
navigator.mozLoop.copyString(this.state.callUrl);
this.setState({copied: true});
--- a/browser/components/loop/content/js/panel.jsx
+++ b/browser/components/loop/content/js/panel.jsx
@@ -163,17 +163,17 @@ loop.panel = (function(_, mozL10n) {
return {seenToS: navigator.mozLoop.getLoopCharPref('seenToS')};
},
render: function() {
if (this.state.seenToS == "unseen") {
var terms_of_use_url = navigator.mozLoop.getLoopCharPref('legal.ToS_url');
var privacy_notice_url = navigator.mozLoop.getLoopCharPref('legal.privacy_url');
var tosHTML = __("legal_text_and_links3", {
- "clientShortname": __("client_shortname_fallback"),
+ "clientShortname": __("clientShortname2"),
"terms_of_use": React.renderComponentToStaticMarkup(
<a href={terms_of_use_url} target="_blank">
{__("legal_text_tos")}
</a>
),
"privacy_notice": React.renderComponentToStaticMarkup(
<a href={privacy_notice_url} target="_blank">
{__("legal_text_privacy")}
@@ -361,18 +361,21 @@ loop.panel = (function(_, mozL10n) {
this.setState(this.getInitialState());
}
}
},
handleEmailButtonClick: function(event) {
this.handleLinkExfiltration(event);
- navigator.mozLoop.composeEmail(__("share_email_subject3"),
- __("share_email_body3", { callUrl: this.state.callUrl }));
+ navigator.mozLoop.composeEmail(
+ __("share_email_subject4", { clientShortname: __("clientShortname2")}),
+ __("share_email_body4", { callUrl: this.state.callUrl,
+ clientShortname: __("clientShortname2"),
+ learnMoreUrl: navigator.mozLoop.getLoopCharPref("learnMoreUrl") }));
},
handleCopyButtonClick: function(event) {
this.handleLinkExfiltration(event);
// XXX the mozLoop object should be passed as a prop, to ease testing and
// using a fake implementation in UI components showcase.
navigator.mozLoop.copyString(this.state.callUrl);
this.setState({copied: true});
--- a/browser/components/loop/standalone/content/js/webapp.js
+++ b/browser/components/loop/standalone/content/js/webapp.js
@@ -113,17 +113,17 @@ loop.webapp = (function($, _, OT, mozL10
}
});
var ConversationBranding = React.createClass({displayName: 'ConversationBranding',
render: function() {
return (
React.DOM.h1({className: "standalone-header-title"},
React.DOM.strong(null, mozL10n.get("brandShortname")),
- mozL10n.get("clientShortname")
+ mozL10n.get("clientShortname2")
)
);
}
});
/**
* The Firefox Marketplace exposes a web page that contains a postMesssage
* based API that wraps a small set of functionality from the WebApps API
--- a/browser/components/loop/standalone/content/js/webapp.jsx
+++ b/browser/components/loop/standalone/content/js/webapp.jsx
@@ -113,17 +113,17 @@ loop.webapp = (function($, _, OT, mozL10
}
});
var ConversationBranding = React.createClass({
render: function() {
return (
<h1 className="standalone-header-title">
<strong>{mozL10n.get("brandShortname")}</strong>
- {mozL10n.get("clientShortname")}
+ {mozL10n.get("clientShortname2")}
</h1>
);
}
});
/**
* The Firefox Marketplace exposes a web page that contains a postMesssage
* based API that wraps a small set of functionality from the WebApps API
--- a/browser/components/loop/standalone/content/l10n/loop.en-US.properties
+++ b/browser/components/loop/standalone/content/l10n/loop.en-US.properties
@@ -36,18 +36,25 @@ get_firefox_button=Get {{brandShortname}
initiate_call_button_label2=Ready to start your conversation?
initiate_audio_video_call_button2=Start
initiate_audio_video_call_tooltip2=Start a video conversation
initiate_audio_call_button2=Voice conversation
initiate_call_cancel_button=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
+invite_header_text=Invite someone to join you.
+
+## LOCALIZATION NOTE(brandShortname): This should not be localized and
+## should remain "Firefox" for all locales.
brandShortname=Firefox
-clientShortname=WebRTC!
+## LOCALIZATION NOTE(clientShortname2): This should not be localized and
+## should remain "Firefox Hello" for all locales.
+clientShortname2=Firefox Hello
+
## LOCALIZATION NOTE (call_url_creation_date_label): Example output: (from May 26, 2014)
call_url_creation_date_label=(from {{call_url_creation_date}})
call_progress_connecting_description=Connecting…
call_progress_ringing_description=Ringing…
fxos_app_needed=Please install the {{fxosAppName}} app from the Firefox Marketplace.
feedback_call_experience_heading2=How was your conversation?
feedback_what_makes_you_sad=What makes you sad?
@@ -72,8 +79,31 @@ feedback_window_will_close_in2[other] =
## LOCALIZATION_NOTE (feedback_rejoin_button): Displayed on the feedback form after
## a signed-in to signed-in user call.
## https://people.mozilla.org/~dhenein/labs/loop-mvp-spec/#feedback
feedback_rejoin_button=Rejoin
## LOCALIZATION NOTE (feedback_report_user_button): Used to report a user in the case of
## an abusive user.
feedback_report_user_button=Report User
+
+## LOCALIZATION_NOTE(first_time_experience.title): clientShortname will be
+## replaced by the brand name
+first_time_experience_title={{clientShortname}} — Join the conversation
+first_time_experience_button_label=Get Started
+
+help_label=Help
+tour_label=Tour
+
+rooms_default_room_name_template=Conversation {{conversationLabel}}
+rooms_leave_button_label=Leave
+rooms_list_copy_url_tooltip=Copy Link
+rooms_list_delete_tooltip=Delete conversation
+rooms_list_deleteConfirmation_label=Are you sure?
+rooms_name_this_room_label=Name this conversation
+rooms_new_room_button_label=Start a conversation
+rooms_only_occupant_label=You're the first one here.
+rooms_panel_title=Choose a conversation or start a new one
+rooms_room_full_label=There are already two people in this conversation.
+rooms_room_full_call_to_action_nonFx_label=Download {{brandShortname}} to start your own
+rooms_room_full_call_to_action_label=Learn more about {{clientShortname}} »
+rooms_room_joined_label=Someone has joined the conversation!
+rooms_room_join_label=Join the conversation
--- a/browser/components/loop/test/desktop-local/panel_test.js
+++ b/browser/components/loop/test/desktop-local/panel_test.js
@@ -389,19 +389,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_subject3")
+ if (key === "share_email_subject4")
text = "email-subject";
- else if (key === "share_email_body3")
+ else if (key === "share_email_body4")
text = "{{callUrl}}";
return JSON.stringify({textContent: text});
}
});
});
it("should make a request to requestCallUrl", function() {
--- a/browser/locales/en-US/chrome/browser/customizableui/customizableWidgets.properties
+++ b/browser/locales/en-US/chrome/browser/customizableui/customizableWidgets.properties
@@ -92,16 +92,16 @@ email-link-button.tooltiptext3 = Email a
# LOCALIZATION NOTE(quit-button.tooltiptext.linux2): %1$S is the brand name (e.g. Firefox),
# %2$S is the keyboard shortcut
quit-button.tooltiptext.linux2 = Quit %1$S (%2$S)
# LOCALIZATION NOTE(quit-button.tooltiptext.mac): %1$S is the brand name (e.g. Firefox),
# %2$S is the keyboard shortcut
quit-button.tooltiptext.mac = Quit %1$S (%2$S)
-loop-call-button.label = Invite someone to talk
-loop-call-button.tooltiptext = Invite someone to talk
+loop-call-button2.label = Start a conversation
+loop-call-button2.tooltiptext = Start a conversation
panic-button.label = Forget
panic-button.tooltiptext = Forget about some browsing history
web-apps-button.label = Apps
web-apps-button.tooltiptext = Discover Apps
--- a/browser/locales/en-US/chrome/browser/loop/loop.properties
+++ b/browser/locales/en-US/chrome/browser/loop/loop.properties
@@ -1,15 +1,25 @@
# 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(clientShortname2): This should not be localized and
+## should remain "Firefox Hello" for all locales.
+clientShortname2=Firefox Hello
+
+## LOCALIZATION_NOTE(first_time_experience.title): clientShortname will be
+## replaced by the brand name
+first_time_experience_title={{clientShortname}} — Join the conversation
+first_time_experience_button_label=Get Started
+
share_link_header_text=Share this link to invite someone to talk:
+invite_header_text=Invite someone to join you.
## LOCALIZATION NOTE(invitee_name_label): Displayed when obtaining a url.
## See https://people.mozilla.org/~dhenein/labs/loop-mvp-spec/#precall-firstrun
## Click the label icon at the end of the url field.
invitee_name_label=Who are you inviting?
## LOCALIZATION NOTE(invitee_expire_days_label): Allows the user to adjust
## the expiry time. Click the label icon at the end of the url field to see where
## this is:
@@ -47,22 +57,24 @@ login_expired=Your Login Has Expired
service_not_available=Service Unavailable At This Time
problem_accessing_account=There Was A Problem Accessing Your Account
## LOCALIZATION NOTE(retry_button): Displayed when there is an error to retry
## the appropriate action.
## See https://people.mozilla.org/~dhenein/labs/loop-mvp-spec/#error for location
retry_button=Retry
-share_email_subject3=You have been invited to a conversation
-## LOCALIZATION NOTE (share_email_body3): In this item, don't translate the
+share_email_subject4={{clientShortname}} — Join the conversation
+## LOCALIZATION NOTE (share_email_body4): In this item, don't translate the
## part between {{..}} and leave the \r\n\r\n part alone
-share_email_body3=To accept this invitation, just copy or click this link to start your conversation:\r\n\r\n{{callUrl}}
+share_email_body4=Hello!\r\n\r\nJoin me for a video conversation using {{clientShortname}}:\r\n\r\nYou don't have to download or install anything. Just copy and paste this URL into your browser:\r\n\r\n{{callUrl}}\r\n\r\nIf you want, you can also learn more about {{clientShortname}} at {{learnMoreUrl}}\r\n\r\nTalk to you soon!
share_button=Email
+share_button2=Email Link
copy_url_button=Copy
+copy_url_button2=Copy Link
copied_url_button=Copied!
panel_footer_signin_or_signup_link=Sign In or Sign Up
settings_menu_item_account=Account
settings_menu_item_settings=Settings
settings_menu_item_signout=Sign Out
settings_menu_item_signin=Sign In
@@ -237,22 +249,27 @@ cancel_button=Cancel
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_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, or fall back to client_shortname_fallback
+## by the brand name.
legal_text_and_links3=By using {{clientShortname}} you agree to the {{terms_of_use}} \
and {{privacy_notice}}.
legal_text_tos = Terms of Use
legal_text_privacy = Privacy Notice
-client_shortname_fallback=this product
+
+## LOCALIZATION NOTE (powered_by_beforeLogo, powered_by_afterLogo):
+## These 2 strings are displayed before and after a 'Telefonica'
+## logo.
+powered_by_beforeLogo=Powered by
+powered_by_afterLogo=
feedback_call_experience_heading2=How was your conversation?
feedback_what_makes_you_sad=What makes you sad?
feedback_thank_you_heading=Thank you for your feedback!
feedback_category_audio_quality=Audio quality
feedback_category_video_quality=Video quality
feedback_category_was_disconnected=Was disconnected
feedback_category_confusing=Confusing
@@ -268,12 +285,31 @@ feedback_window_will_close_in2=This wind
## LOCALIZATION_NOTE (feedback_rejoin_button): Displayed on the feedback form after
## a signed-in to signed-in user call.
## https://people.mozilla.org/~dhenein/labs/loop-mvp-spec/#feedback
feedback_rejoin_button=Rejoin
## LOCALIZATION NOTE (feedback_report_user_button): Used to report a user in the case of
## an abusive user.
feedback_report_user_button=Report User
+help_label=Help
+tour_label=Tour
+
+## LOCALIZATION NOTE(rooms_default_room_name_template): {{conversationLabel}}
+## will be replaced by a number. For example "Conversation 1" or "Conversation 12".
+rooms_default_room_name_template=Conversation {{conversationLabel}}
+rooms_leave_button_label=Leave
+rooms_list_copy_url_tooltip=Copy Link
## LOCALIZATION NOTE (rooms_list_current_conversations): We prefer to have no
## number in the string, but if you need it for your language please use {{num}}.
rooms_list_current_conversations=Current conversation;Current conversations
+rooms_list_delete_tooltip=Delete conversation
+rooms_list_deleteConfirmation_label=Are you sure?
rooms_list_no_current_conversations=No current conversations
+rooms_name_this_room_label=Name this conversation
+rooms_new_room_button_label=Start a conversation
+rooms_only_occupant_label=You're the first one here.
+rooms_panel_title=Choose a conversation or start a new one
+rooms_room_full_label=There are already two people in this conversation.
+rooms_room_full_call_to_action_nonFx_label=Download {{brandShortname}} to start your own
+rooms_room_full_call_to_action_label=Learn more about {{clientShortname}} »
+rooms_room_joined_label=Someone has joined the conversation!
+rooms_room_join_label=Join the conversation