ug 1605480 - Port bug 1604960: Migrate all text actions to use Fluent. r=mkmelin
authorRichard Marti <richard.marti@gmail.com>
Thu, 26 Dec 2019 09:16:41 +0200
changeset 37815 c2543953fdf691c9944add535e554e71aada2aab
parent 37814 03c4c22c0fcecb00adc0d9fdb18444dcc9ea7c62
child 37816 ecf60bb15b46f6b1f80088a0fc061dfdcb78b6d4
push id397
push userclokep@gmail.com
push dateMon, 10 Feb 2020 21:16:13 +0000
reviewersmkmelin
bugs1605480, 1604960
ug 1605480 - Port bug 1604960: Migrate all text actions to use Fluent. r=mkmelin
common/src/viewSource.xhtml
mail/base/content/hiddenWindow.xhtml
mail/base/content/mainNavigationToolbox.inc.xhtml
mail/base/content/mainPopupSet.inc.xhtml
mail/base/content/messageWindow.xhtml
mail/base/content/messenger.xhtml
mail/components/activity/content/activity.xhtml
mail/components/addrbook/content/addressbook.xhtml
mail/components/compose/content/messengercompose.xhtml
mail/components/customizableui/content/panelUI.inc.xhtml
mail/components/im/content/chat-menu.inc.xhtml
mail/locales/en-US/chrome/communicator/utilityOverlay.dtd
mail/locales/en-US/chrome/messenger/addressbook/abMainWindow.dtd
mail/locales/en-US/chrome/messenger/messengercompose/messengercompose.dtd
--- a/common/src/viewSource.xhtml
+++ b/common/src/viewSource.xhtml
@@ -31,16 +31,17 @@
         titlemenuseparator ="&mainWindow.titlemodifierseparator;"
         windowtype="navigator:view-source"
         width="640" height="480"
         screenX="10" screenY="10"
         persist="screenX screenY width height sizemode">
 
 <linkset>
   <html:link rel="localization" href="messenger/menubar.ftl"/>
+  <html:link rel="localization" href="toolkit/global/textActions.ftl"/>
 </linkset>
 
   <script src="chrome://global/content/globalOverlay.js"/>
   <script src="chrome://global/content/printUtils.js"/>
   <script src="chrome://global/content/contentAreaUtils.js"/>
 #ifndef MOZ_SUITE
   <script src="chrome://messenger/content/mailCore.js"/>
 #endif
@@ -148,31 +149,29 @@
     <menuseparator observes="viewSourceNavigation"/>
 #endif
     <menuitem id="cMenu_findAgain"
               label="&findAgainCmd.label;"
               accesskey="&findAgainCmd.accesskey;"
               command="cmd_findAgain"/>
     <menuseparator/>
     <menuitem id="cMenu_copy"
-              label="&copyCmd.label;"
-              accesskey="&copyCmd.accesskey;"
+              data-l10n-id="text-action-copy"
               command="cmd_copy"/>
     <menuitem id="context-copyLink"
               label="&copyLinkCmd.label;"
               accesskey="&copyLinkCmd.accesskey;"
               oncommand="viewSourceChrome.onContextMenuCopyLinkOrEmail();"/>
     <menuitem id="context-copyEmail"
               label="&copyEmailCmd.label;"
               accesskey="&copyEmailCmd.accesskey;"
               oncommand="viewSourceChrome.onContextMenuCopyLinkOrEmail();"/>
     <menuseparator/>
     <menuitem id="cMenu_selectAll"
-              label="&selectAllCmd.label;"
-              accesskey="&selectAllCmd.accesskey;"
+              data-l10n-id="text-action-select-all"
               command="cmd_selectAll"/>
   </menupopup>
 
   <!-- Menu -->
   <toolbox id="viewSource-toolbox">
     <toolbar type="menubar">
     <menubar id="viewSource-main-menubar">
 
@@ -196,44 +195,51 @@
                     label="&closeCmd.label;" accesskey="&closeCmd.accesskey;"
                     class="menuitem-iconic"/>
         </menupopup>
       </menu>
 
       <menu id="menu_edit" label="&editMenu.label;"
             accesskey="&editMenu.accesskey;">
         <menupopup id="editmenu-popup">
-          <menuitem id="menu_undo" label="&undoCmd.label;"
-                    key="key_undo" accesskey="&undoCmd.accesskey;"
+          <menuitem id="menu_undo"
+                    data-l10n-id="text-action-undo"
+                    key="key_undo"
                     command="cmd_undo"
                     class="menuitem-iconic"/>
-          <menuitem id="menu_redo" label="&redoCmd.label;"
-                    key="key_redo" accesskey="&redoCmd.accesskey;"
+          <menuitem id="menu_redo"
+                    data-l10n-id="text-action-redo"
+                    key="key_redo"
                     command="cmd_redo"
                     class="menuitem-iconic"/>
           <menuseparator/>
-          <menuitem id="menu_cut" label="&cutCmd.label;"
-                    key="key_cut" accesskey="&cutCmd.accesskey;"
+          <menuitem id="menu_cut"
+                    data-l10n-id="text-action-cut"
+                    key="key_cut"
                     command="cmd_cut"
                     class="menuitem-iconic"/>
-          <menuitem id="menu_copy" label="&copyCmd.label;"
-                    key="key_copy" accesskey="&copyCmd.accesskey;"
+          <menuitem id="menu_copy"
+                    data-l10n-id="text-action-copy"
+                    key="key_copy"
                     command="cmd_copy"
                     class="menuitem-iconic"/>
-          <menuitem id="menu_paste" label="&pasteCmd.label;"
-                    key="key_paste" accesskey="&pasteCmd.accesskey;"
+          <menuitem id="menu_paste"
+                    data-l10n-id="text-action-paste"
+                    key="key_paste"
                     command="cmd_paste"
                     class="menuitem-iconic"/>
-          <menuitem id="menu_delete" label="&deleteCmd.label;"
-                    key="key_delete" accesskey="&deleteCmd.accesskey;"
+          <menuitem id="menu_delete"
+                    data-l10n-id="text-action-delete"
+                    key="key_delete"
                     command="cmd_delete"
                     class="menuitem-iconic"/>
           <menuseparator/>
