[Pkg-mozext-commits] [perspectives-extension] 03/72: added some localizations. Fixes #58.
David Prévot
taffit at moszumanska.debian.org
Thu Dec 11 02:12:44 UTC 2014
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository perspectives-extension.
commit 885b6e74efd008baebb87a165b9a0427248cb26e
Author: Gerold Meisinger <gerold.meisinger at gmail.com>
Date: Sun Jun 15 15:55:56 2014 +0100
added some localizations. Fixes #58.
added in localizations: updateDefaultListFileError, updateDefaultListWebError, loadingCreditsError, removeFromWhitelistQuestion, trustedButInsecureEmbedded, trustedWeaklyButInsecureEmbedded, trustedMultipleByBrowser, untrustedMultipleNotSeen, untrustedMultipleNotVerifiable
changed in de localization: translated new localizations, fix some grammar
changed in en localization: added some periods
---
plugin/chrome/content/about.js | 12 +-
plugin/chrome/content/common.js | 179 +++++++++++++------------
plugin/chrome/content/notaries.js | 145 ++++++++++----------
plugin/chrome/content/results_dialog.js | 55 ++++----
plugin/chrome/content/whitelist_dialog.js | 165 ++++++++++++-----------
plugin/chrome/content/xml_notary_client.js | 140 +++++++++----------
plugin/chrome/locale/de/notaries.properties | 48 ++++---
plugin/chrome/locale/en-US/notaries.properties | 61 +++++----
plugin/chrome/locale/es-MX/notaries.properties | 17 ++-
plugin/chrome/locale/fi/notaries.properties | 17 ++-
plugin/chrome/locale/fr/notaries.properties | 15 +++
plugin/chrome/locale/nl/notaries.properties | 15 +++
plugin/chrome/locale/pl/notaries.properties | 15 +++
plugin/chrome/locale/zh-CN/notaries.properties | 17 ++-
14 files changed, 512 insertions(+), 389 deletions(-)
diff --git a/plugin/chrome/content/about.js b/plugin/chrome/content/about.js
index 6f8fbc0..0034480 100644
--- a/plugin/chrome/content/about.js
+++ b/plugin/chrome/content/about.js
@@ -28,9 +28,7 @@ var Pers_about = {
},
load_about_dialog: function() {
-
try {
-
var version = "?";
try {
@@ -48,13 +46,17 @@ var Pers_about = {
}
var contributors = Pers_util.readFileFromURI("chrome://perspectives/content/credits/contributors.txt");
- var translators = Pers_util.readFileFromURI("chrome://perspectives/content/credits/translators.txt");
+ var translators = Pers_util.readFileFromURI("chrome://perspectives/content/credits/translators.txt");
document.getElementById("contributors-list").value = contributors;
document.getElementById("translators-list").value = translators;
} catch(e) {
- Pers_util.pers_alert("Error loading credits:" + e); //TODO: extract for localization
+ if(Perspectives.strbundle == null) {
+ Perspectives.strbundle = document.getElementById("notary_strings");
+ }
+
+ Pers_util.pers_alert(Perspectives.strbundle.
+ getFormattedString("loadingCreditsError", [e]));
}
}
}
-
diff --git a/plugin/chrome/content/common.js b/plugin/chrome/content/common.js
index 340e4d7..22d0fb3 100644
--- a/plugin/chrome/content/common.js
+++ b/plugin/chrome/content/common.js
@@ -20,41 +20,41 @@
var Pers_debug = {
d_print_all : false,
- d_print_flags : {
- "policy" : false,
+ d_print_flags : {
+ "policy" : false,
"query" : false,
"querylarge": false, //big response strings and XML; separating this from query lines makes for easier debugging
- "main" : false,
- "error" : false
+ "main" : false,
+ "error" : false
},
d_print: function(flag,line) {
- if(!Pers_debug.d_print_flags[flag] && !Pers_debug.d_print_all) {
- return;
- }
+ if(!Pers_debug.d_print_flags[flag] && !Pers_debug.d_print_all) {
+ return;
+ }
line = "Perspectives: " + line;
- dump(line);
- try {
+ dump(line);
+ try {
Firebug.Console.log(line); // this line works in extensions
- } catch(e) {
- /* ignore, this will blow up if Firebug is not installed */
+ } catch(e) {
+ /* ignore, this will blow up if Firebug is not installed */
}
- try {
+ try {
console.log(line); // this line works in HTML files
- } catch(e) {
- /* ignore, this will blow up if Firebug is not installed */
+ } catch(e) {
+ /* ignore, this will blow up if Firebug is not installed */
}
}
}
var Pers_util = {
- get_unix_time: function() {
+ get_unix_time: function() {
var unixtime_ms = (new Date()).getTime(); // Returns milliseconds since the epoch
return parseInt(unixtime_ms / 1000);
},
SEC2DAY: function(sec) { return sec / (3600 * 24); },
- DAY2SEC: function(day) { return day * (3600 * 24); },
+ DAY2SEC: function(day) { return day * (3600 * 24); },
// stolen from: http://forums.mozillazine.org/viewtopic.php?p=921150
readFileFromURI: function(uri){
@@ -72,20 +72,20 @@ var Pers_util = {
return str;
},
- loadNotaryListFromURI: function(uri) {
+ loadNotaryListFromURI: function(uri) {
return this.loadNotaryListFromString(this.readFileFromURI(uri));
- },
-
- loadNotaryListFromString: function(str_data) {
- var start_arr = str_data.split("\n");
- var filtered_arr = [];
+ },
+
+ loadNotaryListFromString: function(str_data) {
+ var start_arr = str_data.split("\n");
+ var filtered_arr = [];
// the Perspectives object isn't always loaded here, so use our own
// to make sure it exists.
if(Pers_util.notarystr == null) {
Pers_util.notarystr = document.getElementById("notary_strings");
}
- for(var i = 0; i < start_arr.length; i++) {
+ for(var i = 0; i < start_arr.length; i++) {
if (start_arr[i].length > 0 && start_arr[i][0] != "#") {
// ignore lines that contain only whitespace -
// makes the file easier to parse cross-platform
@@ -93,12 +93,12 @@ var Pers_util = {
filtered_arr.push(start_arr[i]);
}
}
- }
+ }
var i = 0;
- var notary_list = [];
- while (i < filtered_arr.length) {
- var host = filtered_arr[i];
- var notary_server = { "host" : host };
+ var notary_list = [];
+ while (i < filtered_arr.length) {
+ var host = filtered_arr[i];
+ var notary_server = { "host" : host };
i += 1;
var begin_string = "BEGIN PUBLIC KEY";
@@ -108,47 +108,47 @@ var Pers_util = {
}
i += 1;
- var key = "";
+ var key = "";
var end_string = "END PUBLIC KEY";
while (i < filtered_arr.length && filtered_arr[i].indexOf(end_string) === -1) {
- key += filtered_arr[i];
+ key += filtered_arr[i];
i += 1;
- if(i == filtered_arr.length) {
+ if(i == filtered_arr.length) {
throw(Pers_util.notarystr.getFormattedString("errorParsingNotaryEntry", [ host ]) +
' - ' + Pers_util.notarystr.getFormattedString("couldNotFindLine", [ end_string ]));
}
}
i += 1; // consume the 'END PUBLIC KEY' line
- notary_server.public_key = key;
- notary_list.push(notary_server);
- }
- return notary_list;
- },
+ notary_server.public_key = key;
+ notary_list.push(notary_server);
+ }
+ return notary_list;
+ },
// stolen from: http://stackoverflow.com/questions/130404/javascript-data-formatting-pretty-printer
pretty_print_json : function(obj, indent) {
-
- function IsArray(array) { return !( !array || (!array.length || array.length == 0) || typeof array !== 'object' || !array.constructor || array.nodeType || array.item ); }
+
+ function IsArray(array) { return !( !array || (!array.length || array.length == 0) || typeof array !== 'object' || !array.constructor || array.nodeType || array.item ); }
var result = "";
if (indent == null) indent = "";
for (var property in obj){
var value = obj[property];
- var txt = "<unknown type>";
- var t = typeof value;
+ var txt = "<unknown type>";
+ var t = typeof value;
if (t == 'string' || t == 'boolean' || t == 'number')
txt = "'" + value + "'";
else if (t == 'object'){
/* if (IsArray(value)){
txt = "[ \n";
- //alert("array " + property + " has length " + obj[property].length);
- for(i = 0; i < obj[property].length; i++) {
- //txt = txt + this.pretty_print_json(obj[property][i],indent) + ",\n";
- txt = txt + obj[property][i] + ",\n";
- }
- txt = txt + "]\n";
+ //alert("array " + property + " has length " + obj[property].length);
+ for(i = 0; i < obj[property].length; i++) {
+ //txt = txt + this.pretty_print_json(obj[property][i],indent) + ",\n";
+ txt = txt + obj[property][i] + ",\n";
+ }
+ txt = txt + "]\n";
} else */ if(true) {
// Recursive dump
// (replace " " by "\t" or something else if you prefer)
@@ -162,61 +162,68 @@ var Pers_util = {
result += indent + "'" + property + "' : " + txt + ",\n";
}
return result.replace(/,\n$/, "");
- },
-
- // Mozilla's verification API assumes a DER header describing the
- // signature's cryptographic parameters. The openssl-generated signatures
+ },
+
+ // Mozilla's verification API assumes a DER header describing the
+ // signature's cryptographic parameters. The openssl-generated signatures
// returned by the notary server do not have this. Since the header is the
- // same for all notary responses, we just statically prepend the data
- // here, and re-encode the signature in base64.
+ // same for all notary responses, we just statically prepend the data
+ // here, and re-encode the signature in base64.
// see firefox-v2/xp_src/moz_crypto.cpp for details of header format
- add_der_signature_header: function(sig_base64) {
+ add_der_signature_header: function(sig_base64) {
- var base_str = Pers_Base64.decode(sig_base64);
- var der_header_md5 = [ "0x30", "0x81", "0xbf", "0x30", "0x0d", "0x06",
- "0x09", "0x2a", "0x86", "0x48", "0x86", "0xf7",
- "0x0d", "0x01", "0x01", "0x04", "0x05", "0x00",
+ var base_str = Pers_Base64.decode(sig_base64);
+ var der_header_md5 = [ "0x30", "0x81", "0xbf", "0x30", "0x0d", "0x06",
+ "0x09", "0x2a", "0x86", "0x48", "0x86", "0xf7",
+ "0x0d", "0x01", "0x01", "0x04", "0x05", "0x00",
"0x03", "0x81", "0xad", "0x00"];
var header_str = '';
for (var i = 0; i < der_header_md5.length; i++) {
header_str += String.fromCharCode(parseInt(der_header_md5[i],16));
}
- return Pers_Base64.encode(header_str + base_str) ;
- },
+ return Pers_Base64.encode(header_str + base_str) ;
+ },
-
- update_public_key : "MIHKMA0GCSqGSIb3DQEBAQUAA4G4ADCBtAKBrAF16BJZAsESZnEq6MeCYsntL1233FVdz/6dNXptTwoKACOcnoae+/S5d9Ms2kmQMTMWkW5NdRV2/iKIdQx14Y7GZojPYvL85ZjwlTXRblqwoxnwdE+Vd2V5itxV0Okcu2+E66tvtr6aeBVt7hwtowyQPgiWz2rDgV6RsohbetiaHUMZKDdoQFzu/5CAW+7QtbFoJjNMqez6pz80xFWrIJzRC+fXlues1Af37+cCAwEAAQ==",
- update_list_uri : "http://update.networknotary.org/http_notary_list.txt",
- update_sig_uri : "http://update.networknotary.org/http_notary_list.sig",
+
+ update_public_key : "MIHKMA0GCSqGSIb3DQEBAQUAA4G4ADCBtAKBrAF16BJZAsESZnEq6MeCYsntL1233FVdz/6dNXptTwoKACOcnoae+/S5d9Ms2kmQMTMWkW5NdRV2/iKIdQx14Y7GZojPYvL85ZjwlTXRblqwoxnwdE+Vd2V5itxV0Okcu2+E66tvtr6aeBVt7hwtowyQPgiWz2rDgV6RsohbetiaHUMZKDdoQFzu/5CAW+7QtbFoJjNMqez6pz80xFWrIJzRC+fXlues1Af37+cCAwEAAQ==",
+ update_list_uri : "http://update.networknotary.org/http_notary_list.txt",
+ update_sig_uri : "http://update.networknotary.org/http_notary_list.sig",
update_default_notary_list_from_web: function(root_prefs) {
- try {
-
- var notary_list_data = Pers_util.readFileFromURI(this.update_list_uri);
- var sig_no_header = Pers_util.readFileFromURI(this.update_sig_uri);
- var sig = this.add_der_signature_header(sig_no_header);
+ try {
+ var notary_list_data = Pers_util.readFileFromURI(this.update_list_uri);
+ var sig_no_header = Pers_util.readFileFromURI(this.update_sig_uri);
+ var sig = this.add_der_signature_header(sig_no_header);
var verifier = Components.classes["@mozilla.org/security/datasignatureverifier;1"].
createInstance(Components.interfaces.nsIDataSignatureVerifier);
- var result = verifier.verifyData(notary_list_data, sig, this.update_public_key);
- if(!result) {
+ var result = verifier.verifyData(notary_list_data, sig, this.update_public_key);
+ if(!result) {
Pers_debug.d_print("error", "Signature verification failed on notary list update");
- return;
+ return;
}
root_prefs.setCharPref("perspectives.default_notary_list",notary_list_data);
- } catch(e) {
- //Note: localize this message if we ever expose this preference
- alert("Unexpected error updating default notary_list from web: " + e);
- }
+ } catch(e) {
+ if(Perspectives.strbundle == null) {
+ Perspectives.strbundle = document.getElementById("notary_strings");
+ }
+
+ Pers_util.pers_alert(Perspectives.strbundle.
+ getFormattedString("updateDefaultListWebError", [e]));
+ }
- },
+ },
- update_default_notary_list_from_file : function(root_prefs) {
- try {
- var notary_list_data = this.readFileFromURI("chrome://perspectives/content/http_notary_list.txt");
+ update_default_notary_list_from_file : function(root_prefs) {
+ try {
+ var notary_list_data = this.readFileFromURI("chrome://perspectives/content/http_notary_list.txt");
root_prefs.setCharPref("perspectives.default_notary_list",notary_list_data);
- } catch(e) {
- //Note: localize this message if we ever expose this preference
- alert("Unexpected error updating default notary_list from web: " + e);
- }
+ } catch(e) {
+ if(Perspectives.strbundle == null) {
+ Perspectives.strbundle = document.getElementById("notary_strings");
+ }
+
+ Pers_util.pers_alert(Perspectives.strbundle.
+ getFormattedString("updateDefaultListFileError", [e]));
+ }
},
// Wrap all calls to alert() so we show a common title.
@@ -228,8 +235,8 @@ var Pers_util = {
// taken from dialogs.dtd or notaries.properties files, not hard-coded.
// FIXME - existing alerts should be changed to use this. Make sure to test them!
pers_alert: function(msg) {
- alert("Perspectives: " + msg);
- // TODO we could include contact info here too
+ alert("Perspectives: " + msg);
+ // TODO we could include contact info here too
},
// Make opening a link nicer by opening in a new tab if possible
@@ -249,7 +256,7 @@ var Pers_util = {
wnd.focus();
}
catch (e) {
- this.pers_alert("error opening link: " + e);
+ Pers_util.pers_alert("error opening link: " + e);
}
}
}
diff --git a/plugin/chrome/content/notaries.js b/plugin/chrome/content/notaries.js
index 6591a8a..eaa9ccb 100644
--- a/plugin/chrome/content/notaries.js
+++ b/plugin/chrome/content/notaries.js
@@ -581,17 +581,17 @@ var Perspectives = {
ti.already_trusted = !(ti.state & Perspectives.state.STATE_IS_INSECURE) && !(ti.is_override_cert);
if(Perspectives.is_whitelisted_by_user(ti.uri.host)) {
+ var text = Perspectives.strbundle.
+ getFormattedString("configuredToWhitelistWithHost", [ti.uri.host]);
if(! (ti.already_trusted || ti.is_override_cert)) {
var isTemp = !Perspectives.root_prefs.getBoolPref("perspectives.exceptions.permanent");
setTimeout(function() {
if(Perspectives.do_override(ti.browser, ti.cert, isTemp)) {
- Perspectives.setFaviconText("Certificate trusted based on Perspectives whitelist"); //TODO: localize; can we use configuredToWhitelist to save a string?
+ Perspectives.setFaviconText(text);
Pers_notify.do_notify(ti, Pers_notify.TYPE_WHITELIST);
}
}, 1000);
}
- var text = Perspectives.strbundle.
- getFormattedString("configuredToWhitelistWithHost", [ ti.uri.host ]);
Pers_statusbar.setStatus(ti.uri, Pers_statusbar.STATE_SEC, text);
ti.reason_str = text;
return;
@@ -669,7 +669,7 @@ var Perspectives = {
Perspectives.getFaviconText().indexOf("Perspectives") < 0){
ti.query_results.identityText =
Perspectives.setFaviconText(Perspectives.getFaviconText() +
- "\n\n" + "Perspectives has validated this site"); //TODO: localize
+ "\n\n" + Perspectives.strbundle.getString("verificationSuccess"));
}
var required_duration =
Perspectives.root_prefs.
@@ -714,9 +714,8 @@ var Perspectives = {
// from applying the resuts and can add better tests for these,
// wrap setting the status and the tooltip in their own function
// so no steps are forgotten
- ti.query_results.tooltip =
- "HTTPS Certificate is trusted, but site contains insecure embedded content.";
- Pers_statusbar.setStatus(ti.uri, Pers_statusbar.STATE_NEUT, ti.query_results.tooltip); //TODO: localize
+ ti.query_results.tooltip = Perspectives.strbundle.getString("trustedButInsecureEmbedded");
+ Pers_statusbar.setStatus(ti.uri, Pers_statusbar.STATE_NEUT, ti.query_results.tooltip);
// this will flicker, as we can't rely on just doing it on 'firstLook'
// due to Firefox oddness
if(ti.override_used) {
@@ -725,21 +724,18 @@ var Perspectives = {
} else {
ti.query_results.tooltip = Perspectives.strbundle.
- getFormattedString("verifiedMessage",
- [ ti.query_results.duration, required_duration]);
+ getFormattedString("verifiedMessage", [ti.query_results.duration, required_duration]);
Pers_statusbar.setStatus(ti.uri, Pers_statusbar.STATE_SEC,
ti.query_results.tooltip);
}
} else if(ti.already_trusted && weak_trust && pref_https_weak) {
// FIXME: need to clear any contrary banners
if(ti.state & Perspectives.state.STATE_IS_BROKEN) {
- ti.query_results.tooltip =
- "HTTPS Certificate is weakly trusted, but site contains insecure embedded content." //TODO: localize
+ ti.query_results.tooltip = Perspectives.strbundle.getString("trustedWeaklyButInsecureEmbedded");
Pers_statusbar.setStatus(ti.uri, Pers_statusbar.STATE_NEUT,
ti.query_results.tooltip);
} else {
- ti.query_results.tooltip =
- "This site uses multiple certificates, including the certificate received and trusted by your browser." //TODO: localize
+ ti.query_results.tooltip = Perspectives.strbundle.getString("trustedMultipleByBrowser");
Pers_statusbar.setStatus(ti.uri, Pers_statusbar.STATE_SEC,
ti.query_results.tooltip);
@@ -755,17 +751,15 @@ var Perspectives = {
}
} else if(ti.query_results.inconsistent_results && !ti.query_results.weakly_seen) {
// FIXME: need to clear any contrary banners
- ti.query_results.tooltip = "This site regularly uses multiples certificates, and most Notaries have not recently seen the certificate received by the browser";
- Pers_statusbar.setStatus(ti.uri, Pers_statusbar.STATE_NSEC, //TODO: localize
- ti.query_results.tooltip);
+ ti.query_results.tooltip = Perspectives.strbundle.getString("untrustedMultipleNotSeen");
+ Pers_statusbar.setStatus(ti.uri, Pers_statusbar.STATE_NSEC, ti.query_results.tooltip);
if(!ti.already_trusted){
Pers_notify.do_notify(ti, Pers_notify.TYPE_FAILED);
}
} else if(ti.query_results.inconsistent_results) {
// FIXME: need to clear any contrary banners
- ti.query_results.tooltip = "Perspectives is unable to validate this site, because the site regularly uses multiples certificates";
- Pers_statusbar.setStatus(ti.uri, Pers_statusbar.STATE_NSEC, //TODO: localize
- ti.query_results.tooltip);
+ ti.query_results.tooltip = Perspectives.strbundle.getString("untrustedMultipleNotVerifiable");
+ Pers_statusbar.setStatus(ti.uri, Pers_statusbar.STATE_NSEC, ti.query_results.tooltip);
if(!ti.already_trusted){
Pers_notify.do_notify(ti, Pers_notify.TYPE_FAILED);
}
@@ -792,7 +786,8 @@ var Perspectives = {
}
} else {
// FIXME: need to clear any contrary banners
- ti.query_results.tooltip = "An unknown Error occurred processing Notary results"; //TODO: localize
+ ti.query_results.tooltip = Perspectives.strbundle.
+ getFormattedString("errorParsingNotaryEntry", [ti.uri.host]);
Pers_statusbar.setStatus(ti.uri, Pers_statusbar.STATE_ERROR,
ti.query_results.tooltip);
@@ -829,8 +824,6 @@ var Perspectives = {
return false;
},
-
-
// See Documentation for nsIWebProgressListener at:
// https://developer.mozilla.org/en/nsIWebProgressListener
@@ -853,72 +846,76 @@ var Perspectives = {
if(Perspectives.strbundle == null) {
Perspectives.strbundle = document.getElementById("notary_strings");
}
- try{
- Pers_debug.d_print("main", "Location change " + aURI.spec);
- var state = Pers_statusbar.STATE_NEUT;
- var tooltip = "Perspectives";
-
- if (aURI !== null && aURI.scheme === 'https') {
- // we'll actually send a query for https connections, so update the UI.
- state = Pers_statusbar.STATE_QUERY;
- // use the asciiHost: sometimes the host contains invalid characters, or is unset.
- // in those cases getFormattedString() will throw an exception,
- // which causes the error icon to be displayed.
- tooltip = Perspectives.strbundle.getFormattedString("contactingNotariesAbout",
- [ aURI.asciiHost ])
- // TODO: can we start sending the query from right here, to begin sooner?
- }
- Pers_statusbar.setStatus(aURI, state, tooltip);
- } catch(err){
- Pers_debug.d_print("error", "Perspectives had an internal exception: " + err);
- Pers_statusbar.setStatus(aURI, Pers_statusbar.STATE_ERROR,
- "Perspectives: an error occurred when attempting to change location: " + err); //TODO: localize
- }
+ try {
+ Pers_debug.d_print("main", "Location change " + aURI.spec);
+ var state = Pers_statusbar.STATE_NEUT;
+ var tooltip = "Perspectives";
+
+ if (aURI !== null && aURI.scheme === 'https') {
+ // we'll actually send a query for https connections, so update the UI.
+ state = Pers_statusbar.STATE_QUERY;
+ // use the asciiHost: sometimes the host contains invalid characters, or is unset.
+ // in those cases getFormattedString() will throw an exception,
+ // which causes the error icon to be displayed.
+ tooltip = Perspectives.strbundle.getFormattedString("contactingNotariesAbout",
+ [ aURI.asciiHost ])
+ // TODO: can we start sending the query from right here, to begin sooner?
+ }
+ Pers_statusbar.setStatus(aURI, state, tooltip);
+ } catch(err){
+ Pers_debug.d_print("error", "Perspectives had an internal exception: " + err);
+ Pers_statusbar.setStatus(aURI, Pers_statusbar.STATE_ERROR,
+ Perspectives.strbundle.getFormattedString("internalError", ["onLocationChange - " + err]));
+ }
},
// we only call updateStatus on STATE_STOP, as a catch all in case
// onSecurityChange was never called.
onStateChange: function(aWebProgress, aRequest, aFlag, aStatus) {
-
if(aFlag & Components.interfaces.nsIWebProgressListener.STATE_STOP){
- try {
- var uri = window.gBrowser.currentURI;
- Pers_debug.d_print("main", "State change " + uri.spec);
- Perspectives.updateStatus(window,false);
- } catch (err) {
- Pers_debug.d_print("error", "Perspectives had an internal exception: " + err);
- Pers_statusbar.setStatus(Pers_statusbar.STATE_ERROR,
- "Perspectives: an internal state change error occurred: " + err); //TODO: localize
- }
- }
+ try {
+ var uri = window.gBrowser.currentURI;
+ Pers_debug.d_print("main", "State change " + uri.spec);
+ Perspectives.updateStatus(window,false);
+ } catch (err) {
+ if(Perspectives.strbundle == null) {
+ Perspectives.strbundle = document.getElementById("notary_strings");
+ }
+
+ Pers_debug.d_print("error", "Perspectives had an internal exception: " + err);
+ Pers_statusbar.setStatus(Pers_statusbar.STATE_ERROR,
+ Perspectives.strbundle.getFormattedString("internalError", ["onStateChange - " + err]));
+ }
+ }
},
// this is the main function we key off of. It seems to work well, even though
// the docs do not explicitly say when it will be called.
- onSecurityChange: function() {
- var uri = null;
- try{
- uri = window.gBrowser.currentURI;
- Pers_debug.d_print("main", "Security change " + uri.spec);
- Perspectives.updateStatus(window,false);
- } catch(err){
- Pers_debug.d_print("error", "Perspectives had an internal exception: " + err);
- if(uri) {
- Pers_statusbar.setStatus(uri, Pers_statusbar.STATE_ERROR,
- "Perspectives: an internal security change error occurred: " + err); //TODO: localize
- }
- }
+ onSecurityChange: function() {
+ var uri = null;
+ try{
+ uri = window.gBrowser.currentURI;
+ Pers_debug.d_print("main", "Security change " + uri.spec);
+ Perspectives.updateStatus(window,false);
+ } catch(err){
+ Pers_debug.d_print("error", "Perspectives had an internal exception: " + err);
+ if(uri) {
+ if(Perspectives.strbundle == null) {
+ Perspectives.strbundle = document.getElementById("notary_strings");
+ }
+ Pers_statusbar.setStatus(uri, Pers_statusbar.STATE_ERROR,
+ Perspectives.strbundle.getFormattedString("internalError", ["onSecurityChange - " + err]));
+ }
+ }
},
- onStatusChange: function() { },
- onProgressChange: function() { },
+ onStatusChange : function() { },
+ onProgressChange : function() { },
onLinkIconAvailable: function() { }
},
-
-
requeryAllTabs: function(b){
/*
alert("requeryAllTabs is disabled");
@@ -947,7 +944,11 @@ var Perspectives = {
setTimeout(function (){ Perspectives.requeryAllTabs(gBrowser); }, 4000);
Pers_debug.d_print("main", "Perspectives Finished Initialization\n\n");
} catch(e) {
- Pers_util.pers_alert("Error in initNotaries: " + e);
+ if(Perspectives.strbundle == null) {
+ Perspectives.strbundle = document.getElementById("notary_strings");
+ }
+
+ Pers_util.pers_alert(Perspectives.strbundle.getFormattedString("internalError", ["initNotaries - " + e]));
}
},
diff --git a/plugin/chrome/content/results_dialog.js b/plugin/chrome/content/results_dialog.js
index e383c64..149bea1 100644
--- a/plugin/chrome/content/results_dialog.js
+++ b/plugin/chrome/content/results_dialog.js
@@ -35,26 +35,26 @@ var Pers_results = {
after.appendChild(svg);
},
- // returns a string that describes whether Perspectives installed a
- // security exception
+ // returns a string that describes whether Perspectives installed a
+ // security exception
getActionStr: function(ti) {
if(Pers_results.strbundle == null) {
Pers_results.strbundle = document.getElementById("results_strings");
}
- if(ti.uri.scheme != "https") {
+ if(ti.uri.scheme != "https") {
return Pers_results.strbundle.getFormattedString("notHTTPS", [ ti.uri.scheme ]);
- } else if(ti.is_override_cert && ti.already_trusted) {
+ } else if(ti.is_override_cert && ti.already_trusted) {
return Pers_results.strbundle.getString("previouslyInstalledCert");
- } else if(ti.already_trusted) {
+ } else if(ti.already_trusted) {
return Pers_results.strbundle.getString("browserTrusts");
- } else if(ti.is_override_cert && ti.notary_valid && ti.exceptions_enabled && ti.isTemp) {
+ } else if(ti.is_override_cert && ti.notary_valid && ti.exceptions_enabled && ti.isTemp) {
return Pers_results.strbundle.getString("tempSecurityException");
- } else if(ti.is_override_cert && ti.notary_valid && ti.exceptions_enabled && !ti.isTemp){
+ } else if(ti.is_override_cert && ti.notary_valid && ti.exceptions_enabled && !ti.isTemp){
return Pers_results.strbundle.getString("permanentSecurityException");
- } else {
+ } else {
return Pers_results.strbundle.getString("noException");
- }
+ }
},
load_results_dialog: function(){
@@ -71,20 +71,20 @@ var Pers_results = {
var info = document.getElementById("perspective-description");
var liner = document.getElementById("perspective-quorum-duration");
var host = document.getElementById("perspective-information-caption");
-
- var win = window.opener;
- var error_text = win.Perspectives.detectInvalidURI(win);
- if(error_text) {
+
+ var win = window.opener;
+ var error_text = win.Perspectives.detectInvalidURI(win);
+ if(error_text) {
info.value = "Perspectives: " +
Pers_results.notaryStrings.getString("invalidURI") + " (" + error_text + ")";
- return;
- }
+ return;
+ }
var ti = win.Perspectives.getCurrentTabInfo(win);
- var cert = ti.query_results;
+ var cert = ti.query_results;
host.label = ti.uri.host;
- if(ti) {
- host.label += ": " + Pers_results.getActionStr(ti);
- }
+ if(ti) {
+ host.label += ": " + Pers_results.getActionStr(ti);
+ }
if(cert){
info.value = cert.summary;
liner.value = cert.tooltip;
@@ -96,20 +96,19 @@ var Pers_results = {
radio.selectedIndex = 0;
}
} else if (ti.reason_str) {
- info.value = ti.reason_str;
- }
+ info.value = ti.reason_str;
+ }
- } catch(e) {
- Pers_debug.d_print("error", "Error loading results dialog");
- Pers_debug.d_print("error", e);
+ } catch(e) {
+ Pers_debug.d_print("error", "Error loading results dialog");
+ Pers_debug.d_print("error", e);
var errmsg = "";
if (Pers_results.strbundle != null) {
errmsg = Pers_results.strbundle.getString("errorLoadingResultsDialog") + ": ";
}
Pers_util.pers_alert(errmsg + e);
- }
-
- return true;
- },
+ }
+ return true;
+ }
}
diff --git a/plugin/chrome/content/whitelist_dialog.js b/plugin/chrome/content/whitelist_dialog.js
index 52b3a86..fba185e 100644
--- a/plugin/chrome/content/whitelist_dialog.js
+++ b/plugin/chrome/content/whitelist_dialog.js
@@ -21,7 +21,7 @@ var Pers_whitelist_dialog = {
root_prefs : Components.classes["@mozilla.org/preferences-service;1"].
getService(Components.interfaces.nsIPrefBranch),
- add_to_whitelist : function() {
+ add_to_whitelist : function() {
try {
// use Perspectives.strbundle because whitelist_dialog.xul isn't loaded yet
if(Perspectives.strbundle == null) {
@@ -40,124 +40,129 @@ var Pers_whitelist_dialog = {
},
confirm_add : function() {
- try {
+ try {
var host = window.arguments[0];
- var is_domain = document.getElementById("whitelist-radio-2").selected;
- var is_ip = this.is_ip_address(host);
-
- window.close();
-
- if(is_domain) {
- if(is_ip) {
- var regex = this.get_ip_domain_regex(host);
- } else {
- var regex = this.get_dns_domain_regex(host);
- }
- } else {
- var regex = "^" + host.replace(".","\\.","g") + "$";
- }
+ var is_domain = document.getElementById("whitelist-radio-2").selected;
+ var is_ip = this.is_ip_address(host);
+
+ window.close();
+
+ if(is_domain) {
+ if(is_ip) {
+ var regex = this.get_ip_domain_regex(host);
+ } else {
+ var regex = this.get_dns_domain_regex(host);
+ }
+ } else {
+ var regex = "^" + host.replace(".","\\.","g") + "$";
+ }
var whitelist = this.root_prefs.getCharPref("perspectives.whitelist");
- if(whitelist.length == 0) {
- whitelist = regex;
- } else {
- whitelist = whitelist + "," + regex;
- }
+ if(whitelist.length == 0) {
+ whitelist = regex;
+ } else {
+ whitelist = whitelist + "," + regex;
+ }
this.root_prefs.setCharPref("perspectives.whitelist",whitelist);
- window.opener.Perspectives.forceStatusUpdate(window.opener);
+ window.opener.Perspectives.forceStatusUpdate(window.opener);
} catch(e) { Pers_util.pers_alert("confirm_add: " + e); }
- },
+ },
- is_ip_address: function(host) {
- var host_arr = host.split("\.");
- return host_arr[host_arr.length - 1].match(RegExp("[0-9]+"));
- },
+ is_ip_address: function(host) {
+ var host_arr = host.split("\.");
+ return host_arr[host_arr.length - 1].match(RegExp("[0-9]+"));
+ },
// 'host' could be a domain name or an ip address
- get_dns_domain_text: function(host) {
- var host_arr = host.split("\.");
+ get_dns_domain_text: function(host) {
+ var host_arr = host.split("\.");
var l = host_arr.length;
if(host_arr.length > 1) {
- return host_arr[l - 2] + "." + host_arr[l - 1];
+ return host_arr[l - 2] + "." + host_arr[l - 1];
}
- return null;
+ return null;
},
get_dns_domain_regex: function(host) {
- return ".*\\." + this.get_dns_domain_text(host).replace(".","\\.","g") + "$";
- },
-
- get_ip_domain_text: function(host) {
- var host_arr = host.split("\.");
+ return ".*\\." + this.get_dns_domain_text(host).replace(".","\\.","g") + "$";
+ },
+
+ get_ip_domain_text: function(host) {
+ var host_arr = host.split("\.");
var l = host_arr.length;
- var prefix = host_arr[0] + "." + host_arr[1] + "." + host_arr[2] + ".";
+ var prefix = host_arr[0] + "." + host_arr[1] + "." + host_arr[2] + ".";
if(host_arr.length == 4) {
- return prefix + "0" + " - " + prefix + "255";
+ return prefix + "0" + " - " + prefix + "255";
}
- return null;
- },
+ return null;
+ },
- get_ip_domain_regex: function(host) {
- var host_arr = host.split("\.");
+ get_ip_domain_regex: function(host) {
+ var host_arr = host.split("\.");
var l = host_arr.length;
- var prefix = host_arr[0] + "." + host_arr[1] + "." + host_arr[2] + ".";
- return "^" + prefix.replace(".","\\.","g") + "[0-9]+$";
- },
+ var prefix = host_arr[0] + "." + host_arr[1] + "." + host_arr[2] + ".";
+ return "^" + prefix.replace(".","\\.","g") + "[0-9]+$";
+ },
fill_dialog: function(){
try {
if(Pers_whitelist_dialog.strbundle == null) {
Pers_whitelist_dialog.strbundle = document.getElementById("whitelist_strings");
- }
+ }
var host = window.arguments[0];
document.getElementById("whitelist-radio-1").label =
Pers_whitelist_dialog.strbundle.getString("whitelistWebsite") + " '" + host + "'";
-
- document.getElementById("whitelist-radio-2").hidden = true;
- if(this.is_ip_address(host)) {
- var host_text = this.get_ip_domain_text(host);
- if(host_text) {
+
+ document.getElementById("whitelist-radio-2").hidden = true;
+ if(this.is_ip_address(host)) {
+ var host_text = this.get_ip_domain_text(host);
+ if(host_text) {
document.getElementById("whitelist-radio-2").label =
Pers_whitelist_dialog.strbundle.getString("whitelistAllWebsitesInIP") + " '" + host_text + "'";
- document.getElementById("whitelist-radio-2").hidden = false;
- }
- } else {
- var dns_text = this.get_dns_domain_text(host);
- if(dns_text) {
+ document.getElementById("whitelist-radio-2").hidden = false;
+ }
+ } else {
+ var dns_text = this.get_dns_domain_text(host);
+ if(dns_text) {
document.getElementById("whitelist-radio-2").label =
Pers_whitelist_dialog.strbundle.getString("whitelistAllWebsitesInDomain") + " '" + dns_text + "'";
- document.getElementById("whitelist-radio-2").hidden = false;
- }
- }
+ document.getElementById("whitelist-radio-2").hidden = false;
+ }
+ }
} catch(e) { Pers_util.pers_alert("fill_dialog: " + e); }
- },
+ },
+
+ remove_from_whitelist : function() {
+ try {
+ // use Perspectives.strbundle because whitelist_dialog.xul isn't loaded yet
+ if(Perspectives.strbundle == null) {
+ Perspectives.strbundle = document.getElementById("notary_strings");
+ }
- remove_from_whitelist : function() {
- try {
var host = window.gBrowser.currentURI.host;
var old_whitelist = Perspectives.root_prefs.getCharPref("perspectives.whitelist").split(",");
- var new_whitelist = [];
+ var new_whitelist = [];
for(var entry in old_whitelist) {
- var e = old_whitelist[entry];
- if(e.length == 0) {
- continue;
- }
+ var e = old_whitelist[entry];
+ if(e.length == 0) {
+ continue;
+ }
var r = RegExp(e);
- var display_str = e.replace(/\\/g,"").replace("$","").replace("^","");
+ var display_str = e.replace(/\\/g,"").replace("$","").replace("^","");
if (host.match(r)) {
- var answer = confirm("Remove '" + display_str + "' from whitelist?"); //FIXME: localize, once we know how to get here
- if(answer) {
- continue;
- }
- }
- new_whitelist.push(e);
- }
- Perspectives.root_prefs.setCharPref("perspectives.whitelist",new_whitelist.join(","));
- window.Perspectives.forceStatusUpdate(window);
- } catch(e) { alert("remove_from_whitelist:" + e); }
- }
-
+ var answer = confirm(Perspectives.strbundle.
+ getFormattedString("removeFromWhitelistQuestion", [display_str]));
+ if(answer) {
+ continue;
+ }
+ }
+ new_whitelist.push(e);
+ }
+ Perspectives.root_prefs.setCharPref("perspectives.whitelist",new_whitelist.join(","));
+ window.Perspectives.forceStatusUpdate(window);
+ } catch(e) { alert("remove_from_whitelist:" + e); }
+ }
}
diff --git a/plugin/chrome/content/xml_notary_client.js b/plugin/chrome/content/xml_notary_client.js
index 73795a9..b633a1f 100644
--- a/plugin/chrome/content/xml_notary_client.js
+++ b/plugin/chrome/content/xml_notary_client.js
@@ -19,62 +19,62 @@
// convert an xml '<server>' node to a javascript object
-// In JSON syntax, this object has the following format:
-/* { "signature" : "XXXX",
- "obs" : [ { "key" : "XXX",
+// In JSON syntax, this object has the following format:
+/* { "signature" : "XXXX",
+ "obs" : [ { "key" : "XXX",
"timestamps" : [ { "start" : XXX, "end" : YYY } ]
- }
- ]
+ }
+ ]
}
-*/
+*/
var Pers_xml = {
- parse_server_node: function(reply, expected_version) {
+ parse_server_node: function(reply, expected_version) {
- if(reply.nodeName != "notary_reply"){
+ if(reply.nodeName != "notary_reply"){
return null;
- }
- var version = reply.attributes.getNamedItem("version").value;
- if(version != expected_version) {
+ }
+ var version = reply.attributes.getNamedItem("version").value;
+ if(version != expected_version) {
Pers_debug.d_print("error","Expected version '" + expected_version
+ "' but got version '" + version + "'");
- return null;
+ return null;
}
-
+
var res = new Object();
- var sig_type = reply.attributes.getNamedItem("sig_type").value;
+ var sig_type = reply.attributes.getNamedItem("sig_type").value;
if(sig_type != "rsa-md5") {
- // in the future, we will support 'rsa-sha256' as well
- Pers_debug.d_print("error","Expected sig_type 'rsa-md5' " +
+ // in the future, we will support 'rsa-sha256' as well
+ Pers_debug.d_print("error","Expected sig_type 'rsa-md5' " +
"but got sig_type '" + sig_type + "'");
- return null;
- }
- var sig_base64 = reply.attributes.getNamedItem("sig").value;
- res.signature = Pers_util.add_der_signature_header(sig_base64);
+ return null;
+ }
+ var sig_base64 = reply.attributes.getNamedItem("sig").value;
+ res.signature = Pers_util.add_der_signature_header(sig_base64);
res.obs = new Array();
for (var j = 0; j < reply.childNodes.length; j++){
var keynode = reply.childNodes[j];
if (keynode.nodeName != "key"){
- continue;
+ continue;
}
- var key_info = {
- "key" : keynode.attributes.getNamedItem("fp").value,
- "key_type" : keynode.attributes.getNamedItem("type").value,
- "timestamps" : []
- };
+ var key_info = {
+ "key" : keynode.attributes.getNamedItem("fp").value,
+ "key_type" : keynode.attributes.getNamedItem("type").value,
+ "timestamps" : []
+ };
for (var k = 0; k < keynode.childNodes.length; k++){
var tsnode = keynode.childNodes[k];
if (tsnode.nodeName != "timestamp"){
continue;
}
- key_info.timestamps.push({
- "start" : tsnode.attributes.getNamedItem("start").value,
+ key_info.timestamps.push({
+ "start" : tsnode.attributes.getNamedItem("start").value,
"end" : tsnode.attributes.getNamedItem("end").value
- });
+ });
}
- res.obs.push(key_info);
+ res.obs.push(key_info);
}
- return res;
+ return res;
},
@@ -84,74 +84,74 @@ var Pers_xml = {
Perspectives.strbundle = document.getElementById("notary_strings");
}
- var out = "";
- for(var j = 0; j < server_result.obs.length; j++) {
- var o = server_result.obs[j];
+ var out = "";
+ for(var j = 0; j < server_result.obs.length; j++) {
+ var o = server_result.obs[j];
out += Perspectives.strbundle.getString("sslKey")
+ ": '" + o.key + "'\n";
for(var k = 0; k < o.timestamps.length; k++){
- var start_t = o.timestamps[k].start;
- var end_t = o.timestamps[k].end;
- var start_d = new Date(1000 * start_t).toDateString();
- var end_d = new Date(1000 * end_t).toDateString();
+ var start_t = o.timestamps[k].start;
+ var end_t = o.timestamps[k].end;
+ var start_d = new Date(1000 * start_t).toDateString();
+ var end_d = new Date(1000 * end_t).toDateString();
out += Perspectives.strbundle.getString("keyStart") +
":\t" + start_t + " - " + start_d + "\n";
out += Perspectives.strbundle.getString("keyEnd") +
": \t" + end_t + " - " + end_d + "\n";
out += "(" + parseInt((end_t - start_t) / (3600 * 24)) + " " +
Perspectives.strbundle.getString("keyDays") + ")\n\n";
- }
- }
- if(server_result.obs.length == 0) {
+ }
+ }
+ if(server_result.obs.length == 0) {
out += "[ " + Perspectives.strbundle.getString("noResults") + " ]";
- }
- if(show_sig) {
+ }
+ if(show_sig) {
out += "\t" + Perspectives.strbundle.getString("signature") + " = '"
+ server_result.signature + "'\n";
}
return out;
- },
+ },
- //Note: the signature is computed over data in
+ //Note: the signature is computed over data in
// network byte order (big endian) so we should do
- // the same.
+ // the same.
// each observation has:
- // service-id (variable length, terminated with null-byte)
+ // service-id (variable length, terminated with null-byte)
// num_timespans (2-bytes)
// key_len_bytes (2-bytes, always has value of 16 for now
- // key type (1-byte), always has a value of 3 for SSL
- // key data (length specified in key_len_bytes)
+ // key type (1-byte), always has a value of 3 for SSL
+ // key data (length specified in key_len_bytes)
// list of timespan start,end pairs (length is 2 * 4 * num_timespans)
- // FIXME: The different keys actually need to be in the same order as
+ // FIXME: The different keys actually need to be in the same order as
// they were on the server, in order to compute the signature correctly.
// The xml seems to be parsed in a consistent way, but I don't know if
- // that is guaranteed to be the case.
- pack_result_as_binary: function(server_res,service_id) {
+ // that is guaranteed to be the case.
+ pack_result_as_binary: function(server_res,service_id) {
var bin_str = service_id;
bin_str += String.fromCharCode(0); // NULL-terminate
-
+
for (var i = server_res.obs.length - 1; i >= 0; i--) {
var o = server_res.obs[i];
- var num_timespans = o.timestamps.length;
- bin_str += String.fromCharCode((num_timespans >> 8) & 255,
- num_timespans & 255);
+ var num_timespans = o.timestamps.length;
+ bin_str += String.fromCharCode((num_timespans >> 8) & 255,
+ num_timespans & 255);
bin_str += String.fromCharCode(0,16,3); // key length is 16, type 3
- var hex_array = o.key.split(":");
+ var hex_array = o.key.split(":");
for(var k = 0; k < hex_array.length; k++) {
- bin_str += String.fromCharCode((parseInt(hex_array[k],16)));
+ bin_str += String.fromCharCode((parseInt(hex_array[k],16)));
}
for (var j = 0; j < o.timestamps.length; j++) {
- var t = o.timestamps[j];
- bin_str += String.fromCharCode((t.start >> 24) & 255,
- (t.start >> 16) & 255,
- (t.start >> 8) & 255,
- t.start & 255);
- bin_str += String.fromCharCode((t.end >> 24) & 255,
- (t.end >> 16) & 255, (t.end >> 8) & 255,
- t.end & 255);
+ var t = o.timestamps[j];
+ bin_str += String.fromCharCode((t.start >> 24) & 255,
+ (t.start >> 16) & 255,
+ (t.start >> 8) & 255,
+ t.start & 255);
+ bin_str += String.fromCharCode((t.end >> 24) & 255,
+ (t.end >> 16) & 255, (t.end >> 8) & 255,
+ t.end & 255);
}
- }
-
- return bin_str;
+ }
+
+ return bin_str;
}
-}
+}
diff --git a/plugin/chrome/locale/de/notaries.properties b/plugin/chrome/locale/de/notaries.properties
index a9b291f..ae35324 100644
--- a/plugin/chrome/locale/de/notaries.properties
+++ b/plugin/chrome/locale/de/notaries.properties
@@ -1,49 +1,54 @@
# Diese Datei beinhaltet lokalisierte Strings zum Javascript-Code von Perspectives
-verificationSuccess=Perspectives hat die Sicherheit Ihrer Verbindung mit dieser Webseite bestätigt und die Firefox Sicherheitsfehlerseite umgangen
-unableToVerify=Möglicher Angriff: Perspectives konnte die Sicherheit Ihrer Verbindung mit dieser Webseite nicht bestätigen
-reportThis=Fehler Melden
+verificationSuccess=Perspectives hat die Sicherheit Ihrer Verbindung mit dieser Webseite bestätigt und die Firefox Sicherheitsfehlerseite umgangen.
+unableToVerify=Möglicher Angriff: Perspectives konnte die Sicherheit Ihrer Verbindung für diese Webseite nicht bestätigen.
+reportThis=Fehler melden
yesContactNotaries=Ja, bei den Notaren nachfragen
learnMore=Mehr erfahren
-noRepliesReceived=Warnung: Perspectives hat von den Notaren keine Antwort bekommen. Dies könnte ein Angriff sein oder sie befinden sich hinter einer Firewall / einem Proxy-Server, welche Anfragen an die Notare verhindern.
+noRepliesReceived=Warnung: Perspectives hat von den Notaren keine Antwort bekommen. Dies könnte ein Angriff sein oder Sie befinden sich hinter einer Firewall/einem Proxy-Server, welche Anfragen an die Notare verhindern.
firewallHelp=Firewall-/Proxy-Hilfe
noDataError=Perspectives: Keine Daten. Der Webbrowser hat für diese Verbindung einen leeren URI zurückgegeben. Versuchen Sie, die Seite neu zu laden.
-nonHTTPSError=Perspectives: Notare werden nur bei Webseiten mit aktivem HTTPS kontaktiert.\nDie aktuelle Verbindung mit %1$S verwendet %2$S
-rfc1918Error=Perspectives: Keine Informationen. Die Webseite mit IP-Adresse %1$S befindet sich in einem privaten lokalen Netzwerk. Notarenserver können nur öffentliche Webseiten überwachen.
+nonHTTPSError=Perspectives: Notare werden nur bei Webseiten mit aktivem HTTPS kontaktiert.\nDie aktuelle Verbindung mit %1$S verwendet %2$S.
+rfc1918Error=Perspectives: Keine Informationen. Die Webseite mit IP-Adresse %1$S befindet sich in einem privaten lokalen Netzwerk. Notarserver können nur öffentliche Webseiten überwachen.
noCertError=Perspectives: Keine Informationen. Der Webbrowser konnte kein Zertifikat für %1$S abrufen.
noProbeRequestedError=Perspectives: Keine Informationen. Entsprechend der Einstellungen werden Notare nur für HTTPS Zertifikate kontaktiert, bei denen die Sicherheitsprüfung des Webbrowsers fehlschlägt.
-needsPermission=Perspectives: Keine Informationen. Entsprechend der Einstellungen werden Notare nicht ohne Erlaubnis kontaktiert.
+needsPermission=Perspectives: Keine Informationen. Entsprechend der Einstellungen werden Notare nicht ohne Ihre Erlaubnis kontaktiert.
internalError=Perspectives: Ein interner Fehler ist aufgetreten: %1$S
+updateDefaultListFileError=Unerwarteter Fehler beim Aktualisieren der Standard-Notarliste mittels Datei: %1$S
+updateDefaultListWebError=Unerwarteter Fehler beim Aktualisieren der Standard-Notarliste über Web: %1$S
+loadingCreditsError=Fehler beim Laden der Mitwirkenden: %1$S
+#
noRepliesWarning=Warnung: Perspectives hat von den Notaren keine Antwort bekommen.
-inconsistentWarning=Warnung: Perspectives hat dieses Zertifikat NICHT durchgehend gesehen.
-thresholdWarning=Warnung: Perspectives hat dieses Zertifikat erst seit %1$S Tag(en) durchgehend gesehen, Schwellwert ist %2$S Tage.
-verifiedMessage=Überprüft: Perspectives hat dieses Zertifikat seit %1$S Tag(en) durchgehend gesehen, Schwellwert ist %2$S Tage.
+inconsistentWarning=Warnung: Perspectives hat dieses Zertifikat NICHT einheitlich gesehen.
+thresholdWarning=Warnung: Perspectives hat dieses Zertifikat erst seit %1$S Tag(en) einheitlich gesehen, Schwellwert ist %2$S Tage.
+verifiedMessage=Überprüft: Perspectives hat dieses Zertifikat seit %1$S Tag(en) einheitlich gesehen, Schwellwert ist %2$S Tage.
exceptionAdded=Perspectives hat eine Sicherheitsausnahme für diese Webseite hinzugefügt.
# Diese Strings, die zu report.js gehören, sind hier, weil report.xul noch nicht geladen worden ist.
invalidURI=Ungültiger URI
-unableToMakeReport=Konnte keinen Bericht für diese Website erstellen.
-notEncryptedNoReport=%1$S ist eine unverschlüsselte Website - es gibt keinen Grund einen Bericht zu senden.
-noResultsNoReport=Keine Ergebnisse, um den Bericht zu erstellen.
+unableToMakeReport=Konnte keinen Bericht für diese Webseite erstellen.
+notEncryptedNoReport=%1$S ist eine unverschlüsselte Webseite - es gibt keinen Grund einen Bericht zu senden.
+noResultsNoReport=Keine Ergebnisse um den Bericht zu erstellen.
noBrowserObject=Kein Webbrowser-Objekt zu diesem Fenster gefunden.
notValidRemoteServer=URL ist kein gültiger Server.
-couldNotAddToWhitelist=Webseite konnte nicht zur Whitelist hinzugefügt werden
+couldNotAddToWhitelist=Webseite konnte nicht zur Whitelist hinzugefügt werden.
# Für den Ergebnisse-Dialog
LegendNotaryAndCurrentKey=Notar und aktueller Schlüssel
LegendKeyHistory=Schlüsselverlauf (Tage)
LegendBrowsersKey=Schlüssel des Webbrowsers
##
contactingNotariesAbout=Frage bei den Notaren über '%1$S' nach
-configuredToWhitelist=Perspectives wurde konfiguriert, Verbindungen mit dieser Webseite automatisch zu erlauben
-configuredToWhitelistWithHost=Perspectives wurde konfiguriert, Verbindungen mit '%1$S' automatisch zu erlauben
+configuredToWhitelist=Perspectives wurde so konfiguriert, dass Verbindungen mit dieser Webseite automatisch erlaubt werden.
+configuredToWhitelistWithHost=Perspectives wurde so konfiguriert, dass Verbindungen mit '%1$S' automatisch erlaubt werden.
addToWhitelist=Zur Whitelist hinzufügen
removeFromWhitelist=Aus der Whitelist entfernen
-validatedButInsecureEmbedded=Perspectives hat das Zertifikat dieser Website überprüft und die Firefox Sicherheitsfehlerseite umgangen. Diese Seite bindet jedoch unsichere Inhalte ein.
+removeFromWhitelistQuestion='%1$S' aus der Whitelist entfernen?
+validatedButInsecureEmbedded=Perspectives hat das Zertifikat dieser Webseite überprüft und die Firefox Sicherheitsfehlerseite umgangen. Diese Seite bindet jedoch unsichere Inhalte ein.
errorParsingNotaryEntry=Fehler beim Analysieren des Notareneintrags für '%1$S'
-couldNotFindLine=Konnte keine Zeile mit '%1$S' finden
+couldNotFindLine=Konnte keine Zeile mit '%1$S' finden.
waitingOnURLData=Warten auf URL-Daten von Firefox (%1$S)
listOfNotariesIsEmpty=Liste von Notarenserver ist leer
notaryLookupFor=Nachfragen bei den Notaren über
results=Ergebnisse
-quorumDuration=Quorum Dauer
+quorumDuration=Mindestdauer
notaryObservations=Beobachtung der Notare
sslKey=SSL-Schlüssel
keyStart=Anfang
@@ -51,6 +56,11 @@ keyEnd=Ende
keyDays=Tage
noResults=Keine Ergebnisse
signature=Unterschrift
+trustedButInsecureEmbedded=Das HTTPS Zertifikat ist vertrauenswürdig, diese Webseite bindet jedoch unsichere Inhalte ein.
+trustedWeaklyButInsecureEmbedded=Das HTTPS Zertifikat ist schwach-vertrauenswürdig, diese Webseite bindet jedoch unsichere Inhalte ein.
+trustedMultipleByBrowser=Diese Webseite benutzt mehrere Zertifikate inklusive des Zertifikats das von Ihrem Browser empfangen und vertraut wird.
+untrustedMultipleNotSeen=Diese Webseite benutzt regelmässig unterschiedliche Zertifikate, aber die meisten Notare haben das Zertifikat welches von Ihrem Browser empfangen wurde nicht vor kurzem gesehen.
+untrustedMultipleNotVerifiable=Perspectives kann diese Webseite nicht überprüfen, da sie regelmässig unterschiedliche Zertifikate verwendet.
#strings for the 'update preferences' dialog in prompt_update()
#this is a lot of text, so we break it up with \ns to make it more readable.
updatePromptTitle=Perspectives Update
diff --git a/plugin/chrome/locale/en-US/notaries.properties b/plugin/chrome/locale/en-US/notaries.properties
index bb8657b..7e2d989 100644
--- a/plugin/chrome/locale/en-US/notaries.properties
+++ b/plugin/chrome/locale/en-US/notaries.properties
@@ -1,47 +1,51 @@
# This file contains localized strings for Perspectives javascript code
-verificationSuccess=Perspectives has verified the security of your connection to this website and has bypassed the security error page
-unableToVerify=Suspected attack: Perspectives was unable to verify the security of your connection to this website
-reportThis=Report This
+verificationSuccess=Perspectives has verified the security of your connection to this website and has bypassed the security error page.
+unableToVerify=Suspected attack: Perspectives was unable to verify the security of your connection to this website.
+reportThis=Report this
yesContactNotaries=Yes, contact Notaries
-learnMore=Learn More
+learnMore=Learn more
hideNotificationReminders=Hide these messages
noRepliesReceived=Warning: Perspectives received no notary replies. This may be an attack or you may be behind a firewall/proxy that blocks notary requests.
firewallHelp=Firewall/Proxy Help
noDataError=Perspectives: No Data. Browser provided an empty URI for this connection. Try hitting refresh.
-nonHTTPSError=Perspectives: Notaries are only contacted for HTTPS enabled websites. \nYour connection to %1$S uses %2$S
+nonHTTPSError=Perspectives: Notaries are only contacted for HTTPS enabled websites. \nYour connection to %1$S uses %2$S.
rfc1918Error=Perspectives: No Information. The site with IP %1$S is on a private local network. Notary servers can only monitor public sites.
-noCertError=Perspectives: No information. The browser was unable to retrieve a certificate for %1$S
-noProbeRequestedError=Perspectives: No Information. Your preferences are set to query notaries only for HTTPS certificates that fail browser security checks.
+noCertError=Perspectives: No information. The browser was unable to retrieve a certificate for %1$S.
+noProbeRequestedError=Perspectives: No Information. Your preferences are set to query notaries only for HTTPS certificates that fail browser security checks.
needsPermission=Perspectives: No Information. Your preferences indicate that Perspectives should not contact Notaries without your permission.
-internalError=Perspectives: An internal error occurred: %1$S
+internalError=Perspectives: An internal error occurred: %1$S.
+updateDefaultListFileError=Unexpected error updating default notary list from file: %1$S.
+updateDefaultListWebError=Unexpected error updating default notary list from web: %1$S.
+loadingCreditsError=Error loading credits: %1$S
noRepliesWarning=Warning: Perspectives received no Notary replies.
inconsistentWarning=Warning: Perspectives has NOT seen this certificate consistently.
-thresholdWarning=Warning: Perspectives has seen this certificate consistently for only %1$S days, threshold is %2$S days
-verifiedMessage=Verified: Perspectives has seen this certificate consistently for %1$S days, threshold is %2$S days
-exceptionAdded=Perspectives has added a security exception for this site
+thresholdWarning=Warning: Perspectives has seen this certificate consistently for only %1$S days, threshold is %2$S days.
+verifiedMessage=Verified: Perspectives has seen this certificate consistently for %1$S days, threshold is %2$S days.
+exceptionAdded=Perspectives has added a security exception for this site.
# These strings for report.js are here because report.xul has not yet been loaded
invalidURI=Invalid URI
-unableToMakeReport=Unable to generate a report for this website
-notEncryptedNoReport=%1$S is not an encrypted website - there is no point in sending a report
-noResultsNoReport=No results to generate report
-noBrowserObject=No browser object found for this window
-notValidRemoteServer=URL is not a valid remote server
+unableToMakeReport=Unable to generate a report for this website.
+notEncryptedNoReport=%1$S is not an encrypted website - there is no point in sending a report.
+noResultsNoReport=No results to generate report.
+noBrowserObject=No browser object found for this window.
+notValidRemoteServer=URL is not a valid remote server.
couldNotAddToWhitelist=Could not add site to whitelist
# For results dialog svg
LegendNotaryAndCurrentKey=Notary and Current Key
LegendKeyHistory=Key History (Days)
LegendBrowsersKey=Browser's Key
#
-contactingNotariesAbout=Contacting notaries about '%1$S'
-configuredToWhitelist=You have configured Perspectives to whitelist connections to this website
-configuredToWhitelistWithHost=You have configured Perspectives to whitelist connections to '%1$S'
-addToWhitelist=Add To Whitelist
+contactingNotariesAbout=Contacting notaries about '%1$S'.
+configuredToWhitelist=You have configured Perspectives to whitelist connections to this website.
+configuredToWhitelistWithHost=You have configured Perspectives to whitelist connections to '%1$S'.
+addToWhitelist=Add to Whitelist
removeFromWhitelist=Remove from Whitelist
-validatedButInsecureEmbedded=Perspectives has validated this website's certificate and bypassed the security error page. However, this page contains insecure embedded content
-errorParsingNotaryEntry=Error parsing notary entry for '%1$S'
-couldNotFindLine=Could not find '%1$S' line
+removeFromWhitelistQuestion=Remove '%1$S' from Whitelist?
+validatedButInsecureEmbedded=Perspectives has validated this website's certificate and bypassed the security error page. However, this page contains insecure embedded content.
+errorParsingNotaryEntry=Error parsing notary entry for '%1$S'.
+couldNotFindLine=Could not find '%1$S' line.
waitingOnURLData=Waiting on URL data (%1$S)
-listOfNotariesIsEmpty=List of notary servers is empty
+listOfNotariesIsEmpty=List of notary servers is empty.
notaryLookupFor=Notary Lookup for
results=Results
quorumDuration=Quorum Duration
@@ -52,9 +56,14 @@ keyEnd=end
keyDays=days
noResults=No Results
signature=Signature
+trustedButInsecureEmbedded=HTTPS Certificate is trusted, but site contains insecure embedded content.
+trustedWeaklyButInsecureEmbedded=HTTPS Certificate is weakly trusted, but site contains insecure embedded content.
+trustedMultipleByBrowser=This site uses multiple certificates, including the certificate received and trusted by your browser.
+untrustedMultipleNotSeen=This site regularly uses multiples certificates, and most Notaries have not recently seen the certificate received by the browser.
+untrustedMultipleNotVerifiable=Perspectives is unable to validate this site, because the site regularly uses multiples certificates.
#strings for the 'update preferences' dialog in prompt_update()
#this is a lot of text, so we break it up with \ns to make it more readable.
updatePromptTitle=Perspectives Update
updatePrompt=Thank you for updating Perspectives. As of Perspectives 4.0, the default setting is to contact notaries for *all* HTTPS sites rather than only when there is a certificate error.\n\nDo you want to contact notaries for all HTTPS sites?\n(This can be changed at any time in the Preferences window)
-updatePromptButtonYes=Yes, contact notaries for all HTTPS sites
-updatePromptButtonNo=No, only check for websites with certificate errors
+updatePromptButtonYes=Yes, contact notaries for all HTTPS sites.
+updatePromptButtonNo=No, only check for websites with certificate errors.
diff --git a/plugin/chrome/locale/es-MX/notaries.properties b/plugin/chrome/locale/es-MX/notaries.properties
index 2653d71..55e57bc 100644
--- a/plugin/chrome/locale/es-MX/notaries.properties
+++ b/plugin/chrome/locale/es-MX/notaries.properties
@@ -13,6 +13,11 @@ noCertError=Perspectives: No hay información. El navegador ha sido incapaz de r
noProbeRequestedError=Perspectives: No hay información. Sus preferencias indican que las notarías deben ser contactadas solamente para certificados HTTPS que fallan la inspección de seguridad de su navegador.
needsPermission=Perspectives: No hay información. Sus preferencias indican que Perspectives no debe contactar notarías sin su autorización.
internalError=Perspectives: Ha ocurrido un error interno: %1$S
+# TODO: translate
+updateDefaultListFileError=Unexpected error updating default notary list from file: %1$S
+updateDefaultListWebError=Unexpected error updating default notary list from web: %1$S
+loadingCreditsError=Error loading credits: %1$S
+#
noRepliesWarning=Advertencia: Perspectives no ha recibido respuesta de las notarías.
inconsistentWarning=Advertencia: Perspectives NO ha visto este certificado de manera consistente.
thresholdWarning=Advertencia: Perspectives ha visto este certificado consistentemente por tan solo %1$S días, mientras que el rango mínimo especificado es de %2$S días
@@ -25,7 +30,7 @@ unableToMakeReport=Imposible generar un reporte para este sitio web
notEncryptedNoReport=%1$S no es un sitio encriptado - Es innecesario mandar un reporte
noResultsNoReport=No hay resultados para generar un reporte
noBrowserObject=No se ha encontrado un objeto de navegador requerido en esta ventana
-notValidRemoteServer=La dirección no corresponde a un servidor remoto válido
+notValidRemoteServer=La dirección no corresponde a un servidor remoto válido
couldNotAddToWhitelist=Imposible agregar el sitio a la lista blanca
# For results dialog svg
@@ -38,6 +43,9 @@ configuredToWhitelist=Usted ha configurado la lista blanca de Perspectives para
configuredToWhitelistWithHost=Usted ha configurado la lista blanca de Perspectives para aceptar conexiones con '%1$S'
addToWhitelist=Agregar a Lista Blanca
removeFromWhitelist=Remover de Lista Blanca
+# TODO: translate
+removeFromWhitelistQuestion=Remove '%1$S' from whitelist?
+#
validatedButInsecureEmbedded=Perspectives ha validado el certificado de este sitio, y eludido la página de error de seguridad de Firefox. Sin embargo, esta página incluye contenido inseguro
errorParsingNotaryEntry=Error interpretando la información de notaría para '%1$S'
couldNotFindLine=Imposible encontrar la línea '%1$S'
@@ -53,6 +61,13 @@ keyEnd=final
keyDays=días
noResults=Sin Resultados
signature=Firma
+# TODO: translate
+trustedButInsecureEmbedded=HTTPS Certificate is trusted, but site contains insecure embedded content.
+trustedWeaklyButInsecureEmbedded=HTTPS Certificate is weakly trusted, but site contains insecure embedded content.
+trustedMultipleByBrowser=This site uses multiple certificates, including the certificate received and trusted by your browser.
+untrustedMultipleNotSeen=This site regularly uses multiples certificates, and most Notaries have not recently seen the certificate received by the browser.
+untrustedMultipleNotVerifiable=Perspectives is unable to validate this site, because the site regularly uses multiples certificates.
+#
#TODO: please translate these
#strings for the 'update preferences' dialog in prompt_update()
#this is a lot of text, so we break it up with \ns to make it more readable.
diff --git a/plugin/chrome/locale/fi/notaries.properties b/plugin/chrome/locale/fi/notaries.properties
index da49849..d64362a 100644
--- a/plugin/chrome/locale/fi/notaries.properties
+++ b/plugin/chrome/locale/fi/notaries.properties
@@ -11,9 +11,14 @@ noDataError=Perspectives: No Data. Browser provided an empty URI for this connec
nonHTTPSError=Perspectives: Notaries are only contacted for HTTPS enabled websites. \nYour connection to %1$S uses %2$S
rfc1918Error=Perspectives: No Information. The site with IP %1$S is on a private local network. Notary servers can only monitor public sites.
noCertError=Perspectives: No information. The browser was unable to retrieve a certificate for %1$S
-noProbeRequestedError=Perspectives: No Information. Your preferences are set to query notaries only for HTTPS certificates that fail browser security checks.
+noProbeRequestedError=Perspectives: No Information. Your preferences are set to query notaries only for HTTPS certificates that fail browser security checks.
needsPermission=Perspectives: No Information. Your preferences indicate that Perspectives should not contact Notaries without your permission.
internalError=Perspectives: An internal error occurred: %1$S
+# TODO: translate
+updateDefaultListFileError=Unexpected error updating default notary list from file: %1$S
+updateDefaultListWebError=Unexpected error updating default notary list from web: %1$S
+loadingCreditsError=Error loading credits: %1$S
+#
noRepliesWarning=Warning: Perspectives received no Notary replies.
inconsistentWarning=Warning: Perspectives has NOT seen this certificate consistently.
thresholdWarning=Warning: Perspectives has seen this certificate consistently for only %1$S days, threshold is %2$S days
@@ -36,6 +41,9 @@ configuredToWhitelist=You have configured Perspectives to whitelist connections
configuredToWhitelistWithHost=You have configured Perspectives to whitelist connections to '%1$S'
addToWhitelist=Add To Whitelist
removeFromWhitelist=Remove from Whitelist
+# TODO: translate
+removeFromWhitelistQuestion=Remove '%1$S' from whitelist?
+#
validatedButInsecureEmbedded=Perspectives has validated this website's certificate and bypassed Firefox's security error page. However, this page contains insecure embedded content
errorParsingNotaryEntry=Error parsing notary entry for '%1$S'
couldNotFindLine=Could not find '%1$S' line
@@ -51,6 +59,13 @@ keyEnd=end
keyDays=days
noResults=No Results
signature=Signature
+# TODO: translate
+trustedButInsecureEmbedded=HTTPS Certificate is trusted, but site contains insecure embedded content.
+trustedWeaklyButInsecureEmbedded=HTTPS Certificate is weakly trusted, but site contains insecure embedded content.
+trustedMultipleByBrowser=This site uses multiple certificates, including the certificate received and trusted by your browser.
+untrustedMultipleNotSeen=This site regularly uses multiples certificates, and most Notaries have not recently seen the certificate received by the browser.
+untrustedMultipleNotVerifiable=Perspectives is unable to validate this site, because the site regularly uses multiples certificates.
+#
#TODO: please translate these
#strings for the 'update preferences' dialog in prompt_update()
#this is a lot of text, so we break it up with \ns to make it more readable.
diff --git a/plugin/chrome/locale/fr/notaries.properties b/plugin/chrome/locale/fr/notaries.properties
index c642668..2ad4d93 100644
--- a/plugin/chrome/locale/fr/notaries.properties
+++ b/plugin/chrome/locale/fr/notaries.properties
@@ -13,6 +13,11 @@ noCertError=Perspectives : aucune information. Le navigateur n'a pas pu récupé
noProbeRequestedError=Perspectives : aucune Information. Vos préférences sont paramétrées pour ne demander aux Notaires que les certificats HTTPS qui font échouer les vérifications de sécurité du navigateur.
needsPermission=Perspectives : aucune Information. Vos préférences indiquent que Perspectives ne devrait pas contacter les Notaires sans votre permission
internalError=Perspectives : une erreur interne s'est produite : %1$S
+# TODO: translate
+updateDefaultListFileError=Unexpected error updating default notary list from file: %1$S
+updateDefaultListWebError=Unexpected error updating default notary list from web: %1$S
+loadingCreditsError=Error loading credits: %1$S
+#
noRepliesWarning=Attention : Perspectives n'a pas reçu de réponses des Notaires.
inconsistentWarning=Attention : Perspectives n'a PAS observé l'usage ce certificat de façon pertinente.
thresholdWarning=Attention : Perspectives a observé l'usage de ce certificat de façon pertinente pendant seulement %1$S jours, le seuil minimum est fixé à %2$S jours
@@ -36,6 +41,9 @@ configuredToWhitelist=Vous avez configuré Perspectives pour mettre sur liste bl
configuredToWhitelistWithHost=Vous avez configuré Perspectives pour mettre sur liste blanche les connexions à « %1$S »
addToWhitelist=Ajouter à la liste blanche
removeFromWhitelist=Supprimer de la liste blanche
+# TODO: translate
+removeFromWhitelistQuestion=Remove '%1$S' from whitelist?
+#
validatedButInsecureEmbedded=Perspectives a validé le certificat de ce site web et contourné la page des erreurs de sécurité de Firefox. Cependant, cette page contient du contenu embarqué non-sécurisé.
errorParsingNotaryEntry=Erreur en analysant l'entrée de Notaire pour « %1$S »
couldNotFindLine=Impossible de trouver la ligne « %1$S »
@@ -51,6 +59,13 @@ keyEnd=fin
keyDays=jours
noResults=Aucun résultat
signature=Signature
+# TODO: translate
+trustedButInsecureEmbedded=HTTPS Certificate is trusted, but site contains insecure embedded content.
+trustedWeaklyButInsecureEmbedded=HTTPS Certificate is weakly trusted, but site contains insecure embedded content.
+trustedMultipleByBrowser=This site uses multiple certificates, including the certificate received and trusted by your browser.
+untrustedMultipleNotSeen=This site regularly uses multiples certificates, and most Notaries have not recently seen the certificate received by the browser.
+untrustedMultipleNotVerifiable=Perspectives is unable to validate this site, because the site regularly uses multiples certificates.
+#
#TODO: please translate these
#strings for the 'update preferences' dialog in prompt_update()
#this is a lot of text, so we break it up with \ns to make it more readable.
diff --git a/plugin/chrome/locale/nl/notaries.properties b/plugin/chrome/locale/nl/notaries.properties
index f6a2601..d78660c 100644
--- a/plugin/chrome/locale/nl/notaries.properties
+++ b/plugin/chrome/locale/nl/notaries.properties
@@ -13,6 +13,11 @@ noCertError=Perspectives: No information. The browser was unable to retrieve a c
noProbeRequestedError=Perspectives: No Information. Your preferences are set to query notaries only for HTTPS certificates that fail browser security checks.
needsPermission=Perspectives: No Information. Your preferences indicate that Perspectives should not contact Notaries without your permission.
internalError=Perspectives: An internal error occurred: %1$S
+# TODO: translate
+updateDefaultListFileError=Unexpected error updating default notary list from file: %1$S
+updateDefaultListWebError=Unexpected error updating default notary list from web: %1$S
+loadingCreditsError=Error loading credits: %1$S
+#
noRepliesWarning=Warning: Perspectives received no Notary replies.
inconsistentWarning=Warning: Perspectives has NOT seen this certificate consistently.
thresholdWarning=Warning: Perspectives has seen this certificate consistently for only %1$S days, threshold is %2$S days
@@ -35,6 +40,9 @@ configuredToWhitelist=You have configured Perspectives to whitelist connections
configuredToWhitelistWithHost=You have configured Perspectives to whitelist connections to '%1$S'
addToWhitelist=Add To Whitelist
removeFromWhitelist=Remove from Whitelist
+# TODO: translate
+removeFromWhitelistQuestion=Remove '%1$S' from whitelist?
+#
validatedButInsecureEmbedded=Perspectives has validated this website's certificate and bypassed Firefox's security error page. However, this page contains insecure embedded content
errorParsingNotaryEntry=Error parsing notary entry for '%1$S'
couldNotFindLine=Could not find '%1$S' line
@@ -50,6 +58,13 @@ keyEnd=end
keyDays=days
noResults=No Results
signature=Signature
+# TODO: translate
+trustedButInsecureEmbedded=HTTPS Certificate is trusted, but site contains insecure embedded content.
+trustedWeaklyButInsecureEmbedded=HTTPS Certificate is weakly trusted, but site contains insecure embedded content.
+trustedMultipleByBrowser=This site uses multiple certificates, including the certificate received and trusted by your browser.
+untrustedMultipleNotSeen=This site regularly uses multiples certificates, and most Notaries have not recently seen the certificate received by the browser.
+untrustedMultipleNotVerifiable=Perspectives is unable to validate this site, because the site regularly uses multiples certificates.
+#
#TODO: please translate these
#strings for the 'update preferences' dialog in prompt_update()
#this is a lot of text, so we break it up with \ns to make it more readable.
diff --git a/plugin/chrome/locale/pl/notaries.properties b/plugin/chrome/locale/pl/notaries.properties
index 1b83ae3..03458c6 100644
--- a/plugin/chrome/locale/pl/notaries.properties
+++ b/plugin/chrome/locale/pl/notaries.properties
@@ -14,6 +14,11 @@ noCertError=Perspectives: Brak informacji. Przeglądarka nie była w stanie pobr
noProbeRequestedError=Perspectives: Brak informacji. Zgodnie z Twoimi ustawieniami, notariusze odpytywani są o certyfikaty HTTPS tylko wtedy, gdy przeglądarka nie jest w stanie sama ich zweryfikować.
needsPermission=Perspectives: Brak informacji. Zgodnie z Twoimi ustawieniami, Perspectives nie powinno kontaktować się z notariuszami bez Twojej zgody.
internalError=Perspectives: Wystąpił błąd wewnętrzny: %1$S
+# TODO: translate
+updateDefaultListFileError=Unexpected error updating default notary list from file: %1$S
+updateDefaultListWebError=Unexpected error updating default notary list from web: %1$S
+loadingCreditsError=Error loading credits: %1$S
+#
noRepliesWarning=Uwaga: Perspectives nie otrzymało żadnej odpowiedzi od notariuszy.
inconsistentWarning=Uwaga: Obserwacje certyfikatu nie były spójne.
thresholdWarning=Uwaga: Obserwacje tego certyfikatu były spójne jedynie przez %1$S dni, próg to %2$S dni
@@ -37,6 +42,9 @@ configuredToWhitelist=Połączenie do tej strony internetowej zostało dodane do
configuredToWhitelistWithHost=Połączenia do '%1$S' zostały dodane do białej listy
addToWhitelist=Dodaj do białej listy
removeFromWhitelist=Usuń z białej listy
+# TODO: translate
+removeFromWhitelistQuestion=Remove '%1$S' from whitelist?
+#
validatedButInsecureEmbedded=Perspectives zweryfikowało certyfikat tej strony i o minęło stronę błędu bezpieczeństwa. Strona ta zawiera jednak niebezpiecznie osadzoną zawartość
errorParsingNotaryEntry=Błąd podczas parsowania wpisu notariusza dla '%1$S'
couldNotFindLine=Nie znaleziono linijki '%1$S'
@@ -52,6 +60,13 @@ keyEnd=koniec
keyDays=dni
noResults=Brak wyników
signature=Podpis
+# TODO: translate
+trustedButInsecureEmbedded=HTTPS Certificate is trusted, but site contains insecure embedded content.
+trustedWeaklyButInsecureEmbedded=HTTPS Certificate is weakly trusted, but site contains insecure embedded content.
+trustedMultipleByBrowser=This site uses multiple certificates, including the certificate received and trusted by your browser.
+untrustedMultipleNotSeen=This site regularly uses multiples certificates, and most Notaries have not recently seen the certificate received by the browser.
+untrustedMultipleNotVerifiable=Perspectives is unable to validate this site, because the site regularly uses multiples certificates.
+#
#strings for the 'update preferences' dialog in prompt_update()
#this is a lot of text, so we break it up with \ns to make it more readable.
updatePromptTitle=Aktualizacja Perspectives
diff --git a/plugin/chrome/locale/zh-CN/notaries.properties b/plugin/chrome/locale/zh-CN/notaries.properties
index 1798f91..ab1b481 100644
--- a/plugin/chrome/locale/zh-CN/notaries.properties
+++ b/plugin/chrome/locale/zh-CN/notaries.properties
@@ -7,12 +7,17 @@ learnMore=了解更多
noRepliesReceived=警告:Perspectives 未收到认证服务器的回复。这可能是由于一个攻击,或者是你的防火墙/代理阻止了认证的请求。
firewallHelp=防火墙/代理帮助
noDataError=Perspectives:无数据。浏览器为这个连接提供了空 URI。请尝试重新载入
-nonHTTPSError=Perspectives:只有访问 HTTPS 站点时才联系认证服务器。\n你连接到 %1$S 使用的是 %2$S
+nonHTTPSError=Perspectives:只有访问 HTTPS 站点时才联系认证服务器。\n你连接到 %1$S 使用的是 %2$S
rfc1918Error=Perspectives:无信息。 IP 为 %1$S 的站点在一个私人局域网中。认证服务器只能监视公开站点。
noCertError=Perspectives:无信息。浏览器找不到 %1$S 的证书
noProbeRequestedError=Perspectives:无信息。你的首选项要求仅在未通过浏览器的安全检测时才为 HTTPS 证书查询认证。
needsPermission=Perspectives:无信息。你的首选项要求未经你的允许,Perspectives 不能联系认证服务器。
internalError=Perspectives:发生内部错误: %1$S
+# TODO: translate
+updateDefaultListFileError=Unexpected error updating default notary list from file: %1$S
+updateDefaultListWebError=Unexpected error updating default notary list from web: %1$S
+loadingCreditsError=Error loading credits: %1$S
+#
noRepliesWarning=警告:Perspectives 未收到Notary的回复。
inconsistentWarning=警告:Perspectives 未见过此的证书。
thresholdWarning=警告:Perspectives 仅连续 %1$S 天见到此证书,最短持续时间是 %1$S 天
@@ -35,6 +40,9 @@ configuredToWhitelist=你已将到此站点的连接加入了 Perspectives 白
configuredToWhitelistWithHost=你已将到 '%1$S' 的连接加入了 Perspectives 白名单
addToWhitelist=添加到白名单
removeFromWhitelist=从白名单移除
+# TODO: translate
+removeFromWhitelistQuestion=Remove '%1$S' from whitelist?
+#
validatedButInsecureEmbedded=Perspectives 已验证此站点的证书并跳过了 Firefox 的安全错误页。然而此页面包含了不安全的嵌入内容
errorParsingNotaryEntry=解析 '%1$S' 的认证条目出错
couldNotFindLine=找不到 '%1$S' 的行
@@ -50,6 +58,13 @@ keyEnd=结束
keyDays=天
noResults=无结果
signature=签名
+# TODO: translate
+trustedButInsecureEmbedded=HTTPS Certificate is trusted, but site contains insecure embedded content.
+trustedWeaklyButInsecureEmbedded=HTTPS Certificate is weakly trusted, but site contains insecure embedded content.
+trustedMultipleByBrowser=This site uses multiple certificates, including the certificate received and trusted by your browser.
+untrustedMultipleNotSeen=This site regularly uses multiples certificates, and most Notaries have not recently seen the certificate received by the browser.
+untrustedMultipleNotVerifiable=Perspectives is unable to validate this site, because the site regularly uses multiples certificates.
+#
#TODO: please translate these
#strings for the 'update preferences' dialog in prompt_update()
#this is a lot of text, so we break it up with \ns to make it more readable.
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/perspectives-extension.git
More information about the Pkg-mozext-commits
mailing list