Bug 689018 - Port |Bug 656492 - Rename "Sync Key" to "Recovery Key"| and |Bug 681402 - Manage Accounts menu has My Sync Key|. f=Callek r=IanN
authorJens Hatlak <jh@junetz.de>
Sun, 25 Sep 2011 17:22:49 +0200
changeset 8558 6928803fce1f8098e596658f39320e213c7fe578
parent 8557 2083b65f57d3ca6cebea97a4e97ff20f5108ef30
child 8559 391118755d64436ff8675115de88d77f03da1fa3
push id6575
push userjh@junetz.de
push dateSun, 25 Sep 2011 15:24:15 +0000
treeherdercomm-central@6928803fce1f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersIanN
bugs689018, 656492, 681402
Bug 689018 - Port |Bug 656492 - Rename "Sync Key" to "Recovery Key"| and |Bug 681402 - Manage Accounts menu has My Sync Key|. f=Callek r=IanN
suite/common/pref/pref-sync.xul
suite/common/sync/syncAddDevice.xul
suite/common/sync/syncGenericChange.js
suite/common/sync/syncGenericChange.xul
suite/common/sync/syncSetup.js
suite/common/sync/syncSetup.xul
suite/common/sync/syncUtils.js
suite/locales/en-US/chrome/common/pref/pref-sync.dtd
suite/locales/en-US/chrome/common/sync/syncGenericChange.properties
suite/locales/en-US/chrome/common/sync/syncSetup.dtd
suite/locales/en-US/chrome/common/sync/syncSetup.properties
--- a/suite/common/pref/pref-sync.xul
+++ b/suite/common/pref/pref-sync.xul
@@ -94,18 +94,18 @@
                 <menupopup>
                   <menuitem label="&viewQuota.label;"
                             accesskey="&viewQuota.accesskey;"
                             oncommand="gSyncPane.openQuotaDialog();"/>
                   <menuseparator/>
                   <menuitem label="&changePassword.label;"
                             accesskey="&changePassword.accesskey;"
                             oncommand="gSyncUtils.changePassword();"/>
-                  <menuitem label="&mySyncKey.label;"
-                            accesskey="&mySyncKey.accesskey;"
+                  <menuitem label="&myRecoveryKey.label;"
+                            accesskey="&myRecoveryKey.accesskey;"
                             oncommand="gSyncUtils.resetPassphrase();"/>
                   <menuseparator/>
                   <menuitem label="&resetSync.label;"
                             accesskey="&resetSync.accesskey;"
                             oncommand="gSyncPane.resetSync();"/>
                   <menuitem label="&deactivateDevice.label;"
                             accesskey="&deactivateDevice.accesskey;"
                             oncommand="gSyncPane.startOver(true);"/>
--- a/suite/common/sync/syncAddDevice.xul
+++ b/suite/common/sync/syncAddDevice.xul
@@ -117,30 +117,30 @@
            onclick="gSyncAddDevice.goToSyncKeyPage();"/>
   </wizardpage>
 
   <!-- Need a non-empty label here, otherwise we get a default label on Mac -->
   <wizardpage id="syncKeyPage"
               label=" "
               onpageshow="gSyncAddDevice.onPageShow();">
     <description>
-      &addDevice.dialog.syncKey.label;
+      &addDevice.dialog.recoveryKey.label;
     </description>
     <spacer/>
 
     <groupbox>
-      <label value="&syncKeyEntry.label;"
-             accesskey="&syncKeyEntry.accesskey;"
+      <label value="&recoveryKeyEntry.label;"
+             accesskey="&recoveryKeyEntry.accesskey;"
              control="weavePassphrase"/>
       <textbox id="weavePassphrase"
                readonly="true"/>
     </groupbox>
 
     <groupbox align="center">
-      <description>&syncKeyBackup.description;</description>
+      <description>&recoveryKeyBackup.description;</description>
       <hbox>
         <button id="printSyncKeyButton"
                 label="&button.syncKeyBackup.print.label;"
                 accesskey="&button.syncKeyBackup.print.accesskey;"
                 oncommand="gSyncUtils.passphrasePrint('weavePassphrase');"/>
         <button id="saveSyncKeyButton"
                 label="&button.syncKeyBackup.save.label;"
                 accesskey="&button.syncKeyBackup.save.accesskey;"