-          <menuitem id="menu_selectAll" label="&selectAllCmd.label;"
-                    key="key_selectAll" accesskey="&selectAllCmd.accesskey;"
+          <menuitem id="menu_selectAll"
+                    data-l10n-id="text-action-select-all"
+                    key="key_selectAll"
                     command="cmd_selectAll"/>
           <menuseparator/>
           <menuitem id="menu_find" label="&findCmd.label;"
                     key="key_find" accesskey="&findCmd.accesskey;"
                     command="cmd_find"/>
           <menuitem id="menu_findAgain" label="&findAgainCmd.label;"
                     key="key_findAgain" accesskey="&findAgainCmd.accesskey;"
                     command="cmd_findAgain"/>
--- a/mail/base/content/hiddenWindow.xhtml
+++ b/mail/base/content/hiddenWindow.xhtml
@@ -9,18 +9,16 @@
 <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
 %brandDTD;
 <!ENTITY % messengerDTD SYSTEM "chrome://messenger/locale/messenger.dtd" >
 %messengerDTD;
 <!ENTITY % utilityDTD SYSTEM "chrome://communicator/locale/utilityOverlay.dtd">
 %utilityDTD;
 <!ENTITY % msgViewPickerDTD SYSTEM "chrome://messenger/locale/msgViewPickerOverlay.dtd" >
 %msgViewPickerDTD;
-<!ENTITY % textcontextDTD SYSTEM "chrome://global/locale/textcontext.dtd">
-%textcontextDTD;
 <!ENTITY % baseMenuOverlayDTD SYSTEM "chrome://messenger/locale/baseMenuOverlay.dtd">
 %baseMenuOverlayDTD;
 <!ENTITY % charsetDTD SYSTEM "chrome://global/locale/charsetMenu.dtd">
 %charsetDTD;
 <!ENTITY % viewZoomOverlayDTD SYSTEM "chrome://messenger/locale/viewZoomOverlay.dtd">
 %viewZoomOverlayDTD;
 <!ENTITY % msgReadSMIMEDTD SYSTEM "chrome://messenger-smime/locale/msgReadSMIMEOverlay.dtd">
 %msgReadSMIMEDTD;
--- a/mail/base/content/mainNavigationToolbox.inc.xhtml
+++ b/mail/base/content/mainNavigationToolbox.inc.xhtml
@@ -232,37 +232,33 @@
         <menuitem id="menu_redo"
                   label="&redoDefaultCmd.label;"
                   accesskey="&redoDefaultCmd.accesskey;"
                   key="key_redo"
                   command="cmd_redo"
                   class="menuitem-iconic"/>
         <menuseparator id="editMenuAfterRedoSeparator"/>
         <menuitem id="menu_cut"
-                  label="&cutCmd.label;"
+                  data-l10n-id="text-action-cut"
                   key="key_cut"
-                  accesskey="&cutCmd.accesskey;"
                   command="cmd_cut"
                   class="menuitem-iconic"/>
         <menuitem id="menu_copy"
-                  label="&copyCmd.label;"
+                  data-l10n-id="text-action-copy"
                   key="key_copy"
-                  accesskey="&copyCmd.accesskey;"
                   command="cmd_copy"
                   class="menuitem-iconic"/>
         <menuitem id="menu_paste"
-                  label="&pasteCmd.label;"
+                  data-l10n-id="text-action-paste"
                   key="key_paste"
-                  accesskey="&pasteCmd.accesskey;"
                   command="cmd_paste"
                   class="menuitem-iconic"/>
         <menuitem id="menu_delete"
-                  label="&deleteCmd.label;"
+                  data-l10n-id="text-action-delete"
                   key="key_delete"
-                  accesskey="&deleteCmd.accesskey;"
                   command="cmd_delete"
                   class="menuitem-iconic"/>
         <menuseparator id="editMenuAfterDeleteSeparator"/>
         <menu id="menu_select" label="&selectMenu.label;" accesskey="&selectMenu.accesskey;">
           <menupopup id="menu_SelectPopup">
             <menuitem id="menu_SelectAll" label="&all.label;"
                       accesskey="&all.accesskey;" key="key_selectAll"
                       command="cmd_selectAll"
--- a/mail/base/content/mainPopupSet.inc.xhtml
+++ b/mail/base/content/mainPopupSet.inc.xhtml
@@ -31,19 +31,17 @@
     <menuitem id="createFilterFromItem" label="&CreateFilterFrom.label;"
               accesskey="&CreateFilterFrom.accesskey;"
               oncommand="CreateFilter(document.popupNode, gMessageDisplay.displayedMessage)"
               observes="cmd_createFilterFromPopup"/>
   </menupopup>
 
   <menupopup id="copyPopup">
     <menuitem id="copyMenuitem"
-              label="&copyCmd.label;"
-              accesskey="&copyCmd.accesskey;"
-              tooltiptext="&copyCmd.label;"
+              data-l10n-id="text-action-copy"
               oncommand="Cc['@mozilla.org/widget/clipboardhelper;1']
                            .getService(Ci.nsIClipboardHelper)
                            .copyString(window.getSelection().isCollapsed ?
                              document.popupNode.textContent :
                              window.getSelection().toString());"/>
     <menuitem id="createFilterFromMenuItem" label="&CreateFilterFrom.label;"
               accesskey="&CreateFilterFrom.accesskey;"
               oncommand="CreateFilter(document.popupNode, gMessageDisplay.displayedMessage)"
@@ -86,30 +84,26 @@
               command="cmd_stop"/>
     <menuseparator id="mailContext-sep-link"/>
     <menuitem id="mailContext-undo"
               label="&undoDefaultCmd.label;"
               accesskey="&undoDefaultCmd.accesskey;"
               command="cmd_undo"/>
     <menuseparator id="mailContext-sep-undo"/>
     <menuitem id="mailContext-cut"
-              label="&cutCmd.label;"
-              accesskey="&cutCmd.accesskey;"
+              data-l10n-id="text-action-cut"
               command="cmd_copy"/>
     <menuitem id="mailContext-copy"
-              label="&copyCmd.label;"
-              accesskey="&copyCmd.accesskey;"
+              data-l10n-id="text-action-copy"
               command="cmd_copy"/>
     <menuitem id="mailContext-paste"
-              label="&pasteCmd.label;"
-              accesskey="&pasteCmd.accesskey;"
+              data-l10n-id="text-action-paste"
               command="cmd_paste"/>
     <menuitem id="mailContext-selectall"
