diff --git a/web/gui/src/main/resources/org/onosproject/ui/lion/_config/core.view.Topo.lioncfg b/web/gui/src/main/resources/org/onosproject/ui/lion/_config/core.view.Topo.lioncfg
index ed18b10..3697a85 100644
--- a/web/gui/src/main/resources/org/onosproject/ui/lion/_config/core.view.Topo.lioncfg
+++ b/web/gui/src/main/resources/org/onosproject/ui/lion/_config/core.view.Topo.lioncfg
@@ -28,8 +28,8 @@
 
 from cf.QuickHelp import qh_hint_close_detail
 
-from cc.Action import show, hide, enable, disable, select
-from cc.Network import devices, links, hosts, topology_sccs, intents, tunnels, flows, ports, protocol, uri, mac, ip, vlan, device, host
+from cc.Action import show, hide, enable, disable, select, purged, withdrawn, resubmitted, added
+from cc.Network import devices, links, hosts, topology_sccs, intents, tunnels, flows, ports, protocol, uri, mac, ip, vlan, device, host, intent
 from cc.Props import version, vendor, hw_version, sw_version, serial_number, latitude, longitude, grid_y, grid_x
 from cc.State import visible, hidden, vlan_none, expected, not_expected
 from cc.Ui import click, shift_click, drag, cmd_scroll, cmd_drag, ok, close
diff --git a/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action.properties b/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action.properties
index 4a8311c..14efa87 100644
--- a/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action.properties
+++ b/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action.properties
@@ -15,6 +15,7 @@
 #
 #
 
+# Present Tense
 install=Install
 start=Start
 pause=Pause
@@ -28,3 +29,9 @@
 enable=Enable
 disable=Disable
 select=Select
+
+# Past Tense
+purged=purged
+withdrawn=withdrawn
+resubmitted=resubmitted
+added=added
diff --git a/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_es.properties b/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_es.properties
index f90ca88..cd1d275 100644
--- a/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_es.properties
+++ b/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_es.properties
@@ -15,6 +15,7 @@
 #
 #
 
+# Present Tense
 install=Instalar
 start=Iniciar
 pause=Pausar
@@ -28,3 +29,9 @@
 enable=Enable (es)
 disable=Disable (es)
 select=Select (es)
+
+# Past Tense
+purged=purged (es)
+withdrawn=withdrawn (es)
+resubmitted=resubmitted (es)
+added=added (es)
diff --git a/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_it.properties b/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_it.properties
index 4c5d6c9..0678eb2 100644
--- a/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_it.properties
+++ b/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_it.properties
@@ -15,6 +15,7 @@
 #
 #
 
+# Present Tense
 install=Installa
 start=Inizia
 pause=Pausa
@@ -28,3 +29,9 @@
 enable=Enable (it)
 disable=Disable (it)
 select=Select (it)
+
+# Past Tense
+purged=purged (it)
+withdrawn=withdrawn (it)
+resubmitted=resubmitted (it)
+added=added (it)
diff --git a/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_ko.properties b/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_ko.properties
index 2cf0ba1..a2e72c3 100644
--- a/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_ko.properties
+++ b/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_ko.properties
@@ -15,6 +15,7 @@
 #
 #
 
+# Present Tense
 install=설치
 start=시작
 pause=중지
@@ -28,3 +29,9 @@
 enable=Enable (ko)
 disable=Disable (ko)
 select=Select (ko)
+
+# Past Tense
+purged=purged (ko)
+withdrawn=withdrawn (ko)
+resubmitted=resubmitted (ko)
+added=added (ko)
diff --git a/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_zh_CN.properties b/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_zh_CN.properties
index ab6fffa..271687f 100644
--- a/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_zh_CN.properties
+++ b/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_zh_CN.properties
@@ -15,6 +15,7 @@
 #
 #
 
+# Present Tense
 install=安装
 start=开始
 pause=暂停
@@ -28,3 +29,9 @@
 enable=Enable (zh_CN)
 disable=Disable (zh_CN)
 select=Select (zh_CN)
+
+# Past Tense
+purged=purged (zh_CN)
+withdrawn=withdrawn (zh_CN)
+resubmitted=resubmitted (zh_CN)
+added=added (zh_CN)
diff --git a/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_zh_TW.properties b/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_zh_TW.properties
index bf299ac..ed86135 100644
--- a/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_zh_TW.properties
+++ b/web/gui/src/main/resources/org/onosproject/ui/lion/core/common/Action_zh_TW.properties
@@ -15,6 +15,7 @@
 #
 #
 
+# Present Tense
 install=安裝
 start=開始
 pause=暫停
@@ -28,3 +29,9 @@
 enable=Enable (zh_TW)
 disable=Disable (zh_TW)
 select=Select (zh_TW)
