Bug 1517493 Migrating pageInfo to Fluent r=jaws,flod,Gijs

Translating most string from pageInfo.properties and making pageInfo.js and security.js use Fluent

Differential Revision: https://phabricator.services.mozilla.com/D16931

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Christian Frey 2019-02-21 11:31:05 +00:00
Родитель 1f455d1507
Коммит df96294465
13 изменённых файлов: 761 добавлений и 316 удалений

Просмотреть файл

@ -172,18 +172,6 @@ gImageView.getCellProperties = function(row, col) {
return props;
};
gImageView.getCellText = function(row, column) {
var value = this.data[row][column.index];
if (column.index == COL_IMAGE_SIZE) {
if (value == -1) {
return gStrings.unknown;
}
var kbSize = Number(Math.round(value / 1024 * 100) / 100);
return gBundle.getFormattedString("mediaFileSize", [kbSize]);
}
return value || "";
};
gImageView.onPageMediaSort = function(columnname) {
var tree = document.getElementById(this.treeid);
var treecol = tree.columns.getNamedColumn(columnname);
@ -297,21 +285,20 @@ var onUnloadRegistry = [ ];
* the calling window's document will be used
* - initialTab: (optional) id of the inital tab to display
*/
function onLoadPageInfo() {
gBundle = document.getElementById("pageinfobundle");
gStrings.unknown = gBundle.getString("unknown");
gStrings.notSet = gBundle.getString("notset");
gStrings.mediaImg = gBundle.getString("mediaImg");
gStrings.mediaBGImg = gBundle.getString("mediaBGImg");
gStrings.mediaBorderImg = gBundle.getString("mediaBorderImg");
gStrings.mediaListImg = gBundle.getString("mediaListImg");
gStrings.mediaCursor = gBundle.getString("mediaCursor");
gStrings.mediaObject = gBundle.getString("mediaObject");
gStrings.mediaEmbed = gBundle.getString("mediaEmbed");
gStrings.mediaLink = gBundle.getString("mediaLink");
gStrings.mediaInput = gBundle.getString("mediaInput");
gStrings.mediaVideo = gBundle.getString("mediaVideo");
gStrings.mediaAudio = gBundle.getString("mediaAudio");
async function onLoadPageInfo() {
gStrings.unknown = await document.l10n.formatValue("image-size-unknown");
gStrings.notSet = await document.l10n.formatValue("not-set-alternative-text");
gStrings.mediaImg = await document.l10n.formatValue("media-img");
gStrings.mediaBGImg = await document.l10n.formatValue("media-bg-img");
gStrings.mediaBorderImg = await document.l10n.formatValue("media-border-img");
gStrings.mediaListImg = await document.l10n.formatValue("media-list-img");
gStrings.mediaCursor = await document.l10n.formatValue("media-cursor");
gStrings.mediaObject = await document.l10n.formatValue("media-object");
gStrings.mediaEmbed = await document.l10n.formatValue("media-embed");
gStrings.mediaLink = await document.l10n.formatValue("media-link");
gStrings.mediaInput = await document.l10n.formatValue("media-input");
gStrings.mediaVideo = await document.l10n.formatValue("media-video");
gStrings.mediaAudio = await document.l10n.formatValue("media-audio");
var args = "arguments" in window &&
window.arguments.length >= 1 &&
@ -338,7 +325,7 @@ function loadPageInfo(frameOuterWindowID, imageElement, browser) {
let pageInfoData;
// Get initial pageInfoData needed to display the general, permission and security tabs.
mm.addMessageListener("PageInfo:data", function onmessage(message) {
mm.addMessageListener("PageInfo:data", async function onmessage(message) {
mm.removeMessageListener("PageInfo:data", onmessage);
pageInfoData = message.data;
let docInfo = pageInfoData.docInfo;
@ -348,14 +335,13 @@ function loadPageInfo(frameOuterWindowID, imageElement, browser) {
gDocInfo = docInfo;
gImageElement = imageInfo;
var titleFormat = windowInfo.isTopWindow ? "pageInfo.page.title"
: "pageInfo.frame.title";
document.title = gBundle.getFormattedString(titleFormat, [docInfo.location]);
var titleFormat = windowInfo.isTopWindow ? "page-info-page"
: "page-info-frame";
document.l10n.setAttributes(document.documentElement, titleFormat, {"website": docInfo.location});
document.getElementById("main-window").setAttribute("relatedUrl", docInfo.location);
makeGeneralTab(pageInfoData.metaViewRows, docInfo);
await makeGeneralTab(pageInfoData.metaViewRows, docInfo);
onLoadPermission(uri, principal);
securityOnLoad(uri, windowInfo);
});
@ -465,9 +451,13 @@ function openCacheEntry(key, cb) {
diskStorage.asyncOpenURI(Services.io.newURI(key), "", nsICacheStorage.OPEN_READONLY, checkCacheListener);
}
function makeGeneralTab(metaViewRows, docInfo) {
var title = (docInfo.title) ? docInfo.title : gBundle.getString("noPageTitle");
document.getElementById("titletext").value = title;
async function makeGeneralTab(metaViewRows, docInfo) {
// Sets Title in the General Tab, set to "Untitled Page" if no title found
if (docInfo.title) {
document.getElementById("titletext").value = docInfo.title;
} else {
document.l10n.setAttributes(document.getElementById("titletext"), "no-page-title");
}
var url = docInfo.location;
setItemValue("urltext", url);
@ -475,8 +465,8 @@ function makeGeneralTab(metaViewRows, docInfo) {
var referrer = ("referrer" in docInfo && docInfo.referrer);
setItemValue("refertext", referrer);
var mode = ("compatMode" in docInfo && docInfo.compatMode == "BackCompat") ? "generalQuirksMode" : "generalStrictMode";
document.getElementById("modetext").value = gBundle.getString(mode);
var mode = ("compatMode" in docInfo && docInfo.compatMode == "BackCompat") ? "general-quirks-mode" : "general-strict-mode";
document.l10n.setAttributes(document.getElementById("modetext"), mode);
// find out the mime type
var mimeType = docInfo.contentType;
@ -492,11 +482,9 @@ function makeGeneralTab(metaViewRows, docInfo) {
if (!length)
metaGroup.style.visibility = "hidden";
else {
var metaTagsCaption = document.getElementById("metaTagsCaption");
if (length == 1)
metaTagsCaption.value = gBundle.getString("generalMetaTag");
else
metaTagsCaption.value = gBundle.getFormattedString("generalMetaTags", [length]);
document.l10n.setAttributes(document.getElementById("metaTagsCaption"),
"general-meta-tags", {"tags": length});
var metaTree = document.getElementById("metatree");
metaTree.view = gMetaView;
@ -506,8 +494,7 @@ function makeGeneralTab(metaViewRows, docInfo) {
metaGroup.style.removeProperty("visibility");
}
// get the date of last modification
var modifiedText = formatDate(docInfo.lastModified, gStrings.notSet);
var modifiedText = formatDate(docInfo.lastModified, await document.l10n.formatValue("not-set-date"));
document.getElementById("modifiedtext").value = modifiedText;
// get cache info
@ -517,15 +504,17 @@ function makeGeneralTab(metaViewRows, docInfo) {
if (cacheEntry) {
var pageSize = cacheEntry.dataSize;
var kbSize = formatNumber(Math.round(pageSize / 1024 * 100) / 100);
sizeText = gBundle.getFormattedString("generalSize", [kbSize, formatNumber(pageSize)]);
document.l10n.setAttributes(document.getElementById("sizetext"),
"properties-general-size",
{"kb": kbSize, "bytes": formatNumber(pageSize)});
} else {
setItemValue("sizetext", sizeText);
}
setItemValue("sizetext", sizeText);
});
}
function addImage(imageViewRow) {
async function addImage(imageViewRow) {
let [url, type, alt, elem, isBg] = imageViewRow;
if (!url)
return;
@ -535,16 +524,23 @@ function addImage(imageViewRow) {
gImageHash[url][type] = { };
if (!gImageHash[url][type].hasOwnProperty(alt)) {
gImageHash[url][type][alt] = gImageView.data.length;
var row = [url, type, -1, alt, 1, elem, isBg];
var row = [url, type, gStrings.unknown, alt, 1, elem, isBg];
gImageView.addRow(row);
// Fill in cache data asynchronously
openCacheEntry(url, function(cacheEntry) {
// The data at row[2] corresponds to the data size.
if (cacheEntry) {
row[2] = cacheEntry.dataSize;
// Invalidate the row to trigger a repaint.
gImageView.tree.invalidateRow(gImageView.data.indexOf(row));
let value = cacheEntry.dataSize;
// If value is not -1 then replace with actual value, else keep as "unknown"
if (value != -1) {
let kbSize = Number(Math.round(value / 1024 * 100) / 100);
document.l10n.formatValue("media-file-size", {"size": kbSize}).then(function(response) {
row[2] = response;
// Invalidate the row to trigger a repaint.
gImageView.tree.invalidateRow(gImageView.data.indexOf(row));
});
}
}
});
@ -621,10 +617,10 @@ function getSelectedRow(tree) {
return (rows.length == 1) ? rows[0] : -1;
}
function selectSaveFolder(aCallback) {
async function selectSaveFolder(aCallback) {
const nsIFile = Ci.nsIFile;
const nsIFilePicker = Ci.nsIFilePicker;
let titleText = gBundle.getString("mediaSelectFolder");
let titleText = await document.l10n.formatValue("media-select-folder");
let fp = Cc["@mozilla.org/filepicker;1"].
createInstance(nsIFilePicker);
let fpCallback = function fpCallback_done(aResult) {
@ -759,15 +755,16 @@ function makePreview(row) {
var cacheKey = url.replace(/#.*$/, "");
openCacheEntry(cacheKey, function(cacheEntry) {
// find out the file size
var sizeText;
if (cacheEntry) {
let imageSize = cacheEntry.dataSize;
var kbSize = Math.round(imageSize / 1024 * 100) / 100;
sizeText = gBundle.getFormattedString("generalSize",
[formatNumber(kbSize), formatNumber(imageSize)]);
} else
sizeText = gBundle.getString("mediaUnknownNotCached");
setItemValue("imagesizetext", sizeText);
document.l10n.setAttributes(document.getElementById("imagesizetext"),
"properties-general-size",
{"kb": formatNumber(kbSize), "bytes": formatNumber(imageSize)});
} else {
document.l10n.setAttributes(document.getElementById("imagesizetext"),
"media-unknown-not-cached");
}
var mimeType = item.mimeType || this.getContentTypeFromHeaders(cacheEntry);
var numFrames = item.numFrames;
@ -779,19 +776,21 @@ function makePreview(row) {
if (imageMimeType) {
imageType = imageMimeType[1].toUpperCase();
if (numFrames > 1)
imageType = gBundle.getFormattedString("mediaAnimatedImageType",
[imageType, numFrames]);
document.l10n.setAttributes(document.getElementById("imagetypetext"),
"media-animated-image-type",
{"type": imageType, "frames": numFrames});
else
imageType = gBundle.getFormattedString("mediaImageType", [imageType]);
document.l10n.setAttributes(document.getElementById("imagetypetext"),
"media-image-type",
{"type": imageType});
} else {
// the MIME type doesn't begin with image/, display the raw type
imageType = mimeType;
setItemValue("imagetypetext", mimeType);
}
} else {
// We couldn't find the type, fall back to the value in the treeview
imageType = gImageView.data[row][COL_IMAGE_TYPE];
setItemValue("imagetypetext", gImageView.data[row][COL_IMAGE_TYPE]);
}
setItemValue("imagetypetext", imageType);
var imageContainer = document.getElementById("theimagecontainer");
var oldImage = document.getElementById("thepreviewimage");
@ -847,21 +846,21 @@ function makePreview(row) {
document.getElementById("theimagecontainer").collapsed = false;
document.getElementById("brokenimagecontainer").collapsed = true;
let imageSize = "";
if (url) {
if (width != physWidth || height != physHeight) {
imageSize = gBundle.getFormattedString("mediaDimensionsScaled",
[formatNumber(physWidth),
formatNumber(physHeight),
formatNumber(width),
formatNumber(height)]);
document.l10n.setAttributes(document.getElementById("imagedimensiontext"),
"media-dimensions-scaled",
{"dimx": formatNumber(physWidth),
"dimy": formatNumber(physHeight),
"scaledx": formatNumber(width),
"scaledy": formatNumber(height)});
} else {
imageSize = gBundle.getFormattedString("mediaDimensions",
[formatNumber(width),
formatNumber(height)]);
document.l10n.setAttributes(document.getElementById("imagedimensiontext"),
"media-dimensions",
{"dimx": formatNumber(width),
"dimy": formatNumber(height)});
}
}
setItemValue("imagedimensiontext", imageSize);
}, {once: true});
newImage.setAttribute("triggeringprincipal", triggeringPrinStr);
@ -896,13 +895,12 @@ function makePreview(row) {
document.getElementById("theimagecontainer").collapsed = true;
}
let imageSize = "";
if (url && !isAudio) {
imageSize = gBundle.getFormattedString("mediaDimensions",
[formatNumber(width),
formatNumber(height)]);
document.l10n.setAttributes(document.getElementById("imagedimensiontext"),
"media-dimensions",
{"dimx": formatNumber(width),
"dimy": formatNumber(height)});
}
setItemValue("imagedimensiontext", imageSize);
}
makeBlockImage(url);
@ -926,7 +924,7 @@ function makeBlockImage(url) {
var uri = Services.io.newURI(url);
if (uri.host) {
checkbox.hidden = false;
checkbox.label = gBundle.getFormattedString("mediaBlockImage", [uri.host]);
document.l10n.setAttributes(checkbox, "media-block-image", {"website": uri.host});
var perm = permissionManager.testPermission(uri, "image");
checkbox.checked = perm == nsIPermissionManager.DENY_ACTION;
} else

Просмотреть файл

@ -7,8 +7,6 @@
<?xml-stylesheet href="chrome://browser/skin/pageInfo.css" type="text/css"?>
<!DOCTYPE window [
<!ENTITY % pageInfoDTD SYSTEM "chrome://browser/locale/pageInfo.dtd">
%pageInfoDTD;
#ifdef XP_MACOSX
#include ../browser-doctype.inc
#endif
@ -16,18 +14,22 @@
<window id="main-window"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
data-l10n-id="page-info-window"
data-l10n-attrs="style"
windowtype="Browser:page-info"
onload="onLoadPageInfo()"
onunload="onUnloadPageInfo()"
align="stretch"
screenX="10" screenY="10"
width="&pageInfoWindow.width;" height="&pageInfoWindow.height;"
persist="screenX screenY width height sizemode">
#ifdef XP_MACOSX
#include ../macWindow.inc.xul
#endif
<linkset>
<link rel="localization" href="browser/pageInfo.ftl"/>
</linkset>
<script type="application/javascript" src="chrome://global/content/globalOverlay.js"/>
<script type="application/javascript" src="chrome://global/content/contentAreaUtils.js"/>
<script type="application/javascript" src="chrome://global/content/treeUtils.js"/>
@ -37,7 +39,6 @@
<script type="application/javascript" src="chrome://browser/content/utilityOverlay.js"/>
<stringbundleset id="pageinfobundleset">
<stringbundle id="pageinfobundle" src="chrome://browser/locale/pageInfo.properties"/>
<stringbundle id="pkiBundle" src="chrome://pippki/locale/pippki.properties"/>
<stringbundle id="browserBundle" src="chrome://browser/locale/browser.properties"/>
</stringbundleset>
@ -50,32 +51,32 @@
</commandset>
<keyset id="pageInfoKeySet">
<key key="&closeWindow.key;" modifiers="accel" command="cmd_close"/>
<key data-l10n-id="close-window" modifiers="accel" command="cmd_close"/>
<key keycode="VK_ESCAPE" command="cmd_close"/>
#ifdef XP_MACOSX
<key key="." modifiers="meta" command="cmd_close"/>
#else
<key keycode="VK_F1" command="cmd_help"/>
#endif
<key key="&copy.key;" modifiers="accel" command="cmd_copy"/>
<key key="&selectall.key;" modifiers="accel" command="cmd_selectall"/>
<key key="&selectall.key;" modifiers="alt" command="cmd_selectall"/>
<key data-l10n-id="copy" modifiers="accel" command="cmd_copy"/>
<key data-l10n-id="select-all" modifiers="accel" command="cmd_selectall"/>
<key data-l10n-id="select-all" modifiers="alt" command="cmd_selectall"/>
</keyset>
<menupopup id="picontext">
<menuitem id="menu_selectall" label="&selectall.label;" command="cmd_selectall" accesskey="&selectall.accesskey;"/>
<menuitem id="menu_copy" label="&copy.label;" command="cmd_copy" accesskey="&copy.accesskey;"/>
<menuitem id="menu_selectall" data-l10n-id="menu-select-all" command="cmd_selectall"/>
<menuitem id="menu_copy" data-l10n-id="menu-copy" command="cmd_copy"/>
</menupopup>
<vbox id="topBar">
<radiogroup id="viewGroup" class="chromeclass-toolbar" orient="horizontal">
<radio id="generalTab" label="&generalTab;" accesskey="&generalTab.accesskey;"
<radio id="generalTab" data-l10n-id="general-tab"
oncommand="showTab('general');"/>
<radio id="mediaTab" label="&mediaTab;" accesskey="&mediaTab.accesskey;"
<radio id="mediaTab" data-l10n-id="media-tab"
oncommand="showTab('media');" hidden="true"/>
<radio id="permTab" label="&permTab;" accesskey="&permTab.accesskey;"
<radio id="permTab" data-l10n-id="perm-tab"
oncommand="showTab('perm');"/>
<radio id="securityTab" label="&securityTab;" accesskey="&securityTab.accesskey;"
<radio id="securityTab" data-l10n-id="security-tab"
oncommand="showTab('security');"/>
</radiogroup>
</vbox>
@ -91,12 +92,12 @@
</columns>
<rows id="generalRows">
<row id="generalTitle">
<label control="titletext" value="&generalTitle;"/>
<label control="titletext" data-l10n-id="general-title"/>
<separator/>
<textbox readonly="true" id="titletext"/>
</row>
<row id="generalURLRow">
<label control="urltext" value="&generalURL;"/>
<label control="urltext" data-l10n-id="general-url"/>
<separator/>
<textbox readonly="true" id="urltext"/>
</row>
@ -104,27 +105,27 @@
<separator class="thin"/>
</row>
<row id="generalTypeRow">
<label control="typetext" value="&generalType;"/>
<label control="typetext" data-l10n-id="general-type"/>
<separator/>
<textbox readonly="true" id="typetext"/>
</row>
<row id="generalModeRow">
<label control="modetext" value="&generalMode;"/>
<label control="modetext" data-l10n-id="general-mode"/>
<separator/>
<textbox readonly="true" crop="end" id="modetext"/>
</row>
<row id="generalEncodingRow">
<label control="encodingtext" value="&generalEncoding2;"/>
<label control="encodingtext" data-l10n-id="general-encoding"/>
<separator/>
<textbox readonly="true" id="encodingtext"/>
</row>
<row id="generalSizeRow">
<label control="sizetext" value="&generalSize;"/>
<label control="sizetext" data-l10n-id="general-size"/>
<separator/>
<textbox readonly="true" id="sizetext"/>
</row>
<row id="generalReferrerRow">
<label control="refertext" value="&generalReferrer;"/>
<label control="refertext" data-l10n-id="general-referrer"/>
<separator/>
<textbox readonly="true" id="refertext"/>
</row>
@ -132,7 +133,7 @@
<separator class="thin"/>
</row>
<row id="generalModifiedRow">
<label control="modifiedtext" value="&generalModified;"/>
<label control="modifiedtext" data-l10n-id="general-modified"/>
<separator/>
<textbox readonly="true" id="modifiedtext"/>
</row>
@ -143,19 +144,19 @@
<label control="metatree" id="metaTagsCaption" class="header"/>
<tree id="metatree" flex="1" hidecolumnpicker="true" contextmenu="picontext">
<treecols>
<treecol id="meta-name" label="&generalMetaName;"
<treecol id="meta-name" data-l10n-id="general-meta-name"
persist="width" flex="1"
onclick="gMetaView.onPageMediaSort('meta-name');"/>
<splitter class="tree-splitter"/>
<treecol id="meta-content" label="&generalMetaContent;"
<treecol id="meta-content" data-l10n-id="general-meta-content"
persist="width" flex="4"
onclick="gMetaView.onPageMediaSort('meta-content');"/>
</treecols>
<treechildren id="metatreechildren" flex="1"/>
</tree>
</tree>
</vbox>
<hbox pack="end">
<button command="cmd_help" label="&helpButton.label;" dlgtype="help"/>
<button command="cmd_help" data-l10n-id="help-button" dlgtype="help"/>
</hbox>
</vbox>
@ -165,23 +166,23 @@
ondragstart="onBeginLinkDrag(event,'image-address','image-alt')">
<treecols>
<treecol primary="true" persist="width" flex="10"
width="10" id="image-address" label="&mediaAddress;"
width="10" id="image-address" data-l10n-id="media-address"
onclick="gImageView.onPageMediaSort('image-address');"/>
<splitter class="tree-splitter"/>
<treecol persist="hidden width" flex="2"
width="2" id="image-type" label="&mediaType;"
width="2" id="image-type" data-l10n-id="media-type"
onclick="gImageView.onPageMediaSort('image-type');"/>
<splitter class="tree-splitter"/>
<treecol hidden="true" persist="hidden width" flex="2"
width="2" id="image-size" label="&mediaSize;" value="size"
width="2" id="image-size" data-l10n-id="media-size" value="size"
onclick="gImageView.onPageMediaSort('image-size');"/>
<splitter class="tree-splitter"/>
<treecol hidden="true" persist="hidden width" flex="4"
width="4" id="image-alt" label="&mediaAltHeader;"
width="4" id="image-alt" data-l10n-id="media-alt-header"
onclick="gImageView.onPageMediaSort('image-alt');"/>
<splitter class="tree-splitter"/>
<treecol hidden="true" persist="hidden width" flex="1"
width="1" id="image-count" label="&mediaCount;"
width="1" id="image-count" data-l10n-id="media-count"
onclick="gImageView.onPageMediaSort('image-count');"/>
</treecols>
<treechildren id="imagetreechildren" flex="1"/>
@ -196,32 +197,32 @@
</columns>
<rows id="mediaRows">
<row id="mediaLocationRow">
<label control="imageurltext" value="&mediaLocation;"/>
<label control="imageurltext" data-l10n-id="media-location"/>
<separator/>
<textbox readonly="true" id="imageurltext"/>
</row>
<row id="mediaTypeRow">
<label control="imagetypetext" value="&generalType;"/>
<label control="imagetypetext" data-l10n-id="general-type"/>
<separator/>
<textbox readonly="true" id="imagetypetext"/>
<textbox id="imagetypetext"/>
</row>
<row id="mediaSizeRow">
<label control="imagesizetext" value="&generalSize;"/>
<label control="imagesizetext" data-l10n-id="general-size"/>
<separator/>
<textbox readonly="true" id="imagesizetext"/>
</row>
<row id="mediaDimensionRow">
<label control="imagedimensiontext" value="&mediaDimension;"/>
<label control="imagedimensiontext" data-l10n-id="media-dimension"/>
<separator/>
<textbox readonly="true" id="imagedimensiontext"/>
</row>
<row id="mediaTextRow">
<label control="imagetext" value="&mediaText;"/>
<label control="imagetext" data-l10n-id="media-text"/>
<separator/>
<textbox readonly="true" id="imagetext"/>
</row>
<row id="mediaLongdescRow">
<label control="imagelongdesctext" value="&mediaLongdesc;"/>
<label control="imagelongdesctext" data-l10n-id="media-long-desc"/>
<separator/>
<textbox readonly="true" id="imagelongdesctext"/>
</row>
@ -230,14 +231,14 @@
<hbox id="imageSaveBox" align="end">
<vbox id="blockImageBox">
<checkbox id="blockImage" hidden="true" oncommand="onBlockImage()"
accesskey="&mediaBlockImage.accesskey;"/>
<label control="thepreviewimage" value="&mediaPreview;" class="header"/>
data-l10n-id="media-block-image"/>
<label control="thepreviewimage" data-l10n-id="media-preview" class="header"/>
</vbox>
<spacer id="imageSaveBoxSpacer" flex="1"/>
<button label="&selectall.label;" accesskey="&selectall.accesskey;"
<button data-l10n-id="menu-select-all"
id="selectallbutton"
oncommand="doSelectAllMedia();"/>
<button label="&mediaSaveAs;" accesskey="&mediaSaveAs.accesskey;"
<button data-l10n-id="media-save-as"
icon="save" id="imagesaveasbutton"
oncommand="saveMedia();"/>
</hbox>
@ -252,26 +253,26 @@
</vbox>
<hbox id="mediaSaveBox" collapsed="true">
<spacer id="mediaSaveBoxSpacer" flex="1"/>
<button label="&mediaSaveAs;" accesskey="&mediaSaveAs2.accesskey;"
<button data-l10n-id="media-save-image-as"
icon="save" id="mediasaveasbutton"
oncommand="saveMedia();"/>
</hbox>
<hbox pack="end">
<button command="cmd_help" label="&helpButton.label;" dlgtype="help"/>
<button command="cmd_help" data-l10n-id="help-button" dlgtype="help"/>
</hbox>
</vbox>
<!-- Permissions -->
<vbox id="permPanel">
<hbox id="permHostBox">
<label value="&permissionsFor;" control="hostText" />
<label data-l10n-id="permissions-for" control="hostText" />
<textbox id="hostText" class="header" readonly="true"
crop="end" flex="1"/>
</hbox>
<vbox id="permList" flex="1"/>
<hbox pack="end">
<button command="cmd_help" label="&helpButton.label;" dlgtype="help"/>
<button command="cmd_help" data-l10n-id="help-button" dlgtype="help"/>
</hbox>
</vbox>
@ -279,7 +280,7 @@
<vbox id="securityPanel">
<!-- Identity Section -->
<groupbox>
<label class="header" value="&securityView.identity.header;"/>
<label class="header" data-l10n-id="security-view-identity"/>
<grid>
<columns>
<column/>
@ -288,7 +289,7 @@
<rows>
<!-- Domain -->
<row>
<label value="&securityView.identity.domain;"
<label data-l10n-id="security-view-identity-domain"
control="security-identity-domain-value"/>
<textbox id="security-identity-domain-value" readonly="true"/>
</row>
@ -296,25 +297,24 @@
<row>
<label id="security-identity-owner-label"
class="fieldLabel"
value="&securityView.identity.owner;"
data-l10n-id="security-view-identity-owner"
control="security-identity-owner-value"/>
<textbox id="security-identity-owner-value" readonly="true"/>
</row>
<!-- Verifier -->
<row>
<label value="&securityView.identity.verifier;"
<label data-l10n-id="security-view-identity-verifier"
control="security-identity-verifier-value"/>
<hbox align="center">
<textbox id="security-identity-verifier-value" readonly="true"
flex="1"/>
<button id="security-view-cert" label="&securityView.certView;"
accesskey="&securityView.accesskey;"
<button id="security-view-cert" data-l10n-id="security-view"
oncommand="security.viewCert();"/>
</hbox>
</row>
<!-- Certificate Validity -->
<row id="security-identity-validity-row">
<label value="&securityView.identity.validity;"
<label data-l10n-id="security-view-identity-validity"
control="security-identity-validity-value"/>
<textbox id="security-identity-validity-value" readonly="true"/>
</row>
@ -324,7 +324,7 @@
<!-- Privacy & History section -->
<groupbox>
<label class="header" value="&securityView.privacy.header;"/>
<label class="header" data-l10n-id="security-view-privacy"/>
<grid>
<columns>
<column flex="1"/>
@ -333,33 +333,31 @@
<rows>
<!-- History -->
<row>
<label control="security-privacy-history-value">&securityView.privacy.history;</label>
<label control="security-privacy-history-value" data-l10n-id="security-view-privacy-history-value"/>
<label id="security-privacy-history-value"
value="&securityView.unknown;"/>
data-l10n-id="security-view-unknown"/>
</row>
<!-- Site Data & Cookies -->
<row>
<label control="security-privacy-sitedata-value">&securityView.privacy.siteData;</label>
<row id="security-privacy-sitedata-row">
<label control="security-privacy-sitedata-value" data-l10n-id="security-view-privacy-sitedata-value"/>
<hbox id="security-privacy-sitedata-box" align="center">
<label id="security-privacy-sitedata-value"
flex="1">&securityView.unknown;</label>
<label id="security-privacy-sitedata-value" data-l10n-id="security-view-unknown"
flex="1"/>
<button id="security-clear-sitedata"
disabled="true"
label="&securityView.privacy.clearSiteData;"
accesskey="&securityView.privacy.clearSiteData.accessKey;"
data-l10n-id="security-view-privacy-clearsitedata"
oncommand="security.clearSiteData();"/>
</hbox>
</row>
<!-- Passwords -->
<row>
<label control="security-privacy-passwords-value">&securityView.privacy.passwords;</label>
<label control="security-privacy-passwords-value" data-l10n-id="security-view-privacy-passwords-value"/>
<hbox id="security-privacy-passwords-box" align="center">
<label id="security-privacy-passwords-value"
value="&securityView.unknown;"
data-l10n-id="security-view-unknown"
flex="1"/>
<button id="security-view-password"
label="&securityView.privacy.viewPasswords;"
accesskey="&securityView.privacy.viewPasswords.accessKey;"
data-l10n-id="security-view-privacy-viewpasswords"
oncommand="security.viewPasswords();"/>
</hbox>
</row>
@ -369,7 +367,7 @@
<!-- Technical Details section -->
<groupbox>
<label class="header" value="&securityView.technical.header;"/>
<label class="header" data-l10n-id="security-view-technical"/>
<label id="security-technical-shortform"/>
<description id="security-technical-longform1"/>
<description id="security-technical-longform2"/>
@ -377,7 +375,7 @@
</groupbox>
<hbox pack="end">
<button command="cmd_help" label="&helpButton.label;" dlgtype="help"/>
<button command="cmd_help" data-l10n-id="help-button" dlgtype="help"/>
</hbox>
</vbox>
<!-- Others added by overlay -->

Просмотреть файл

@ -138,7 +138,7 @@ function createRow(aPartId) {
let checkbox = document.createXULElement("checkbox");
checkbox.setAttribute("id", aPartId + "Def");
checkbox.setAttribute("oncommand", "onCheckboxClick('" + aPartId + "');");
checkbox.setAttribute("label", gBundle.getString("permissions.useDefault"));
document.l10n.setAttributes(checkbox, "permissions-use-default");
controls.appendChild(checkbox);
let spacer = document.createXULElement("spacer");

Просмотреть файл

@ -138,34 +138,30 @@ var security = {
this.siteData = await SiteDataManager.getSites(
SiteDataManager.getBaseDomainFromHost(this.uri.host));
let pageInfoBundle = document.getElementById("pageinfobundle");
let clearSiteDataButton = document.getElementById("security-clear-sitedata");
let siteDataLabel = document.getElementById("security-privacy-sitedata-value");
if (!this.siteData.length) {
let noStr = pageInfoBundle.getString("securitySiteDataNo");
siteDataLabel.textContent = noStr;
document.l10n.setAttributes(siteDataLabel, "security-site-data-no");
clearSiteDataButton.setAttribute("disabled", "true");
return;
}
let usageText;
let usage = this.siteData.reduce((acc, site) => acc + site.usage, 0);
if (usage > 0) {
let size = DownloadUtils.convertByteUnits(usage);
let hasCookies = this.siteData.some(site => site.cookies.length > 0);
if (hasCookies) {
usageText = pageInfoBundle.getFormattedString("securitySiteDataCookies", size);
document.l10n.setAttributes(siteDataLabel, "security-site-data-cookies", {"value": size[0], "unit": size[1]});
} else {
usageText = pageInfoBundle.getFormattedString("securitySiteDataOnly", size);
document.l10n.setAttributes(siteDataLabel, "security-site-data-only", {"value": size[0], "unit": size[1]});
}
} else {
// We're storing cookies, else the list would have been empty.
usageText = pageInfoBundle.getString("securitySiteDataCookiesOnly");
document.l10n.setAttributes(siteDataLabel, "security-site-data-cookies-only");
}
clearSiteDataButton.removeAttribute("disabled");
siteDataLabel.textContent = usageText;
},
/**
@ -200,12 +196,10 @@ function securityOnLoad(uri, windowInfo) {
}
document.getElementById("securityTab").hidden = false;
const pageInfoBundle = document.getElementById("pageinfobundle");
/* Set Identity section text */
setText("security-identity-domain-value", info.hostName);
var owner, verifier, validity;
var validity;
if (info.cert && !info.isBroken) {
validity = info.cert.validity.notAfterLocalDay;
@ -213,25 +207,26 @@ function securityOnLoad(uri, windowInfo) {
// so we'll employ fallbacks where appropriate. The EV spec states that Org
// fields must be specified for subject and issuer so that case is simpler.
if (info.isEV) {
owner = info.cert.organization;
verifier = info.cAName;
setText("security-identity-owner-value", info.cert.organization);
setText("security-identity-verifier-value", info.cAName);
} else {
// Technically, a non-EV cert might specify an owner in the O field or not,
// depending on the CA's issuing policies. However we don't have any programmatic
// way to tell those apart, and no policy way to establish which organization
// vetting standards are good enough (that's what EV is for) so we default to
// treating these certs as domain-validated only.
owner = pageInfoBundle.getString("securityNoOwner");
verifier = info.cAName || info.cert.issuerCommonName || info.cert.issuerName;
document.l10n.setAttributes(document.getElementById("security-identity-owner-value"),
"security-no-owner");
setText("security-identity-verifier-value", info.cAName || info.cert.issuerCommonName || info.cert.issuerName);
}
} else {
// We don't have valid identity credentials.
owner = pageInfoBundle.getString("securityNoOwner");
verifier = pageInfoBundle.getString("notset");
document.l10n.setAttributes(document.getElementById("security-identity-owner-value"),
"security-no-owner");
document.l10n.setAttributes(document.getElementById("security-identity-verifier-value"),
"not-set-verified-by");
}
setText("security-identity-owner-value", owner);
setText("security-identity-verifier-value", verifier);
if (validity) {
setText("security-identity-validity-value", validity);
} else {
@ -247,8 +242,6 @@ function securityOnLoad(uri, windowInfo) {
viewCert.collapsed = true;
/* Set Privacy & History section text */
var yesStr = pageInfoBundle.getString("yes");
var noStr = pageInfoBundle.getString("no");
// Only show quota usage data for websites, not internal sites.
if (uri.scheme == "http" || uri.scheme == "https") {
@ -257,16 +250,16 @@ function securityOnLoad(uri, windowInfo) {
document.getElementById("security-privacy-sitedata-row").hidden = true;
}
setText("security-privacy-passwords-value",
realmHasPasswords(uri) ? yesStr : noStr);
if (realmHasPasswords(uri)) {
document.l10n.setAttributes(document.getElementById("security-privacy-passwords-value"),
"saved-passwords-yes");
} else {
document.l10n.setAttributes(document.getElementById("security-privacy-passwords-value"),
"saved-passwords-no");
}
var visitCount = previousVisitCount(info.hostName);
let visitCountStr = visitCount > 0
? PluralForm.get(visitCount, pageInfoBundle.getString("securityVisitsNumber"))
.replace("#1", visitCount.toLocaleString())
: pageInfoBundle.getString("securityNoVisits");
setText("security-privacy-history-value", visitCountStr);
document.l10n.setAttributes(document.getElementById("security-privacy-history-value"),
"security-visits-number", {"visits": previousVisitCount(info.hostName)});
/* Set the Technical Detail section messages */
const pkiBundle = document.getElementById("pkiBundle");

Просмотреть файл

@ -131,6 +131,8 @@ var whitelist = [
{file: "resource://app/modules/translation/YandexTranslator.jsm"},
// Starting from here, files in the whitelist are bugs that need fixing.
// Bug 1529127 (only string left referenced in widget/windows/nsDataObj.cpp)
{file: "chrome://browser/locale/pageInfo.properties"},
// Bug 1339424 (wontfix?)
{file: "chrome://browser/locale/taskbar.properties",
platforms: ["linux", "macosx"]},

Просмотреть файл

@ -0,0 +1,256 @@
# 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/. --
page-info-window =
.style = width: 600px; min-height: 550px;
copy =
.key = C
menu-copy =
.label = Copy
.accesskey = C
select-all =
.key = A
menu-select-all =
.label = Select All
.accesskey = A
close-window =
.key = A
general-tab =
.label = General
.accesskey = G
general-title =
.value = Title:
general-url =
.value = Address:
general-type =
.value = Type:
general-mode =
.value = Render Mode:
general-size =
.value = Size:
general-referrer =
.value = Referring URL:
general-modified =
.value = Modified:
general-encoding =
.value = Text Encoding:
general-meta-name =
.label = Name
general-meta-content =
.label = Content
media-tab =
.label = Media
.accesskey = M
media-location =
.value = Location:
media-text =
.value = Associated Text:
media-alt-header =
.label = Alternate Text
media-address =
.label = Address
media-type =
.label = Type
media-size =
.label = Size
media-count =
.label = Count
media-dimension =
.value = Dimensions:
media-long-desc =
.value = Long Description:
media-save-as =
.label = Save As…
.accesskey = A
media-save-image-as =
.label = Save As…
.accesskey = e
media-preview =
.value = Media Preview:
perm-tab =
.label = Permissions
.accesskey = P
permissions-for =
.value = Permissions for:
security-tab =
.label = Security
.accesskey = S
security-view =
.label = View Certificate
.accesskey = V
security-view-unknown = Unknown
.value = Unknown
security-view-identity =
.value = Website Identity
security-view-identity-owner =
.value = Owner:
security-view-identity-domain =
.value = Website:
security-view-identity-verifier =
.value = Verified by:
security-view-identity-validity =
.value = Expires on:
security-view-privacy =
.value = Privacy & History
security-view-privacy-history-value = Have I visited this website prior to today?
security-view-privacy-sitedata-value = Is this website storing information on my computer?
security-view-privacy-clearsitedata =
.label = Clear Cookies and Site Data
.accesskey = C
security-view-privacy-passwords-value = Have I saved any passwords for this website?
security-view-privacy-viewpasswords =
.label = View Saved Passwords
.accesskey = w
security-view-technical =
.value = Technical Details
help-button =
.label = Help
security-site-data-cookies-only = Yes, cookies
security-site-data-no = No
## These strings are used to tell the user if the website is storing cookies
## and data on the users computer in the security tab of pageInfo
## Variables:
## $value (number) - Amount of data being stored
## $unit (string) - The unit of data being stored (Usually KB)
security-site-data-cookies = Yes, cookies and { $value } { $unit } of site data
security-site-data-only = Yes, { $value } { $unit } of site data
security-site-data-cookies-only = Yes, cookies
security-site-data-no = No
image-size-unknown = Unknown
not-set-verified-by = Not specified
not-set-alternative-text = Not specified
not-set-date = Not specified
media-img = Image
media-bg-img = Background
media-border-img = Border
media-list-img = Bullet
media-cursor = Cursor
media-object = Object
media-embed = Embed
media-link = Icon
media-input = Input
media-video = Video
media-audio = Audio
saved-passwords-yes = Yes
saved-passwords-no = No
no-page-title =
.value = Untitled Page:
general-quirks-mode =
.value = Quirks mode
general-strict-mode =
.value = Standards compliance mode
security-no-owner = This website does not supply ownership information.
media-select-folder = Select a Folder to Save the Images
media-unknown-not-cached =
.value = Unknown (not cached)
permissions-use-default =
.label = Use Default
security-no-visits = No
# This string is used to display the number of meta tags
# in the General Tab
# Variables:
# $tags (number) - The number of meta tags
general-meta-tags =
.value =
{ $tags ->
[one] Meta (1 tag)
*[other] Meta ({ $tags } tags)
}
# This string is used to display the number of times
# the user has visited the website prior
# Variables:
# $visits (number) - The number of previous visits
security-visits-number =
{ $visits ->
[0] No
[one] Yes, once
*[other] Yes, { $visits } times
}
# This string is used to display the size of a media file
# Variables:
# $kb (number) - The size of an image in Kilobytes
# $bytes (number) - The size of an image in Bytes
properties-general-size =
.value = { $bytes ->
[one] { $kb } KB ({ $bytes } byte)
*[other] { $kb } KB ({ $bytes } bytes)
}
# This string is used to display the type and number
# of frames of a animated image
# Variables:
# $type (string) - The type of a animated image
# $frames (number) - The number of frames in an animated image
media-animated-image-type =
.value = { $frames ->
[one] { $type } Image (animated, { $frames } frame)
*[other] { $type } Image (animated, { $frames } frames)
}
# This string is used to display the type of
# an image
# Variables:
# $type (string) - The type of an image
media-image-type =
.value = { $type } Image
# This string is used to display the size of a scaled image
# in both scaled and unscaled pixels
# Variables:
# $dimx (number) - The horizontal size of an image
# $dimy (number) - The vertical size of an image
# $scaledx (number) - The scaled horizontal size of an image
# $scaledy (number) - The scaled vertical size of an image
media-dimensions-scaled =
.value = { $dimx }px × { $dimy }px (scaled to { $scaledx }px × { $scaledy }px)
# This string is used to display the size of an image in pixels
# Variables:
# $dimx (number) - The horizontal size of an image
# $dimy (number) - The vertical size of an image
media-dimensions =
.value = { $dimx }px × { $dimy }px
# This string is used to display the size of a media
# file in kilobytes
# Variables:
# $size (number) - The size of the media file in kilobytes
media-file-size = { $size } KB
# This string is used to display the website name next to the
# "Block Images" checkbox in the media tab
# Variables:
# $website (string) - The website name
media-block-image =
.label = Block Images from { $website }
.accesskey = B
# This string is used to display the URL of the website on top of the
# pageInfo dialog box
# Variables:
# $website (string) - The url of the website pageInfo is getting info for
page-info-page =
.title = Page Info - { $website }
page-info-frame =
.title = Frame Info - { $website }

Просмотреть файл

@ -1,75 +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/. -->
<!ENTITY pageInfoWindow.width "600">
<!ENTITY pageInfoWindow.height "550">
<!ENTITY copy.key "C">
<!ENTITY copy.label "Copy">
<!ENTITY copy.accesskey "C">
<!ENTITY selectall.key "A">
<!ENTITY selectall.label "Select All">
<!ENTITY selectall.accesskey "A">
<!ENTITY closeWindow.key "w">
<!ENTITY generalTab "General">
<!ENTITY generalTab.accesskey "G">
<!ENTITY generalTitle "Title:">
<!ENTITY generalURL "Address:">
<!ENTITY generalType "Type:">
<!ENTITY generalMode "Render Mode:">
<!ENTITY generalSize "Size:">
<!ENTITY generalReferrer "Referring URL:">
<!ENTITY generalSource "Cache Source:">
<!ENTITY generalModified "Modified:">
<!ENTITY generalEncoding2 "Text Encoding:">
<!ENTITY generalMetaName "Name">
<!ENTITY generalMetaContent "Content">
<!ENTITY mediaTab "Media">
<!ENTITY mediaTab.accesskey "M">
<!ENTITY mediaLocation "Location:">
<!ENTITY mediaText "Associated Text:">
<!ENTITY mediaAltHeader "Alternate Text">
<!ENTITY mediaAddress "Address">
<!ENTITY mediaType "Type">
<!ENTITY mediaSize "Size">
<!ENTITY mediaCount "Count">
<!ENTITY mediaDimension "Dimensions:">
<!ENTITY mediaLongdesc "Long Description:">
<!ENTITY mediaBlockImage.accesskey "B">
<!ENTITY mediaSaveAs "Save As…">
<!ENTITY mediaSaveAs.accesskey "A">
<!ENTITY mediaSaveAs2.accesskey "e">
<!ENTITY mediaPreview "Media Preview:">
<!ENTITY permTab "Permissions">
<!ENTITY permTab.accesskey "P">
<!ENTITY permissionsFor "Permissions for:">
<!ENTITY securityTab "Security">
<!ENTITY securityTab.accesskey "S">
<!ENTITY securityView.certView "View Certificate">
<!ENTITY securityView.accesskey "V">
<!ENTITY securityView.unknown "Unknown">
<!ENTITY securityView.identity.header "Website Identity">
<!ENTITY securityView.identity.owner "Owner:">
<!ENTITY securityView.identity.domain "Website:">
<!ENTITY securityView.identity.verifier "Verified by:">
<!ENTITY securityView.identity.validity "Expires on:">
<!ENTITY securityView.privacy.header "Privacy &amp; History">
<!ENTITY securityView.privacy.history "Have I visited this website prior to today?">
<!ENTITY securityView.privacy.siteData "Is this website storing information on my computer?">
<!ENTITY securityView.privacy.clearSiteData "Clear Cookies and Site Data">
<!ENTITY securityView.privacy.clearSiteData.accessKey "C">
<!ENTITY securityView.privacy.passwords "Have I saved any passwords for this website?">
<!ENTITY securityView.privacy.viewPasswords "View Saved Passwords">
<!ENTITY securityView.privacy.viewPasswords.accessKey "w">
<!ENTITY securityView.technical.header "Technical Details">
<!ENTITY helpButton.label "Help">

Просмотреть файл

@ -2,61 +2,4 @@
# 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/.
pageInfo.page.title=Page Info - %S
pageInfo.frame.title=Frame Info - %S
noPageTitle=Untitled Page:
unknown=Unknown
notset=Not specified
yes=Yes
no=No
mediaImg=Image
mediaVideo=Video
mediaAudio=Audio
mediaBGImg=Background
mediaBorderImg=Border
mediaListImg=Bullet
mediaCursor=Cursor
mediaObject=Object
mediaEmbed=Embed
mediaLink=Icon
mediaInput=Input
mediaFileSize=%S KB
mediaSize=%Spx \u00D7 %Spx
mediaSelectFolder=Select a Folder to Save the Images
mediaBlockImage=Block Images from %S
mediaUnknownNotCached=Unknown (not cached)
mediaImageType=%S Image
mediaAnimatedImageType=%S Image (animated, %S frames)
mediaDimensions=%Spx \u00D7 %Spx
mediaDimensionsScaled=%Spx \u00D7 %Spx (scaled to %Spx \u00D7 %Spx)
generalQuirksMode=Quirks mode
generalStrictMode=Standards compliance mode
generalSize=%S KB (%S bytes)
generalMetaTag=Meta (1 tag)
generalMetaTags=Meta (%S tags)
securityNoOwner=This website does not supply ownership information.
# LOCALIZATION NOTE (securityVisitsNumber):
# Semi-colon list of plural forms.
# See: https://developer.mozilla.org/en/docs/Localization_and_Plurals
# #1 is the number of visits and can be used in all plural forms as needed, e.g.
# for '1': 'Yes, #1 time'
securityVisitsNumber=Yes, once;Yes, #1 times
securityNoVisits=No
# LOCALIZATION NOTE(securitySiteDataCookies,securitySiteDataOnly): This is for site data disk usage.
# It confirms that a website is indeed using this much space.
# e.g. Is this website storing site data? "Yes, 50.23 MB"
# %1$S = size (in bytes or megabytes, ...)
# %2$S = unit of measure (bytes, KB, MB, ...)
securitySiteDataCookies=Yes, cookies and %1$S %2$S of site data
securitySiteDataOnly=Yes, %1$S %2$S of site data
# LOCALIZATION NOTE(securitySiteDataCookiesOnly,securitySiteDataNo):
# This is for site data and cookies usage. It answers the question "Is this website storing cookies and/or site data?"
securitySiteDataCookiesOnly=Yes, cookies
securitySiteDataNo=No
permissions.useDefault=Use Default

Просмотреть файл

@ -22,7 +22,6 @@
locale/browser/customizableui/customizableWidgets.properties (%chrome/browser/customizableui/customizableWidgets.properties)
locale/browser/lightweightThemes.properties (%chrome/browser/lightweightThemes.properties)
locale/browser/uiDensity.properties (%chrome/browser/uiDensity.properties)
locale/browser/pageInfo.dtd (%chrome/browser/pageInfo.dtd)
locale/browser/pageInfo.properties (%chrome/browser/pageInfo.properties)
locale/browser/pocket.properties (%chrome/browser/pocket.properties)
locale/browser/search.properties (%chrome/browser/search.properties)

Просмотреть файл

@ -65,7 +65,7 @@ const LOCALIZABLE_ATTRIBUTES = {
description: ["value"],
key: ["key", "keycode"],
label: ["value"],
textbox: ["placeholder"],
textbox: ["placeholder", "value"],
},
};

Просмотреть файл

@ -0,0 +1,327 @@
# coding=utf8
# Any copyright is dedicated to the Public Domain.
# http://creativecommons.org/publicdomain/zero/1.0/
from __future__ import absolute_import
import fluent.syntax.ast as FTL
from fluent.migrate.helpers import transforms_from
from fluent.migrate.helpers import VARIABLE_REFERENCE, TERM_REFERENCE
from fluent.migrate import REPLACE, COPY, CONCAT, PLURALS, REPLACE_IN_TEXT
def migrate(ctx):
"""Bug 1517493 - Move strings from pageInfo.dtd and subsection of strings from pageInfo.properties to Fluent, part {index}"""
ctx.add_transforms(
"browser/browser/pageInfo.ftl",
"browser/browser/pageInfo.ftl",
[
FTL.Message(
id=FTL.Identifier("security-site-data-cookies"),
value=REPLACE(
"browser/chrome/browser/pageInfo.properties",
"securitySiteDataCookies",
{
"%1$S": VARIABLE_REFERENCE("value"),
"%2$S": VARIABLE_REFERENCE("unit")
},
normalize_printf=True
)
),
FTL.Message(
id=FTL.Identifier("security-site-data-only"),
value=REPLACE(
"browser/chrome/browser/pageInfo.properties",
"securitySiteDataOnly",
{
"%1$S": VARIABLE_REFERENCE("value"),
"%2$S": VARIABLE_REFERENCE("unit")
},
normalize_printf=True
)
),
FTL.Message(
id=FTL.Identifier("page-info-window"),
attributes=[
FTL.Attribute(
FTL.Identifier("style"),
CONCAT(
FTL.TextElement("width: "),
COPY(
"browser/chrome/browser/pageInfo.dtd",
"pageInfoWindow.width"
),
FTL.TextElement("px; min-height: "),
COPY(
"browser/chrome/browser/pageInfo.dtd",
"pageInfoWindow.height"
),
FTL.TextElement("px;")
)
)
]
),
FTL.Message(
id=FTL.Identifier("media-image-type"),
attributes=[
FTL.Attribute(
FTL.Identifier("value"),
REPLACE(
"browser/chrome/browser/pageInfo.properties",
"mediaImageType",
{
"%1$S": VARIABLE_REFERENCE("type"),
},
normalize_printf=True
)
)
]
),
FTL.Message(
id=FTL.Identifier("media-dimensions-scaled"),
attributes=[
FTL.Attribute(
FTL.Identifier("value"),
REPLACE(
"browser/chrome/browser/pageInfo.properties",
"mediaDimensionsScaled",
{
"%1$S": VARIABLE_REFERENCE("dimx"),
"%2$S": VARIABLE_REFERENCE("dimy"),
"%3$S": VARIABLE_REFERENCE("scaledx"),
"%4$S": VARIABLE_REFERENCE("scaledy"),
},
normalize_printf=True
)
)
]
),
FTL.Message(
id=FTL.Identifier("media-dimensions"),
attributes=[
FTL.Attribute(
FTL.Identifier("value"),
REPLACE(
"browser/chrome/browser/pageInfo.properties",
"mediaDimensions",
{
"%1$S": VARIABLE_REFERENCE("dimx"),
"%2$S": VARIABLE_REFERENCE("dimy"),
},
normalize_printf=True
)
)
]
),
FTL.Message(
id=FTL.Identifier("media-file-size"),
value=REPLACE(
"browser/chrome/browser/pageInfo.properties",
"mediaFileSize",
{
"%1$S": VARIABLE_REFERENCE("size"),
},
normalize_printf=True
)
),
FTL.Message(
id=FTL.Identifier("media-block-image"),
attributes=[
FTL.Attribute(
FTL.Identifier("label"),
REPLACE(
"browser/chrome/browser/pageInfo.properties",
"mediaBlockImage",
{
"%1$S": VARIABLE_REFERENCE("website")
},
normalize_printf=True
)
),
FTL.Attribute(
FTL.Identifier("accesskey"),
COPY(
"browser/chrome/browser/pageInfo.dtd",
"mediaBlockImage.accesskey"
)
)
]
),
FTL.Message(
id=FTL.Identifier("page-info-page"),
attributes=[
FTL.Attribute(
FTL.Identifier("title"),
REPLACE(
"browser/chrome/browser/pageInfo.properties",
"pageInfo.page.title",
{
"%1$S": VARIABLE_REFERENCE("website"),
},
normalize_printf=True
)
)
]
),
FTL.Message(
id=FTL.Identifier("page-info-frame"),
attributes=[
FTL.Attribute(
FTL.Identifier("title"),
REPLACE(
"browser/chrome/browser/pageInfo.properties",
"pageInfo.frame.title",
{
"%1$S": VARIABLE_REFERENCE("website"),
},
normalize_printf=True
)
)
]
)
]
)
ctx.add_transforms(
"browser/browser/pageInfo.ftl",
"browser/browser/pageInfo.ftl",
transforms_from(
"""
security-site-data-cookies-only = { COPY("browser/chrome/browser/pageInfo.properties","securitySiteDataCookiesOnly") }
security-site-data-no = { COPY("browser/chrome/browser/pageInfo.properties","securitySiteDataNo") }
image-size-unknown = { COPY("browser/chrome/browser/pageInfo.properties","unknown") }
copy =
.key = { COPY("browser/chrome/browser/pageInfo.dtd","copy.key") }
menu-copy =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","copy.label") }
.accesskey = { COPY("browser/chrome/browser/pageInfo.dtd","copy.accesskey") }
select-all =
.key = { COPY("browser/chrome/browser/pageInfo.dtd","selectall.key") }
menu-select-all =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","selectall.label") }
.accesskey = { COPY("browser/chrome/browser/pageInfo.dtd","selectall.accesskey") }
close-window =
.key = { COPY("browser/chrome/browser/pageInfo.dtd","selectall.key") }
general-tab =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","generalTab") }
.accesskey = { COPY("browser/chrome/browser/pageInfo.dtd","generalTab.accesskey") }
general-title =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","generalTitle") }
general-url =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","generalURL") }
general-type =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","generalType") }
general-mode =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","generalMode") }
general-size =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","generalSize") }
general-referrer =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","generalReferrer") }
general-modified =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","generalModified") }
general-encoding =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","generalEncoding2") }
general-meta-name =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","generalMetaName") }
general-meta-content =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","generalMetaContent") }
media-tab =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","mediaTab") }
.accesskey = { COPY("browser/chrome/browser/pageInfo.dtd","mediaTab.accesskey") }
media-location =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","mediaLocation") }
media-text =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","mediaText") }
media-alt-header =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","mediaAltHeader") }
media-address =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","mediaAddress") }
media-type =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","mediaType") }
media-size =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","mediaSize") }
media-count =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","mediaCount") }
media-dimension =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","mediaDimension") }
media-long-desc =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","mediaLongdesc") }
media-save-as =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","mediaSaveAs") }
.accesskey = { COPY("browser/chrome/browser/pageInfo.dtd","mediaSaveAs.accesskey") }
media-save-image-as =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","mediaSaveAs") }
.accesskey = { COPY("browser/chrome/browser/pageInfo.dtd","mediaSaveAs2.accesskey") }
media-preview =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","mediaPreview") }
perm-tab =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","permTab") }
.accesskey = { COPY("browser/chrome/browser/pageInfo.dtd","permTab.accesskey") }
permissions-for =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","permissionsFor") }
security-tab =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","securityTab") }
.accesskey = { COPY("browser/chrome/browser/pageInfo.dtd","securityTab.accesskey") }
security-view =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.certView") }
.accesskey = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.accesskey") }
security-view-unknown = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.unknown") }
.value = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.unknown") }
security-view-identity =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.identity.header") }
security-view-identity-owner =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.identity.owner") }
security-view-identity-domain =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.identity.domain") }
security-view-identity-verifier =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.identity.verifier") }
security-view-identity-validity =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.identity.validity") }
security-view-privacy =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.privacy.header") }
security-view-privacy-history-value = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.privacy.history") }
security-view-privacy-sitedata-value = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.privacy.siteData") }
security-view-privacy-clearsitedata =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.privacy.clearSiteData") }
.accesskey = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.privacy.clearSiteData.accessKey") }
security-view-privacy-passwords-value = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.privacy.passwords") }
security-view-privacy-viewpasswords =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.privacy.viewPasswords") }
.accesskey = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.privacy.viewPasswords.accessKey") }
security-view-technical =
.value = { COPY("browser/chrome/browser/pageInfo.dtd","securityView.technical.header") }
help-button =
.label = { COPY("browser/chrome/browser/pageInfo.dtd","helpButton.label") }
unknown = { COPY("browser/chrome/browser/pageInfo.properties","unknown") }
not-set-verified-by = { COPY("browser/chrome/browser/pageInfo.properties","notset") }
not-set-alternative-text = { COPY("browser/chrome/browser/pageInfo.properties","notset") }
not-set-date = { COPY("browser/chrome/browser/pageInfo.properties","notset") }
media-img = { COPY("browser/chrome/browser/pageInfo.properties","mediaImg") }
media-bg-img = { COPY("browser/chrome/browser/pageInfo.properties","mediaBGImg") }
media-border-img = { COPY("browser/chrome/browser/pageInfo.properties","mediaBorderImg") }
media-list-img = { COPY("browser/chrome/browser/pageInfo.properties","mediaListImg") }
media-cursor = { COPY("browser/chrome/browser/pageInfo.properties","mediaCursor") }
media-object = { COPY("browser/chrome/browser/pageInfo.properties","mediaObject") }
media-embed = { COPY("browser/chrome/browser/pageInfo.properties","mediaEmbed") }
media-link = { COPY("browser/chrome/browser/pageInfo.properties","mediaLink") }
media-input = { COPY("browser/chrome/browser/pageInfo.properties","mediaInput") }
media-video = { COPY("browser/chrome/browser/pageInfo.properties","mediaVideo") }
media-audio = { COPY("browser/chrome/browser/pageInfo.properties","mediaAudio") }
saved-passwords-yes = { COPY("browser/chrome/browser/pageInfo.properties","yes") }
saved-passwords-no = { COPY("browser/chrome/browser/pageInfo.properties","no") }
no-page-title =
.value = { COPY("browser/chrome/browser/pageInfo.properties","noPageTitle") }
general-quirks-mode =
.value = { COPY("browser/chrome/browser/pageInfo.properties","generalQuirksMode") }
general-strict-mode =
.value = { COPY("browser/chrome/browser/pageInfo.properties","generalStrictMode") }
security-no-owner = { COPY("browser/chrome/browser/pageInfo.properties","securityNoOwner") }
media-select-folder = { COPY("browser/chrome/browser/pageInfo.properties","mediaSelectFolder") }
media-unknown-not-cached =
.value = { COPY("browser/chrome/browser/pageInfo.properties","mediaUnknownNotCached") }
permissions-use-default =
.label = { COPY("browser/chrome/browser/pageInfo.properties","permissions.useDefault") }
security-no-visits = { COPY("browser/chrome/browser/pageInfo.properties","no") }
"""
)
)

Просмотреть файл

@ -2,12 +2,15 @@
tags = remote
[test_dv_certificate.py]
skip-if = true # bug 1523133
[test_enable_privilege.py]
tags = local
[test_ev_certificate.py]
skip-if = true # bug 1523133
[test_mixed_content_page.py]
[test_mixed_script_content_blocking.py]
[test_no_certificate.py]
skip-if = true # bug 1523133
tags = local
[test_security_notification.py]
[test_ssl_disabled_error_page.py]

Просмотреть файл

@ -16,6 +16,7 @@ tags = remote
[test_menubar.py]
[test_notifications.py]
[test_page_info_window.py]
skip-if = true # bug 1523133
[test_tabbar.py]
[test_toolbars.py]
disabled = Bug 1369556