-              label="&selectAllCmd.label;"
-              accesskey="&selectAllCmd.accesskey;"
+              data-l10n-id="text-action-select-all"
               command="cmd_selectAll"/>
     <menuseparator id="mailContext-sep-clipboard"/>
 
     <menuitem id="mailContext-searchTheWeb"
               label="[glodaComplete.webSearch1.label]"
               oncommand="openWebSearch(event.target.value)"/>
 
     <!-- Spellchecking general menu items (enable, add dictionaries...) -->
@@ -504,22 +498,20 @@
               label="&folderContextSettings2.label;"
               accesskey="&folderContextSettings2.accesskey;"
               oncommand="gFolderTreeController.editFolder();"/>
   </menupopup>
 
   <menupopup id="aboutPagesContext"
              onpopupshowing="goUpdateCommand('cmd_copy'); goUpdateCommand('cmd_selectAll');">
     <menuitem id="aboutPagesContext-copy"
-              label="&copyCmd.label;"
-              accesskey="&copyCmd.accesskey;"
+              data-l10n-id="text-action-copy"
               command="cmd_copy"/>
     <menuitem id="aboutPagesContext-selectall"
-              label="&selectAllCmd.label;"
-              accesskey="&selectAllCmd.accesskey;"
+              data-l10n-id="text-action-select-all"
               command="cmd_selectAll"/>
   </menupopup>
 
   <menupopup id="toolbar-context-menu"
              onpopupshowing="onViewToolbarsPopupShowing(event, 'mail-toolbox');">
     <menuseparator id="customizeMailToolbarMenuSeparator"/>
     <menuitem id="CustomizeMailToolbar"
               command="cmd_CustomizeMailToolbar"
--- a/mail/base/content/messageWindow.xhtml
+++ b/mail/base/content/messageWindow.xhtml
@@ -25,18 +25,16 @@
 <!ENTITY % editContactOverlayDTD SYSTEM "chrome://messenger/locale/editContactOverlay.dtd">
 %editContactOverlayDTD;
 <!ENTITY % customizeToolbarDTD SYSTEM "chrome://messenger/locale/customizeToolbar.dtd">
 %customizeToolbarDTD;
 <!ENTITY % utilityDTD SYSTEM "chrome://communicator/locale/utilityOverlay.dtd">
 %utilityDTD;
 <!ENTITY % msgViewPickerDTD SYSTEM "chrome://messenger/locale/msgViewPickerOverlay.dtd" >
 %msgViewPickerDTD;
-<!ENTITY % textcontextDTD SYSTEM "chrome://global/locale/textcontext.dtd">
-%textcontextDTD;
 <!ENTITY % baseMenuOverlayDTD SYSTEM "chrome://messenger/locale/baseMenuOverlay.dtd">
 %baseMenuOverlayDTD;
 <!ENTITY % utilityDTD SYSTEM "chrome://communicator/locale/utilityOverlay.dtd">
 %utilityDTD;
 <!ENTITY % charsetDTD SYSTEM "chrome://global/locale/charsetMenu.dtd">
 %charsetDTD;
 <!ENTITY % viewZoomOverlayDTD SYSTEM "chrome://messenger/locale/viewZoomOverlay.dtd">
 %viewZoomOverlayDTD;
@@ -76,16 +74,17 @@
   <stringbundle id="bundle_messenger" src="chrome://messenger/locale/messenger.properties"/>
   <stringbundle id="bundle_offlinePrompts" src="chrome://messenger/locale/offline.properties"/>
   <stringbundle id="bundle_editContact" src="chrome://messenger/locale/editContactOverlay.properties"/>
   <stringbundle id="charsetBundle" src="chrome://communicator/content/labelsencodings.properties"/>
   <stringbundle id="bundle_read_smime" src="chrome://messenger-smime/locale/msgReadSMIMEOverlay.properties"/>
 
   <linkset>
     <html:link rel="localization" href="toolkit/main-window/findbar.ftl"/>
+    <html:link rel="localization" href="toolkit/global/textActions.ftl"/>
     <html:link rel="localization" href="messenger/menubar.ftl"/>
   </linkset>
 
   <script src="chrome://global/content/globalOverlay.js"/>
   <script src="chrome://messenger/content/commandglue.js"/>
   <script src="chrome://messenger/content/folderDisplay.js"/>
   <script src="chrome://messenger/content/messageDisplay.js"/>
   <script src="chrome://messenger/content/mailWindow.js"/>
--- a/mail/base/content/messenger.xhtml
+++ b/mail/base/content/messenger.xhtml
@@ -56,18 +56,16 @@
 <!ENTITY % msgReadSMIMEDTD SYSTEM "chrome://messenger-smime/locale/msgReadSMIMEOverlay.dtd">
 %msgReadSMIMEDTD;
 #ifdef MOZ_OPENPGP
 <!ENTITY % bondOpenPGPDTD SYSTEM "chrome://openpgp/content/strings/bond.dtd">
 %bondOpenPGPDTD;
 #endif
 <!ENTITY % msgViewPickerDTD SYSTEM "chrome://messenger/locale/msgViewPickerOverlay.dtd" >
 %msgViewPickerDTD;
-<!-- for the chat context menu -->
-<!ENTITY % textcontextDTD SYSTEM "chrome://global/locale/textcontext.dtd">
 ]>
 
 <!--
   - The 'what you think of when you think of thunderbird' window;
   -  3-pane view inside of tabs.
   -->
 <window id="messengerWindow"
         xmlns:html="http://www.w3.org/1999/xhtml"
@@ -97,16 +95,17 @@
 <stringbundle id="bundle_places" src="chrome://places/locale/places.properties"/>
 <stringbundle id="bundle_editContact" src="chrome://messenger/locale/editContactOverlay.properties"/>
 <stringbundle id="bundle_offlinePrompts" src="chrome://messenger/locale/offline.properties"/>
 <stringbundle id="charsetBundle" src="chrome://communicator/content/labelsencodings.properties"/>
 <stringbundle id="bundle_read_smime" src="chrome://messenger-smime/locale/msgReadSMIMEOverlay.properties"/>
 
 <linkset>
   <html:link rel="localization" href="toolkit/main-window/findbar.ftl"/>