--- a/suite/common/sync/syncGenericChange.js
+++ b/suite/common/sync/syncGenericChange.js
@@ -81,36 +81,38 @@ let Change = {
       Services.strings.createBundle("chrome://communicator/locale/sync/syncGenericChange.properties");
 
     switch (this._dialogType) {
       case "UpdatePassphrase":
       case "ResetPassphrase":
         document.getElementById("textBox1Row").hidden = true;
         document.getElementById("textBox2Row").hidden = true;
         let passphraseLabel = document.getElementById("passphraseLabel");
-        passphraseLabel.value = this._str("new.synckey.label");
+        passphraseLabel.value = this._str("new.recoverykey.label");
 
         if (this._updatingPassphrase) {
           document.getElementById("passphraseBackupButtons").hidden = true;
           document.getElementById("generatePassphraseButton").hidden = true;
-          document.title = this._str("new.synckey.title");
-          introText.textContent = this._str("new.synckey2.introText");
-          this._dialog.getButton("accept").label = this._str("new.synckey.acceptButton");
+          document.title = this._str("new.recoverykey.title");
+          introText.textContent = this._str("new.recoverykey.introText");
+          this._dialog.getButton("accept").label
+            = this._str("new.recoverykey.acceptButton");
         }
         else {
           this._passphraseBox.readOnly = true;
           let pp = Weave.Service.passphrase;
           if (Weave.Utils.isPassphrase(pp))
             pp = Weave.Utils.hyphenatePassphrase(pp);
           this._passphraseBox.value = pp;
-          document.title = this._str("change.synckey.title");
-          introText.textContent = this._str("change.synckey.introText");
-          introText2.textContent = this._str("change.synckey.introText2");
-          warningText.textContent = this._str("change.synckey.warningText");
-          this._dialog.getButton("accept").label = this._str("change.synckey.acceptButton");
+          document.title = this._str("change.recoverykey.title");
+          introText.textContent = this._str("change.recoverykey.introText");
+          introText2.textContent = this._str("change.recoverykey.introText2");
+          warningText.textContent = this._str("change.recoverykey.warningText");
+          this._dialog.getButton("accept").label
+            = this._str("change.recoverykey.acceptButton");
           if (this._duringSetup)
             this._dialog.getButton("accept").disabled = false;
         }
         break;
       case "ChangePassword":
         document.getElementById("passphraseRow").hidden = true;
         document.getElementById("passphraseBackupButtons").hidden = true;
         let box1label = document.getElementById("textBox1Label");
@@ -121,17 +123,17 @@ let Change = {
           document.title = this._str("new.password.title");
           introText.textContent = this._str("new.password.introText");
           this._dialog.getButton("accept").label = this._str("new.password.acceptButton");
           document.getElementById("textBox2Row").hidden = true;
         }
         else {
           document.title = this._str("change.password.title");
           box2label.value = this._str("new.password.confirm");
-          introText.textContent = this._str("change.password.introText");
+          introText.textContent = this._str("change.password3.introText");
           warningText.textContent = this._str("change.password.warningText");
           this._dialog.getButton("accept").label = this._str("change.password.acceptButton");
         }
         break;
     }
   },
 
   _clearStatus: function _clearStatus() {
@@ -177,30 +179,30 @@ let Change = {
     this._dialog.getButton("accept").disabled = false;
   },
 
   doChangePassphrase: function Change_doChangePassphrase() {
     let pp = Weave.Utils.normalizePassphrase(this._passphraseBox.value);
     if (this._updatingPassphrase) {
       Weave.Service.passphrase = pp;
       if (Weave.Service.login()) {
-        this._updateStatus("change.synckey.success", "success");
+        this._updateStatus("change.recoverykey.success", "success");
         Weave.Service.persistLogin();
       }
       else {
         this._updateStatus("new.passphrase.status.incorrect", "error");
       }
     }
     else {
-      this._updateStatus("change.synckey.label", "active");
+      this._updateStatus("change.recoverykey.label", "active");
 
       if (Weave.Service.changePassphrase(pp))
-        this._updateStatus("change.synckey.success", "success");
+        this._updateStatus("change.recoverykey.success", "success");
       else
-        this._updateStatus("change.synckey.error", "error");
+        this._updateStatus("change.recoverykey.error", "error");
     }
 
     return false;
   },
 
   doChangePassword: function Change_doChangePassword() {
     if (this._currentPasswordInvalid) {
       Weave.Service.password = this._firstBox.value;
--- a/suite/common/sync/syncGenericChange.xul
+++ b/suite/common/sync/syncGenericChange.xul
@@ -95,18 +95,18 @@
           <spacer/>
         </row>
         <row id="passphraseRow" align="center">
           <label id="passphraseLabel" control="passphraseBox"/>
           <textbox id="passphraseBox"
                    onfocus="this.select();"
                    oninput="Change.validate();"/>
           <button id="generatePassphraseButton"
-                  label="&syncKeyGenerate.label;"
-                  accesskey="&syncKeyGenerate.accesskey;"
+                  label="&recoveryKeyGenerate.label;"
+                  accesskey="&recoveryKeyGenerate.accesskey;"
                   oncommand="event.stopPropagation();
                              Change.doGeneratePassphrase();"/>
         </row>
       </rows>
     </grid>
 
     <vbox id="feedback" pack="center">
       <hbox id="statusRow" align="center">
--- a/suite/common/sync/syncSetup.js
+++ b/suite/common/sync/syncSetup.js
@@ -328,17 +328,17 @@ var gSyncSetup = {
   },
 
   onPasswordChange: function () {
     let password = document.getElementById("weavePassword");
     let valid, str;
     if (password.value == document.getElementById("weavePassphrase").value) {
       // xxxmpc - hack, sigh
       valid = false;
-      str = Weave.Utils.getErrorString("change.password.pwSameAsSyncKey");
+      str = Weave.Utils.getErrorString("change.password.pwSameAsRecoveryKey");
     }
     else {
       let pwconfirm = document.getElementById("weavePasswordConfirm");
       [valid, str] = gSyncUtils.validatePassword(password, pwconfirm);
     }
 
     let feedback = document.getElementById("passwordFeedbackRow");
     this._setFeedback(feedback, valid, str);
--- a/suite/common/sync/syncSetup.xul
+++ b/suite/common/sync/syncSetup.xul
@@ -191,35 +191,35 @@
             </description>
           </hbox>
         </row>
       </rows>
     </grid>
   </wizardpage>
 
   <wizardpage id="newSyncKey"
-              label="&setup.newSyncKeyPage.title.label;"
+              label="&setup.newRecoveryKeyPage.title.label;"
               onextra1="gSyncSetup.onSyncOptions();"
               onpageshow="gSyncSetup.onPageShow();">
     <description>
-      &setup.newSyncKeyPage.description.label;
+      &setup.newRecoveryKeyPage.description.label;
     </description>
     <spacer/>
 
     <groupbox>
-      <label value="&syncKeyEntry.label;"
-             accesskey="&syncKeyEntry.accesskey;"
+      <label value="&recoveryKeyEntry.label;"
+             accesskey="&recoveryKeyEntry.accesskey;"
              control="weavePassphrase"/>
       <textbox id="weavePassphrase"
                readonly="true"
                onfocus="this.select();"/>
     </groupbox>
 
     <groupbox align="center">
-      <description>&syncKeyBackup.description;</description>
+      <description>&recoveryKeyBackup.description;</description>
       <hbox>
         <button id="printSyncKeyButton"
                 label="&button.syncKeyBackup.print.label;"
                 accesskey="&button.syncKeyBackup.print.accesskey;"
                 oncommand="gSyncUtils.passphrasePrint('weavePassphrase');"/>
         <button id="saveSyncKeyButton"
                 label="&button.syncKeyBackup.save.label;"
                 accesskey="&button.syncKeyBackup.save.accesskey;"
@@ -345,35 +345,35 @@
             </vbox>
           </hbox>
         </row>
       </rows>
     </grid>
 
     <groupbox>
       <label id="existingPassphraseLabel"
-             value="&signIn.syncKey.label;"
-             accesskey="&signIn.syncKey.accesskey;"
+             value="&signIn.recoveryKey.label;"
+             accesskey="&signIn.recoveryKey.accesskey;"
              control="existingPassphrase"/>
       <textbox id="existingPassphrase"
                oninput="gSyncSetup.checkFields();"/>
       <hbox id="login-throbber" hidden="true">
         <image/>
         <label value="&verifying.label;"/>
       </hbox>
       <vbox align="left" id="existingPassphraseFeedbackRow" hidden="true">
         <hbox>
           <image class="statusIcon"/>
           <label class="status" value=" "/>
         </hbox>
       </vbox>
     </groupbox>
     <vbox id="passphraseHelpBox">
       <description>
-        &existingSyncKey.description;
+        &existingRecoveryKey.description;
         <label class="text-link"
                href="https://services.mozilla.com/sync/help/manual-setup">
           &addDevice.showMeHow.label;
         </label>
         <spacer id="passphraseHelpSpacer"/>
         <label class="text-link"
                onclick="gSyncSetup.resetPassphrase(); return false;">
           &resetSyncKey.label;
--- a/suite/common/sync/syncUtils.js
+++ b/suite/common/sync/syncUtils.js
@@ -183,18 +183,18 @@ let gSyncUtils = {
   },
 
   /**
    * Save passphrase backup document to disk as HTML file.
    *
    * @param elid : ID of the form element containing the passphrase.
    */
   passphraseSave: function(elid) {
-    let dialogTitle = this._stringBundle.GetStringFromName("save.synckey.title");
-    let defaultSaveName = this.bundle.GetStringFromName("save.default.label");
+    let dialogTitle = this._stringBundle.GetStringFromName("save.recoverykey.title");
+    let defaultSaveName = this.bundle.GetStringFromName("save.recoverykey.defaultfilename");
     this._preparePPiframe(elid, function(iframe) {
       let filepicker = Cc["@mozilla.org/filepicker;1"]
                          .createInstance(Ci.nsIFilePicker);
       filepicker.init(window, dialogTitle, Ci.nsIFilePicker.modeSave);
       filepicker.appendFilters(Ci.nsIFilePicker.filterHTML);
       filepicker.defaultString = defaultSaveName;
       let rv = filepicker.show();
       if (rv == Ci.nsIFilePicker.returnOK
@@ -233,17 +233,17 @@ let gSyncUtils = {
       valid = val1.length >= Weave.MIN_PASS_LENGTH;
     else if (val1 && val1 == Weave.Service.username)
       error = "change.password.pwSameAsUsername";
     else if (val1 && val1 == Weave.Service.account)
       error = "change.password.pwSameAsEmail";
     else if (val1 && val1 == Weave.Service.password)
       error = "change.password.pwSameAsPassword";
     else if (val1 && val1 == Weave.Service.passphrase)
-      error = "change.password.pwSameAsSyncKey";
+      error = "change.password.pwSameAsRecoveryKey";
     else if (val1 && val2) {
       if (val1 == val2 && val1.length >= Weave.MIN_PASS_LENGTH)
         valid = true;
       else if (val1.length < Weave.MIN_PASS_LENGTH)
         error = "change.password.tooShort";
       else if (val1 != val2)
         error = "change.password.mismatch";
     }
--- a/suite/locales/en-US/chrome/common/pref/pref-sync.dtd
+++ b/suite/locales/en-US/chrome/common/pref/pref-sync.dtd
@@ -15,18 +15,18 @@
 
 <!-- Manage Account -->
 <!ENTITY manageAccount.label          "Manage Account">
 <!ENTITY manageAccount.accesskey      "A">
 <!ENTITY viewQuota.label              "View Quota">
 <!ENTITY viewQuota.accesskey          "V">
 <!ENTITY changePassword.label         "Change Password">
 <!ENTITY changePassword.accesskey     "C">
-<!ENTITY mySyncKey.label              "My Sync Key">
-<!ENTITY mySyncKey.accesskey          "M">
+<!ENTITY myRecoveryKey.label          "My Recovery Key">
+<!ENTITY myRecoveryKey.accesskey      "M">
 <!ENTITY resetSync.label              "Reset Sync">
 <!ENTITY resetSync.accesskey          "R">
 <!ENTITY deactivateDevice.label       "Deactivate This Device">
 <!ENTITY deactivateDevice.accesskey   "D">
 <!ENTITY addDevice.label              "Add a Device">
 <!ENTITY addDevice.accesskey          "A">
 
 <!-- Sync Settings -->
--- a/suite/locales/en-US/chrome/common/sync/syncGenericChange.properties
+++ b/suite/locales/en-US/chrome/common/sync/syncGenericChange.properties
@@ -1,35 +1,34 @@
 # LOCALIZATION NOTE (whole file) "Sync" should match &syncBrand.shortName.label; from syncBrand.dtd
 # LOCALIZATION NOTE (change.password.title): This (and associated change.password/passphrase) are used when the user elects to change their password.
 change.password.title          = Change your Password
 change.password.acceptButton   = Change Password
 change.password.status.active  = Changing your password…
 change.password.status.success = Your password has been changed.
 change.password.status.error   = There was an error changing your password.
 
-change.password.introText   = Your password must be at least 8 characters long.  It cannot be the same as either your user name or your Sync Key.
+change.password3.introText  = Your password must be at least 8 characters long.  It cannot be the same as either your user name or your Recovery Key.
 change.password.warningText = Note: All of your other devices will be unable to connect to your account once you change this password.
 
-change.synckey.title        = Change your Sync Key
-change.synckey.acceptButton = Change Sync Key
-change.synckey.label        = Changing Sync Key and uploading local data, please wait…
-change.synckey.error        = There was an error while changing your Sync Key!
-change.synckey.success      = Your Sync Key was successfully changed!
+change.recoverykey.title        = Change your Recovery Key
+change.recoverykey.acceptButton = Change Recovery Key
+change.recoverykey.label        = Changing Recovery Key and uploading local data, please wait…
+change.recoverykey.error        = There was an error while changing your Recovery Key!
+change.recoverykey.success      = Your Recovery Key was successfully changed!
+change.recoverykey.introText    = SeaMonkey Cares About Your Privacy
+change.recoverykey.introText2   = To ensure your total privacy, all of your data is encrypted prior to being uploaded. The key to decrypt your data is not uploaded.
+change.recoverykey.warningText  = Note: Changing this will erase all data stored on the Sync server and upload new data secured by this Recovery Key. Your other devices will not sync until the new Recovery Key is entered for that device.
 
-change.synckey.introText   = SeaMonkey Cares About Your Privacy
-change.synckey.introText2  = To ensure your total privacy, all of your data is encrypted prior to being uploaded. The key to decrypt your data is not uploaded.
-change.synckey.warningText = Note: Changing this will erase all data stored on the Sync server and upload new data secured by this Sync Key. Your other devices will not sync until the new Sync Key is entered for that device.
-
-new.synckey.label = Your Sync Key
+new.recoverykey.label = Your Recovery Key
 
 # LOCALIZATION NOTE (new.password.title): This (and associated new.password/passphrase) are used on a second computer when it detects that your password or passphrase has been changed on a different device.
 new.password.title            = Update Password
 new.password.introText        = Your password was rejected by the server, please update your password.
 new.password.label            = Enter your new password
 new.password.confirm          = Confirm your new password
 new.password.acceptButton     = Update Password
 new.password.status.incorrect = Password incorrect, please try again.
 
-new.synckey.title            = Update Sync Key
-new.synckey2.introText       = You changed your Sync Key from another device, please enter your updated Sync Key.
-new.synckey.acceptButton     = Update Sync Key
-new.synckey.status.incorrect = Sync Key incorrect, please try again.
+new.recoverykey.title            = Update Recovery Key
+new.recoverykey.introText        = You changed your Recovery Key from another device, please enter your updated Recovery Key.
+new.recoverykey.acceptButton     = Update Recovery Key
+new.recoverykey.status.incorrect = Recovery Key incorrect, please try again.
--- a/suite/locales/en-US/chrome/common/sync/syncSetup.dtd
+++ b/suite/locales/en-US/chrome/common/sync/syncSetup.dtd
@@ -15,18 +15,18 @@
 <!ENTITY server.label               "Server">
 <!ENTITY server.accesskey           "S">
 <!ENTITY serverType.main.label      "&syncBrand.fullName.label; Server">
 <!ENTITY serverType.custom2.label   "Use a custom server…">
 <!ENTITY signIn.account2.label      "Account">
 <!ENTITY signIn.account2.accesskey  "A">
 <!ENTITY signIn.password.label      "Password">
 <!ENTITY signIn.password.accesskey  "P">
-<!ENTITY signIn.syncKey.label       "Sync Key">
-<!ENTITY signIn.syncKey.accesskey   "K">
+<!ENTITY signIn.recoveryKey.label     "Recovery Key">
+<!ENTITY signIn.recoveryKey.accesskey "K">
 
 <!-- New Account Page 1: Basic Account Info -->
 <!ENTITY setup.newAccountDetailsPage.title.label "Account Details">
 <!ENTITY setup.confirmPassword.label             "Confirm Password">
 <!ENTITY setup.confirmPassword.accesskey         "C">
 <!ENTITY setup.emailAddress.label                "Email Address">
 <!ENTITY setup.emailAddress.accesskey            "E">
 <!-- LOCALIZATION NOTE: tosAgree1, tosLink, tosAgree2, ppLink, tosAgree3 are
@@ -34,24 +34,24 @@
 <!ENTITY setup.tosAgree1.label      "I agree to the">
 <!ENTITY setup.tosAgree1.accesskey  "a">
 <!ENTITY setup.tosLink.label        "Terms of Service">
 <!ENTITY setup.tosAgree2.label      "and the">
 <!ENTITY setup.ppLink.label         "Privacy Policy">
 <!ENTITY setup.tosAgree3.label      "">
 <!ENTITY setup.tosAgree2.accesskey  "">
 
-<!-- New Account Page 2: Sync Key -->
-<!ENTITY setup.newSyncKeyPage.title.label "&brandShortName; Cares About Your Privacy">
-<!ENTITY setup.newSyncKeyPage.description.label "To ensure your total privacy, all of your data is encrypted prior to being uploaded. The Sync Key which is necessary to decrypt your data is not uploaded.">
-<!ENTITY syncKeyEntry.label        "Your Sync Key">
-<!ENTITY syncKeyEntry.accesskey    "K">
-<!ENTITY syncKeyGenerate.label     "Generate">
-<!ENTITY syncKeyGenerate.accesskey "G">
-<!ENTITY syncKeyBackup.description "Your Sync Key is required to access &syncBrand.fullName.label; on other machines. Please create a backup copy. We cannot help you recover your Sync Key.">
+<!-- New Account Page 2: Recovery Key -->
+<!ENTITY setup.newRecoveryKeyPage.title.label "&brandShortName; Cares About Your Privacy">
+<!ENTITY setup.newRecoveryKeyPage.description.label "To ensure your total privacy, all of your data is encrypted prior to being uploaded. The Recovery Key which is necessary to decrypt your data is not uploaded.">
+<!ENTITY recoveryKeyEntry.label        "Your Recovery Key">
+<!ENTITY recoveryKeyEntry.accesskey    "K">
+<!ENTITY recoveryKeyGenerate.label     "Generate">
+<!ENTITY recoveryKeyGenerate.accesskey "G">
+<!ENTITY recoveryKeyBackup.description "Your Recovery Key is required to access &syncBrand.fullName.label; on other machines. Please create a backup copy. We cannot help you recover your Recovery Key.">
 
 <!ENTITY button.syncKeyBackup.print.label     "Print…">
 <!ENTITY button.syncKeyBackup.print.accesskey "P">
 <!ENTITY button.syncKeyBackup.save.label      "Save…">
 <!ENTITY button.syncKeyBackup.save.accesskey  "S">
 
 <!-- New Account Page 3: Captcha -->
 <!ENTITY setup.captchaPage2.title.label     "Please Confirm You're Not a Robot">
@@ -61,22 +61,22 @@
 <!ENTITY addDevice.showMeHow.label          "Show me how.">
 <!ENTITY addDevice.dontHaveDevice.label     "I don't have the device with me">
 <!ENTITY addDevice.setup.description.label  "To activate, go to &syncBrand.shortName.label; Preferences/Options on your other device and select &#x0022;Add a Device&#x0022;.">
 <!ENTITY addDevice.setup.enterCode.label    "Then, enter this code:">
 <!ENTITY addDevice.dialog.description.label "To activate your new device, go to &syncBrand.shortName.label; Preferences/Options on the device and select &#x0022;Connect.&#x0022;">
 <!ENTITY addDevice.dialog.enterCode.label   "Enter the code that the device provides:">
 <!ENTITY addDevice.dialog.tryAgain.label    "Please try again.">
 <!ENTITY addDevice.dialog.successful.label  "The device has been successfully added. The initial synchronization can take several minutes and will finish in the background.">
-<!ENTITY addDevice.dialog.syncKey.label     "To activate your device you will need to enter your Sync Key. Please print or save this key and take it with you.">
+<!ENTITY addDevice.dialog.recoveryKey.label "To activate your device you will need to enter your Recovery Key. Please print or save this key and take it with you.">
 <!ENTITY addDevice.dialog.connected.label   "Device Connected">
 
 <!-- Existing Account Page 2: Manual Login -->
 <!ENTITY setup.signInPage.title.label "Sign In">
-<!ENTITY existingSyncKey.description  "You can get a copy of your Sync Key by going to &syncBrand.shortName.label; Preferences/Options on your other device, and selecting &#x0022;My Sync Key&#x0022; under &#x0022;Manage Account&#x0022;.">
+<!ENTITY existingRecoveryKey.description "You can get a copy of your Recovery Key by going to &syncBrand.shortName.label; Preferences/Options on your other device, and selecting &#x0022;My Recovery Key&#x0022; under &#x0022;Manage Account&#x0022;.">
 <!ENTITY verifying.label              "Verifying…">
 <!ENTITY resetPassword.label          "Reset Password">
 <!ENTITY resetSyncKey.label           "I have lost my other device.">
 
 <!-- Sync Options -->
 <!ENTITY setup.optionsPage.title      "Sync Options">
 <!ENTITY syncComputerName.label       "Computer Name:">
 <!ENTITY syncComputerName.accesskey   "C">
--- a/suite/locales/en-US/chrome/common/sync/syncSetup.properties
+++ b/suite/locales/en-US/chrome/common/sync/syncSetup.properties
@@ -24,18 +24,18 @@ bookmarksCount.label        = #1 bookmar
 # #1 is the number of days (was %S for a short while, use #1 instead, even if both work)
 historyDaysCount.label      = #1 day of history;#1 days of history
 # LOCALIZATION NOTE (passwordsCount.label):
 # Semi-colon list of plural forms. See:
 # http://developer.mozilla.org/en/docs/Localization_and_Plurals
 # #1 is the number of passwords (was %S for a short while, use #1 instead, even if both work)
 passwordsCount.label        = #1 password;#1 passwords
 
-save.synckey.title = Save Sync Key
-save.default.label = SeaMonkey Sync Key.xhtml
+save.recoverykey.title = Save Recovery Key
+save.recoverykey.defaultfilename = SeaMonkey Recovery Key.xhtml
 
 newAccount.action.label = SeaMonkey Sync is now set up to automatically sync all of your browser data.
 newAccount.change.label = You can choose exactly what to sync by selecting Sync Options below.
 resetClient.change.label = SeaMonkey Sync will now merge all this computer's browser data into your Sync account.
 wipeClient.change.label = SeaMonkey Sync will now replace all of the browser data on this computer with the data in your Sync account.
 wipeRemote.change.label = SeaMonkey Sync will now replace all of the browser data in your Sync account with the data on this computer.
 existingAccount.change.label = You can change this preference by selecting Sync Options below.