+
+# Past Tense
+purged=purged (zh_TW)
+withdrawn=withdrawn (zh_TW)
+resubmitted=resubmitted (zh_TW)
+added=added (zh_TW)
diff --git a/web/gui/src/main/resources/org/onosproject/ui/lion/core/view/Topo.properties b/web/gui/src/main/resources/org/onosproject/ui/lion/core/view/Topo.properties
index a534c5f..0c82575 100644
--- a/web/gui/src/main/resources/org/onosproject/ui/lion/core/view/Topo.properties
+++ b/web/gui/src/main/resources/org/onosproject/ui/lion/core/view/Topo.properties
@@ -79,6 +79,37 @@
 fl_oblique_view=Oblique View
 fl_normal_view=Normal View
 
+fl_monitoring_canceled=Monitoring Canceled
+fl_selecting_intent=Selecting Intent
+
+# Core Overlays
+ov_tt_protected_intents=Protected Intents Overlay
+ov_tt_traffic=Traffic Overlay
+ov_tt_none=No Overlay
+
+# Traffic Overlay
+tr_btn_create_h2h_flow=Create Host-to-Host Flow
+tr_btn_create_msrc_flow=Create Multi-Source Flow
+tr_btn_show_device_flows=Show Device Flows
+tr_btn_show_related_traffic=Show Related Traffic
+tr_btn_cancel_monitoring=Cancel traffic monitoring
+tr_btn_monitor_all=Monitor all traffic
+tr_btn_show_dev_link_flows=Show device link flows
+tr_btn_show_all_rel_intents=Show all related intents
+tr_btn_show_prev_rel_intent=Show previous related intent
+tr_btn_show_next_rel_intent=Show next related intent
+tr_btn_monitor_sel_intent=Monitor traffic of selected intent
+tr_fl_fstats_bytes=Flow Stats (bytes)
+tr_fl_pstats_bits=Port Stats (bits / second)
+tr_fl_pstats_pkts=Port Stats (packets / second)
+tr_fl_dev_flows=Device Flows
+tr_fl_rel_paths=Related Paths
+tr_fl_prev_rel_int=Previous related intent
+tr_fl_next_rel_int=Next related intent
+tr_fl_traf_on_path=Traffic on Selected Path
+tr_fl_h2h_flow_added=Host-to-Host flow added
+tr_fl_multisrc_flow=Multi-Source Flow
+
 # Button tooltips
 btn_show_view_device=Show Device View
 btn_show_view_flow=Show Flow View for this Device
diff --git a/web/gui/src/main/resources/org/onosproject/ui/lion/core/view/Topo_it.properties b/web/gui/src/main/resources/org/onosproject/ui/lion/core/view/Topo_it.properties
index 8354573..a08c629 100644
--- a/web/gui/src/main/resources/org/onosproject/ui/lion/core/view/Topo_it.properties
+++ b/web/gui/src/main/resources/org/onosproject/ui/lion/core/view/Topo_it.properties
@@ -79,6 +79,37 @@
 fl_oblique_view=Oblique View (it)
 fl_normal_view=Normal View (it)
 
+fl_monitoring_canceled=Monitoring Canceled (it)
+fl_selecting_intent=Selecting Intent (it)
+
+# Core Overlays
+ov_tt_protected_intents=Protected Intents Overlay (it)
+ov_tt_traffic=Traffic Overlay (it)
+ov_tt_none=No Overlay (it)
+
+# Traffic Overlay
+tr_btn_create_h2h_flow=Create Host-to-Host Flow (it)
+tr_btn_create_msrc_flow=Create Multi-Source Flow (it)
+tr_btn_show_device_flows=Show Device Flows (it)
+tr_btn_show_related_traffic=Show Related Traffic (it)
+tr_btn_cancel_monitoring=Cancel traffic monitoring (it)
+tr_btn_monitor_all=Monitor all traffic (it)
+tr_btn_show_dev_link_flows=Show device link flows (it)
+tr_btn_show_all_rel_intents=Show all related intents (it)
+tr_btn_show_prev_rel_intent=Show previous related intent (it)
+tr_btn_show_next_rel_intent=Show next related intent (it)
+tr_btn_monitor_sel_intent=Monitor traffic of selected intent (it)
+tr_fl_fstats_bytes=Flow Stats (bytes) (it)
+tr_fl_pstats_bits=Port Stats (bits / second) (it)
+tr_fl_pstats_pkts=Port Stats (packets / second) (it)
+tr_fl_dev_flows=Device Flows (it)
+tr_fl_rel_paths=Related Paths (it)
+tr_fl_prev_rel_int=Previous related intent (it)
+tr_fl_next_rel_int=Next related intent (it)
+tr_fl_traf_on_path=Traffic on Selected Path (it)
+tr_fl_h2h_flow_added=Host-to-Host flow added (it)
+tr_fl_multisrc_flow=Multi-Source Flow (it)
+
 # Button tooltips
 btn_show_view_device=Show Device View (it)
 btn_show_view_flow=Show Flow View for this Device (it)
diff --git a/web/gui/src/main/webapp/app/fw/layer/quickhelp.js b/web/gui/src/main/webapp/app/fw/layer/quickhelp.js
index 46a5c79..92721cb 100644
--- a/web/gui/src/main/webapp/app/fw/layer/quickhelp.js
+++ b/web/gui/src/main/webapp/app/fw/layer/quickhelp.js
@@ -270,7 +270,7 @@
         addRow(mkArrRow(vgest));
     }
 