+  <html:link rel="localization" href="toolkit/global/textActions.ftl"/>
   <html:link rel="localization" href="messenger/menubar.ftl"/>
 </linkset>
 
 <script src="chrome://global/content/globalOverlay.js"/>
 <script src="chrome://global/content/editMenuOverlay.js"/>
 <script src="chrome://messenger/content/commandglue.js"/>
 <script src="chrome://messenger/content/msgViewNavigation.js"/>
 <script src="chrome://messenger/content/mailWindow.js"/>
--- a/mail/components/activity/content/activity.xhtml
+++ b/mail/components/activity/content/activity.xhtml
@@ -29,16 +29,20 @@
         statictitle="&activity.title;"
         width="&window.width2;" height="&window.height;"
         screenX="10" screenY="10"
         persist="width height screenX screenY sizemode"
         onload="activityObject.startup();"
         onunload="activityObject.shutdown();"
         onclose="return closeWindow(false);">
 
+  <linkset>
+    <html:link rel="localization" href="toolkit/global/textActions.ftl"/>
+  </linkset>
+
   <script src="chrome://messenger/content/activity.js"/>
   <script src="chrome://messenger/content/activity-widgets.js"/>
   <script src="chrome://global/content/contentAreaUtils.js"/>
   <script src="chrome://global/content/nsDragAndDrop.js"/>
   <script src="chrome://global/content/globalOverlay.js"/>
 
   <stringbundle id="brandStrings" src="chrome://branding/locale/brand.properties"/>
 
@@ -68,18 +72,18 @@
 #endif
     <key keycode="VK_ESCAPE" oncommand="closeWindow(true);"/>
 
     <key id="key_selectAllActivities" key="&selectAllCmd.key;" modifiers="accel"
          command="cmd_selectAllActivities"/>
   </keyset>
 
   <vbox id="contextMenuPalette" hidden="true">
-    <menuitem id="menuitem_selectAll" label="&selectAllCmd.label;"
-              accesskey="&selectAllCmd.accesskey;"
+    <menuitem id="menuitem_selectAll"
+              data-l10n-id="text-action-select-all"
               command="cmd_selectAllActivities"/>
   </vbox>
 
 
   <richlistbox id="activityView" class="activityview" seltype="multiple"
                flex="1" onkeypress="activityObject.processKeyEvent(event)">
   </richlistbox>
 
--- a/mail/components/addrbook/content/addressbook.xhtml
+++ b/mail/components/addrbook/content/addressbook.xhtml
@@ -31,16 +31,20 @@
     onunload="OnUnloadAddressBook()"
     lightweightthemes="true"
     fullscreenbutton="true">
 
   <stringbundle id="bundle_addressBook" src="chrome://messenger/locale/addressbook/addressBook.properties"/>
   <stringbundle id="bundle_messenger" src="chrome://messenger/locale/messenger.properties"/>
   <stringbundle id="bundle_brand" src="chrome://branding/locale/brand.properties"/>
 
+  <linkset>
+    <html:link rel="localization" href="toolkit/global/textActions.ftl"/>
+  </linkset>
+
 <script src="chrome://messenger/content/button-menu-button.js"/>
 <script src="chrome://messenger/content/jsTreeView.js"/>
 <script src="chrome://messenger/content/addressbook/abTrees.js"/>
 <script src="chrome://messenger/content/accountUtils.js"/>
 <script src="chrome://messenger/content/mailCore.js"/>
 <script src="chrome://messenger/content/addressbook/addressbook.js"/>
 <script src="chrome://messenger/content/addressbook/map-list.js"/>
 <script src="chrome://messenger/content/addressbook/abCommon.js"/>
@@ -374,57 +378,50 @@
                           class="menuitem-iconic"/>
             </menupopup>
         </menu>
 
         <menu id="menu_Edit" label="&editMenu.label;"
               accesskey="&editMenu.accesskey;">
           <menupopup id="menu_EditPopup">
             <menuitem id="menu_undo"
-                      label="&undoCmd.label;"
+                      data-l10n-id="text-action-undo"
                       key="key_undo"
-                      accesskey="&undoCmd.accesskey;"
                       command="cmd_undo"
                       class="menuitem-iconic"/>
             <menuitem id="menu_redo"
-                      label="&redoCmd.label;"
+                      data-l10n-id="text-action-redo"
                       key="key_redo"
-                      accesskey="&redoCmd.accesskey;"
                       command="cmd_redo"
                       class="menuitem-iconic"/>
             <menuseparator/>
             <menuitem id="menu_cut"
-                      label="&cutCmd.label;"
+                      data-l10n-id="text-action-cut"
                       key="key_cut"
-                      accesskey="&cutCmd.accesskey;"
                       command="cmd_cut"
                       class="menuitem-iconic"/>
             <menuitem id="menu_copy"
-                      label="&copyCmd.label;"
+                      data-l10n-id="text-action-copy"
                       key="key_copy"
-                      accesskey="&copyCmd.accesskey;"
                       command="cmd_copy"
                       class="menuitem-iconic"/>
             <menuitem id="menu_paste"
-                      label="&pasteCmd.label;"
+                      data-l10n-id="text-action-paste"
                       key="key_paste"
-                      accesskey="&pasteCmd.accesskey;"
                       command="cmd_paste"
                       class="menuitem-iconic"/>
             <menuitem id="menu_delete"
-                      label="&deleteCmd.label;"
+                      data-l10n-id="text-action-delete"
                       key="key_delete"
-                      accesskey="&deleteCmd.accesskey;"
                       command="cmd_delete"
                       class="menuitem-iconic"/>
             <menuseparator/>
             <menuitem id="menu_selectAll"
-                      label="&selectAllCmd.label;"
+                      data-l10n-id="text-action-select-all"
                       key="key_selectAll"
-                      accesskey="&selectAllCmd.accesskey;"
                       command="cmd_selectAll"/>
 
             <menuseparator/>
             <menuitem id="menu_search_addresses"
                       label="&searchAddressesCmd.label;"
                       accesskey="&searchAddressesCmd.accesskey;"
                       key="key_searchAddresses"
                       oncommand="onAdvancedAbSearch();"
