Bug 1163763 - L10N-ify many strings that didn't make previous uplifts for performance tools, and consolidate strings into one tool rather than profiler and timeline. r=vp

This commit is contained in:
Jordan Santell 2015-07-16 13:28:30 -07:00
parent f902cde8e7
commit 8007f99fbe
18 changed files with 425 additions and 479 deletions

View File

@ -33,13 +33,13 @@ const styleEditorProps = "chrome://browser/locale/devtools/styleeditor.propertie
const shaderEditorProps = "chrome://browser/locale/devtools/shadereditor.properties";
const canvasDebuggerProps = "chrome://browser/locale/devtools/canvasdebugger.properties";
const webAudioEditorProps = "chrome://browser/locale/devtools/webaudioeditor.properties";
const profilerProps = "chrome://browser/locale/devtools/profiler.properties";
const performanceProps = "chrome://browser/locale/devtools/performance.properties";
const netMonitorProps = "chrome://browser/locale/devtools/netmonitor.properties";
const storageProps = "chrome://browser/locale/devtools/storage.properties";
const scratchpadProps = "chrome://browser/locale/devtools/scratchpad.properties";
loader.lazyGetter(this, "toolboxStrings", () => Services.strings.createBundle(toolboxProps));
loader.lazyGetter(this, "profilerStrings",() => Services.strings.createBundle(profilerProps));
loader.lazyGetter(this, "performanceStrings",() => Services.strings.createBundle(performanceProps));
loader.lazyGetter(this, "webConsoleStrings", () => Services.strings.createBundle(webConsoleProps));
loader.lazyGetter(this, "debuggerStrings", () => Services.strings.createBundle(debuggerProps));
loader.lazyGetter(this, "styleEditorStrings", () => Services.strings.createBundle(styleEditorProps));
@ -254,14 +254,14 @@ Tools.performance = {
highlightedicon: "chrome://browser/skin/devtools/tool-profiler-active.svg",
url: "chrome://browser/content/devtools/performance.xul",
visibilityswitch: "devtools.performance.enabled",
label: l10n("profiler.label2", profilerStrings),
panelLabel: l10n("profiler.panelLabel2", profilerStrings),
label: l10n("performance.label", performanceStrings),
panelLabel: l10n("performance.panelLabel", performanceStrings),
get tooltip() {
return l10n("profiler.tooltip3", profilerStrings,
return l10n("performance.tooltip", performanceStrings,
"Shift+" + functionkey(this.key));
},
accesskey: l10n("profiler.accesskey", profilerStrings),
key: l10n("profiler.commandkey2", profilerStrings),
accesskey: l10n("performance.accesskey", performanceStrings),
key: l10n("performance.commandkey", performanceStrings),
modifiers: "shift",
inMenu: true,

View File

@ -7,11 +7,10 @@ const { ViewHelpers } = require("resource:///modules/devtools/ViewHelpers.jsm");
/**
* Localization convenience methods.
+ TODO: merge these into a single file: Bug 1082695.
*/
const L10N = new ViewHelpers.MultiL10N([
"chrome://browser/locale/devtools/timeline.properties",
"chrome://browser/locale/devtools/profiler.properties"
"chrome://browser/locale/devtools/markers.properties",
"chrome://browser/locale/devtools/performance.properties"
]);
/**

View File

@ -93,12 +93,8 @@ function getMarkerFields (marker) {
// If blueprint.fields is a function, use that
if (typeof blueprint.fields === "function") {
let fields = blueprint.fields(marker);
// Add a ":" to the label since the localization files contain the ":"
// if not present. This should be changed, ugh.
return Object.keys(fields || []).map(label => {
// TODO revisit localization strings for markers bug 1163763
let normalizedLabel = label.indexOf(":") !== -1 ? label : (label + ":");
return { label: normalizedLabel, value: fields[label] };
return { label, value: fields[label] };
});
}
@ -168,7 +164,7 @@ const DOM = {
* @return {Element}
*/
buildDuration: function (doc, marker) {
let label = L10N.getStr("timeline.markerDetail.duration");
let label = L10N.getStr("marker.field.duration");
let start = L10N.getFormatStrWithNumbers("timeline.tick", marker.start);
let end = L10N.getFormatStrWithNumbers("timeline.tick", marker.end);
let duration = L10N.getFormatStrWithNumbers("timeline.tick", marker.end - marker.start);
@ -217,7 +213,7 @@ const DOM = {
let container = doc.createElement("vbox");
let labelName = doc.createElement("label");
labelName.className = "plain marker-details-labelname";
labelName.setAttribute("value", L10N.getStr(`timeline.markerDetail.${type}`));
labelName.setAttribute("value", L10N.getStr(`marker.field.${type}`));
container.setAttribute("type", type);
container.className = "marker-details-stack";
container.appendChild(labelName);
@ -235,7 +231,7 @@ const DOM = {
let asyncBox = doc.createElement("hbox");
let asyncLabel = doc.createElement("label");
asyncLabel.className = "devtools-monospace";
asyncLabel.setAttribute("value", L10N.getFormatStr("timeline.markerDetail.asyncStack",
asyncLabel.setAttribute("value", L10N.getFormatStr("marker.field.asyncStack",
frame.asyncCause));
asyncBox.appendChild(asyncLabel);
container.appendChild(asyncBox);
@ -278,7 +274,7 @@ const DOM = {
if (!displayName && !url) {
let label = doc.createElement("label");
label.setAttribute("value", L10N.getStr("timeline.markerDetail.unknownFrame"));
label.setAttribute("value", L10N.getStr("marker.value.unknownFrame"));
hbox.appendChild(label);
}
@ -301,18 +297,19 @@ const DOM = {
* markers that are considered "from content" should be labeled here.
*/
const JS_MARKER_MAP = {
"<script> element": "Script Tag",
"<script> element": L10N.getStr("marker.label.javascript.scriptElement"),
"promise callback": L10N.getStr("marker.label.javascript.promiseCallback"),
"promise initializer": L10N.getStr("marker.label.javascript.promiseInit"),
"Worker runnable": L10N.getStr("marker.label.javascript.workerRunnable"),
"javascript: URI": L10N.getStr("marker.label.javascript.jsURI"),
// The difference between these two event handler markers are differences
// in their WebIDL implementation, so distinguishing them is not necessary.
"EventHandlerNonNull": L10N.getStr("marker.label.javascript.eventHandler"),
"EventListener.handleEvent": L10N.getStr("marker.label.javascript.eventHandler"),
// These markers do not get L10N'd because they're JS names.
"setInterval handler": "setInterval",
"setTimeout handler": "setTimeout",
"FrameRequestCallback": "requestAnimationFrame",
"promise callback": "Promise Callback",
"promise initializer": "Promise Init",
"Worker runnable": "Worker",
"javascript: URI": "JavaScript URI",
// The difference between these two event handler markers are differences
// in their WebIDL implementation, so distinguishing them is not necessary.
"EventHandlerNonNull": "Event Handler",
"EventListener.handleEvent": "Event Handler",
};
/**
@ -324,21 +321,20 @@ const Formatters = {
* a blueprint entry. Uses "Other" in the marker filter menu.
*/
UnknownLabel: function (marker={}) {
return marker.name || L10N.getStr("timeline.label.unknown");
return marker.name || L10N.getStr("marker.label.unknown");
},
GCLabel: function (marker={}) {
let label = L10N.getStr("timeline.label.garbageCollection");
// Only if a `nonincrementalReason` exists, do we want to label
// this as a non incremental GC event.
if ("nonincrementalReason" in marker) {
label = `${label} (Non-incremental)`;
return L10N.getStr("marker.label.garbageCollection.nonIncremental");
}
return label;
return L10N.getStr("marker.label.garbageCollection");
},
JSLabel: function (marker={}) {
let generic = L10N.getStr("timeline.label.javascript2");
let generic = L10N.getStr("marker.label.javascript");
if ("causeName" in marker) {
return JS_MARKER_MAP[marker.causeName] || generic;
}
@ -357,40 +353,44 @@ const Formatters = {
*/
JSFields: function (marker) {
if ("causeName" in marker && !JS_MARKER_MAP[marker.causeName]) {
return { Reason: PREFS["show-platform-data"] ? marker.causeName : GECKO_SYMBOL };
let cause = PREFS["show-platform-data"] ? marker.causeName : GECKO_SYMBOL;
return {
[L10N.getStr("marker.field.causeName")]: cause
};
}
},
DOMEventFields: function (marker) {
let fields = Object.create(null);
if ("type" in marker) {
fields[L10N.getStr("timeline.markerDetail.DOMEventType")] = marker.type;
fields[L10N.getStr("marker.field.DOMEventType")] = marker.type;
}
if ("eventPhase" in marker) {
let phase;
if (marker.eventPhase === Ci.nsIDOMEvent.AT_TARGET) {
phase = L10N.getStr("timeline.markerDetail.DOMEventTargetPhase");
phase = L10N.getStr("marker.value.DOMEventTargetPhase");
} else if (marker.eventPhase === Ci.nsIDOMEvent.CAPTURING_PHASE) {
phase = L10N.getStr("timeline.markerDetail.DOMEventCapturingPhase");
phase = L10N.getStr("marker.value.DOMEventCapturingPhase");
} else if (marker.eventPhase === Ci.nsIDOMEvent.BUBBLING_PHASE) {
phase = L10N.getStr("timeline.markerDetail.DOMEventBubblingPhase");
phase = L10N.getStr("marker.value.DOMEventBubblingPhase");
}
fields[L10N.getStr("timeline.markerDetail.DOMEventPhase")] = phase;
fields[L10N.getStr("marker.field.DOMEventPhase")] = phase;
}
return fields;
},
StylesFields: function (marker) {
if ("restyleHint" in marker) {
return { "Restyle Hint": marker.restyleHint.replace(/eRestyle_/g, "") };
return {
[L10N.getStr("marker.field.restyleHint")]: marker.restyleHint.replace(/eRestyle_/g, "")
};
}
},
CycleCollectionFields: function (marker) {
let Type = PREFS["show-platform-data"]
? marker.name
: marker.name.replace(/nsCycleCollector::/g, "");
return { Type };
return {
[L10N.getStr("marker.field.type")]: marker.name.replace(/nsCycleCollector::/g, "")
};
},
};

View File

@ -10,7 +10,7 @@ const { Formatters } = require("devtools/performance/marker-utils");
* A simple schema for mapping markers to the timeline UI. The keys correspond
* to marker names, while the values are objects with the following format:
*
* - group: The row index in the timeline overview graph; multiple markers
* - group: The row index in the overview graph; multiple markers
* can be added on the same row. @see <overview.js/buildGraphImage>
* - label: The label used in the waterfall to identify the marker. Can be a
* string or just a function that accepts the marker and returns a
@ -60,25 +60,25 @@ const TIMELINE_BLUEPRINT = {
"Styles": {
group: 0,
colorName: "graphs-purple",
label: L10N.getStr("timeline.label.styles2"),
label: L10N.getStr("marker.label.styles"),
fields: Formatters.StylesFields,
},
"Reflow": {
group: 0,
colorName: "graphs-purple",
label: L10N.getStr("timeline.label.reflow2"),
label: L10N.getStr("marker.label.reflow"),
},
"Paint": {
group: 0,
colorName: "graphs-green",
label: L10N.getStr("timeline.label.paint"),
label: L10N.getStr("marker.label.paint"),
},
/* Group 1 - JS */
"DOMEvent": {
group: 1,
colorName: "graphs-yellow",
label: L10N.getStr("timeline.label.domevent"),
label: L10N.getStr("marker.label.domevent"),
fields: Formatters.DOMEventFields,
},
"Javascript": {
@ -90,32 +90,32 @@ const TIMELINE_BLUEPRINT = {
"Parse HTML": {
group: 1,
colorName: "graphs-yellow",
label: L10N.getStr("timeline.label.parseHTML"),
label: L10N.getStr("marker.label.parseHTML"),
},
"Parse XML": {
group: 1,
colorName: "graphs-yellow",
label: L10N.getStr("timeline.label.parseXML"),
label: L10N.getStr("marker.label.parseXML"),
},
"GarbageCollection": {
group: 1,
colorName: "graphs-red",
label: Formatters.GCLabel,
fields: [
{ property: "causeName", label: "Reason:" },
{ property: "nonincrementalReason", label: "Non-incremental Reason:" }
{ property: "causeName", label: L10N.getStr("marker.field.causeName") },
{ property: "nonincrementalReason", label: L10N.getStr("marker.field.nonIncrementalCause") }
],
},
"nsCycleCollector::Collect": {
group: 1,
colorName: "graphs-red",
label: "Cycle Collection",
label: L10N.getStr("marker.label.cycleCollection"),
fields: Formatters.CycleCollectionFields,
},
"nsCycleCollector::ForgetSkippable": {
group: 1,
colorName: "graphs-red",
label: "Cycle Collection",
label: L10N.getStr("marker.label.cycleCollection.forgetSkippable"),
fields: Formatters.CycleCollectionFields,
},
@ -123,10 +123,10 @@ const TIMELINE_BLUEPRINT = {
"ConsoleTime": {
group: 2,
colorName: "graphs-blue",
label: sublabelForProperty(L10N.getStr("timeline.label.consoleTime"), "causeName"),
label: sublabelForProperty(L10N.getStr("marker.label.consoleTime"), "causeName"),
fields: [{
property: "causeName",
label: L10N.getStr("timeline.markerDetail.consoleTimerName")
label: L10N.getStr("marker.field.consoleTimerName")
}],
nestable: false,
collapsible: false,
@ -134,7 +134,7 @@ const TIMELINE_BLUEPRINT = {
"TimeStamp": {
group: 2,
colorName: "graphs-blue",
label: sublabelForProperty(L10N.getStr("timeline.label.timestamp"), "causeName"),
label: sublabelForProperty(L10N.getStr("marker.label.timestamp"), "causeName"),
fields: [{
property: "causeName",
label: "Label:"

View File

@ -24,8 +24,8 @@ loader.lazyRequireGetter(this, "getColor",
"devtools/shared/theme", true);
loader.lazyRequireGetter(this, "ProfilerGlobal",
"devtools/performance/global");
loader.lazyRequireGetter(this, "TimelineGlobal",
"devtools/performance/global");
loader.lazyRequireGetter(this, "L10N",
"devtools/performance/global", true);
loader.lazyRequireGetter(this, "MarkersOverview",
"devtools/performance/markers-overview", true);
@ -124,7 +124,7 @@ FramerateGraph.prototype = Heritage.extend(PerformanceGraph.prototype, {
* The parent node holding the overview.
*/
function MemoryGraph(parent) {
PerformanceGraph.call(this, parent, TimelineGlobal.L10N.getStr("graphs.memory"));
PerformanceGraph.call(this, parent, L10N.getStr("graphs.memory"));
}
MemoryGraph.prototype = Heritage.extend(PerformanceGraph.prototype, {

View File

@ -11,8 +11,6 @@ const { Cc, Ci, Cu, Cr } = require("chrome");
loader.lazyRequireGetter(this, "EventEmitter",
"devtools/toolkit/event-emitter");
loader.lazyRequireGetter(this, "L10N",
"devtools/performance/global", true);
loader.lazyRequireGetter(this, "MarkerUtils",
"devtools/performance/marker-utils");

View File

@ -173,7 +173,7 @@ let PerformanceView = {
$container.setAttribute("buffer-status", "in-progress");
}
$bufferLabel.value = `Buffer ${percent}% full`;
$bufferLabel.value = L10N.getFormatStr("profiler.bufferFull", percent);
this.emit(EVENTS.UI_BUFFER_UPDATED, percent);
},
@ -289,8 +289,7 @@ let PerformanceView = {
*/
_onImportButtonClick: function(e) {
let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
// TODO localize? in bug 1163763
fp.init(window, "Import recording…", Ci.nsIFilePicker.modeOpen);
fp.init(window, L10N.getStr("recordingsList.importDialogTitle"), Ci.nsIFilePicker.modeOpen);
fp.appendFilter(L10N.getStr("recordingsList.saveDialogJSONFilter"), "*.json");
fp.appendFilter(L10N.getStr("recordingsList.saveDialogAllFilter"), "*.*");

View File

@ -8,8 +8,8 @@
<?xml-stylesheet href="chrome://browser/skin/devtools/widgets.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/devtools/performance.css" type="text/css"?>
<!DOCTYPE window [
<!ENTITY % profilerDTD SYSTEM "chrome://browser/locale/devtools/profiler.dtd">
%profilerDTD;
<!ENTITY % performanceDTD SYSTEM "chrome://browser/locale/devtools/performance.dtd">
%performanceDTD;
]>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
@ -36,46 +36,46 @@
<menuitem id="option-show-platform-data"
type="checkbox"
data-pref="show-platform-data"
label="&profilerUI.showPlatformData;"
tooltiptext="&profilerUI.showPlatformData.tooltiptext;"/>
label="&performanceUI.showPlatformData;"
tooltiptext="&performanceUI.showPlatformData.tooltiptext;"/>
<menuitem id="option-enable-memory"
class="experimental-option"
type="checkbox"
data-pref="enable-memory"
label="&profilerUI.enableMemory;"
tooltiptext="&profilerUI.enableMemory.tooltiptext;"/>
label="&performanceUI.enableMemory;"
tooltiptext="&performanceUI.enableMemory.tooltiptext;"/>
<menuitem id="option-enable-allocations"
class="experimental-option"
type="checkbox"
data-pref="enable-allocations"
label="&profilerUI.enableAllocations;"
tooltiptext="&profilerUI.enableAllocations.tooltiptext;"/>
label="&performanceUI.enableAllocations;"
tooltiptext="&performanceUI.enableAllocations.tooltiptext;"/>
<menuitem id="option-enable-framerate"
type="checkbox"
data-pref="enable-framerate"
label="&profilerUI.enableFramerate;"
tooltiptext="&profilerUI.enableFramerate.tooltiptext;"/>
label="&performanceUI.enableFramerate;"
tooltiptext="&performanceUI.enableFramerate.tooltiptext;"/>
<menuitem id="option-invert-call-tree"
type="checkbox"
data-pref="invert-call-tree"
label="&profilerUI.invertTree;"
tooltiptext="&profilerUI.invertTree.tooltiptext;"/>
label="&performanceUI.invertTree;"
tooltiptext="&performanceUI.invertTree.tooltiptext;"/>
<menuitem id="option-invert-flame-graph"
type="checkbox"
data-pref="invert-flame-graph"
label="&profilerUI.invertFlameGraph;"
tooltiptext="&profilerUI.invertFlameGraph.tooltiptext;"/>
label="&performanceUI.invertFlameGraph;"
tooltiptext="&performanceUI.invertFlameGraph.tooltiptext;"/>
<menuitem id="option-flatten-tree-recursion"
type="checkbox"
data-pref="flatten-tree-recursion"
label="&profilerUI.flattenTreeRecursion;"
tooltiptext="&profilerUI.flattenTreeRecursion.tooltiptext;"/>
label="&performanceUI.flattenTreeRecursion;"
tooltiptext="&performanceUI.flattenTreeRecursion.tooltiptext;"/>
<menuitem id="option-enable-jit-optimizations"
class="experimental-option"
type="checkbox"
data-pref="enable-jit-optimizations"
label="&profilerUI.enableJITOptimizations;"
tooltiptext="&profilerUI.enableJITOptimizations.tooltiptext;"/>
label="&performanceUI.enableJITOptimizations;"
tooltiptext="&performanceUI.enableJITOptimizations.tooltiptext;"/>
</menupopup>
</popupset>
@ -89,13 +89,13 @@
class="devtools-toolbarbutton-group">
<toolbarbutton id="main-record-button"
class="devtools-toolbarbutton record-button"
tooltiptext="&profilerUI.recordButton2.tooltip;"/>
tooltiptext="&performanceUI.recordButton.tooltip;"/>
<toolbarbutton id="import-button"
class="devtools-toolbarbutton"
label="&profilerUI.importButton;"/>
label="&performanceUI.importButton;"/>
<toolbarbutton id="clear-button"
class="devtools-toolbarbutton"
label="&profilerUI.clearButton;"/>
label="&performanceUI.clearButton;"/>
</hbox>
</toolbar>
<vbox id="recordings-list" flex="1"/>
@ -112,33 +112,33 @@
<toolbarbutton id="filter-button"
class="devtools-toolbarbutton"
popup="performance-filter-menupopup"
tooltiptext="&profilerUI.options.filter.tooltiptext;"/>
tooltiptext="&performanceUI.options.filter.tooltiptext;"/>
</hbox>
<hbox id="performance-toolbar-controls-detail-views"
class="devtools-toolbarbutton-group">
<toolbarbutton id="select-waterfall-view"
class="devtools-toolbarbutton devtools-button"
label="Waterfall"
label="&performanceUI.toolbar.waterfall;"
hidden="true"
data-view="waterfall" />
<toolbarbutton id="select-js-calltree-view"
class="devtools-toolbarbutton devtools-button"
label="Call Tree"
label="&performanceUI.toolbar.js-calltree;"
hidden="true"
data-view="js-calltree" />
<toolbarbutton id="select-js-flamegraph-view"
class="devtools-toolbarbutton devtools-button"
label="Flame Chart"
label="&performanceUI.toolbar.js-flamegraph;"
hidden="true"
data-view="js-flamegraph" />
<toolbarbutton id="select-memory-calltree-view"
class="devtools-toolbarbutton devtools-button"
label="Allocations Tree"
label="&performanceUI.toolbar.memory-calltree;"
hidden="true"
data-view="memory-calltree" />
<toolbarbutton id="select-memory-flamegraph-view"
class="devtools-toolbarbutton devtools-button"
label="Allocations Chart"
label="&performanceUI.toolbar.memory-flamegraph;"
hidden="true"
data-view="memory-flamegraph" />
<toolbarbutton id="select-optimizations-view"
@ -153,7 +153,7 @@
<toolbarbutton id="performance-options-button"
class="devtools-toolbarbutton devtools-option-toolbarbutton"
popup="performance-options-menupopup"
tooltiptext="&profilerUI.options.gear.tooltiptext;"/>
tooltiptext="&performanceUI.options.gear.tooltiptext;"/>
</hbox>
</toolbar>
@ -169,7 +169,7 @@
<hbox class="devtools-toolbarbutton-group"
pack="center">
<toolbarbutton class="devtools-toolbarbutton record-button"
label="&profilerUI.startRecording;"
label="&performanceUI.startRecording;"
standalone="true"/>
</hbox>
</hbox>
@ -193,7 +193,7 @@
align="center"
pack="center"
flex="1">
<label value="&profilerUI.loadingNotice;"/>
<label value="&performanceUI.loadingNotice;"/>
</hbox>
<!-- "Recording" notice, shown when a recording is in progress -->
@ -205,19 +205,17 @@
<hbox class="devtools-toolbarbutton-group"
pack="center">
<toolbarbutton class="devtools-toolbarbutton record-button"
label="&profilerUI.stopRecording;"
label="&performanceUI.stopRecording;"
standalone="true"/>
</hbox>
<label class="realtime-disabled-message">
Realtime recording data disabled on non-multiprocess Firefox.
</label>
<label class="realtime-disabled-on-e10s-message">
Enable multiprocess Firefox in preferences for rendering recording data in realtime.
</label>
<label class="realtime-disabled-message"
value="&performanceUI.disabledRealTime.nonE10SBuild;"/>
<label class="realtime-disabled-on-e10s-message"
value="&performanceUI.disabledRealTime.disabledE10S;"/>
<label class="buffer-status-message"
tooltiptext="&profilerUI.bufferStatusTooltip;"/>
tooltiptext="&performanceUI.bufferStatusTooltip;"/>
<label class="buffer-status-message-full"
value="&profilerUI.bufferStatusFull;"/>
value="&performanceUI.bufferStatusFull;"/>
</vbox>
<!-- "Console" notice, shown when a console recording is in progress -->
@ -227,25 +225,23 @@
pack="center"
flex="1">
<hbox class="console-profile-recording-notice">
<label value="&profilerUI.console.recordingNoticeStart;" />
<label value="&performanceUI.console.recordingNoticeStart;" />
<label class="console-profile-command" />
<label value="&profilerUI.console.recordingNoticeEnd;" />
<label value="&performanceUI.console.recordingNoticeEnd;" />
</hbox>
<hbox class="console-profile-stop-notice">
<label value="&profilerUI.console.stopCommandStart;" />
<label value="&performanceUI.console.stopCommandStart;" />
<label class="console-profile-command" />
<label value="&profilerUI.console.stopCommandEnd;" />
<label value="&performanceUI.console.stopCommandEnd;" />
</hbox>
<label class="realtime-disabled-message">
Realtime recording data disabled on non-multiprocess Firefox.
</label>
<label class="realtime-disabled-on-e10s-message">
Enable multiprocess Firefox in preferences for rendering recording data in realtime.
</label>
<label class="realtime-disabled-message"
value="&performanceUI.disabledRealTime.nonE10SBuild;"/>
<label class="realtime-disabled-on-e10s-message"
value="&performanceUI.disabledRealTime.disabledE10S;"/>
<label class="buffer-status-message"
tooltiptext="&profilerUI.bufferStatusTooltip;"/>
tooltiptext="&performanceUI.bufferStatusTooltip;"/>
<label class="buffer-status-message-full"
value="&profilerUI.bufferStatusFull;"/>
value="&performanceUI.bufferStatusFull;"/>
</vbox>
<!-- Detail views -->
@ -269,33 +265,33 @@
<label class="plain call-tree-header"
type="duration"
crop="end"
value="&profilerUI.table.totalDuration2;"
tooltiptext="&profilerUI.table.totalDuration.tooltip;"/>
value="&performanceUI.table.totalDuration;"
tooltiptext="&performanceUI.table.totalDuration.tooltip;"/>
<label class="plain call-tree-header"
type="percentage"
crop="end"
value="&profilerUI.table.totalPercentage;"
tooltiptext="&profilerUI.table.totalPercentage.tooltip;"/>
value="&performanceUI.table.totalPercentage;"
tooltiptext="&performanceUI.table.totalPercentage.tooltip;"/>
<label class="plain call-tree-header"
type="self-duration"
crop="end"
value="&profilerUI.table.selfDuration2;"
tooltiptext="&profilerUI.table.selfDuration.tooltip;"/>
value="&performanceUI.table.selfDuration;"
tooltiptext="&performanceUI.table.selfDuration.tooltip;"/>
<label class="plain call-tree-header"
type="self-percentage"
crop="end"
value="&profilerUI.table.selfPercentage;"
tooltiptext="&profilerUI.table.selfPercentage.tooltip;"/>
value="&performanceUI.table.selfPercentage;"
tooltiptext="&performanceUI.table.selfPercentage.tooltip;"/>
<label class="plain call-tree-header"
type="samples"
crop="end"
value="&profilerUI.table.samples;"
tooltiptext="&profilerUI.table.samples.tooltip;"/>
value="&performanceUI.table.samples;"
tooltiptext="&performanceUI.table.samples.tooltip;"/>
<label class="plain call-tree-header"
type="function"
crop="end"
value="&profilerUI.table.function;"
tooltiptext="&profilerUI.table.function.tooltip;"/>
value="&performanceUI.table.function;"
tooltiptext="&performanceUI.table.function.tooltip;"/>
</hbox>
<vbox class="call-tree-cells-container" flex="1"/>
</vbox>
@ -311,17 +307,17 @@
<label class="plain call-tree-header"
type="allocations"
crop="end"
value="&profilerUI.table.totalAlloc1;"
tooltiptext="&profilerUI.table.totalAlloc.tooltip;"/>
value="&performanceUI.table.totalAlloc;"
tooltiptext="&performanceUI.table.totalAlloc.tooltip;"/>
<label class="plain call-tree-header"
type="self-allocations"
crop="end"
value="&profilerUI.table.selfAlloc1;"
tooltiptext="&profilerUI.table.selfAlloc.tooltip;"/>
value="&performanceUI.table.selfAlloc;"
tooltiptext="&performanceUI.table.selfAlloc.tooltip;"/>
<label class="plain call-tree-header"
type="function"
crop="end"
value="&profilerUI.table.function;"/>
value="&performanceUI.table.function;"/>
</hbox>
<vbox class="call-tree-cells-container" flex="1"/>
</vbox>
@ -352,7 +348,7 @@
<vbox id="jit-optimizations-view">
<toolbar id="jit-optimizations-toolbar" class="devtools-toolbar">
<hbox id="jit-optimizations-header">
<span class="jit-optimizations-title">&profilerUI.JITOptimizationsTitle;</span>
<span class="jit-optimizations-title">&performanceUI.JITOptimizationsTitle;</span>
<span class="header-function-name" />
<span class="header-file opt-url debugger-link" />
<span class="header-line opt-line" />

View File

@ -9,11 +9,7 @@
let test = Task.async(function*() {
let { target, panel, toolbox } = yield initPerformance(SIMPLE_URL);
let { RecordingsView, PerformanceController, PerformanceView,
EVENTS, $, L10N, ViewHelpers } = panel.panelWin;
// This should be removed with bug 1163763.
let DBG_STRINGS_URI = "chrome://browser/locale/devtools/debugger.properties";
let DBG_L10N = new ViewHelpers.L10N(DBG_STRINGS_URI);
EVENTS, $, L10N } = panel.panelWin;
info("Start to record");
yield startRecording(panel);
@ -34,7 +30,7 @@ let test = Task.async(function*() {
yield willStop;
is(durationNode.getAttribute("value"),
DBG_L10N.getStr("loadingText"),
L10N.getStr("recordingsList.loadingLabel"),
"The duration node should show the 'loading' message while stopping");
let stateChanged = once(PerformanceView, EVENTS.UI_STATE_CHANGED);

View File

@ -5,7 +5,7 @@
const URL_LABEL_TOOLTIP = L10N.getStr("table.url.tooltiptext");
const OPTIMIZATION_FAILURE = L10N.getStr("jit.optimizationFailure");
const JIT_SAMPLES = L10N.getStr("jit.samples2");
const JIT_SAMPLES = L10N.getStr("jit.samples");
const JIT_EMPTY_TEXT = L10N.getStr("jit.empty");
const PROPNAME_MAX_LENGTH = 4;

View File

@ -3,10 +3,6 @@
* You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
// This should be removed with bug 1163763.
const DBG_STRINGS_URI = "chrome://browser/locale/devtools/debugger.properties";
const DBG_L10N = new ViewHelpers.L10N(DBG_STRINGS_URI);
/**
* Functions handling the recordings UI.
*/
@ -151,7 +147,7 @@ let RecordingsView = Heritage.extend(WidgetMethods, {
// Mark the corresponding item as loading.
let durationNode = $(".recording-item-duration", recordingItem.target);
durationNode.setAttribute("value", DBG_L10N.getStr("loadingText"));
durationNode.setAttribute("value", L10N.getStr("recordingsList.loadingLabel"));
},
/**
@ -214,8 +210,7 @@ let RecordingsView = Heritage.extend(WidgetMethods, {
*/
_onSaveButtonClick: function (e) {
let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
// TODO localize? in bug 1163763
fp.init(window, "Save recording…", Ci.nsIFilePicker.modeSave);
fp.init(window, L10N.getStr("recordingsList.saveDialogTitle"), Ci.nsIFilePicker.modeSave);
fp.appendFilter(L10N.getStr("recordingsList.saveDialogJSONFilter"), "*.json");
fp.appendFilter(L10N.getStr("recordingsList.saveDialogAllFilter"), "*.*");
fp.defaultString = "profile.json";

View File

@ -0,0 +1,80 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# LOCALIZATION NOTE These strings are used inside the Performance Tools
# which is available from the Web Developer sub-menu -> 'Performance'.
# The correct localization of this file might be to keep it in
# English, or another language commonly spoken among web developers.
# You want to make that choice consistent across the developer tools.
# A good criteria is the language in which you'd find the best
# documentation on web development on the web. These strings
# are specifically for marker names in the performance tool.
# LOCALIZATION NOTE (marker.label.*):
# These strings are displayed in the Performance Tool waterfall, identifying markers.
# We want to use the same wording as Google Chrome when appropriate.
marker.label.styles=Recalculate Style
marker.label.reflow=Layout
marker.label.paint=Paint
marker.label.javascript=Function Call
marker.label.parseHTML=Parse HTML
marker.label.parseXML=Parse XML
marker.label.domevent=DOM Event
marker.label.consoleTime=Console
marker.label.garbageCollection=Incremental GC
marker.label.garbageCollection.nonIncremental=Non-incremental GC
marker.label.cycleCollection=Cycle Collection
marker.label.cycleCollection.forgetSkippable=CC Graph Reduction
marker.label.timestamp=Timestamp
marker.label.unknown=Unknown
# LOCALIZATION NOTE (marker.label.javascript.*):
# These strings are displayed as JavaScript markers that have special
# reasons that can be translated.
marker.label.javascript.scriptElement=Script Tag
marker.label.javascript.promiseCallback=Promise Callback
marker.label.javascript.promiseInit=Promise Init
marker.label.javascript.workerRunnable=Worker
marker.label.javascript.jsURI=JavaScript URI
marker.label.javascript.eventHandler=Event Handler
# LOCALIZATION NOTE (marker.fieldFormat):
# Some timeline markers come with details, like a size, a name, a js function.
# %1$S is replaced with one of the above label (marker.label.*) and %2$S
# with the details. For examples: Paint (200x100), or console.time (FOO)
marker.fieldFormat=%1$S (%2$S)
# LOCALIZATION NOTE (marker.field.*):
# Strings used in the waterfall sidebar as property names.
# General marker fields
marker.field.start=Start:
marker.field.end=End:
marker.field.duration=Duration:
# Field names for stack values
marker.field.stack=Stack:
marker.field.startStack=Stack at start:
marker.field.endStack=Stack at end:
# %S is the "Async Cause" of a marker, and this signifies that the cause
# was an asynchronous one in a displayed stack.
marker.field.asyncStack=(Async: %S)
# For console.time markers
marker.field.consoleTimerName=Timer Name:
# For DOM Event markers
marker.field.DOMEventType=Event Type:
marker.field.DOMEventPhase=Phase:
# Non-incremental cause for a Garbage Collection marker
marker.field.nonIncrementalCause=Non-incremental Cause:
# For "Recalculate Style" markers
marker.field.restyleHint=Restyle Hint:
# General "reason" for a marker (JavaScript, Garbage Collection)
marker.field.causeName=Cause:
# General "type" for a marker (Cycle Collection, Garbage Collection)
marker.field.type=Type:
# Strings used in the waterfall sidebar as values.
marker.value.unknownFrame=<unknown location>
marker.value.DOMEventTargetPhase=Target
marker.value.DOMEventCapturingPhase=Capture
marker.value.DOMEventBubblingPhase=Bubbling

View File

@ -0,0 +1,157 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<!-- LOCALIZATION NOTE : FILE This file contains the Performance strings -->
<!-- LOCALIZATION NOTE : FILE Do not translate commandkey -->
<!-- LOCALIZATION NOTE : FILE The correct localization of this file might be to
- keep it in English, or another language commonly spoken among web developers.
- You want to make that choice consistent across the developer tools.
- A good criteria is the language in which you'd find the best
- documentation on web development on the web. -->
<!-- LOCALIZATION NOTE (performanceUI.startRecording/performanceUI.stopRecording): These are
- the labels shown on the main recording buttons to start/stop recording. -->
<!ENTITY performanceUI.startRecording "Start Recording Performance">
<!ENTITY performanceUI.stopRecording "Stop Recording Performance">
<!-- LOCALIZATION NOTE (performanceUI.bufferStatusTooltip): This string
- is displayed as the tooltip for the buffer capacity during a recording. -->
<!ENTITY performanceUI.bufferStatusTooltip "The profiler stores samples in a circular buffer, and once the buffer reaches the limit for a recording, newer samples begin to overwrite samples at the beginning of the recording.">
<!-- LOCALIZATION NOTE (performanceUI.disabledRealTime.nonE10SBuild): This string
- is displayed as a message for why the real time overview graph is disabled
- when running on a non-multiprocess build. -->
<!ENTITY performanceUI.disabledRealTime.nonE10SBuild "Realtime recording data disabled on non-multiprocess Firefox.">
<!-- LOCALIZATION NOTE (performanceUI.disabledRealTime.disabledE10S): This string
- is displayed as a message for why the real time overview graph is disabled
- when running on a build that can run multiprocess Firefox, but just is not enabled. -->
<!ENTITY performanceUI.disabledRealTime.disabledE10S "Enable multiprocess Firefox in preferences for rendering recording data in realtime.">
<!-- LOCALIZATION NOTE (performanceUI.bufferStatusFull): This string
- is displayed when the profiler's circular buffer has started to overlap. -->
<!ENTITY performanceUI.bufferStatusFull "The buffer is full. Older samples are now being overwritten.">
<!-- LOCALIZATION NOTE (performanceUI.loadingNotice): This is the label shown
- in the call list view while loading a profile. -->
<!ENTITY performanceUI.loadingNotice "Loading…">
<!-- LOCALIZATION NOTE (performanceUI.recordButton): This string is displayed
- on a button that starts a new profile. -->
<!ENTITY performanceUI.recordButton.tooltip "Toggle the recording state of a performance recording.">
<!-- LOCALIZATION NOTE (performanceUI.importButton): This string is displayed
- on a button that opens a dialog to import a saved profile data file. -->
<!ENTITY performanceUI.importButton "Import…">
<!-- LOCALIZATION NOTE (performanceUI.exportButton): This string is displayed
- on a button that opens a dialog to export a saved profile data file. -->
<!ENTITY performanceUI.exportButton "Save">
<!-- LOCALIZATION NOTE (performanceUI.clearButton): This string is displayed
- on a button that remvoes all the recordings. -->
<!ENTITY performanceUI.clearButton "Clear">
<!-- LOCALIZATION NOTE (performanceUI.toolbar.*): These strings are displayed
- in the toolbar on buttons that select which view is currently shown. -->
<!ENTITY performanceUI.toolbar.waterfall "Waterfall">
<!ENTITY performanceUI.toolbar.js-calltree "Call Tree">
<!ENTITY performanceUI.toolbar.memory-calltree "Allocations">
<!ENTITY performanceUI.toolbar.js-flamegraph "JS Flame Chart">
<!ENTITY performanceUI.toolbar.memory-flamegraph "Allocations Flame Chart">
<!-- LOCALIZATION NOTE (performanceUI.table.*): These strings are displayed
- in the call tree headers for a recording. -->
<!ENTITY performanceUI.table.totalDuration "Total Time">
<!ENTITY performanceUI.table.totalDuration.tooltip "The amount of time spent in this function and functions it calls.">
<!ENTITY performanceUI.table.selfDuration "Self Time">
<!ENTITY performanceUI.table.selfDuration.tooltip "The amount of time spent only within this function.">
<!ENTITY performanceUI.table.totalPercentage "Total Cost">
<!ENTITY performanceUI.table.totalPercentage.tooltip "The percentage of time spent in this function and functions it calls.">
<!ENTITY performanceUI.table.selfPercentage "Self Cost">
<!ENTITY performanceUI.table.selfPercentage.tooltip "The percentage of time spent only within this function.">
<!ENTITY performanceUI.table.samples "Samples">
<!ENTITY performanceUI.table.samples.tooltip "The number of times this function was on the stack when the profiler took a sample.">
<!ENTITY performanceUI.table.function "Function">
<!ENTITY performanceUI.table.function.tooltip "The name and source location of the sampled function.">
<!ENTITY performanceUI.table.totalAlloc "Total Sampled Allocations">
<!ENTITY performanceUI.table.totalAlloc.tooltip "The total number of Object allocations sampled at this location and in callees.">
<!ENTITY performanceUI.table.selfAlloc "Self Sampled Allocations">
<!ENTITY performanceUI.table.selfAlloc.tooltip "The number of Object allocations sampled at this location.">
<!-- LOCALIZATION NOTE (performanceUI.newtab.tooltiptext): The tooltiptext shown
- on the "+" (new tab) button for a profile when a selection is available. -->
<!ENTITY performanceUI.newtab.tooltiptext "Add new tab from selection">
<!-- LOCALIZATION NOTE (performanceUI.toolbar.filter.tooltiptext): This string
- is displayed next to the filter button-->
<!ENTITY performanceUI.options.filter.tooltiptext "Select what data to display in the timeline">
<!-- LOCALIZATION NOTE (performanceUI.options.tooltiptext): This is the tooltip
- for the options button. -->
<!ENTITY performanceUI.options.gear.tooltiptext "Configure performance preferences.">
<!-- LOCALIZATION NOTE (performanceUI.invertTree): This is the label shown next to
- a checkbox that inverts and un-inverts the profiler's call tree. -->
<!ENTITY performanceUI.invertTree "Invert Call Tree">
<!ENTITY performanceUI.invertTree.tooltiptext "Inverting the call tree displays the profiled call paths starting from the youngest frames and expanding out to the older frames.">
<!-- LOCALIZATION NOTE (performanceUI.invertFlameGraph): This is the label shown next to
- a checkbox that inverts and un-inverts the profiler's flame graph. -->
<!ENTITY performanceUI.invertFlameGraph "Invert Flame Chart">
<!ENTITY performanceUI.invertFlameGraph.tooltiptext "Inverting the flame chart displays the profiled call paths starting from the youngest frames and expanding out to the older frames.">
<!-- LOCALIZATION NOTE (performanceUI.showPlatformData): This is the
- label for the checkbox that toggles whether or not Gecko platform data
- is displayed in the profiler. -->
<!ENTITY performanceUI.showPlatformData "Show Gecko Platform Data">
<!ENTITY performanceUI.showPlatformData.tooltiptext "Showing platform data enables the JavaScript Profiler reports to include Gecko platform symbols.">
<!-- LOCALIZATION NOTE (performanceUI.flattenTreeRecursion): This is the
- label for the checkbox that toggles the flattening of tree recursion in inspected
- functions in the profiler. -->
<!ENTITY performanceUI.flattenTreeRecursion "Flatten Tree Recursion">
<!ENTITY performanceUI.flattenTreeRecursion.tooltiptext "Flatten recursion when inspecting functions.">
<!-- LOCALIZATION NOTE (performanceUI.enableMemory): This string
- is displayed next to a checkbox determining whether or not memory
- measurements are enabled. -->
<!ENTITY performanceUI.enableMemory "Record Memory">
<!ENTITY performanceUI.enableMemory.tooltiptext "Record memory consumption while profiling.">
<!-- LOCALIZATION NOTE (performanceUI.enableAllocations): This string
- is displayed next to a checkbox determining whether or not allocation
- measurements are enabled. -->
<!ENTITY performanceUI.enableAllocations "Record Allocations">
<!ENTITY performanceUI.enableAllocations.tooltiptext "Record Object allocations while profiling.">
<!-- LOCALIZATION NOTE (performanceUI.enableFramerate): This string
- is displayed next to a checkbox determining whether or not framerate
- is recorded. -->
<!ENTITY performanceUI.enableFramerate "Record Framerate">
<!ENTITY performanceUI.enableFramerate.tooltiptext "Record framerate while profiling.">
<!-- LOCALIZATION NOTE (performanceUI.enableJITOptimizations): This string
- is displayed next to a checkbox determining whether or not JIT optimization data
- should be recorded. -->
<!ENTITY performanceUI.enableJITOptimizations "Record JIT Optimizations">
<!ENTITY performanceUI.enableJITOptimizations.tooltiptext "Record JIT optimization data sampled in each JavaScript frame.">
<!-- LOCALIZATION NOTE (performanceUI.JITOptimizationsTitle): This string
- is displayed as the title of the JIT Optimizations panel. -->
<!ENTITY performanceUI.JITOptimizationsTitle "JIT Optimizations">
<!-- LOCALIZATION NOTE (performanceUI.console.recordingNoticeStart/recordingNoticeEnd):
- This string is displayed when a recording is selected that started via console.profile.
- Wraps the command used to start, like "Currently recording via console.profile("label")" -->
<!ENTITY performanceUI.console.recordingNoticeStart "Currently recording via">
<!ENTITY performanceUI.console.recordingNoticeEnd "">
<!-- LOCALIZATION NOTE (performanceUI.console.stopCommandStart/stopCommandEnd):
- This string is displayed when a recording is selected that started via console.profile.
- Indicates how to stop the recording, wrapping the command, like
- "Stop recording by entering console.profileEnd("label") into the console." -->
<!ENTITY performanceUI.console.stopCommandStart "Stop recording by entering">
<!ENTITY performanceUI.console.stopCommandEnd "into the console.">

View File

@ -2,77 +2,83 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# LOCALIZATION NOTE These strings are used inside the Profiler
# which is available from the Web Developer sub-menu -> 'Profiler'.
# LOCALIZATION NOTE These strings are used inside the Performance Tools
# which is available from the Web Developer sub-menu -> 'Performance'.
# The correct localization of this file might be to keep it in
# English, or another language commonly spoken among web developers.
# You want to make that choice consistent across the developer tools.
# A good criteria is the language in which you'd find the best
# documentation on web development on the web.
# LOCALIZATION NOTE (profiler.label):
# LOCALIZATION NOTE (performance.label):
# This string is displayed in the title of the tab when the profiler is
# displayed inside the developer tools window and in the Developer Tools Menu.
profiler.label2=Performance
performance.label=Performance
# LOCALIZATION NOTE (profiler.panelLabel):
# LOCALIZATION NOTE (performance.panelLabel):
# This is used as the label for the toolbox panel.
profiler.panelLabel2=Performance Panel
performance.panelLabel=Performance Panel
# LOCALIZATION NOTE (profiler2.commandkey, profiler.accesskey)
# LOCALIZATION NOTE (performance.commandkey, performance.accesskey)
# Used for the menuitem in the tool menu
profiler.commandkey2=VK_F5
profiler.accesskey=P
performance.commandkey=VK_F5
performance.accesskey=P
# LOCALIZATION NOTE (profiler.tooltip3):
# LOCALIZATION NOTE (performance.tooltip):
# This string is displayed in the tooltip of the tab when the profiler is
# displayed inside the developer tools window.
# Keyboard shortcut for JS Profiler will be shown inside brackets.
profiler.tooltip3=JavaScript Profiler (%S)
# Keyboard shortcut for Performance Tools will be shown inside brackets.
performance.tooltip=Performance (%S)
# LOCALIZATION NOTE (noRecordingsText): The text to display in the
# recordings menu when there are no recorded profiles yet.
noRecordingsText=There are no profiles yet.
# LOCALIZATION NOTE (recordingsList.itemLabel):
# This string is displayed in the recordings list of the Profiler,
# This string is displayed in the recordings list of the Performance Tools,
# identifying a set of function calls.
recordingsList.itemLabel=Recording #%S
# LOCALIZATION NOTE (recordingsList.recordingLabel):
# This string is displayed in the recordings list of the Profiler,
# This string is displayed in the recordings list of the Performance Tools,
# for an item that has not finished recording.
recordingsList.recordingLabel=In progress…
# LOCALIZATION NOTE (recordingsList.loadingLabel):
# This string is displayed in the recordings list of the Performance Tools,
# for an item that is finished and is loading.
recordingsList.loadingLabel=Loading…
# LOCALIZATION NOTE (recordingsList.durationLabel):
# This string is displayed in the recordings list of the Profiler,
# This string is displayed in the recordings list of the Performance Tools,
# for an item that has finished recording.
recordingsList.durationLabel=%S ms
# LOCALIZATION NOTE (recordingsList.saveLabel):
# This string is displayed in the recordings list of the Profiler,
# This string is displayed in the recordings list of the Performance Tools,
# for saving an item to disk.
recordingsList.saveLabel=Save
# LOCALIZATION NOTE (profile.tab):
# This string is displayed in the profile view for a tab, after the
# recording has finished, as the recording 'start → stop' range in milliseconds.
profile.tab=%1$S ms → %2$S ms
# LOCALIZATION NOTE (graphs.fps):
# This string is displayed in the framerate graph of the Profiler,
# This string is displayed in the framerate graph of the Performance Tools,
# as the unit used to measure frames per second. This label should be kept
# AS SHORT AS POSSIBLE so it doesn't obstruct important parts of the graph.
graphs.fps=fps
# LOCALIZATION NOTE (graphs.ms):
# This string is displayed in the flamegraph of the Profiler,
# This string is displayed in the flamegraph of the Performance Tools,
# as the unit used to measure time (in milliseconds). This label should be kept
# AS SHORT AS POSSIBLE so it doesn't obstruct important parts of the graph.
graphs.ms=ms
# LOCALIZATION NOTE (graphs.memory):
# This string is displayed in the memory graph of the Performance tool,
# as the unit used to memory consumption. This label should be kept
# AS SHORT AS POSSIBLE so it doesn't obstruct important parts of the graph.
graphs.memory=MB
# LOCALIZATION NOTE (category.*):
# These strings are displayed in the categories graph of the Profiler,
# These strings are displayed in the categories graph of the Performance Tools,
# as the legend for each block in every bar. These labels should be kept
# AS SHORT AS POSSIBLE so they don't obstruct important parts of the graph.
category.other=Gecko
@ -85,11 +91,11 @@ category.storage=Storage
category.events=Input & Events
category.tools=Tools
# LOCALIZATION NOTE (graphs.ms):
# LOCALIZATION NOTE (table.ms):
# This string is displayed in the call tree after units of time in milliseconds.
table.ms=ms
# LOCALIZATION NOTE (graphs.ms):
# LOCALIZATION NOTE (table.percentage):
# This string is displayed in the call tree after units representing percentages.
table.percentage=%
@ -116,10 +122,13 @@ table.zoom.tooltiptext=Inspect frame in new tab
# have optimization data
table.view-optimizations.tooltiptext=View optimizations in JIT View
# LOCALIZATION NOTE (recordingsList.importDialogTitle):
# This string is displayed as a title for importing a recoring from disk.
recordingsList.importDialogTitle=Import recording…
# LOCALIZATION NOTE (recordingsList.saveDialogTitle):
# This string is displayed as a title for saving a recording to disk.
recordingsList.saveDialogTitle=Save profile
recordingsList.saveDialogTitle=Save recording
# LOCALIZATION NOTE (recordingsList.saveDialogJSONFilter):
# This string is displayed as a filter for saving a recording to disk.
@ -133,25 +142,31 @@ recordingsList.saveDialogAllFilter=All Files
# This string is displayed in a tooltip when no JIT optimizations were detected.
jit.optimizationFailure=Optimization failed
# LOCALIZATION NOTE (jit.samples2):
# LOCALIZATION NOTE (jit.samples):
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
# This string is displayed for the unit representing the number of times a
# frame is sampled.
# "#1" represents the number of samples
# example: 30 samples
jit.samples2=#1 sample;#1 samples
jit.samples=#1 sample;#1 samples
# LOCALIZATION NOTE (jit.empty):
# This string is displayed when there are no JIT optimizations to display.
jit.empty=No JIT optimizations recorded for this frame.
# LOCALIZATION NOTE (consoleProfile.recordingNotice/stopCommand):
# These strings are displayed when a recording is in progress, that was started from the console.
# TODO REMOVE
consoleProfile.recordingNotice=Currently recording profile "%S".
# TODO REMOVE
consoleProfile.stopCommand=Stop profiling by typing \"console.profileEnd(\'%S\')\" into the console.
# LOCALIZATION NOTE (timeline.tick):
# This string is displayed in the timeline overview, for delimiting ticks
# by time, in milliseconds.
timeline.tick=%S ms
# LOCALIZATION NOTE (profiler.bufferStatus):
# This string is displayed illustrating how full the profiler's circular buffer is.
profiler.bufferStatus=Buffer capacity: %S%
# LOCALIZATION NOTE (timeline.records):
# This string is displayed in the timeline waterfall, as a title for the menu.
timeline.records=RECORDS
# LOCALIZATION NOTE (profiler.bufferFull):
# This string is displayed when recording, indicating how much of the
# buffer is currently be used.
# %S is the percentage of the buffer used -- there are two "%"s after to escape
# the % that is actually displayed.
# Example: "Buffer 54% full"
profiler.bufferFull=Buffer %S%% full

View File

@ -1,166 +0,0 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<!-- LOCALIZATION NOTE : FILE This file contains the Profiler strings -->
<!-- LOCALIZATION NOTE : FILE Do not translate commandkey -->
<!-- LOCALIZATION NOTE : FILE The correct localization of this file might be to
- keep it in English, or another language commonly spoken among web developers.
- You want to make that choice consistent across the developer tools.
- A good criteria is the language in which you'd find the best
- documentation on web development on the web. -->
<!-- LOCALIZATION NOTE (profilerUI.emptyNotice1/2): This is the label shown
- in the call list view when empty. -->
<!-- TODO remove -->
<!ENTITY profilerUI.emptyNotice1 "Click on the">
<!-- TODO remove -->
<!ENTITY profilerUI.emptyNotice2 "button to start recording JavaScript function calls.">
<!-- LOCALIZATION NOTE (profilerUI.stopNotice1/2): This is the label shown
- in the call list view while recording a profile. -->
<!-- TODO remove -->
<!ENTITY profilerUI.stopNotice1 "Click on the">
<!-- TODO remove -->
<!ENTITY profilerUI.stopNotice2 "button again to stop profiling.">
<!-- LOCALIZATION NOTE (profilerUI.startRecording/profilerUI.stopRecording): These are
- the labels shown on the main recording buttons to start/stop recording. -->
<!ENTITY profilerUI.startRecording "Start Recording Performance">
<!ENTITY profilerUI.stopRecording "Stop Recording Performance">
<!-- LOCALIZATION NOTE (profilerUI.bufferStatusTooltip): This string
- is displayed as the tooltip for the buffer capacity during a recording. -->
<!ENTITY profilerUI.bufferStatusTooltip "The profiler stores samples in a circular buffer, and once the buffer reaches the limit for a recording, newer samples begin to overwrite samples at the beginning of the recording.">
<!-- LOCALIZATION NOTE (profilerUI.bufferStatusFull): This string
- is displayed when the profiler's circular buffer has started to overlap. -->
<!ENTITY profilerUI.bufferStatusFull "The buffer is full. Older samples are now being overwritten.">
<!-- LOCALIZATION NOTE (profilerUI.loadingNotice): This is the label shown
- in the call list view while loading a profile. -->
<!ENTITY profilerUI.loadingNotice "Loading…">
<!-- LOCALIZATION NOTE (profilerUI.recordButton): This string is displayed
- on a button that starts a new profile. -->
<!-- TODO remove -->
<!ENTITY profilerUI.recordButton.tooltip "Record JavaScript function calls.">
<!-- LOCALIZATION NOTE (profilerUI.recordButton2): This string is displayed
- on a button that starts a new profile. -->
<!ENTITY profilerUI.recordButton2.tooltip "Toggle the recording state of a performance recording.">
<!-- LOCALIZATION NOTE (profilerUI.importButton): This string is displayed
- on a button that opens a dialog to import a saved profile data file. -->
<!ENTITY profilerUI.importButton "Import…">
<!-- LOCALIZATION NOTE (profilerUI.exportButton): This string is displayed
- on a button that opens a dialog to export a saved profile data file. -->
<!ENTITY profilerUI.exportButton "Save">
<!-- LOCALIZATION NOTE (profilerUI.clearButton): This string is displayed
- on a button that remvoes all the recordings. -->
<!ENTITY profilerUI.clearButton "Clear">
<!-- LOCALIZATION NOTE (profilerUI.toolbar.*): These strings are displayed
- in the toolbar on buttons that select which view is currently shown. -->
<!ENTITY profilerUI.toolbar.waterfall "Timeline">
<!ENTITY profilerUI.toolbar.js-calltree "JavaScript">
<!ENTITY profilerUI.toolbar.memory-calltree1 "Allocations">
<!ENTITY profilerUI.toolbar.js-flamegraph "JS Flame Chart">
<!ENTITY profilerUI.toolbar.memory-flamegraph1 "Allocations Flame Chart">
<!-- LOCALIZATION NOTE (profilerUI.table.*): These strings are displayed
- in the call tree headers for a recording. -->
<!ENTITY profilerUI.table.totalDuration2 "Total Time">
<!ENTITY profilerUI.table.totalDuration.tooltip "The amount of time spent in this function and functions it calls.">
<!ENTITY profilerUI.table.selfDuration2 "Self Time">
<!ENTITY profilerUI.table.selfDuration.tooltip "The amount of time spent only within this function.">
<!ENTITY profilerUI.table.totalPercentage "Total Cost">
<!ENTITY profilerUI.table.totalPercentage.tooltip "The percentage of time spent in this function and functions it calls.">
<!ENTITY profilerUI.table.selfPercentage "Self Cost">
<!ENTITY profilerUI.table.selfPercentage.tooltip "The percentage of time spent only within this function.">
<!ENTITY profilerUI.table.samples "Samples">
<!ENTITY profilerUI.table.samples.tooltip "The number of times this function was on the stack when the profiler took a sample.">
<!ENTITY profilerUI.table.function "Function">
<!ENTITY profilerUI.table.function.tooltip "The name and source location of the sampled function.">
<!ENTITY profilerUI.table.totalAlloc1 "Total Sampled Allocations">
<!ENTITY profilerUI.table.totalAlloc.tooltip "The total number of Object allocations sampled at this location and in callees.">
<!ENTITY profilerUI.table.selfAlloc1 "Self Sampled Allocations">
<!ENTITY profilerUI.table.selfAlloc.tooltip "The number of Object allocations sampled at this location.">
<!-- LOCALIZATION NOTE (profilerUI.newtab.tooltiptext): The tooltiptext shown
- on the "+" (new tab) button for a profile when a selection is available. -->
<!ENTITY profilerUI.newtab.tooltiptext "Add new tab from selection">
<!-- LOCALIZATION NOTE (profilerUI.toolbar.filter.tooltiptext): This string
- is displayed next to the filter button-->
<!ENTITY profilerUI.options.filter.tooltiptext "Select what data to display in the timeline">
<!-- LOCALIZATION NOTE (profilerUI.options.tooltiptext): This is the tooltip
- for the options button. -->
<!ENTITY profilerUI.options.gear.tooltiptext "Configure performance preferences.">
<!-- LOCALIZATION NOTE (profilerUI.invertTree): This is the label shown next to
- a checkbox that inverts and un-inverts the profiler's call tree. -->
<!ENTITY profilerUI.invertTree "Invert Call Tree">
<!ENTITY profilerUI.invertTree.tooltiptext "Inverting the call tree displays the profiled call paths starting from the youngest frames and expanding out to the older frames.">
<!-- LOCALIZATION NOTE (profilerUI.invertFlameGraph): This is the label shown next to
- a checkbox that inverts and un-inverts the profiler's flame graph. -->
<!ENTITY profilerUI.invertFlameGraph "Invert Flame Chart">
<!ENTITY profilerUI.invertFlameGraph.tooltiptext "Inverting the flame chart displays the profiled call paths starting from the youngest frames and expanding out to the older frames.">
<!-- LOCALIZATION NOTE (profilerUI.showPlatformData): This is the
- label for the checkbox that toggles whether or not Gecko platform data
- is displayed in the profiler. -->
<!ENTITY profilerUI.showPlatformData "Show Gecko Platform Data">
<!ENTITY profilerUI.showPlatformData.tooltiptext "Showing platform data enables the JavaScript Profiler reports to include Gecko platform symbols.">
<!-- LOCALIZATION NOTE (profilerUI.flattenTreeRecursion): This is the
- label for the checkbox that toggles the flattening of tree recursion in inspected
- functions in the profiler. -->
<!ENTITY profilerUI.flattenTreeRecursion "Flatten Tree Recursion">
<!ENTITY profilerUI.flattenTreeRecursion.tooltiptext "Flatten recursion when inspecting functions.">
<!-- LOCALIZATION NOTE (profilerUI.enableMemory): This string
- is displayed next to a checkbox determining whether or not memory
- measurements are enabled. -->
<!ENTITY profilerUI.enableMemory "Record Memory">
<!ENTITY profilerUI.enableMemory.tooltiptext "Record memory consumption while profiling.">
<!-- LOCALIZATION NOTE (profilerUI.enableAllocations): This string
- is displayed next to a checkbox determining whether or not allocation
- measurements are enabled. -->
<!ENTITY profilerUI.enableAllocations "Record Allocations">
<!ENTITY profilerUI.enableAllocations.tooltiptext "Record Object allocations while profiling.">
<!-- LOCALIZATION NOTE (profilerUI.enableFramerate): This string
- is displayed next to a checkbox determining whether or not framerate
- is recorded. -->
<!ENTITY profilerUI.enableFramerate "Record Framerate">
<!ENTITY profilerUI.enableFramerate.tooltiptext "Record framerate while profiling.">
<!-- LOCALIZATION NOTE (profilerUI.enableJITOptimizations): This string
- is displayed next to a checkbox determining whether or not JIT optimization data
- should be recorded. -->
<!ENTITY profilerUI.enableJITOptimizations "Record JIT Optimizations">
<!ENTITY profilerUI.enableJITOptimizations.tooltiptext "Record JIT optimization data sampled in each JavaScript frame.">
<!-- LOCALIZATION NOTE (profilerUI.JITOptimizationsTitle): This string
- is displayed as the title of the JIT Optimizations panel. -->
<!ENTITY profilerUI.JITOptimizationsTitle "JIT Optimizations">
<!-- LOCALIZATION NOTE (profilerUI.console.recordingNoticeStart/recordingNoticeEnd):
- This string is displayed when a recording is selected that started via console.profile.
- Wraps the command used to start, like "Currently recording via console.profile("label")" -->
<!ENTITY profilerUI.console.recordingNoticeStart "Currently recording via">
<!ENTITY profilerUI.console.recordingNoticeEnd "">
<!-- LOCALIZATION NOTE (profilerUI.console.stopCommandStart/stopCommandEnd):
- This string is displayed when a recording is selected that started via console.profile.
- Indicates how to stop the recording, wrapping the command, like
- "Stop recording by entering console.profilEnd("label") into the console." -->
<!ENTITY profilerUI.console.stopCommandStart "Stop recording by entering">
<!ENTITY profilerUI.console.stopCommandEnd "into the console.">

View File

@ -1,43 +0,0 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<!-- LOCALIZATION NOTE : FILE This file contains the Timeline strings -->
<!-- LOCALIZATION NOTE : FILE Do not translate commandkey -->
<!-- LOCALIZATION NOTE : FILE The correct localization of this file might be to
- keep it in English, or another language commonly spoken among web developers.
- You want to make that choice consistent across the developer tools.
- A good criteria is the language in which you'd find the best
- documentation on web development on the web. -->
<!-- LOCALIZATION NOTE (timelineUI.recordButton): This string is displayed
- on a button that starts a new recording. -->
<!ENTITY timelineUI.recordButton.tooltip "Record timeline operations">
<!-- LOCALIZATION NOTE (timelineUI.recordLabel): This string is displayed
- as a label to signal that a recording is in progress. -->
<!ENTITY timelineUI.recordLabel "Recording…">
<!-- LOCALIZATION NOTE (timelineUI.memoryCheckbox.label): This string
- is displayed next to a checkbox determining whether or not memory
- measurements are enabled. -->
<!ENTITY timelineUI.memoryCheckbox.label "Memory">
<!-- LOCALIZATION NOTE (timelineUI.memoryCheckbox.tooltip): This string
- is displayed next to the memory checkbox -->
<!ENTITY timelineUI.memoryCheckbox.tooltip "Enable memory measurements">
<!-- LOCALIZATION NOTE (timelineUI.filterButton.tooltip): This string
- is displayed next to the filter button-->
<!ENTITY timelineUI.filterButton.tooltip "Select what data to display">
<!-- LOCALIZATION NOTE (timelineUI.emptyNotice1/2): This is the label shown
- in the timeline view when empty. -->
<!ENTITY timelineUI.emptyNotice1 "Click on the">
<!ENTITY timelineUI.emptyNotice2 "button to start recording timeline events.">
<!-- LOCALIZATION NOTE (timelineUI.stopNotice1/2): This is the label shown
- in the timeline view while recording. -->
<!ENTITY timelineUI.stopNotice1 "Click on the">
<!ENTITY timelineUI.stopNotice2 "button again to stop recording.">

View File

@ -1,79 +0,0 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# LOCALIZATION NOTE These strings are used inside the Timeline
# which is available from the Web Developer sub-menu -> 'Timeline'.
# The correct localization of this file might be to keep it in
# English, or another language commonly spoken among web developers.
# You want to make that choice consistent across the developer tools.
# A good criteria is the language in which you'd find the best
# documentation on web development on the web.
# LOCALIZATION NOTE (timeline.label):
# This string is displayed in the title of the tab when the timeline is
# displayed inside the developer tools window and in the Developer Tools Menu.
timeline.label=Timeline
# LOCALIZATION NOTE (timeline.panelLabel):
# This is used as the label for the toolbox panel.
timeline.panelLabel=Timeline Panel
# LOCALIZATION NOTE (timeline.tooltip):
# This string is displayed in the tooltip of the tab when the timeline is
# displayed inside the developer tools window.
timeline.tooltip=Performance Timeline
# LOCALIZATION NOTE (timeline.tick):
# This string is displayed in the timeline overview, for delimiting ticks
# by time, in milliseconds.
timeline.tick=%S ms
# LOCALIZATION NOTE (timeline.records):
# This string is displayed in the timeline waterfall, as a title for the menu.
timeline.records=RECORDS
# LOCALIZATION NOTE (timeline.label.*):
# These strings are displayed in the timeline waterfall, identifying markers.
# We want to use the same wording as Google Chrome
timeline.label.styles2=Recalculate Style
timeline.label.reflow2=Layout
timeline.label.paint=Paint
timeline.label.javascript2=Function Call
timeline.label.parseHTML=Parse HTML
timeline.label.parseXML=Parse XML
timeline.label.domevent=DOM Event
timeline.label.consoleTime=Console
timeline.label.garbageCollection=GC Event
timeline.label.timestamp=Timestamp
timeline.label.unknown=Unknown
# LOCALIZATION NOTE (graphs.memory):
# This string is displayed in the memory graph of the Performance tool,
# as the unit used to memory consumption. This label should be kept
# AS SHORT AS POSSIBLE so it doesn't obstruct important parts of the graph.
graphs.memory=MB
# LOCALIZATION NOTE (timeline.markerDetailFormat):
# Some timeline markers come with details, like a size, a name, a js function.
# %1$S is replaced with one of the above label (timeline.label.*) and %2$S
# with the details. For examples: Paint (200x100), or console.time (FOO)
timeline.markerDetailFormat=%1$S (%2$S)
# LOCALIZATION NOTE (time.markerDetail.*):
# Strings used in the waterfall sidebar.
timeline.markerDetail.start=Start:
timeline.markerDetail.end=End:
timeline.markerDetail.duration=Duration:
timeline.markerDetail.consoleTimerName=Timer Name:
timeline.markerDetail.DOMEventType=Event Type:
timeline.markerDetail.DOMEventPhase=Phase:
timeline.markerDetail.DOMEventTargetPhase=Target
timeline.markerDetail.DOMEventCapturingPhase=Capture
timeline.markerDetail.DOMEventBubblingPhase=Bubbling
timeline.markerDetail.stack=Stack:
timeline.markerDetail.startStack=Stack at start:
timeline.markerDetail.endStack=Stack at end:
timeline.markerDetail.unknownFrame=<unknown location>
timeline.markerDetail.asyncStack=(Async: %S)
timeline.markerDetail.causeName=Cause:

View File

@ -59,17 +59,16 @@
locale/browser/devtools/VariablesView.dtd (%chrome/browser/devtools/VariablesView.dtd)
locale/browser/devtools/sourceeditor.properties (%chrome/browser/devtools/sourceeditor.properties)
locale/browser/devtools/sourceeditor.dtd (%chrome/browser/devtools/sourceeditor.dtd)
locale/browser/devtools/profiler.dtd (%chrome/browser/devtools/profiler.dtd)
locale/browser/devtools/profiler.properties (%chrome/browser/devtools/profiler.properties)
locale/browser/devtools/promisedebugger.dtd (%chrome/browser/devtools/promisedebugger.dtd)
locale/browser/devtools/promisedebugger.properties (%chrome/browser/devtools/promisedebugger.properties)
locale/browser/devtools/performance.dtd (%chrome/browser/devtools/performance.dtd)
locale/browser/devtools/performance.properties (%chrome/browser/devtools/performance.properties)
locale/browser/devtools/layoutview.dtd (%chrome/browser/devtools/layoutview.dtd)
locale/browser/devtools/responsiveUI.properties (%chrome/browser/devtools/responsiveUI.properties)
locale/browser/devtools/toolbox.dtd (%chrome/browser/devtools/toolbox.dtd)
locale/browser/devtools/toolbox.properties (%chrome/browser/devtools/toolbox.properties)
locale/browser/devtools/inspector.dtd (%chrome/browser/devtools/inspector.dtd)
locale/browser/devtools/timeline.dtd (%chrome/browser/devtools/timeline.dtd)
locale/browser/devtools/timeline.properties (%chrome/browser/devtools/timeline.properties)
locale/browser/devtools/markers.properties (%chrome/browser/devtools/markers.properties)
locale/browser/devtools/projecteditor.properties (%chrome/browser/devtools/projecteditor.properties)
locale/browser/devtools/eyedropper.properties (%chrome/browser/devtools/eyedropper.properties)
locale/browser/devtools/connection-screen.dtd (%chrome/browser/devtools/connection-screen.dtd)