-    function qhlion_title() {
+    function qhlionTitle() {
         var lion = ls.bundle('core.fw.QuickHelp');
         return lion('qh_title');
     }
@@ -286,7 +286,7 @@
             .attr('rx', 8);
 
         pane.append('text')
-            .text(qhlion_title())
+            .text(qhlionTitle())
             .attr({
                 class: 'title',
                 dy: '1.2em',
diff --git a/web/gui/src/main/webapp/app/fw/util/keys.js b/web/gui/src/main/webapp/app/fw/util/keys.js
index 45ba410..2dc8974 100644
--- a/web/gui/src/main/webapp/app/fw/util/keys.js
+++ b/web/gui/src/main/webapp/app/fw/util/keys.js
@@ -167,25 +167,25 @@
     function qhlion() {
         return ls.bundle('core.fw.QuickHelp');
     }
-    function qhlion_show_hide() {
+    function qhlionShowHide() {
         return qhlion()('qh_hint_show_hide_qh');
     }
 
-    function qhlion_hint_esc() {
+    function qhlionHintEsc() {
         return qhlion()('qh_hint_esc');
     }
 
-    function qhlion_hint_t() {
+    function qhlionHintT() {
         return qhlion()('qh_hint_t');
     }
 
     function setupGlobalKeys() {
         angular.extend(keyHandler, {
             globalKeys: {
-                backSlash: [quickHelp, qhlion_show_hide],
-                slash: [quickHelp, qhlion_show_hide],
-                esc: [escapeKey, qhlion_hint_esc],
-                T: [toggleTheme, qhlion_hint_t],
+                backSlash: [quickHelp, qhlionShowHide],
+                slash: [quickHelp, qhlionShowHide],
+                esc: [escapeKey, qhlionHintEsc],
+                T: [toggleTheme, qhlionHintT],
             },
             globalFormat: ['backSlash', 'slash', 'esc', 'T'],
 
diff --git a/web/gui/src/main/webapp/app/fw/widget/tableDetail.js b/web/gui/src/main/webapp/app/fw/widget/tableDetail.js
index 466b08c..2777454 100644
--- a/web/gui/src/main/webapp/app/fw/widget/tableDetail.js
+++ b/web/gui/src/main/webapp/app/fw/widget/tableDetail.js
@@ -26,6 +26,10 @@
     // constants
     // var refreshInterval = 2000;
 
+    /*
+     * NOTE: work-in-progress; this relates to ONOS-5579 (currently stalled)
+     */
+
     function noop() {}
 
     // TODO: describe the input object for the main function
diff --git a/web/gui/src/main/webapp/app/view/app/app.js b/web/gui/src/main/webapp/app/view/app/app.js
index 67b6040..a01dd2e 100644
--- a/web/gui/src/main/webapp/app/view/app/app.js
+++ b/web/gui/src/main/webapp/app/view/app/app.js
@@ -59,16 +59,16 @@
         // note: url is handled separately
 
     // deferred localization strings
-    var warn_deactivate,
-        warn_own_risk,
+    var warnDeactivate,
+        warnOwnRisk,
         friendlyProps,
         lion;
 
     function doLion() {
         lion = ls.bundle('core.view.App');
 
-        warn_deactivate = lion('dlg_warn_deactivate');
-        warn_own_risk = lion('dlg_warn_own_risk');
+        warnDeactivate = lion('dlg_warn_deactivate');
+        warnOwnRisk = lion('dlg_warn_own_risk');
 
         friendlyProps = [
             lion('app_id'), lion('state'), lion('category'), lion('version'),
@@ -314,9 +314,9 @@
             content.append('p').text(lion(action) + ' ' + itemId);
             if (strongWarning[itemId]) {
                 content.append('p').html(
-                    fs.sanitize(warn_deactivate) +
+                    fs.sanitize(warnDeactivate) +
                     '<br>' +
-                    fs.sanitize(warn_own_risk)
+                    fs.sanitize(warnOwnRisk)
                 ).classed('strong', true);
             }
             return content;
diff --git a/web/gui/src/main/webapp/app/view/flow/flow.js b/web/gui/src/main/webapp/app/view/flow/flow.js
index cca29db..f8c6491 100644
--- a/web/gui/src/main/webapp/app/view/flow/flow.js
+++ b/web/gui/src/main/webapp/app/view/flow/flow.js
@@ -22,7 +22,7 @@
     'use strict';
 
     // injected references
-    var $log, $scope, $location, fs, tbs, ns, mast, ps, wss, is, ks;
+    var $log, $scope, $location, fs, tbs, ns, mast, ps, wss, is;
 
     // internal state
     var detailsPanel,
@@ -34,18 +34,11 @@
         selDiv,
         topSelTable,
         topTrtTable,
-        bottom,
         iconDiv,
-        nameDiv,
         wSize;
 
-
     // constants
     var topPdg = 28,
-        ctnrPdg = 24,
-        scrollSize = 17,
-        portsTblPdg = 50,
-        htPdg = 479,
         wtPdg = 532,
 
         pName = 'flow-details-panel',
@@ -106,7 +99,7 @@
     }
 
     function setUpPanel() {
-        var container, closeBtn, tblDiv;
+        var container, closeBtn;
         detailsPanel.empty();
         container = detailsPanel.append('div').classed('container', true);
 
diff --git a/web/gui/src/main/webapp/app/view/topo/topo.js b/web/gui/src/main/webapp/app/view/topo/topo.js
index ba0bc7d..04b552c 100644
--- a/web/gui/src/main/webapp/app/view/topo/topo.js
+++ b/web/gui/src/main/webapp/app/view/topo/topo.js
@@ -346,7 +346,7 @@
 
         g = noDevsLayer.append('g');
         gs.addGlyph(g, 'bird', 100).attr('class', 'noDevsBird');
-        g.append('text').text('').attr({x: 120, y: 80 });
+        g.append('text').text('').attr({ x: 120, y: 80 });
         recenterLabel(g);
         showNoDevs(true);
     }
@@ -729,6 +729,7 @@
                     tis.setLionBundle(topoLion);
                     tms.setLionBundle(topoLion);
                     tps.setLionBundle(topoLion);
+                    ttbs.setLionBundle(topoLion);
 
                     // now we have the map projection, we are ready for
                     //  the server to send us device/host data...
diff --git a/web/gui/src/main/webapp/app/view/topo/topoForce.js b/web/gui/src/main/webapp/app/view/topo/topoForce.js
index 6da55fa..f3a2d0e 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoForce.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoForce.js
@@ -1118,6 +1118,7 @@
         tls.setLionBundle(bundle);
         tos.setLionBundle(bundle);
         tov.setLionBundle(bundle);
+        tss.setLionBundle(bundle);
     }
 
     angular.module('ovTopo')
diff --git a/web/gui/src/main/webapp/app/view/topo/topoLink.js b/web/gui/src/main/webapp/app/view/topo/topoLink.js
index d4f1dfe..26acea5 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoLink.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoLink.js
@@ -23,7 +23,7 @@
     'use strict';
 
     // injected refs
-    var $log, fs, flash, tss, tps, tov;
+    var $log, fs, flash, tss;
 
     // internal state
     var api,
@@ -329,15 +329,12 @@
     angular.module('ovTopo')
         .factory('TopoLinkService',
         ['$log', 'FnService', 'FlashService', 'TopoSelectService',
-        'TopoPanelService', 'TopoOverlayService',
 
-        function (_$log_, _fs_, _flash_, _tss_, _tps_, _tov_) {
+        function (_$log_, _fs_, _flash_, _tss_) {
             $log = _$log_;
             fs = _fs_;
             flash = _flash_;
             tss = _tss_;
-            tps = _tps_;
-            tov = _tov_;
 
             function initLink(_api_, _td3_) {
                 api = _api_;
diff --git a/web/gui/src/main/webapp/app/view/topo/topoOverlay.js b/web/gui/src/main/webapp/app/view/topo/topoOverlay.js
index 09ff7b6..4e9133a 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoOverlay.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoOverlay.js
@@ -147,7 +147,7 @@
         angular.forEach(overlays, function (ov) {
             rset.push({
                 gid: ov._glyphId,
-                tooltip: (ov.tooltip || '(no tooltip)'),
+                tooltip: (ov.tooltip || ''),
                 cb: function () {
                     tbSelection(ov.overlayId, switchFn);
                 },
@@ -302,19 +302,20 @@
         cb && cb();
     }
 
-    // Temporary function to allow overlays to modify link detail data
-    // in the client. (In the near future, this will be done on the server).
-    function modifyLinkDataHook(data, extra) {
-        var cb = _hook('modifylinkdata');
-        return cb && extra ? cb(data, extra) : data;
-    }
-
     // Request from Intent View to visualize an intent on the topo view
     function showIntentHook(intentData) {
         var cb = _hook('showIntent');
         return cb && cb(intentData);
     }
 
+    // 'core.view.Topo' lion bundle will be injected here.
+    // NOTE: if an overlay wants additional bundles, it should use the
+    //       LionService to request them at this time.
+    function injectLion(topoBundle) {
+        var cb = _hook('injectLion');
+        return cb && cb(topoBundle);
+    }
+
     // === -----------------------------------------------------
     //  Event (from server) Handlers
 
@@ -419,6 +420,12 @@
     // invoked after the localization bundle has been received from the server
     function setLionBundle(bundle) {
         topoLion = bundle;
+        // also inject the topo lion bundle to all overlays that request it
+        angular.forEach(overlays, function (ov) {
+            var hooks = fs.isO(ov.hooks) || {},
+                inj = fs.isF(hooks.injectLion);
+            inj && inj(bundle);
+        });
     }
 
     // ========================================================================
@@ -455,7 +462,6 @@
                     multiSelect: multiSelectHook,
                     mouseOver: mouseOverHook,
                     mouseOut: mouseOutHook,
-                    modifyLinkData: modifyLinkDataHook,
                     showIntent: showIntentHook,
                 },
 
diff --git a/web/gui/src/main/webapp/app/view/topo/topoProtectedIntent.js b/web/gui/src/main/webapp/app/view/topo/topoProtectedIntent.js
index 085ff4b..ac381ff 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoProtectedIntent.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoProtectedIntent.js
@@ -25,6 +25,11 @@
     // injected refs
     var flash, wss;
 
+    // function to be replaced by the localization bundle function
+    var topoLion = function (x) {
+        return '#tproti#' + x + '#';
+    };
+
     // internal state
     var showingProtectedIntent = null;
 
@@ -38,14 +43,14 @@
 
         showingProtectedIntent = false;
         wss.sendEvent('cancelProtectedIntentHighlight');
-        flash.flash('Monitoring canceled');
+        flash.flash(topoLion('fl_monitoring_canceled'));
         return true;
     }
 
     // force the system to create a single intent selection
     function showProtectedIntent(data) {
         wss.sendEvent('selectProtectedIntent', data);
-        flash.flash('Selecting Intent ' + data.key);
+        flash.flash(topoLion('fl_selecting_intent') + ' ' + data.key);
         showingProtectedIntent = true;
     }
 
@@ -64,6 +69,7 @@
                 // TODO: Remove references
                 initProtectedIntents: function (_api_) {},
                 destroyProtectedIntents: function () { },
+                setLionBundle: function (bundle) { topoLion = bundle; },
 
                 // invoked from toolbar overlay buttons or keystrokes
                 cancelHighlights: cancelHighlights,
diff --git a/web/gui/src/main/webapp/app/view/topo/topoProtectedIntentOverlay.js b/web/gui/src/main/webapp/app/view/topo/topoProtectedIntentOverlay.js
index 3cfea34..6eabe4f 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoProtectedIntentOverlay.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoProtectedIntentOverlay.js
@@ -25,17 +25,18 @@
     // injected refs
     var $log, tov, tpis;
 
+    // function to be replaced by the localization bundle function
+    var topoLion = function (x) {
+        return '#tprotiov#' + x + '#';
+    };
+
     // NOTE: no internal state here -- see topoProtectedIntents for that
 
-    // NOTE: providing button disabling requires too big a refactoring of
-    //       the button factory etc. Will have to be done another time.
-
-
     // traffic overlay definition
     var overlay = {
         overlayId: 'protectedIntent',
         glyphId: 'm_ips',
-        tooltip: 'Protected Intents Overlay',
+        tooltip: function () { return topoLion('ov_tt_protected_intents'); },
 
         activate: function () {
             $log.debug('Protected Intent overlay ACTIVATED');
@@ -43,7 +44,7 @@
 
         deactivate: function () {
             tpis.cancelHighlights();
-            $log.debug('Protected Intent DEACTIVATED');
+            $log.debug('Protected Intent overlay DEACTIVATED');
         },
 
         hooks: {
@@ -52,15 +53,19 @@
                 // Must return true to consume ESC, false otherwise.
                 return tpis.cancelHighlights();
             },
-            // intent visualization hook
+            // intent visualization hooks
             acceptIntent: function (type) {
                 // accept only intents with type "Protected"
                 return (type.startsWith('Protected'));
             },
             showIntent: function (info) {
-                $log.debug('^^ topoProtectedIntentsOverlay.showintent() ^^', info);
                 tpis.showProtectedIntent(info);
             },
+            // localization bundle injection hook
+            injectLion: function (bundle) {
+                topoLion = bundle;
+                tpis.setLionBundle(bundle);
+            },
         },
     };
 
diff --git a/web/gui/src/main/webapp/app/view/topo/topoSelect.js b/web/gui/src/main/webapp/app/view/topo/topoSelect.js
index 7b4decc..a0e8c31 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoSelect.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoSelect.js
@@ -37,6 +37,11 @@
     // internal state
     var hovered, selections, selectOrder, consumeClick;
 
+    // function to be replaced by the localization bundle function
+    var topoLion = function (x) {
+        return '#tsel#' + x + '#';
+    };
+
     function setInitialState() {
         hovered = null; // the node over which the mouse is hovering
         selections = {}; // currently selected nodes (by id)
@@ -65,7 +70,7 @@
 
     function nodeMouseOver(m) {
         if (!m.dragStarted) {
-            if (hovered != m) {
+            if (hovered !== m) {
                 hovered = m;
                 tov.hooks.mouseOver({
                     id: m.id,
@@ -101,7 +106,7 @@
             n = d3.select(el);
         } else {
             api.node().each(function (d) {
-                if (d == obj) {
+                if (d === obj) {
                     n = d3.select(el = this);
                 }
             });
@@ -250,16 +255,16 @@
             if (nSel() === 2) {
                 tps.addAction({
                     id: 'host-flow-btn',
-                    gid: 'endstation',
+                    gid: 'm_endstation',
                     cb: tts.addHostIntent,
-                    tt: 'Create Host-to-Host Flow',
+                    tt: function () { return topoLion('tr_btn_create_h2h_flow'); },
                 });
             } else if (nSel() >= 2) {
                 tps.addAction({
                     id: 'mult-src-flow-btn',
                     gid: 'flows',
                     cb: tts.addMultiSourceIntent,
-                    tt: 'Create Multi-Source Flow',
+                    tt: function () { return topoLion('tr_btn_create_msrc_flow'); },
                 });
             }
         }
@@ -362,6 +367,7 @@
                 clickConsumed: clickConsumed,
                 selectionContext: selectionContext,
                 reselect: reselect,
+                setLionBundle: function (bundle) { topoLion = bundle; },
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoToolbar.js b/web/gui/src/main/webapp/app/view/topo/topoToolbar.js
index fa86f82..8b37002 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoToolbar.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoToolbar.js
@@ -29,6 +29,11 @@
     //  getActionEntry
     //  setUpKeys
 
+    // function to be replaced by the localization bundle function
+    var topoLion = function (x) {
+        return '#ttbar#' + x + '#';
+    };
+
     // internal state
     var toolbar, keyData, cachedState, thirdRow, ovRset, ovIndex;
 
@@ -36,7 +41,7 @@
     var name = 'topo-tbar',
         cooktag = 'topo_prefs',
         soa = 'switchOverlayActions: ',
-        selOver = 'Select overlay here &#x21e7;',
+        selOver = '************',
         defaultOverlay = 'traffic';
 
 
@@ -134,7 +139,7 @@
 
             // tooltip function invoked at the time the tooltip is displayed
             value.tt = function () {
-                return fs.isF(ttfn) ? ttfn() : "" + ttfn;
+                return fs.isF(ttfn) ? ttfn() : '' + ttfn;
             };
         });
     }
@@ -188,7 +193,7 @@
         // generate radio button set for overlays; start with 'none'
         var rset = [{
                 gid: 'm_unknown',
-                tooltip: 'No Overlay',
+                tooltip: topoLion('ov_tt_none'),
                 cb: function () {
                     tov.tbSelection(null, switchOverlayActions);
                 },
@@ -236,7 +241,11 @@
                     value = keyBindings[key];
                     bid = oid + '-' + key;
                     gid = tov.mkGlyphId(oid, value.gid);
-                    tt = value.tt + ' (' + key + ')';
+                    tt = function () {
+                        var ttfn = value.tt,
+                            txt = fs.isF(ttfn) ? ttfn() : ttfn;
+                        return txt + ' (' + key + ')';
+                    };
                     thirdRow.addButton(bid, gid, value.cb, tt);
                 }
             });
@@ -333,6 +342,7 @@
                 selectOverlay: selectOverlay,
                 defaultPrefs: defaultPrefsState,
                 fnkey: fnkey,
+                setLionBundle: function (bundle) { topoLion = bundle; },
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoTraffic.js b/web/gui/src/main/webapp/app/view/topo/topoTraffic.js
index e6b66fc..640a233 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoTraffic.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoTraffic.js
@@ -25,6 +25,11 @@
     // injected refs
     var $log, flash, wss, api;
 
+    // function to be replaced by the localization bundle function
+    var topoLion = function (x) {
+        return '#ttraf#' + x + '#';
+    };
+
     /*
        API to topoForce
          hovered()
@@ -37,11 +42,7 @@
             'portStatsBitSec',
             'portStatsPktSec',
         ],
-        allTrafficMsgs = [
-            'Flow Stats (bytes)',
-            'Port Stats (bits / second)',
-            'Port Stats (packets / second)',
-        ];
+        allTrafficMsgs = []; // filled in with localized messages
 
     // internal state
     var trafficMode = null,
@@ -52,6 +53,16 @@
     // === -----------------------------------------------------
     //  Helper functions
 
+    function setLionBundle(bundle) {
+        $log.debug('topoTraffic: setting Lion bundle');
+        topoLion = bundle;
+        allTrafficMsgs = [
+            topoLion('tr_fl_fstats_bytes'),
+            topoLion('tr_fl_pstats_bits'),
+            topoLion('tr_fl_pstats_pkts'),
+        ];
+    }
+
     // invoked in response to change in selection and/or mouseover/out:
     function requestTrafficForMode(mouse) {
         if (trafficMode === 'flows') {
@@ -112,7 +123,7 @@
 
         trafficMode = hoverMode = null;
         wss.sendEvent('cancelTraffic');
-        flash.flash('Traffic monitoring canceled');
+        flash.flash(topoLion('fl_monitoring_canceled'));
         return true;
     }
 
@@ -129,20 +140,20 @@
     function showDeviceLinkFlows() {
         trafficMode = hoverMode = 'flows';
         requestDeviceLinkFlows();
-        flash.flash('Device Flows');
+        flash.flash(topoLion('tr_fl_dev_flows'));
     }
 
     function showRelatedIntents() {
         trafficMode = hoverMode = 'intents';
         requestRelatedIntents();
-        flash.flash('Related Paths');
+        flash.flash(topoLion('tr_fl_rel_paths'));
     }
 
     function showPrevIntent() {
         if (trafficMode === 'intents') {
             hoverMode = null;
             wss.sendEvent('requestPrevRelatedIntent');
-            flash.flash('Previous related intent');
+            flash.flash(topoLion('tr_fl_prev_rel_int'));
         }
     }
 
@@ -150,7 +161,7 @@
         if (trafficMode === 'intents') {
             hoverMode = null;
             wss.sendEvent('requestNextRelatedIntent');
-            flash.flash('Next related intent');
+            flash.flash(topoLion('tr_fl_next_rel_int'));
         }
     }
 
@@ -158,7 +169,7 @@
         if (trafficMode === 'intents') {
             hoverMode = null;
             wss.sendEvent('requestSelectedIntentTraffic');
-            flash.flash('Traffic on Selected Path');
+            flash.flash(topoLion('tr_fl_traf_on_path'));
         }
     }
 
@@ -167,7 +178,7 @@
         trafficMode = 'intents';
         hoverMode = null;
         wss.sendEvent('selectIntent', data);
-        flash.flash('Selecting Intent ' + data.key);
+        flash.flash(topoLion('fl_selecting_intent') + ' ' + data.key);
     }
 
 
@@ -176,6 +187,7 @@
 
     function addHostIntent() {
         var so = api.selectOrder();
+
         wss.sendEvent('addHostIntent', {
             one: so[0],
             two: so[1],
@@ -183,11 +195,12 @@
         });
         trafficMode = 'intents';
         hoverMode = null;
-        flash.flash('Host-to-Host flow added');
+        flash.flash(topoLion('tr_fl_h2h_flow_added'));
     }
 
     function removeIntent(d) {
-        $log.debug('Entering removeIntent');
+        var action = topoLion(d.intentPurge ? 'purged' : 'withdrawn');
+
         wss.sendEvent('removeIntent', {
             appId: d.appId,
             appName: d.appName,
@@ -196,12 +209,10 @@
         });
         trafficMode = 'intents';
         hoverMode = null;
-        var txt = d.intentPurge ? 'purged' : 'withdrawn';
-        flash.flash('Intent ' + txt);
+        flash.flash(topoLion('intent') + ' ' + action);
     }
 
     function resubmitIntent(d) {
-        $log.debug('Entering resubmitIntent');
         wss.sendEvent('resubmitIntent', {
             appId: d.appId,
             appName: d.appName,
@@ -210,11 +221,12 @@
         });
         trafficMode = 'intents';
         hoverMode = null;
-        flash.flash('Intent resubmitted');
+        flash.flash(topoLion('intent') + ' ' + topoLion('resubmitted'));
     }
 
     function addMultiSourceIntent() {
         var so = api.selectOrder();
+
         wss.sendEvent('addMultiSourceIntent', {
             src: so.slice(0, so.length - 1),
             dst: so[so.length - 1],
@@ -222,15 +234,14 @@
         });
         trafficMode = 'intents';
         hoverMode = null;
-        flash.flash('Multi-Source flow added');
+        flash.flash(topoLion('tr_fl_multisrc_flow') + ' ' + topoLion('added'));
     }
 
     function removeIntents() {
-        $log.debug('Entering removeIntents');
         wss.sendEvent('removeIntents', {});
         trafficMode = 'intents';
         hoverMode = null;
-        flash.flash('Intent are purged');
+        flash.flash(topoLion('intents') + ' ' + topoLion('purged'));
     }
 
 
@@ -239,7 +250,7 @@
 
     angular.module('ovTopo')
     .factory('TopoTrafficService',
-        ['$log', 'FnService', 'WebSocketService',
+        ['$log', 'FlashService', 'WebSocketService',
 
         function (_$log_, _flash_, _wss_) {
             $log = _$log_;
@@ -263,13 +274,14 @@
                 // invoked from mouseover/mouseout and selection change
                 requestTrafficForMode: requestTrafficForMode,
 
-                // TODO: these should move to new UI demo app
                 // invoked from buttons on detail (multi-select) panel
                 addHostIntent: addHostIntent,
                 addMultiSourceIntent: addMultiSourceIntent,
                 removeIntent: removeIntent,
                 resubmitIntent: resubmitIntent,
                 removeIntents: removeIntents,
+
+                setLionBundle: setLionBundle,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js b/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js
index 687fdab..143aa30 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js
@@ -26,6 +26,11 @@
     // injected refs
     var $log, tov, tts;
 
+    // function to be replaced by the localization bundle function
+    var topoLion = function (x) {
+        return '#ttrafov#' + x + '#';
+    };
+
     // NOTE: no internal state here -- see TopoTrafficService for that
 
     // NOTE: providing button disabling requires too big a refactoring of
@@ -36,7 +41,7 @@
     var overlay = {
         overlayId: 'traffic',
         glyphId: 'm_allTraffic',
-        tooltip: 'Traffic Overlay',
+        tooltip: function () { return topoLion('ov_tt_traffic'); },
 
         // NOTE: Traffic glyphs already installed as part of the base ONOS set.
 
@@ -54,13 +59,13 @@
         buttons: {
             showDeviceFlows: {
                 gid: 'm_flows',
-                tt: 'Show Device Flows',
+                tt: function () { return topoLion('tr_btn_show_device_flows'); },
                 cb: function (data) { tts.showDeviceLinkFlows(); },
             },
 
             showRelatedTraffic: {
                 gid: 'm_relatedIntents',
-                tt: 'Show Related Traffic',
+                tt: function () { return topoLion('tr_btn_show_related_traffic'); },
                 cb: function (data) { tts.showRelatedIntents(); },
             },
         },
@@ -70,38 +75,38 @@
         keyBindings: {
             0: {
                 cb: function () { tts.cancelTraffic(true); },
-                tt: 'Cancel traffic monitoring',
+                tt: function () { return topoLion('tr_btn_cancel_monitoring'); },
                 gid: 'm_xMark',
             },
 
             A: {
                 cb: function () { tts.showAllTraffic(); },
-                tt: 'Monitor all traffic',
+                tt: function () { return topoLion('tr_btn_monitor_all'); },
                 gid: 'm_allTraffic',
             },
             F: {
                 cb: function () { tts.showDeviceLinkFlows(); },
-                tt: 'Show device link flows',
+                tt: function () { return topoLion('tr_btn_show_dev_link_flows'); },
                 gid: 'm_flows',
             },
             V: {
                 cb: function () { tts.showRelatedIntents(); },
-                tt: 'Show all related intents',
+                tt: function () { return topoLion('tr_btn_show_all_rel_intents'); },
                 gid: 'm_relatedIntents',
             },
             leftArrow: {
                 cb: function () { tts.showPrevIntent(); },
-                tt: 'Show previous related intent',
+                tt: function () { return topoLion('tr_btn_show_prev_rel_intent'); },
                 gid: 'm_prev',
             },
             rightArrow: {
                 cb: function () { tts.showNextIntent(); },
-                tt: 'Show next related intent',
+                tt: function () { return topoLion('tr_btn_show_next_rel_intent'); },
                 gid: 'm_next',
             },
             W: {
                 cb: function () { tts.showSelectedIntentTraffic(); },
-                tt: 'Monitor traffic of selected intent',
+                tt: function () { return topoLion('tr_btn_monitor_sel_intent'); },
                 gid: 'm_intentTraffic',
             },
 
@@ -147,6 +152,11 @@
                 $log.debug('^^ trafficOverlay.showintent() ^^', info);
                 tts.selectIntent(info);
             },
+            // localization bundle injection hook
+            injectLion: function (bundle) {
+                topoLion = bundle;
+                tts.setLionBundle(bundle);
+            },
         },
     };
 
diff --git a/web/gui/src/main/webapp/tests/app/view/topo/topoSelect-spec.js b/web/gui/src/main/webapp/tests/app/view/topo/topoSelect-spec.js
index cbb134b..3914101 100644
--- a/web/gui/src/main/webapp/tests/app/view/topo/topoSelect-spec.js
+++ b/web/gui/src/main/webapp/tests/app/view/topo/topoSelect-spec.js
@@ -43,7 +43,8 @@
             'deselectAll', 'updateDetail',
             'hovered', 'selectOrder',
             'somethingSelected',
-            'clickConsumed', 'selectionContext', 'reselect'
+            'clickConsumed', 'selectionContext', 'reselect',
+            'setLionBundle',
         ])).toBeTruthy();
     });
 
diff --git a/web/gui/src/main/webapp/tests/app/view/topo/topoToolbar-spec.js b/web/gui/src/main/webapp/tests/app/view/topo/topoToolbar-spec.js
index d521078..dfc8f86 100644
--- a/web/gui/src/main/webapp/tests/app/view/topo/topoToolbar-spec.js
+++ b/web/gui/src/main/webapp/tests/app/view/topo/topoToolbar-spec.js
@@ -45,7 +45,7 @@
         expect(fs.areFunctions(ttbs, [
             'init', 'createToolbar', 'destroyToolbar',
             'keyListener', 'toggleToolbar', 'setDefaultOverlay',
-            'fnkey'
+            'fnkey', 'setLionBundle',
         ])).toBeTruthy();
     });
 
diff --git a/web/gui/src/main/webapp/tests/app/view/topo/topoTraffic-spec.js b/web/gui/src/main/webapp/tests/app/view/topo/topoTraffic-spec.js
index 12e4849..2d65b16 100644
--- a/web/gui/src/main/webapp/tests/app/view/topo/topoTraffic-spec.js
+++ b/web/gui/src/main/webapp/tests/app/view/topo/topoTraffic-spec.js
@@ -51,6 +51,7 @@
             'removeIntent',
             'resubmitIntent',
             'removeIntents',
+            'setLionBundle',
         ])).toBeTruthy();
     });
 