--- a/mail/components/compose/content/messengercompose.xhtml
+++ b/mail/components/compose/content/messengercompose.xhtml
@@ -53,16 +53,17 @@
   <stringbundle id="bundle_composeMsgs" src="chrome://messenger/locale/messengercompose/composeMsgs.properties"/>
   <stringbundle id="bundle_messenger" src="chrome://messenger/locale/messenger.properties"/>
   <stringbundle id="brandBundle" src="chrome://branding/locale/brand.properties"/>
   <stringbundle id="bundle_comp_smime" src="chrome://messenger-smime/locale/msgCompSMIMEOverlay.properties"/>
   <stringbundle id="charsetBundle" src="chrome://communicator/content/labelsencodings.properties"/>
 
 <linkset>
   <html:link rel="localization" href="toolkit/main-window/findbar.ftl"/>
+  <html:link rel="localization" href="toolkit/global/textActions.ftl"/>
   <html:link rel="localization" href="messenger/menubar.ftl"/>
 </linkset>
 
 <script src="chrome://global/content/globalOverlay.js"/>
 <script src="chrome://global/content/editMenuOverlay.js"/>
 <script src="chrome://global/content/printUtils.js"/>
 <script src="chrome://messenger/content/accountUtils.js"/>
 <script src="chrome://messenger/content/mailCore.js"/>
@@ -594,25 +595,25 @@
   <menuitem id="spellCheckNoSuggestions" label="&spellNoSuggestions.label;" disabled="true"/>
   <menuseparator id="spellCheckAddSep" />
   <menuitem id="spellCheckAddToDictionary" label="&spellAddToDictionary.label;" accesskey="&spellAddToDictionary.accesskey;"
             oncommand="gSpellChecker.addToDictionary();"/>
   <menuitem id="spellCheckIgnoreWord" label="&spellCheckIgnoreWord.label;" accesskey="&spellCheckIgnoreWord.accesskey;"
             oncommand="gSpellChecker.ignoreWord();"/>
   <menuseparator id="spellCheckSuggestionsSeparator"/>
 
-  <menuitem label="&undo.label;" accesskey="&undo.accesskey;" command="cmd_undo"/>
-  <menuitem label="&cut.label;" accesskey="&cut.accesskey;" command="cmd_cut"/>
-  <menuitem label="&copy.label;" accesskey="&copy.accesskey;" command="cmd_copy"/>
-  <menuitem label="&paste.label;" accesskey="&paste.accesskey;" command="cmd_paste"/>
+  <menuitem data-l10n-id="text-action-undo" command="cmd_undo"/>
+  <menuitem data-l10n-id="text-action-cut" command="cmd_cut"/>
+  <menuitem data-l10n-id="text-action-copy" command="cmd_copy"/>
+  <menuitem data-l10n-id="text-action-paste" command="cmd_paste"/>
   <menuitem command="cmd_pasteNoFormatting"/>
   <menuitem label="&pasteQuote.label;" accesskey="&pasteQuote.accesskey;" command="cmd_pasteQuote"/>
-  <menuitem label="&delete.label;" accesskey="&delete.accesskey;" command="cmd_delete"/>
+  <menuitem data-l10n-id="text-action-delete" command="cmd_delete"/>
   <menuseparator/>
-  <menuitem label="&selectAll.label;" accesskey="&selectAll.accesskey;" command="cmd_selectAll"/>
+  <menuitem data-l10n-id="text-action-select-all" command="cmd_selectAll"/>
 
   <!-- Spellchecking general menu items (enable, add dictionaries...) -->
   <menuseparator id="spellCheckSeparator"/>
   <menuitem id="spellCheckEnable"
             label="&spellCheckToggle.label;"
             type="checkbox"
             accesskey="&spellCheckToggle.accesskey;"
             oncommand="enableInlineSpellCheck(!gSpellChecker.enabled);"/>
@@ -743,24 +744,24 @@
            onpopupshowing="OnShowDictionaryMenu(event.target);">
 </menupopup>
 
 
 <menupopup id="emailAddressPillPopup" class="emailAddressPopup">
   <menuitem id="editAddressPill" label="&editMenu.label;"
             accesskey="&editMenu.accesskey;"
             oncommand="editAddressPill(document.popupNode, event)"/>
-  <menuitem id="menu_cut" label="&cutCmd.label;"
-            accesskey="&cutCmd.accesskey;"
+  <menuitem id="menu_cut"
+            data-l10n-id="text-action-cut"
             oncommand="cutEmailNewsAddress(document.popupNode)"/>
-  <menuitem id="menu_copy" label="&copyCmd.label;"
-            accesskey="&copyCmd.accesskey;"
+  <menuitem id="menu_copy"
+            data-l10n-id="text-action-copy"
             oncommand="copyEmailNewsAddress(document.popupNode)"/>
-  <menuitem id="menu_delete" label="&deleteCmd.label;"
-            accesskey="&deleteCmd.accesskey;"
+  <menuitem id="menu_delete"
+            data-l10n-id="text-action-delete"
             oncommand="deleteAddressPill(document.popupNode)"/>
 </menupopup>
 
 #ifdef XP_MACOSX
   <vbox id="titlebar">
     <hbox id="titlebar-content">
       <spacer id="titlebar-spacer" flex="1"/>
       <hbox id="titlebar-buttonbox-container" align="start">
@@ -882,40 +883,39 @@
                     command="cmd_close"/>
         </menupopup>
       </menu>
 
       <!-- Edit Menu -->
       <menu id="menu_Edit" label="&editMenu.label;" accesskey="&editMenu.accesskey;">
         <menupopup id="menu_EditPopup" onpopupshowing="updateEditItems();">
           <menuitem id="menu_undo" class="menuitem-iconic"
-                    label="&undoCmd.label;" key="key_undo"
-                    accesskey="&undoCmd.accesskey;" command="cmd_undo"/>
+                    data-l10n-id="text-action-undo"
+                    key="key_undo" command="cmd_undo"/>
           <menuitem id="menu_redo" class="menuitem-iconic"
-                    label="&redoCmd.label;" key="key_redo"
-                    accesskey="&redoCmd.accesskey;" command="cmd_redo"/>
+                    data-l10n-id="text-action-redo"
+                    key="key_redo" command="cmd_redo"/>
           <menuseparator/>
           <menuitem id="menu_cut" class="menuitem-iconic"
-                    label="&cutCmd.label;" key="key_cut"
-                    accesskey="&cutCmd.accesskey;" command="cmd_cut"/>
+                    data-l10n-id="text-action-cut"
+                    key="key_cut" command="cmd_cut"/>
           <menuitem id="menu_copy" class="menuitem-iconic"
-                    label="&copyCmd.label;" key="key_copy"
-                    accesskey="&copyCmd.accesskey;" command="cmd_copy"/>
+                    data-l10n-id="text-action-copy"
+                    key="key_copy" command="cmd_copy"/>
           <menuitem id="menu_paste" class="menuitem-iconic"
-                    label="&pasteCmd.label;" key="key_paste"
-                    accesskey="&pasteCmd.accesskey;" command="cmd_paste"/>
+                    data-l10n-id="text-action-paste"
+                    key="key_paste" command="cmd_paste"/>
           <menuitem id="menu_pasteNoFormatting"
                     command="cmd_pasteNoFormatting" key="pastenoformattingkb"/>
           <menuitem id="menu_pasteQuote"
                     accesskey="&pasteAsQuotationCmd.accesskey;"
                     command="cmd_pasteQuote"
                     key="pastequotationkb"/>
           <menuitem id="menu_delete" class="menuitem-iconic"
-                    label="&deleteCmd.label;"
-                    accesskey="&deleteCmd.accesskey;"
+                    data-l10n-id="text-action-delete"
                     key="key_delete"
                     command="cmd_delete"/>
           <menuseparator/>
           <menuitem id="menu_rewrap"
                     label="&editRewrapCmd.label;"
                     accesskey="&editRewrapCmd.accesskey;"
                     key="key_rewrap"
                     command="cmd_rewrap"/>
@@ -926,18 +926,17 @@
                     command="cmd_renameAttachment"/>
           <menuitem id="menu_reorderAttachments"
                     label="&reorderAttachmentsCmd.label;"
                     accesskey="&reorderAttachmentsCmd.accesskey;"
                     key="key_reorderAttachments"
                     command="cmd_reorderAttachments"/>
           <menuseparator/>
           <menuitem id="menu_selectAll"
-                    label="&selectAllCmd.label;"
-                    accesskey="&selectAllCmd.accesskey;"
+                    data-l10n-id="text-action-select-all"
                     key="key_selectAll"
                     command="cmd_selectAll"/>
           <menuseparator/>
           <menuitem id="menu_findBar"
                     label="&findBarCmd.label;"
                     accesskey="&findBarCmd.accesskey;"
                     key="key_find"
                     command="cmd_find"/>
@@ -1906,25 +1905,25 @@
     </toolbarbutton>
 #endif
     <toolbarbutton class="toolbarbutton-1"
                id="quoteButton" label="&quoteButton.label;"
                tooltiptext="&quoteButton.tooltip;"
                command="cmd_quoteMessage"/>
 
     <toolbarbutton id="cut-button" class="toolbarbutton-1"
-                   label="&cutCmd.label;"
+                   data-l10n-id="text-action-cut"
                    command="cmd_cut"
                    tooltiptext="&cutButton.tooltip;"/>
     <toolbarbutton id="copy-button" class="toolbarbutton-1"
-                   label="&copyCmd.label;"
+                   data-l10n-id="text-action-copy"
                    command="cmd_copy"
                    tooltiptext="&copyButton.tooltip;"/>
     <toolbarbutton id="paste-button" class="toolbarbutton-1"
-                   label="&pasteCmd.label;"
+                   data-l10n-id="text-action-paste"
                    command="cmd_paste"
                    tooltiptext="&pasteButton.tooltip;"/>
 
     <toolbaritem id="priority-button"
                  align="center"
                  pack="center"
                  title="&priorityButton.title;"
                  tooltiptext="&priorityButton.tooltiptext;">
@@ -2276,17 +2275,17 @@
                             type="text"
                             class="input-inline textbox-input"
                             disableonsend="true"
                             oninput="gContentChanged = true; SetComposeWindowTitle();"
                             onkeypress="subjectKeyPress(event);"
                             aria-labelledby="subjectLabel"
                             onfocus="deselectAllPills();"
                             style="-moz-box-flex: 1;"/>
-                </moz-input-box>
+              </moz-input-box>
             </hbox>
           </hbox>
         </vbox>
         <splitter id="attachmentbucket-sizer"
                   collapsed="true"
                   collapse="after"
                   onmouseup="attachmentBucketSizerOnMouseUp();"/>
         <vbox id="attachments-box" collapsed="true" persist="width">
--- a/mail/components/customizableui/content/panelUI.inc.xhtml
+++ b/mail/components/customizableui/content/panelUI.inc.xhtml
@@ -237,54 +237,54 @@
 
     <!-- Edit -->
     <panelview id="appMenu-editView"
                title="&appmenuEditMenu.label;"
                class="PanelUI-subView">
       <vbox class="panel-subview-body">
         <toolbarbutton id="appmenu-editmenu-cut"
                        class="subviewbutton subviewbutton-iconic"
-                       label="&cutCmd.label;"
+                       data-l10n-id="text-action-cut"
                        key="key_cut"
                        command="cmd_cut"/>
         <toolbarbutton id="appmenu-editmenu-copy"
                        class="subviewbutton subviewbutton-iconic"
-                       label="&copyCmd.label;"
+                       data-l10n-id="text-action-copy"
                        key="key_copy"
                        command="cmd_copy"/>
         <toolbarbutton id="appmenu-editmenu-paste"
                        class="subviewbutton subviewbutton-iconic"
-                       label="&pasteCmd.label;"
+                       data-l10n-id="text-action-paste"
                        key="key_paste"
                        command="cmd_paste"/>
         <toolbarseparator/>
         <toolbarbutton id="appmenu-editmenu-undo"
                        class="subviewbutton subviewbutton-iconic"
-                       label="&undoCmd.label;"
+                       data-l10n-id="text-action-undo"
                        key="key_undo"
                        command="cmd_undo"/>
         <toolbarbutton id="appmenu-editmenu-redo"
                        class="subviewbutton subviewbutton-iconic"
-                       label="&redoCmd.label;"
+                       data-l10n-id="text-action-redo"
                        key="key_redo"
                        command="cmd_redo"/>
         <toolbarseparator id="appmenu_messageAfterRedoEditSeparator"/>
         <toolbarbutton id="appmenu_delete"
                        class="subviewbutton subviewbutton-iconic"
-                       label="&deleteCmd.label;"
+                       data-l10n-id="text-action-delete"
 #ifdef XP_MACOSX
                        acceltext="⌫"
 #else
                        key="key_delete"
 #endif
                        command="cmd_delete"/>
         <toolbarseparator id="appmenu_messageAfterDeleteEditSeparator"/>
         <toolbarbutton id="appmenu-editmenu-selectAll"
                        class="subviewbutton subviewbutton-iconic"
-                       label="&selectAllCmd.label;"
+                       data-l10n-id="text-action-select-all"
                        key="key_selectAll"
                        command="cmd_selectAll"/>
         <toolbarbutton id="appmenu_selectThread"
                        class="subviewbutton subviewbutton-iconic"
                        label="&appmenuSelectThread.label;"
                        key="key_selectThread"
                        command="cmd_selectThread"/>
         <toolbarbutton id="appmenu_selectFlagged"
--- a/mail/components/im/content/chat-menu.inc.xhtml
+++ b/mail/components/im/content/chat-menu.inc.xhtml
@@ -16,18 +16,17 @@
               accesskey="&closeConversationCmd.accesskey;"
               oncommand="gBuddyListContextMenu.closeConversation();"/>
     <menuseparator id="context-edit-buddy-separator"/>
     <menuitem id="context-alias"
               label="&aliasCmd.label;"
               accesskey="&aliasCmd.accesskey;"
               oncommand="gBuddyListContextMenu.alias();"/>
     <menuitem id="context-delete"
-              label="&deleteCmd.label;"
-              accesskey="&deleteCmd.accesskey;"
+              data-l10n-id="text-action-delete"
               oncommand="gBuddyListContextMenu.delete();"/>
   </menupopup>
 
   <menupopup id="chatConversationContextMenu"
              onpopupshowing="if (event.target != this) { return true; } gChatContextMenu = new imContextMenu(this); return gChatContextMenu.shouldDisplay;"
              onpopuphiding="if (event.target == this &amp;&amp; gChatContextMenu) { gChatContextMenu.cleanup(); gChatContextMenu = null; }">
     <menuitem id="context-openlink"
               label="&openLinkCmd.label;"
@@ -39,22 +38,20 @@
               oncommand="gChatContextMenu.copyEmail();"/>
     <menuitem id="context-copylink"
               label="&copyLinkCmd.label;"
               accesskey="&copyLinkCmd.accesskey;"
               oncommand="goDoCommand('cmd_copyLink');"/>
     <menuseparator id="context-sep-copylink"/>
 
     <menuitem id="context-copy"
-              label="&copyCmd.label;"
-              accesskey="&copyCmd.accesskey;"
+              data-l10n-id="text-action-copy"
               command="cmd_copy"/>
     <menuitem id="context-selectall"
-              label="&selectAllCmd.label;"
-              accesskey="&selectAllCmd.accesskey;"
+              data-l10n-id="text-action-select-all"
               command="cmd_selectAll"/>
     <menuseparator id="context-sep-messageactions"/>
   </menupopup>
 
   <menupopup id="chat-toolbar-context-menu">
     <menuitem id="CustomizeChatToolbar"
               oncommand="CustomizeMailToolbar('chat-view-toolbox', 'CustomizeChatToolbar')"
               label="&customizeToolbar.label;"
@@ -71,24 +68,22 @@
               disabled="true"/>
     <menuseparator id="spellCheckAddSep" />
     <menuitem id="spellCheckAddToDictionary"
               label="&spellAddToDictionary.label;"
               accesskey="&spellAddToDictionary.accesskey;"
               oncommand="gChatSpellChecker.addToDictionary();"/>
     <menuseparator id="spellCheckSuggestionsSeparator"/>
 
-    <menuitem label="&undoCmd.label;" accesskey="&undoCmd.accesskey;" command="cmd_undo"/>
-    <menuitem label="&cutCmd.label;" accesskey="&cutCmd.accesskey;" command="cmd_cut"/>
-    <menuitem label="&copyCmd.label;" accesskey="&copyCmd.accesskey;" command="cmd_copy"/>
-    <menuitem label="&pasteCmd.label;" accesskey="&pasteCmd.accesskey;" command="cmd_paste"/>
+    <menuitem data-l10n-id="text-action-undo" command="cmd_undo"/>
+    <menuitem data-l10n-id="text-action-cut" command="cmd_cut"/>
+    <menuitem data-l10n-id="text-action-copy" command="cmd_copy"/>
+    <menuitem data-l10n-id="text-action-paste" command="cmd_paste"/>
     <menuseparator/>
-    <menuitem label="&selectAllCmd.label;"
-              accesskey="&selectAllCmd.accesskey;"
-              command="cmd_selectAll"/>
+    <menuitem data-l10n-id="text-action-select-all" command="cmd_selectAll"/>
 
     <!-- Spellchecking general menu items (enable, add dictionaries...) -->
     <menuseparator id="spellCheckSeparator"/>
     <menuitem id="spellCheckEnable"
               label="&spellCheckToggle.label;"
               type="checkbox"
               accesskey="&spellCheckToggle.accesskey;"
               oncommand="enableInlineSpellCheck(!gChatSpellChecker.enabled);"/>
--- a/mail/locales/en-US/chrome/communicator/utilityOverlay.dtd
+++ b/mail/locales/en-US/chrome/communicator/utilityOverlay.dtd
@@ -12,30 +12,22 @@
 <!ENTITY editMenu.label          "Edit">
 <!ENTITY editMenu.accesskey        "E">
 <!ENTITY undoCmd.label            "Undo">
 <!ENTITY undoCmd.key            "Z">
 <!ENTITY undoCmd.accesskey          "U">
 <!ENTITY redoCmd.label            "Redo">
 <!ENTITY redoCmd.key            "Y">
 <!ENTITY redoCmd.accesskey          "R">
-<!ENTITY cutCmd.label            "Cut">
 <!ENTITY cutCmd.key              "X">
-<!ENTITY cutCmd.accesskey          "t">
-<!ENTITY copyCmd.label            "Copy">
 <!ENTITY copyCmd.key            "C">
-<!ENTITY copyCmd.accesskey          "C">
-<!ENTITY pasteCmd.label            "Paste">
 <!ENTITY pasteCmd.key            "V">
-<!ENTITY pasteCmd.accesskey          "P">
 <!ENTITY deleteCmd.label          "Delete">
 <!ENTITY deleteCmd.accesskey        "D">
-<!ENTITY selectAllCmd.label          "Select All">
 <!ENTITY selectAllCmd.key          "A">
-<!ENTITY selectAllCmd.accesskey        "A">
 <!ENTITY preferencesCmd2.label "Options">
 <!ENTITY preferencesCmd2.accesskey "O">
 <!ENTITY preferencesCmdUnix.label       "Preferences">
 <!ENTITY preferencesCmdUnix.accesskey     "n">
 
 <!ENTITY viewMenu.label          "View">
 <!ENTITY viewMenu.accesskey        "V">
 <!ENTITY viewToolbarsMenu.label        "Toolbars">
--- a/mail/locales/en-US/chrome/messenger/addressbook/abMainWindow.dtd
+++ b/mail/locales/en-US/chrome/messenger/addressbook/abMainWindow.dtd
@@ -39,43 +39,30 @@
 <!ENTITY printContactCmd.accesskey                      "P">
 <!ENTITY printContactCmd.key                            "P">
 <!ENTITY printAddressBook.label                         "Print Address Book…">
 <!ENTITY printAddressBook.accesskey                     "A">
 
 <!-- Edit Menu -->
 <!ENTITY editMenu.label                                 "Edit">
 <!ENTITY editMenu.accesskey                             "E">
-<!ENTITY undoCmd.label                                  "Undo">
 <!ENTITY undoCmd.key                                    "Z">
-<!ENTITY undoCmd.accesskey                              "U">
-<!ENTITY redoCmd.label                                  "Redo">
 <!ENTITY redoCmd.key                                    "Y">
-<!ENTITY redoCmd.accesskey                              "R">
-<!ENTITY cutCmd.label                                   "Cut">
 <!ENTITY cutCmd.key                                     "X">
-<!ENTITY cutCmd.accesskey                               "t">
-<!ENTITY copyCmd.label                                  "Copy">
 <!ENTITY copyCmd.key                                    "C">
-<!ENTITY copyCmd.accesskey                              "C">
-<!ENTITY pasteCmd.label                                 "Paste">
 <!ENTITY pasteCmd.key                                   "V">
-<!ENTITY pasteCmd.accesskey                             "P">
 <!ENTITY deleteCmd.label                                "Delete">
-<!ENTITY deleteCmd.accesskey                            "D">
 <!ENTITY deleteAbCmd.label                              "Delete Address Book">
 <!ENTITY deleteContactCmd.label                         "Delete Contact">
 <!ENTITY deleteContactsCmd.label                        "Delete Contacts">
 <!ENTITY deleteListCmd.label                            "Delete List">
 <!ENTITY deleteListsCmd.label                           "Delete Lists">
 <!ENTITY deleteItemsCmd.label                           "Delete Items">
-<!ENTITY selectAllCmd.label                             "Select All">
 <!ENTITY selectAllCmd.key                               "A">
 <!ENTITY searchAddressesCmd.key                         "f">
-<!ENTITY selectAllCmd.accesskey                         "A">
 <!ENTITY swapFirstNameLastNameCmd.label                 "Swap First/Last Name">
 <!ENTITY swapFirstNameLastNameCmd.accesskey             "w">
 <!-- LOCALIZATION NOTE (hideSwapFnLnUI) : DONT_TRANSLATE -->
 <!-- Swap FN/LN UI  Set to "false" to show swap fn/ln UI -->
 <!ENTITY hideSwapFnLnUI "true">
 <!ENTITY propertiesMenu.label                           "Properties">
 <!ENTITY propertiesMenu.accesskey                       "i">
 <!ENTITY propertiesCmd.key                              "i">
--- a/mail/locales/en-US/chrome/messenger/messengercompose/messengercompose.dtd
+++ b/mail/locales/en-US/chrome/messenger/messengercompose/messengercompose.dtd
@@ -62,25 +62,19 @@
 <!ENTITY editMenu.label "Edit">
 <!ENTITY editMenu.accesskey "e">
 <!ENTITY undoCmd.label "Undo">
 <!ENTITY undoCmd.key "Z">
 <!ENTITY undoCmd.accesskey "u">
 <!ENTITY redoCmd.label "Redo">
 <!ENTITY redoCmd.key "Y">
 <!ENTITY redoCmd.accesskey "r">
-<!ENTITY cutCmd.label "Cut">
 <!ENTITY cutCmd.key "X">
-<!ENTITY cutCmd.accesskey "t">
-<!ENTITY copyCmd.label "Copy">
 <!ENTITY copyCmd.key "C">
-<!ENTITY copyCmd.accesskey "c">
-<!ENTITY pasteCmd.label "Paste">
 <!ENTITY pasteCmd.key "V">
-<!ENTITY pasteCmd.accesskey "p">
 <!ENTITY pasteNoFormattingCmd.key "V">
 <!ENTITY pasteAsQuotationCmd.key "o">
 <!ENTITY editRewrapCmd.accesskey "w">
 <!ENTITY deleteCmd.label "Delete">
 <!ENTITY deleteCmd.accesskey "d">
 <!ENTITY editRewrapCmd.label "Rewrap">
 <!ENTITY editRewrapCmd.key "R">
 <!ENTITY renameAttachmentCmd.label "Rename Attachment…">
@@ -93,19 +87,17 @@
      For better mnemonics, toggleAttachmentPaneCmd.accesskey should be the same
      as attachments.accesskey. -->
 <!ENTITY toggleAttachmentPaneCmd.accesskey "m">
 <!-- LOCALIZATION NOTE (toggleAttachmentPaneCmd.key):
      As Mac does not have access keys, this key defines a Mac-only, cross-l10n
      shortcut key (Ctrl+M). Typically, this key should not be translated unless
      otherwise required by specific needs of the localization. -->
 <!ENTITY toggleAttachmentPaneCmd.key "m">
-<!ENTITY selectAllCmd.label "Select All">
 <!ENTITY selectAllCmd.accesskey "a">
-<!ENTITY selectAllCmd.key "A">
 <!ENTITY findBarCmd.label "Find…">
 <!ENTITY findBarCmd.accesskey "F">
 <!ENTITY findBarCmd.key "F">
 <!ENTITY findReplaceCmd.label "Find and Replace…">
 <!ENTITY findReplaceCmd.accesskey "l">
 <!ENTITY findReplaceCmd.key "H">
 <!ENTITY findAgainCmd.label "Find Again">
 <!ENTITY findAgainCmd.accesskey "g">