Sender
diff --git a/WebExtension/data/popup/index.js b/v2/data/popup/index.js
similarity index 76%
rename from WebExtension/data/popup/index.js
rename to v2/data/popup/index.js
index f6b11f7c..4a0f62a6 100644
--- a/WebExtension/data/popup/index.js
+++ b/v2/data/popup/index.js
@@ -4,17 +4,35 @@
var objs;
var contentCache = [];
var selected = {};
-var isPrivate = false;
+var api = {
+ callbacks: {}
+};
+api.on = function(name, callback) {
+ api.callbacks[name] = api.callbacks[name] || [];
+ api.callbacks[name].push(callback);
+};
+api.emit = function(name, data) {
+ (api.callbacks[name] || []).forEach(c => c(data));
+};
+chrome.storage.local.get({
+ 'plug-in/labels': true
+}, prefs => {
+ if (prefs['plug-in/labels']) {
+ document.body.appendChild(Object.assign(document.createElement('script'), {
+ src: 'plug-ins/labels.js'
+ }));
+ }
+});
-var notify = msg => console.error(msg) && chrome.notifications.create(null, {
+const notify = msg => chrome.notifications.create(null, {
type: 'basic',
iconUrl: '/data/icons/notification/48.png',
title: chrome.i18n.getMessage('gmail'),
- message: msg.message || msg,
+ message: msg.message || msg
});
-var qs = function(q, m) {
- var reserved = {
+const qs = function(q, m) {
+ const reserved = {
'stats': 'header div[name="stat"] b',
'accounts': '#accounts',
'content': '#content',
@@ -34,7 +52,7 @@ var qs = function(q, m) {
'read': 'footer div[name="read"]',
'read-all': 'footer div[name="read-all"]',
'email-container': 'header div[name="email-container"]',
- 'iframe': '#content iframe',
+ 'iframe': '#content iframe'
};
q = reserved[q] || q;
qs.cache = qs.cache || [];
@@ -42,7 +60,7 @@ var qs = function(q, m) {
return qs.cache[q];
};
-var html = (() => {
+const html = (() => {
// List of all used elements
const li = document.createElement('li');
@@ -55,17 +73,17 @@ var html = (() => {
return function(tag, txt) {
var tmp;
switch (tag) {
- case 'li':
- tmp = li.cloneNode(false);
- break;
- default:
- tmp = document.createElement(tag);
+ case 'li':
+ tmp = li.cloneNode(false);
+ break;
+ default:
+ tmp = document.createElement(tag);
}
return addContent(tmp, txt);
};
})();
/** objects **/
-var accountSelector = (() => {
+const accountSelector = (() => {
const tmp = qs('email-container');
return {
get text() {
@@ -74,10 +92,11 @@ var accountSelector = (() => {
set text(val) {
localStorage.setItem('last-account', val);
tmp.textContent = val;
- }
+ },
+ gen: xml => xml.title + (xml.label ? ' [' + xml.label + ']' : '')
};
})();
-var stat = (() => {
+const stat = (() => {
const list = qs('stats', true);
return {
get current() {
@@ -94,11 +113,11 @@ var stat = (() => {
}
};
})();
-var body = (function() {
- var date = qs('date');
- var email = qs('email');
- var name = qs('sender');
- var title = qs('title');
+const body = (function() {
+ const date = qs('date');
+ const email = qs('email');
+ const name = qs('sender');
+ const title = qs('title');
return {
get date() {
return date.textContent;
@@ -133,7 +152,7 @@ var body = (function() {
})();
/** Update UI if necessary **/
-var update = (() => {
+const update = (() => {
const old = {
link: null,
id: null,
@@ -192,8 +211,7 @@ var update = (() => {
if (doAccountSelector) {
old.link = selected.parent.xml.link;
- accountSelector.text = selected.parent.xml.title +
- (selected.parent.xml.label ? ' [' + selected.parent.xml.label + ']' : '');
+ accountSelector.text = accountSelector.gen(selected.parent.xml);
}
if (doAccountBody) {
old.id = selected.entry.id;
@@ -202,13 +220,21 @@ var update = (() => {
const messageID = gmail.get.id(selected.entry.link);
stat.current = index + 1;
body.title = selected.entry.title;
- body.titleLink = messageID ? base + '/?shva=1#inbox/' + messageID : selected.entry.link;
+ if (messageID && selected.parent.xml.link.indexOf('#') === -1) {
+ body.titleLink = base + '/?shva=1#inbox/' + messageID;
+ }
+ else if (messageID) {
+ body.titleLink = selected.parent.xml.link + '/' + messageID;
+ }
+ else {
+ body.titleLink = selected.entry.link;
+ }
+
body.name = selected.entry.author_name;
- //body.nameLink = base + "?view=cm&fs=1&tf=1&to=" + selected.entry.author_email;
+ // body.nameLink = base + "?view=cm&fs=1&tf=1&to=" + selected.entry.author_email;
body.nameLink = 'mailto:' + selected.entry.author_email + '?subject=Re: ' + selected.entry.title;
body.email = '<' + selected.entry.author_email + '>';
updateContent();
- isPrivate = selected.parent.isPrivate;
}
if (doNumber) {
old.count = selected.parent.xml.fullcount;
@@ -230,8 +256,8 @@ var update = (() => {
};
})();
-/** Listeners **/
-var Listen = function(query, on, callback, pointer) {
+/* Listeners */
+const Listen = function(query, on, callback, pointer) {
const elem = qs(query);
elem.addEventListener(on, function(e) {
if (elem.getAttribute('disabled') === 'true') {
@@ -280,17 +306,20 @@ new Listen('accounts', 'click', ({target}) => {
new Listen('next', 'click', () => update(false, true));
new Listen('previous', 'click', () => update(true, false));
-var action = (cmd, links = selected.entry.link) => gmail.action(links, cmd).catch(e => e).then(e => {
- if (e && e instanceof Error) { // if error
- notify(e);
- }
- if (cmd === 'rd') {
- qs('read').textContent = locale.get('popup_read');
- qs('read').removeAttribute('disabled');
- }
- else {
- let obj;
- switch (cmd) {
+const action = (cmd, links = selected.entry.link, callback = () => {}) => {
+ chrome.runtime.sendMessage({
+ method: 'gmail.action',
+ cmd,
+ links
+ }, () => {
+ callback();
+ if (cmd === 'rd') {
+ qs('read').textContent = locale.get('popup_read');
+ qs('read').removeAttribute('disabled');
+ }
+ else {
+ let obj;
+ switch (cmd) {
case 'rd':
obj = qs('read');
break;
@@ -300,25 +329,28 @@ var action = (cmd, links = selected.entry.link) => gmail.action(links, cmd).catc
case 'tr':
obj = qs('trash');
break;
- case 'rc_%5Ei':
+ case 'rc_^i':
obj = qs('archive');
break;
case 'sp':
obj = qs('spam');
break;
+ }
+ if (obj) {
+ obj.removeAttribute('wait');
+ obj.removeAttribute('disabled');
+ }
}
- obj.removeAttribute('wait');
- obj.removeAttribute('disabled');
- }
- chrome.runtime.sendMessage({
- method: 'update'
+ chrome.runtime.sendMessage({
+ method: 'update'
+ });
});
-});
+};
new Listen('archive', 'click', () => {
qs('archive').setAttribute('wait', true);
qs('archive').setAttribute('disabled', true);
- action('rc_%5Ei');
+ action('rc_^i');
});
new Listen('trash', 'click', () => {
qs('trash').setAttribute('wait', true);
@@ -343,7 +375,9 @@ new Listen('gmail', 'click', () => chrome.runtime.sendMessage({
method: 'open',
url: selected.parent.xml.link
}, () => window.close()));
-new Listen('settings', 'click', () => chrome.runtime.openOptionsPage());
+new Listen('settings', 'click', () => chrome.tabs.update({
+ url: '/data/options/index.html'
+}, () => window.close()));
new Listen('read-all', 'click', () => {
qs('read-all').setAttribute('wait', true);
qs('read-all').setAttribute('disabled', true);
@@ -361,25 +395,40 @@ function updateContent() {
}
};
+ if (selected.entry) {
+ localStorage.setItem('last-id', selected.entry.id);
+ }
+
const mode = qs('body').getAttribute('mode') === 'expanded' ? 1 : 0;
if (mode === 1) {
const link = selected.entry.link;
const content = contentCache[link];
+ api.emit('update-full-content', link);
if (content) {
qs('content').removeAttribute('loading');
- //content is a safe HTML parsed by (lib/utils/render.js)
- qs('iframe').contentDocument.body.innerHTML = content;
+ if (content) {
+ qs('iframe').contentDocument.querySelector('head base').href = link;
+ qs('iframe').contentDocument.body.textContent = '';
+ qs('iframe').contentDocument.body.appendChild(content);
+ }
}
else {
doSummary();
qs('content').setAttribute('loading', 'true');
- gmail.body(link, mode).then(content => {
+ chrome.storage.local.get({
+ render: true
+ }, prefs => gmail.body(link, prefs.render).then(content => {
if (link === selected.entry.link) {
// For chat conversations, there is no full content mode
- contentCache[link] = content === '...' ? selected.entry.summary + ' ...' : content;
- updateContent();
+ if (content) {
+ contentCache[link] = content;
+ updateContent();
+ }
+ else {
+ qs('content').removeAttribute('loading');
+ }
}
- }).catch(notify);
+ }).catch(notify));
}
}
else {
@@ -406,15 +455,15 @@ const resize = () => {
updateContent();
}
const normal = {
- width: 500,
- height: 240,
+ width: 550,
+ height: 240
};
Object.assign(document.body.style, {
width: (expanded ? prefs.fullWidth : normal.width) + 'px',
height: (expanded ? prefs.fullHeight - 20 : normal.height) + 'px'
});
});
- //Close account selection menu if it is open
+ // Close account selection menu if it is open
qs('accounts').style.display = 'none';
};
resize();
@@ -426,28 +475,33 @@ chrome.storage.onChanged.addListener(prefs => {
// communication
chrome.runtime.onMessage.addListener(request => {
- if (request.method === 'update-date') {
- //This function is called on every server response.
- if (!selected.entry) {
- return;
+ if (request.method === 'validate-current') {
+ if (selected.parent.xml.fullcount === 20) {
+ objs = request.data;
+ update();
}
- body.date = utils.prettyDate(selected.entry.modified);
}
else if (request.method === 'update') {
objs = request.data;
update();
}
+ else if (request.method === 'update-date') {
+ // This function is called on every server response.
+ if (!selected.entry) {
+ return;
+ }
+ body.date = utils.prettyDate(selected.entry.modified);
+ }
});
// init
qs('iframe').addEventListener('load', () => chrome.runtime.getBackgroundPage(b => {
objs = b.checkEmails.getCached();
if (objs && objs.length) {
- //Selected account
+ // Selected account
const unreadEntries = objs.map(obj => obj.xml.entries
.filter(e => obj.newIDs.indexOf(e.id) !== -1))
.reduce((p, c) => p.concat(c), []);
-
// selecting the correct account
if (unreadEntries.length) {
const newestEntry = unreadEntries.sort((p, c) => {
@@ -461,10 +515,14 @@ qs('iframe').addEventListener('load', () => chrome.runtime.getBackgroundPage(b =
if (!selected.entry) {
const lastAccount = localStorage.getItem('last-account');
if (lastAccount) {
- const account = objs.filter(o => o.xml.title === lastAccount).shift();
+ const account = objs.filter(o => accountSelector.gen(o.xml) === lastAccount).shift();
if (account) {
+ const id = localStorage.getItem('last-id');
selected = {
- entry: account.xml.entries[0],
+ entry: [
+ ...account.xml.entries.filter(e => e.id === id),
+ account.xml.entries[0]
+ ].shift(),
parent: account
};
return update();
diff --git a/v2/data/popup/plug-ins/labels.js b/v2/data/popup/plug-ins/labels.js
new file mode 100644
index 00000000..6ea2924c
--- /dev/null
+++ b/v2/data/popup/plug-ins/labels.js
@@ -0,0 +1,98 @@
+/* globals api, gmail, action, selected */
+'use strict';
+
+{
+ let response;
+ let root;
+ let query;
+ let inprogress = '';
+
+ function star(url) {
+ const id = gmail.get.id(url);
+ const o = response.filter(o => o.thread === id).shift();
+ if (o) {
+ document.body.dataset.star = o.labels.some(s => s === 'STARRED');
+ }
+ else {
+ document.body.dataset.star = 'hide';
+ }
+ }
+ const hiddens = ['STARRED', 'Inbox', 'INBOX'];
+ function labels(url) {
+ const id = gmail.get.id(url);
+ const o = response.filter(o => o.thread === id).shift();
+ if (o) {
+ const parent = document.getElementById('labels');
+ const t = document.getElementById('label-template');
+ parent.textContent = '';
+ o.labels.map(s => s === '^i' ? 'Inbox' : s).filter(s => s.startsWith('^') === false && hiddens.indexOf(s) === -1).forEach(label => {
+ const clone = document.importNode(t.content, true);
+ clone.querySelector('span').textContent = label;
+ clone.querySelector('div').dataset.value = label;
+ parent.appendChild(clone);
+ });
+
+ document.body.dataset.labels = true;
+ }
+ else {
+ document.body.dataset.labels = false;
+ }
+ }
+
+ const update = (q = query, callback = () => {}) => chrome.runtime.sendMessage({
+ method: 'gmail.search',
+ url: selected.parent.xml.rootLink,
+ query: q
+ }, r => {
+ if (!r || r instanceof Error) {
+ console.error(r);
+ }
+ else {
+ response = r;
+ query = q;
+ root = selected.parent.xml.rootLink;
+ callback();
+ }
+ });
+
+ function fetch(url = selected.entry.link) {
+ document.body.dataset.labels = false;
+ document.body.dataset.star = 'hide';
+
+ const q = 'in:' + (selected.parent.xml.label || 'inbox') + ' is:unread';
+ if (q === query && root === selected.parent.xml.rootLink && response) {
+ star(url);
+ labels(url);
+ }
+ else {
+ if (inprogress === q) {
+ console.warn('update is rejected; duplicated');
+ }
+ else {
+ inprogress = q;
+ update(q, () => {
+ inprogress = '';
+ star(url);
+ labels(url);
+ });
+ }
+ }
+ }
+
+ api.on('update-full-content', fetch);
+
+ document.getElementById('star').addEventListener('click', () => {
+ const cmd = document.body.dataset.star === 'true' ? 'xst' : 'st';
+ action(cmd, selected.entry.link, update);
+ document.body.dataset.star = cmd === 'xst' ? 'false' : 'true';
+ });
+ document.getElementById('labels').addEventListener('click', ({target}) => {
+ const cmd = target.dataset.cmd;
+ if (cmd === 'remove-label') {
+ const div = target.closest('div');
+ const label = div.dataset.value;
+ action('rc_' + label, selected.entry.link, update);
+ div.remove();
+ }
+ });
+}
diff --git a/v2/data/popup/plug-ins/no-star.svg b/v2/data/popup/plug-ins/no-star.svg
new file mode 100644
index 00000000..ef18682b
--- /dev/null
+++ b/v2/data/popup/plug-ins/no-star.svg
@@ -0,0 +1 @@
+
diff --git a/v2/data/popup/plug-ins/star.svg b/v2/data/popup/plug-ins/star.svg
new file mode 100644
index 00000000..efb16fd1
--- /dev/null
+++ b/v2/data/popup/plug-ins/star.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/WebExtension/data/popup/utils.js b/v2/data/popup/utils.js
similarity index 100%
rename from WebExtension/data/popup/utils.js
rename to v2/data/popup/utils.js
diff --git a/WebExtension/data/popup/wait.gif b/v2/data/popup/wait.gif
similarity index 100%
rename from WebExtension/data/popup/wait.gif
rename to v2/data/popup/wait.gif
diff --git a/WebExtension/data/sounds/0.wav b/v2/data/sounds/0.wav
similarity index 100%
rename from WebExtension/data/sounds/0.wav
rename to v2/data/sounds/0.wav
diff --git a/WebExtension/data/sounds/1.wav b/v2/data/sounds/1.wav
similarity index 100%
rename from WebExtension/data/sounds/1.wav
rename to v2/data/sounds/1.wav
diff --git a/WebExtension/data/sounds/2.wav b/v2/data/sounds/2.wav
similarity index 100%
rename from WebExtension/data/sounds/2.wav
rename to v2/data/sounds/2.wav
diff --git a/WebExtension/data/sounds/3.wav b/v2/data/sounds/3.wav
similarity index 100%
rename from WebExtension/data/sounds/3.wav
rename to v2/data/sounds/3.wav
diff --git a/WebExtension/lib/common.js b/v2/lib/common.js
similarity index 60%
rename from WebExtension/lib/common.js
rename to v2/lib/common.js
index 71ea8731..47f00e01 100644
--- a/WebExtension/lib/common.js
+++ b/v2/lib/common.js
@@ -1,4 +1,6 @@
-/* globals app, config, timer, checkEmails, server, contextmenu, toolbar */
+/* eslint-disable */
+
+/* global app, config, timer, server, contextmenu, toolbar, gmail */
'use strict';
var repeater; // main repeater
@@ -16,10 +18,39 @@ var actions = {
.setTimeout(() => config.notification.silent = false, time * 1000);
},
reset: () => repeater.reset(true),
- onCommand: link => open(link || config.email.url)
+ onCommand: link => {
+ if (link) {
+ open(link);
+ }
+ else if (config.tabs.open.smart) {
+ try {
+ const objs = checkEmails.getCached();
+ if (objs && objs.length) {
+ // Selected account
+ const unreadEntries = [].concat([], ...objs.map(obj => obj.xml.entries));
+ // selecting the correct account
+ if (unreadEntries.length) {
+ const newestEntry = unreadEntries.sort((p, c) => {
+ const d1 = new Date(p.modified);
+ const d2 = new Date(c.modified);
+ return d1 < d2;
+ })[0];
+ if (newestEntry) {
+ return open(newestEntry.link);
+ }
+ }
+ return open(objs[0].xml.entries[0].link);
+ }
+ }
+ catch (e) {}
+ }
+ return open(config.email.url);
+ }
};
-function play(arr) {
+function play(arr = []) {
+ console.log('PLAY', arr);
+
const media = config.notification.sound.media;
const filters = [0, 1, 2, 3, 4].map(index => ({
filter: media['custom' + index].filter,
@@ -50,12 +81,20 @@ function play(arr) {
}
function open(url, inBackground, refresh) {
+ // console.log(new Error().stack);
+ // console.log(url, inBackground, refresh);
+
url = url.replace('@private', ''); // some urls might end with "@private" for private mode
+
function parseUri(str) {
const uri = new URL(str);
if (uri.hostname.startsWith('mail.google')) {
- uri.messageId = (/message_id=([^&]*)|#[^/]*\/([^&]*)/.exec(uri.hostname) || [])[1] || uri.hash.split('/')[1];
- uri.label = (/#([^/]*)/.exec(str) || [])[1];
+ uri.messageId = (/message_id=([^&]*)|#[^/]*\/([^&]*)/.exec(uri.href) || [])[1] || uri.hash.split('/').pop();
+ {
+ const a = uri.hash.substr(1).replace('label/', '').split('/');
+ a.pop();
+ uri.label = a.length ? a.join('/') : '';
+ }
}
return uri;
}
@@ -70,7 +109,16 @@ function open(url, inBackground, refresh) {
}
chrome.tabs.query(options, tabs => resolve(tabs));
})).then(tabs => {
+ tabs = tabs.filter(t => t.url);
+
const parse2 = parseUri(url);
+ // support for basic HTML
+ if (parse2.messageId && config.email.basic) {
+ url = `${parse2.origin}${parse2.pathname}/h/?&th=${parse2.messageId}&v=c`.replace('//h', '/h');
+ if (parse2.label) {
+ url += '&s=l&l=' + parse2.label;
+ }
+ }
for (let i = 0; i < tabs.length; i++) {
const tab = tabs[i];
@@ -99,27 +147,26 @@ function open(url, inBackground, refresh) {
!/to=/.test(url) &&
!/view=cm/.test(url)
) {
- const reload = parse2.messageId && tab.url.indexOf(parse2.messageId) === -1 || refresh;
+ const reload = refresh ||
+ (parse2.messageId && tab.url.indexOf(parse2.messageId) === -1) ||
+ (parse1.messageId && !parse2.messageId); // when opening INBOX when a thread page is open
+
if (tab.active && !reload) {
if (config.tabs.NotifyGmailIsOpen) {
app.notify(app.l10n('msg_1'));
}
}
- else if (tab.active && reload) {
- chrome.tabs.update(tab.id, {url});
- }
- if (tab.active === false) {
- const options = {
- active: true
- };
- if (reload) {
- options.url = url;
- }
- chrome.tabs.update(tab.id, options);
- chrome.windows.update(tab.windowId, {
- focused: true
- });
+ const options = {
+ active: true
+ };
+ if (reload) {
+ options.url = url;
}
+ chrome.tabs.update(tab.id, options);
+ chrome.windows.update(tab.windowId, {
+ focused: true
+ });
+
return;
}
}
@@ -163,7 +210,6 @@ var checkEmails = (function() {
return {
execute: function(forced) {
- console.log('checkEmails.execute', forced);
if (forced) {
toolbar.icon = 'load';
toolbar.badge = 0;
@@ -230,11 +276,11 @@ var checkEmails = (function() {
app.popup.detach();
return;
}
- //Removing not logged-in accounts
+ // Removing not logged-in accounts
objs = objs.filter(function(o) {
return o.network && !o.notAuthorized && o.xml && o.xml.entries;
});
- //Sorting accounts
+ // Sorting accounts
objs.sort(function(a, b) {
var var1 = config.email.alphabetic ? a.xml.title : a.xml.link;
var var2 = config.email.alphabetic ? b.xml.title : b.xml.link;
@@ -251,13 +297,15 @@ var checkEmails = (function() {
return p + c.xml.fullcount;
}, 0);
//
+ cachedEmails = objs;
+ //
if (!anyNewEmails && !forced && count === newCount) {
- app.popup.send('update-date', objs); //Updating the date of the panel
- return; //Everything is clear
+ app.popup.send('update-date', objs); // Updating the date of the panel
+ app.popup.send('validate-current', objs); // maybe the current email is marked as read but still count is 20 (max value for non inbox labels)
+ return; // Everything is clear
}
count = newCount;
//
- cachedEmails = objs;
contextmenu.fireContext();
// Preparing the report
tmp = [];
@@ -267,7 +315,8 @@ var checkEmails = (function() {
return anyNewEmails ? o.newIDs.indexOf(e.id) !== -1 : o.xml.fullcount !== 0;
})
.splice(0, config.email.maxReport)
- .forEach(function(e) {
+ .forEach(e => {
+ e.parent = o;
tmp.push(e);
});
});
@@ -296,6 +345,13 @@ var checkEmails = (function() {
(c.xml.label ? ' [' + c.xml.label + ']' : '') +
' (' + c.xml.fullcount + ')\n';
}, '').replace(/\n$/, '');
+ let singleAccount = false;
+ if (config.email.openInboxOnOne === 1) {
+ singleAccount = objs.map(o => o.xml.rootLink).filter((s, i, l) => l.indexOf(s) === i).length === 1;
+ }
+ else if (config.email.openInboxOnOne === 2) {
+ singleAccount = true;
+ }
if (!forced && !anyNewEmails) {
if (newCount) {
@@ -304,7 +360,7 @@ var checkEmails = (function() {
color = 'red';
toolbar.label = tooltip;
app.popup.send('update', objs);
- if (tmp.length === 1 && config.email.openInboxOnOne === 1) {
+ if (singleAccount) {
app.popup.detach();
}
else {
@@ -330,14 +386,76 @@ var checkEmails = (function() {
toolbar.icon = 'new';
toolbar.badge = newCount;
color = 'new';
- if (tmp.length === 1 && config.email.openInboxOnOne === 1) {
+ if (singleAccount) {
app.popup.detach();
}
else {
app.popup.attach();
}
if (config.notification.show) {
- app.notify(report, '', () => open('https://mail.google.com/'));
+ const buttons = [{
+ title: app.l10n('popup_read'),
+ iconUrl: '/data/images/read.png',
+ callback: () => gmail.action({
+ links: tmp.map(o => o.link),
+ cmd: 'rd'
+ }).catch(() => {}).then(() => window.setTimeout(() => repeater.reset(), 500))
+ }, {
+ title: app.l10n('popup_archive'),
+ iconUrl: '/data/images/archive.png',
+ callback: () => gmail.action({
+ links: tmp.map(o => o.link),
+ cmd: 'rc_^i'
+ }).catch(() => {}).then(() => window.setTimeout(() => repeater.reset(), 500))
+ }, {
+ title: app.l10n('popup_trash'),
+ iconUrl: '/data/images/trash.png',
+ callback: () => gmail.action({
+ links: tmp.map(o => o.link),
+ cmd: 'tr'
+ }).catch(() => {}).then(() => window.setTimeout(() => repeater.reset(), 500))
+ }].filter((o, i) => {
+ if (
+ (i === 0 && config.notification.buttons.markasread) ||
+ (i === 1 && config.notification.buttons.archive) ||
+ (i === 2 && config.notification.buttons.trash)
+ ) {
+ return true;
+ }
+ return false;
+ }).slice(0, 2);
+
+ // convert links
+ const links = [];
+
+ for (const o of tmp) {
+ try {
+ const base = gmail.get.base(o.link);
+ const messageID = gmail.get.id(o.link);
+
+ if (messageID && o.parent.xml.link.indexOf('#') === -1) {
+ links.push(base + '/?shva=1#inbox/' + messageID);
+ }
+ else if (messageID) {
+ links.push(o.parent.xml.link + '/' + messageID);
+ }
+ else {
+ links.push(o.link);
+ }
+ }
+ catch (e) {
+ links.push(o.link);
+ }
+ }
+
+ app.notify(report, '', () => {
+ // use open to open the first link and use chrome.tabs.create for the rest
+ open(links[0]);
+ links.slice(1).forEach(url => chrome.tabs.create({
+ url,
+ active: false
+ }));
+ }, buttons);
}
if (config.notification.sound.play) {
play(tmp);
@@ -359,18 +477,17 @@ chrome.browserAction.onClicked.addListener(() => actions.onCommand());
// start up
app.on('load', () => {
// add a repeater to check all accounts
- repeater = new timer.repeater(
+ repeater = new timer.Repeater(
(config.email.check.first ? config.email.check.first : 5) * 1000,
config.email.check.period * 1000
);
repeater.on(checkEmails.execute);
- if (config.email.check.first === 0) { // manual mode
- console.log('stopped the main repeater');
+ if (config.email.check.first === 0) { // manual mode
repeater.stop();
}
// periodic reset
- resetTimer = new timer.repeater(
+ resetTimer = new timer.Repeater(
config.email.check.resetPeriod * 1000 * 60,
config.email.check.resetPeriod * 1000 * 60
);
@@ -381,13 +498,9 @@ app.on('load', () => {
});
// updates
-app.on('update', () => {
- console.log('update is requested');
- repeater.reset();
-});
+app.on('update', () => repeater && repeater.reset());
// messaging
-chrome.runtime.onMessage.addListener(request => {
- console.log(request);
+chrome.runtime.onMessage.addListener((request, sender, response) => {
const method = request.method;
if (method === 'update' && request.forced) {
repeater.reset(true);
@@ -413,68 +526,64 @@ chrome.runtime.onMessage.addListener(request => {
open(url.link, null, null, url.isPrivate);
}
}
-});
-
-// pref changes
-chrome.storage.onChanged.addListener(prefs => {
- if (prefs.resetPeriod) {
- if (prefs.resetPeriod.newValue) {
- resetTimer.fill(prefs.resetPeriod.newValue * 1000 * 60);
- resetTimer.reset();
- }
- else {
- resetTimer.stop();
- }
- }
- if (prefs.oldFashion) {
- const numberOfAccounts = checkEmails.getCached()
- .map(o => o.xml ? o.xml.title : null)
- .filter((o, i, a) => o && a.indexOf(o) === i)
- .length;
- const hasUnread = checkEmails.getCached()
- .map(o => o.xml ? o.xml.fullcount : 0)
- .reduce((p, c) => p + c, 0);
- if (numberOfAccounts === 1 && prefs.oldFashion.newValue === 1) {
- app.popup.detach();
- }
- else if (hasUnread) {
- app.popup.attach();
- }
- }
- if (prefs.minimal ||
- prefs.feeds_0 || prefs.feeds_1 || prefs.feeds_2 || prefs.feeds_3 || prefs.feeds_4 || prefs.feeds_5 ||
- prefs.feeds_custom
- ) {
- repeater.reset();
- }
- if (prefs.clrPattern) {
- actions.reset();
+ else if (method === 'test-play') {
+ play(null);
}
- if (prefs.period) {
- repeater.fill(prefs.period.newValue * 1000);
+ else if (method === 'gmail.action') {
+ gmail.action(request).then(() => {
+ response();
+ }).catch(e => {
+
+ notify(e.message);
+ response(e);
+ });
+ return true;
}
- if (prefs.backgroundColor) {
- toolbar.color = prefs.backgroundColor.newValue;
+ else if (method === 'gmail.search') {
+ // to prevent errors due to disconnected port
+ const callback = a => {
+ try {
+ response(a);
+ }
+ catch (e) {}
+ };
+
+ gmail.search(request).then(r => callback(r.entries)).catch(() => callback());
+ return true;
}
});
-// FAQs & Feedback & init
-chrome.storage.local.get({
- 'version': null,
- 'welcome': true
-}, prefs => {
- const version = chrome.runtime.getManifest().version;
-
- if (prefs.version ? (prefs.welcome && prefs.version !== version) : true) {
- chrome.storage.local.set({version}, () => {
- chrome.tabs.create({
- url: 'http://add0n.com/gmail-notifier.html?version=' + version +
- '&type=' + (prefs.version ? ('upgrade&p=' + prefs.version) : 'install')
- });
- });
- }
+// init
+app.on('load', () => {
+ const prefs = config.prefs;
+ // init;
+ toolbar.color = prefs.backgroundColor;
});
+
+/* FAQs & Feedback */
{
- const {name, version} = chrome.runtime.getManifest();
- chrome.runtime.setUninstallURL('http://add0n.com/feedback.html?name=' + name + '&version=' + version);
+ const {management, runtime: {onInstalled, setUninstallURL, getManifest}, storage, tabs} = chrome;
+ if (navigator.webdriver !== true) {
+ const page = getManifest().homepage_url;
+ const {name, version} = getManifest();
+ onInstalled.addListener(({reason, previousVersion}) => {
+ management.getSelf(({installType}) => installType === 'normal' && storage.local.get({
+ 'faqs': true,
+ 'last-update': 0
+ }, prefs => {
+ if (reason === 'install' || (prefs.faqs && reason === 'update')) {
+ const doUpdate = (Date.now() - prefs['last-update']) / 1000 / 60 / 60 / 24 > 45;
+ if (doUpdate && previousVersion !== version) {
+ tabs.query({active: true, currentWindow: true}, tbs => tabs.create({
+ url: page + '?version=' + version + (previousVersion ? '&p=' + previousVersion : '') + '&type=' + reason,
+ active: reason === 'install',
+ ...(tbs && tbs.length && {index: tbs[0].index + 1})
+ }));
+ storage.local.set({'last-update': Date.now()});
+ }
+ }
+ }));
+ });
+ setUninstallURL(page + '?rd=feedback&name=' + encodeURIComponent(name) + '&version=' + version);
+ }
}
diff --git a/WebExtension/lib/config.js b/v2/lib/config.js
similarity index 86%
rename from WebExtension/lib/config.js
rename to v2/lib/config.js
index b5b30997..fc40bad3 100644
--- a/WebExtension/lib/config.js
+++ b/v2/lib/config.js
@@ -2,49 +2,28 @@
'use strict';
Object.assign(config.prefs, {
- timeout: 9000,
- maxReport: 3,
- tooltip: true,
- backgroundColor: '#3366CC',
- firstRun: true
+ 'timeout': 9000,
+ 'maxReport': 3,
+ 'tooltip': true,
+ 'firstRun': true,
+ 'version': null,
+ 'notification.sound.media.default.file': null,
+ 'notification.sound.media.custom0.file': null,
+ 'notification.sound.media.custom1.file': null,
+ 'notification.sound.media.custom2.file': null,
+ 'notification.sound.media.custom3.file': null,
+ 'notification.sound.media.custom4.file': null
});
-chrome.storage.local.get(config.prefs, ps => {
- if (ps.firstRun) {
- config.map.number.forEach(name => ps[name] = Number(ps[name]));
- config.map.checkbox.forEach(name => {
- if (ps[name] === 'true') {
- ps[name] = true;
- }
- else if (ps[name] === 'false') {
- ps[name] = false;
- }
- });
- ps.firstRun = false;
- chrome.storage.local.set(ps);
- }
-
- Object.assign(config.prefs, ps);
-
- app.storage = {
- read: id => config.prefs[id],
- write: (id, data) => {
- config.prefs[id] = data;
- chrome.storage.local.set({
- [id]: data
- });
- }
- };
-
- app.emit('load');
-});
chrome.storage.onChanged.addListener(prefs => {
- console.log(prefs);
Object.keys(prefs).forEach(key => config.prefs[key] = prefs[key].newValue);
});
config.email = {
url: 'https://mail.google.com/mail/u/0',
+ get basic() {
+ return config.prefs['basic.html'];
+ },
compose: 'https://mail.google.com/mail/?ui=2&view=cm',
get feeds_0() {
return config.prefs['feeds_0'];
@@ -70,7 +49,7 @@ config.email = {
get feeds() {
var tmp = ['0', '1', '2', '3', '4', '5']
.map(i => config.email['feeds_' + i])
- .map((f, i) => f.split(', ').map(tag => tag ? (tag.startsWith('http:') ? tag : i + '/feed/atom/' + tag) : ''));
+ .map((f, i) => f.split(', ').map(tag => tag ? (tag.startsWith('http:') ? tag : i + '/feed/atom/' + encodeURIComponent(tag)) : ''));
let merged = [];
tmp.forEach(l => merged.push(...l));
merged = merged
@@ -84,7 +63,7 @@ config.email = {
];
}
merged = merged
- //only feeds without '/inbox' show the right full-count
+ // only feeds without '/inbox' show the right full-count
.map(tag => tag.replace('/inbox', ''))
.filter(f => f)
.filter((feed, index, feeds) => feeds.indexOf(feed) === index)
@@ -99,10 +78,10 @@ config.email = {
}
return merged;
},
- get timeout () {
+ get timeout() {
return config.prefs.timeout;
},
- get maxReport () { //Maximum number of simultaneous reports from a single account
+ get maxReport() { // Maximum number of simultaneous reports from a single account
return config.prefs.maxReport;
},
get threatAsNew() { // in minutes
@@ -117,6 +96,9 @@ config.email = {
get doReadOnArchive() {
return config.prefs.doReadOnArchive;
},
+ get inboxRedirection() {
+ return config.prefs.inboxRedirection;
+ },
get openInboxOnOne() {
return config.prefs.oldFashion;
},
@@ -266,6 +248,17 @@ config.notification = {
checked: val === false
});
},
+ buttons: {
+ get markasread() {
+ return config.prefs['notification.buttons.markasread'];
+ },
+ get trash() {
+ return config.prefs['notification.buttons.trash'];
+ },
+ get archive() {
+ return config.prefs['notification.buttons.archive'];
+ }
+ }
};
config.labels = {
@@ -275,7 +268,9 @@ config.labels = {
};
config.ui = {
- badge: true,
+ get badge() {
+ return config.prefs.badge;
+ },
get tooltip() {
return config.prefs.tooltip;
},
@@ -324,6 +319,15 @@ config.tabs = {
return 1;
}
return 0;
+ },
+ get smart() {
+ return config.prefs['smartOpen'];
}
}
};
+
+config['plug-ins'] = {
+ get labels() {
+ return config.prefs['plug-in/labels'];
+ }
+};
diff --git a/WebExtension/lib/context-menu.js b/v2/lib/context-menu.js
similarity index 95%
rename from WebExtension/lib/context-menu.js
rename to v2/lib/context-menu.js
index cf3fa8d4..c07956cb 100644
--- a/WebExtension/lib/context-menu.js
+++ b/v2/lib/context-menu.js
@@ -46,7 +46,7 @@ var contextmenu = {};
parentId: ids.disable,
id,
title: l10n(id),
- contexts: ['browser_action'],
+ contexts: ['browser_action']
}));
chrome.contextMenus.onClicked.addListener(info => {
@@ -82,7 +82,7 @@ var contextmenu = {};
actions.reset();
}
else if (method === 'label_12') {
- open('http://add0n.com/gmail-notifier.html?type=context');
+ open(chrome.runtime.getManifest().homepage_url);
}
});
@@ -109,7 +109,6 @@ var contextmenu = {};
return;
}
cache = accounts.map(a => a.title);
- console.log('building context-menu');
ids.childs.forEach(o => chrome.contextMenus.remove(o.id));
ids.childs = [];
diff --git a/v2/lib/gmail.js b/v2/lib/gmail.js
new file mode 100644
index 00000000..2b5a8fe7
--- /dev/null
+++ b/v2/lib/gmail.js
@@ -0,0 +1,294 @@
+'use strict';
+
+var gmail = {};
+
+gmail.fetch = url => new Promise((resolve, reject) => {
+ const req = new XMLHttpRequest();
+ req.onload = () => resolve({
+ text: () => req.response,
+ status: req.status
+ });
+ req.onerror = () => reject(new Error('action -> fetch Error'));
+ req.open('GET', url);
+ req.send();
+});
+
+gmail.random = () => (Math.random().toString(36) + '00000000000000000').slice(2, 14);
+
+gmail.get = {
+ base: url => /[^?]*/.exec(url)[0].split('/h')[0].replace(/\/$/, ''),
+ id: url => {
+ const tmp = /message_id=([^&]*)/.exec(url);
+ if (tmp && tmp.length) {
+ return tmp[1];
+ }
+ return null;
+ }
+};
+
+{
+ const token = {};
+ gmail.at = {};
+ gmail.at.get = url => {
+ url = gmail.get.base(url);
+ if (token[url]) {
+ // invalidate after 10 minutes
+ if (Date.now() - token[url].date < 10 * 60 * 1000) {
+ return Promise.resolve(token[url]);
+ }
+ }
+ return new Promise((resolve, reject) => {
+ const blind = 'https://mail.google.com/mail/?ui=html&zy=h';
+ fetch(blind, {
+ credentials: 'include'
+ }).then(r => r.url).then(href => {
+ if (href.indexOf('/u/') === -1) {
+ return reject(Error('cannot find basic HTML view from the blind URL'));
+ }
+ const id = url.split('/u/')[1].split('/')[0];
+ const base = href.replace(/\/u\/\d+/, '/u/' + id);
+
+ gmail.fetch(base).then(r => r.text()).then(content => {
+ const parser = new DOMParser();
+ const doc = parser.parseFromString(content, 'text/html');
+
+ const e = doc.querySelector('a[href*="at="]');
+ const input = doc.querySelector('[name="at"]'); // do you really want to use this view
+ if (e) {
+ const args = new URLSearchParams(e.href.split('?')[1]);
+ const at = args.get('at');
+ if (!at) {
+ reject(Error('cannot extract "at" from the base page'));
+ }
+ token[url] = {
+ at,
+ base,
+ date: Date.now()
+ };
+ resolve(token[url]);
+ }
+ else if (input) {
+ // allow access
+ const body = new URLSearchParams();
+ body.append('at', input.value);
+ fetch(base.split('?')[0] + '?a=uia', {
+ method: 'POST',
+ body,
+ credentials: 'include'
+ });
+
+ token[url] = {
+ at: input.value,
+ base,
+ date: Date.now()
+ };
+ resolve(token[url]);
+ }
+ else {
+ reject(Error('cannot get "at" from the base page'));
+ }
+ });
+ });
+ });
+ };
+ gmail.at.invalidate = url => delete token[gmail.get.base(url)];
+}
+
+gmail.formData = obj => {
+ const arr = [];
+ Object.keys(obj).forEach(key => {
+ if (!Array.isArray(obj[key])) {
+ obj[key] = [obj[key]];
+ }
+ obj[key].forEach(v => {
+ arr.push(`${key}=${encodeURIComponent(v)}`);
+ });
+ });
+ return arr.join('&');
+};
+
+gmail.post = (url, params, threads = [], retry = true, express = false) => new Promise((resolve, reject) => {
+ const req = new XMLHttpRequest();
+ chrome.storage.local.get({
+ inboxRedirection: true,
+ express: false
+ }, prefs => {
+ url = (gmail.get.base(url) + '/?' + gmail.formData(params));
+ req.open('POST', url);
+ req.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
+ req.onreadystatechange = () => {
+ // consider post as successful if req.readyState === HEADERS_RECEIVED
+ if (express && prefs.express && req.readyState === 2 && req.status === 200) {
+ resolve(req);
+ }
+ };
+ req.onload = () => {
+ if (req.status === 302 && retry === true) {
+ gmail.at.invalidate(url);
+ gmail.post(url, params, threads, retry = false).then(resolve, reject);
+ }
+ else if (req.status === 404) {
+ reject(new Error('Gmail is rejecting this action'));
+ }
+ else {
+ resolve(req);
+ }
+ };
+ req.onerror = () => reject('');
+ req.send(threads.length ? 't=' + threads.join('&t=') : '');
+ });
+});
+
+
+gmail.action = ({links, cmd}) => {
+ links = typeof links === 'string' ? [links] : links;
+ const url = /[^?]*/.exec(links[0])[0];
+
+ return gmail.at.get(url).then(obj => {
+ const threads = links.map(link => gmail.get.id(link) || '').map(t => t);
+
+ if (threads.length) {
+ const shortcuts = {
+ 'rd': { // mark as read
+ 'tact': 'rd',
+ 'nvp_tbu_go': 'Go',
+ 'redir': '?&'
+ },
+ 'rd-all': { // mark all as read
+ 'tact': 'rd',
+ 'nvp_tbu_go': 'Go'
+ },
+ 'rc_^i': { // archive
+ 'tact': 'arch',
+ 'nvp_tbu_go': 'Go'
+ },
+ 'rc_Inbox': { // archive
+ 'tact': 'arch',
+ 'nvp_tbu_go': 'Go'
+ },
+ 'tr': { // trash
+ 'tact': '',
+ 'nvp_a_tr': 'Delete'
+ },
+ 'move-to-inbox': {
+ 'tact': '',
+ 'nvp_a_ib': 'Move to Inbox'
+ },
+ 'sp': { // report spam
+ 'tact': '',
+ 'nvp_a_sp': 'Report Spam'
+ },
+ 'rc_Spam': { // report spam
+ 'tact': '',
+ 'nvp_a_sp': 'Report Spam'
+ },
+ 'st': { // add-star
+ 'tact': 'st',
+ 'nvp_tbu_go': 'Go',
+ 'bact': ''
+ },
+ 'xst': { // remove star
+ 'tact': 'xst',
+ 'nvp_tbu_go': 'Go',
+ 'bact': ''
+ }
+ };
+ const command = shortcuts[cmd] || {
+ 'tact': cmd,
+ 'nvp_tbu_go': 'Go',
+ 'bact': ''
+ };
+ const body = new URLSearchParams();
+ body.append('at', obj.at);
+ for (const [key, value] of Object.entries(command)) {
+ body.append(key, value);
+ }
+ for (const thread of threads) {
+ body.append('t', thread);
+ }
+ body.append('bact', '');
+
+ if (cmd === 'rc_^i' || cmd === 'rc_Inbox') {
+ chrome.storage.local.get({
+ doReadOnArchive: true
+ }, prefs => {
+ if (prefs.doReadOnArchive === true || prefs.doReadOnArchive === 'true') {
+ gmail.action({
+ links,
+ cmd: 'rd'
+ });
+ }
+ });
+ }
+
+ return fetch(obj.base.split('?')['0'] + '?&s=a', {
+ method: 'POST',
+ body,
+ credentials: 'include'
+ });
+ }
+ return Promise.reject(Error('action -> Error at resolving thread.'));
+ });
+};
+
+gmail.search = async ({url, query}) => {
+ const obj = await gmail.at.get(url);
+ if (obj.at) {
+ const body = new URLSearchParams();
+ body.append('s', 'q');
+ body.append('q', query);
+ body.append('nvp_site_mail', 'Search Mail');
+ body.append('at', obj.at);
+
+ const r = await fetch(obj.base.split('?')[0] + '?s=q&q=' + encodeURIComponent(query) + '&nvp_site_mail=Search%20Mail', {
+ credentials: 'include'
+ });
+ const content = await r.text();
+ const parser = new DOMParser();
+ const doc = parser.parseFromString(content, 'text/html');
+
+ const as = [...doc.querySelectorAll('a[href*="&th="]')];
+
+ const entries = as.map(a => {
+ const ts = a.querySelector('.ts');
+ const es = ts.children.length === 3 ? ts.children : ts.childNodes;
+ if (es.length < 3) {
+ throw Error('Cannot extract "labels", "title", and "snippet" from the element');
+ }
+ const snippet = ts.querySelector('.ts > font:last-child');
+
+ const entry = {};
+ entry.thread = a.href.split('th=')[1].split('&')[0];
+ entry.labels = [...es[0].textContent.split(/\s*,\s*/)].filter(a => a);
+ if (a.closest('tr').querySelector('img[alt=Starred]')) {
+ entry.labels.push('STARRED');
+ }
+ entry.date = ts.closest('td').nextElementSibling.textContent;
+ entry.from = ts.closest('td').previousElementSibling.textContent.replace(/\s+\(\d+\)$/, '');
+ entry.text = snippet ? snippet.textContent.replace(/^ - /, '') : '';
+
+
+ return entry;
+ });
+
+ let count = 0;
+ if (as.length) {
+ const t = doc.querySelector('form[name=f] td[align="right"] b:last-of-type');
+ if (!t) {
+ throw Error('Cannot detect count');
+ }
+ count = Number(t.textContent);
+ }
+
+ return {
+ 'count': count || entries.length,
+ 'name': 'NA',
+ 'logged-in': true,
+ 'responseURL': r.responseURL,
+ entries
+ };
+ }
+ else {
+ throw new Error('Cannot parse search result/1');
+ }
+};
diff --git a/v2/lib/load.js b/v2/lib/load.js
new file mode 100644
index 00000000..5cd969a4
--- /dev/null
+++ b/v2/lib/load.js
@@ -0,0 +1,33 @@
+/* globals config, app */
+'use strict';
+
+chrome.storage.local.get(config.prefs, ps => {
+ // fix preferences from older versions
+ if (ps.firstRun && ps.version) {
+ config.map.number.forEach(name => ps[name] = Number(ps[name]));
+ config.map.checkbox.forEach(name => {
+ if (ps[name] === 'true') {
+ ps[name] = true;
+ }
+ else if (ps[name] === 'false') {
+ ps[name] = false;
+ }
+ });
+ ps.firstRun = false;
+ chrome.storage.local.set(ps);
+ }
+
+ Object.assign(config.prefs, ps);
+
+ app.storage = {
+ read: id => config.prefs[id],
+ write: (id, data) => {
+ config.prefs[id] = data;
+ chrome.storage.local.set({
+ [id]: data
+ });
+ }
+ };
+ // window.setTimeout(() => app.emit('load'), 2000);
+ app.emit('load');
+});
diff --git a/WebExtension/lib/toolbar.js b/v2/lib/toolbar.js
similarity index 86%
rename from WebExtension/lib/toolbar.js
rename to v2/lib/toolbar.js
index 23ba3b0a..85762db6 100644
--- a/WebExtension/lib/toolbar.js
+++ b/v2/lib/toolbar.js
@@ -5,12 +5,11 @@ var toolbar = {};
Object.defineProperty(toolbar, 'badge', {
set(val) {
- console.log('setBadge', val);
if (val > 999 && config.ui.minimal) {
val = '>' + Math.round(val / 1000) + 'K';
}
chrome.browserAction.setBadgeText({
- text: val === 0 ? '' : String(val)
+ text: val === 0 || config.ui.badge === false ? '' : String(val)
});
}
});
@@ -60,7 +59,12 @@ Object.defineProperty(toolbar, 'color', {
}
}
chrome.browserAction.setIcon({
- path: '/data/icons/' + clr + '/19.png'
+ path: {
+ '16': '/data/icons/' + clr + '/16.png',
+ '18': '/data/icons/' + clr + '/18.png',
+ '19': '/data/icons/' + clr + '/19.png',
+ '32': '/data/icons/' + clr + '/32.png'
+ }
});
}
diff --git a/WebExtension/lib/utils/server.js b/v2/lib/utils/server.js
similarity index 100%
rename from WebExtension/lib/utils/server.js
rename to v2/lib/utils/server.js
diff --git a/WebExtension/lib/utils/tab.js b/v2/lib/utils/tab.js
similarity index 100%
rename from WebExtension/lib/utils/tab.js
rename to v2/lib/utils/tab.js
diff --git a/WebExtension/lib/utils/timer.js b/v2/lib/utils/timer.js
similarity index 97%
rename from WebExtension/lib/utils/timer.js
rename to v2/lib/utils/timer.js
index 23e3a580..a61070b2 100644
--- a/WebExtension/lib/utils/timer.js
+++ b/v2/lib/utils/timer.js
@@ -17,7 +17,7 @@ var timer = {};
* }
* });
**/
-timer.repeater = function() {
+timer.Repeater = function() {
let id, callback;
let intervals = [].slice.call(arguments, 0);
function stop() {
diff --git a/WebExtension/lib/wrapper/chrome/app.js b/v2/lib/wrapper/chrome/app.js
similarity index 74%
rename from WebExtension/lib/wrapper/chrome/app.js
rename to v2/lib/wrapper/chrome/app.js
index 4788e76d..0e77e3e5 100644
--- a/WebExtension/lib/wrapper/chrome/app.js
+++ b/v2/lib/wrapper/chrome/app.js
@@ -2,6 +2,7 @@
'use strict';
var isFirefox = navigator.userAgent.indexOf('Firefox') !== -1;
+var isOpera = navigator.userAgent.indexOf('OPR') !== -1;
var EventEmitter = function() {
this.callbacks = {};
@@ -26,6 +27,15 @@ chrome.notifications.onClicked.addListener(function(id) {
app.notify[id]();
}
});
+if (chrome.notifications.onButtonClicked) {
+ chrome.notifications.onButtonClicked.addListener((id, index) => {
+ chrome.notifications.clear(id, function() {});
+ userActions.forEach(c => c());
+ if (app.notify[id] && app.notify[id].buttons) {
+ app.notify[id].buttons[index].callback();
+ }
+ });
+}
app.popup = {
attach: () => chrome.browserAction.setPopup({
@@ -40,7 +50,7 @@ app.popup = {
popup: ''
});
},
- send: (id, data) => chrome.runtime.sendMessage({method: id, data: data})
+ send: (id, data) => chrome.runtime.sendMessage({method: id, data: data}, () => chrome.runtime.lastError)
};
app.get = (url, headers = {}, data, timeout) => new Promise(resolve => {
@@ -64,7 +74,7 @@ app.get = (url, headers = {}, data, timeout) => new Promise(resolve => {
app.l10n = chrome.i18n.getMessage;
-app.notify = function(text, title, callback) {
+app.notify = function(text, title, callback, buttons = []) {
title = title || app.l10n('gmail');
if (config.notification.silent) {
return;
@@ -74,11 +84,15 @@ app.notify = function(text, title, callback) {
isArray = false;
text = text[0];
}
+ if (isOpera && isArray) {
+ isArray = false;
+ text = text.join('\n');
+ }
const options = {
type: isArray ? 'list' : 'basic',
iconUrl: '/data/icons/notification/48.png',
- title: title,
+ title,
message: isArray ? '' : text,
priority: 2,
eventTime: Date.now() + 30000,
@@ -90,14 +104,28 @@ app.notify = function(text, title, callback) {
};
}) : [],
isClickable: true,
- requireInteraction: true
+ requireInteraction: true,
+ buttons: buttons.map(b => ({
+ title: b.title,
+ iconUrl: b.iconUrl
+ }))
};
if (isFirefox) {
delete options.requireInteraction;
+ delete options.buttons;
+ }
+ if (isOpera) {
+ delete options.buttons;
+ }
+ if (config.notification.actions === false) {
+ delete options.buttons;
}
chrome.notifications.create(null, options, id => {
app.notify[id] = callback;
+ if (callback) {
+ app.notify[id].buttons = buttons;
+ }
window.setTimeout(id => {
app.notify[id] = null;
chrome.notifications.clear(id);
@@ -136,17 +164,23 @@ app.sound = (function() {
{
let id;
chrome.webRequest.onCompleted.addListener(d => {
- if (d.frameId) {
- if (d.type === 'main_frame' || d.url.indexOf('act=') !== -1) {
+ if (d.tabId) {
+ if (
+ d.type === 'main_frame' ||
+ d.url.indexOf('&act=') !== -1 ||
+ (d.url.indexOf('/sync/u/') !== -1 && d.method === 'POST')
+ ) {
window.clearTimeout(id);
id = window.setTimeout(() => {
- console.log('webRequest update');
app.emit('update');
- }, 100);
+ }, 2000);
}
}
},
- {urls: ['https://mail.google.com/mail/u*']},
+ {urls: [
+ '*://mail.google.com/mail/u*',
+ '*://mail.google.com/sync/u/*/i/s*'
+ ]},
[]
);
}
diff --git a/WebExtension/lib/wrapper/chrome/background.html b/v2/lib/wrapper/chrome/background.html
similarity index 85%
rename from WebExtension/lib/wrapper/chrome/background.html
rename to v2/lib/wrapper/chrome/background.html
index c503a00f..a01fa20f 100644
--- a/WebExtension/lib/wrapper/chrome/background.html
+++ b/v2/lib/wrapper/chrome/background.html
@@ -11,7 +11,9 @@
+
+
diff --git a/WebExtension/manifest.json b/v2/manifest.json
similarity index 55%
rename from WebExtension/manifest.json
rename to v2/manifest.json
index 01aeb399..1138d2e1 100644
--- a/WebExtension/manifest.json
+++ b/v2/manifest.json
@@ -1,14 +1,13 @@
{
"name": "Notifier for Gmail™",
- "short_name": "ignotifier",
"description": "__MSG_description__",
"author": "InBasic",
- "version": "0.8.0b1",
+ "version": "1.0.5",
"manifest_version": 2,
"default_locale": "en",
"permissions": [
- "https://mail.google.com/mail/",
- "tabs",
+ "*://mail.google.com/mail/",
+ "*://mail.google.com/sync/",
"notifications",
"contextMenus",
"webRequest",
@@ -18,25 +17,29 @@
"notification.png"
],
"browser_action": {
- "default_icon": "data/icons/blue/19.png"
+ "default_icon": {
+ "16": "data/icons/blue/16.png",
+ "18": "data/icons/blue/18.png",
+ "19": "data/icons/blue/19.png",
+ "32": "data/icons/blue/32.png"
+ }
},
"background": {
"page": "lib/wrapper/chrome/background.html"
},
"options_ui": {
- "page": "data/options/redirect.html",
- "chrome_style": true
+ "page": "data/options/index.html",
+ "chrome_style": false,
+ "open_in_tab": true
},
"homepage_url": "http://add0n.com/gmail-notifier.html",
"icons": {
"16": "data/icons/red/16.png",
+ "18": "data/icons/red/18.png",
+ "19": "data/icons/red/19.png",
+ "32": "data/icons/red/32.png",
"48": "data/icons/red/48.png",
+ "64": "data/icons/red/64.png",
"128": "data/icons/red/128.png"
- },
- "applications": {
- "gecko": {
- "id": "jid0-GjwrPchS3Ugt7xydvqVK4DQk8Ls@jetpack",
- "strict_min_version": "55.0"
- }
}
}
diff --git a/v3.classic/LICENSE b/v3.classic/LICENSE
new file mode 120000
index 00000000..ea5b6064
--- /dev/null
+++ b/v3.classic/LICENSE
@@ -0,0 +1 @@
+../LICENSE
\ No newline at end of file
diff --git a/v3.classic/_locales/ar/messages.json b/v3.classic/_locales/ar/messages.json
new file mode 100644
index 00000000..cce53244
--- /dev/null
+++ b/v3.classic/_locales/ar/messages.json
@@ -0,0 +1,758 @@
+{
+ "toolbar_label": {
+ "message": "Notifier for Gmail™",
+ "description": ""
+ },
+ "tooltip_1": {
+ "message": "Left click: Open Gmail or mail preview panel",
+ "description": ""
+ },
+ "tooltip_2": {
+ "message": "Middle (or Ctrl+Left) click: Refresh all accounts",
+ "description": ""
+ },
+ "tooltip_3": {
+ "message": "Right click: Account selections",
+ "description": ""
+ },
+ "description": {
+ "message": "Multiple label and account notifier for Google Mail (Gmail)",
+ "description": ""
+ },
+ "log_in_to_your_account": {
+ "message": "Please sign-in to your Gmail account",
+ "description": ""
+ },
+ "msg_1": {
+ "message": "Tab is already open. Click on the toolbar button to open Gmail in a new tab, or to switch to an existing Gmail tab.",
+ "description": ""
+ },
+ "msg_2": {
+ "message": "الرابط نُسخ إلي الحافظة.",
+ "description": ""
+ },
+ "msg_3": {
+ "message": "النص المحدد نُسخ إلي الحافظة.",
+ "description": ""
+ },
+ "msg_4": {
+ "message": "Note: For the notifier to work properly, you need to be logged-in into your Google account.",
+ "description": ""
+ },
+ "msg_5": {
+ "message": "Select an audio sound file",
+ "description": ""
+ },
+ "label_1": {
+ "message": "تحديث",
+ "description": ""
+ },
+ "label_2": {
+ "message": "الإعدادات",
+ "description": ""
+ },
+ "label_3": {
+ "message": "عدل كل الإشعارات",
+ "description": ""
+ },
+ "label_4": {
+ "message": "لـ5 دقائق",
+ "description": ""
+ },
+ "label_5": {
+ "message": "لـ 15 دقيقة",
+ "description": ""
+ },
+ "label_6": {
+ "message": "لـ 30 دقيقية",
+ "description": ""
+ },
+ "label_7": {
+ "message": "لـ 1 ساعة",
+ "description": ""
+ },
+ "label_8": {
+ "message": "لـ 2 ساعة",
+ "description": ""
+ },
+ "label_9": {
+ "message": "لـ 5 ساعات",
+ "description": ""
+ },
+ "label_13": {
+ "message": "For a custom time period",
+ "description": ""
+ },
+ "label_10": {
+ "message": "Enable notifications (session)",
+ "description": ""
+ },
+ "label_11": {
+ "message": "إنشاء إيميل",
+ "description": ""
+ },
+ "label_12": {
+ "message": "Open FAQs",
+ "description": ""
+ },
+ "label_14": {
+ "message": "Logged-in accounts",
+ "description": ""
+ },
+ "unknown": {
+ "message": "unknown",
+ "description": ""
+ },
+ "and": {
+ "message": "and",
+ "description": ""
+ },
+ "log_into_your_account": {
+ "message": "Please log into your account",
+ "description": ""
+ },
+ "notification": {
+ "message": "From: [author_email][break]Title: [title][break]Summary: [summary]",
+ "description": ""
+ },
+ "options_title": {
+ "message": "إعدادات أشعارات جوجل ميل ",
+ "description": ""
+ },
+ "options_inshort": {
+ "message": "Multiple label and account notifier for Google Mail (Gmail).",
+ "description": ""
+ },
+ "options_donation": {
+ "message": "Support Development",
+ "description": ""
+ },
+ "options_timings": {
+ "message": "Timings:",
+ "description": ""
+ },
+ "options_timings_l1": {
+ "message": "Check for new emails every (in seconds):",
+ "description": ""
+ },
+ "options_timings_l2": {
+ "message": "Minimum period is 10 seconds.",
+ "description": ""
+ },
+ "options_timings_l3": {
+ "message": "Remind for all unread emails every (in minutes):",
+ "description": ""
+ },
+ "options_timings_l4": {
+ "message": "Set the value to zero for none-periodic reminders.",
+ "description": ""
+ },
+ "options_timings_l5": {
+ "message": "Minimum period is 5 minutes.",
+ "description": ""
+ },
+ "options_timings_l6": {
+ "message": "Non-zero value fires both desktop notification and alert sound (similar to new email arrival) eternally if you have unread email(s).",
+ "description": ""
+ },
+ "options_timings_l7": {
+ "message": "Do not check for new emails on startup for (in seconds):",
+ "description": ""
+ },
+ "options_timings_l8": {
+ "message": "Set the value to zero for no email check until the first manual refresh [Not available on Safari].",
+ "description": ""
+ },
+ "options_gmail": {
+ "message": "Gmail:",
+ "description": ""
+ },
+ "options_gmail_1": {
+ "message": "Primary account (/mail/u/0/)",
+ "description": ""
+ },
+ "options_gmail_2": {
+ "message": "Separate labels by \",\" (Comma).",
+ "description": ""
+ },
+ "options_gmail_3": {
+ "message": "Secondary account (/mail/u/1/)",
+ "description": ""
+ },
+ "options_gmail_4": {
+ "message": "Tertiary account (/mail/u/2/)",
+ "description": ""
+ },
+ "options_gmail_5": {
+ "message": "Quaternary account (/mail/u/3/)",
+ "description": ""
+ },
+ "options_gmail_6": {
+ "message": "Quinary account (/mail/u/4/)",
+ "description": ""
+ },
+ "options_gmail_7": {
+ "message": "Senary account (/mail/u/5/)",
+ "description": ""
+ },
+ "options_gmail_8": {
+ "message": "Mark message as read when archiving it",
+ "description": ""
+ },
+ "options_gmail_15": {
+ "message": "Some popular labels:",
+ "description": ""
+ },
+ "options_gmail_10": {
+ "message": "Receive notifications for the following labels and accounts:",
+ "description": ""
+ },
+ "options_gmail_11": {
+ "message": "Custom feeds:",
+ "description": ""
+ },
+ "options_gmail_12": {
+ "message": "Separate feeds by \",\" (Comma). Sample feed: https://mail.google.com/mail/u/0/feed/atom/inbox",
+ "description": ""
+ },
+ "options_gmail_13": {
+ "message": "Note: maximum number for all labels except \"inbox\" is 20 (Google feeds only supply the 20 newest entries)",
+ "description": ""
+ },
+ "options_gmail_14": {
+ "message": "Note: for the Notifier to listen for more than 5 accounts, add feeds URLs to the \"Custom feeds\" field. For instance to listen to the 6 and 7th accounts add: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox",
+ "description": ""
+ },
+ "options_notifications": {
+ "message": "Notifications:",
+ "description": ""
+ },
+ "options_notifications_1": {
+ "message": "Display desktop notification for new emails",
+ "description": ""
+ },
+ "options_notifications_2": {
+ "message": "Show desktop notification for (in seconds):",
+ "description": ""
+ },
+ "options_notifications_3": {
+ "message": "This option may not work based on your OS.",
+ "description": ""
+ },
+ "options_notifications_4": {
+ "message": "Notification format",
+ "description": ""
+ },
+ "options_notifications_5": {
+ "message": "Available variables:",
+ "description": ""
+ },
+ "options_notifications_6": {
+ "message": "Truncate notifications longer than",
+ "description": ""
+ },
+ "options_notifications_7": {
+ "message": "characters for [title] and [summary] fields.",
+ "description": ""
+ },
+ "options_notifications_8": {
+ "message": "To have no ellipsis truncation, use a big number here.",
+ "description": ""
+ },
+ "options_notifications_9": {
+ "message": "Play alert sound for new emails",
+ "description": ""
+ },
+ "options_notifications_10": {
+ "message": "Note for Mac users. From Firefox 28.0, all desktop notifications are handled by Mac Notification Center which causes an extra sound alert. You need to either uncheck this sound notification or the one that is generated by the Notification Center.",
+ "description": ""
+ },
+ "options_notifications_11": {
+ "message": "Display \"Windows taskbar notification\" or \"Mac OS Dock notification\"",
+ "description": ""
+ },
+ "options_notifications_12": {
+ "message": "Taskbar notifications are not supported on Linux OS at the moment.",
+ "description": ""
+ },
+ "options_notifications_13": {
+ "message": "Open toolbar panel when click on the taskbar notification icon (Windows only, beta)",
+ "description": ""
+ },
+ "options_notifications_14": {
+ "message": "This feature is highly experimental and might make your Firefox browser unstable. [Restart required].",
+ "description": ""
+ },
+ "options_notifications_15": {
+ "message": "Default sound notification is",
+ "description": ""
+ },
+ "options_notifications_16": {
+ "message": "Gmail Notifier default alert",
+ "description": ""
+ },
+ "options_notifications_17": {
+ "message": "Checker Plus bell alert",
+ "description": ""
+ },
+ "options_notifications_18": {
+ "message": "Checker Plus ding alert",
+ "description": ""
+ },
+ "options_notifications_19": {
+ "message": "Windows email alert",
+ "description": ""
+ },
+ "options_notifications_20": {
+ "message": "User defined sound",
+ "description": ""
+ },
+ "options_notifications_21": {
+ "message": "User defined notification sound is",
+ "description": ""
+ },
+ "options_notifications_22": {
+ "message": "If your browser is not playing the custom notification sound, try to convert it into a plain WAV format using an online conversion tool.",
+ "description": ""
+ },
+ "options_notifications_35": {
+ "message": "To select a new custom sound, select a built-in sound first and then change the option to custom sound",
+ "description": ""
+ },
+ "options_notifications_23": {
+ "message": "Volume of the sound notification is",
+ "description": ""
+ },
+ "options_notifications_24": {
+ "message": "Volume is a number between 0 to 100 where 100 is the highest volume (default).",
+ "description": ""
+ },
+ "options_notifications_25": {
+ "message": "In safari most likely the default sound notifications are not playing properly, if so use a custom sound file as your notification.",
+ "description": ""
+ },
+ "options_notifications_26": {
+ "message": "Always show tray notification (Windows only)",
+ "description": ""
+ },
+ "options_notifications_27": {
+ "message": "Tray notification will be shown even if there is no unread message.",
+ "description": ""
+ },
+ "options_notifications_28": {
+ "message": "Disable all notifications for a custom time period (in minutes):",
+ "description": ""
+ },
+ "options_notifications_29": {
+ "message": "This option is related to the right click menu on the toolbar button -> disable all notifications -> custom time period.",
+ "description": ""
+ },
+ "options_notifications_30": {
+ "message": "Combine all concurrent desktop notifications into a single notification",
+ "description": ""
+ },
+ "options_notifications_31": {
+ "message": "Custom sound notification",
+ "description": ""
+ },
+ "options_notifications_32": {
+ "message": "name or email contains",
+ "description": ""
+ },
+ "options_notifications_33": {
+ "message": "email title contains",
+ "description": ""
+ },
+ "options_notifications_34": {
+ "message": "email summary contains",
+ "description": ""
+ },
+ "options_notifications_36": {
+ "message": "Ask Gmail to prevent 'inbox.google.com' redirection",
+ "description": ""
+ },
+ "options_notifications_37": {
+ "message": "Display Badge number",
+ "description": ""
+ },
+ "options_notifications_38": {
+ "message": "Faster actions (mark as read, delete, ...) (Consider actions to be resolved when headers are received)",
+ "description": ""
+ },
+ "options_notifications_40": {
+ "message": "Allow quick actions from notification box (maximum two actions) (Chrome only)",
+ "description": ""
+ },
+ "options_notifications_41": {
+ "message": "Mark as Read",
+ "description": ""
+ },
+ "options_notifications_42": {
+ "message": "Archive",
+ "description": ""
+ },
+ "options_notifications_43": {
+ "message": "Trash",
+ "description": ""
+ },
+ "options_tab": {
+ "message": "Tab Opening:",
+ "description": ""
+ },
+ "options_tab_1": {
+ "message": "Search for an open Gmail account only on the active window",
+ "description": ""
+ },
+ "options_tab_2": {
+ "message": "Do not search other browser windows for open Gmail accounts. If Gmail is not open in the active window, open a new tab.",
+ "description": ""
+ },
+ "options_tab_3": {
+ "message": "Open new Gmail account next to the active tab",
+ "description": ""
+ },
+ "options_tab_4": {
+ "message": "Open Gmail account in the active tab",
+ "description": ""
+ },
+ "options_tab_5": {
+ "message": "Open Gmail account in a background tab",
+ "description": ""
+ },
+ "options_tab_6": {
+ "message": "Open Gmail account in a new window",
+ "description": ""
+ },
+ "options_tab_7": {
+ "message": "Always use blank tabs instead of opening a new tab when open in tab is activated",
+ "description": ""
+ },
+ "options_tab_8": {
+ "message": "Ignore opened Gmail tabs",
+ "description": ""
+ },
+ "options_tab_9": {
+ "message": "When unchecked, Gmail Notifier checks either active window or all open windows for open instance of Gmail and switch to the tab when tab opening is requested.",
+ "description": ""
+ },
+ "options_tab_10": {
+ "message": "Open emails in basic HTML mode",
+ "description": ""
+ },
+ "options_toolbar": {
+ "message": "Toolbar:",
+ "description": ""
+ },
+ "options_toolbar_1": {
+ "message": "Toolbar button behaviour",
+ "description": ""
+ },
+ "options_toolbar_2": {
+ "message": "Always open email preview panel",
+ "description": ""
+ },
+ "options_toolbar_3": {
+ "message": "Open Gmail account if only one account is logged-in",
+ "description": ""
+ },
+ "options_toolbar_18": {
+ "message": "Open Gmail account (forced)",
+ "description": ""
+ },
+ "options_toolbar_4": {
+ "message": "Toolbar panel mode",
+ "description": ""
+ },
+ "options_toolbar_5": {
+ "message": "Show summary only",
+ "description": ""
+ },
+ "options_toolbar_6": {
+ "message": "Show full content",
+ "description": ""
+ },
+ "options_toolbar_7": {
+ "message": "Toolbar panel width in the full-content view mode is (in pixels):",
+ "description": ""
+ },
+ "options_toolbar_8": {
+ "message": "Minimum width is 500px.",
+ "description": ""
+ },
+ "options_toolbar_9": {
+ "message": "Toolbar panel height in the full-content view mode is (in pixels):",
+ "description": ""
+ },
+ "options_toolbar_10": {
+ "message": "Minimum height is 500px.",
+ "description": ""
+ },
+ "options_toolbar_11": {
+ "message": "Support keyboard shortcuts on the toolbar panel",
+ "description": ""
+ },
+ "options_toolbar_12": {
+ "message": "!: Report as spam, #: Trash, e: Archive, Shift + i: Mark as read.",
+ "description": ""
+ },
+ "options_toolbar_13": {
+ "message": "Render emails as HTML in full-content mode",
+ "description": ""
+ },
+ "options_toolbar_14": {
+ "message": "If you prefer text-only rendering in the full-content mode, uncheck the box.",
+ "description": ""
+ },
+ "options_toolbar_15": {
+ "message": "Middle-click on the toolbar button to",
+ "description": ""
+ },
+ "options_toolbar_16": {
+ "message": "Refresh all accounts",
+ "description": ""
+ },
+ "options_toolbar_17": {
+ "message": "Open primary Gmail account",
+ "description": ""
+ },
+ "options_misc": {
+ "message": "Miscellaneous:",
+ "description": ""
+ },
+ "options_misc_1": {
+ "message": "Sort accounts alphabetically",
+ "description": ""
+ },
+ "options_misc_2": {
+ "message": "The default order type is logged-in order.",
+ "description": ""
+ },
+ "options_misc_3": {
+ "message": "Toolbar color pattern is",
+ "description": ""
+ },
+ "options_misc_4": {
+ "message": "Gray color for \"No Unread\" and blue color for \"Disconnected\"",
+ "description": ""
+ },
+ "options_misc_5": {
+ "message": "Blue color for \"No Unread\" and gray color for \"Disconnected\"",
+ "description": ""
+ },
+ "options_misc_9": {
+ "message": "Red color for \"No Unread\" and gray color for \"Disconnected\"",
+ "description": ""
+ },
+ "options_misc_6": {
+ "message": "Show desktop notification to warn that Gmail is already opened in the active tab",
+ "description": ""
+ },
+ "options_misc_7": {
+ "message": "Show welcome page on upgrade",
+ "description": ""
+ },
+ "options_misc_8": {
+ "message": "Reset all settings back to factory",
+ "description": ""
+ },
+ "options_misc_10": {
+ "message": "Only fire desktop and sound notifications when email has arrived in less than (in minutes): ",
+ "description": ""
+ },
+ "options_misc_11": {
+ "message": "By setting this preference to zero, you will receive neither desktop nor sound notifications; however, you will still get badge notification.",
+ "description": ""
+ },
+ "options_misc_12": {
+ "message": "Do not include login details in the tooltip text",
+ "description": ""
+ },
+ "options_misc_13": {
+ "message": "By default, the notifier updates tooltip text of the toolbar button with login info. By unchecking this option, the tooltip text remains the default value.",
+ "description": ""
+ },
+ "options_misc_14": {
+ "message": "Do not show the exact badge number when the number of unread emails is greater than 999",
+ "description": ""
+ },
+ "options_misc_15": {
+ "message": "Open FAQs page on updates",
+ "description": ""
+ },
+ "options_plugins": {
+ "message": "Plug-ins:",
+ "description": ""
+ },
+ "options_plugins_1": {
+ "message": "Gmail labels and star button (experimental)",
+ "description": ""
+ },
+ "options_plugins_2": {
+ "message": "This plugin displays the star button as well as thread's labels in the popup (expanded mode only).",
+ "description": ""
+ },
+ "options_px": {
+ "message": "px",
+ "description": ""
+ },
+ "options_empty": {
+ "message": "not defined",
+ "description": ""
+ },
+ "options_button_test": {
+ "message": "Play",
+ "description": ""
+ },
+ "options_button_reset": {
+ "message": "Reset Preferences",
+ "description": ""
+ },
+ "popup_settings": {
+ "message": "settings",
+ "description": ""
+ },
+ "popup_of": {
+ "message": "of",
+ "description": ""
+ },
+ "popup_wait": {
+ "message": "Wait...",
+ "description": ""
+ },
+ "popup_date_format": {
+ "message": "%mm %dd, %yy",
+ "description": ""
+ },
+ "popup_no_subject": {
+ "message": "(no subject)",
+ "description": ""
+ },
+ "popup_open_settings": {
+ "message": "Open settings",
+ "description": ""
+ },
+ "popup_open_inbox": {
+ "message": "Open inbox",
+ "description": ""
+ },
+ "popup_archive": {
+ "message": "Archive",
+ "description": ""
+ },
+ "popup_spam": {
+ "message": "Spam",
+ "description": ""
+ },
+ "popup_trash": {
+ "message": "Trash",
+ "description": ""
+ },
+ "popup_refresh": {
+ "message": "Refresh",
+ "description": ""
+ },
+ "popup_read": {
+ "message": "Mark as Read",
+ "description": ""
+ },
+ "popup_read_all": {
+ "message": "Mark all as read",
+ "description": ""
+ },
+ "popup_msg_1": {
+ "message": "just now",
+ "description": ""
+ },
+ "popup_msg_2": {
+ "message": "1 minute ago",
+ "description": ""
+ },
+ "popup_msg_3_format": {
+ "message": "%d minutes ago",
+ "description": ""
+ },
+ "popup_msg_4": {
+ "message": "1 hour ago",
+ "description": ""
+ },
+ "popup_msg_5": {
+ "message": "hours ago",
+ "description": ""
+ },
+ "popup_msg_6": {
+ "message": "Yesterday",
+ "description": ""
+ },
+ "popup_msg_7_format": {
+ "message": "%d days ago",
+ "description": ""
+ },
+ "popup_msg_8_format": {
+ "message": "%d week(s) ago",
+ "description": ""
+ },
+ "popup_msg_9_format": {
+ "message": "%d month(s) ago",
+ "description": ""
+ },
+ "popup_msg_10": {
+ "message": "January",
+ "description": ""
+ },
+ "popup_msg_11": {
+ "message": "February",
+ "description": ""
+ },
+ "popup_msg_12": {
+ "message": "March",
+ "description": ""
+ },
+ "popup_msg_13": {
+ "message": "April",
+ "description": ""
+ },
+ "popup_msg_14": {
+ "message": "May",
+ "description": ""
+ },
+ "popup_msg_15": {
+ "message": "June",
+ "description": ""
+ },
+ "popup_msg_16": {
+ "message": "July",
+ "description": ""
+ },
+ "popup_msg_17": {
+ "message": "August",
+ "description": ""
+ },
+ "popup_msg_18": {
+ "message": "September",
+ "description": ""
+ },
+ "popup_msg_19": {
+ "message": "October",
+ "description": ""
+ },
+ "popup_msg_20": {
+ "message": "November",
+ "description": ""
+ },
+ "popup_msg_21": {
+ "message": "December",
+ "description": ""
+ },
+ "settings_open_title": {
+ "message": "Open options (settings) page",
+ "description": ""
+ },
+ "settings_open_label": {
+ "message": "Open Options",
+ "description": ""
+ },
+ "gmail": {
+ "message": "Notifier for Gmail™",
+ "description": ""
+ }
+}
diff --git a/v3.classic/_locales/be/messages.json b/v3.classic/_locales/be/messages.json
new file mode 100644
index 00000000..f26c4f28
--- /dev/null
+++ b/v3.classic/_locales/be/messages.json
@@ -0,0 +1,620 @@
+{
+ "gmail": {
+ "message": "Notifier for Gmail™"
+ },
+ "toolbar_label": {
+ "message": "Notifier for Gmail™"
+ },
+ "description": {
+ "message": "Апавяшчэнні для некалькіх ярлыкоў і ўліковых запісаў Google Mail (Gmail™)"
+ },
+ "log_in_to_your_account": {
+ "message": "Увайдзіце ў свой уліковы запіс Gmail™"
+ },
+ "msg_1": {
+ "message": "Укладка ўжо адкрыта. Націсніце на кнопку ў панэлі інструментаў, каб адкрыць Gmail у новай укладцы або пераключыцца на існуючую ўкладку Gmail™."
+ },
+ "msg_2": {
+ "message": "Спасылка скапіявана ў буфер абмену."
+ },
+ "msg_3": {
+ "message": "Вылучаны тэкст скапіяваны ў буфер абмену."
+ },
+ "msg_4": {
+ "message": "Заўвага: Для правільнай працы Notifier вам трэба ўвайсці ў свой уліковы запіс Google."
+ },
+ "msg_5": {
+ "message": "Выберыце аўдыяфайл"
+ },
+ "label_1": {
+ "message": "Абнавіць"
+ },
+ "label_2": {
+ "message": "Налады"
+ },
+ "label_3": {
+ "message": "Адключыць усе апавяшчэнні"
+ },
+ "label_4": {
+ "message": "На 5 хвілін"
+ },
+ "label_5": {
+ "message": "На 15 хвілін"
+ },
+ "label_6": {
+ "message": "На 30 хвілін"
+ },
+ "label_7": {
+ "message": "На 1 гадзіну"
+ },
+ "label_8": {
+ "message": "На 2 гадзіны"
+ },
+ "label_9": {
+ "message": "На 5 гадзін"
+ },
+ "label_13": {
+ "message": "На карыстальніцкі перыяд"
+ },
+ "label_10": {
+ "message": "Уключыць апавяшчэнні (сеанс)"
+ },
+ "label_11": {
+ "message": "Напісаць паведамленне"
+ },
+ "label_12": {
+ "message": "Адкрыць ЧаПы"
+ },
+ "label_14": {
+ "message": "Адкрыць Gmail"
+ },
+ "label_15": {
+ "message": "Уключаныя ўліковыя запісы"
+ },
+ "unknown": {
+ "message": "невядомы"
+ },
+ "and": {
+ "message": "і"
+ },
+ "log_into_your_account": {
+ "message": "Увайдзіце ў свой уліковы запіс"
+ },
+ "notification": {
+ "message": "Ад: [author_email][break] Загаловак: [title][break] Зводка: [summary]"
+ },
+ "options_title": {
+ "message": "Параметры - Gmail™ Notifier"
+ },
+ "options_inshort": {
+ "message": "Апавяшчэнні для некалькіх ярлыкоў і ўліковых запісаў Google Mail (Gmail™)"
+ },
+ "options_donation": {
+ "message": "Падтрымаць распрацоўку"
+ },
+ "options_timings": {
+ "message": "Час:"
+ },
+ "options_timings_l1": {
+ "message": "Правяраць пошту кожныя (у секундах):"
+ },
+ "options_timings_l2": {
+ "message": "Мінімальны перыяд 10 секунд."
+ },
+ "options_timings_l3": {
+ "message": "Нагадваць пра непрачытаныя паведамленні кожныя (у хвілінах):"
+ },
+ "options_timings_l4": {
+ "message": "Задайце нулявое значэнне, каб апавяшчаць неперыядычна."
+ },
+ "options_timings_l5": {
+ "message": "Мінімальны перыяд 5 хвілін."
+ },
+ "options_timings_l6": {
+ "message": "Пры ненулявым значэнні і апавяшчэнні працоўнага стала, і гукавыя абвесткі (як і пры атрыманні новых паведамленняў) будуць з'яўляцца заўсёды, пакуль ў вас ёсць непрачытаная пошта."
+ },
+ "options_timings_l7": {
+ "message": "Не правяраць пошту пры запуску на працягу (у секундах):"
+ },
+ "options_timings_l8": {
+ "message": "Задайце нулявое значэнне, каб не правяраць пошту да першага ручнога абнаўлення [Недаступна ў Safari]"
+ },
+ "options_timings_l9": {
+ "message": "Адсочваць ўкладкі Gmail і сеткавую актыўнасць, каб абнаўляць Notifier пры зменах."
+ },
+ "options_timings_20": {
+ "message": "Кантраляваць стан бяздзейнасці сістэмы, каб абнаўляць Notifier пры аднаўленні актыўнасці."
+ },
+ "options_gmail": {
+ "message": "Gmail™"
+ },
+ "options_gmail_1": {
+ "message": "Асноўны ўліковы запіс (/mail/u/0/)"
+ },
+ "options_gmail_2": {
+ "message": "Раздзяляйце ярлыкі з дапамогай \",\" (коскі)."
+ },
+ "options_gmail_3": {
+ "message": "Другі ўліковы запіс (/mail/u/1/)"
+ },
+ "options_gmail_4": {
+ "message": "Трэці ўліковы запіс (/mail/u/2/)"
+ },
+ "options_gmail_5": {
+ "message": "Чацвёрты ўліковы запіс (/mail/u/3/)"
+ },
+ "options_gmail_6": {
+ "message": "Пяты ўліковы запіс (/mail/u/4/)"
+ },
+ "options_gmail_7": {
+ "message": "Шосты ўліковы запіс (/mail/u/5/)"
+ },
+ "options_gmail_8": {
+ "message": "Пазначаць паведамленні прачытанымі пры архіваванні"
+ },
+ "options_gmail_15": {
+ "message": "Папулярныя ярлыкі:"
+ },
+ "options_gmail_10": {
+ "message": "Атрымліваць апавяшчэнні для наступных ярлыкоў і ўліковых запісаў:"
+ },
+ "options_gmail_11": {
+ "message": "Карыстальніцкія каналы:"
+ },
+ "options_gmail_12": {
+ "message": "Раздзяляйце каналы з дапамогай \",\" (коскі). Прыклад канала: https://mail.google.com/mail/u/0/feed/atom/inbox"
+ },
+ "options_gmail_13": {
+ "message": "Заўвага: максімальная колькасць ярлыкоў, акрамя \"inbox\", - 20 (каналы Google выдаюць толькі 20 найноўшых запісаў)"
+ },
+ "options_gmail_14": {
+ "message": "Заўвага: каб Notifier слухаў больш за 5 уліковых запісаў, дадайце URL-адрасы каналаў у поле \"Карыстальніцкія каналы\". Напрыклад, каб слухаць 6-ы і 7-ы ўліковыя запісы, дадайце: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox"
+ },
+ "options_notifications": {
+ "message": "Апавяшчэнні"
+ },
+ "options_notifications_1": {
+ "message": "Паказваць апавяшчэнне на працоўным стале для новых паведамленняў"
+ },
+ "options_notifications_2": {
+ "message": "Паказваць апавяшчэнне на працоўным стале на працягу (у секундах):"
+ },
+ "options_notifications_3": {
+ "message": "Гэты параметр можа не працаваць у вашай АС."
+ },
+ "options_notifications_4": {
+ "message": "Фармат апавяшчэнняў"
+ },
+ "options_notifications_5": {
+ "message": "Даступныя пераменныя:"
+ },
+ "options_notifications_6": {
+ "message": "Абразаць апавяшчэнні, даўжэйшыя за"
+ },
+ "options_notifications_7": {
+ "message": "сімвал(-ы/-аў) для палёў [title] і [summary]."
+ },
+ "options_notifications_8": {
+ "message": "Увядзіце тут вялікую лічбу, каб тэкст абразаўся без шматкроп'я."
+ },
+ "options_notifications_9": {
+ "message": "Прайграваць гукавую абвестку пры атрыманні новых паведамленняў"
+ },
+ "options_notifications_10": {
+ "message": "Заўвага для карытальнікаў Mac. У Firefox, пачынаючы ад версіі 28.0, усе апавяшчэнні працоўнага стала апрацоўваюцца Цэнтрам апавяшчэнняў Mac, што прыводзіць да дадатковай гукавой абвесткі. Вам трэба адключыць або гэта гукавое апавяшчэнне, або тое, што стварае Цэнтр апавяшчэнняў."
+ },
+ "options_notifications_11": {
+ "message": "Паказваць \"Апавяшчэнне панэлі заданняў у Windows™\" або \"Апавяшчэнне док-панэлі ў Mac OS\""
+ },
+ "options_notifications_12": {
+ "message": "Апавяшчэнні панэлі заданняў на дадзены момант не падтрымліваюцца ў АС Linux."
+ },
+ "options_notifications_13": {
+ "message": "Адкрываць панэль перадпрагляду пры націсканні на значок апавяшчэння панэлі заданняў (толькі Windows™, бэта)"
+ },
+ "options_notifications_14": {
+ "message": "Гэта эксперыментальная функцыя, яна можа прывесці да нестабільнай працы Firefox. [Патрабуецца перазапуск]."
+ },
+ "options_notifications_15": {
+ "message": "Прадвызначаны гук апавяшчэння:"
+ },
+ "options_notifications_16": {
+ "message": "Прадвызначаная абвестка Gmail™ Notifier"
+ },
+ "options_notifications_17": {
+ "message": "Званочак з Checker Plus"
+ },
+ "options_notifications_18": {
+ "message": "\"Дзінь\" з Checker Plus"
+ },
+ "options_notifications_19": {
+ "message": "Абвестка пошты з Windows™"
+ },
+ "options_notifications_20": {
+ "message": "Карыстальніцкі гук"
+ },
+ "options_notifications_21": {
+ "message": "Карыстальніцкі гук апавяшчэння:"
+ },
+ "options_notifications_22": {
+ "message": "Калі ваш браўзер не прайграе карыстальніцкі гук апавяшчэння, паспрабуйце ператварыць яго ў фармат WAV з дапамогай анлайн інструментаў."
+ },
+ "options_notifications_35": {
+ "message": "Каб выбраць новы гук, спачатку выберыце ўбудаваны гук, а потым змяніце параметр на карыстальніцкі"
+ },
+ "options_notifications_23": {
+ "message": "Гучнасць гукавога апавяшчэння (у %):"
+ },
+ "options_notifications_24": {
+ "message": "Узровень гучнасці - гэта лік ад 0 да 100, дзе 100 - наймацнейшая гучнасць (прадвазначана)."
+ },
+ "options_notifications_25": {
+ "message": "У Safari прадвызначаныя гукі апавяшчэнняў хутчэй за ўсё не прайграюцца належным чынам, таму выкарыстоўвайце свой гукавы файл для апавяшчэнняў."
+ },
+ "options_notifications_26": {
+ "message": "Заўсёды паказваць апавяшчэнне панэлі заданняў (толькі Windows™)"
+ },
+ "options_notifications_27": {
+ "message": "Апавяшчэнне панэлі заданняў будзе паказвацца нават пры адсутнасці непрачытаных паведамленняў."
+ },
+ "options_notifications_28": {
+ "message": "Адключыць усе апавяшчэнні на перыяд (у хвілінах):"
+ },
+ "options_notifications_29": {
+ "message": "Гэты параметр адпавядае пункту меню правай кнопкі мышы на кнопцы ў панэлі інструментаў -> адключыць усе апавяшчэнні -> карыстальніцкі перыяд."
+ },
+ "options_notifications_30": {
+ "message": "Аб'ядноўваць усе адначасовыя апавяшчэнні працоўнага стала ў адно"
+ },
+ "options_notifications_31": {
+ "message": "Карыстальніцкае апавяшчэнне для"
+ },
+ "options_notifications_32": {
+ "message": "імя або адрас змяшчае"
+ },
+ "options_notifications_33": {
+ "message": "загаловак паведамлення змяшчае"
+ },
+ "options_notifications_34": {
+ "message": "зводка паведамлення змяшчае"
+ },
+ "options_notifications_36": {
+ "message": "Папрасіць Gmail™ не перанакіроўваць на 'inbox.google.com'"
+ },
+ "options_notifications_37": {
+ "message": "Паказваць колькасць непрачытаных паведамленняў на значку (і выбраць колер значка)"
+ },
+ "options_notifications_38": {
+ "message": "Хуткія дзеянні (пазначыць прачынатым, выдаліць, ...) (Дзеянні, якія трэба выканаць пры атрыманні загалоўкаў)"
+ },
+ "options_notifications_40": {
+ "message": "Дазволіць хуткія дзеянні з акна апавяшчэння (не больш за два дзеянні, толькі Chrome)"
+ },
+ "options_notifications_41": {
+ "message": "У прачытанае"
+ },
+ "options_notifications_42": {
+ "message": "У архіў"
+ },
+ "options_notifications_43": {
+ "message": "У сметніцу"
+ },
+ "options_notifications_44": {
+ "message": "Прайграваць гукавое апавяшчэнне ў наступных станах:"
+ },
+ "options_notifications_45": {
+ "message": "Актыўны"
+ },
+ "options_notifications_46": {
+ "message": "Рэжым чакання"
+ },
+ "options_notifications_47": {
+ "message": "Заблакіраваны"
+ },
+ "options_notifications_48": {
+ "message": "Паказваць апавяшчэнне на працоўным стале ў наступных станах:"
+ },
+ "options_tab": {
+ "message": "Адкрыццё ўкладкі:"
+ },
+ "options_tab_1": {
+ "message": "Шукаць адкрытую ўкладку Gmail™ толькі ў актыўным акне"
+ },
+ "options_tab_2": {
+ "message": "Не шукаць адкрытую ўкладку Gmail™ у іншых вокнах браўзера. Калі Gmail™ не адкрыты ў актыўным акне, адкрываць новую ўкладку."
+ },
+ "options_tab_3": {
+ "message": "Адкрываць уліковы запіс Gmail™ побач з актыўнай укладкай"
+ },
+ "options_tab_4": {
+ "message": "Адкрываць уліковы запіс Gmail™ у актыўнай укладцы"
+ },
+ "options_tab_5": {
+ "message": "Адкрываць уліковы запіс Gmail™ у фонавай укладцы"
+ },
+ "options_tab_6": {
+ "message": "Адкрываць уліковы запіс Gmail™ у новым акне"
+ },
+ "options_tab_7": {
+ "message": "Заўсёды выкарыстоўваць пустыя ўкладкі замест таго, каб адкрываць новыя, калі ўключана адкрыванне ўкладкі."
+ },
+ "options_tab_8": {
+ "message": "Ігнараваць адкрытыя ўкладкі Gmail™"
+ },
+ "options_tab_9": {
+ "message": "Калі пазначана, notifier адкрывае паведамленні ў новых укладках браўзера. Калі не пазначана, ён спачатку будзе шукаць у актыўным акне існуючую ўкладку Gmail™ і пераключыцца на яе. Калі не знойдзе, ён будзе шукаць іншыя адкрытыя вокны перад тым, як адкрыць новую ўкладку."
+ },
+ "options_tab_10": {
+ "message": "Адкрываць паведамленні ў рэжыме базавага HTML"
+ },
+ "options_tab_11": {
+ "message": "Пры націску на загаловак непрачытанага паведамлення адкрываецца гэта самае паведамленне ў Gmail™, а не папка \"Уваходныя\""
+ },
+ "options_toolbar": {
+ "message": "Панэль інструментаў"
+ },
+ "options_toolbar_1": {
+ "message": "Паводзіны кнопкі"
+ },
+ "options_toolbar_2": {
+ "message": "Заўсёды адкрываць панэль перадпрагляду"
+ },
+ "options_toolbar_3": {
+ "message": "Адкрываць Gmail™, калі выкананы ўваход толькі ў адзін уліковы запіс"
+ },
+ "options_toolbar_18": {
+ "message": "Адкрыць уліковы запіс Gmail™ (прымусова)"
+ },
+ "options_toolbar_4": {
+ "message": "Рэжым панэлі перадпрагляду"
+ },
+ "options_toolbar_5": {
+ "message": "Паказваць толькі зводку"
+ },
+ "options_toolbar_6": {
+ "message": "Паказваць усё змесціва"
+ },
+ "options_toolbar_7": {
+ "message": "Шырыня панэлі перадпрагляду ў рэжыме прагляду ўсяго змесціва (у пікселах):"
+ },
+ "options_toolbar_8": {
+ "message": "Мінімальная шырыня 500 пкс."
+ },
+ "options_toolbar_9": {
+ "message": "Вышыня панэлі перадпрагляду ў рэжыме прагляду ўсяго змесціва (у пікселах):"
+ },
+ "options_toolbar_10": {
+ "message": "Мінімальная вышыня 500 пкс."
+ },
+ "options_toolbar_11": {
+ "message": "Падтрымліваць спалучэнні клавіш клавіятуры ў панэлі перадпрагляду"
+ },
+ "options_toolbar_12": {
+ "message": "У спам: , У сметніцу: <#>, У архіў:
, У прачытанае: ."
+ },
+ "options_toolbar_13": {
+ "message": "Апрацоўваць паведамленні як HTML у рэжыме прагляду ўсяго змесціва"
+ },
+ "options_toolbar_14": {
+ "message": "Здыміце пазнаку, калі жадаеце апрацоўваць паведамленні ў рэжыме поўнага прагляду, як звычайны тэкст."
+ },
+ "options_toolbar_15": {
+ "message": "Націсканне сярэдній кнопкай мышы па кнопцы ў панэлі інструментаў"
+ },
+ "options_toolbar_16": {
+ "message": "Абнавіць усе ўліковыя запісы"
+ },
+ "options_toolbar_17": {
+ "message": "Адкрыць асноўны ўліковы запіс Gmail™"
+ },
+ "options_misc": {
+ "message": "Рознае"
+ },
+ "options_misc_1": {
+ "message": "Сартаваць уліковыя запісы ў алфавітным парадку"
+ },
+ "options_misc_2": {
+ "message": "Прадвызначаны парадак - па чарзе ўваходу ва ўліковы запіс."
+ },
+ "options_misc_3": {
+ "message": "Колеры значка ў панэлі інструментаў:"
+ },
+ "options_misc_4": {
+ "message": "Шэры - \"Няма непрачытаных\" , сіні - \"Адключаны\""
+ },
+ "options_misc_5": {
+ "message": "Сіні - \"Няма непрачытаных\" , шэры - \"Адключаны\""
+ },
+ "options_misc_9": {
+ "message": "Чырвоны - \"Няма непрачытаных\" , шэры - \"Адключаны\""
+ },
+ "options_misc_6": {
+ "message": "Паказаць апавяшчэнне на працоўным стале, каб папярэдзіць, што Gmail™ ужо адкрыты ў актыўнай укладцы"
+ },
+ "options_misc_7": {
+ "message": "Паказваць прывітальную старонку пасля абнаўлення"
+ },
+ "options_misc_8": {
+ "message": "Скінуць усе налады да завадскіх"
+ },
+ "options_misc_10": {
+ "message": "Запускаць гукавыя апавяшчэнні і апавяшчэнні на працоўным стале, толькі калі паведамленне прыйшло менш чым за (у хвілінах):"
+ },
+ "options_misc_11": {
+ "message": "Пры заданні нулявога значэння вы не будзеце атрымліваць апавяшчэнні працоўнага стала і гукавыя апавяшчэнні, але значок апавяшчэння вы па ранейшаму будзеце бачыць."
+ },
+ "options_misc_12": {
+ "message": "Не ўключаць звесткі аб уліковым запісе ў тэкст усплывальнай падказкі"
+ },
+ "options_misc_13": {
+ "message": "Прадвызначана Notifier абнаўляе ўсплывальную падказку кнопкі інфармацыяй аб уліковым запісе. Пры знятай пазнацы тэкст усплывальнай падказкі застаецца прадвызначаным."
+ },
+ "options_misc_14": {
+ "message": "Не паказваць дакладную лічбу ў значку, калі непрачытаных паведамленняў больш за 999"
+ },
+ "options_misc_15": {
+ "message": "Адкрываць ЧаПы пасля абнаўлення"
+ },
+ "options_misc_16": {
+ "message": "Колеравая тэма панэлі:"
+ },
+ "options_misc_17": {
+ "message": "Светлая"
+ },
+ "options_misc_18": {
+ "message": "Цёмная"
+ },
+ "options_misc_19": {
+ "message": "Сістэмная"
+ },
+ "options_misc_20": {
+ "message": "Скінуць гісторыю для \"Уключаных уліковых запісаў\""
+ },
+ "options_misc_21": {
+ "message": "Скінуць уліковыя запісы"
+ },
+ "options_plugins": {
+ "message": "Плагіны"
+ },
+ "options_plugins_1": {
+ "message": "Кнопка зоркі і ярлыкі Gmail™ (эксперыментальнае)"
+ },
+ "options_plugins_2": {
+ "message": "Гэты плагін паказвае кнопку зоркі і ярлыкі размоў у панэлі перадпрагляду (толькі ў разгорнутым рэжыме)."
+ },
+ "options_styling": {
+ "message": "Стыль"
+ },
+ "options_styling_0": {
+ "message": "Маштаб прагляду электроннай пошты (0,5-4)"
+ },
+ "options_styling_1": {
+ "message": "Карыстальніцкія правілы CSS для верхняй панэлі"
+ },
+ "options_styling_2": {
+ "message": "Карыстальніцкія правілы CSS для прагляду электроннай пошты"
+ },
+ "options_px": {
+ "message": "пкс."
+ },
+ "options_empty": {
+ "message": "не вызначана"
+ },
+ "options_button_test": {
+ "message": "Прайграць гук"
+ },
+ "options_button_reset": {
+ "message": "Скінуць параметры"
+ },
+ "popup_settings": {
+ "message": "Налады"
+ },
+ "popup_of": {
+ "message": "з"
+ },
+ "popup_wait": {
+ "message": "Пачакайце..."
+ },
+ "popup_date_format": {
+ "message": "%dd %mm %yy"
+ },
+ "popup_no_subject": {
+ "message": "(без тэмы)"
+ },
+ "popup_open_settings": {
+ "message": "Адкрыць налады"
+ },
+ "popup_open_inbox": {
+ "message": "Адкрыць Уваходныя"
+ },
+ "popup_archive": {
+ "message": "У архіў"
+ },
+ "popup_spam": {
+ "message": "У спам"
+ },
+ "popup_trash": {
+ "message": "У сметніцу"
+ },
+ "popup_refresh": {
+ "message": "Абнавіць"
+ },
+ "popup_read": {
+ "message": "У прачытанае"
+ },
+ "popup_read_all": {
+ "message": "Усё ў прачытанае"
+ },
+ "popup_toggle_dark": {
+ "message": "Уключэнне і выключэнне цёмнай тэмы"
+ },
+ "popup_msg_1": {
+ "message": "толькі што"
+ },
+ "popup_msg_2": {
+ "message": "1 хвіліну таму"
+ },
+ "popup_msg_3_format": {
+ "message": "%d хв. таму"
+ },
+ "popup_msg_4": {
+ "message": "1 гадзіну таму"
+ },
+ "popup_msg_5": {
+ "message": "г. таму"
+ },
+ "popup_msg_6": {
+ "message": "Учора"
+ },
+ "popup_msg_7_format": {
+ "message": "%d дз. таму"
+ },
+ "popup_msg_8_format": {
+ "message": "%d тыд. таму"
+ },
+ "popup_msg_9_format": {
+ "message": "%d мес. таму"
+ },
+ "popup_msg_10": {
+ "message": "Студзень"
+ },
+ "popup_msg_11": {
+ "message": "Люты"
+ },
+ "popup_msg_12": {
+ "message": "Сакавік"
+ },
+ "popup_msg_13": {
+ "message": "Красавік"
+ },
+ "popup_msg_14": {
+ "message": "Травень"
+ },
+ "popup_msg_15": {
+ "message": "Чэрвень"
+ },
+ "popup_msg_16": {
+ "message": "Ліпень"
+ },
+ "popup_msg_17": {
+ "message": "Жнівень"
+ },
+ "popup_msg_18": {
+ "message": "Верасень"
+ },
+ "popup_msg_19": {
+ "message": "Кастрычнік"
+ },
+ "popup_msg_20": {
+ "message": "Лістапад"
+ },
+ "popup_msg_21": {
+ "message": "Снежань"
+ },
+ "settings_open_title": {
+ "message": "Адкрыць старонку параметраў (налад)"
+ },
+ "settings_open_label": {
+ "message": "Адкрыць параметры"
+ }
+}
diff --git a/v3.classic/_locales/bg/messages.json b/v3.classic/_locales/bg/messages.json
new file mode 100644
index 00000000..08d80db6
--- /dev/null
+++ b/v3.classic/_locales/bg/messages.json
@@ -0,0 +1,758 @@
+{
+ "toolbar_label": {
+ "message": "Notifier for Gmail™",
+ "description": ""
+ },
+ "tooltip_1": {
+ "message": "Щракване с ляво копче: Отваряне на пощата или панела за предварителен преглед",
+ "description": ""
+ },
+ "tooltip_2": {
+ "message": "Щракване със средно копче (или Контрол + Ляво): Обновяване на всички сметки",
+ "description": ""
+ },
+ "tooltip_3": {
+ "message": "Щракване с дясно копче: Избор на сметка",
+ "description": ""
+ },
+ "description": {
+ "message": "Известител за няколко профила в пощата на Гугъл (Джимейл)",
+ "description": ""
+ },
+ "log_in_to_your_account": {
+ "message": "Моля, влезте в профила си в пощата на Гугъл",
+ "description": ""
+ },
+ "msg_1": {
+ "message": "Подпрозорецът вече е отворен. Натиснете копчето на лентата, за да отворите пощата в нов подпрозорец или да преминете към вече отворен раздел.",
+ "description": ""
+ },
+ "msg_2": {
+ "message": "Връзката е копирана в буфера.",
+ "description": ""
+ },
+ "msg_3": {
+ "message": "Избраният текст е копиран в буфера.",
+ "description": ""
+ },
+ "msg_4": {
+ "message": "Бележка: За да работи правилно известителя, трябва да сте влезли в профила си в Гугъл.",
+ "description": ""
+ },
+ "msg_5": {
+ "message": "Изберете звуков файл",
+ "description": ""
+ },
+ "label_1": {
+ "message": "Обновяване",
+ "description": ""
+ },
+ "label_2": {
+ "message": "Настройки",
+ "description": ""
+ },
+ "label_3": {
+ "message": "Изключване на известията",
+ "description": ""
+ },
+ "label_4": {
+ "message": "За 5 минути",
+ "description": ""
+ },
+ "label_5": {
+ "message": "За 15 минути",
+ "description": ""
+ },
+ "label_6": {
+ "message": "За 30 минути",
+ "description": ""
+ },
+ "label_7": {
+ "message": "За 1 час",
+ "description": ""
+ },
+ "label_8": {
+ "message": "За 2 часа",
+ "description": ""
+ },
+ "label_9": {
+ "message": "За 5 часа",
+ "description": ""
+ },
+ "label_13": {
+ "message": "За избран период",
+ "description": ""
+ },
+ "label_10": {
+ "message": "Enable notifications (session)",
+ "description": ""
+ },
+ "label_11": {
+ "message": "Писане на писмо",
+ "description": ""
+ },
+ "label_12": {
+ "message": "Отваряне на въпросника",
+ "description": ""
+ },
+ "label_14": {
+ "message": "Вписани сметки",
+ "description": ""
+ },
+ "unknown": {
+ "message": "неизвестно",
+ "description": ""
+ },
+ "and": {
+ "message": "и",
+ "description": ""
+ },
+ "log_into_your_account": {
+ "message": "Моля, влезте в сметката си",
+ "description": ""
+ },
+ "notification": {
+ "message": "От: [author_email][break] Заглавие: [title][break] Обобщение: [summary]",
+ "description": ""
+ },
+ "options_title": {
+ "message": "Настройки",
+ "description": ""
+ },
+ "options_inshort": {
+ "message": "Известител за няколко профила в пощата на Гугъл (Джимейл).",
+ "description": ""
+ },
+ "options_donation": {
+ "message": "Support Development",
+ "description": ""
+ },
+ "options_timings": {
+ "message": "Timings:",
+ "description": ""
+ },
+ "options_timings_l1": {
+ "message": "Проверка за нови писма на всеки (в секунди):",
+ "description": ""
+ },
+ "options_timings_l2": {
+ "message": "Минималният период е 10 секунди.",
+ "description": ""
+ },
+ "options_timings_l3": {
+ "message": "Напомняне за непрочетени писма на всеки (в минути):",
+ "description": ""
+ },
+ "options_timings_l4": {
+ "message": "Задайте стойността на нула за непериодични напомняния.",
+ "description": ""
+ },
+ "options_timings_l5": {
+ "message": "Минималният период е 5 минути.",
+ "description": ""
+ },
+ "options_timings_l6": {
+ "message": "Ако имате непрочетени писма, стойностите, различни от нула, пускат оповестителен звук и известия на работния плот безкрайно.",
+ "description": ""
+ },
+ "options_timings_l7": {
+ "message": "Без проверка за нови писма при стартиране (в секунди):",
+ "description": ""
+ },
+ "options_timings_l8": {
+ "message": "Задайте стойността на нула, за да не се проверява за нови писма до първото ръчно обновяване [Не е налично в Сафари].",
+ "description": ""
+ },
+ "options_gmail": {
+ "message": "Поща на Гугъл:",
+ "description": ""
+ },
+ "options_gmail_1": {
+ "message": "Главна сметка (/mail/u/0/)",
+ "description": ""
+ },
+ "options_gmail_2": {
+ "message": "Разделяйте етикетите със \",\" (запетая).",
+ "description": ""
+ },
+ "options_gmail_3": {
+ "message": "Втора сметка (/mail/u/1/)",
+ "description": ""
+ },
+ "options_gmail_4": {
+ "message": "Трета сметка (/mail/u/2/)",
+ "description": ""
+ },
+ "options_gmail_5": {
+ "message": "Четвърта сметка (/mail/u/3/)",
+ "description": ""
+ },
+ "options_gmail_6": {
+ "message": "Пета сметка (/mail/u/4/)",
+ "description": ""
+ },
+ "options_gmail_7": {
+ "message": "Шеста сметка (/mail/u/5/)",
+ "description": ""
+ },
+ "options_gmail_8": {
+ "message": "Отбелязване на писмото като прочетено при архвиране",
+ "description": ""
+ },
+ "options_gmail_15": {
+ "message": "Some popular labels:",
+ "description": ""
+ },
+ "options_gmail_10": {
+ "message": "Получаване на известия за следните етикети и сметки:",
+ "description": ""
+ },
+ "options_gmail_11": {
+ "message": "Потребителски емисии:",
+ "description": ""
+ },
+ "options_gmail_12": {
+ "message": "Отделяйте емисиите със \",\" (запетая). Примерна емисия: https://mail.google.com/mail/u/0/feed/atom/inbox",
+ "description": ""
+ },
+ "options_gmail_13": {
+ "message": "Note: maximum number for all labels except \"inbox\" is 20 (Google feeds only supply the 20 newest entries)",
+ "description": ""
+ },
+ "options_gmail_14": {
+ "message": "Note: for the Notifier to listen for more than 5 accounts, add feeds URLs to the \"Custom feeds\" field. For instance to listen to the 6 and 7th accounts add: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox",
+ "description": ""
+ },
+ "options_notifications": {
+ "message": "Известия:",
+ "description": ""
+ },
+ "options_notifications_1": {
+ "message": "Показване на известия на работния плот за нови писма",
+ "description": ""
+ },
+ "options_notifications_2": {
+ "message": "Показване на известия на работния плот за (в секунди):",
+ "description": ""
+ },
+ "options_notifications_3": {
+ "message": "Тази функция може да не работи на вашата операционна система.",
+ "description": ""
+ },
+ "options_notifications_4": {
+ "message": "Формат на известията",
+ "description": ""
+ },
+ "options_notifications_5": {
+ "message": "Налични променливи:",
+ "description": ""
+ },
+ "options_notifications_6": {
+ "message": "Съкращаване на известията, по-дълги от",
+ "description": ""
+ },
+ "options_notifications_7": {
+ "message": "символа за полетата [заглавие] и [обобщение].",
+ "description": ""
+ },
+ "options_notifications_8": {
+ "message": "Ако искате да няма многоточие, използвайте по-голямо число.",
+ "description": ""
+ },
+ "options_notifications_9": {
+ "message": "Свирене на звуково оповестяване за нови писма",
+ "description": ""
+ },
+ "options_notifications_10": {
+ "message": "Бележка за потребителите на Макинтош. От Файърфокс 28.0, всички известия на работния плот ще се управляват от Центъра за известия, което поражда допълнително звуково оповестяване. Трябва да изключите или това оповестяване, или оповестяването в Центъра за известия.",
+ "description": ""
+ },
+ "options_notifications_11": {
+ "message": "Показване на \"Известие в лентата със задачи на Уиндоус\" или \"Известие в лентата на Макинтош\"",
+ "description": ""
+ },
+ "options_notifications_12": {
+ "message": "В момента не се поддържат известия в лентата със задачи под Линукс.",
+ "description": ""
+ },
+ "options_notifications_13": {
+ "message": "Отваряне на панела при щракване върху иконката в лентата на задачите (Само за Уиндоус, в бета)",
+ "description": ""
+ },
+ "options_notifications_14": {
+ "message": "Тази функция е експериментална и може да направи разглеждача Файърфокс нестабилен. [Изисква се повторно пускане].",
+ "description": ""
+ },
+ "options_notifications_15": {
+ "message": "Звуковото известие по подразбиране е",
+ "description": ""
+ },
+ "options_notifications_16": {
+ "message": "Оповестяване по подразбиране",
+ "description": ""
+ },
+ "options_notifications_17": {
+ "message": "Камбана",
+ "description": ""
+ },
+ "options_notifications_18": {
+ "message": "Звънене",
+ "description": ""
+ },
+ "options_notifications_19": {
+ "message": "Оповестяване за поща на Уиндоус",
+ "description": ""
+ },
+ "options_notifications_20": {
+ "message": "Потребителски звук",
+ "description": ""
+ },
+ "options_notifications_21": {
+ "message": "Потребителският оповестителен звук е",
+ "description": ""
+ },
+ "options_notifications_22": {
+ "message": "Ако четецът ви не възпроизвежда потребителския звук, опитайте се да го преобразувате във формат WAV.",
+ "description": ""
+ },
+ "options_notifications_35": {
+ "message": "За да изберете нов потребителски звук, първо изберете вграден звук и след това променете настройката на потребителски.",
+ "description": ""
+ },
+ "options_notifications_23": {
+ "message": "Гръмкостта на звуковото оповестяване е",
+ "description": ""
+ },
+ "options_notifications_24": {
+ "message": "Гръмкостта е число между 0 и 100, където 100 е най-високото (по подразбиране).",
+ "description": ""
+ },
+ "options_notifications_25": {
+ "message": "В Сафари първоначалното звуково известяване може да не работи. Ако е така, използвайте потребителски файл.",
+ "description": ""
+ },
+ "options_notifications_26": {
+ "message": "Винаги да се показват известия в областта за уведомяване (само за Уиндоус)",
+ "description": ""
+ },
+ "options_notifications_27": {
+ "message": "Известията в областта за уведомяване ще се показват дори ако няма непрочетени писма.",
+ "description": ""
+ },
+ "options_notifications_28": {
+ "message": "Изключване на всички известия за избран период (в минути):",
+ "description": ""
+ },
+ "options_notifications_29": {
+ "message": "Тази настройка е свързана с менюто на копчето -> изключване на всички известия -> избран период.",
+ "description": ""
+ },
+ "options_notifications_30": {
+ "message": "Обединяване на всички едновременни известия на работния плот в едно известие",
+ "description": ""
+ },
+ "options_notifications_31": {
+ "message": "Custom sound notification",
+ "description": ""
+ },
+ "options_notifications_32": {
+ "message": "name or email contains",
+ "description": ""
+ },
+ "options_notifications_33": {
+ "message": "заглавието на писмото съдържа",
+ "description": ""
+ },
+ "options_notifications_34": {
+ "message": "обобщението на писмото съдържа",
+ "description": ""
+ },
+ "options_notifications_36": {
+ "message": "Ask Gmail to prevent 'inbox.google.com' redirection",
+ "description": ""
+ },
+ "options_notifications_37": {
+ "message": "Display Badge number",
+ "description": ""
+ },
+ "options_notifications_38": {
+ "message": "Faster actions (mark as read, delete, ...) (Consider actions to be resolved when headers are received)",
+ "description": ""
+ },
+ "options_notifications_40": {
+ "message": "Allow quick actions from notification box (maximum two actions) (Chrome only)",
+ "description": ""
+ },
+ "options_notifications_41": {
+ "message": "Mark as Read",
+ "description": ""
+ },
+ "options_notifications_42": {
+ "message": "Archive",
+ "description": ""
+ },
+ "options_notifications_43": {
+ "message": "Trash",
+ "description": ""
+ },
+ "options_tab": {
+ "message": "Отваряне на подпрозорец:",
+ "description": ""
+ },
+ "options_tab_1": {
+ "message": "Търсене за отворена сметка само в активния прозорец",
+ "description": ""
+ },
+ "options_tab_2": {
+ "message": "Без търсене в други прозорци за отворени сметки. Ако пощата не е отворена в активния прозорец, да се отвори нов подпрозорец.",
+ "description": ""
+ },
+ "options_tab_3": {
+ "message": "Отваряне на пощата до активния подпрозорец",
+ "description": ""
+ },
+ "options_tab_4": {
+ "message": "Отваряне на пощата в активния подпрозорец",
+ "description": ""
+ },
+ "options_tab_5": {
+ "message": "Отваряне на пощата в подпрозорец на заден план",
+ "description": ""
+ },
+ "options_tab_6": {
+ "message": "Отваряне на пощата в нов прозорец",
+ "description": ""
+ },
+ "options_tab_7": {
+ "message": "Винаги да се използват празни подпрозорци вместо да се отваря нов, когато е включено отварянето в подпрозорци",
+ "description": ""
+ },
+ "options_tab_8": {
+ "message": "Пренебрегване на отворените подпрозорци с пощата на Гугъл",
+ "description": ""
+ },
+ "options_tab_9": {
+ "message": "Ако не е отметнато, известителят проверява активния подпрозорец или всички отворени прозорци за отворена поща и превключва на нея при изискване на отварянето на подпрозорец.",
+ "description": ""
+ },
+ "options_tab_10": {
+ "message": "Open emails in basic HTML mode",
+ "description": ""
+ },
+ "options_toolbar": {
+ "message": "Лента:",
+ "description": ""
+ },
+ "options_toolbar_1": {
+ "message": "Поведение на копчето на лентата",
+ "description": ""
+ },
+ "options_toolbar_2": {
+ "message": "Винаги да се отваря панел с предварителен преглед",
+ "description": ""
+ },
+ "options_toolbar_3": {
+ "message": "Отваряне на пощата ако се използва само една сметка",
+ "description": ""
+ },
+ "options_toolbar_18": {
+ "message": "Open Gmail account (forced)",
+ "description": ""
+ },
+ "options_toolbar_4": {
+ "message": "Режим на панела",
+ "description": ""
+ },
+ "options_toolbar_5": {
+ "message": "Показване само на обобщение",
+ "description": ""
+ },
+ "options_toolbar_6": {
+ "message": "Показване на цялото съдържание",
+ "description": ""
+ },
+ "options_toolbar_7": {
+ "message": "Ширина на панела в режим на преглед на цялото съдържание (в пиксели):",
+ "description": ""
+ },
+ "options_toolbar_8": {
+ "message": "Минималната ширина е 500 пиксела.",
+ "description": ""
+ },
+ "options_toolbar_9": {
+ "message": "Височина на панела в режим на преглед на цялото съдържание (в пиксели):",
+ "description": ""
+ },
+ "options_toolbar_10": {
+ "message": "Минималната височина е 500 пиксела.",
+ "description": ""
+ },
+ "options_toolbar_11": {
+ "message": "Поддръжка на клавишни комбинации в панела",
+ "description": ""
+ },
+ "options_toolbar_12": {
+ "message": "!: Докладване като спам, #: Кошче, e: Архив, Shift + i: Отбелязване като прочетено.",
+ "description": ""
+ },
+ "options_toolbar_13": {
+ "message": "Извеждане на писмата като ЕМХТ (HTML) в режима на цяло съдържание",
+ "description": ""
+ },
+ "options_toolbar_14": {
+ "message": "Ако предпочитате само текст в режима на цяло съдържание, махнете отметката.",
+ "description": ""
+ },
+ "options_toolbar_15": {
+ "message": "Натискане със средното копче върху лентата",
+ "description": ""
+ },
+ "options_toolbar_16": {
+ "message": "Обновяване на всички сметки",
+ "description": ""
+ },
+ "options_toolbar_17": {
+ "message": "Отваряне на главната сметка",
+ "description": ""
+ },
+ "options_misc": {
+ "message": "Разни:",
+ "description": ""
+ },
+ "options_misc_1": {
+ "message": "Подреждане на сметките по азбучен ред",
+ "description": ""
+ },
+ "options_misc_2": {
+ "message": "По подразбиране се сортира по ред на влизане.",
+ "description": ""
+ },
+ "options_misc_3": {
+ "message": "Цвят на иконката на лентата",
+ "description": ""
+ },
+ "options_misc_4": {
+ "message": "Сив цвят за \"Няма непрочетени\" и син цвят за \"Няма връзка\"",
+ "description": ""
+ },
+ "options_misc_5": {
+ "message": "Син цвят за \"Няма непрочетени\" и сив цвят за \"Няма връзка\"",
+ "description": ""
+ },
+ "options_misc_9": {
+ "message": "Червен цвят за \"Няма непрочетени\" и сив цвят за \"Няма връзка\"",
+ "description": ""
+ },
+ "options_misc_6": {
+ "message": "Показване на известия на работния плот, които указват дали пощата е отворена в активния подпрозорец",
+ "description": ""
+ },
+ "options_misc_7": {
+ "message": "Показване на приветстващата страница при надграждане",
+ "description": ""
+ },
+ "options_misc_8": {
+ "message": "Нулиране на всички настройки към първоначалните",
+ "description": ""
+ },
+ "options_misc_10": {
+ "message": "Да се появяват известия на работния плот и звукови оповестявания само за писма, пристигнали по-рано от (в минути):",
+ "description": ""
+ },
+ "options_misc_11": {
+ "message": "Ако стойността се зададе на нула, няма да получавате нито звукови оповестявания, нито известия на работния плот. Ще работи само значката за известия.",
+ "description": ""
+ },
+ "options_misc_12": {
+ "message": "Без входни детайли в подсказките",
+ "description": ""
+ },
+ "options_misc_13": {
+ "message": "По подразбиране, известителят обновява подсказките на копчето с входна информация. Ако изчистите отметката, текста в подсказката ще остане на първоначалната стойност.",
+ "description": ""
+ },
+ "options_misc_14": {
+ "message": "Без показване на точния брой в значката, когато непрочетените писма надхвърлят 999",
+ "description": ""
+ },
+ "options_misc_15": {
+ "message": "Open FAQs page on updates",
+ "description": ""
+ },
+ "options_plugins": {
+ "message": "Plug-ins:",
+ "description": ""
+ },
+ "options_plugins_1": {
+ "message": "Gmail labels and star button (experimental)",
+ "description": ""
+ },
+ "options_plugins_2": {
+ "message": "This plugin displays the star button as well as thread's labels in the popup (expanded mode only).",
+ "description": ""
+ },
+ "options_px": {
+ "message": "px",
+ "description": ""
+ },
+ "options_empty": {
+ "message": "не е обозначено",
+ "description": ""
+ },
+ "options_button_test": {
+ "message": "Play",
+ "description": ""
+ },
+ "options_button_reset": {
+ "message": "Reset Preferences",
+ "description": ""
+ },
+ "popup_settings": {
+ "message": "настройки",
+ "description": ""
+ },
+ "popup_of": {
+ "message": "of",
+ "description": ""
+ },
+ "popup_wait": {
+ "message": "Изчакайте...",
+ "description": ""
+ },
+ "popup_date_format": {
+ "message": "%mm %dd, %yy",
+ "description": ""
+ },
+ "popup_no_subject": {
+ "message": "(няма тема)",
+ "description": ""
+ },
+ "popup_open_settings": {
+ "message": "Отваряне на настройките",
+ "description": ""
+ },
+ "popup_open_inbox": {
+ "message": "Отваряне на входящата кутия",
+ "description": ""
+ },
+ "popup_archive": {
+ "message": "Архив",
+ "description": ""
+ },
+ "popup_spam": {
+ "message": "Спам",
+ "description": ""
+ },
+ "popup_trash": {
+ "message": "Кошче",
+ "description": ""
+ },
+ "popup_refresh": {
+ "message": "Презареждане",
+ "description": ""
+ },
+ "popup_read": {
+ "message": "Отбелязване като прочетено",
+ "description": ""
+ },
+ "popup_read_all": {
+ "message": "Отбелязване на всички като прочетени",
+ "description": ""
+ },
+ "popup_msg_1": {
+ "message": "Току-що",
+ "description": ""
+ },
+ "popup_msg_2": {
+ "message": "Преди 1 минута",
+ "description": ""
+ },
+ "popup_msg_3_format": {
+ "message": "Преди %d минути",
+ "description": ""
+ },
+ "popup_msg_4": {
+ "message": "Преди 1 час",
+ "description": ""
+ },
+ "popup_msg_5": {
+ "message": "часа назад",
+ "description": ""
+ },
+ "popup_msg_6": {
+ "message": "Вчера",
+ "description": ""
+ },
+ "popup_msg_7_format": {
+ "message": "Преди %d дена",
+ "description": ""
+ },
+ "popup_msg_8_format": {
+ "message": "Преди %d седмица(и)",
+ "description": ""
+ },
+ "popup_msg_9_format": {
+ "message": "Преди %d месец(а)",
+ "description": ""
+ },
+ "popup_msg_10": {
+ "message": "Януари",
+ "description": ""
+ },
+ "popup_msg_11": {
+ "message": "Февруари",
+ "description": ""
+ },
+ "popup_msg_12": {
+ "message": "Март",
+ "description": ""
+ },
+ "popup_msg_13": {
+ "message": "Април",
+ "description": ""
+ },
+ "popup_msg_14": {
+ "message": "Май",
+ "description": ""
+ },
+ "popup_msg_15": {
+ "message": "Юни",
+ "description": ""
+ },
+ "popup_msg_16": {
+ "message": "Юли",
+ "description": ""
+ },
+ "popup_msg_17": {
+ "message": "Август",
+ "description": ""
+ },
+ "popup_msg_18": {
+ "message": "Септември",
+ "description": ""
+ },
+ "popup_msg_19": {
+ "message": "Октомври",
+ "description": ""
+ },
+ "popup_msg_20": {
+ "message": "Ноември",
+ "description": ""
+ },
+ "popup_msg_21": {
+ "message": "Декември",
+ "description": ""
+ },
+ "settings_open_title": {
+ "message": "Отваряне на страницата с настройките",
+ "description": ""
+ },
+ "settings_open_label": {
+ "message": "Отваряне на настройките",
+ "description": ""
+ },
+ "gmail": {
+ "message": "Notifier for Gmail™",
+ "description": ""
+ }
+}
\ No newline at end of file
diff --git a/v3.classic/_locales/ca/messages.json b/v3.classic/_locales/ca/messages.json
new file mode 100644
index 00000000..8a1e1eac
--- /dev/null
+++ b/v3.classic/_locales/ca/messages.json
@@ -0,0 +1,762 @@
+{
+ "toolbar_label": {
+ "message": "Notificador per a Gmail™",
+ "description": ""
+ },
+ "tooltip_1": {
+ "message": "Clic esquerre: Obre Gmail o el tauler de previsualització del correu",
+ "description": ""
+ },
+ "tooltip_2": {
+ "message": "Clic del mig (o Control+Clic esquerre): Actualitza tots els comptes",
+ "description": ""
+ },
+ "tooltip_3": {
+ "message": "Clic dret: seleccions de compte",
+ "description": ""
+ },
+ "description": {
+ "message": "Notificador d'etiquetes i comptes múltiples per a Google Mail (Gmail)",
+ "description": ""
+ },
+ "log_in_to_your_account": {
+ "message": "Si us plau, accedeix al teu compte de Gmail",
+ "description": ""
+ },
+ "msg_1": {
+ "message": "La pestanya ja s'ha obert. Fes clic al botó de la barra d'eines per obrir Gmail en una nova pestanya o selecciona una pestanya de Gmail existent.",
+ "description": ""
+ },
+ "msg_2": {
+ "message": "S'ha copiat l'enllaç al porta-retalls.",
+ "description": ""
+ },
+ "msg_3": {
+ "message": "S'ha copiat el text seleccionat al porta-retalls.",
+ "description": ""
+ },
+ "msg_4": {
+ "message": "Nota: per tal que el notificador funcioni correctament, cal estar connectat al compte de Google.",
+ "description": ""
+ },
+ "msg_5": {
+ "message": "Selecciona un fitxer de so",
+ "description": ""
+ },
+ "label_1": {
+ "message": "Actualitza",
+ "description": ""
+ },
+ "label_2": {
+ "message": "Opcions",
+ "description": ""
+ },
+ "label_3": {
+ "message": "Deshabilitar totes les notificacions",
+ "description": ""
+ },
+ "label_4": {
+ "message": "Durant 5 minuts",
+ "description": ""
+ },
+ "label_5": {
+ "message": "Durant 15 minuts",
+ "description": ""
+ },
+ "label_6": {
+ "message": "Durant 30 minuts",
+ "description": ""
+ },
+ "label_7": {
+ "message": "Durant 1 hora",
+ "description": ""
+ },
+ "label_8": {
+ "message": "Durant 2 hores",
+ "description": ""
+ },
+ "label_9": {
+ "message": "Durant 5 hores",
+ "description": ""
+ },
+ "label_13": {
+ "message": "Durant un període de temps personalitzat",
+ "description": ""
+ },
+ "label_10": {
+ "message": "Habilitar notificacions (sessió)",
+ "description": ""
+ },
+ "label_11": {
+ "message": "Redacta un correu electrònic",
+ "description": ""
+ },
+ "label_12": {
+ "message": "Obrir PMFs",
+ "description": ""
+ },
+ "label_14": {
+ "message": "Comptes connectats",
+ "description": ""
+ },
+ "unknown": {
+ "message": "desconegut",
+ "description": ""
+ },
+ "and": {
+ "message": "i",
+ "description": ""
+ },
+ "log_into_your_account": {
+ "message": "Si us plau, connecta't al compte",
+ "description": ""
+ },
+ "notification": {
+ "message": "De: [author_email][break]Títol: [title][break]Contingut: [summary]",
+ "description": ""
+ },
+ "options_title": {
+ "message": "Opcions - Gmail™ Notifier",
+ "description": ""
+ },
+ "options_inshort": {
+ "message": "Notificador d'etiquetes i comptes múltiples per a Google Mail (Gmail).",
+ "description": ""
+ },
+ "options_donation": {
+ "message": "Dona suport al desenvolupament",
+ "description": ""
+ },
+ "options_timings": {
+ "message": "Temporitzadors:",
+ "description": ""
+ },
+ "options_timings_l1": {
+ "message": "Comprova nous correus electrònics cada (en segons):",
+ "description": ""
+ },
+ "options_timings_l2": {
+ "message": "El període mínim són 10 segons.",
+ "description": ""
+ },
+ "options_timings_l3": {
+ "message": "Recorda tots els correus electrònics sense llegir cada (en minuts):",
+ "description": ""
+ },
+ "options_timings_l4": {
+ "message": "Estableix el valor a zero per a recordatoris no periòdics.",
+ "description": ""
+ },
+ "options_timings_l5": {
+ "message": "El període mínim són 5 minuts.",
+ "description": ""
+ },
+ "options_timings_l6": {
+ "message": "Els valors diferents de zero dispararan notificacions d'escriptori i alertes sonores (semblants a l'arribada d'un nou correu electrònic) eternament si té correus electrònics sense llegir.",
+ "description": ""
+ },
+ "options_timings_l7": {
+ "message": "No comprovar nous correus electrònics en obrir durant (en segons):",
+ "description": ""
+ },
+ "options_timings_l8": {
+ "message": "Estableix el valor a zero per no comprovar els correus electrònics fins a la primera actualització manual (No disponible a Safari].",
+ "description": ""
+ },
+ "options_gmail": {
+ "message": "Gmail:",
+ "description": ""
+ },
+ "options_gmail_1": {
+ "message": "Compte principal (/mail/u/0/)",
+ "description": ""
+ },
+ "options_gmail_2": {
+ "message": "Separa les etiquetes amb \",\" (coma).",
+ "description": ""
+ },
+ "options_gmail_3": {
+ "message": "Compte secundari (/mail/u/1)",
+ "description": ""
+ },
+ "options_gmail_4": {
+ "message": "Compte terciari (/mail/u/2/)",
+ "description": ""
+ },
+ "options_gmail_5": {
+ "message": "Compte quaternari (/mail/u/3/)",
+ "description": ""
+ },
+ "options_gmail_6": {
+ "message": "Compte quinari (/mail/u/4/)",
+ "description": ""
+ },
+ "options_gmail_7": {
+ "message": "Compte senari (/mail/u/5/)",
+ "description": ""
+ },
+ "options_gmail_8": {
+ "message": "Marca el missatge com a llegit en el moment d'arxivar-lo",
+ "description": ""
+ },
+ "options_gmail_15": {
+ "message": "Algunes etiquetes populars:",
+ "description": ""
+ },
+ "options_gmail_10": {
+ "message": "Rebre notificacions per a les següents etiquetes i comptes:",
+ "description": ""
+ },
+ "options_gmail_11": {
+ "message": "Canals personalitzats",
+ "description": ""
+ },
+ "options_gmail_12": {
+ "message": "Separa els canals amb \",\" (coma). Canal d'exemple: https://mail.google.com/mail/u/0/feed/atom/inbox",
+ "description": ""
+ },
+ "options_gmail_13": {
+ "message": "Nota: el número màxim per a totes les etiquetes excepte \"safata d'entrada\" és 20 (Google només dona la informació per a les 20 entrades més recents)",
+ "description": ""
+ },
+ "options_gmail_14": {
+ "message": "Nota: per tal que el Notificador comprovi més de 5 comptes, afegeix-ne les adreces al camp \"Canals personalitzats\". Per exemple, per comprovar els comptes sisè i setè, afegeix: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox",
+ "description": ""
+ },
+ "options_notifications": {
+ "message": "Notificacions:",
+ "description": ""
+ },
+ "options_notifications_1": {
+ "message": "Mostra notificacions d'escriptori per a nous correus electrònics",
+ "description": ""
+ },
+ "options_notifications_2": {
+ "message": "Mostra notificacions d'escriptori durant (en segons):",
+ "description": ""
+ },
+ "options_notifications_3": {
+ "message": "Aquesta opció podria no funcionar segons el sistema operatiu.",
+ "description": ""
+ },
+ "options_notifications_4": {
+ "message": "Format de la notificació",
+ "description": ""
+ },
+ "options_notifications_5": {
+ "message": "Variables disponibles:",
+ "description": ""
+ },
+ "options_notifications_6": {
+ "message": "Talla les notificacions més llargues de",
+ "description": ""
+ },
+ "options_notifications_7": {
+ "message": "caràcters per als camps [title] i [summary].",
+ "description": ""
+ },
+ "options_notifications_8": {
+ "message": "Per no tenir truncament de l'el·lipsi, utilitza un número gran.",
+ "description": ""
+ },
+ "options_notifications_9": {
+ "message": "Reprodueix el so d'alerta per a nous correus electrònics",
+ "description": ""
+ },
+ "options_notifications_10": {
+ "message": "Nota per a usuaris de Mac. Des de Firefox 28.0, totes les notificacions d'escriptori es gestionen des del Centre de Notificacions de Mac, el qual genera un so d'alerta addicional. Cal desactivar aquesta notificació sonora o bé la generada pel Centre de Notificacions.",
+ "description": ""
+ },
+ "options_notifications_11": {
+ "message": "Mostra \"Notificació a la barra de Windows\" o \"Notificació a la barra de Mac OS\"",
+ "description": ""
+ },
+ "options_notifications_12": {
+ "message": "Les notificacions a la barra de tasques no estan suportades en sistemes operatius Linux actualment.",
+ "description": ""
+ },
+ "options_notifications_13": {
+ "message": "Obre el tauler d'eines en fer clic a la icona de notificació de la barra de tasques (només a Windows, beta)",
+ "description": ""
+ },
+ "options_notifications_14": {
+ "message": "Aquesta funcionalitat és altament experimental i pot fer que el navegador Firefox esdevingui inestable. [Cal reiniciar].",
+ "description": ""
+ },
+ "options_notifications_15": {
+ "message": "El so de notificació per defecte és",
+ "description": ""
+ },
+ "options_notifications_16": {
+ "message": "Alerta per defecte de Gmail Notifier",
+ "description": ""
+ },
+ "options_notifications_17": {
+ "message": "Campana d'alerta de Checker Plus",
+ "description": ""
+ },
+ "options_notifications_18": {
+ "message": "So d'alerta de Checker Plus",
+ "description": ""
+ },
+ "options_notifications_19": {
+ "message": "Alerta de correu electrònic de Windows",
+ "description": ""
+ },
+ "options_notifications_20": {
+ "message": "So definit per l'usuari",
+ "description": ""
+ },
+ "options_notifications_21": {
+ "message": "El so de notificació definit per l'usuari és",
+ "description": ""
+ },
+ "options_notifications_22": {
+ "message": "Si el navegador no reprodueix el so de notificació personalitzat, intenta convertir-lo a format WAV senzill utilitzant una eina de conversió en línia.",
+ "description": ""
+ },
+ "options_notifications_35": {
+ "message": "Per seleccionar un nou so personalitzat, primer selecciona un so predefinit i després canvia l'opció a so personalitzat",
+ "description": ""
+ },
+ "options_notifications_23": {
+ "message": "El volum de la notificació sonar és",
+ "description": ""
+ },
+ "options_notifications_24": {
+ "message": "El volum és un número entre 0 i 100, on 100 és el volum més alt (per defecte).",
+ "description": ""
+ },
+ "options_notifications_25": {
+ "message": "A Safari, el més probable és que les notificacions sonores per defecte no es reprodueixin. Si és el cas, utilitza un fitxer de so personalitzat.",
+ "description": ""
+ },
+ "options_notifications_26": {
+ "message": "Sempre mostra la notificació de safata (només Windows)",
+ "description": ""
+ },
+ "options_notifications_27": {
+ "message": "Les notificacions de safata es mostraran encara que no hi hagi missatges sense llegir.",
+ "description": ""
+ },
+ "options_notifications_28": {
+ "message": "Deshabilitar totes les notificacions durant un període de temps personalitzat (en minuts):",
+ "description": ""
+ },
+ "options_notifications_29": {
+ "message": "Aquesta opció està relacionada amb el menú de clic dret al botó de la barra d'eines -> deshabilitar totes les notificacions -> període de temps personalitzat.",
+ "description": ""
+ },
+ "options_notifications_30": {
+ "message": "Combina totes les notificacions d'escriptori simultànies en una única notificació",
+ "description": ""
+ },
+ "options_notifications_31": {
+ "message": "Notificació sonora personalitzada",
+ "description": ""
+ },
+ "options_notifications_32": {
+ "message": "el nom o l'adreça de correu contenen",
+ "description": ""
+ },
+ "options_notifications_33": {
+ "message": "el títol conté",
+ "description": ""
+ },
+ "options_notifications_34": {
+ "message": "el missatge conté",
+ "description": ""
+ },
+ "options_notifications_36": {
+ "message": "Demana a Gmail evitar la redirecció a 'inbox.google.com'",
+ "description": ""
+ },
+ "options_notifications_37": {
+ "message": "Mostra la insígnia amb el número",
+ "description": ""
+ },
+ "options_notifications_38": {
+ "message": "Les accions més ràpides (marcar com a llegit, esborrar, ...) (Considera que les accions es faran en rebre les capçaleres)",
+ "description": ""
+ },
+ "options_notifications_40": {
+ "message": "Permetre accions ràpides des de l'àrea de notificació (màxim dues accions) (només Chrome)",
+ "description": ""
+ },
+ "options_notifications_41": {
+ "message": "Marca com a llegit",
+ "description": ""
+ },
+ "options_notifications_42": {
+ "message": "Arxiva",
+ "description": ""
+ },
+ "options_notifications_43": {
+ "message": "Paperera",
+ "description": ""
+ },
+ "options_tab": {
+ "message": "Obertura de pestanya:",
+ "description": ""
+ },
+ "options_tab_1": {
+ "message": "Cerca comptes de Gmail oberts només a la finestra activa",
+ "description": ""
+ },
+ "options_tab_2": {
+ "message": "No cerquis comptes de Gmail oberts en altres finestres del navegador. Si Gmail no està obert a la finestra activa, obre una nova pestanya.",
+ "description": ""
+ },
+ "options_tab_3": {
+ "message": "Obre un nou compte de Gmail després de la pestanya activa",
+ "description": ""
+ },
+ "options_tab_4": {
+ "message": "Obre el compte de Gmail a la pestanya activa",
+ "description": ""
+ },
+ "options_tab_5": {
+ "message": "Obre el compte de Gmail en una pestanya a part",
+ "description": ""
+ },
+ "options_tab_6": {
+ "message": "Obre el compte de Gmail en una nova finestra",
+ "description": ""
+ },
+ "options_tab_7": {
+ "message": "Utilitza sempre pestanyes en blanc enlloc d'obrir una nova pestanya quan s'activi l'opció d'obrir en una pestanya",
+ "description": ""
+ },
+ "options_tab_8": {
+ "message": "Ignora les pestanyes obertes amb Gmail",
+ "description": ""
+ },
+ "options_tab_9": {
+ "message": "Si està desmarcat, Gmail Notifier comprova si hi ha Gmail obert a qualsevol finestra oberta i activarà la pestsanya si s'ha sol·licitat obrir-ne.",
+ "description": ""
+ },
+ "options_tab_10": {
+ "message": "Obre correus electrònics en mode HTML bàsic",
+ "description": ""
+ },
+ "options_tab_11": {
+ "message": "Obre el correu electrònic sense llegir més recent enlloc d'obrir la safata d'entrada",
+ "description": ""
+ },
+ "options_toolbar": {
+ "message": "Barra d'eines:",
+ "description": ""
+ },
+ "options_toolbar_1": {
+ "message": "Comportament del botó de la barra d'eines",
+ "description": ""
+ },
+ "options_toolbar_2": {
+ "message": "Obre sempre el tauler de previsualització",
+ "description": ""
+ },
+ "options_toolbar_3": {
+ "message": "Obre el compte de Gmail si només s'ha connectat un compte",
+ "description": ""
+ },
+ "options_toolbar_18": {
+ "message": "Obre el compte de Gmail (forçat)",
+ "description": ""
+ },
+ "options_toolbar_4": {
+ "message": "Mode del tauler d'eines",
+ "description": ""
+ },
+ "options_toolbar_5": {
+ "message": "Mostra només el missatge",
+ "description": ""
+ },
+ "options_toolbar_6": {
+ "message": "Mostra tot el contingut",
+ "description": ""
+ },
+ "options_toolbar_7": {
+ "message": "L'amplada del tauler d'eines amb tot el contingut és (en píxels):",
+ "description": ""
+ },
+ "options_toolbar_8": {
+ "message": "L'amplada mínima és de 500px.",
+ "description": ""
+ },
+ "options_toolbar_9": {
+ "message": "L'alçada del tauler d'eines amb tot el contingut és (en píxels):",
+ "description": ""
+ },
+ "options_toolbar_10": {
+ "message": "L'alçada mínima és de 500px.",
+ "description": ""
+ },
+ "options_toolbar_11": {
+ "message": "Permet dreceres de teclat al tauler d'eines",
+ "description": ""
+ },
+ "options_toolbar_12": {
+ "message": "!: Marca com a brossa, #: Paperera, e: Arxiva, Majúscules + i: Marca com a llegit.",
+ "description": ""
+ },
+ "options_toolbar_13": {
+ "message": "Mostra els correus electrònics com a HTML en mode de contingut sencer",
+ "description": ""
+ },
+ "options_toolbar_14": {
+ "message": "Desmarca aquesta opció per mostrar el contingut sencer només amb text.",
+ "description": ""
+ },
+ "options_toolbar_15": {
+ "message": "Clic del mig al botó de la barra d'eines per a",
+ "description": ""
+ },
+ "options_toolbar_16": {
+ "message": "Actualitza tots els comptes",
+ "description": ""
+ },
+ "options_toolbar_17": {
+ "message": "Obre el compte de Gmail principal",
+ "description": ""
+ },
+ "options_misc": {
+ "message": "Diversos:",
+ "description": ""
+ },
+ "options_misc_1": {
+ "message": "Ordena els comptes alfabèticament",
+ "description": ""
+ },
+ "options_misc_2": {
+ "message": "El tipus d'ordre per defecte és l'ordre de connexió.",
+ "description": ""
+ },
+ "options_misc_3": {
+ "message": "El patró de color de la barra d'eines és",
+ "description": ""
+ },
+ "options_misc_4": {
+ "message": "Color gris per a \"No hi ha missatges sense llegir\" i color blau per a \"Desconnectat\"",
+ "description": ""
+ },
+ "options_misc_5": {
+ "message": "Color blau per a \"No hi ha missatges sense llegir\" i color gris per a \"Desconnectat\"",
+ "description": ""
+ },
+ "options_misc_9": {
+ "message": "Color vermell per a \"No hi ha missatges sense llegir\" i color gris per a \"Desconnectat\"",
+ "description": ""
+ },
+ "options_misc_6": {
+ "message": "Mostra notificacions d'escriptori per avisar que Gmail ja està obert a la pestanya activa",
+ "description": ""
+ },
+ "options_misc_7": {
+ "message": "Mostra la pàgina de benvinguda en actualitzar",
+ "description": ""
+ },
+ "options_misc_8": {
+ "message": "Restableix les opcions de fàbrica",
+ "description": ""
+ },
+ "options_misc_10": {
+ "message": "Només dispara notificacions d'escriptori i sonores quan un correu electrònic hagi arribat fa menys de (en minuts):",
+ "description": ""
+ },
+ "options_misc_11": {
+ "message": "Establint aquesta opció a zero no es generarà cap notificació d'escriptori o sonora. Malgrat tot, sí apareixerà la insígnia.",
+ "description": ""
+ },
+ "options_misc_12": {
+ "message": "No incloure informació d'accés al text de l'indicador de funció",
+ "description": ""
+ },
+ "options_misc_13": {
+ "message": "Per defecte, el notificador actualitza el text de l'indicador de funció amb informació d'accés. Desmarcant aquesta opció, el text mantindrà el valor per defecte.",
+ "description": ""
+ },
+ "options_misc_14": {
+ "message": "No mostrar a la insígnia el número exacte de correus electrònics sense llegir si és més gran que 999",
+ "description": ""
+ },
+ "options_misc_15": {
+ "message": "Obre la pàgina de PMFs després d'actualitzar",
+ "description": ""
+ },
+ "options_plugins": {
+ "message": "Extensions:",
+ "description": ""
+ },
+ "options_plugins_1": {
+ "message": "Etiquetes i botó estrella de Gmail (experimental)",
+ "description": ""
+ },
+ "options_plugins_2": {
+ "message": "Aquesta extensió mostra el botó estrella, així com les etiquets del fil a la finestra emergent (només en mode estès).",
+ "description": ""
+ },
+ "options_px": {
+ "message": "px",
+ "description": ""
+ },
+ "options_empty": {
+ "message": "no definit",
+ "description": ""
+ },
+ "options_button_test": {
+ "message": "Reprodueix",
+ "description": ""
+ },
+ "options_button_reset": {
+ "message": "Restableix les opcions",
+ "description": ""
+ },
+ "popup_settings": {
+ "message": "opcions",
+ "description": ""
+ },
+ "popup_of": {
+ "message": "de",
+ "description": ""
+ },
+ "popup_wait": {
+ "message": "Espera...",
+ "description": ""
+ },
+ "popup_date_format": {
+ "message": "%mm %dd, %yy",
+ "description": ""
+ },
+ "popup_no_subject": {
+ "message": "(sense títol)",
+ "description": ""
+ },
+ "popup_open_settings": {
+ "message": "Obre les opcions",
+ "description": ""
+ },
+ "popup_open_inbox": {
+ "message": "Obre la safata d'entrada",
+ "description": ""
+ },
+ "popup_archive": {
+ "message": "Arxiva",
+ "description": ""
+ },
+ "popup_spam": {
+ "message": "Brossa",
+ "description": ""
+ },
+ "popup_trash": {
+ "message": "Paperera",
+ "description": ""
+ },
+ "popup_refresh": {
+ "message": "Actualitza",
+ "description": ""
+ },
+ "popup_read": {
+ "message": "Marca com a llegit",
+ "description": ""
+ },
+ "popup_read_all": {
+ "message": "Marca'ls tots com a no llegits",
+ "description": ""
+ },
+ "popup_msg_1": {
+ "message": "ara mateix",
+ "description": ""
+ },
+ "popup_msg_2": {
+ "message": "Fa 1 minut",
+ "description": ""
+ },
+ "popup_msg_3_format": {
+ "message": "Fa %d minuts",
+ "description": ""
+ },
+ "popup_msg_4": {
+ "message": "Fa 1 hora",
+ "description": ""
+ },
+ "popup_msg_5": {
+ "message": "hores",
+ "description": ""
+ },
+ "popup_msg_6": {
+ "message": "Ahir",
+ "description": ""
+ },
+ "popup_msg_7_format": {
+ "message": "Fa %d dies",
+ "description": ""
+ },
+ "popup_msg_8_format": {
+ "message": "Fa %d setmanes",
+ "description": ""
+ },
+ "popup_msg_9_format": {
+ "message": "Fa %d mesos",
+ "description": ""
+ },
+ "popup_msg_10": {
+ "message": "Gener",
+ "description": ""
+ },
+ "popup_msg_11": {
+ "message": "Febrer",
+ "description": ""
+ },
+ "popup_msg_12": {
+ "message": "Març",
+ "description": ""
+ },
+ "popup_msg_13": {
+ "message": "Abril",
+ "description": ""
+ },
+ "popup_msg_14": {
+ "message": "Maig",
+ "description": ""
+ },
+ "popup_msg_15": {
+ "message": "Juny",
+ "description": ""
+ },
+ "popup_msg_16": {
+ "message": "Juliol",
+ "description": ""
+ },
+ "popup_msg_17": {
+ "message": "Agost",
+ "description": ""
+ },
+ "popup_msg_18": {
+ "message": "Setembre",
+ "description": ""
+ },
+ "popup_msg_19": {
+ "message": "Octubre",
+ "description": ""
+ },
+ "popup_msg_20": {
+ "message": "Novembre",
+ "description": ""
+ },
+ "popup_msg_21": {
+ "message": "Desembre",
+ "description": ""
+ },
+ "settings_open_title": {
+ "message": "Obre la pàgina d'opcions",
+ "description": ""
+ },
+ "settings_open_label": {
+ "message": "Obre les opcions",
+ "description": ""
+ },
+ "gmail": {
+ "message": "Notificador per a Gmail™",
+ "description": ""
+ }
+}
\ No newline at end of file
diff --git a/v3.classic/_locales/de/messages.json b/v3.classic/_locales/de/messages.json
new file mode 100644
index 00000000..b1aa5081
--- /dev/null
+++ b/v3.classic/_locales/de/messages.json
@@ -0,0 +1,758 @@
+{
+ "toolbar_label": {
+ "message": "Notifier für Gmail™",
+ "description": ""
+ },
+ "tooltip_1": {
+ "message": "Linksklick: Öffne Gmail oder das Mail-Vorschau-Panel",
+ "description": ""
+ },
+ "tooltip_2": {
+ "message": "Mittel- (oder Strg+Links) Klick: Alle Konten aktualisieren",
+ "description": ""
+ },
+ "tooltip_3": {
+ "message": "Rechtsklick: Kontoauswahl",
+ "description": ""
+ },
+ "description": {
+ "message": "Mehrere Label- und Account-Benachrichtigungen für Google Mail (Gmail)",
+ "description": ""
+ },
+ "log_in_to_your_account": {
+ "message": "Bitte im Gmail-Konto anmelden",
+ "description": ""
+ },
+ "msg_1": {
+ "message": "Der Tab ist bereits geöffnet. Klicke auf die Schaltfläche in der Symbolleiste, um Gmail in einem neuen Tab zu öffnen oder zu einem vorhandenen Gmail-Tab zu wechseln.",
+ "description": ""
+ },
+ "msg_2": {
+ "message": "Der Link wird in die Zwischenablage kopiert.",
+ "description": ""
+ },
+ "msg_3": {
+ "message": "Der ausgewählte Text wird in die Zwischenablage kopiert.",
+ "description": ""
+ },
+ "msg_4": {
+ "message": "Hinweis: Damit der Notifier ordnungsgemäß funktioniert, muss man im Google-Konto angemeldet sein.",
+ "description": ""
+ },
+ "msg_5": {
+ "message": "Wähle eine Audiodatei aus.",
+ "description": ""
+ },
+ "label_1": {
+ "message": "Aktualisieren",
+ "description": ""
+ },
+ "label_2": {
+ "message": "Einstellungen",
+ "description": ""
+ },
+ "label_3": {
+ "message": "Alle Benachrichtigungen deaktivieren",
+ "description": ""
+ },
+ "label_4": {
+ "message": "Für 5 Minuten",
+ "description": ""
+ },
+ "label_5": {
+ "message": "Für 15 Minuten",
+ "description": ""
+ },
+ "label_6": {
+ "message": "Für 30 Minuten",
+ "description": ""
+ },
+ "label_7": {
+ "message": "Für 1 Stunde",
+ "description": ""
+ },
+ "label_8": {
+ "message": "Für 2 Stunden",
+ "description": ""
+ },
+ "label_9": {
+ "message": "Für 5 Stunden",
+ "description": ""
+ },
+ "label_13": {
+ "message": "Für einen benutzerdefinierten Zeitraum",
+ "description": ""
+ },
+ "label_10": {
+ "message": "Benachrichtigungen aktivieren (Sitzung)",
+ "description": ""
+ },
+ "label_11": {
+ "message": "E-Mail verfassen",
+ "description": ""
+ },
+ "label_12": {
+ "message": "FAQ's öffnen",
+ "description": ""
+ },
+ "label_14": {
+ "message": "Angemeldete Konten",
+ "description": ""
+ },
+ "unknown": {
+ "message": "unbekannt",
+ "description": ""
+ },
+ "and": {
+ "message": "und",
+ "description": ""
+ },
+ "log_into_your_account": {
+ "message": "Bitte im Account einloggen",
+ "description": ""
+ },
+ "notification": {
+ "message": "Von: [author_email][break]Titel: [title][break]Auszug: [summary]",
+ "description": ""
+ },
+ "options_title": {
+ "message": "Optionen - Gmail™ Notifier",
+ "description": ""
+ },
+ "options_inshort": {
+ "message": "Mehrere Label- und Account-Benachrichtigungen für Google Mail (Gmail).",
+ "description": ""
+ },
+ "options_donation": {
+ "message": "Entwicklung unterstützen",
+ "description": ""
+ },
+ "options_timings": {
+ "message": "Zeiten:",
+ "description": ""
+ },
+ "options_timings_l1": {
+ "message": "Überprüfe auf neuen E-Mails alle (in Sekunden):",
+ "description": ""
+ },
+ "options_timings_l2": {
+ "message": "Mindestdauer beträgt 10 Sekunden.",
+ "description": ""
+ },
+ "options_timings_l3": {
+ "message": "An ungelesene E-Mails erinnern alle (in Minuten):",
+ "description": ""
+ },
+ "options_timings_l4": {
+ "message": "Für nicht periodische Erinnerungen den Wert auf Null setzen.",
+ "description": ""
+ },
+ "options_timings_l5": {
+ "message": "Mindestdauer beträgt 5 Minuten.",
+ "description": ""
+ },
+ "options_timings_l6": {
+ "message": "Bei einem Wert ungleich Null werden sowohl Desktop-Benachrichtigungen als auch Alarme (ähnlich wie bei neuer E-Mail) dauerhaft ausgelöst, wenn man ungelesene E-Mails hat.",
+ "description": ""
+ },
+ "options_timings_l7": {
+ "message": "Beim Start nicht nach neuen E-Mails überprüfen für (in Sekunden):",
+ "description": ""
+ },
+ "options_timings_l8": {
+ "message": "Um keine E-Mail-Überprüfung bis zur ersten manuellen Aktualisierung zu starten, setze den Wert auf Null [Nicht verfügbar in Safari].",
+ "description": ""
+ },
+ "options_gmail": {
+ "message": "Gmail:",
+ "description": ""
+ },
+ "options_gmail_1": {
+ "message": "Hauptkonto (/mail/u/0/)",
+ "description": ""
+ },
+ "options_gmail_2": {
+ "message": "Trenne Labels durch \",\" (Komma).",
+ "description": ""
+ },
+ "options_gmail_3": {
+ "message": "Zweites Konto (/mail/u/1/)",
+ "description": ""
+ },
+ "options_gmail_4": {
+ "message": "Drittes Konto (/mail/u/2/)",
+ "description": ""
+ },
+ "options_gmail_5": {
+ "message": "Viertes Konto (/mail/u/3/)",
+ "description": ""
+ },
+ "options_gmail_6": {
+ "message": "Fünftes Konto (/mail/u/4/)",
+ "description": ""
+ },
+ "options_gmail_7": {
+ "message": "Sechstes Konto (/mail/u/5/)",
+ "description": ""
+ },
+ "options_gmail_8": {
+ "message": "Markiere Nachricht als gelesen, wenn sie archiviert wird.",
+ "description": ""
+ },
+ "options_gmail_15": {
+ "message": "Some popular labels:",
+ "description": ""
+ },
+ "options_gmail_10": {
+ "message": "Erhalte Benachrichtigungen für folgende Labels und Konten:",
+ "description": ""
+ },
+ "options_gmail_11": {
+ "message": "Benutzerdefinierte Feeds:",
+ "description": ""
+ },
+ "options_gmail_12": {
+ "message": "Trenne Feeds durch \",\" (Komma). Beispiel Feed: https://mail.google.com/mail/u/0/feed/atom/inbox",
+ "description": ""
+ },
+ "options_gmail_13": {
+ "message": "Hinweis: Maximale Anzahl für alle Labels außer \"Posteingang\" ist 20 (Google-Feeds liefern nur die 20 neuesten Einträge)",
+ "description": ""
+ },
+ "options_gmail_14": {
+ "message": "Hinweis: Damit der Notifier mehr als fünf Konten überwacht, füge dem Feld 'Benutzerdefinierte Feeds' Feed-URLs hinzu. Zum Beispiel um den 6. und 7. Account zu überwachen: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox",
+ "description": ""
+ },
+ "options_notifications": {
+ "message": "Benachrichtigung:",
+ "description": ""
+ },
+ "options_notifications_1": {
+ "message": "Desktop-Benachrichtigung für neue E-Mails anzeigen",
+ "description": ""
+ },
+ "options_notifications_2": {
+ "message": "Desktop-Benachrichtigung anzeigen für (in Sekunden):",
+ "description": ""
+ },
+ "options_notifications_3": {
+ "message": "Diese Option funktioniert möglicherweise nicht basierend auf dem Betriebssystem.",
+ "description": ""
+ },
+ "options_notifications_4": {
+ "message": "Benachrichtigungsformat",
+ "description": ""
+ },
+ "options_notifications_5": {
+ "message": "Verfügbare Variablen:",
+ "description": ""
+ },
+ "options_notifications_6": {
+ "message": "Benachrichtigungen kürzen, wenn die Felder [Titel] und [Auszug] länger als",
+ "description": ""
+ },
+ "options_notifications_7": {
+ "message": "Zeichen sind.",
+ "description": ""
+ },
+ "options_notifications_8": {
+ "message": "Verwende hier eine große Zahl, um keine Ellipsenabkürzungen zu haben.",
+ "description": ""
+ },
+ "options_notifications_9": {
+ "message": "Alarmton für neue E-Mails abspielen",
+ "description": ""
+ },
+ "options_notifications_10": {
+ "message": "Hinweis für Mac-Benutzer. Ab Firefox 28.0 werden alle Desktop-Benachrichtigungen vom Mac Notification Center bearbeitet, das eine zusätzliche akustische Benachrichtigung auslöst. Man muss entweder die Benachrichtigungstöne oder die vom Benachrichtigungscenter generierte Benachrichtigung deaktivieren.",
+ "description": ""
+ },
+ "options_notifications_11": {
+ "message": "Anzeige \"Windows Taskleisten-Benachrichtigung\" oder \"Mac OS Dock-Benachrichtigung\"",
+ "description": ""
+ },
+ "options_notifications_12": {
+ "message": "Taskleisten-Benachrichtigungen werden derzeit nicht unter Linux unterstützt.",
+ "description": ""
+ },
+ "options_notifications_13": {
+ "message": "Öffne das Symbolleisten-Panel, wenn auf das Taskleisten-Benachrichtigungsicon geklickt wird (nur Windows, Beta).",
+ "description": ""
+ },
+ "options_notifications_14": {
+ "message": "Diese Funktion ist sehr experimentell und könnte den Firefox-Browser instabil machen. [Neustart erforderlich].",
+ "description": ""
+ },
+ "options_notifications_15": {
+ "message": "Standard-Benachrichtigungston ist",
+ "description": ""
+ },
+ "options_notifications_16": {
+ "message": "Gmail Notifier Standard-Alarm",
+ "description": ""
+ },
+ "options_notifications_17": {
+ "message": "Checker Plus Glocken-Alarm",
+ "description": ""
+ },
+ "options_notifications_18": {
+ "message": "Checker Plus Ding-Alarm",
+ "description": ""
+ },
+ "options_notifications_19": {
+ "message": "Windows E-Mail-Alarm",
+ "description": ""
+ },
+ "options_notifications_20": {
+ "message": "Benutzerdefinierter Ton",
+ "description": ""
+ },
+ "options_notifications_21": {
+ "message": "Benutzerdefinierter Benachrichtigungston ist",
+ "description": ""
+ },
+ "options_notifications_22": {
+ "message": "Wenn der Browser den benutzerdefinierten Benachrichtigungston nicht abspielt, versuche ihn mit einem Online-Konvertierungstool in ein einfaches WAV-Format zu konvertieren.",
+ "description": ""
+ },
+ "options_notifications_35": {
+ "message": "Um einen neuen benutzerdefinierten Ton auszuwählen, wähle zuerst einen integrierten Ton und dann die Option für einen benutzerdefinierten Ton.",
+ "description": ""
+ },
+ "options_notifications_23": {
+ "message": "Lautstärke vom Benachrichtigungston ist",
+ "description": ""
+ },
+ "options_notifications_24": {
+ "message": "Lautstärke ist eine Zahl zwischen 0 und 100, wobei 100 die höchste Lautstärke ist (Standard).",
+ "description": ""
+ },
+ "options_notifications_25": {
+ "message": "In Safari werden die Standard-Benachrichtigungstöne wahrscheinlich nicht richtig wiedergegeben. Wenn dies der Fall ist, verwende eine benutzerdefinierte Ton-Datei als Benachrichtigung.",
+ "description": ""
+ },
+ "options_notifications_26": {
+ "message": "Tray-Benachrichtigung immer anzeigen (nur Windows)",
+ "description": ""
+ },
+ "options_notifications_27": {
+ "message": "Tray-Benachrichtigung wird angezeigt, auch wenn keine ungelesene Nachricht vorhanden ist.",
+ "description": ""
+ },
+ "options_notifications_28": {
+ "message": "Deaktiviere alle Benachrichtigungen für einen benutzerdefinierten Zeitraum (in Minuten):",
+ "description": ""
+ },
+ "options_notifications_29": {
+ "message": "Diese Option bezieht sich auf das Rechtsklick-Menü der Schaltfläche auf der Symbolleiste -> Alle Benachrichtigungen deaktivieren -> Benutzerdefinierter Zeitraum.",
+ "description": ""
+ },
+ "options_notifications_30": {
+ "message": "Fasse alle gleichzeitigen Desktop-Benachrichtigungen in einer einzigen Benachrichtigung zusammen.",
+ "description": ""
+ },
+ "options_notifications_31": {
+ "message": "Benutzerdefinierter Benachrichtigungston",
+ "description": ""
+ },
+ "options_notifications_32": {
+ "message": "Name oder E-Mail enthält",
+ "description": ""
+ },
+ "options_notifications_33": {
+ "message": "E-Mail-Titel enthält",
+ "description": ""
+ },
+ "options_notifications_34": {
+ "message": "E-Mail-Auszug enthält",
+ "description": ""
+ },
+ "options_notifications_36": {
+ "message": "Bitte Gmail, die Weiterleitung von 'inbox.google.com' zu verhindern.",
+ "description": ""
+ },
+ "options_notifications_37": {
+ "message": "Plakettennummer anzeigen",
+ "description": ""
+ },
+ "options_notifications_38": {
+ "message": "Schnellere Aktionen (als gelesen markieren, löschen, ...) (Berücksichtige Aktionen, die beim Empfang von Kopfzeilen aufgelöst werden sollen)",
+ "description": ""
+ },
+ "options_notifications_40": {
+ "message": "Allow quick actions from notification box (maximum two actions) (Chrome only)",
+ "description": ""
+ },
+ "options_notifications_41": {
+ "message": "Mark as Read",
+ "description": ""
+ },
+ "options_notifications_42": {
+ "message": "Archive",
+ "description": ""
+ },
+ "options_notifications_43": {
+ "message": "Trash",
+ "description": ""
+ },
+ "options_tab": {
+ "message": "Tab Öffnen:",
+ "description": ""
+ },
+ "options_tab_1": {
+ "message": "Suche nach einem geöffneten Gmail-Konto nur im aktiven Fenster.",
+ "description": ""
+ },
+ "options_tab_2": {
+ "message": "Durchsuche keine anderen Browserfenster nach offenen Gmail-Konten. Wenn Gmail im aktiven Fenster nicht geöffnet ist, öffne einen neuen Tab.",
+ "description": ""
+ },
+ "options_tab_3": {
+ "message": "Öffne ein neues Gmail-Konto neben dem aktiven Tab.",
+ "description": ""
+ },
+ "options_tab_4": {
+ "message": "Öffne das Gmail-Konto im aktiven Tab.",
+ "description": ""
+ },
+ "options_tab_5": {
+ "message": "Öffne das Gmail-Konto in einem Hintergrund-Tab.",
+ "description": ""
+ },
+ "options_tab_6": {
+ "message": "Öffne das Gmail-Konto in einem neuen Fenster.",
+ "description": ""
+ },
+ "options_tab_7": {
+ "message": "Verwende immer leere Tabs, anstatt einen neuen Tab zu öffnen, wenn Öffnen im Tab aktiviert ist.",
+ "description": ""
+ },
+ "options_tab_8": {
+ "message": "Geöffnete Gmail-Tabs ignorieren",
+ "description": ""
+ },
+ "options_tab_9": {
+ "message": "Wenn diese Option deaktiviert ist, überprüft Gmail Notifier entweder das aktive Fenster oder alle geöffneten Fenster auf die geöffnete Gmail-Instanz und wechselt zum Tab, wenn die Tab-Öffnung angefordert wird.",
+ "description": ""
+ },
+ "options_tab_10": {
+ "message": "Open emails in basic HTML mode",
+ "description": ""
+ },
+ "options_toolbar": {
+ "message": "Symbolleiste:",
+ "description": ""
+ },
+ "options_toolbar_1": {
+ "message": "Verhalten der Symbolleistenschaltfläche",
+ "description": ""
+ },
+ "options_toolbar_2": {
+ "message": "Immer das E-Mail-Vorschaupanel öffnen.",
+ "description": ""
+ },
+ "options_toolbar_3": {
+ "message": "Öffne das Gmail-Konto, wenn nur ein Konto angemeldet ist.",
+ "description": ""
+ },
+ "options_toolbar_18": {
+ "message": "Open Gmail account (forced)",
+ "description": ""
+ },
+ "options_toolbar_4": {
+ "message": "Symbolleiste Panel-Modus",
+ "description": ""
+ },
+ "options_toolbar_5": {
+ "message": "Nur Auszug anzeigen",
+ "description": ""
+ },
+ "options_toolbar_6": {
+ "message": "Gesamten Inhalt anzeigen",
+ "description": ""
+ },
+ "options_toolbar_7": {
+ "message": "Breite des Symbolleisten-Panels im Modus 'Gesamten Inhalt anzeigen' ist (in Pixel):",
+ "description": ""
+ },
+ "options_toolbar_8": {
+ "message": "Minimale Breite ist 500px.",
+ "description": ""
+ },
+ "options_toolbar_9": {
+ "message": "Höhe des Symbolleisten-Panels im Modus 'Gesamten Inhalt anzeigen' ist (in Pixel):",
+ "description": ""
+ },
+ "options_toolbar_10": {
+ "message": "Mindesthöhe ist 500px.",
+ "description": ""
+ },
+ "options_toolbar_11": {
+ "message": "Tastaturkürzel auf dem Symbolleisten-Panel unterstützen",
+ "description": ""
+ },
+ "options_toolbar_12": {
+ "message": "!: Als Spam melden, #: Papierkorb, e: Archivieren, Umschalttaste + i: Als gelesen markieren.",
+ "description": ""
+ },
+ "options_toolbar_13": {
+ "message": "Im Modus 'Gesamten Inhalt anzeigen' E-Mails als HTML rendern.",
+ "description": ""
+ },
+ "options_toolbar_14": {
+ "message": "Wenn im Modus 'Gesamten Inhalt anzeigen' nur Text-Rendern bevorzugt wird, deaktiviere das Kontrollkästchen.",
+ "description": ""
+ },
+ "options_toolbar_15": {
+ "message": "Klicke mit der mittleren Maustaste auf die Schaltfläche in der Symbolleiste, um",
+ "description": ""
+ },
+ "options_toolbar_16": {
+ "message": "Alle Konten aktualisieren",
+ "description": ""
+ },
+ "options_toolbar_17": {
+ "message": "Öffne das Haput-Gmail-Konto",
+ "description": ""
+ },
+ "options_misc": {
+ "message": "Sonstiges:",
+ "description": ""
+ },
+ "options_misc_1": {
+ "message": "Konten alphabetisch sortieren",
+ "description": ""
+ },
+ "options_misc_2": {
+ "message": "Standart-Sortierung ist in Login-Reihenfolge.",
+ "description": ""
+ },
+ "options_misc_3": {
+ "message": "Symbolleiste Farbmuster ist",
+ "description": ""
+ },
+ "options_misc_4": {
+ "message": "Grau für \"keine Ungelesenen\" und Blau für \"Getrennt\"",
+ "description": ""
+ },
+ "options_misc_5": {
+ "message": "Blau für \"keine Ungelesenen\" und Grau für \"Getrennt\"",
+ "description": ""
+ },
+ "options_misc_9": {
+ "message": "Rot für \"keine Ungelesenen\" und Grau für \"Getrennt\"",
+ "description": ""
+ },
+ "options_misc_6": {
+ "message": "Zeige eine Desktopbenachrichtigung an, wenn Gmail bereits in einem anderen Tab geöffnet ist.",
+ "description": ""
+ },
+ "options_misc_7": {
+ "message": "Begrüßungsseite beim Upgrade anzeigen",
+ "description": ""
+ },
+ "options_misc_8": {
+ "message": "Alle Einstellungen auf Werkseinstellungen zurücksetzen",
+ "description": ""
+ },
+ "options_misc_10": {
+ "message": "Desktop- und Benachrichtigungstöne nur auslösen, wenn die E-Mail vor weniger als angekommen ist (in Minuten):",
+ "description": ""
+ },
+ "options_misc_11": {
+ "message": "Wenn man diese Einstellung auf Null setzt, erhält man weder Desktop- noch Benachrichtigungstöne. Man erhält jedoch immer noch eine Schaltflächen-Benachrichtigung.",
+ "description": ""
+ },
+ "options_misc_12": {
+ "message": "Füge keine Login-Daten in den Tooltip-Text ein!",
+ "description": ""
+ },
+ "options_misc_13": {
+ "message": "Standardmäßig aktualisiert der Notifier Tooltip-Text der Symbolleistenschaltfläche mit Anmeldeinformationen. Wenn diese Option deaktiviert ist, bleibt der Tooltip-Text der Standardwert.",
+ "description": ""
+ },
+ "options_misc_14": {
+ "message": "Zeige nicht die genaue Menge an, wenn die Anzahl der ungelesenen E-Mails größer als 999 ist.",
+ "description": ""
+ },
+ "options_misc_15": {
+ "message": "Öffne die FAQ-Seite nach Updates",
+ "description": ""
+ },
+ "options_plugins": {
+ "message": "Plug-ins:",
+ "description": ""
+ },
+ "options_plugins_1": {
+ "message": "Gmail-Labels und Sternschaltfläche (experimentell)",
+ "description": ""
+ },
+ "options_plugins_2": {
+ "message": "Dieses Plugin zeigt sowohl die Sternschaltfläche als auch die Thread-Labels im Popup an (nur erweiterter Modus).",
+ "description": ""
+ },
+ "options_px": {
+ "message": "px",
+ "description": ""
+ },
+ "options_empty": {
+ "message": "nicht definiert",
+ "description": ""
+ },
+ "options_button_test": {
+ "message": "abspielen",
+ "description": ""
+ },
+ "options_button_reset": {
+ "message": "Einstellungen zurücksetzen",
+ "description": ""
+ },
+ "popup_settings": {
+ "message": "Einstellungen",
+ "description": ""
+ },
+ "popup_of": {
+ "message": "von",
+ "description": ""
+ },
+ "popup_wait": {
+ "message": "Warte...",
+ "description": ""
+ },
+ "popup_date_format": {
+ "message": "%mm %dd, %yy",
+ "description": ""
+ },
+ "popup_no_subject": {
+ "message": "(kein Thema)",
+ "description": ""
+ },
+ "popup_open_settings": {
+ "message": "Open Settings",
+ "description": ""
+ },
+ "popup_open_inbox": {
+ "message": "Open Inbox",
+ "description": ""
+ },
+ "popup_archive": {
+ "message": "Archivieren",
+ "description": ""
+ },
+ "popup_spam": {
+ "message": "Spam",
+ "description": ""
+ },
+ "popup_trash": {
+ "message": "Papierkorb",
+ "description": ""
+ },
+ "popup_refresh": {
+ "message": "Aktualisieren",
+ "description": ""
+ },
+ "popup_read": {
+ "message": "Als gelesen markieren",
+ "description": ""
+ },
+ "popup_read_all": {
+ "message": "Alle als gelesen markieren",
+ "description": ""
+ },
+ "popup_msg_1": {
+ "message": "jetzt gerade",
+ "description": ""
+ },
+ "popup_msg_2": {
+ "message": "Vor 1 Minute",
+ "description": ""
+ },
+ "popup_msg_3_format": {
+ "message": "Vor %d Minuten",
+ "description": ""
+ },
+ "popup_msg_4": {
+ "message": "Vor 1 Stunde",
+ "description": ""
+ },
+ "popup_msg_5": {
+ "message": "Stunden her",
+ "description": ""
+ },
+ "popup_msg_6": {
+ "message": "Gestern",
+ "description": ""
+ },
+ "popup_msg_7_format": {
+ "message": "Vor %d Tagen",
+ "description": ""
+ },
+ "popup_msg_8_format": {
+ "message": "Vor %d Woche(n)",
+ "description": ""
+ },
+ "popup_msg_9_format": {
+ "message": "Vor %d Monat(en)",
+ "description": ""
+ },
+ "popup_msg_10": {
+ "message": "Januar",
+ "description": ""
+ },
+ "popup_msg_11": {
+ "message": "Februar",
+ "description": ""
+ },
+ "popup_msg_12": {
+ "message": "März",
+ "description": ""
+ },
+ "popup_msg_13": {
+ "message": "April",
+ "description": ""
+ },
+ "popup_msg_14": {
+ "message": "Mai",
+ "description": ""
+ },
+ "popup_msg_15": {
+ "message": "Juni",
+ "description": ""
+ },
+ "popup_msg_16": {
+ "message": "Juli",
+ "description": ""
+ },
+ "popup_msg_17": {
+ "message": "August",
+ "description": ""
+ },
+ "popup_msg_18": {
+ "message": "September",
+ "description": ""
+ },
+ "popup_msg_19": {
+ "message": "Oktober",
+ "description": ""
+ },
+ "popup_msg_20": {
+ "message": "November",
+ "description": ""
+ },
+ "popup_msg_21": {
+ "message": "Dezember",
+ "description": ""
+ },
+ "settings_open_title": {
+ "message": "Öffne die Seite Optionen (Einstellungen)",
+ "description": ""
+ },
+ "settings_open_label": {
+ "message": "Optionen öffnen",
+ "description": ""
+ },
+ "gmail": {
+ "message": "Notifier für Gmail™",
+ "description": ""
+ }
+}
\ No newline at end of file
diff --git a/v3.classic/_locales/el/messages.json b/v3.classic/_locales/el/messages.json
new file mode 100644
index 00000000..772880c4
--- /dev/null
+++ b/v3.classic/_locales/el/messages.json
@@ -0,0 +1,758 @@
+{
+ "toolbar_label": {
+ "message": "Notifier for Gmail™",
+ "description": ""
+ },
+ "tooltip_1": {
+ "message": "Αριστερό κλικ: Ανοίξτε το Gmail ή το παράθυρο προεπισκόπησης αλληλογραφίας",
+ "description": ""
+ },
+ "tooltip_2": {
+ "message": "Μεσαίο (ή Ctrl + Left) κλικ: Ανανέωση όλων των λογαριασμών",
+ "description": ""
+ },
+ "tooltip_3": {
+ "message": "Δεξί κλικ: Επιλογές Λογαριασμού",
+ "description": ""
+ },
+ "description": {
+ "message": "Πολλαπλές ετικέτες και κοινοποίηση λογαριασμού για το Google Mail (Gmail)",
+ "description": ""
+ },
+ "log_in_to_your_account": {
+ "message": "Παρακαλούμε συνδεθείτε στον Gmail λογαριασμό σας ",
+ "description": ""
+ },
+ "msg_1": {
+ "message": "Η καρτέλα είναι ήδη ανοικτή. Κάντε κλικ στο κουμπί της γραμμής εργαλείων για να ανοίξετε το Gmail σε μια νέα καρτέλα, ή να μεταβείτε σε μια υπάρχουσα Gmail καρτέλα.",
+ "description": ""
+ },
+ "msg_2": {
+ "message": "Ο σύνδεσμος έχει αντιγραφεί στο πρόχειρο.",
+ "description": ""
+ },
+ "msg_3": {
+ "message": "Το επιλεγμένο κείμενο έχει αντιγράφει στο πρόχειρο.",
+ "description": ""
+ },
+ "msg_4": {
+ "message": "Σημείωση: Για να λειτουργήσει σωστά το notifier, θα πρέπει να είστε συνδεδεμένοι στον Google λογαριασμό σας.",
+ "description": ""
+ },
+ "msg_5": {
+ "message": "Επιλέξτε ένα αρχείο ήχου",
+ "description": ""
+ },
+ "label_1": {
+ "message": "Ανανέωση",
+ "description": ""
+ },
+ "label_2": {
+ "message": "Ρυθμίσεις",
+ "description": ""
+ },
+ "label_3": {
+ "message": "Απενεργοποίηση όλων των ειδοποιήσεων",
+ "description": ""
+ },
+ "label_4": {
+ "message": "Για 5 λεπτά",
+ "description": ""
+ },
+ "label_5": {
+ "message": "Για 15 λεπτά",
+ "description": ""
+ },
+ "label_6": {
+ "message": "Για 30 λεπτά",
+ "description": ""
+ },
+ "label_7": {
+ "message": "Για 1 ώρα",
+ "description": ""
+ },
+ "label_8": {
+ "message": "Για 2 ώρες",
+ "description": ""
+ },
+ "label_9": {
+ "message": "Για 5 ώρες",
+ "description": ""
+ },
+ "label_13": {
+ "message": "Για μια προσαρμοσμένη χρονική περίοδο",
+ "description": ""
+ },
+ "label_10": {
+ "message": "Enable notifications (session)",
+ "description": ""
+ },
+ "label_11": {
+ "message": "Συντάξτε ένα e-mail",
+ "description": ""
+ },
+ "label_12": {
+ "message": "Άνοιγμα Συχνών Ερωτήσεων",
+ "description": ""
+ },
+ "label_14": {
+ "message": "Σύνδεση στους λογαριασμούς",
+ "description": ""
+ },
+ "unknown": {
+ "message": "άγνωστο",
+ "description": ""
+ },
+ "and": {
+ "message": "και",
+ "description": ""
+ },
+ "log_into_your_account": {
+ "message": "Παρακαλούμε συνδεθείτε στον λογαριασμό σας ",
+ "description": ""
+ },
+ "notification": {
+ "message": "Από: [author_email] [break] Τίτλος: [τίτλος] [break] Περίληψη: [περίληψη]",
+ "description": ""
+ },
+ "options_title": {
+ "message": "Επιλογές - Gmail ™ Notifier",
+ "description": ""
+ },
+ "options_inshort": {
+ "message": "Πολλαπλές ετικέτες και λογαριασμοί κοινοποιών για το Google Mail (Gmail).",
+ "description": ""
+ },
+ "options_donation": {
+ "message": "Support Development",
+ "description": ""
+ },
+ "options_timings": {
+ "message": "Timings:",
+ "description": ""
+ },
+ "options_timings_l1": {
+ "message": "Έλεγχος για νέα e-mail κάθε (σε δευτερόλεπτα):",
+ "description": ""
+ },
+ "options_timings_l2": {
+ "message": "Ελάχιστο χρονικό διάστημα είναι 10 δευτερόλεπτα.",
+ "description": ""
+ },
+ "options_timings_l3": {
+ "message": "Υπενθύμιση για όλα τα μη αναγνωσμένα email κάθε (σε λεπτά):",
+ "description": ""
+ },
+ "options_timings_l4": {
+ "message": "Ρυθμίστε την τιμή στο μηδέν για μη-περιοδικές υπενθυμίσεις.",
+ "description": ""
+ },
+ "options_timings_l5": {
+ "message": "Ελάχιστη περίοδος είναι 5 λεπτά.",
+ "description": ""
+ },
+ "options_timings_l6": {
+ "message": "Πυρκαγιές με μη μηδενική τιμή, κοινοποίηση και ηχητική ειδοποίηση τόσο στην επιφάνεια εργασίας (παρόμοιο με νέα άφιξη email) για πάντα, αν έχετε μη αναγνωσμένα email(s).",
+ "description": ""
+ },
+ "options_timings_l7": {
+ "message": "Να μην γίνεται έλεγχος για νέα email κατά την εκκίνηση για (σε δευτερόλεπτα):",
+ "description": ""
+ },
+ "options_timings_l8": {
+ "message": "Ρυθμίστε την τιμή στο μηδέν για κανένα έλεγχο e-mail μέχρι την πρώτη χειροκίνητη ανανέωση [Δεν διατίθεται στο Safari].",
+ "description": ""
+ },
+ "options_gmail": {
+ "message": "Gmail:",
+ "description": ""
+ },
+ "options_gmail_1": {
+ "message": "Πρωτοβάθμιος λογαριασμός (/mail/u/0/)",
+ "description": ""
+ },
+ "options_gmail_2": {
+ "message": "Ξεχωριστές ετικέτες με \",\" (κόμμα).",
+ "description": ""
+ },
+ "options_gmail_3": {
+ "message": "Δευτερεύον λογαριασμός (/mail/u/1/)",
+ "description": ""
+ },
+ "options_gmail_4": {
+ "message": "Τριτοβάθμιος λογαριασμός (/mail/u/2/)",
+ "description": ""
+ },
+ "options_gmail_5": {
+ "message": "Τεταρτογενής λογαριασμός (/mail/u/3/)",
+ "description": ""
+ },
+ "options_gmail_6": {
+ "message": "Πενταδικός λογαριασμός (/mail/u/4/)",
+ "description": ""
+ },
+ "options_gmail_7": {
+ "message": "Σκηνικός λογαριασμός (/mail/u/5/)",
+ "description": ""
+ },
+ "options_gmail_8": {
+ "message": "Σήμανση ως αναγνωσμένο μήνυμα κατά την αρχειοθέτηση",
+ "description": ""
+ },
+ "options_gmail_15": {
+ "message": "Some popular labels:",
+ "description": ""
+ },
+ "options_gmail_10": {
+ "message": "Λάβετε ειδοποιήσεις για τις εξής ετικέτες και τους λογαριασμούς:",
+ "description": ""
+ },
+ "options_gmail_11": {
+ "message": "Προσαρμοσμένες τροφοδοσίες:",
+ "description": ""
+ },
+ "options_gmail_12": {
+ "message": "Ξεχωριστές τροφοδοσίες με \",\" (κόμμα). Δείγμα τροφοδοσίας: https://mail.google.com/mail/u/0/feed/atom/inbox",
+ "description": ""
+ },
+ "options_gmail_13": {
+ "message": "Note: maximum number for all labels except \"inbox\" is 20 (Google feeds only supply the 20 newest entries)",
+ "description": ""
+ },
+ "options_gmail_14": {
+ "message": "Note: for the Notifier to listen for more than 5 accounts, add feeds URLs to the \"Custom feeds\" field. For instance to listen to the 6 and 7th accounts add: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox",
+ "description": ""
+ },
+ "options_notifications": {
+ "message": "Ειδοποιήσεις:",
+ "description": ""
+ },
+ "options_notifications_1": {
+ "message": "Κοινοποίηση επιφάνειας εργασίας οθόνης για νέα email",
+ "description": ""
+ },
+ "options_notifications_2": {
+ "message": "Εμφάνιση κοινοποίησης επιφάνειας εργασίας για (σε δευτερόλεπτα):",
+ "description": ""
+ },
+ "options_notifications_3": {
+ "message": "Η επιλογή αυτή δεν μπορεί να λειτουργήσει με βάση το λειτουργικό σας σύστημα.",
+ "description": ""
+ },
+ "options_notifications_4": {
+ "message": "Μορφή κοινοποίησης",
+ "description": ""
+ },
+ "options_notifications_5": {
+ "message": "Διαθέσιμες μεταβλητές:",
+ "description": ""
+ },
+ "options_notifications_6": {
+ "message": "Περικόψτε ειδοποιήσεις περισσότερο από",
+ "description": ""
+ },
+ "options_notifications_7": {
+ "message": "χαρακτήρες για [τίτλος] και [περίληψη] πεδία.",
+ "description": ""
+ },
+ "options_notifications_8": {
+ "message": "Για να μην έχουν καμία περικοπή τα αποσιωπητικά, χρησιμοποιήστε ένα μεγάλο αριθμό εδώ.",
+ "description": ""
+ },
+ "options_notifications_9": {
+ "message": "Αναπαραγωγή ήχου ειδοποίησης για νέα email",
+ "description": ""
+ },
+ "options_notifications_10": {
+ "message": "Σημείωση για τους χρήστες του Mac. Από το Firefox 28.0, όλες οι ειδοποιήσεις στην επιφάνεια εργασίας διεκπεραιώνονται από το Mac Κέντρο Ειδοποίησης που προκαλεί ένα επιπλέον ήχο ειδοποίησης. Θα πρέπει είτε να απενεργοποιήσετε αυτο τον ήχο ειδοποίησης ή αυτόν που παράγεται από το Κέντρο Ειδοποίησης.",
+ "description": ""
+ },
+ "options_notifications_11": {
+ "message": "Εμφανιση \"Ειδοποιήσεις της γραμμής εργασιών του Windows\" ή \"Mac OS Dock κοινοποίησης\"",
+ "description": ""
+ },
+ "options_notifications_12": {
+ "message": "Το Taskbar notifications δεν υποστηρίζεται απο το λειτουργικό σύστημα Linux αυτή τη στιγμή.",
+ "description": ""
+ },
+ "options_notifications_13": {
+ "message": "Ανοιγμα της γραμμής εργαλείων όταν κάνετε κλικ στο εικονίδιο ειδοποίησης στην γραμμή εργασιών (μόνο για Windows, beta)",
+ "description": ""
+ },
+ "options_notifications_14": {
+ "message": "Αυτό το χαρακτηριστικό είναι ιδιαίτερα πειραματικό και θα μπορούσε να κάνει τον Firefox browser ασταθή. [Επανεκκίνηση απαιτείται].",
+ "description": ""
+ },
+ "options_notifications_15": {
+ "message": "Ο προ επιλεγμένος ήχος ειδοποίησης είναι",
+ "description": ""
+ },
+ "options_notifications_16": {
+ "message": "Gmail Notifier προεπιλεγμένη ειδοποίηση",
+ "description": ""
+ },
+ "options_notifications_17": {
+ "message": "Checker Plus ειδοποίηση καμπάνας",
+ "description": ""
+ },
+ "options_notifications_18": {
+ "message": "Checker Plus Ειδοποίηση κωδώνισματος",
+ "description": ""
+ },
+ "options_notifications_19": {
+ "message": "Windows email ειδοποίηση",
+ "description": ""
+ },
+ "options_notifications_20": {
+ "message": "Ο ήχος ορίζεται από τον χρήστη ",
+ "description": ""
+ },
+ "options_notifications_21": {
+ "message": "Προσδιορισμενος ηχος απο τον χρηστη",
+ "description": ""
+ },
+ "options_notifications_22": {
+ "message": "Αν ο browser σας δεν παίζει το προεπιλεγμένο ήχο ειδοποίησης, προσπαθήστε να το μετατρέψετε σε μια απλή μορφή WAV χρησιμοποιώντας ένα online εργαλείο μετατροπής.",
+ "description": ""
+ },
+ "options_notifications_35": {
+ "message": "Για να επιλέξετε ένα νέο προσαρμοσμένο ήχο, επιλέξτε ένα ενσωματωμένο ήχο και στη συνέχεια αλλάξτε την επιλογή με τον προσαρμοσμένο ήχο",
+ "description": ""
+ },
+ "options_notifications_23": {
+ "message": "Ένταση ήχου κοινοποιήσεως ",
+ "description": ""
+ },
+ "options_notifications_24": {
+ "message": "Ένταση είναι ένας αριθμός μεταξύ 0 έως 100, όπου 100 είναι η υψηλότερη ένταση (προεπιλογή).",
+ "description": ""
+ },
+ "options_notifications_25": {
+ "message": "Στο safari πιθανότατα οι προεπιλεγμένες ειδοποιήσεις ήχου να μην παίζουν σωστά, αν ναι, χρησιμοποιήστε ένα αρχείο ήχου ως κοινοποίηση.",
+ "description": ""
+ },
+ "options_notifications_26": {
+ "message": "Εμφανιση πάντα κοινοποίησης στον δίσκο (μόνο για Windows)",
+ "description": ""
+ },
+ "options_notifications_27": {
+ "message": "Κοινοποίηση στον δίσκος θα εμφανίζεται ακόμη και αν δεν υπάρχει μη αναγνωσμένο μήνυμα.",
+ "description": ""
+ },
+ "options_notifications_28": {
+ "message": "Απενεργοποίηση όλων των ειδοποιήσεων για μια προσαρμοσμένη χρονική περίοδο (σε λεπτά):",
+ "description": ""
+ },
+ "options_notifications_29": {
+ "message": "Αυτή η επιλογή σχετίζεται με το δεξί κλικ μενού στο κουμπί της γραμμής εργαλείων -> απενεργοποιήσετε όλες τις ειδοποιήσεις -> προσαρμοσμένης χρονικής περιόδου.",
+ "description": ""
+ },
+ "options_notifications_30": {
+ "message": "Συνδυάστε όλες τις ταυτόχρονες ειδοποιήσεις στην επιφάνεια εργασίας σε μια ενιαία κοινοποίηση",
+ "description": ""
+ },
+ "options_notifications_31": {
+ "message": "Custom sound notification",
+ "description": ""
+ },
+ "options_notifications_32": {
+ "message": "name or email contains",
+ "description": ""
+ },
+ "options_notifications_33": {
+ "message": "περιέχει τίτλο email",
+ "description": ""
+ },
+ "options_notifications_34": {
+ "message": "περιέχει περίληψη email",
+ "description": ""
+ },
+ "options_notifications_36": {
+ "message": "Ask Gmail to prevent 'inbox.google.com' redirection",
+ "description": ""
+ },
+ "options_notifications_37": {
+ "message": "Display Badge number",
+ "description": ""
+ },
+ "options_notifications_38": {
+ "message": "Faster actions (mark as read, delete, ...) (Consider actions to be resolved when headers are received)",
+ "description": ""
+ },
+ "options_notifications_40": {
+ "message": "Allow quick actions from notification box (maximum two actions) (Chrome only)",
+ "description": ""
+ },
+ "options_notifications_41": {
+ "message": "Mark as Read",
+ "description": ""
+ },
+ "options_notifications_42": {
+ "message": "Archive",
+ "description": ""
+ },
+ "options_notifications_43": {
+ "message": "Trash",
+ "description": ""
+ },
+ "options_tab": {
+ "message": "Άνοιγμα καρτέλας:",
+ "description": ""
+ },
+ "options_tab_1": {
+ "message": "Αναζήτηση για έναν ανοικτό λογαριασμό Gmail μόνο στο ενεργό παράθυρο",
+ "description": ""
+ },
+ "options_tab_2": {
+ "message": "Μην ψάξετε σε άλλα παράθυρα του προγράμματος περιήγησης για ανοικτούς λογαριασμούς Gmail. Εάν το Gmail δεν είναι ανοικτό στο ενεργό παράθυρο, ανοίξτε μια νέα καρτέλα.",
+ "description": ""
+ },
+ "options_tab_3": {
+ "message": "Άνοιγμα νέου λογαριασμού Gmail δίπλα στην ενεργή καρτέλα",
+ "description": ""
+ },
+ "options_tab_4": {
+ "message": "Άνοιγμα λογαριασμού Gmail στην ενεργή καρτέλα",
+ "description": ""
+ },
+ "options_tab_5": {
+ "message": "Άνοιγμα λογαριασμού Gmail σε μια καρτέλα στον φόντο",
+ "description": ""
+ },
+ "options_tab_6": {
+ "message": "Άνοιγμα λογαριασμού Gmail σε νέο παράθυρο",
+ "description": ""
+ },
+ "options_tab_7": {
+ "message": "Πάντα να χρησιμοποιείτε κενό καρτελών αντί να ανοίγει μια νέα καρτέλα, όταν είναι ανοικτή στην καρτέλα ενεργοποιείται",
+ "description": ""
+ },
+ "options_tab_8": {
+ "message": "Ignore opened Gmail tabs",
+ "description": ""
+ },
+ "options_tab_9": {
+ "message": "When unchecked, Gmail Notifier checks either active window or all open windows for open instance of Gmail and switch to the tab when tab opening is requested.",
+ "description": ""
+ },
+ "options_tab_10": {
+ "message": "Open emails in basic HTML mode",
+ "description": ""
+ },
+ "options_toolbar": {
+ "message": "Γραμμη Εργαλειων:",
+ "description": ""
+ },
+ "options_toolbar_1": {
+ "message": "Γραμμή εργαλείων συμπεριφορά κουμπιού",
+ "description": ""
+ },
+ "options_toolbar_2": {
+ "message": "Πάντα ανοικτό παράθυρο προεπισκόπησης email",
+ "description": ""
+ },
+ "options_toolbar_3": {
+ "message": "Άνοιγμα λογαριασμού Gmail αν μόνο ένας λογαριασμός είναι συνδεδεμένος ",
+ "description": ""
+ },
+ "options_toolbar_18": {
+ "message": "Open Gmail account (forced)",
+ "description": ""
+ },
+ "options_toolbar_4": {
+ "message": "Λειτουργία γραμμής εργαλείων",
+ "description": ""
+ },
+ "options_toolbar_5": {
+ "message": "Εμφάνιση μόνο συνοπτικά",
+ "description": ""
+ },
+ "options_toolbar_6": {
+ "message": "Εμφάνιση πλήρους περιεχομένου",
+ "description": ""
+ },
+ "options_toolbar_7": {
+ "message": "Πλάτος γραμμής εργαλείων του πίνακα σε κατάσταση πλήρους περιεχομένου (σε εικονοστοιχεία):",
+ "description": ""
+ },
+ "options_toolbar_8": {
+ "message": "Το ελάχιστο πλάτος είναι 500px.",
+ "description": ""
+ },
+ "options_toolbar_9": {
+ "message": "Το υψος της γραμμής εργαλείων σε κατάσταση πλήρους περιεχομένου είναι (σε εικονοστοιχεία):",
+ "description": ""
+ },
+ "options_toolbar_10": {
+ "message": "Το ελάχιστο ύψος είναι 500px.",
+ "description": ""
+ },
+ "options_toolbar_11": {
+ "message": "Συντομεύσεις πληκτρολογίου υποστήριξης στον πίνακα εργαλείων",
+ "description": ""
+ },
+ "options_toolbar_12": {
+ "message": "!: Αναφορά ως ανεπιθύμητο, #: Απορρίμματα, και: Αρχείο, Shift + I: Επισήμανση ως διαβάσμενο",
+ "description": ""
+ },
+ "options_toolbar_13": {
+ "message": "Απόδοση e-mail ως HTML σε λειτουργία πλήρους περιεχομένου",
+ "description": ""
+ },
+ "options_toolbar_14": {
+ "message": "Αν προτιμάτε μονο το κείμενο σε λειτουργία πλήρους περιεχομένου, αποεπιλέξτε το πλαίσιο.",
+ "description": ""
+ },
+ "options_toolbar_15": {
+ "message": "Μέσαιο κλικ στην μπάρα εργαλείων για",
+ "description": ""
+ },
+ "options_toolbar_16": {
+ "message": "Ανανέωση όλων των λογαριασμών",
+ "description": ""
+ },
+ "options_toolbar_17": {
+ "message": "Άνοιγμα του κύριου Gmail λογαριασμου",
+ "description": ""
+ },
+ "options_misc": {
+ "message": "Διάφορα:",
+ "description": ""
+ },
+ "options_misc_1": {
+ "message": "Ταξινόμηση λογαριασμών αλφαβητικά",
+ "description": ""
+ },
+ "options_misc_2": {
+ "message": "Ο τύπος προεπιλεγμένης σειράς που έχει συνδεθεί",
+ "description": ""
+ },
+ "options_misc_3": {
+ "message": "Το σχέδιο χρώματος γραμμής εργαλείων είναι",
+ "description": ""
+ },
+ "options_misc_4": {
+ "message": "Γκρι χρώμα για \"Μη Αναγνωσμένα\" και μπλε χρώμα για \"Αποσυνδεση\"",
+ "description": ""
+ },
+ "options_misc_5": {
+ "message": "Μπλε χρώμα για \"Μη Αναγνωσμένα\" και γκρι χρώμα για \"Αποσυνδεση\"",
+ "description": ""
+ },
+ "options_misc_9": {
+ "message": "Κόκκινο χρώμα για \"Μη Αναγνωσμένα\" και γκρι χρώμα για \"Ασύνδετα\"",
+ "description": ""
+ },
+ "options_misc_6": {
+ "message": "Show desktop notification to warn that Gmail is already opened in the active tab",
+ "description": ""
+ },
+ "options_misc_7": {
+ "message": "Εμφάνιση σελίδας υποδοχής για αναβάθμιση",
+ "description": ""
+ },
+ "options_misc_8": {
+ "message": "Επαναφορά όλων των ρυθμίσεων στις εργοστασιακές ρυθμίσεις",
+ "description": ""
+ },
+ "options_misc_10": {
+ "message": "Μόνο εμφάνιση στην επιφάνεια εργασίας και ηχητικές ειδοποιήσεις, όταν το ηλεκτρονικό ταχυδρομείου έχει φτάσει σε λιγότερο από (σε λεπτά):",
+ "description": ""
+ },
+ "options_misc_11": {
+ "message": "Θέτοντας αυτήν την προτίμηση στο μηδέν, δεν θα λάμβανετε ειδοποιήσεις στην επιφάνεια εργασίας και ούτε ηχητικές ειδοποιήσεις. Ωστόσο, μπορείτε ακόμα να παίρνετε σήμα κοινοποιήσεων.",
+ "description": ""
+ },
+ "options_misc_12": {
+ "message": "Δεν περιλαμβάνονται στοιχεία σύνδεσης στο κείμενο επεξήγησης",
+ "description": ""
+ },
+ "options_misc_13": {
+ "message": "Από προεπιλογή, ο κοινοποιών ενημερώνει κείμενο επεξήγησης του κουμπιού γραμμής εργαλείων με πληροφορίες σύνδεσης. Με την απενεργοποίηση της επιλογής αυτής, στο κείμενο επεξήγησης παραμένει η προεπιλεγμένη τιμή.",
+ "description": ""
+ },
+ "options_misc_14": {
+ "message": "Να μην εμφανίζεται ο ακριβής αριθμός σημάτων όταν ο αριθμός των μη αναγνωσμένων μηνυμάτων ηλεκτρονικού ταχυδρομείου είναι μεγαλύτερος από 999",
+ "description": ""
+ },
+ "options_misc_15": {
+ "message": "Open FAQs page on updates",
+ "description": ""
+ },
+ "options_plugins": {
+ "message": "Plug-ins:",
+ "description": ""
+ },
+ "options_plugins_1": {
+ "message": "Gmail labels and star button (experimental)",
+ "description": ""
+ },
+ "options_plugins_2": {
+ "message": "This plugin displays the star button as well as thread's labels in the popup (expanded mode only).",
+ "description": ""
+ },
+ "options_px": {
+ "message": "px",
+ "description": ""
+ },
+ "options_empty": {
+ "message": "δεν ορίζεται",
+ "description": ""
+ },
+ "options_button_test": {
+ "message": "Play",
+ "description": ""
+ },
+ "options_button_reset": {
+ "message": "Reset Preferences",
+ "description": ""
+ },
+ "popup_settings": {
+ "message": "Ρυθμίσεις",
+ "description": ""
+ },
+ "popup_of": {
+ "message": "από",
+ "description": ""
+ },
+ "popup_wait": {
+ "message": "Περιμένετε...",
+ "description": ""
+ },
+ "popup_date_format": {
+ "message": "%mm %dd, %yy",
+ "description": ""
+ },
+ "popup_no_subject": {
+ "message": "(χωρίς θέμα)",
+ "description": ""
+ },
+ "popup_open_settings": {
+ "message": "Open Settings",
+ "description": ""
+ },
+ "popup_open_inbox": {
+ "message": "Open Inbox",
+ "description": ""
+ },
+ "popup_archive": {
+ "message": "Αρχείο",
+ "description": ""
+ },
+ "popup_spam": {
+ "message": "Spam",
+ "description": ""
+ },
+ "popup_trash": {
+ "message": "Σκουπίδια",
+ "description": ""
+ },
+ "popup_refresh": {
+ "message": "Ανανεώνω",
+ "description": ""
+ },
+ "popup_read": {
+ "message": "Σημείωσε ως Διαβασμένο",
+ "description": ""
+ },
+ "popup_read_all": {
+ "message": "Σημείωση όλων ως Αναγνωσμένα",
+ "description": ""
+ },
+ "popup_msg_1": {
+ "message": "μόλις τώρα",
+ "description": ""
+ },
+ "popup_msg_2": {
+ "message": "1 λεπτό πριν",
+ "description": ""
+ },
+ "popup_msg_3_format": {
+ "message": "%d λεπτά πριν",
+ "description": ""
+ },
+ "popup_msg_4": {
+ "message": "1 ώρα πριν",
+ "description": ""
+ },
+ "popup_msg_5": {
+ "message": "ώρες πριν",
+ "description": ""
+ },
+ "popup_msg_6": {
+ "message": "Εχθές",
+ "description": ""
+ },
+ "popup_msg_7_format": {
+ "message": "%d ημέρες πριν",
+ "description": ""
+ },
+ "popup_msg_8_format": {
+ "message": "%d εβδομάδα(ες) πριν",
+ "description": ""
+ },
+ "popup_msg_9_format": {
+ "message": "%d μήνα(ες) πρίν",
+ "description": ""
+ },
+ "popup_msg_10": {
+ "message": "Ιανουάριος",
+ "description": ""
+ },
+ "popup_msg_11": {
+ "message": "Φεβρουάριος",
+ "description": ""
+ },
+ "popup_msg_12": {
+ "message": "Μάρτιος",
+ "description": ""
+ },
+ "popup_msg_13": {
+ "message": "Απρίλιος",
+ "description": ""
+ },
+ "popup_msg_14": {
+ "message": "Μάιος",
+ "description": ""
+ },
+ "popup_msg_15": {
+ "message": "Ιούνιος",
+ "description": ""
+ },
+ "popup_msg_16": {
+ "message": "Ιούλιος",
+ "description": ""
+ },
+ "popup_msg_17": {
+ "message": "Αύγουστος",
+ "description": ""
+ },
+ "popup_msg_18": {
+ "message": "Σεπτέμβριος",
+ "description": ""
+ },
+ "popup_msg_19": {
+ "message": "Οκτώβριος",
+ "description": ""
+ },
+ "popup_msg_20": {
+ "message": "Νοέμβριος",
+ "description": ""
+ },
+ "popup_msg_21": {
+ "message": "Δεκέμβριος",
+ "description": ""
+ },
+ "settings_open_title": {
+ "message": "Ανοίξτε τις επιλογές (ρυθμίσεις) σελίδας",
+ "description": ""
+ },
+ "settings_open_label": {
+ "message": "Ανοίξτε τις Επιλογές",
+ "description": ""
+ },
+ "gmail": {
+ "message": "Notifier for Gmail™",
+ "description": ""
+ }
+}
\ No newline at end of file
diff --git a/v3.classic/_locales/en/messages.json b/v3.classic/_locales/en/messages.json
new file mode 100644
index 00000000..298abd18
--- /dev/null
+++ b/v3.classic/_locales/en/messages.json
@@ -0,0 +1,623 @@
+{
+ "gmail": {
+ "message": "Notifier for Gmail™"
+ },
+ "toolbar_label": {
+ "message": "Notifier for Gmail™"
+ },
+ "description": {
+ "message": "Multiple label and account notifier for Google Mail (Gmail™)"
+ },
+ "log_in_to_your_account": {
+ "message": "Please sign-in to your Gmail™ account"
+ },
+ "msg_1": {
+ "message": "Tab is already open. Click on the toolbar button to open Gmail™ in a new tab, or to switch to an existing Gmail™ tab."
+ },
+ "msg_2": {
+ "message": "Link is copied to the clipboard."
+ },
+ "msg_3": {
+ "message": "Selected text is copied to the clipboard."
+ },
+ "msg_4": {
+ "message": "Note: For the notifier to work properly, you need to be logged-in into your Google account."
+ },
+ "msg_5": {
+ "message": "Select an audio sound file"
+ },
+ "msg_6": {
+ "message": "To run Gmail Notifier actions on this account, please allow Basic HTML view in Gmail. After granting access, restart the notifier."
+ },
+ "label_1": {
+ "message": "Refresh"
+ },
+ "label_2": {
+ "message": "Settings"
+ },
+ "label_3": {
+ "message": "Disable all notifications"
+ },
+ "label_4": {
+ "message": "For 5 mins"
+ },
+ "label_5": {
+ "message": "For 15 mins"
+ },
+ "label_6": {
+ "message": "For 30 mins"
+ },
+ "label_7": {
+ "message": "For 1 hour"
+ },
+ "label_8": {
+ "message": "For 2 hours"
+ },
+ "label_9": {
+ "message": "For 5 hours"
+ },
+ "label_13": {
+ "message": "For the custom time period"
+ },
+ "label_10": {
+ "message": "Enable notifications (session)"
+ },
+ "label_11": {
+ "message": "Compose an email"
+ },
+ "label_12": {
+ "message": "Open FAQs"
+ },
+ "label_14": {
+ "message": "Open Gmail"
+ },
+ "label_15": {
+ "message": "Included Accounts"
+ },
+ "unknown": {
+ "message": "unknown"
+ },
+ "and": {
+ "message": "and"
+ },
+ "log_into_your_account": {
+ "message": "Please log into your account"
+ },
+ "notification": {
+ "message": "From: [author_email][break] Title: [title][break] Summary: [summary]"
+ },
+ "options_title": {
+ "message": "Options Page - Gmail™ Notifier"
+ },
+ "options_inshort": {
+ "message": "Multiple label and account notifier for Google Mail (Gmail™)."
+ },
+ "options_donation": {
+ "message": "Support Development $"
+ },
+ "options_timings": {
+ "message": "Timings"
+ },
+ "options_timings_l1": {
+ "message": "Check for new emails every (in seconds):"
+ },
+ "options_timings_l2": {
+ "message": "Minimum period is 10 seconds."
+ },
+ "options_timings_l3": {
+ "message": "Remind you of all unread emails every (in minutes):"
+ },
+ "options_timings_l4": {
+ "message": "Set the value to zero for none-periodic reminders."
+ },
+ "options_timings_l5": {
+ "message": "Minimum period is 5 minutes."
+ },
+ "options_timings_l6": {
+ "message": "Non-zero value fires both desktop notification and alert sound (similar to new email arrival) eternally if you have unread email(s)."
+ },
+ "options_timings_l7": {
+ "message": "Do not check for new emails on startup for (in seconds):"
+ },
+ "options_timings_l8": {
+ "message": "Set the value to zero for no email check until the first manual refresh [Not available on Safari]."
+ },
+ "options_timings_l9": {
+ "message": "Track Gmail tabs and network activity to refresh the notifier on changes."
+ },
+ "options_timings_20": {
+ "message": "Monitor system idle state to refresh the notifier when activity resumes."
+ },
+ "options_gmail": {
+ "message": "Gmail™"
+ },
+ "options_gmail_1": {
+ "message": "Primary account (/mail/u/0/)"
+ },
+ "options_gmail_2": {
+ "message": "Separate labels by \",\" (Comma)."
+ },
+ "options_gmail_3": {
+ "message": "Secondary account (/mail/u/1/)"
+ },
+ "options_gmail_4": {
+ "message": "Tertiary account (/mail/u/2/)"
+ },
+ "options_gmail_5": {
+ "message": "Quaternary account (/mail/u/3/)"
+ },
+ "options_gmail_6": {
+ "message": "Quinary account (/mail/u/4/)"
+ },
+ "options_gmail_7": {
+ "message": "Senary account (/mail/u/5/)"
+ },
+ "options_gmail_8": {
+ "message": "Mark messages as read when archiving them"
+ },
+ "options_gmail_15": {
+ "message": "Some popular labels:"
+ },
+ "options_gmail_10": {
+ "message": "Receive notifications for the following labels and accounts:"
+ },
+ "options_gmail_11": {
+ "message": "Custom feeds:"
+ },
+ "options_gmail_12": {
+ "message": "Separate feeds by \",\" (Comma). Sample feed: https://mail.google.com/mail/u/0/feed/atom/inbox"
+ },
+ "options_gmail_13": {
+ "message": "Note: maximum number for all labels except \"inbox\" is 20 (Google feeds only supply the 20 newest entries)"
+ },
+ "options_gmail_14": {
+ "message": "Note: for the Notifier to listen for more than 5 accounts, add feeds URLs to the \"Custom feeds\" field. For instance to listen to the 6 and 7th accounts add: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox"
+ },
+ "options_notifications": {
+ "message": "Notifications"
+ },
+ "options_notifications_1": {
+ "message": "Display desktop notification for new emails"
+ },
+ "options_notifications_2": {
+ "message": "Show desktop notification for (in seconds):"
+ },
+ "options_notifications_3": {
+ "message": "This option may not work based on your OS."
+ },
+ "options_notifications_4": {
+ "message": "Notification format"
+ },
+ "options_notifications_5": {
+ "message": "Available variables:"
+ },
+ "options_notifications_6": {
+ "message": "Truncate notifications longer than"
+ },
+ "options_notifications_7": {
+ "message": "characters for [title] and [summary] fields."
+ },
+ "options_notifications_8": {
+ "message": "To have no ellipsis truncation, use a big number here."
+ },
+ "options_notifications_9": {
+ "message": "Play alert sound for new emails"
+ },
+ "options_notifications_10": {
+ "message": "Note for Mac users. From Firefox version 28.0, all desktop notifications are handled by Mac Notification Center which causes an extra sound alert. You need to either uncheck this sound notification or the one that is generated by the Notification Center."
+ },
+ "options_notifications_11": {
+ "message": "Display \"Windows™ taskbar notification\" or \"Mac OS Dock notification\""
+ },
+ "options_notifications_12": {
+ "message": "Taskbar notifications are not supported on Linux OS at the moment."
+ },
+ "options_notifications_13": {
+ "message": "Open toolbar panel when click on the taskbar notification icon (Windows™ only, beta)"
+ },
+ "options_notifications_14": {
+ "message": "This feature is highly experimental and might make your Firefox browser unstable. [Restart required]."
+ },
+ "options_notifications_15": {
+ "message": "Default sound notification:"
+ },
+ "options_notifications_16": {
+ "message": "Gmail™ Notifier default alert"
+ },
+ "options_notifications_17": {
+ "message": "Checker Plus bell alert"
+ },
+ "options_notifications_18": {
+ "message": "Checker Plus ding alert"
+ },
+ "options_notifications_19": {
+ "message": "Windows™ email alert"
+ },
+ "options_notifications_20": {
+ "message": "User defined sound"
+ },
+ "options_notifications_21": {
+ "message": "User defined notification sound:"
+ },
+ "options_notifications_22": {
+ "message": "If your browser is not playing the custom notification sound, try to convert it into a plain WAV format using an online conversion tool."
+ },
+ "options_notifications_35": {
+ "message": "To select a new custom sound, select a built-in sound first and then change the option to custom sound"
+ },
+ "options_notifications_23": {
+ "message": "Volume of the sound notification (in %):"
+ },
+ "options_notifications_24": {
+ "message": "Volume is a number between 0 to 100 where 100 is the highest volume (default)."
+ },
+ "options_notifications_25": {
+ "message": "In safari most likely the default sound notifications are not playing properly, if so use a custom sound file as your notification."
+ },
+ "options_notifications_26": {
+ "message": "Always show tray notification (Windows™ only)"
+ },
+ "options_notifications_27": {
+ "message": "Tray notification will be shown even if there is no unread message."
+ },
+ "options_notifications_28": {
+ "message": "Disable all notifications for a custom time period (in minutes):"
+ },
+ "options_notifications_29": {
+ "message": "This option is related to the right click menu on the toolbar button -> disable all notifications -> custom time period."
+ },
+ "options_notifications_30": {
+ "message": "Combine all concurrent desktop notifications into a single notification"
+ },
+ "options_notifications_31": {
+ "message": "Custom sound notification for"
+ },
+ "options_notifications_32": {
+ "message": "name or email contains"
+ },
+ "options_notifications_33": {
+ "message": "email title contains"
+ },
+ "options_notifications_34": {
+ "message": "email summary contains"
+ },
+ "options_notifications_36": {
+ "message": "Ask Gmail™ to prevent 'inbox.google.com' redirection"
+ },
+ "options_notifications_37": {
+ "message": "Show unread email count on badge (and choose badge color)"
+ },
+ "options_notifications_38": {
+ "message": "Faster actions (mark as read, delete, ...) (Consider actions to be resolved when headers are received)"
+ },
+ "options_notifications_40": {
+ "message": "Allow quick actions from notification box (maximum two actions, for Chrome only)"
+ },
+ "options_notifications_41": {
+ "message": "Mark as Read"
+ },
+ "options_notifications_42": {
+ "message": "Archive"
+ },
+ "options_notifications_43": {
+ "message": "Trash"
+ },
+ "options_notifications_44": {
+ "message": "Play sound notification on the following states:"
+ },
+ "options_notifications_45": {
+ "message": "Active"
+ },
+ "options_notifications_46": {
+ "message": "Idle"
+ },
+ "options_notifications_47": {
+ "message": "Locked"
+ },
+ "options_notifications_48": {
+ "message": "Display desktop notification on the following states:"
+ },
+ "options_tab": {
+ "message": "Tab Opening"
+ },
+ "options_tab_1": {
+ "message": "Search for an open Gmail™ account, only on the active window"
+ },
+ "options_tab_2": {
+ "message": "Do not search other browser windows for open Gmail™ accounts. If Gmail™ is not open in the active window, open a new tab."
+ },
+ "options_tab_3": {
+ "message": "Open new Gmail™ account next to the active tab"
+ },
+ "options_tab_4": {
+ "message": "Open Gmail™ account in the active tab"
+ },
+ "options_tab_5": {
+ "message": "Open Gmail™ account in a background tab"
+ },
+ "options_tab_6": {
+ "message": "Open Gmail™ account in a new window"
+ },
+ "options_tab_7": {
+ "message": "Always use blank tabs instead of opening a new tab when open in tab is activated"
+ },
+ "options_tab_8": {
+ "message": "Ignore opened Gmail™ tabs"
+ },
+ "options_tab_9": {
+ "message": "When checked, the notifier open emails in new browser tabs. When unchecked, it will first search the active window for an existing Gmail™ tab and switch to it. If not found, it will search other open windows before opening a new tab."
+ },
+ "options_tab_10": {
+ "message": "Open emails in basic HTML mode"
+ },
+ "options_tab_11": {
+ "message": "Clicking on the title of an unread email opens Gmail™ to the email itself instead of opening to the INBOX folder"
+ },
+ "options_toolbar": {
+ "message": "Toolbar"
+ },
+ "options_toolbar_1": {
+ "message": "Toolbar button behaviour"
+ },
+ "options_toolbar_2": {
+ "message": "Always open email preview panel"
+ },
+ "options_toolbar_3": {
+ "message": "Open Gmail™ account if only one account is logged-in"
+ },
+ "options_toolbar_18": {
+ "message": "Open Gmail™ account (forced)"
+ },
+ "options_toolbar_4": {
+ "message": "Toolbar panel mode"
+ },
+ "options_toolbar_5": {
+ "message": "Show summary only"
+ },
+ "options_toolbar_6": {
+ "message": "Show full content"
+ },
+ "options_toolbar_7": {
+ "message": "Toolbar panel width in the full-content view mode (in pixels):"
+ },
+ "options_toolbar_8": {
+ "message": "Minimum width is 500px."
+ },
+ "options_toolbar_9": {
+ "message": "Toolbar panel height in the full-content view mode (in pixels):"
+ },
+ "options_toolbar_10": {
+ "message": "Minimum height is 500px."
+ },
+ "options_toolbar_11": {
+ "message": "Support keyboard shortcuts on the toolbar panel"
+ },
+ "options_toolbar_12": {
+ "message": "Report as spam: , Trash: <#>, Archive: , Mark as read: ."
+ },
+ "options_toolbar_13": {
+ "message": "Render emails as HTML in full-content mode"
+ },
+ "options_toolbar_14": {
+ "message": "If you prefer text-only rendering in the full-content mode, uncheck the box."
+ },
+ "options_toolbar_15": {
+ "message": "Middle-click on the toolbar button to"
+ },
+ "options_toolbar_16": {
+ "message": "Refresh all accounts"
+ },
+ "options_toolbar_17": {
+ "message": "Open primary Gmail™ account"
+ },
+ "options_misc": {
+ "message": "Miscellaneous"
+ },
+ "options_misc_1": {
+ "message": "Sort accounts alphabetically"
+ },
+ "options_misc_2": {
+ "message": "The default order type is logged-in order."
+ },
+ "options_misc_3": {
+ "message": "Toolbar button color pattern:"
+ },
+ "options_misc_4": {
+ "message": "Gray color for \"No Unread\" and blue color for \"Disconnected\""
+ },
+ "options_misc_5": {
+ "message": "Blue color for \"No Unread\" and gray color for \"Disconnected\""
+ },
+ "options_misc_9": {
+ "message": "Red color for \"No Unread\" and gray color for \"Disconnected\""
+ },
+ "options_misc_6": {
+ "message": "Show desktop notification to warn that Gmail™ is already opened in the active tab"
+ },
+ "options_misc_7": {
+ "message": "Show welcome page on upgrade"
+ },
+ "options_misc_8": {
+ "message": "Reset all settings back to factory"
+ },
+ "options_misc_10": {
+ "message": "Only fire desktop and sound notifications when email has arrived in less than (in minutes): "
+ },
+ "options_misc_11": {
+ "message": "By setting this preference to zero, you will receive neither desktop nor sound notifications; however, you will still get badge notification."
+ },
+ "options_misc_12": {
+ "message": "Do not include login details in the tooltip text"
+ },
+ "options_misc_13": {
+ "message": "By default, the notifier updates tooltip text of the toolbar button with login info. By unchecking this option, the tooltip text remains the default value."
+ },
+ "options_misc_14": {
+ "message": "Do not show the exact badge number when the number of unread emails is greater than 999"
+ },
+ "options_misc_15": {
+ "message": "Open FAQs page on updates"
+ },
+ "options_misc_16": {
+ "message": "Color theme of panel:"
+ },
+ "options_misc_17": {
+ "message": "Light theme"
+ },
+ "options_misc_18": {
+ "message": "Dark theme"
+ },
+ "options_misc_19": {
+ "message": "System theme"
+ },
+ "options_misc_20": {
+ "message": "Reset history for \"Included Accounts\""
+ },
+ "options_misc_21": {
+ "message": "Reset Accounts"
+ },
+ "options_plugins": {
+ "message": "Plug-ins"
+ },
+ "options_plugins_1": {
+ "message": "Gmail™ labels and star button (experimental)"
+ },
+ "options_plugins_2": {
+ "message": "This plugin displays the star button as well as thread's labels in the popup (expanded mode only)."
+ },
+ "options_styling": {
+ "message": "Styling"
+ },
+ "options_styling_0": {
+ "message": "Scale email view by (0.5-4)"
+ },
+ "options_styling_1": {
+ "message": "Custom CSS rules for top panel"
+ },
+ "options_styling_2": {
+ "message": "Custom CSS rules for email view"
+ },
+ "options_px": {
+ "message": "px"
+ },
+ "options_empty": {
+ "message": "not defined"
+ },
+ "options_button_test": {
+ "message": "Play sound ►"
+ },
+ "options_button_reset": {
+ "message": "Reset Preferences"
+ },
+ "popup_settings": {
+ "message": "Settings"
+ },
+ "popup_of": {
+ "message": "of"
+ },
+ "popup_wait": {
+ "message": "Wait..."
+ },
+ "popup_date_format": {
+ "message": "%mm %dd, %yy"
+ },
+ "popup_no_subject": {
+ "message": "(no subject)"
+ },
+ "popup_open_settings": {
+ "message": "Open Settings"
+ },
+ "popup_open_inbox": {
+ "message": "Open Inbox"
+ },
+ "popup_archive": {
+ "message": "Archive"
+ },
+ "popup_spam": {
+ "message": "Spam"
+ },
+ "popup_trash": {
+ "message": "Trash"
+ },
+ "popup_refresh": {
+ "message": "Refresh"
+ },
+ "popup_read": {
+ "message": "Mark as Read"
+ },
+ "popup_read_all": {
+ "message": "Mark all as read"
+ },
+ "popup_toggle_dark": {
+ "message": "Toggle dark theme on and off"
+ },
+ "popup_msg_1": {
+ "message": "just now"
+ },
+ "popup_msg_2": {
+ "message": "1 minute ago"
+ },
+ "popup_msg_3_format": {
+ "message": "%d minutes ago"
+ },
+ "popup_msg_4": {
+ "message": "1 hour ago"
+ },
+ "popup_msg_5": {
+ "message": "hours ago"
+ },
+ "popup_msg_6": {
+ "message": "Yesterday"
+ },
+ "popup_msg_7_format": {
+ "message": "%d days ago"
+ },
+ "popup_msg_8_format": {
+ "message": "%d week(s) ago"
+ },
+ "popup_msg_9_format": {
+ "message": "%d month(s) ago"
+ },
+ "popup_msg_10": {
+ "message": "January"
+ },
+ "popup_msg_11": {
+ "message": "February"
+ },
+ "popup_msg_12": {
+ "message": "March"
+ },
+ "popup_msg_13": {
+ "message": "April"
+ },
+ "popup_msg_14": {
+ "message": "May"
+ },
+ "popup_msg_15": {
+ "message": "June"
+ },
+ "popup_msg_16": {
+ "message": "July"
+ },
+ "popup_msg_17": {
+ "message": "August"
+ },
+ "popup_msg_18": {
+ "message": "September"
+ },
+ "popup_msg_19": {
+ "message": "October"
+ },
+ "popup_msg_20": {
+ "message": "November"
+ },
+ "popup_msg_21": {
+ "message": "December"
+ },
+ "settings_open_title": {
+ "message": "Open options (settings) page"
+ },
+ "settings_open_label": {
+ "message": "Open Options"
+ }
+}
diff --git a/v3.classic/_locales/es/messages.json b/v3.classic/_locales/es/messages.json
new file mode 100644
index 00000000..1cc13708
--- /dev/null
+++ b/v3.classic/_locales/es/messages.json
@@ -0,0 +1,758 @@
+{
+ "toolbar_label": {
+ "message": "Notifier for Gmail™",
+ "description": ""
+ },
+ "tooltip_1": {
+ "message": "Click izquierdo: abrir Gmail o el panel de vista previa",
+ "description": ""
+ },
+ "tooltip_2": {
+ "message": "Click medio (o Ctrl+Click izquierdo): actualizar todas las cuentas",
+ "description": ""
+ },
+ "tooltip_3": {
+ "message": "Click derecho: selección de cuenta",
+ "description": ""
+ },
+ "description": {
+ "message": "Notificador para múltiples cuentas y etiquetas de Google Mail (Gmail)",
+ "description": ""
+ },
+ "log_in_to_your_account": {
+ "message": "Por favor, inicia sesión en tu cuenta de Gmail",
+ "description": ""
+ },
+ "msg_1": {
+ "message": "La pestaña ya está abierta. Haz click en el botón de la barra de herramientas para abrir Gmail en una nueva pestaña, o para cambiar a una pestaña de Gmail ya existente.",
+ "description": ""
+ },
+ "msg_2": {
+ "message": "El enlace se copió al portapapeles.",
+ "description": ""
+ },
+ "msg_3": {
+ "message": "El texto seleccionado se copió al portapapeles.",
+ "description": ""
+ },
+ "msg_4": {
+ "message": "Aviso: para que el notificador funcione correctamente, debes haber iniciado sesión en tu cuenta Google.",
+ "description": ""
+ },
+ "msg_5": {
+ "message": "Elige un archivo de sonido",
+ "description": ""
+ },
+ "label_1": {
+ "message": "Actualizar",
+ "description": ""
+ },
+ "label_2": {
+ "message": "Configuración",
+ "description": ""
+ },
+ "label_3": {
+ "message": "Desactivar todas las notificaciones",
+ "description": ""
+ },
+ "label_4": {
+ "message": "Durante 5 minutos",
+ "description": ""
+ },
+ "label_5": {
+ "message": "Durante 15 minutos",
+ "description": ""
+ },
+ "label_6": {
+ "message": "Durante 30 minutos",
+ "description": ""
+ },
+ "label_7": {
+ "message": "Durante 1 hora",
+ "description": ""
+ },
+ "label_8": {
+ "message": "Durante 2 horas",
+ "description": ""
+ },
+ "label_9": {
+ "message": "Durante 5 horas",
+ "description": ""
+ },
+ "label_13": {
+ "message": "Por un período de tiempo personalizado",
+ "description": ""
+ },
+ "label_10": {
+ "message": "Enable notifications (session)",
+ "description": ""
+ },
+ "label_11": {
+ "message": "Redactar un correo nuevo",
+ "description": ""
+ },
+ "label_12": {
+ "message": "Abrir FAQs",
+ "description": ""
+ },
+ "label_14": {
+ "message": "Cuentas que han iniciado sesión",
+ "description": ""
+ },
+ "unknown": {
+ "message": "desconocido",
+ "description": ""
+ },
+ "and": {
+ "message": "y",
+ "description": ""
+ },
+ "log_into_your_account": {
+ "message": "Por favor, inicia sesión en tu cuenta",
+ "description": ""
+ },
+ "notification": {
+ "message": "De: [author_email][break]Asunto: [title][break]Resumen: [summary]",
+ "description": ""
+ },
+ "options_title": {
+ "message": "Opciones - Gmail™ Notifier",
+ "description": ""
+ },
+ "options_inshort": {
+ "message": "Notificador para Google Mail (Gmail), con soporte de múltiples cuentas y etiquetas.",
+ "description": ""
+ },
+ "options_donation": {
+ "message": "Support Development",
+ "description": ""
+ },
+ "options_timings": {
+ "message": "Timings:",
+ "description": ""
+ },
+ "options_timings_l1": {
+ "message": "Verificar si hay correos nuevos cada (en segundos):",
+ "description": ""
+ },
+ "options_timings_l2": {
+ "message": "El período mínimo es 10 segundos",
+ "description": ""
+ },
+ "options_timings_l3": {
+ "message": "Recordarme que tengo mails sin leer cada (en minutos):",
+ "description": ""
+ },
+ "options_timings_l4": {
+ "message": "Pon el valor a cero para no recibir recordatorios periódicamente",
+ "description": ""
+ },
+ "options_timings_l5": {
+ "message": "El período mínimo es 5 minutos",
+ "description": ""
+ },
+ "options_timings_l6": {
+ "message": "Valores distintos de cero activan las notificaciones sonoras y de escritorio (como cuando llega correo nuevo) constantemente mientras tengas correo sin leer.",
+ "description": ""
+ },
+ "options_timings_l7": {
+ "message": "No verificar si hay correos nuevos al inicio durante (en segundos):",
+ "description": ""
+ },
+ "options_timings_l8": {
+ "message": "Configura este valor a cero para evitar chequear el e-mail hasta la primer actualización manual (No disponible en Safari).",
+ "description": ""
+ },
+ "options_gmail": {
+ "message": "Gmail:",
+ "description": ""
+ },
+ "options_gmail_1": {
+ "message": "Cuenta principal (/mail/u/0/)",
+ "description": ""
+ },
+ "options_gmail_2": {
+ "message": "Separa las etiquetas con \",\" (coma).",
+ "description": ""
+ },
+ "options_gmail_3": {
+ "message": "Cuenta secundaria (/mail/u/1/)",
+ "description": ""
+ },
+ "options_gmail_4": {
+ "message": "Tercera cuenta (/mail/u/2/)",
+ "description": ""
+ },
+ "options_gmail_5": {
+ "message": "Cuarta cuenta (/mail/u/3/)",
+ "description": ""
+ },
+ "options_gmail_6": {
+ "message": "Quinta cuenta ((/mail/u/4/)",
+ "description": ""
+ },
+ "options_gmail_7": {
+ "message": "Sexta cuenta ((/mail/u/5/)",
+ "description": ""
+ },
+ "options_gmail_8": {
+ "message": "Marcar mensaje como leído al archivarlo",
+ "description": ""
+ },
+ "options_gmail_15": {
+ "message": "Some popular labels:",
+ "description": ""
+ },
+ "options_gmail_10": {
+ "message": "Recibir notificaciones para las siguientes etiquetas y cuentas:",
+ "description": ""
+ },
+ "options_gmail_11": {
+ "message": "Feeds personalizados:",
+ "description": ""
+ },
+ "options_gmail_12": {
+ "message": "Separa los feeds con \",\" (coma). Feed de ejemplo: https://mail.google.com/mail/u/0/feed/atom/inbox",
+ "description": ""
+ },
+ "options_gmail_13": {
+ "message": "Note: maximum number for all labels except \"inbox\" is 20 (Google feeds only supply the 20 newest entries)",
+ "description": ""
+ },
+ "options_gmail_14": {
+ "message": "Note: for the Notifier to listen for more than 5 accounts, add feeds URLs to the \"Custom feeds\" field. For instance to listen to the 6 and 7th accounts add: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox",
+ "description": ""
+ },
+ "options_notifications": {
+ "message": "Notificaciones:",
+ "description": ""
+ },
+ "options_notifications_1": {
+ "message": "Mostrar notificaciones de escritorio cuando haya correos nuevos",
+ "description": ""
+ },
+ "options_notifications_2": {
+ "message": "Mostrar notificaciones de escritorio durante (en segundos):",
+ "description": ""
+ },
+ "options_notifications_3": {
+ "message": "Esta opción podría no funcionar en tu sistema operativo.",
+ "description": ""
+ },
+ "options_notifications_4": {
+ "message": "Formato de notificaciones:",
+ "description": ""
+ },
+ "options_notifications_5": {
+ "message": "Variables disponibles:",
+ "description": ""
+ },
+ "options_notifications_6": {
+ "message": "Cortar notificaciones más largas que",
+ "description": ""
+ },
+ "options_notifications_7": {
+ "message": "caracteres para los campos [title] y [summary].",
+ "description": ""
+ },
+ "options_notifications_8": {
+ "message": "Para no cortar nada, usa un número grande aquí.",
+ "description": ""
+ },
+ "options_notifications_9": {
+ "message": "Reproducir sonido de aviso cuando haya correos nuevos",
+ "description": ""
+ },
+ "options_notifications_10": {
+ "message": "Aviso para usuarios de Mac. A partir de Firefox 28.0, todas las notificaciones de escritorio son controladas por el Centro de Notificaciones Mac, lo que causa un sonido de alerta extra. Es necesario desactivar esta notificación sonora, o bien la que es generada por el Centro de Notificaciones.",
+ "description": ""
+ },
+ "options_notifications_11": {
+ "message": "Mostrar notificación de la barra de tareas de Windows o del Dock de Mac OS",
+ "description": ""
+ },
+ "options_notifications_12": {
+ "message": "Las notificaciones en la barra de tareas no están soportadas de momento en sistemas operativos Linux.",
+ "description": ""
+ },
+ "options_notifications_13": {
+ "message": "Abrir panel de la barra de herramientas cuando clickeo en el ícono de notificación de la barra de tareas (sólo Windows, beta)",
+ "description": ""
+ },
+ "options_notifications_14": {
+ "message": "Esta característica es extremadamente experimental y puede volver tu navegador inestable. [Restart required].",
+ "description": ""
+ },
+ "options_notifications_15": {
+ "message": "El sonido de notificación por defecto es",
+ "description": ""
+ },
+ "options_notifications_16": {
+ "message": "Aviso por defecto de Gmail Notifier",
+ "description": ""
+ },
+ "options_notifications_17": {
+ "message": "Aviso \"bell\" de Checker Plus",
+ "description": ""
+ },
+ "options_notifications_18": {
+ "message": "Aviso \"ding\" de Checker Plus",
+ "description": ""
+ },
+ "options_notifications_19": {
+ "message": "Aviso de correo de Windows",
+ "description": ""
+ },
+ "options_notifications_20": {
+ "message": "Sonido definido por el usuario",
+ "description": ""
+ },
+ "options_notifications_21": {
+ "message": "El sonido definido por el usuario es",
+ "description": ""
+ },
+ "options_notifications_22": {
+ "message": "Si tu navegador no está reproduciendo el sonido de notificación personalizado, intenta convertirlo al formato WAV usando una herramienta de conversión online.",
+ "description": ""
+ },
+ "options_notifications_35": {
+ "message": "Para elegir un nuevo sonido personalizado, elige en primer lugar un sonido incluído y luego cambia la opción nuevamente a \"sonido personalizado\"",
+ "description": ""
+ },
+ "options_notifications_23": {
+ "message": "El volumen de las notificaciones sonoras es",
+ "description": ""
+ },
+ "options_notifications_24": {
+ "message": "\"Volumen\" es un número entre 0 y 100, donde 100 es el volumen más alto (por defecto).",
+ "description": ""
+ },
+ "options_notifications_25": {
+ "message": "En Safari, es muy probable que las notificaciones sonoras por defecto no se reproduzcan correctamente. En tal caso, usa un archivo de sonido personalizado.",
+ "description": ""
+ },
+ "options_notifications_26": {
+ "message": "Siempre mostrar notificación en la bandeja de sistema (sólo Windows)",
+ "description": ""
+ },
+ "options_notifications_27": {
+ "message": "La notificación en la bandeja del sistema será mostrada incluso si no hay mensajes sin leer.",
+ "description": ""
+ },
+ "options_notifications_28": {
+ "message": "Deshabilitar todas las notificaciones por un período de tiempo personalizado (en minutos):",
+ "description": ""
+ },
+ "options_notifications_29": {
+ "message": "Esta opción está relacionada con el menú que se muestra al hacer click derecho sobre el botón de la barra de herramientas (deshabilitar todas las notificaciones -> período de tiempo personalizado).",
+ "description": ""
+ },
+ "options_notifications_30": {
+ "message": "Combinar todas las notificaciones de escritorio en una única",
+ "description": ""
+ },
+ "options_notifications_31": {
+ "message": "Custom sound notification",
+ "description": ""
+ },
+ "options_notifications_32": {
+ "message": "name or email contains",
+ "description": ""
+ },
+ "options_notifications_33": {
+ "message": "El asunto del correo contiene",
+ "description": ""
+ },
+ "options_notifications_34": {
+ "message": "El resumen del correo contiene",
+ "description": ""
+ },
+ "options_notifications_36": {
+ "message": "Ask Gmail to prevent 'inbox.google.com' redirection",
+ "description": ""
+ },
+ "options_notifications_37": {
+ "message": "Display Badge number",
+ "description": ""
+ },
+ "options_notifications_38": {
+ "message": "Faster actions (mark as read, delete, ...) (Consider actions to be resolved when headers are received)",
+ "description": ""
+ },
+ "options_notifications_40": {
+ "message": "Allow quick actions from notification box (maximum two actions) (Chrome only)",
+ "description": ""
+ },
+ "options_notifications_41": {
+ "message": "Mark as Read",
+ "description": ""
+ },
+ "options_notifications_42": {
+ "message": "Archive",
+ "description": ""
+ },
+ "options_notifications_43": {
+ "message": "Trash",
+ "description": ""
+ },
+ "options_tab": {
+ "message": "Apertura de pestañas:",
+ "description": ""
+ },
+ "options_tab_1": {
+ "message": "Buscar una cuenta de Gmail abierta sólo en la ventana activa",
+ "description": ""
+ },
+ "options_tab_2": {
+ "message": "No buscar cuentas de Gmail abiertas en otras ventanas del navegador. Si Gmail no está abierto en la ventana activa, abrir una nueva pestaña.",
+ "description": ""
+ },
+ "options_tab_3": {
+ "message": "Abrir una nueva cuenta Gmail junto a la pestaña activa",
+ "description": ""
+ },
+ "options_tab_4": {
+ "message": "Abrir cuenta Gmail en la pestaña activa",
+ "description": ""
+ },
+ "options_tab_5": {
+ "message": "Abrir la cuenta Gmail en una pestaña inactiva",
+ "description": ""
+ },
+ "options_tab_6": {
+ "message": "Abrir cuenta Gmail en una nueva ventana",
+ "description": ""
+ },
+ "options_tab_7": {
+ "message": "Siempre usar pestañas vacías en lugar de abrir una nueva cuando \"abrir en pestaña\" esté activado",
+ "description": ""
+ },
+ "options_tab_8": {
+ "message": "Ignorar pestañas de Gmail abiertas",
+ "description": ""
+ },
+ "options_tab_9": {
+ "message": "Si está desactivado, Gmail Notifier chequea todas las ventanas activas por una pestaña de Gmail abierta y cambia a ella cuando se solicita abrir una pestaña nueva.",
+ "description": ""
+ },
+ "options_tab_10": {
+ "message": "Open emails in basic HTML mode",
+ "description": ""
+ },
+ "options_toolbar": {
+ "message": "Barra de herramientas:",
+ "description": ""
+ },
+ "options_toolbar_1": {
+ "message": "Comportamiento del botón de la barra de herramientas",
+ "description": ""
+ },
+ "options_toolbar_2": {
+ "message": "Siempre abrir el panel de vista previa de correo",
+ "description": ""
+ },
+ "options_toolbar_3": {
+ "message": "Abrir cuenta Gmail si sólo una cuenta ha iniciado sesión",
+ "description": ""
+ },
+ "options_toolbar_18": {
+ "message": "Open Gmail account (forced)",
+ "description": ""
+ },
+ "options_toolbar_4": {
+ "message": "Modo del panel de vista previa",
+ "description": ""
+ },
+ "options_toolbar_5": {
+ "message": "Mostrar sólo el resumen",
+ "description": ""
+ },
+ "options_toolbar_6": {
+ "message": "Mostrar contenido completo",
+ "description": ""
+ },
+ "options_toolbar_7": {
+ "message": "Ancho del panel de vista previa en modo de contenido completo (en pixels):",
+ "description": ""
+ },
+ "options_toolbar_8": {
+ "message": "El ancho mínimo es 500px.",
+ "description": ""
+ },
+ "options_toolbar_9": {
+ "message": "Alto del panel de vista previa en modo contenido completo (en pixels):",
+ "description": ""
+ },
+ "options_toolbar_10": {
+ "message": "El alto mínimo es 500px.",
+ "description": ""
+ },
+ "options_toolbar_11": {
+ "message": "Permitir atajos de teclado en el panel de vista previa",
+ "description": ""
+ },
+ "options_toolbar_12": {
+ "message": "!: Marcar como spam, #:Eliminar, e: Archivar, Shift + i: Marcar como leído",
+ "description": ""
+ },
+ "options_toolbar_13": {
+ "message": "Visualizar los mensajes como HTML en el modo contenido completo",
+ "description": ""
+ },
+ "options_toolbar_14": {
+ "message": "Si prefieres visualizar los mensajes como sólo texto, desactiva esta casilla.",
+ "description": ""
+ },
+ "options_toolbar_15": {
+ "message": "Click medio en el botón de la barra de herramientas para",
+ "description": ""
+ },
+ "options_toolbar_16": {
+ "message": "Actualizar todas las cuentas",
+ "description": ""
+ },
+ "options_toolbar_17": {
+ "message": "Abrir cuenta Gmail principal",
+ "description": ""
+ },
+ "options_misc": {
+ "message": "Otros:",
+ "description": ""
+ },
+ "options_misc_1": {
+ "message": "Ordenar cuentas alfabéticamente",
+ "description": ""
+ },
+ "options_misc_2": {
+ "message": "El orden por defecto es de acuerdo al momento de inicio de sesión.",
+ "description": ""
+ },
+ "options_misc_3": {
+ "message": "El esquema de colores de la barra de herramientas es:",
+ "description": ""
+ },
+ "options_misc_4": {
+ "message": "Gris para \"Sin mensajes por leer\" y azul para \"Desconectado\"",
+ "description": ""
+ },
+ "options_misc_5": {
+ "message": "Azul para \"Sin mensajes por leer\" y gris para \"Desconectado\"",
+ "description": ""
+ },
+ "options_misc_9": {
+ "message": "Rojo para \"Sin mensajes por leer\" y gris para \"Desconectado\"",
+ "description": ""
+ },
+ "options_misc_6": {
+ "message": "Mostrar notificación de escritorio para advertir que Gmail ya está abierto en la pestaña activa",
+ "description": ""
+ },
+ "options_misc_7": {
+ "message": "Mostrar página de bienvenida al actualizar versión",
+ "description": ""
+ },
+ "options_misc_8": {
+ "message": "Reestablecer toda la configuración",
+ "description": ""
+ },
+ "options_misc_10": {
+ "message": "Sólo activar notificaciones sonoras y de escritorio cuando haya llegado correo en menos de (en minutos):",
+ "description": ""
+ },
+ "options_misc_11": {
+ "message": "Poniendo este valor a cero, no recibirás notificaciones sonoras o de escritorio, sin embargo, todavía recibirás notificaciones en el ícono de la barra de herramientas.",
+ "description": ""
+ },
+ "options_misc_12": {
+ "message": "No incluir detalles de cuenta en el texto que se muestra al pasar el puntero sobre el ícono",
+ "description": ""
+ },
+ "options_misc_13": {
+ "message": "Por defecto, el texto que se muestra al pasar el puntero sobre el ícono se actualiza con la información de la cuenta. Desmarcando esta casilla, permanecerá sin cambios.",
+ "description": ""
+ },
+ "options_misc_14": {
+ "message": "No mostrar el número exacto de correos no leídos en el icono cuando este sea mayor que 999",
+ "description": ""
+ },
+ "options_misc_15": {
+ "message": "Open FAQs page on updates",
+ "description": ""
+ },
+ "options_plugins": {
+ "message": "Plug-ins:",
+ "description": ""
+ },
+ "options_plugins_1": {
+ "message": "Gmail labels and star button (experimental)",
+ "description": ""
+ },
+ "options_plugins_2": {
+ "message": "This plugin displays the star button as well as thread's labels in the popup (expanded mode only).",
+ "description": ""
+ },
+ "options_px": {
+ "message": "px",
+ "description": ""
+ },
+ "options_empty": {
+ "message": "sin definir",
+ "description": ""
+ },
+ "options_button_test": {
+ "message": "Play",
+ "description": ""
+ },
+ "options_button_reset": {
+ "message": "Reset Preferences",
+ "description": ""
+ },
+ "popup_settings": {
+ "message": "ajustes",
+ "description": ""
+ },
+ "popup_of": {
+ "message": "de",
+ "description": ""
+ },
+ "popup_wait": {
+ "message": "Espera...",
+ "description": ""
+ },
+ "popup_date_format": {
+ "message": "%dd %mm, %yy",
+ "description": ""
+ },
+ "popup_no_subject": {
+ "message": "(sin asunto)",
+ "description": ""
+ },
+ "popup_open_settings": {
+ "message": "Abrir configuración",
+ "description": ""
+ },
+ "popup_open_inbox": {
+ "message": "Abrir bandeja de entrada",
+ "description": ""
+ },
+ "popup_archive": {
+ "message": "Archivar",
+ "description": ""
+ },
+ "popup_spam": {
+ "message": "Spam",
+ "description": ""
+ },
+ "popup_trash": {
+ "message": "Eliminar",
+ "description": ""
+ },
+ "popup_refresh": {
+ "message": "Actualizar",
+ "description": ""
+ },
+ "popup_read": {
+ "message": "Marcar como leído",
+ "description": ""
+ },
+ "popup_read_all": {
+ "message": "Marcar todos como leídos",
+ "description": ""
+ },
+ "popup_msg_1": {
+ "message": "ahora",
+ "description": ""
+ },
+ "popup_msg_2": {
+ "message": "hace 1 minuto",
+ "description": ""
+ },
+ "popup_msg_3_format": {
+ "message": "hace %d minutos",
+ "description": ""
+ },
+ "popup_msg_4": {
+ "message": "hace 1 hora",
+ "description": ""
+ },
+ "popup_msg_5": {
+ "message": "hace algunas horas",
+ "description": ""
+ },
+ "popup_msg_6": {
+ "message": "Ayer",
+ "description": ""
+ },
+ "popup_msg_7_format": {
+ "message": "hace %d días",
+ "description": ""
+ },
+ "popup_msg_8_format": {
+ "message": "hace %d semana(s)",
+ "description": ""
+ },
+ "popup_msg_9_format": {
+ "message": "hace %d mes(es)",
+ "description": ""
+ },
+ "popup_msg_10": {
+ "message": "Enero",
+ "description": ""
+ },
+ "popup_msg_11": {
+ "message": "Febrero",
+ "description": ""
+ },
+ "popup_msg_12": {
+ "message": "Marzo",
+ "description": ""
+ },
+ "popup_msg_13": {
+ "message": "Abril",
+ "description": ""
+ },
+ "popup_msg_14": {
+ "message": "Mayo",
+ "description": ""
+ },
+ "popup_msg_15": {
+ "message": "Junio",
+ "description": ""
+ },
+ "popup_msg_16": {
+ "message": "Julio",
+ "description": ""
+ },
+ "popup_msg_17": {
+ "message": "Agosto",
+ "description": ""
+ },
+ "popup_msg_18": {
+ "message": "Septiembre",
+ "description": ""
+ },
+ "popup_msg_19": {
+ "message": "Octubre",
+ "description": ""
+ },
+ "popup_msg_20": {
+ "message": "Noviembre",
+ "description": ""
+ },
+ "popup_msg_21": {
+ "message": "Diciembre",
+ "description": ""
+ },
+ "settings_open_title": {
+ "message": "Abrir página de opciones (ajustes)",
+ "description": ""
+ },
+ "settings_open_label": {
+ "message": "Abrir opciones",
+ "description": ""
+ },
+ "gmail": {
+ "message": "Notifier for Gmail™",
+ "description": ""
+ }
+}
\ No newline at end of file
diff --git a/v3.classic/_locales/fr/messages.json b/v3.classic/_locales/fr/messages.json
new file mode 100644
index 00000000..1f2568af
--- /dev/null
+++ b/v3.classic/_locales/fr/messages.json
@@ -0,0 +1,590 @@
+{
+ "gmail": {
+ "message": "Notifieur pour Gmail™"
+ },
+ "toolbar_label": {
+ "message": "Notifieur pour Gmail™"
+ },
+ "description": {
+ "message": "Notifieur multi-comptes et multi-libellés pour Google Mail (Gmail™)"
+ },
+ "log_in_to_your_account": {
+ "message": "Veuillez vous connecter à votre compte Gmail™"
+ },
+ "msg_1": {
+ "message": "L’onglet est déjà ouvert. Cliquez sur le bouton de la barre d’outils pour ouvrir Gmail™ dans un nouvel onglet ou pour passer à un onglet Gmail™ existant."
+ },
+ "msg_2": {
+ "message": "Le lien a été copié dans le presse-papiers."
+ },
+ "msg_3": {
+ "message": "Le texte sélectionné a été copié dans le presse-papiers."
+ },
+ "msg_4": {
+ "message": "Remarque : pour que le notifieur fonctionne correctement, vous devez être connecté à votre compte Google."
+ },
+ "msg_5": {
+ "message": "Choisir un fichier son audio"
+ },
+ "label_1": {
+ "message": "Rafraîchir"
+ },
+ "label_2": {
+ "message": "Paramètres"
+ },
+ "label_3": {
+ "message": "Désactiver toutes les notifications"
+ },
+ "label_4": {
+ "message": "Pour 5 min"
+ },
+ "label_5": {
+ "message": "Pour 15 min"
+ },
+ "label_6": {
+ "message": "Pour 30 min"
+ },
+ "label_7": {
+ "message": "Pour 1 heure"
+ },
+ "label_8": {
+ "message": "Pour 2 heures"
+ },
+ "label_9": {
+ "message": "Pour 5 heures"
+ },
+ "label_13": {
+ "message": "Pour la période de temps personnalisée"
+ },
+ "label_10": {
+ "message": "Activer les notifications (session)"
+ },
+ "label_11": {
+ "message": "Rédiger un e-mail"
+ },
+ "label_12": {
+ "message": "Ouvrir la FAQ"
+ },
+ "label_14": {
+ "message": "Compte(s) connecté(s) :"
+ },
+ "unknown": {
+ "message": "inconnu"
+ },
+ "and": {
+ "message": "et"
+ },
+ "log_into_your_account": {
+ "message": "Veuillez vous connecter à votre compte"
+ },
+ "notification": {
+ "message": "De : [author_email][break] Objet : [title][break] Résumé : [summary]"
+ },
+ "options_title": {
+ "message": "Options - Gmail™ Notifier"
+ },
+ "options_inshort": {
+ "message": "Notifieur multi-comptes et multi-libellés pour Google Mail (Gmail™)."
+ },
+ "options_donation": {
+ "message": "Faire un don €"
+ },
+ "options_timings": {
+ "message": "Temporisations"
+ },
+ "options_timings_l1": {
+ "message": "Relever les nouveaux e-mails toutes les (en secondes) :"
+ },
+ "options_timings_l2": {
+ "message": "La période minimum est de 10 secondes."
+ },
+ "options_timings_l3": {
+ "message": "Rappeler les e-mails non lus toutes les (en minutes) :"
+ },
+ "options_timings_l4": {
+ "message": "Positionner la valeur à zéro pour tous les rappels non périodiques."
+ },
+ "options_timings_l5": {
+ "message": "La période minimum est de 5 minutes."
+ },
+ "options_timings_l6": {
+ "message": "Une valeur non nulle déclenche une notification sur le bureau et une alerte sonore (similaire à l’arrivée d’un nouvel e-mail) de façon perpétuelle, si vous avez un ou plusieurs e-mails non lus."
+ },
+ "options_timings_l7": {
+ "message": "Ne pas relever les nouveaux e-mails au démarrage avant (en secondes) :"
+ },
+ "options_timings_l8": {
+ "message": "Positionner la valeur à zéro pour éviter le relevé d’e-mails jusqu’au premier rafraîchissement manuel [Non disponible avec Safari]."
+ },
+ "options_gmail": {
+ "message": "Gmail™"
+ },
+ "options_gmail_1": {
+ "message": "Compte principal (/mail/u/0/)"
+ },
+ "options_gmail_2": {
+ "message": "Séparer les libellés par des \",\" (virgules)."
+ },
+ "options_gmail_3": {
+ "message": "2ème compte (/mail/u/1/)"
+ },
+ "options_gmail_4": {
+ "message": "3ème compte (/mail/u/2/)"
+ },
+ "options_gmail_5": {
+ "message": "4ème compte (/mail/u/3/)"
+ },
+ "options_gmail_6": {
+ "message": "5ème compte (/mail/u/4/)"
+ },
+ "options_gmail_7": {
+ "message": "6ème compte (/mail/u/5/)"
+ },
+ "options_gmail_8": {
+ "message": "Marquer les messages comme lus en les archivant"
+ },
+ "options_gmail_15": {
+ "message": "Quelques libellés populaires :"
+ },
+ "options_gmail_10": {
+ "message": "Recevoir les notifications pour les libellés et comptes suivants :"
+ },
+ "options_gmail_11": {
+ "message": "Flux personnalisés :"
+ },
+ "options_gmail_12": {
+ "message": "Séparer les flux par des \",\" (virgules). Exemple de flux : https://mail.google.com/mail/u/0/feed/atom/inbox"
+ },
+ "options_gmail_13": {
+ "message": "Remarque : le nombre maximal pour tous les libellés sauf «Boîte de réception» est de 20 (les flux Google ne fournissent que les 20 entrées les plus récentes)."
+ },
+ "options_gmail_14": {
+ "message": "Remarque : pour que le notifieur écoute plus de 5 comptes, ajoutez les URL des flux au champ «Flux personnalisés». Par exemple, pour écouter les 6e et 7e comptes, ajoutez : https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox"
+ },
+ "options_notifications": {
+ "message": "Notifications"
+ },
+ "options_notifications_1": {
+ "message": "Afficher la notification sur le bureau pour les nouveaux e-mails"
+ },
+ "options_notifications_2": {
+ "message": "Présenter la notification de bureau pendant (en secondes) :"
+ },
+ "options_notifications_3": {
+ "message": "Cette option peut ne pas fonctionner sur votre système d’exploitation."
+ },
+ "options_notifications_4": {
+ "message": "Format de notification :"
+ },
+ "options_notifications_5": {
+ "message": "Variables disponibles :"
+ },
+ "options_notifications_6": {
+ "message": "Tronquer les notifications plus longues que"
+ },
+ "options_notifications_7": {
+ "message": "caractères pour les champs [objet] et [résumé]."
+ },
+ "options_notifications_8": {
+ "message": "Pour ne pas tronquer avec des points de suspension, utiliser un nombre élevé."
+ },
+ "options_notifications_9": {
+ "message": "Jouer l’alerte sonore pour les nouveaux e-mails"
+ },
+ "options_notifications_10": {
+ "message": "Remarque : pour les utilisateurs de Mac. Depuis la version 28.0 de Firefox, toutes les notifications de bureau sont gérées par le «Centre de notifications» Mac qui provoque une alerte sonore supplémentaire. Vous devez désactiver soit cette notification sonore, soit celle générée par le «Centre de notifications»."
+ },
+ "options_notifications_11": {
+ "message": "Afficher la notification dans la barre de tâches Windows™ ou dans le dock Mac OS"
+ },
+ "options_notifications_12": {
+ "message": "Les notifications dans la barre de tâches ne sont pas supportées sous Linux pour le moment."
+ },
+ "options_notifications_13": {
+ "message": "Ouvrir le panneau de la barre d’outils par un clic sur l’icône de notification dans la barre de tâches (uniquement sous Windows™, beta)"
+ },
+ "options_notifications_14": {
+ "message": "Cette fonctionnalité est hautement expérimentale et pourrait rendre instable votre navigateur Firefox. [Redémarrage nécessaire]."
+ },
+ "options_notifications_15": {
+ "message": "Notification sonore par défaut :"
+ },
+ "options_notifications_16": {
+ "message": "Alerte par défaut de Gmail™ Notifier"
+ },
+ "options_notifications_17": {
+ "message": "Alerte «Bell» de Chrome «Checker Plus»"
+ },
+ "options_notifications_18": {
+ "message": "Alerte «Ding» de Chrome «Checker Plus»"
+ },
+ "options_notifications_19": {
+ "message": "Alerte sonore Windows™ Mail "
+ },
+ "options_notifications_20": {
+ "message": "Son défini par l’utilisateur"
+ },
+ "options_notifications_21": {
+ "message": "Notification sonore définie par l’utilisateur :"
+ },
+ "options_notifications_22": {
+ "message": "Si votre navigateur ne lit pas le son de notification personnalisé, essayez de le convertir en un format WAV simple à l’aide d’un outil de conversion en ligne."
+ },
+ "options_notifications_35": {
+ "message": "Pour sélectionner un nouveau son personnalisé, sélectionnez d’abord un son intégré, puis modifiez le choix de l’option en son personnalisé."
+ },
+ "options_notifications_23": {
+ "message": "Le Volume de la notification sonore (en %) :"
+ },
+ "options_notifications_24": {
+ "message": "Le volume est un nombre entre 0 et 100 (%). 100 % est le volume le plus fort (par défaut)."
+ },
+ "options_notifications_25": {
+ "message": "Dans Safari, il est probable que les notifications sonores par défaut ne soient pas jouées correctement. Si c’est le cas, utilisez un fichier son personnel comme notification."
+ },
+ "options_notifications_26": {
+ "message": "Toujours afficher la notification dans la barre des taches (uniquement sous Windows™)"
+ },
+ "options_notifications_27": {
+ "message": "La notification dans la barre des taches sera affichée même si tous les messages sont lus."
+ },
+ "options_notifications_28": {
+ "message": "Désactiver toutes les notifications pendant une période de temps personnalisée (en minutes) :"
+ },
+ "options_notifications_29": {
+ "message": "Cette option est liée au menu contextuel du bouton de la barre d’outils -> Désactiver toutes les notifications -> Période de temps personnalisée"
+ },
+ "options_notifications_30": {
+ "message": "Combiner toutes les notifications simultanées de bureau en une seule notification"
+ },
+ "options_notifications_31": {
+ "message": "Son personnalisé pour :"
+ },
+ "options_notifications_32": {
+ "message": "nom ou contenus d’e-mail"
+ },
+ "options_notifications_33": {
+ "message": "titre des contenus d’e-mail"
+ },
+ "options_notifications_34": {
+ "message": "sommaire de contenus d’e-mail"
+ },
+ "options_notifications_36": {
+ "message": "Demander à Gmail™ d’empêcher la redirection «inbox.google.com»"
+ },
+ "options_notifications_37": {
+ "message": "Afficher le nombre d’e-mail non lus sur le badge (et choisir la couleur du badge)"
+ },
+ "options_notifications_38": {
+ "message": "Pour Chrome uniquement : autoriser les actions plus rapides (marquer comme lu, supprimer, ...) (Considérer les actions à résoudre lorsque les en-têtes sont reçus)"
+ },
+ "options_notifications_40": {
+ "message": "Pour Chrome uniquement et si les actions rapides sont autorisées pour la boîte de notification (choisir 2 actions au maximum) :"
+ },
+ "options_notifications_41": {
+ "message": "Marquer comme lu"
+ },
+ "options_notifications_42": {
+ "message": "Archiver"
+ },
+ "options_notifications_43": {
+ "message": "Supprimer"
+ },
+ "options_tab": {
+ "message": "Ouverture d’onglet"
+ },
+ "options_tab_1": {
+ "message": "Ne chercher un compte Gmail™ ouvert, que dans la fenêtre active"
+ },
+ "options_tab_2": {
+ "message": "Ne pas chercher les comptes Gmail™ ouverts dans les autres fenêtres du navigateur. Si Gmail™ n’est pas ouvert dans la fenêtre active, ouvrir un nouvel onglet."
+ },
+ "options_tab_3": {
+ "message": "Ouvrir le nouveau compte Gmail™ à côté de l’onglet actif"
+ },
+ "options_tab_4": {
+ "message": "Ouvrir le compte Gmail™ dans l’onglet actif"
+ },
+ "options_tab_5": {
+ "message": "Ouvrir le compte Gmail™ dans un onglet d’arrière-plan"
+ },
+ "options_tab_6": {
+ "message": "Ouvrir le compte Gmail™ dans une nouvelle fenêtre"
+ },
+ "options_tab_7": {
+ "message": "Toujours utiliser des onglets vierges au lieu d’ouvrir un nouvel onglet quand l’option ouvrir dans un onglet est activé"
+ },
+ "options_tab_8": {
+ "message": "Ignorer les onglets Gmail™ ouverts"
+ },
+ "options_tab_9": {
+ "message": "Lorsque cette case est cochée, le notificateur ouvre les e-mails dans de nouveaux onglets du navigateur. Lorsque cette case n'est pas cochée, il recherchera d'abord dans la fenêtre active un onglet Gmail™ existant et y basculera. S'il n'est pas trouvé, il recherchera d'autres fenêtres ouvertes avant d'ouvrir un nouvel onglet."
+ },
+ "options_tab_10": {
+ "message": "Ouvrir les e-mails en mode HTML basique"
+ },
+ "options_tab_11": {
+ "message": "Cliquer sur le titre d'un e-mail non lu ouvre Gmail™ sur l'e-mail lui-même au lieu d’ouvrir le dossier «Boîte de réception»"
+ },
+ "options_toolbar": {
+ "message": "Barre d’outils"
+ },
+ "options_toolbar_1": {
+ "message": "Comportement du bouton de la barre d’outils :"
+ },
+ "options_toolbar_2": {
+ "message": "Toujours ouvrir le panneau de prévisualisation d’e-mail"
+ },
+ "options_toolbar_3": {
+ "message": "Ouvrir le compte Gmail™ si un seul compte est connecté"
+ },
+ "options_toolbar_18": {
+ "message": "Ouvrir le compte Gmail™ (mode forcé)"
+ },
+ "options_toolbar_4": {
+ "message": "Mode d’affichage du panneau de la barre d’outils :"
+ },
+ "options_toolbar_5": {
+ "message": "Afficher le résumé uniquement"
+ },
+ "options_toolbar_6": {
+ "message": "Afficher la totalité du contenu"
+ },
+ "options_toolbar_7": {
+ "message": "Largeur du panneau de la barre d’outils dans le mode «contenu total» (en pixels) :"
+ },
+ "options_toolbar_8": {
+ "message": "La largeur minimale est de 500 pixels."
+ },
+ "options_toolbar_9": {
+ "message": "Hauteur du panneau de la barre d’outils dans le mode «contenu total» (en pixels) :"
+ },
+ "options_toolbar_10": {
+ "message": "La hauteur minimale est de 500 pixels."
+ },
+ "options_toolbar_11": {
+ "message": "Supporter les raccourcis clavier dans le panneau de la barre d’outils"
+ },
+ "options_toolbar_12": {
+ "message": "Signaler comme spam : < ! >, Supprimer : < # >, Archiver : < e >, Marquer comme lu : < Shift + i >."
+ },
+ "options_toolbar_13": {
+ "message": "Afficher les e-mails en rendu HTML dans le mode «contenu total»"
+ },
+ "options_toolbar_14": {
+ "message": "Si vous préférez le rendu «texte uniquement» dans le mode «contenu total», décochez cette case."
+ },
+ "options_toolbar_15": {
+ "message": "Cliquer avec le bouton du milieu sur l’icône de la barre d’outils pour"
+ },
+ "options_toolbar_16": {
+ "message": "Rafraîchir tous les comptes"
+ },
+ "options_toolbar_17": {
+ "message": "Ouvrir le compte Gmail™ principal"
+ },
+ "options_misc": {
+ "message": "Divers"
+ },
+ "options_misc_1": {
+ "message": "Trier les comptes par ordre alphabétique"
+ },
+ "options_misc_2": {
+ "message": "Le type de tri par défaut respecte l’ordre de connexions."
+ },
+ "options_misc_3": {
+ "message": "Légende des couleurs du bouton de la barre d’outils :"
+ },
+ "options_misc_4": {
+ "message": "gris pour «Tous lus» et bleu pour «Déconnecté»"
+ },
+ "options_misc_5": {
+ "message": "bleu pour «Tous lus» et gris pour «Déconnecté»"
+ },
+ "options_misc_9": {
+ "message": "rouge pour «Tous lus» et gris pour «Déconnecté»"
+ },
+ "options_misc_6": {
+ "message": "Afficher une notification sur le bureau pour avertir que Gmail™ est déjà ouvert dans l’onglet actif"
+ },
+ "options_misc_7": {
+ "message": "Afficher la page de bienvenue après une mise à jour"
+ },
+ "options_misc_8": {
+ "message": "Réinitialiser tous les paramètres à leurs valeurs par défaut"
+ },
+ "options_misc_10": {
+ "message": "Ne déclencher les notifications de bureau et les notifications sonores que lorsqu’un e-mail est arrivé depuis moins de (en minutes) :"
+ },
+ "options_misc_11": {
+ "message": "En positionnant cette préférence à zéro, vous ne recevrez ni notifications de bureau ni notifications sonores ; malgré tout, la notification de badge continuera ses mises à jour."
+ },
+ "options_misc_12": {
+ "message": "Ne pas inclure de détails d’identifiant dans la bulle textuelle"
+ },
+ "options_misc_13": {
+ "message": "Par défaut, le notifieur met à jour la bulle textuelle du bouton de la barre d’outils avec des infos d’identifiant. En désactivant cette option, la bulle textuelle restera à sa valeur par défaut."
+ },
+ "options_misc_14": {
+ "message": "Ne pas afficher le nombre badge exact quand le nombre d’e-mails non lus est supérieur à 999"
+ },
+ "options_misc_15": {
+ "message": "Ouvrir la page FAQ sur les mises à jour"
+ },
+ "options_misc_16": {
+ "message": "Thème de couleur par défaut pour le panneau :"
+ },
+ "options_misc_17": {
+ "message": "Thème clair"
+ },
+ "options_misc_18": {
+ "message": "Thème sombre"
+ },
+ "options_misc_19": {
+ "message": "Thème système"
+ },
+ "options_plugins": {
+ "message": "Plug-ins"
+ },
+ "options_plugins_1": {
+ "message": "Libellés Gmail™ et bouton étoile (expérimental)"
+ },
+ "options_plugins_2": {
+ "message": "Ce plugin affiche le bouton étoile ainsi que les libellés des fils de discussion dans la fenêtre contextuelle (mode étendu uniquement)."
+ },
+ "options_styling": {
+ "message": "Mise en Style"
+ },
+ "options_styling_0": {
+ "message": "Vue des e-mail à l'échelle (0,5-4)"
+ },
+ "options_styling_1": {
+ "message": "Règles CSS personnalisées pour le panneau supérieur"
+ },
+ "options_styling_2": {
+ "message": "Règles CSS personnalisées pour la vue des e-mail"
+ },
+ "options_px": {
+ "message": "pixel(s)"
+ },
+ "options_empty": {
+ "message": "non défini"
+ },
+ "options_button_test": {
+ "message": "Jouer le son ►"
+ },
+ "options_button_reset": {
+ "message": " <= Remise à zéro des préférences => "
+ },
+ "popup_settings": {
+ "message": "Paramètres"
+ },
+ "popup_of": {
+ "message": "sur"
+ },
+ "popup_wait": {
+ "message": "Patientez..."
+ },
+ "popup_date_format": {
+ "message": "%mm %jj %aa"
+ },
+ "popup_no_subject": {
+ "message": "(aucun objet)"
+ },
+ "popup_open_settings": {
+ "message": "Paramètres"
+ },
+ "popup_open_inbox": {
+ "message": "Boîte de réception"
+ },
+ "popup_archive": {
+ "message": "Archiver"
+ },
+ "popup_spam": {
+ "message": "Spam !"
+ },
+ "popup_trash": {
+ "message": "Supprimer"
+ },
+ "popup_refresh": {
+ "message": "Rafraîchir"
+ },
+ "popup_read": {
+ "message": "Marquer comme lu"
+ },
+ "popup_read_all": {
+ "message": "Tout marquer comme lu"
+ },
+ "popup_toggle_dark": {
+ "message": "Thème sombre <==> Thème clair"
+ },
+ "popup_msg_1": {
+ "message": "à l’instant"
+ },
+ "popup_msg_2": {
+ "message": "1 minute plus tôt"
+ },
+ "popup_msg_3_format": {
+ "message": "%d minutes plus tôt"
+ },
+ "popup_msg_4": {
+ "message": "1 heure plus tôt"
+ },
+ "popup_msg_5": {
+ "message": "heures plus tôt"
+ },
+ "popup_msg_6": {
+ "message": "Hier"
+ },
+ "popup_msg_7_format": {
+ "message": "%d jours plus tôt"
+ },
+ "popup_msg_8_format": {
+ "message": "%d semaines plus tôt"
+ },
+ "popup_msg_9_format": {
+ "message": "%d mois plus tôt"
+ },
+ "popup_msg_10": {
+ "message": "Janvier"
+ },
+ "popup_msg_11": {
+ "message": "Février"
+ },
+ "popup_msg_12": {
+ "message": "Mars"
+ },
+ "popup_msg_13": {
+ "message": "Avril"
+ },
+ "popup_msg_14": {
+ "message": "Mai"
+ },
+ "popup_msg_15": {
+ "message": "Juin"
+ },
+ "popup_msg_16": {
+ "message": "Juillet"
+ },
+ "popup_msg_17": {
+ "message": "Août"
+ },
+ "popup_msg_18": {
+ "message": "Septembre"
+ },
+ "popup_msg_19": {
+ "message": "Octobre"
+ },
+ "popup_msg_20": {
+ "message": "Novembre"
+ },
+ "popup_msg_21": {
+ "message": "Décembre"
+ },
+ "settings_open_title": {
+ "message": "Ouvrir la page des options (paramètres)"
+ },
+ "settings_open_label": {
+ "message": "Ouvrir les options"
+ }
+}
diff --git a/v3.classic/_locales/he/messages.json b/v3.classic/_locales/he/messages.json
new file mode 100644
index 00000000..6d87af11
--- /dev/null
+++ b/v3.classic/_locales/he/messages.json
@@ -0,0 +1,758 @@
+{
+ "toolbar_label": {
+ "message": "Notifier for Gmail™",
+ "description": ""
+ },
+ "tooltip_1": {
+ "message": "כפתור שמאלי: פתח Gmail או הצג תצוגה מקדימה",
+ "description": ""
+ },
+ "tooltip_2": {
+ "message": "כפתור אמצעי (או Ctrl+Left): עדכן את כל החשבונות",
+ "description": ""
+ },
+ "tooltip_3": {
+ "message": "כפתור ימני: בחירת חשבון",
+ "description": ""
+ },
+ "description": {
+ "message": "מתריע על הודעות חדשות בחשבון ה-Gmail בכמה חשבונות ותוויות",
+ "description": ""
+ },
+ "log_in_to_your_account": {
+ "message": "אנא התחבר לחשבון ה-Gmail שלך",
+ "description": ""
+ },
+ "msg_1": {
+ "message": "קיימת לשונית פתוחה עם Gmail. לחץ על האייקון של התוסף על מנת לפתוח לשונית חדשה או עבור ללשונית הקיימת.",
+ "description": ""
+ },
+ "msg_2": {
+ "message": "הקישור הועתק בהצלחה.",
+ "description": ""
+ },
+ "msg_3": {
+ "message": "הטקסט הנבחר הועתק בהצלחה.",
+ "description": ""
+ },
+ "msg_4": {
+ "message": "שים לב: על מנת שהתוסף יעבוד כצפוי עליך להתחבר לחשבון ה-Gmail שלך.",
+ "description": ""
+ },
+ "msg_5": {
+ "message": "בחר קובץ לצליל",
+ "description": ""
+ },
+ "label_1": {
+ "message": "רענן",
+ "description": ""
+ },
+ "label_2": {
+ "message": "מאפיינים",
+ "description": ""
+ },
+ "label_3": {
+ "message": "כבה את כל ההתראות",
+ "description": ""
+ },
+ "label_4": {
+ "message": "ל-5 דקות",
+ "description": ""
+ },
+ "label_5": {
+ "message": "ל-15 דקות",
+ "description": ""
+ },
+ "label_6": {
+ "message": "ל-30 דקות",
+ "description": ""
+ },
+ "label_7": {
+ "message": "לשעה",
+ "description": ""
+ },
+ "label_8": {
+ "message": "לשעתיים",
+ "description": ""
+ },
+ "label_9": {
+ "message": "ל-5 שעות",
+ "description": ""
+ },
+ "label_13": {
+ "message": "לתקופה",
+ "description": ""
+ },
+ "label_10": {
+ "message": "הפעל התראות (עבור הסשיין)",
+ "description": ""
+ },
+ "label_11": {
+ "message": "צור מייל חדש",
+ "description": ""
+ },
+ "label_12": {
+ "message": "פתח FAQ",
+ "description": ""
+ },
+ "label_14": {
+ "message": "חשבונות מחוברים",
+ "description": ""
+ },
+ "unknown": {
+ "message": "לא ידוע",
+ "description": ""
+ },
+ "and": {
+ "message": "וגם",
+ "description": ""
+ },
+ "log_into_your_account": {
+ "message": "אנא התחבר לחשבונך ב-Gmail",
+ "description": ""
+ },
+ "notification": {
+ "message": "התקבל מ: [שם הכותב][break]כותרת: [כותרת][break]תקציר: [תקציר]",
+ "description": ""
+ },
+ "options_title": {
+ "message": "אפשרויות - Gmail™ Notifier",
+ "description": ""
+ },
+ "options_inshort": {
+ "message": "מתריע על הודעות חדשות בחשבון ה-Gmail בכמה חשבונות ותוויות",
+ "description": ""
+ },
+ "options_donation": {
+ "message": "תמוך בפיתוח",
+ "description": ""
+ },
+ "options_timings": {
+ "message": "תזמונים:",
+ "description": ""
+ },
+ "options_timings_l1": {
+ "message": "בדוק עבור אמיילים חדשים כל (שניות):",
+ "description": ""
+ },
+ "options_timings_l2": {
+ "message": "זמן מינימלי הוא 10 שניות.",
+ "description": ""
+ },
+ "options_timings_l3": {
+ "message": "הזכר עבור כל הלא נקראו כל (בדק'):",
+ "description": ""
+ },
+ "options_timings_l4": {
+ "message": "קבע כ-0 עבור כיבוי התזכורת.",
+ "description": ""
+ },
+ "options_timings_l5": {
+ "message": "זמן מינימלי הוא 5 דקות.",
+ "description": ""
+ },
+ "options_timings_l6": {
+ "message": "ערך שונה מ-0 יגרום לשני צלילים, גם של בועית ההתראות וגם של התראות הדפדפן (בדומה לקבלת אימייל חדש) במידה ויש לך אימיילים שלא נקראו.",
+ "description": ""
+ },
+ "options_timings_l7": {
+ "message": "אל תבדוק בעלייה ראשונה עבור אימיילים חדשים למשך (שניות):",
+ "description": ""
+ },
+ "options_timings_l8": {
+ "message": "קבע כ-0 על מנת לא לבצע בדיקת אימיילים חדשה בעלייה כלל, עד הבדיקה הידנית (לא אפשרי בדפדפן Safari).",
+ "description": ""
+ },
+ "options_gmail": {
+ "message": "Gmail:",
+ "description": ""
+ },
+ "options_gmail_1": {
+ "message": "חשבון ראשון (/mail/u/0/)",
+ "description": ""
+ },
+ "options_gmail_2": {
+ "message": "הפרד תווית באמצעות \",\" (פסיק).",
+ "description": ""
+ },
+ "options_gmail_3": {
+ "message": "חשבון שני (/mail/u/1/)",
+ "description": ""
+ },
+ "options_gmail_4": {
+ "message": "חשבון שלישי (/mail/u/2/)",
+ "description": ""
+ },
+ "options_gmail_5": {
+ "message": "חשבון רביעי (/mail/u/3/)",
+ "description": ""
+ },
+ "options_gmail_6": {
+ "message": "חשבון חמישי (/mail/u/4/)",
+ "description": ""
+ },
+ "options_gmail_7": {
+ "message": "חשבון שישי (/mail/u/5/)",
+ "description": ""
+ },
+ "options_gmail_8": {
+ "message": "סמן הודעות כנקראו בעת העברה לארכיון",
+ "description": ""
+ },
+ "options_gmail_15": {
+ "message": "תוויות נפוצות:",
+ "description": ""
+ },
+ "options_gmail_10": {
+ "message": "הצ התרעות עבור התוויות הבאות:",
+ "description": ""
+ },
+ "options_gmail_11": {
+ "message": "מקור מותאם אישית:",
+ "description": ""
+ },
+ "options_gmail_12": {
+ "message": "הפרד מקורות ע\"י פסיק (,). לדוגמא: https://mail.google.com/mail/u/0/feed/atom/inbox",
+ "description": ""
+ },
+ "options_gmail_13": {
+ "message": "הערה: מספר התוויות המקסימלי (מלבד אינבוקס) הוא 20",
+ "description": ""
+ },
+ "options_gmail_14": {
+ "message": "הערה: בשביל שהתוסף יאזין ליותר מ-5 חשבונות, הוסף את כתובות ה-feed לשדה \"Custom Feeds\". לדוגמא על מנת להאזין לחשבונות ה-6 ו-7 תוסיף:\nhttps://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox",
+ "description": ""
+ },
+ "options_notifications": {
+ "message": "התרעות:",
+ "description": ""
+ },
+ "options_notifications_1": {
+ "message": "הצג התרעות משולחן העבודה עבור מיילים חדשים",
+ "description": ""
+ },
+ "options_notifications_2": {
+ "message": "הצג התראות מערכת למשך (שניות):",
+ "description": ""
+ },
+ "options_notifications_3": {
+ "message": "ייתתכן ואפשרות זו לא תעבוד במערכת ההפעלה שלך.",
+ "description": ""
+ },
+ "options_notifications_4": {
+ "message": "מבנה ההתרעה",
+ "description": ""
+ },
+ "options_notifications_5": {
+ "message": "משתנים קיימים:",
+ "description": ""
+ },
+ "options_notifications_6": {
+ "message": "קצר התרעות הארוכות מ",
+ "description": ""
+ },
+ "options_notifications_7": {
+ "message": "תווים עבור שדות [כותרת] ו-[תקציר].",
+ "description": ""
+ },
+ "options_notifications_8": {
+ "message": "על מנת למנוע חיתוך השתמש במספר גדול.",
+ "description": ""
+ },
+ "options_notifications_9": {
+ "message": "השמע צליל התראה עבור אימיילים חדשים",
+ "description": ""
+ },
+ "options_notifications_10": {
+ "message": "שימו לב: עבור משתמשי Mac, החל מ-Firefox גרסה 28.0 כל התראות הבועית מנועלות ע\"י Mac Notification Center מה שגורם להשמעת צליל נוסף.\nעליך לבטל את אחד הצלילים.",
+ "description": ""
+ },
+ "options_notifications_11": {
+ "message": "הצג התראות בועית ב-וינדוס או ב-Mac.",
+ "description": ""
+ },
+ "options_notifications_12": {
+ "message": "בועית ההתראות אינה נתמכת במערכת ההפעלה Linux.",
+ "description": ""
+ },
+ "options_notifications_13": {
+ "message": "פתח את התצוגה המקדימה בעת לחיצה על בועית ההתראות (בוינדוס בלבד, בטא)",
+ "description": ""
+ },
+ "options_notifications_14": {
+ "message": "אפשרות זו נסיונית ויכולה לגרום לקריסת דפדפן Firefox. (מצריך הפעלה מחדש של הדפדפן).",
+ "description": ""
+ },
+ "options_notifications_15": {
+ "message": "צליל ברירת מחדל",
+ "description": ""
+ },
+ "options_notifications_16": {
+ "message": "צליל התראה ברירת מחדל",
+ "description": ""
+ },
+ "options_notifications_17": {
+ "message": "צליל Checker Plus bell",
+ "description": ""
+ },
+ "options_notifications_18": {
+ "message": "צליל Checker Plus ding ",
+ "description": ""
+ },
+ "options_notifications_19": {
+ "message": "בועית התראות אימייל",
+ "description": ""
+ },
+ "options_notifications_20": {
+ "message": "צליל מותאם אישית",
+ "description": ""
+ },
+ "options_notifications_21": {
+ "message": "צליל התראות מותאם אישית",
+ "description": ""
+ },
+ "options_notifications_22": {
+ "message": "אם הדפדפן אינו מנגן את צליל ההתראות, נסה להמיר אותו לקובץ WAV עם אחד מכלי ההמרה הזמינים ברשת.",
+ "description": ""
+ },
+ "options_notifications_35": {
+ "message": "לבחירת צליל אישי חדש, בחר תחילה בצליל המובנה ולאחר מכן שנה אותו לצליל אישי",
+ "description": ""
+ },
+ "options_notifications_23": {
+ "message": "עוצמת השמע של ההתראה הוא",
+ "description": ""
+ },
+ "options_notifications_24": {
+ "message": "עוצמת שמע הוא מספר בין 0 ל-100, כאשר 100 היא העוצמה המקסימלית (ברירת מחדל).",
+ "description": ""
+ },
+ "options_notifications_25": {
+ "message": "בסאפרי רוב הסיכויים שצליל ההתראות אינו עובד, אם זה המצב, השתמש בצליל אישי.",
+ "description": ""
+ },
+ "options_notifications_26": {
+ "message": "תמיד הצג התרעת בועית (עבור חלונות בלבד)",
+ "description": ""
+ },
+ "options_notifications_27": {
+ "message": "התרעות בועית יוצגו גם אם אין אימיילים שלא נקראו.",
+ "description": ""
+ },
+ "options_notifications_28": {
+ "message": "כבה את כל ההתראות למשך תקופה (בדק'):",
+ "description": ""
+ },
+ "options_notifications_29": {
+ "message": "אופציה זו שייכת לתפריט הכפתור הימני.",
+ "description": ""
+ },
+ "options_notifications_30": {
+ "message": "אחד את כל התראות המערכת להתראה אחת",
+ "description": ""
+ },
+ "options_notifications_31": {
+ "message": "צליל התראות אישי",
+ "description": ""
+ },
+ "options_notifications_32": {
+ "message": "שם או אימייל מכילים",
+ "description": ""
+ },
+ "options_notifications_33": {
+ "message": "נושא המייל מכיל",
+ "description": ""
+ },
+ "options_notifications_34": {
+ "message": "גוף המייל מכיל",
+ "description": ""
+ },
+ "options_notifications_36": {
+ "message": "בקש מג'ימייל למנוע מעבר ל- 'inbox.google.com'",
+ "description": ""
+ },
+ "options_notifications_37": {
+ "message": "הצג מספר",
+ "description": ""
+ },
+ "options_notifications_38": {
+ "message": "פעולות מהירות (סמן כנקרא, מחק, ...) נחשבים כבוצעות בקבלת ה-headers של הבקשה.",
+ "description": ""
+ },
+ "options_notifications_40": {
+ "message": "אפשר פעולות מהירות מתיבת הנוטיפיקציה (עד 2 פעולות)\n(כרום בלבד)",
+ "description": ""
+ },
+ "options_notifications_41": {
+ "message": "סמן כנקרא",
+ "description": ""
+ },
+ "options_notifications_42": {
+ "message": "ארכיון",
+ "description": ""
+ },
+ "options_notifications_43": {
+ "message": "אשפה",
+ "description": ""
+ },
+ "options_tab": {
+ "message": "פתיחת לשוניות:",
+ "description": ""
+ },
+ "options_tab_1": {
+ "message": "חפש עבור לשונית עם Gmail רק עבור החלון הפעיל",
+ "description": ""
+ },
+ "options_tab_2": {
+ "message": "אל תחפש בחלונות אחרים עבור לשונית Gmail. אם אין לשונית עם Gmail בחלון הנוכחי, פתח לשונית חדשה.",
+ "description": ""
+ },
+ "options_tab_3": {
+ "message": "פתח חשבון Gmail בסמוך ללשונית הפעילה",
+ "description": ""
+ },
+ "options_tab_4": {
+ "message": "פתח חשבון Gmail בלשונית קיימת",
+ "description": ""
+ },
+ "options_tab_5": {
+ "message": "פתח חשבון Gmail בלשונית נסתרת",
+ "description": ""
+ },
+ "options_tab_6": {
+ "message": "פתח חשבון Gmail בחלון חדש",
+ "description": ""
+ },
+ "options_tab_7": {
+ "message": "תמיד השתמש בטאב ריק במקום טאב חדש על מנת לפתוח",
+ "description": ""
+ },
+ "options_tab_8": {
+ "message": "התעלם מלשוניות ג'ימייל פתוחות",
+ "description": ""
+ },
+ "options_tab_9": {
+ "message": "כשלא מסומן, התוסף מחפש בחלון הנוכחי לשונית של ג'ימייל או פותח לשונית חדשה.",
+ "description": ""
+ },
+ "options_tab_10": {
+ "message": "פתח מיילים במוד HTML בסיסי",
+ "description": ""
+ },
+ "options_toolbar": {
+ "message": "סרגל הכלים:",
+ "description": ""
+ },
+ "options_toolbar_1": {
+ "message": "כפתור סרגל הכלים",
+ "description": ""
+ },
+ "options_toolbar_2": {
+ "message": "תפיד פתח את חלונית התצוגה",
+ "description": ""
+ },
+ "options_toolbar_3": {
+ "message": "פתח את Gmail רק במידה ומחוברים עם חשבון יחיד",
+ "description": ""
+ },
+ "options_toolbar_18": {
+ "message": "פתח את ג'ימייל",
+ "description": ""
+ },
+ "options_toolbar_4": {
+ "message": "מצב תצוגה מקדימה",
+ "description": ""
+ },
+ "options_toolbar_5": {
+ "message": "התג תקציר בלבד",
+ "description": ""
+ },
+ "options_toolbar_6": {
+ "message": "הצג את כל התוכן",
+ "description": ""
+ },
+ "options_toolbar_7": {
+ "message": "גובה חלונית תצוגה מקדימה במצב מצומצם (פיקסלים):",
+ "description": ""
+ },
+ "options_toolbar_8": {
+ "message": "רוחב מינימלי הוא 500px.",
+ "description": ""
+ },
+ "options_toolbar_9": {
+ "message": "גובה חלונית תצוגה מקדימה במצב מלא (פיקסלים):",
+ "description": ""
+ },
+ "options_toolbar_10": {
+ "message": "גובה מינימלי הוא 500px.",
+ "description": ""
+ },
+ "options_toolbar_11": {
+ "message": "תמוך בקיצורי מקלדת בתוסף",
+ "description": ""
+ },
+ "options_toolbar_12": {
+ "message": "!: דווח כספם, #: השלך לאשפה, Shift+i: סמן כנקרא.",
+ "description": ""
+ },
+ "options_toolbar_13": {
+ "message": "הצג את כל תוכן המיילים בתצוגה מורחבת.",
+ "description": ""
+ },
+ "options_toolbar_14": {
+ "message": "אם אתה מעדיף תצוגת טקסט בלבד במצב תצוגה מקדימה מורחבת, בטל סימון.",
+ "description": ""
+ },
+ "options_toolbar_15": {
+ "message": "לחיצת כפתור האמצעי על האייקון בתפריט עבור",
+ "description": ""
+ },
+ "options_toolbar_16": {
+ "message": "רענן את כל החשבונות",
+ "description": ""
+ },
+ "options_toolbar_17": {
+ "message": "פתח את חשבון ה-Gmail הראשי",
+ "description": ""
+ },
+ "options_misc": {
+ "message": "שונות:",
+ "description": ""
+ },
+ "options_misc_1": {
+ "message": "מיין חשבונות לפי א-ב",
+ "description": ""
+ },
+ "options_misc_2": {
+ "message": "סדר הופעת",
+ "description": ""
+ },
+ "options_misc_3": {
+ "message": "צבע העיגול בתפריט",
+ "description": ""
+ },
+ "options_misc_4": {
+ "message": "אפור עבור ״לא נקראו״ וכחול עבור ״מנותק״",
+ "description": ""
+ },
+ "options_misc_5": {
+ "message": "כחול עבור ״לא נקראו״ ואפור עבור ״מנותק״",
+ "description": ""
+ },
+ "options_misc_9": {
+ "message": "צבע אדום ל-\"לא נקרא\" וצבע אפור ל-\"לא מחובר\"",
+ "description": ""
+ },
+ "options_misc_6": {
+ "message": "הצג התראות מערכת ההפעלה בכדי להזהיר שג'ימייל כבר פתוח בלשונית הנוכחית",
+ "description": ""
+ },
+ "options_misc_7": {
+ "message": "הצג הודעת פתיחה בעת עדכון התוסף",
+ "description": ""
+ },
+ "options_misc_8": {
+ "message": "אפס את כל ההגדרות",
+ "description": ""
+ },
+ "options_misc_10": {
+ "message": "התרע עבור מיילים חדשים אשר הגיעו בפחות מ (בדק'):",
+ "description": ""
+ },
+ "options_misc_11": {
+ "message": "ע\"י קביעת ערך זה ל-0, תמע קבלת התראות מערכת ההפעלה (כולל צליל), תקבל אך ורק התראות בדפדפן.",
+ "description": ""
+ },
+ "options_misc_12": {
+ "message": "אל תציג פרטי התחברות בפרטי הסבר הקצר",
+ "description": ""
+ },
+ "options_misc_13": {
+ "message": "כברירת מחדל, התוסף מעדכן את ההסבר הקצר עם פרטי ההתחברות. כשאופציה זו מכובה, ההסבר הקצר ישאר עם המידע הסטטי.",
+ "description": ""
+ },
+ "options_misc_14": {
+ "message": "אל תציג את מספר המיילים המדוייק כאשר מספר זה גדול מ-999",
+ "description": ""
+ },
+ "options_misc_15": {
+ "message": "פתח עמוד FAQ בעת עדכון",
+ "description": ""
+ },
+ "options_plugins": {
+ "message": "פלאגאינים:",
+ "description": ""
+ },
+ "options_plugins_1": {
+ "message": "התוויות של ג'ימייל וכפתור הכוכב (נסיוני)",
+ "description": ""
+ },
+ "options_plugins_2": {
+ "message": "פלאגאין זה מציג את כפתור הכוכב וכן את תוויות המייל (נסיוני)",
+ "description": ""
+ },
+ "options_px": {
+ "message": "px",
+ "description": ""
+ },
+ "options_empty": {
+ "message": "לא מוגדר",
+ "description": ""
+ },
+ "options_button_test": {
+ "message": "הפעל",
+ "description": ""
+ },
+ "options_button_reset": {
+ "message": "אפס מאפיינים",
+ "description": ""
+ },
+ "popup_settings": {
+ "message": "הגדרות",
+ "description": ""
+ },
+ "popup_of": {
+ "message": "של",
+ "description": ""
+ },
+ "popup_wait": {
+ "message": "המתן...",
+ "description": ""
+ },
+ "popup_date_format": {
+ "message": "%dd %mm, %yy",
+ "description": ""
+ },
+ "popup_no_subject": {
+ "message": "(אין נושא)",
+ "description": ""
+ },
+ "popup_open_settings": {
+ "message": "Open Settings",
+ "description": ""
+ },
+ "popup_open_inbox": {
+ "message": "Open Inbox",
+ "description": ""
+ },
+ "popup_archive": {
+ "message": "ארכיון",
+ "description": ""
+ },
+ "popup_spam": {
+ "message": "ספאם",
+ "description": ""
+ },
+ "popup_trash": {
+ "message": "מחק",
+ "description": ""
+ },
+ "popup_refresh": {
+ "message": "רענן",
+ "description": ""
+ },
+ "popup_read": {
+ "message": "סמן כנקרא",
+ "description": ""
+ },
+ "popup_read_all": {
+ "message": "סמן הכל כנקרא",
+ "description": ""
+ },
+ "popup_msg_1": {
+ "message": "עכשיו",
+ "description": ""
+ },
+ "popup_msg_2": {
+ "message": "לפני דקה",
+ "description": ""
+ },
+ "popup_msg_3_format": {
+ "message": "לפני %d דקות",
+ "description": ""
+ },
+ "popup_msg_4": {
+ "message": "לפני שעה",
+ "description": ""
+ },
+ "popup_msg_5": {
+ "message": "לפני שעות",
+ "description": ""
+ },
+ "popup_msg_6": {
+ "message": "אתמול",
+ "description": ""
+ },
+ "popup_msg_7_format": {
+ "message": "לפני %d ימים",
+ "description": ""
+ },
+ "popup_msg_8_format": {
+ "message": "לפני %d שבוע(ות)",
+ "description": ""
+ },
+ "popup_msg_9_format": {
+ "message": "לפני %d חודש(ים)",
+ "description": ""
+ },
+ "popup_msg_10": {
+ "message": "ינואר",
+ "description": ""
+ },
+ "popup_msg_11": {
+ "message": "פברואר",
+ "description": ""
+ },
+ "popup_msg_12": {
+ "message": "מרץ",
+ "description": ""
+ },
+ "popup_msg_13": {
+ "message": "אפריל",
+ "description": ""
+ },
+ "popup_msg_14": {
+ "message": "מאי",
+ "description": ""
+ },
+ "popup_msg_15": {
+ "message": "יוני",
+ "description": ""
+ },
+ "popup_msg_16": {
+ "message": "יולי",
+ "description": ""
+ },
+ "popup_msg_17": {
+ "message": "אוגוסט",
+ "description": ""
+ },
+ "popup_msg_18": {
+ "message": "ספטמבר",
+ "description": ""
+ },
+ "popup_msg_19": {
+ "message": "אוקטובר",
+ "description": ""
+ },
+ "popup_msg_20": {
+ "message": "נובמבר",
+ "description": ""
+ },
+ "popup_msg_21": {
+ "message": "דצמבר",
+ "description": ""
+ },
+ "settings_open_title": {
+ "message": "פתח עמוד אפשרויות",
+ "description": ""
+ },
+ "settings_open_label": {
+ "message": "פתח אפשרויות",
+ "description": ""
+ },
+ "gmail": {
+ "message": "Notifier for Gmail™",
+ "description": ""
+ }
+}
\ No newline at end of file
diff --git a/v3.classic/_locales/hu/messages.json b/v3.classic/_locales/hu/messages.json
new file mode 100644
index 00000000..8f2ff629
--- /dev/null
+++ b/v3.classic/_locales/hu/messages.json
@@ -0,0 +1,578 @@
+{
+ "gmail": {
+ "message": "Gmail™ értesítő"
+ },
+ "toolbar_label": {
+ "message": "Gmail™ értesítő"
+ },
+ "description": {
+ "message": "Egy vagy több Google Mail (Gmail™) fiókhoz, illetve címkéhez értesítő"
+ },
+ "log_in_to_your_account": {
+ "message": "Jelentkezzen be Gmail™-fiókjába"
+ },
+ "msg_1": {
+ "message": "Már megnyitotta a Gmail™-t. Kattintson az eszköztár gombjára a Gmail™ megnyitásához új ablakban vagy már megnyitott Gmail™ lapra váltáshoz."
+ },
+ "msg_2": {
+ "message": "A link a vágólapra került."
+ },
+ "msg_3": {
+ "message": "A kijelölt szöveg a vágólapra került."
+ },
+ "msg_4": {
+ "message": "Megjegyzés: Az értesítő működéséhez szükséges, hogy Google-fiókjába bejelentkezzen."
+ },
+ "msg_5": {
+ "message": "Válassz egy hangfájlt"
+ },
+ "label_1": {
+ "message": "Frissítés"
+ },
+ "label_2": {
+ "message": "Beállítások"
+ },
+ "label_3": {
+ "message": "Összes értesítés tiltása"
+ },
+ "label_4": {
+ "message": "5 percre"
+ },
+ "label_5": {
+ "message": "15 percre"
+ },
+ "label_6": {
+ "message": "30 percre"
+ },
+ "label_7": {
+ "message": "1 órára"
+ },
+ "label_8": {
+ "message": "2 órára"
+ },
+ "label_9": {
+ "message": "5 órára"
+ },
+ "label_13": {
+ "message": "Egyéni időhosszra"
+ },
+ "label_10": {
+ "message": "Értesítések engedélyezése (munkamenet)"
+ },
+ "label_11": {
+ "message": "Levél írása"
+ },
+ "label_12": {
+ "message": "GyIK megnyitása"
+ },
+ "label_14": {
+ "message": "Bejelentkezett fiókok"
+ },
+ "unknown": {
+ "message": "ismeretlen"
+ },
+ "and": {
+ "message": "és"
+ },
+ "log_into_your_account": {
+ "message": "Jelentkezzen be fiókjába"
+ },
+ "notification": {
+ "message": "Feladó: [author_email][break]Tárgy: [title][break]Összegzés: [summary]"
+ },
+ "options_title": {
+ "message": "Beállítások - Gmail™ Értesítő"
+ },
+ "options_inshort": {
+ "message": "Egy vagy több Google Mail (Gmail™) fiókhoz, illetve címkéhez értesítő."
+ },
+ "options_donation": {
+ "message": "Támogatásfejlesztés $"
+ },
+ "options_timings": {
+ "message": "Időzítés"
+ },
+ "options_timings_l1": {
+ "message": "Új levelek ellenőrzése ennyi másodpercenként:"
+ },
+ "options_timings_l2": {
+ "message": "A legkisebb időköz 10 másodperc."
+ },
+ "options_timings_l3": {
+ "message": "Emlékeztessen az összes olvasatlan levélre (percenként):"
+ },
+ "options_timings_l4": {
+ "message": "Állítsa az értéket 0-ra nem ismétlődő értesítésekhez."
+ },
+ "options_timings_l5": {
+ "message": "A legrövidebb időköz 5 perc."
+ },
+ "options_timings_l6": {
+ "message": "Nem 0 érték esetén addig él az asztali értesítő és a hangjelzés (hasonlóan, mint új levél érkezésél) míg van olvasatlan levele."
+ },
+ "options_timings_l7": {
+ "message": "Ne keressen új leveleket induláskor ennyi másodpercig:"
+ },
+ "options_timings_l8": {
+ "message": "Állítsa 0-ra az értéket, hogy ne legyen automatikus ellenőrzés az első kézi frissítésig [Safariban nem érhető el]."
+ },
+ "options_gmail": {
+ "message": "Gmail™"
+ },
+ "options_gmail_1": {
+ "message": "Elsődleges fiók(/mail/u/0/)"
+ },
+ "options_gmail_2": {
+ "message": "A címkéket vesszővel (\",\"-vel) válassza el."
+ },
+ "options_gmail_3": {
+ "message": "Másodlagos fiók (/mail/u/1/)"
+ },
+ "options_gmail_4": {
+ "message": "Harmadik fiók (/mail/u/2/)"
+ },
+ "options_gmail_5": {
+ "message": "Negyedik fiók (/mail/u/3/)"
+ },
+ "options_gmail_6": {
+ "message": "Ötödik fiók (/mail/u/4/)"
+ },
+ "options_gmail_7": {
+ "message": "Hatodik fiók (/mail/u/5/)"
+ },
+ "options_gmail_8": {
+ "message": "Archiváláskor olvasottnak megjelölés"
+ },
+ "options_gmail_15": {
+ "message": "Néhány népszerű címke:"
+ },
+ "options_gmail_10": {
+ "message": "A következő címkék és fiókok esetén legyen értesítés:"
+ },
+ "options_gmail_11": {
+ "message": "Egyéni hírcsatornák:"
+ },
+ "options_gmail_12": {
+ "message": "A hírcsatornákat \",\"-vel (vesszővel) válassza el. Példa hírcsatornára: https://mail.google.com/mail/u/0/feed/atom/inbox"
+ },
+ "options_gmail_13": {
+ "message": "Megjegyzés: \"beérkező\" kivételével az összes címke maximális száma 20 (Google hírcsatorna csak maximum 20 új bejegyzést támogat)"
+ },
+ "options_gmail_14": {
+ "message": "Megjegyzés: több, mint 5 fiók figyeléséhez adj meg hírcsatorna URL-eket az \"Egyéni hírcsatornák\" mezőben. Például 6. és 7. fiók figyeléséhez add hozzá a következőket: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox"
+ },
+ "options_notifications": {
+ "message": "Értesítések"
+ },
+ "options_notifications_1": {
+ "message": "Asztali értesítések megjelenítése új levelek érkezésekor"
+ },
+ "options_notifications_2": {
+ "message": "Asztali értesítés megjelenítése ennyi másodpercig:"
+ },
+ "options_notifications_3": {
+ "message": "Ez a beállítás lehet, hogy nem működik ezen az operációs rendszeren."
+ },
+ "options_notifications_4": {
+ "message": "Értesítés formátuma"
+ },
+ "options_notifications_5": {
+ "message": "Használható változók:"
+ },
+ "options_notifications_6": {
+ "message": "Értesítés levágása, ha hosszabb, mint"
+ },
+ "options_notifications_7": {
+ "message": "karakternél a [cím] és az [összegzés] mező."
+ },
+ "options_notifications_8": {
+ "message": "Hogy ne lehessen szólevágás, nagy számot adjon meg."
+ },
+ "options_notifications_9": {
+ "message": "Hangjelzés lejátszása új levelek érkezésekor"
+ },
+ "options_notifications_10": {
+ "message": "Megjegyzés Mac használóknak. A Firefox 28.0 verziójától az összes asztali értesítést a Mac Notification Center (Mac Üzenetközpont) kezeli, ami extra hangjelzést okoz. Ezért célszerű vagy ezt, vagy a Notification Center hangértesítését kikapcsolni."
+ },
+ "options_notifications_11": {
+ "message": "\"Windows tálcaértesítés\" vagy \"Mac OS Dock értesítés\" megjelenítése"
+ },
+ "options_notifications_12": {
+ "message": "Tálcaértesítések nem támogatottak jelenleg Linux alatt."
+ },
+ "options_notifications_13": {
+ "message": "A tálcaértesítés ikonjára kattintás nyissa meg az eszközpanelt (Csak Windows, béta)"
+ },
+ "options_notifications_14": {
+ "message": "Ez a tulajdonság jelenleg komoly fejlesztés alatt áll, így a Forefox-ot instabillá teheti. [Újraindítás szükséges]."
+ },
+ "options_notifications_15": {
+ "message": "Alapértelmezett értesítési hang"
+ },
+ "options_notifications_16": {
+ "message": "Gmail™ értesítő alapértelmezett jelzése"
+ },
+ "options_notifications_17": {
+ "message": "Checker Plus bell értesítés"
+ },
+ "options_notifications_18": {
+ "message": "Checker Plus ding értesítés"
+ },
+ "options_notifications_19": {
+ "message": "Windows e-mail értesítés"
+ },
+ "options_notifications_20": {
+ "message": "Felhasználó által megadott hang"
+ },
+ "options_notifications_21": {
+ "message": "A felhasználó által megadott értesítési hang:"
+ },
+ "options_notifications_22": {
+ "message": "Amennyiben böngésződ nem játssza le az egyéni hangot, próbáld a hangot online konvertáló segítségével egyszerű WAV formátumra átalakítani.."
+ },
+ "options_notifications_35": {
+ "message": "Új egyéni hang választásához először válassz egy beépített hangot, majd állítsd be az egyéni hangértesítés opciót. "
+ },
+ "options_notifications_23": {
+ "message": "A hangértesítés hangereje (%-ban)"
+ },
+ "options_notifications_24": {
+ "message": "A hangerő 0 és 100 közötti szám, ahol 100 a leghangosabb (ez az alapértelmezett érték)."
+ },
+ "options_notifications_25": {
+ "message": "Gyakran az alapértelmezett hangértesítések nem jól kerülnek lejátszásra Safari-ban. Ebben az esetben állítson be egyéni hangfájlt."
+ },
+ "options_notifications_26": {
+ "message": "Mindig látszódjon a tálcaértesítő (Csak Windows)"
+ },
+ "options_notifications_27": {
+ "message": "A tálcaértesítő akkor is látszódjon, amikor nincs olvasatlan üzenet. "
+ },
+ "options_notifications_28": {
+ "message": "Összes értesítés tiltása egyéni időhosszra (percben):"
+ },
+ "options_notifications_29": {
+ "message": "Ez az beállítás kapcsolatban van az eszköztáron lévő gombon jobb egérrel elérhető menü -> összes értesítés tiltása -> egyéni időhosszra beállítással."
+ },
+ "options_notifications_30": {
+ "message": "Az összes egyidejű asztali értesítés összevonása egy értesítéssé"
+ },
+ "options_notifications_31": {
+ "message": "Értesítés egyéni hangja"
+ },
+ "options_notifications_32": {
+ "message": "név vagy e-mail cím tartalmazza"
+ },
+ "options_notifications_33": {
+ "message": "levél címe tartalmazza"
+ },
+ "options_notifications_34": {
+ "message": "levélösszegző tartalmazza"
+ },
+ "options_notifications_36": {
+ "message": "Gmail™ kérése az 'inbox.google.com' átirányítás megakadályozására"
+ },
+ "options_notifications_37": {
+ "message": "Az olvasatlan e-mailek számának megjelenítése a jelvényen (és válassza ki a jelvény színét)"
+ },
+ "options_notifications_38": {
+ "message": "Gyorsabb műveletek (megjelölés olvasottként, törlés, ...) (A fejlécek érkeztével megoldható műveletek)"
+ },
+ "options_notifications_40": {
+ "message": "Gyorsműveletek bekapcsolása az értesítési dobozból (maximálisan kettő művelet, csak Chrome)"
+ },
+ "options_notifications_41": {
+ "message": "Megj. olvasottként"
+ },
+ "options_notifications_42": {
+ "message": "Archív"
+ },
+ "options_notifications_43": {
+ "message": "Kuka"
+ },
+ "options_tab": {
+ "message": "Lap megnyitása"
+ },
+ "options_tab_1": {
+ "message": "Gmail™-fiók keresése csak az aktív böngészőablakban"
+ },
+ "options_tab_2": {
+ "message": "Ne keressen megnyitott Gmail™-fiókokért más böngészőablakot. Ha a Gmail™ nincs megnyitva, új lapon nyissa meg."
+ },
+ "options_tab_3": {
+ "message": "Gmail™-fiók megnyitása az aktív lap mellett"
+ },
+ "options_tab_4": {
+ "message": "Gmail™-fiók megnyitása az aktív lapon"
+ },
+ "options_tab_5": {
+ "message": "Gmail™-fiók megnyitása egy háttér lapon"
+ },
+ "options_tab_6": {
+ "message": "Gmail™-fiók megnyitása új ablakban"
+ },
+ "options_tab_7": {
+ "message": "Minden esetben új lap nyitása helyett üres lapot használjon, amikor a lapon megnyitás be van kapcsolva"
+ },
+ "options_tab_8": {
+ "message": "Már nyitva lévő Gmail™ lapok figyelmen kívül hagyása"
+ },
+ "options_tab_9": {
+ "message": "Ha be van jelölve, az értesítő új böngészőlapokon nyitja meg az e-maileket. Ha nincs bejelölve, akkor először megkeresi az aktív ablakban egy meglévő Gmail™ lapot, és átvált rá. Ha nem található, akkor megkeresi a többi megnyitott ablakot, mielőtt új lapot nyitna meg."
+ },
+ "options_tab_10": {
+ "message": "Levelek megnyitása alap HTML módban"
+ },
+ "options_tab_11": {
+ "message": "Egy olvasatlan e-mail címére kattintva a Gmail™ magához az e-mailhez nyitja meg a Gmail™-t, nem pedig az Beérkező levelek mappát."
+ },
+ "options_toolbar": {
+ "message": "Eszköztár"
+ },
+ "options_toolbar_1": {
+ "message": "Eszköztárgomb viselkedése"
+ },
+ "options_toolbar_2": {
+ "message": "Mindig nyissa meg a levél előnézetpanelét"
+ },
+ "options_toolbar_3": {
+ "message": "Gmail™-fiók megnyitása csak akkor, ha már egy fiókba bejelentkezett"
+ },
+ "options_toolbar_18": {
+ "message": "Gmail™-fiók megnyitása (kierőszakolt)"
+ },
+ "options_toolbar_4": {
+ "message": "Eszköztár panel mód"
+ },
+ "options_toolbar_5": {
+ "message": "Csak az összegzés megjelenítése"
+ },
+ "options_toolbar_6": {
+ "message": "Teljes tartalom megjelenítése"
+ },
+ "options_toolbar_7": {
+ "message": "Teljes tartalom megjelenítésekor az eszköztár panel szélessége pixelben:"
+ },
+ "options_toolbar_8": {
+ "message": "A legkisebb szélesség 500px."
+ },
+ "options_toolbar_9": {
+ "message": "Teljes tartalom megjelenítésekor az eszköztár panel magassága pixelben:"
+ },
+ "options_toolbar_10": {
+ "message": "A legkisebb magasság 500px."
+ },
+ "options_toolbar_11": {
+ "message": "Gyorsbillentyű támogatása az eszköztár gombján"
+ },
+ "options_toolbar_12": {
+ "message": "Jelentés spamként: , Kuka: <#>, Archí: , Megjelölés olvasottként: ."
+ },
+ "options_toolbar_13": {
+ "message": "Levél megjelenítése HTML-ként teljes tartalom módban"
+ },
+ "options_toolbar_14": {
+ "message": "Amennyiben a levelet szövegként szeretné látni, nem jelölje be ezt a jelölőnégyzetet."
+ },
+ "options_toolbar_15": {
+ "message": "Az eszköztár gombjára a középső egérgombbal kattintás"
+ },
+ "options_toolbar_16": {
+ "message": "Összes fiók frissítése"
+ },
+ "options_toolbar_17": {
+ "message": "Elsődleges Gmail™-fiók megnyitása"
+ },
+ "options_misc": {
+ "message": "Egyebek:"
+ },
+ "options_misc_1": {
+ "message": "Fiókok betűrendbe rendezése"
+ },
+ "options_misc_2": {
+ "message": "Az alapértelmezett rendezés a bejelentkezés sorrendje."
+ },
+ "options_misc_3": {
+ "message": "Toolbar button color pattern:"
+ },
+ "options_misc_4": {
+ "message": "Szürke szín a \"Nincs olvasatlan\" és kék szín a \"Szétkapcsolva\""
+ },
+ "options_misc_5": {
+ "message": "Kék szín a \"Nincs olvasatlan\" és szürke szín a \"Szétkapcsolva\""
+ },
+ "options_misc_9": {
+ "message": "Piros szín a \"Nincs olvasatlan\" és szürke szín a \"Szétkapcsolva\""
+ },
+ "options_misc_6": {
+ "message": "Asztali figyelmeztetés megjelenítése, hogy Gmail™ már az aktív lapon nyitva van "
+ },
+ "options_misc_7": {
+ "message": "Üdvözlő oldal megjelenítése frissítéskor"
+ },
+ "options_misc_8": {
+ "message": "Összes beállítás visszaállítása alapértelmezettre"
+ },
+ "options_misc_10": {
+ "message": "Csak asztali- és hangértesítés jelezzen amikor levél érkezett kevesebb, mint ennyi percen belül:"
+ },
+ "options_misc_11": {
+ "message": "Amennyiben nullára állítja ezt az értéket, nem kap sem asztali- sem hangértesítést, de az ikonértesítés továbbra is megmarad."
+ },
+ "options_misc_12": {
+ "message": "A buboréksúgó szövegébe ne helyezz bejelentkezési adatokat"
+ },
+ "options_misc_13": {
+ "message": "Alapértelmezetten az értesítő frissíti az eszköztár gombjának buboréksúgóját a bejelentkezési információval. Ezen opció kikapcsolásával a buboréksúgó szövege az alapértelmezett szöveg marad."
+ },
+ "options_misc_14": {
+ "message": "Ne pontos szám jelenjen meg, amikor az olvasatlan levelek száma nagyobb, mint 999. "
+ },
+ "options_misc_15": {
+ "message": "Frissítéskor a GyIK oldal megnyitása"
+ },
+ "options_misc_16": {
+ "message": "Color theme of panel:"
+ },
+ "options_misc_17": {
+ "message": "Light theme"
+ },
+ "options_misc_18": {
+ "message": "Dark theme"
+ },
+ "options_misc_19": {
+ "message": "System theme"
+ },
+ "options_plugins": {
+ "message": "Bővítmények"
+ },
+ "options_plugins_1": {
+ "message": "Gmail™ címkék és csillagok (kísérleti)"
+ },
+ "options_plugins_2": {
+ "message": "Ez a bővítmény megjeleníti a csillagot és a téma címkéit buborékban (csak kibővített módban)."
+ },
+ "options_px": {
+ "message": "px"
+ },
+ "options_empty": {
+ "message": "nincs megadva"
+ },
+ "options_button_test": {
+ "message": "Hang lejátszása ►"
+ },
+ "options_button_reset": {
+ "message": "Tulajdonságok alapértelmezettre állítása"
+ },
+ "popup_settings": {
+ "message": "Beállítások"
+ },
+ "popup_of": {
+ "message": "/"
+ },
+ "popup_wait": {
+ "message": "Várj..."
+ },
+ "popup_date_format": {
+ "message": "%yy. %mm %dd."
+ },
+ "popup_no_subject": {
+ "message": "(nincs tárgy)"
+ },
+ "popup_open_settings": {
+ "message": "Beállítások megnyitása"
+ },
+ "popup_open_inbox": {
+ "message": " Beérkező levelek megnyitása"
+ },
+ "popup_archive": {
+ "message": "Archív"
+ },
+ "popup_spam": {
+ "message": "Spam"
+ },
+ "popup_trash": {
+ "message": "Kuka"
+ },
+ "popup_refresh": {
+ "message": "Frissítés"
+ },
+ "popup_read": {
+ "message": "Megj. olvasottként"
+ },
+ "popup_read_all": {
+ "message": "Összes megjelölése olvasottként"
+ },
+ "popup_toggle_dark": {
+ "message": "Sötét téma be- és kikapcsolása"
+ },
+ "popup_msg_1": {
+ "message": "éppen most"
+ },
+ "popup_msg_2": {
+ "message": "1 perccel ezelőtt"
+ },
+ "popup_msg_3_format": {
+ "message": "%d perccel ezelőtt"
+ },
+ "popup_msg_4": {
+ "message": "1 óra múlva"
+ },
+ "popup_msg_5": {
+ "message": "órával ezelőtt"
+ },
+ "popup_msg_6": {
+ "message": "Tegnap"
+ },
+ "popup_msg_7_format": {
+ "message": "%d nappal ezelőtt"
+ },
+ "popup_msg_8_format": {
+ "message": "%d héttel ezelőtt"
+ },
+ "popup_msg_9_format": {
+ "message": "%d hónappal ezelőtt"
+ },
+ "popup_msg_10": {
+ "message": "Január"
+ },
+ "popup_msg_11": {
+ "message": "Február"
+ },
+ "popup_msg_12": {
+ "message": "Március"
+ },
+ "popup_msg_13": {
+ "message": "Április"
+ },
+ "popup_msg_14": {
+ "message": "Május"
+ },
+ "popup_msg_15": {
+ "message": "Június"
+ },
+ "popup_msg_16": {
+ "message": "Július"
+ },
+ "popup_msg_17": {
+ "message": "Augusztus"
+ },
+ "popup_msg_18": {
+ "message": "Szeptember"
+ },
+ "popup_msg_19": {
+ "message": "Október"
+ },
+ "popup_msg_20": {
+ "message": "November"
+ },
+ "popup_msg_21": {
+ "message": "December"
+ },
+ "settings_open_title": {
+ "message": "Beállítások oldal megnyitása"
+ },
+ "settings_open_label": {
+ "message": "Beállítások megnyitása"
+ }
+}
diff --git a/v3.classic/_locales/it/messages.json b/v3.classic/_locales/it/messages.json
new file mode 100644
index 00000000..8d1ad65e
--- /dev/null
+++ b/v3.classic/_locales/it/messages.json
@@ -0,0 +1,590 @@
+{
+ "gmail": {
+ "message": "Notificatore per Gmail™"
+ },
+ "toolbar_label": {
+ "message": "Notificatore per Gmail™"
+ },
+ "description": {
+ "message": "Notificatore di più etichette e account per Google Mail (Gmail™)"
+ },
+ "log_in_to_your_account": {
+ "message": "Per favore accedi al tuo account"
+ },
+ "msg_1": {
+ "message": "La scheda è già aperta. Fare clic sul pulsante nella barra degli strumenti per aprire Gmail™ in una nuova scheda o per passare a una scheda Gmail™ esistente."
+ },
+ "msg_2": {
+ "message": "Il collegamento viene copiato negli appunti."
+ },
+ "msg_3": {
+ "message": "Il testo selezionato viene copiato negli appunti."
+ },
+ "msg_4": {
+ "message": "Nota: affinché il notificatore funzioni correttamente, è necessario aver effettuato l'accesso al proprio account Google."
+ },
+ "msg_5": {
+ "message": "Selezionare un file audio"
+ },
+ "label_1": {
+ "message": "Aggiorna"
+ },
+ "label_2": {
+ "message": "Impostazioni"
+ },
+ "label_3": {
+ "message": "Disabilita tutte le notifiche"
+ },
+ "label_4": {
+ "message": "Per 5 minuti"
+ },
+ "label_5": {
+ "message": "Per 15 minuti"
+ },
+ "label_6": {
+ "message": "Per 30 minuti"
+ },
+ "label_7": {
+ "message": "Per 1 ora"
+ },
+ "label_8": {
+ "message": "Per 2 ore"
+ },
+ "label_9": {
+ "message": "Per 5 ore"
+ },
+ "label_13": {
+ "message": "Per il periodo di tempo personalizzato"
+ },
+ "label_10": {
+ "message": "Abilita notifiche (sessione)"
+ },
+ "label_11": {
+ "message": "Comporre un'e-mail"
+ },
+ "label_12": {
+ "message": "Apri FAQ"
+ },
+ "label_14": {
+ "message": "Account collegati:"
+ },
+ "unknown": {
+ "message": "sconosciuto"
+ },
+ "and": {
+ "message": " e "
+ },
+ "log_into_your_account": {
+ "message": "Per favore accedi al tuo account"
+ },
+ "notification": {
+ "message": "Da: [author_email][break] Titolo: [title][break] Riepilogo: [summary]"
+ },
+ "options_title": {
+ "message": "Opzioni - Notificatore Gmail"
+ },
+ "options_inshort": {
+ "message": "Notificatore di più etichette e account per Google Mail (Gmail™)."
+ },
+ "options_donation": {
+ "message": "Supporto allo sviluppo"
+ },
+ "options_timings": {
+ "message": "Orari"
+ },
+ "options_timings_l1": {
+ "message": "Controlla le nuove e-mail ogni (in secondi):"
+ },
+ "options_timings_l2": {
+ "message": "Il periodo minimo è di 10 secondi."
+ },
+ "options_timings_l3": {
+ "message": "Ricorda tutte le e-mail non lette ogni (in minuti):"
+ },
+ "options_timings_l4": {
+ "message": "Impostare il valore a zero per i promemoria non periodici."
+ },
+ "options_timings_l5": {
+ "message": "Il periodo minimo è di 5 minuti."
+ },
+ "options_timings_l6": {
+ "message": "Un valore diverso da zero attiva sia la notifica sul desktop che il suono di avviso (simile all'arrivo di una nuova e-mail) per sempre se ci sono e-mail non lette."
+ },
+ "options_timings_l7": {
+ "message": "Non verificare la presenza di nuove e-mail all'avvio per (in secondi):"
+ },
+ "options_timings_l8": {
+ "message": "Impostare il valore su zero per non controllare le e-mail fino al primo aggiornamento manuale [Non disponibile su Safari]."
+ },
+ "options_gmail": {
+ "message": "Gmail™"
+ },
+ "options_gmail_1": {
+ "message": "Account primario (/mail/u/0/)"
+ },
+ "options_gmail_2": {
+ "message": "Separare le etichette con \",\" (virgola)."
+ },
+ "options_gmail_3": {
+ "message": "Account secondario (/mail/u/1/)"
+ },
+ "options_gmail_4": {
+ "message": "Terzo Account (/mail/u/2/)"
+ },
+ "options_gmail_5": {
+ "message": "Quarto Account (/mail/u3/)"
+ },
+ "options_gmail_6": {
+ "message": "Quinto Account (/mail/u4/)"
+ },
+ "options_gmail_7": {
+ "message": "Sesto Account (/mail/u5/)"
+ },
+ "options_gmail_8": {
+ "message": "Contrassegnare il messaggio come letto quando lo si archivia"
+ },
+ "options_gmail_15": {
+ "message": "Alcune etichette popolari:"
+ },
+ "options_gmail_10": {
+ "message": "Ricevere notifiche per le etichette e gli account seguenti:"
+ },
+ "options_gmail_11": {
+ "message": "Alimentazioni personalizzate:"
+ },
+ "options_gmail_12": {
+ "message": "Separare i feed con \",\" (virgola). Esempio di feed: https://mail.google.com/mail/u/0/feed/atom/inbox"
+ },
+ "options_gmail_13": {
+ "message": "Nota: il numero massimo per tutte le etichette, ad eccezione di \"inbox\", è 20 (i feed di Google forniscono solo le 20 voci più recenti)."
+ },
+ "options_gmail_14": {
+ "message": "Nota: per far sì che il notificatore ascolti più di 5 account, aggiungere gli URL dei feed al campo \"Feed personalizzati\". Ad esempio, per ascoltare il 6° e il 7° account aggiungere: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox"
+ },
+ "options_notifications": {
+ "message": "Notifica"
+ },
+ "options_notifications_1": {
+ "message": "Visualizzare la notifica sul desktop per le nuove e-mail"
+ },
+ "options_notifications_2": {
+ "message": "Mostra la notifica sul desktop per (in secondi):"
+ },
+ "options_notifications_3": {
+ "message": "Questa opzione potrebbe non funzionare a seconda del sistema operativo in uso."
+ },
+ "options_notifications_4": {
+ "message": "Formato di notifica:"
+ },
+ "options_notifications_5": {
+ "message": "Variabili disponibili:"
+ },
+ "options_notifications_6": {
+ "message": "Tronca le notifiche più lunghe di"
+ },
+ "options_notifications_7": {
+ "message": "caratteri per i campi [titolo] e [sommario]."
+ },
+ "options_notifications_8": {
+ "message": "Per evitare il troncamento dell'ellissi, utilizzare un numero grande."
+ },
+ "options_notifications_9": {
+ "message": "Riproduzione di un suono di avviso per le nuove e-mail"
+ },
+ "options_notifications_10": {
+ "message": "Nota per gli utenti Mac. A partire da Firefox 28.0, tutte le notifiche sul desktop sono gestite dal Centro notifiche del Mac, che provoca un avviso sonoro aggiuntivo. È necessario deselezionare questa notifica sonora o quella generata dal Centro notifiche."
+ },
+ "options_notifications_11": {
+ "message": "Visualizzare la \"notifica della barra delle applicazioni di Windows™\" o la \"notifica del Dock di Mac OS\"."
+ },
+ "options_notifications_12": {
+ "message": "Le notifiche della barra delle applicazioni non sono attualmente supportate dal sistema operativo Linux."
+ },
+ "options_notifications_13": {
+ "message": "Apertura del pannello della barra degli strumenti quando si fa clic sull'icona di notifica della barra delle applicazioni (solo Windows™, beta)"
+ },
+ "options_notifications_14": {
+ "message": "Questa funzione è altamente sperimentale e potrebbe rendere instabile il browser Firefox. [È necessario un riavvio.]"
+ },
+ "options_notifications_15": {
+ "message": "La notifica sonora predefinita è:"
+ },
+ "options_notifications_16": {
+ "message": "Avviso predefinito di Gmail™ Notifier"
+ },
+ "options_notifications_17": {
+ "message": "Allarme campanello Checker Plus"
+ },
+ "options_notifications_18": {
+ "message": "Allarme ding Checker Plus"
+ },
+ "options_notifications_19": {
+ "message": "Avviso e-mail di Windows™"
+ },
+ "options_notifications_20": {
+ "message": "Suono definito dall'utente"
+ },
+ "options_notifications_21": {
+ "message": "Il suono di notifica definito dall'utente è"
+ },
+ "options_notifications_22": {
+ "message": "Se il browser non riproduce il suono di notifica personalizzato, provate a convertirlo in un semplice formato WAV utilizzando uno strumento di conversione online."
+ },
+ "options_notifications_35": {
+ "message": "Per selezionare un nuovo suono personalizzato, selezionare prima un suono incorporato e poi cambiare l'opzione in suono personalizzato."
+ },
+ "options_notifications_23": {
+ "message": "Il volume della notifica sonora è"
+ },
+ "options_notifications_24": {
+ "message": "Il volume è un numero compreso tra 0 e 100, dove 100 è il volume più alto (impostazione predefinita)."
+ },
+ "options_notifications_25": {
+ "message": "In Safari è probabile che le notifiche sonore predefinite non vengano riprodotte correttamente; in tal caso, utilizzare un file audio personalizzato come notifica."
+ },
+ "options_notifications_26": {
+ "message": "Mostra sempre la notifica nella tray (solo per Windows™)"
+ },
+ "options_notifications_27": {
+ "message": "La notifica del vassoio viene visualizzata anche se non ci sono messaggi non letti."
+ },
+ "options_notifications_28": {
+ "message": "Disattiva tutte le notifiche per un periodo di tempo personalizzato (in minuti):"
+ },
+ "options_notifications_29": {
+ "message": "Questa opzione è collegata al menu della barra degli strumenti con il tasto destro del mouse -> disattiva tutte le notifiche -> periodo di tempo personalizzato."
+ },
+ "options_notifications_30": {
+ "message": "Combinare tutte le notifiche concomitanti sul desktop in un'unica notifica"
+ },
+ "options_notifications_31": {
+ "message": "Notifica sonora personalizzata"
+ },
+ "options_notifications_32": {
+ "message": "nome o e-mail contiene"
+ },
+ "options_notifications_33": {
+ "message": "il titolo dell'e-mail contiene"
+ },
+ "options_notifications_34": {
+ "message": "il riepilogo dell'e-mail contiene"
+ },
+ "options_notifications_36": {
+ "message": "Chiedi a Gmail™ di impedire il reindirizzamento a \\\"inbox.google.com\\\""
+ },
+ "options_notifications_37": {
+ "message": "Mostra il numero di e-mail non lette sul badge (e scegli il colore del badge)"
+ },
+ "options_notifications_38": {
+ "message": "Solo per Chrome: consenti azioni più veloci (contrassegna come letto, elimina, ...) (Considera azioni per risolvere la ricezione delle intestazioni)"
+ },
+ "options_notifications_40": {
+ "message": "Solo per Chrome e se sono consentite azioni rapide per la casella di notifica (scegliere massimo 2 azioni):"
+ },
+ "options_notifications_41": {
+ "message": "Segna come letto"
+ },
+ "options_notifications_42": {
+ "message": "Archivia"
+ },
+ "options_notifications_43": {
+ "message": "Cestina"
+ },
+ "options_tab": {
+ "message": "Apertura della scheda"
+ },
+ "options_tab_1": {
+ "message": "Cerca un account Gmail™ aperto solo nella finestra attiva"
+ },
+ "options_tab_2": {
+ "message": "Non cercare account Gmail™ aperti in altre finestre del browser. Se Gmail™ non è aperto nella finestra attiva, apri una nuova scheda."
+ },
+ "options_tab_3": {
+ "message": "Apri un nuovo account Gmail™ accanto alla scheda attiva"
+ },
+ "options_tab_4": {
+ "message": "Apri un account Gmail™ nella scheda attiva"
+ },
+ "options_tab_5": {
+ "message": "Apri un account Gmail™ in una scheda in background"
+ },
+ "options_tab_6": {
+ "message": "Apri un account Gmail™ in una nuova finestra"
+ },
+ "options_tab_7": {
+ "message": "Utilizzare sempre le schede vuote invece di aprire una nuova scheda quando l'apertura in scheda è attivata"
+ },
+ "options_tab_8": {
+ "message": "Ignora le schede Gmail™ aperte"
+ },
+ "options_tab_9": {
+ "message": "Se selezionato, il notificatore apre le e-mail in nuove schede del browser. Quando questa casella è deselezionata, cercherà innanzitutto una scheda Gmail™ esistente nella finestra attiva e passerà ad essa. Se non viene trovata, cercherà altre finestre aperte prima di aprire una nuova scheda."
+ },
+ "options_tab_10": {
+ "message": "Aprire le e-mail in modalità HTML di base"
+ },
+ "options_tab_11": {
+ "message": "Aprire l'ultima email non letta invece di aprire la cartella INBOX"
+ },
+ "options_toolbar": {
+ "message": "Barra degli strumenti"
+ },
+ "options_toolbar_1": {
+ "message": "Comportamento dei pulsanti della barra degli strumenti:"
+ },
+ "options_toolbar_2": {
+ "message": "Pannello di anteprima delle e-mail sempre aperto"
+ },
+ "options_toolbar_3": {
+ "message": "Apri un account Gmail™ se è stato effettuato l'accesso solo a un account"
+ },
+ "options_toolbar_18": {
+ "message": "Apri un account Gmail™ (forzato)"
+ },
+ "options_toolbar_4": {
+ "message": "Modalità pannello della barra degli strumenti:"
+ },
+ "options_toolbar_5": {
+ "message": "Mostra solo il riepilogo"
+ },
+ "options_toolbar_6": {
+ "message": "Mostra il contenuto completo"
+ },
+ "options_toolbar_7": {
+ "message": "La larghezza del pannello della barra degli strumenti nella modalità di visualizzazione a contenuto completo è (in pixel):"
+ },
+ "options_toolbar_8": {
+ "message": "La larghezza minima è di 500px."
+ },
+ "options_toolbar_9": {
+ "message": "Altezza del pannello della barra degli strumenti nella modalità di visualizzazione a contenuto completo è (in pixel):"
+ },
+ "options_toolbar_10": {
+ "message": "L'altezza minima è di 500px."
+ },
+ "options_toolbar_11": {
+ "message": "Supporta le scorciatoie da tastiera nel pannello della barra degli strumenti"
+ },
+ "options_toolbar_12": {
+ "message": "Segnala come spam: < ! >, Cestino: < # >, Archivia: < e >, Segna come letto: < Maiusc + i >,"
+ },
+ "options_toolbar_13": {
+ "message": "Visualizza le e-mail con rendering HTML in modalità contenuto completo"
+ },
+ "options_toolbar_14": {
+ "message": "Se si preferisce il rendering di solo testo nella modalità a contenuto completo, deselezionare la casella."
+ },
+ "options_toolbar_15": {
+ "message": "Fare clic con il tasto centrale del mouse sul pulsante della barra degli strumenti per"
+ },
+ "options_toolbar_16": {
+ "message": "Aggiornare tutti gli account"
+ },
+ "options_toolbar_17": {
+ "message": "Apri account Gmail™ principale"
+ },
+ "options_misc": {
+ "message": "Varie"
+ },
+ "options_misc_1": {
+ "message": "Ordinare i conti in ordine alfabetico"
+ },
+ "options_misc_2": {
+ "message": "Il tipo di ordine predefinito è l'ordine registrato."
+ },
+ "options_misc_3": {
+ "message": "Modello di colore dei pulsanti della barra degli strumenti:"
+ },
+ "options_misc_4": {
+ "message": "Colore grigio per \"Non letto\" e colore blu per \"Disconnesso\"."
+ },
+ "options_misc_5": {
+ "message": "Colore blu per \"Non letto\" e colore grigio per \"Disconnesso\"."
+ },
+ "options_misc_9": {
+ "message": "Colore rosso per \"Non letto\" e grigio per \"Disconnesso\"."
+ },
+ "options_misc_6": {
+ "message": "Mostra notifica desktop per avvisare che Gmail™ è già aperto nella scheda attiva"
+ },
+ "options_misc_7": {
+ "message": "Mostra la pagina di benvenuto all'aggiornamento"
+ },
+ "options_misc_8": {
+ "message": "Ripristinare tutte le impostazioni di fabbrica"
+ },
+ "options_misc_10": {
+ "message": "Avviare le notifiche sul desktop e quelle sonore solo quando le e-mail sono arrivate in meno di (in minuti):"
+ },
+ "options_misc_11": {
+ "message": "Impostando questa preferenza su zero, non si riceveranno né le notifiche sul desktop né quelle sonore, ma si riceveranno comunque le notifiche dei badge."
+ },
+ "options_misc_12": {
+ "message": "Non includere i dati di accesso nel testo del tooltip"
+ },
+ "options_misc_13": {
+ "message": "Per impostazione predefinita, il notificatore aggiorna il testo della barra degli strumenti con le informazioni di accesso. Deselezionando questa opzione, il testo del tooltip rimane il valore predefinito."
+ },
+ "options_misc_14": {
+ "message": "Non mostrare il numero esatto di badge quando il numero di email non lette è superiore a 999"
+ },
+ "options_misc_15": {
+ "message": "Aprire la pagina delle FAQ sugli aggiornamenti"
+ },
+ "options_misc_16": {
+ "message": "Tema colore predefinito per il pannello:"
+ },
+ "options_misc_17": {
+ "message": "Tema chiaro"
+ },
+ "options_misc_18": {
+ "message": "Tema scuro"
+ },
+ "options_misc_19": {
+ "message": "Tema del sistema"
+ },
+ "options_plugins": {
+ "message": "Plug-ins"
+ },
+ "options_plugins_1": {
+ "message": "Etichette Gmail™ e pulsante a forma di stella (sperimentale)"
+ },
+ "options_plugins_2": {
+ "message": "Questo plugin visualizza il pulsante della stella e le etichette delle discussioni nel popup (solo in modalità estesa)."
+ },
+ "options_styling": {
+ "message": "Stile"
+ },
+ "options_styling_0": {
+ "message": "Scala la visualizzazione dell'e-mail di (0,5-4)"
+ },
+ "options_styling_1": {
+ "message": "Regole CSS personalizzate per il pannello superiore"
+ },
+ "options_styling_2": {
+ "message": "Regole CSS personalizzate per la visualizzazione delle e-mail"
+ },
+ "options_px": {
+ "message": "px"
+ },
+ "options_empty": {
+ "message": "non definito"
+ },
+ "options_button_test": {
+ "message": "Riproduzione del suono ►"
+ },
+ "options_button_reset": {
+ "message": "Reimpostare le preferenze"
+ },
+ "popup_settings": {
+ "message": "Impostazioni"
+ },
+ "popup_of": {
+ "message": "of"
+ },
+ "popup_wait": {
+ "message": "Attendere..."
+ },
+ "popup_date_format": {
+ "message": "%mm %dd, %yy"
+ },
+ "popup_no_subject": {
+ "message": "(senza soggetto)"
+ },
+ "popup_open_settings": {
+ "message": "Aprire impostazioni"
+ },
+ "popup_open_inbox": {
+ "message": "Aprire la posta in arrivo"
+ },
+ "popup_archive": {
+ "message": "Archivia"
+ },
+ "popup_spam": {
+ "message": "Spam"
+ },
+ "popup_trash": {
+ "message": "Cestina"
+ },
+ "popup_refresh": {
+ "message": "Aggiorna"
+ },
+ "popup_read": {
+ "message": "Segna come letto"
+ },
+ "popup_read_all": {
+ "message": "Segna tutte come letto"
+ },
+ "popup_toggle_dark": {
+ "message": "Attiva e disattiva il tema scuro"
+ },
+ "popup_msg_1": {
+ "message": "solo ora"
+ },
+ "popup_msg_2": {
+ "message": "1 minuto fa"
+ },
+ "popup_msg_3_format": {
+ "message": "%d minuti fa"
+ },
+ "popup_msg_4": {
+ "message": "1 ora fa"
+ },
+ "popup_msg_5": {
+ "message": "ore fa"
+ },
+ "popup_msg_6": {
+ "message": "Ieri"
+ },
+ "popup_msg_7_format": {
+ "message": "%d giorni fa"
+ },
+ "popup_msg_8_format": {
+ "message": "%d settimana/e fa"
+ },
+ "popup_msg_9_format": {
+ "message": "%d mese/i fa"
+ },
+ "popup_msg_10": {
+ "message": "Gennaio"
+ },
+ "popup_msg_11": {
+ "message": "Febbraio"
+ },
+ "popup_msg_12": {
+ "message": "Marzo"
+ },
+ "popup_msg_13": {
+ "message": "Aprile"
+ },
+ "popup_msg_14": {
+ "message": "Maggio"
+ },
+ "popup_msg_15": {
+ "message": "Giugno"
+ },
+ "popup_msg_16": {
+ "message": "Luglio"
+ },
+ "popup_msg_17": {
+ "message": "Agosto"
+ },
+ "popup_msg_18": {
+ "message": "Settembre"
+ },
+ "popup_msg_19": {
+ "message": "Ottobre"
+ },
+ "popup_msg_20": {
+ "message": "Novembre"
+ },
+ "popup_msg_21": {
+ "message": "Dicembre"
+ },
+ "settings_open_title": {
+ "message": "Aprire la pagina delle opzioni (impostazioni)"
+ },
+ "settings_open_label": {
+ "message": "Aprire opzioni"
+ }
+}
diff --git a/v3.classic/_locales/ja/messages.json b/v3.classic/_locales/ja/messages.json
new file mode 100644
index 00000000..9a6b36d2
--- /dev/null
+++ b/v3.classic/_locales/ja/messages.json
@@ -0,0 +1,590 @@
+{
+ "gmail": {
+ "message": "Notifier for Gmail™"
+ },
+ "toolbar_label": {
+ "message": "Notifier for Gmail™"
+ },
+ "description": {
+ "message": "Googleメール (Gmail™) の複数のラベルとアカウント通知機能"
+ },
+ "log_in_to_your_account": {
+ "message": "Gmail™アカウントにログインして下さい"
+ },
+ "msg_1": {
+ "message": "タブはすでに開いています。ツールバー ボタンをクリックして、Gmail™ を新しいタブで開くか、既存の Gmail™ タブに切り替えてください。"
+ },
+ "msg_2": {
+ "message": "リンクがクリップボードにコピーされます。"
+ },
+ "msg_3": {
+ "message": "選択したテキストがクリップボードにコピーされます。"
+ },
+ "msg_4": {
+ "message": "通知機能が正しく動作するには、Google アカウントにログインする必要があります。"
+ },
+ "msg_5": {
+ "message": "音声ファイルを選択"
+ },
+ "label_1": {
+ "message": "更新"
+ },
+ "label_2": {
+ "message": "設定"
+ },
+ "label_3": {
+ "message": "すべての通知を無効にする"
+ },
+ "label_4": {
+ "message": "5分間"
+ },
+ "label_5": {
+ "message": "15分間"
+ },
+ "label_6": {
+ "message": "30分間"
+ },
+ "label_7": {
+ "message": "1時間"
+ },
+ "label_8": {
+ "message": "2時間"
+ },
+ "label_9": {
+ "message": "5時間"
+ },
+ "label_13": {
+ "message": "カスタム期間"
+ },
+ "label_10": {
+ "message": "通知を有効にする(セッション)"
+ },
+ "label_11": {
+ "message": "メールを作成する"
+ },
+ "label_12": {
+ "message": "よくある質問"
+ },
+ "label_14": {
+ "message": "ログインしたアカウント"
+ },
+ "unknown": {
+ "message": "不明"
+ },
+ "and": {
+ "message": "と"
+ },
+ "log_into_your_account": {
+ "message": "アカウントにログインしてください"
+ },
+ "notification": {
+ "message": "From: [author_email][break] 件名: [title][break] Summary: [summary]"
+ },
+ "options_title": {
+ "message": "オプション ページ - Gmail™ Notifier"
+ },
+ "options_inshort": {
+ "message": "Google メール (Gmail™) 用の複数のラベルとアカウント通知機能。"
+ },
+ "options_donation": {
+ "message": "開発サポート$"
+ },
+ "options_timings": {
+ "message": "タイミング"
+ },
+ "options_timings_l1": {
+ "message": "新しいメールを確認する間隔 (秒単位):"
+ },
+ "options_timings_l2": {
+ "message": "最小期間は10秒です。"
+ },
+ "options_timings_l3": {
+ "message": "すべての未読メールを次の間隔で通知します (分単位):"
+ },
+ "options_timings_l4": {
+ "message": "定期的でないリマインダーの場合は値を 0 に設定します"
+ },
+ "options_timings_l5": {
+ "message": "最短期間は5分です。"
+ },
+ "options_timings_l6": {
+ "message": "値がゼロ以外の場合、未読メールがある場合、デスクトップ通知と警告音(新しいメールの到着に類似)の両方が永続的に鳴り続けます。"
+ },
+ "options_timings_l7": {
+ "message": "起動時に新しいメールをチェックしない時間(秒数):"
+ },
+ "options_timings_l8": {
+ "message": "最初の手動更新までメールをチェックしない場合は、値を 0 に設定します [Safari では使用できません]。"
+ },
+ "options_gmail": {
+ "message": "Gmail™"
+ },
+ "options_gmail_1": {
+ "message": "プライマリ アカウント (/mail/u/0/)"
+ },
+ "options_gmail_2": {
+ "message": "ラベルは「,」(カンマ)で区切ります。"
+ },
+ "options_gmail_3": {
+ "message": "第2アカウント (/mail/u/1/)"
+ },
+ "options_gmail_4": {
+ "message": "第3アカウント (/mail/u/2/)"
+ },
+ "options_gmail_5": {
+ "message": "第4アカウント (/mail/u/3/)"
+ },
+ "options_gmail_6": {
+ "message": "第5アカウント (/mail/u/4/)"
+ },
+ "options_gmail_7": {
+ "message": "第6アカウント (/mail/u/5/)"
+ },
+ "options_gmail_8": {
+ "message": "メッセージをアーカイブするときに既読にする"
+ },
+ "options_gmail_15": {
+ "message": "人気のあるラベル:"
+ },
+ "options_gmail_10": {
+ "message": "次のラベルとアカウントの通知を受信します:"
+ },
+ "options_gmail_11": {
+ "message": "カスタムフィード:"
+ },
+ "options_gmail_12": {
+ "message": "フィードは「,」(カンマ)で区切ります。サンプル フィード: https://mail.google.com/mail/u/0/feed/atom/inbox"
+ },
+ "options_gmail_13": {
+ "message": "注: 「受信トレイ」を除くすべてのラベルの最大数は 20 です (Google フィードは最新の 20 件のエントリのみを提供します)"
+ },
+ "options_gmail_14": {
+ "message": "注: 通知機能が 5 つ以上のアカウントをリッスンするには、「カスタム フィード」フィールドにフィード URL を追加します。たとえば、6 番目と 7 番目のアカウントをリッスンするには、https://mail.google.com/mail/u/6/feed/atom/inbox、https://mail.google.com/mail/u/7/feed/atom/inbox を追加します。"
+ },
+ "options_notifications": {
+ "message": "通知"
+ },
+ "options_notifications_1": {
+ "message": "新しいメールのデスクトップ通知を表示する"
+ },
+ "options_notifications_2": {
+ "message": "デスクトップ通知を表示する時間 (秒):"
+ },
+ "options_notifications_3": {
+ "message": "このオプションは、OS によっては機能しない場合があります。"
+ },
+ "options_notifications_4": {
+ "message": "通知フォーマット"
+ },
+ "options_notifications_5": {
+ "message": "利用可能な変数:"
+ },
+ "options_notifications_6": {
+ "message": "通知を切り捨てる長さ"
+ },
+ "options_notifications_7": {
+ "message": "[件名] および [summary] フィールドの文字。"
+ },
+ "options_notifications_8": {
+ "message": "省略記号を切り捨てないようにするには、ここで大きな数値を使用します。"
+ },
+ "options_notifications_9": {
+ "message": "新着メールの通知音を鳴らす"
+ },
+ "options_notifications_10": {
+ "message": "Mac ユーザーへの注意: Firefox バージョン 28.0 以降、すべてのデスクトップ通知は Mac 通知センターによって処理され、追加のサウンド アラートが発生します。このサウンド通知または通知センターによって生成されるサウンド通知のいずれかのチェックを外す必要があります。"
+ },
+ "options_notifications_11": {
+ "message": "「Windows™ タスクバー通知」または「Mac OS Dock 通知」を表示します"
+ },
+ "options_notifications_12": {
+ "message": "現時点では、タスクバー通知は Linux OS ではサポートされていません。"
+ },
+ "options_notifications_13": {
+ "message": "タスクバーの通知アイコンをクリックするとツールバー パネルが開きます (Windows™ のみ、ベータ版)"
+ },
+ "options_notifications_14": {
+ "message": "この機能は極めて実験的なもので、Firefox ブラウザが不安定になる可能性があります。[再起動が必要です]。"
+ },
+ "options_notifications_15": {
+ "message": "デフォルトのサウンド通知:"
+ },
+ "options_notifications_16": {
+ "message": "Gmail™ 通知のデフォルトアラート"
+ },
+ "options_notifications_17": {
+ "message": "Checker Plus ベルアラート"
+ },
+ "options_notifications_18": {
+ "message": "Checker Plus ding アラート"
+ },
+ "options_notifications_19": {
+ "message": "Windows™ Eメールアラート"
+ },
+ "options_notifications_20": {
+ "message": "ユーザー定義のサウンド"
+ },
+ "options_notifications_21": {
+ "message": "ユーザー定義の通知音:"
+ },
+ "options_notifications_22": {
+ "message": "ブラウザでカスタム通知音が再生されない場合は、オンライン変換ツールを使用して、プレーンな WAV 形式に変換してみてください。"
+ },
+ "options_notifications_35": {
+ "message": "新しいカスタムサウンドを選択するには、まず組み込みサウンドを選択し、オプションをカスタムサウンドに変更します。"
+ },
+ "options_notifications_23": {
+ "message": "サウンド通知の音量(%):"
+ },
+ "options_notifications_24": {
+ "message": "音量は 0 ~ 100 の数値で、100 が最高音量です (デフォルト)。"
+ },
+ "options_notifications_25": {
+ "message": "Safari では、デフォルトのサウンド通知が正しく再生されない可能性が高いため、その場合は通知としてカスタム サウンド ファイルを使用してください。"
+ },
+ "options_notifications_26": {
+ "message": "トレイ通知を常に表示する (Windows™ のみ)"
+ },
+ "options_notifications_27": {
+ "message": "未読メッセージがない場合でもトレイ通知が表示されます。"
+ },
+ "options_notifications_28": {
+ "message": "カスタム期間(分単位)のすべての通知を無効にします。"
+ },
+ "options_notifications_29": {
+ "message": "このオプションは、ツールバー ボタンの右クリック メニュー -> すべての通知を無効にする -> カスタム期間に関連しています。"
+ },
+ "options_notifications_30": {
+ "message": "すべての同時デスクトップ通知を1つの通知にまとめる"
+ },
+ "options_notifications_31": {
+ "message": "カスタムサウンド通知"
+ },
+ "options_notifications_32": {
+ "message": "名前またはメールアドレス"
+ },
+ "options_notifications_33": {
+ "message": "メールの件名"
+ },
+ "options_notifications_34": {
+ "message": "メールの概要"
+ },
+ "options_notifications_36": {
+ "message": "Gmail™ に「inbox.google.com」へのリダイレクトを防止するよう依頼する"
+ },
+ "options_notifications_37": {
+ "message": "バッジに未読メール数を表示する(バッジの色を選択)"
+ },
+ "options_notifications_38": {
+ "message": "より高速なアクション(既読としてマーク、削除など)(ヘッダーを受信したときに解決されるアクションを検討してください)"
+ },
+ "options_notifications_40": {
+ "message": "通知ボックスからのクイックアクションを許可する(最大 2 つのアクション、Chrome のみ)"
+ },
+ "options_notifications_41": {
+ "message": "既読にする"
+ },
+ "options_notifications_42": {
+ "message": "アーカイブ"
+ },
+ "options_notifications_43": {
+ "message": "ゴミ箱"
+ },
+ "options_tab": {
+ "message": "タブを開く"
+ },
+ "options_tab_1": {
+ "message": "アクティブなウィンドウでのみ、開いている Gmail™ アカウントを検索します"
+ },
+ "options_tab_2": {
+ "message": "開いている Gmail™ アカウントを他のブラウザ ウィンドウで検索しないでください。アクティブ ウィンドウで Gmail™ が開いていない場合は、新しいタブを開きます。"
+ },
+ "options_tab_3": {
+ "message": "アクティブなタブの横に新しいGmail™アカウントを開く"
+ },
+ "options_tab_4": {
+ "message": "アクティブなタブでGmail™アカウントを開く"
+ },
+ "options_tab_5": {
+ "message": "Gmail™アカウントをバックグラウンドタブで開く"
+ },
+ "options_tab_6": {
+ "message": "Gmail™アカウントを新しいウィンドウで開く"
+ },
+ "options_tab_7": {
+ "message": "タブで開くが有効になっている場合は、新しいタブを開くのではなく、常に空のタブを使用します。"
+ },
+ "options_tab_8": {
+ "message": "開いている Gmail™ タブを無視する"
+ },
+ "options_tab_9": {
+ "message": "チェックされている場合、通知機能はメールを新しいブラウザ タブで開きます。チェックされていない場合は、まずアクティブ ウィンドウで既存の Gmail™ タブを検索し、そのタブに切り替えます。見つからない場合は、新しいタブを開く前に、開いている他のウィンドウを検索します。"
+ },
+ "options_tab_10": {
+ "message": "基本的なHTMLモードでメールを開く"
+ },
+ "options_tab_11": {
+ "message": "未読メールのタイトルをクリックすると、Gmail™ は INBOX フォルダではなくメール自体を開きます。"
+ },
+ "options_toolbar": {
+ "message": "ツールバー"
+ },
+ "options_toolbar_1": {
+ "message": "ツールバーボタンの動作"
+ },
+ "options_toolbar_2": {
+ "message": "メールプレビューパネルを常に開く"
+ },
+ "options_toolbar_3": {
+ "message": "ログインしているアカウントが 1 つだけの場合は Gmail™ アカウントを開きます"
+ },
+ "options_toolbar_18": {
+ "message": "Gmail™ アカウントを開く (強制)"
+ },
+ "options_toolbar_4": {
+ "message": "ツールバーパネルモード"
+ },
+ "options_toolbar_5": {
+ "message": "概要のみ表示"
+ },
+ "options_toolbar_6": {
+ "message": "全コンテンツを表示"
+ },
+ "options_toolbar_7": {
+ "message": "フルコンテンツ表示モードでのツールバー パネルの幅 (ピクセル単位):"
+ },
+ "options_toolbar_8": {
+ "message": "最小幅は500ピクセルです。"
+ },
+ "options_toolbar_9": {
+ "message": "フルコンテンツ表示モードでのツールバー パネルの高さ (ピクセル単位):"
+ },
+ "options_toolbar_10": {
+ "message": "最小の高さは500ピクセルです。"
+ },
+ "options_toolbar_11": {
+ "message": "ツールバーパネルでキーボードショートカットをサポート"
+ },
+ "options_toolbar_12": {
+ "message": "スパムとして報告: 、ゴミ箱: <#>、アーカイブ: 1、既読にする: 。"
+ },
+ "options_toolbar_13": {
+ "message": "フルコンテンツモードでメールをHTMLとしてレンダリングする"
+ },
+ "options_toolbar_14": {
+ "message": "フルコンテンツ モードでテキストのみのレンダリングを希望する場合は、ボックスのチェックを外します。"
+ },
+ "options_toolbar_15": {
+ "message": "ツールバーボタンを中クリックすると"
+ },
+ "options_toolbar_16": {
+ "message": "すべてのアカウントを更新"
+ },
+ "options_toolbar_17": {
+ "message": "メインのGmail™アカウントを開く"
+ },
+ "options_misc": {
+ "message": "その他"
+ },
+ "options_misc_1": {
+ "message": "アカウントをアルファベット順に並べ替える"
+ },
+ "options_misc_2": {
+ "message": "デフォルトのオーダーはログインです。"
+ },
+ "options_misc_3": {
+ "message": "ツールバーボタンのカラーパターン:"
+ },
+ "options_misc_4": {
+ "message": "「未読なし」は灰色、「切断」は青色"
+ },
+ "options_misc_5": {
+ "message": "「未読なし」は青色、「切断」は灰色"
+ },
+ "options_misc_9": {
+ "message": "未読なし」は赤色、「切断」は灰色"
+ },
+ "options_misc_6": {
+ "message": "Gmail™ がアクティブなタブで既に開かれていることを警告するデスクトップ通知を表示します"
+ },
+ "options_misc_7": {
+ "message": "アップグレード時にウェルカムページを表示する"
+ },
+ "options_misc_8": {
+ "message": "すべての設定を工場出荷時の状態に戻す"
+ },
+ "options_misc_10": {
+ "message": "メールが次の時間 (分単位) 以内に到着した場合にのみ、デスクトップ通知とサウンド通知を起動します:"
+ },
+ "options_misc_11": {
+ "message": "この設定をゼロに設定すると、デスクトップ通知もサウンド通知も受信されなくなりますが、バッジ通知は引き続き受信されます。"
+ },
+ "options_misc_12": {
+ "message": "ツールチップテキストにログイン詳細を含めないでください"
+ },
+ "options_misc_13": {
+ "message": "デフォルトでは、通知機能はツールバー ボタンのツールチップ テキストをログイン情報で更新します。このオプションをオフにすると、ツールチップ テキストはデフォルト値のままになります。"
+ },
+ "options_misc_14": {
+ "message": "未読メールの数が 999 を超える場合、正確なバッジ番号を表示しない"
+ },
+ "options_misc_15": {
+ "message": "アップデートに関するFAQページを開く"
+ },
+ "options_misc_16": {
+ "message": "パネルのカラーテーマ:"
+ },
+ "options_misc_17": {
+ "message": "ライトテーマ"
+ },
+ "options_misc_18": {
+ "message": "ダークテーマ"
+ },
+ "options_misc_19": {
+ "message": "システムテーマ"
+ },
+ "options_plugins": {
+ "message": "プラグイン"
+ },
+ "options_plugins_1": {
+ "message": "Gmail™ ラベルとスターボタン (試験的)"
+ },
+ "options_plugins_2": {
+ "message": "このプラグインは、ポップアップにスターボタンとスレッドのラベルを表示します (拡張モードのみ)。"
+ },
+ "options_styling": {
+ "message": "スタイリング"
+ },
+ "options_styling_0": {
+ "message": "メールの表示を(0.5~4)で拡大する"
+ },
+ "options_styling_1": {
+ "message": "トップパネルのカスタム CSS ルール"
+ },
+ "options_styling_2": {
+ "message": "メールビューのカスタム CSS ルール"
+ },
+ "options_px": {
+ "message": "px"
+ },
+ "options_empty": {
+ "message": "未定義"
+ },
+ "options_button_test": {
+ "message": "サウンドを再生する ►"
+ },
+ "options_button_reset": {
+ "message": "設定をリセット"
+ },
+ "popup_settings": {
+ "message": "設定"
+ },
+ "popup_of": {
+ "message": "of"
+ },
+ "popup_wait": {
+ "message": "Wait..."
+ },
+ "popup_date_format": {
+ "message": "%mm %dd, %yy"
+ },
+ "popup_no_subject": {
+ "message": "(件名なし)"
+ },
+ "popup_open_settings": {
+ "message": "設定を開く"
+ },
+ "popup_open_inbox": {
+ "message": "受信トレイを開く"
+ },
+ "popup_archive": {
+ "message": "アーカイブ"
+ },
+ "popup_spam": {
+ "message": "スパム"
+ },
+ "popup_trash": {
+ "message": "ゴミ箱"
+ },
+ "popup_refresh": {
+ "message": "更新"
+ },
+ "popup_read": {
+ "message": "既読にする"
+ },
+ "popup_read_all": {
+ "message": "すべて既読にする"
+ },
+ "popup_toggle_dark": {
+ "message": "ダークテーマのオン/オフを切り替え"
+ },
+ "popup_msg_1": {
+ "message": "ちょうど今"
+ },
+ "popup_msg_2": {
+ "message": "1 分前"
+ },
+ "popup_msg_3_format": {
+ "message": "%d 分前"
+ },
+ "popup_msg_4": {
+ "message": "1 時間前"
+ },
+ "popup_msg_5": {
+ "message": "数時間前"
+ },
+ "popup_msg_6": {
+ "message": "昨日"
+ },
+ "popup_msg_7_format": {
+ "message": "%d 日前"
+ },
+ "popup_msg_8_format": {
+ "message": "%d 週間前"
+ },
+ "popup_msg_9_format": {
+ "message": "%d か月前"
+ },
+ "popup_msg_10": {
+ "message": "1月"
+ },
+ "popup_msg_11": {
+ "message": "2月"
+ },
+ "popup_msg_12": {
+ "message": "3月"
+ },
+ "popup_msg_13": {
+ "message": "4月"
+ },
+ "popup_msg_14": {
+ "message": "5月"
+ },
+ "popup_msg_15": {
+ "message": "6月"
+ },
+ "popup_msg_16": {
+ "message": "7月"
+ },
+ "popup_msg_17": {
+ "message": "8月"
+ },
+ "popup_msg_18": {
+ "message": "9月"
+ },
+ "popup_msg_19": {
+ "message": "10月"
+ },
+ "popup_msg_20": {
+ "message": "11月"
+ },
+ "popup_msg_21": {
+ "message": "12月"
+ },
+ "settings_open_title": {
+ "message": "オプション(設定)ページを開く"
+ },
+ "settings_open_label": {
+ "message": "オプションを開く"
+ }
+}
diff --git a/v3.classic/_locales/nl/messages.json b/v3.classic/_locales/nl/messages.json
new file mode 100644
index 00000000..6dc380e4
--- /dev/null
+++ b/v3.classic/_locales/nl/messages.json
@@ -0,0 +1,762 @@
+{
+ "toolbar_label": {
+ "message": "Gmail-melder™",
+ "description": ""
+ },
+ "tooltip_1": {
+ "message": "Linksklikken: Gmail of het e-mailvoorvertoningspaneel openen",
+ "description": ""
+ },
+ "tooltip_2": {
+ "message": "Middelklikken (of Ctrl+pijltje naar links): alle accounts verversen",
+ "description": ""
+ },
+ "tooltip_3": {
+ "message": "Rechtsklikken: accountselectie",
+ "description": ""
+ },
+ "description": {
+ "message": "Label- en accountmelder voor Google Mail (Gmail)",
+ "description": ""
+ },
+ "log_in_to_your_account": {
+ "message": "Log in op uw Gmail-account",
+ "description": ""
+ },
+ "msg_1": {
+ "message": "Het tabblad is al geopend. Klik op de werkbalkknop om Gmail op een nieuw tabblad te openen of naar een geopend Gmail-tabblad te gaan.",
+ "description": ""
+ },
+ "msg_2": {
+ "message": "De link is gekopieerd naar het klembord.",
+ "description": ""
+ },
+ "msg_3": {
+ "message": "De selectie is gekopieerd naar het klembord.",
+ "description": ""
+ },
+ "msg_4": {
+ "message": "Let op: om de melder naar behoren te laten werken dient u ingelogd te zijn op uw Google-account.",
+ "description": ""
+ },
+ "msg_5": {
+ "message": "Kies een audiobestand",
+ "description": ""
+ },
+ "label_1": {
+ "message": "Verversen",
+ "description": ""
+ },
+ "label_2": {
+ "message": "Instellingen",
+ "description": ""
+ },
+ "label_3": {
+ "message": "Alle meldingen uitschakelen",
+ "description": ""
+ },
+ "label_4": {
+ "message": "5 minuten",
+ "description": ""
+ },
+ "label_5": {
+ "message": "15 minuten",
+ "description": ""
+ },
+ "label_6": {
+ "message": "30 minuten",
+ "description": ""
+ },
+ "label_7": {
+ "message": "1 uur",
+ "description": ""
+ },
+ "label_8": {
+ "message": "2 uur",
+ "description": ""
+ },
+ "label_9": {
+ "message": "5 uur",
+ "description": ""
+ },
+ "label_13": {
+ "message": "Voor een aangepaste tijdsperiode",
+ "description": ""
+ },
+ "label_10": {
+ "message": "Meldingen tonen (sessie)",
+ "description": ""
+ },
+ "label_11": {
+ "message": "E-mail opstellen",
+ "description": ""
+ },
+ "label_12": {
+ "message": "Veelgestelde vragen (FAQ) openen",
+ "description": ""
+ },
+ "label_14": {
+ "message": "Ingelogde accounts",
+ "description": ""
+ },
+ "unknown": {
+ "message": "onbekend",
+ "description": ""
+ },
+ "and": {
+ "message": "en",
+ "description": ""
+ },
+ "log_into_your_account": {
+ "message": "Log in op uw account",
+ "description": ""
+ },
+ "notification": {
+ "message": "Van: [author_email][break]Onderwerp: [title][break]Samenvatting: [summary]",
+ "description": ""
+ },
+ "options_title": {
+ "message": "Instellingen - Gmail™-melder",
+ "description": ""
+ },
+ "options_inshort": {
+ "message": "Label- en accountmelder voor Google Mail (Gmail)",
+ "description": ""
+ },
+ "options_donation": {
+ "message": "Ondersteun de ontwikkeling",
+ "description": ""
+ },
+ "options_timings": {
+ "message": "Tijdstippen:",
+ "description": ""
+ },
+ "options_timings_l1": {
+ "message": "Op nieuwe e-mails controleren, elke (in seconden):",
+ "description": ""
+ },
+ "options_timings_l2": {
+ "message": "De minimale tijdsduur is 10 seconden.",
+ "description": ""
+ },
+ "options_timings_l3": {
+ "message": "Herinnering voor alle ongelezen e-mails, elke (in minuten):",
+ "description": ""
+ },
+ "options_timings_l4": {
+ "message": "Stel de waarde in op nul voor geen herinneringen te tonen.",
+ "description": ""
+ },
+ "options_timings_l5": {
+ "message": "De minimale tijdsduur is 5 minuten.",
+ "description": ""
+ },
+ "options_timings_l6": {
+ "message": "Een waarde hoger dan nul zorgt voor constante meldingen en waarschuwingsgeluiden (vergelijkbaar met het arriveren van een nieuwe e-mail) als u ongelezen e-mail(s) hebt.",
+ "description": ""
+ },
+ "options_timings_l7": {
+ "message": "Niet controleren op nieuwe e-mails bij opstarten voor de duur van (in seconden):",
+ "description": ""
+ },
+ "options_timings_l8": {
+ "message": "Stel de waarde op nul in om geen e-mailcontrole uit te voeren zolang er nog geen handmatige verversing is uitgevoerd [niet beschikbaar in Safari].",
+ "description": ""
+ },
+ "options_gmail": {
+ "message": "Gmail:",
+ "description": ""
+ },
+ "options_gmail_1": {
+ "message": "Hoofdaccount (/mail/u/0/)",
+ "description": ""
+ },
+ "options_gmail_2": {
+ "message": "Scheid labels met “,” (komma's).",
+ "description": ""
+ },
+ "options_gmail_3": {
+ "message": "Tweede account (/mail/u/1)",
+ "description": ""
+ },
+ "options_gmail_4": {
+ "message": "Derde account (/mail/u/2)",
+ "description": ""
+ },
+ "options_gmail_5": {
+ "message": "Vierde account (/mail/u/3)",
+ "description": ""
+ },
+ "options_gmail_6": {
+ "message": "Vijfde account (/mail/u/4)",
+ "description": ""
+ },
+ "options_gmail_7": {
+ "message": "Zesde account (/mail/u/5)",
+ "description": ""
+ },
+ "options_gmail_8": {
+ "message": "Berichten als gelezen markeren na archiveren",
+ "description": ""
+ },
+ "options_gmail_15": {
+ "message": "Enkele veelgebruikte labels:",
+ "description": ""
+ },
+ "options_gmail_10": {
+ "message": "Meldingen tonen voor de volgende labels en accounts:",
+ "description": ""
+ },
+ "options_gmail_11": {
+ "message": "Aangepaste feeds:",
+ "description": ""
+ },
+ "options_gmail_12": {
+ "message": "Scheid feeds met komma's (“,”). Voorbeeldfeed: https://mail.google.com/mail/u/0/feed/atom/inbox",
+ "description": ""
+ },
+ "options_gmail_13": {
+ "message": "Let op: het maximumaantal labels, m.u.v. ‘inbox’, is 20 (Google's feeds geven alleen de 20 nieuwste labels door)",
+ "description": ""
+ },
+ "options_gmail_14": {
+ "message": "Tip: als de melder meer dan 5 accounts in de gaten moet houden, voeg dan de feed-url's toe aan het ‘Aangepaste feeds’-veld. Voorbeeld: om account 6 en 7 in de gaten te houden, voeg toe: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox",
+ "description": ""
+ },
+ "options_notifications": {
+ "message": "Meldingen:",
+ "description": ""
+ },
+ "options_notifications_1": {
+ "message": "Bureaubladmeldingen tonen bij nieuwe e-mails",
+ "description": ""
+ },
+ "options_notifications_2": {
+ "message": "Bureaubladmeldingen tonen voor de duur van (in seconden):",
+ "description": ""
+ },
+ "options_notifications_3": {
+ "message": "Deze instelling werkt mogelijk niet op alle besturingssystemen.",
+ "description": ""
+ },
+ "options_notifications_4": {
+ "message": "Meldingopmaak",
+ "description": ""
+ },
+ "options_notifications_5": {
+ "message": "Beschikbare variabelen:",
+ "description": ""
+ },
+ "options_notifications_6": {
+ "message": "Meldingen inkorten die langer zijn dan",
+ "description": ""
+ },
+ "options_notifications_7": {
+ "message": "tekens voor [title]- en [summary]-velden",
+ "description": ""
+ },
+ "options_notifications_8": {
+ "message": "Voer hier een groot getal in om inkorting te voorkomen.",
+ "description": ""
+ },
+ "options_notifications_9": {
+ "message": "Meldingsgeluid afspelen bij nieuwe e-mails",
+ "description": ""
+ },
+ "options_notifications_10": {
+ "message": "Opmerking voor Mac-gebruikers: sinds Firefox 28.0 worden alle bureaubladmeldingen afgehandeld middels het macOS-berichtencentrum, welke een extra meldingsgeluid afspeelt. U moet ofwel deze optie uitschakelen ofwel de corresponderende optie in het macOS-berichtencentrum.",
+ "description": ""
+ },
+ "options_notifications_11": {
+ "message": "‘Windows-taakbalkmeldingen’/‘macOS-dockmeldingen’ tonen",
+ "description": ""
+ },
+ "options_notifications_12": {
+ "message": "Taakbalkmeldingen worden momenteel niet ondersteund op Linux-systemen.",
+ "description": ""
+ },
+ "options_notifications_13": {
+ "message": "Werkbalkpaneel openen na klikken op taakbalkmeldingspictogram (alleen Windows - bèta)",
+ "description": ""
+ },
+ "options_notifications_14": {
+ "message": "Deze optie is zeer experimenteel en kan mogelijk instabiliteit veroorzaken in Firefox. [herstart vereist]",
+ "description": ""
+ },
+ "options_notifications_15": {
+ "message": "Het standaard meldingsgeluid is",
+ "description": ""
+ },
+ "options_notifications_16": {
+ "message": "Standaardgeluid van Gmail-melder",
+ "description": ""
+ },
+ "options_notifications_17": {
+ "message": "Checker Plus-belgeluid",
+ "description": ""
+ },
+ "options_notifications_18": {
+ "message": "Checker Plus-dinggeluid",
+ "description": ""
+ },
+ "options_notifications_19": {
+ "message": "Windows-e-mailgeluid",
+ "description": ""
+ },
+ "options_notifications_20": {
+ "message": "Eigen geluid",
+ "description": ""
+ },
+ "options_notifications_21": {
+ "message": "Het eigen gekozen meldingsgeluid is",
+ "description": ""
+ },
+ "options_notifications_22": {
+ "message": "Als uw browser geen eigen meldingsgeluid afspeelt, probeer dan het bestand te converteren naar onbewerkt wav-formaat middels een online-converteerprogramma.",
+ "description": ""
+ },
+ "options_notifications_35": {
+ "message": "Om een nieuw aangepast geluid te gebruiken, dient u eerst een ingebouwd geluid te kiezen en deze te wijzigen naar een eigen geluid",
+ "description": ""
+ },
+ "options_notifications_23": {
+ "message": "Het volume van het meldingsgeluid is",
+ "description": ""
+ },
+ "options_notifications_24": {
+ "message": "Het volumeniveau is een getal tussen de 0 en 100 waar 100 het hoogste volumeniveau is (standaard).",
+ "description": ""
+ },
+ "options_notifications_25": {
+ "message": "Waarschijnlijk werken de standaard meldingsgeluiden niet goed in Safari. Als dit het geval is, moet u een eigen geluidsbestand kiezen.",
+ "description": ""
+ },
+ "options_notifications_26": {
+ "message": "Altijd systeemvakmeldingen tonen (alleen Windows)",
+ "description": ""
+ },
+ "options_notifications_27": {
+ "message": "Er wordt een systeemvakmelding getoond, zelfs als er geen ongelezen bericht is.",
+ "description": ""
+ },
+ "options_notifications_28": {
+ "message": "Schakelt alle meldingen uit voor een aangepaste tijdsperiode (in minuten):",
+ "description": ""
+ },
+ "options_notifications_29": {
+ "message": "Deze optie is gerelateerd aan het rechtermuisknopmenu op de werkbalkknop -> Alle meldingen uitschakelen -> Aangepaste tijdsperiode.",
+ "description": ""
+ },
+ "options_notifications_30": {
+ "message": "Alle bureaubladmeldingen samenvoegen tot één melding",
+ "description": ""
+ },
+ "options_notifications_31": {
+ "message": "Eigen geluidsmelding",
+ "description": ""
+ },
+ "options_notifications_32": {
+ "message": "naam of e-mailadres bevat",
+ "description": ""
+ },
+ "options_notifications_33": {
+ "message": "e-mailonderwerp bevat",
+ "description": ""
+ },
+ "options_notifications_34": {
+ "message": "e-mailsamenvatting bevat",
+ "description": ""
+ },
+ "options_notifications_36": {
+ "message": "Gmail vragen om doorverwijzing naar ‘inbox.google.com’ te voorkomen",
+ "description": ""
+ },
+ "options_notifications_37": {
+ "message": "Aantal e-mails op pictogram tonen",
+ "description": ""
+ },
+ "options_notifications_38": {
+ "message": "Snellere acties (markeren als gelezen, verwijderen, ...) (Acties beschouwen als voltooid zodra koppen ontvangen zijn)",
+ "description": ""
+ },
+ "options_notifications_40": {
+ "message": "Snelle acties toestaan vanuit meldingsgebied (maximaal twee acties - alleen Chrome)",
+ "description": ""
+ },
+ "options_notifications_41": {
+ "message": "Markeren als gelezen",
+ "description": ""
+ },
+ "options_notifications_42": {
+ "message": "Archiveren",
+ "description": ""
+ },
+ "options_notifications_43": {
+ "message": "Verpl. nr. prullenbak",
+ "description": ""
+ },
+ "options_tab": {
+ "message": "Tabblad openen:",
+ "description": ""
+ },
+ "options_tab_1": {
+ "message": "Alleen op het actieve venster zoeken naar een geopend Gmail-account",
+ "description": ""
+ },
+ "options_tab_2": {
+ "message": "Niet in andere browservensters zoeken naar geopende Gmail-accounts. Als Gmail niet is geopend in het actieve venster, wordt een nieuw tabblad geopend.",
+ "description": ""
+ },
+ "options_tab_3": {
+ "message": "Nieuw Gmail-account openen op tabblad naast actief tabblad",
+ "description": ""
+ },
+ "options_tab_4": {
+ "message": "Gmail-account openen op actief tabblad",
+ "description": ""
+ },
+ "options_tab_5": {
+ "message": "Gmail-account openen op achtergrondtabblad",
+ "description": ""
+ },
+ "options_tab_6": {
+ "message": "Gmail-account openen in nieuw venster",
+ "description": ""
+ },
+ "options_tab_7": {
+ "message": "Altijd blanco tabbladen gebruiken in plaats van een nieuw tabblad te openen als een tabblad is geactiveerd",
+ "description": ""
+ },
+ "options_tab_8": {
+ "message": "Geopende Gmail-tabbladen negeren",
+ "description": ""
+ },
+ "options_tab_9": {
+ "message": "Als dit niet is aangevinkt, dan zal Gmail-melder óf binnen het actieve venster óf binnen alle geopende vensters controleren of Gmail al geopend is. Daarna zal naar het actieve tabblad worden overgeschakeld (indien gewenst).",
+ "description": ""
+ },
+ "options_tab_10": {
+ "message": "E-mails opmaken met html",
+ "description": ""
+ },
+ "options_tab_11": {
+ "message": "Open de nieuwste ongelezen e-mail in plaats van de inbox-map",
+ "description": ""
+ },
+ "options_toolbar": {
+ "message": "Werkbalk:",
+ "description": ""
+ },
+ "options_toolbar_1": {
+ "message": "Gedrag van werkbalkknop",
+ "description": ""
+ },
+ "options_toolbar_2": {
+ "message": "E-mailvoorvertoningspaneel openen",
+ "description": ""
+ },
+ "options_toolbar_3": {
+ "message": "Gmail-account openen als er slechts één account is ingelogd",
+ "description": ""
+ },
+ "options_toolbar_18": {
+ "message": "Gmail-account openen (afdwingen)",
+ "description": ""
+ },
+ "options_toolbar_4": {
+ "message": "Werkbalkpaneelmodus",
+ "description": ""
+ },
+ "options_toolbar_5": {
+ "message": "Samenvatting tonen",
+ "description": ""
+ },
+ "options_toolbar_6": {
+ "message": "Volledige inhoud tonen",
+ "description": ""
+ },
+ "options_toolbar_7": {
+ "message": "De breedte van het werkbalkpaneel in de volledige weergavemodus is (in pixels):",
+ "description": ""
+ },
+ "options_toolbar_8": {
+ "message": "De minimale breedte is 500px.",
+ "description": ""
+ },
+ "options_toolbar_9": {
+ "message": "De hoogte van het werkbalkpaneel in de volledige weergavemodus is (in pixels):",
+ "description": ""
+ },
+ "options_toolbar_10": {
+ "message": "De minimale hoogte is 500px.",
+ "description": ""
+ },
+ "options_toolbar_11": {
+ "message": "Sneltoetsen ondersteunen op het werkbalkpaneel",
+ "description": ""
+ },
+ "options_toolbar_12": {
+ "message": "!: Melden als spam, #:Verplaatsen naar prullenbak, e:Archiveren, Shift + i: Markeren als ongelezen.",
+ "description": ""
+ },
+ "options_toolbar_13": {
+ "message": "E-mails opmaken met html in volledige weergavemodus",
+ "description": ""
+ },
+ "options_toolbar_14": {
+ "message": "Schakel deze optie uit als u voorkeur geeft aan plattetekstopmaak in de volledige weergavemodus.",
+ "description": ""
+ },
+ "options_toolbar_15": {
+ "message": "Middelklikken op de werkbalkknop om",
+ "description": ""
+ },
+ "options_toolbar_16": {
+ "message": "Alle accounts te verversen",
+ "description": ""
+ },
+ "options_toolbar_17": {
+ "message": "Het primaire Gmail-account te openen",
+ "description": ""
+ },
+ "options_misc": {
+ "message": "Overig:",
+ "description": ""
+ },
+ "options_misc_1": {
+ "message": "Accounts alfabetisch sorteren",
+ "description": ""
+ },
+ "options_misc_2": {
+ "message": "De standaardsortering is sorteren op datum van inloggen.",
+ "description": ""
+ },
+ "options_misc_3": {
+ "message": "Het kleurenpatroon van de werkbalk is",
+ "description": ""
+ },
+ "options_misc_4": {
+ "message": "Grijze kleur bij ‘Geen ongelezen berichten’ en blauwe kleur bij ‘Niet verbonden’",
+ "description": ""
+ },
+ "options_misc_5": {
+ "message": "Blauwe kleur bij ‘Geen ongelezen berichten’ en grijze kleur bij ‘Niet verbonden’",
+ "description": ""
+ },
+ "options_misc_9": {
+ "message": "Rode kleur bij ‘Geen ongelezen berichten’ en grijze kleur bij ‘Niet verbonden’",
+ "description": ""
+ },
+ "options_misc_6": {
+ "message": "Bureaubladmelding tonen als Gmail al geopend is op het actieve tabblad",
+ "description": ""
+ },
+ "options_misc_7": {
+ "message": "Welkomstpagina tonen na updates",
+ "description": ""
+ },
+ "options_misc_8": {
+ "message": "Alle instellingen naar standaardwaarden herstellen",
+ "description": ""
+ },
+ "options_misc_10": {
+ "message": "Alleen bureaublad- en geluidsmeldingen ontvangen als een e-mail ontvangen is in minder dan (in minuten):",
+ "description": ""
+ },
+ "options_misc_11": {
+ "message": "Door deze instelling op nul te zetten ontvangt geen bureaublad- of geluidsmeldingen - u ziet echter nog wél de indicator op de knop.",
+ "description": ""
+ },
+ "options_misc_12": {
+ "message": "Geen inloggegevens in de tooltiptekst weergeven",
+ "description": ""
+ },
+ "options_misc_13": {
+ "message": "Standaard toont de melder inloggegevens op de hulpballon van de werkbalkknop. Door deze instelling uit te schakelen blijft de tekst op de standaardwaarde.",
+ "description": ""
+ },
+ "options_misc_14": {
+ "message": "Geen exact embleemgetal tonen als het aantal ongelezen e-mails meer is dan 999",
+ "description": ""
+ },
+ "options_misc_15": {
+ "message": "Veelgestelde vragen-pagina openen na updates",
+ "description": ""
+ },
+ "options_plugins": {
+ "message": "Plug-ins:",
+ "description": ""
+ },
+ "options_plugins_1": {
+ "message": "Gmail-labels en sterknop (experimenteel)",
+ "description": ""
+ },
+ "options_plugins_2": {
+ "message": "Deze plug-in toont de sterknop en onderwerplabels in de pop-up (alleen in de uitgeklapte modus).",
+ "description": ""
+ },
+ "options_px": {
+ "message": "px",
+ "description": ""
+ },
+ "options_empty": {
+ "message": "niet-opgegeven",
+ "description": ""
+ },
+ "options_button_test": {
+ "message": "Afspelen",
+ "description": ""
+ },
+ "options_button_reset": {
+ "message": "Standaardwaarden herstellen",
+ "description": ""
+ },
+ "popup_settings": {
+ "message": "Instellingen",
+ "description": ""
+ },
+ "popup_of": {
+ "message": "van",
+ "description": ""
+ },
+ "popup_wait": {
+ "message": "Even geduld…",
+ "description": ""
+ },
+ "popup_date_format": {
+ "message": "%dd %mm %yy",
+ "description": ""
+ },
+ "popup_no_subject": {
+ "message": "(geen onderwerp)",
+ "description": ""
+ },
+ "popup_open_settings": {
+ "message": "Instellingen openen",
+ "description": ""
+ },
+ "popup_open_inbox": {
+ "message": "Inbox openen",
+ "description": ""
+ },
+ "popup_archive": {
+ "message": "Archief",
+ "description": ""
+ },
+ "popup_spam": {
+ "message": "Spam",
+ "description": ""
+ },
+ "popup_trash": {
+ "message": "Prullenbak",
+ "description": ""
+ },
+ "popup_refresh": {
+ "message": "Verversen",
+ "description": ""
+ },
+ "popup_read": {
+ "message": "Markeren als gelezen",
+ "description": ""
+ },
+ "popup_read_all": {
+ "message": "Alles markeren als gelezen",
+ "description": ""
+ },
+ "popup_msg_1": {
+ "message": "zojuist",
+ "description": ""
+ },
+ "popup_msg_2": {
+ "message": "1 minuut geleden",
+ "description": ""
+ },
+ "popup_msg_3_format": {
+ "message": "%d minuten geleden",
+ "description": ""
+ },
+ "popup_msg_4": {
+ "message": "1 uur geleden",
+ "description": ""
+ },
+ "popup_msg_5": {
+ "message": "uur geleden",
+ "description": ""
+ },
+ "popup_msg_6": {
+ "message": "Gisteren",
+ "description": ""
+ },
+ "popup_msg_7_format": {
+ "message": "%d dagen geleden",
+ "description": ""
+ },
+ "popup_msg_8_format": {
+ "message": "%d week/weken geleden",
+ "description": ""
+ },
+ "popup_msg_9_format": {
+ "message": "%d maand(en) geleden",
+ "description": ""
+ },
+ "popup_msg_10": {
+ "message": "januari",
+ "description": ""
+ },
+ "popup_msg_11": {
+ "message": "februari",
+ "description": ""
+ },
+ "popup_msg_12": {
+ "message": "maart",
+ "description": ""
+ },
+ "popup_msg_13": {
+ "message": "april",
+ "description": ""
+ },
+ "popup_msg_14": {
+ "message": "mei",
+ "description": ""
+ },
+ "popup_msg_15": {
+ "message": "juni",
+ "description": ""
+ },
+ "popup_msg_16": {
+ "message": "juli",
+ "description": ""
+ },
+ "popup_msg_17": {
+ "message": "augustus",
+ "description": ""
+ },
+ "popup_msg_18": {
+ "message": "september",
+ "description": ""
+ },
+ "popup_msg_19": {
+ "message": "oktober",
+ "description": ""
+ },
+ "popup_msg_20": {
+ "message": "november",
+ "description": ""
+ },
+ "popup_msg_21": {
+ "message": "december",
+ "description": ""
+ },
+ "settings_open_title": {
+ "message": "Open de instellingenpagina",
+ "description": ""
+ },
+ "settings_open_label": {
+ "message": "Instellingen openen",
+ "description": ""
+ },
+ "gmail": {
+ "message": "Gmail-melder™",
+ "description": ""
+ }
+}
\ No newline at end of file
diff --git a/v3.classic/_locales/pl/messages.json b/v3.classic/_locales/pl/messages.json
new file mode 100644
index 00000000..ecc52345
--- /dev/null
+++ b/v3.classic/_locales/pl/messages.json
@@ -0,0 +1,762 @@
+{
+ "toolbar_label": {
+ "message": "Powiadomienia Gmail™",
+ "description": ""
+ },
+ "tooltip_1": {
+ "message": "LPM: Otwórz Gmail lub panel podglądu wiadomości",
+ "description": ""
+ },
+ "tooltip_2": {
+ "message": "Kółko myszy (lub Ctrl+LPM): Odśwież wszystkie konta",
+ "description": ""
+ },
+ "tooltip_3": {
+ "message": "PPM: Wybór kont",
+ "description": ""
+ },
+ "description": {
+ "message": "Etykiety i powiadomienia kont dla Poczty Google (Gmail)",
+ "description": ""
+ },
+ "log_in_to_your_account": {
+ "message": "Proszę się zalogować do konta Gmail",
+ "description": ""
+ },
+ "msg_1": {
+ "message": "Karta jest już otworzona. Naciśnij na przycisku paska narzędzi, aby otworzyć Gmail w nowej karcie lub aby przełączyć się na istniejącą kartę Gmail.",
+ "description": ""
+ },
+ "msg_2": {
+ "message": "Link został skopiowany do schowka.",
+ "description": ""
+ },
+ "msg_3": {
+ "message": "Zaznaczony tekst został skopiowany do schowka.",
+ "description": ""
+ },
+ "msg_4": {
+ "message": "Informacja: Aby powiadomienia działały poprawnie, musisz być zalogowany do swojego konta Google.",
+ "description": ""
+ },
+ "msg_5": {
+ "message": "Wybierz plik z dźwiękiem audio",
+ "description": ""
+ },
+ "label_1": {
+ "message": "Odśwież",
+ "description": ""
+ },
+ "label_2": {
+ "message": "Ustawienia",
+ "description": ""
+ },
+ "label_3": {
+ "message": "Wyłącz wszystkie powiadomienia",
+ "description": ""
+ },
+ "label_4": {
+ "message": "Przez 5 minut",
+ "description": ""
+ },
+ "label_5": {
+ "message": "Przez 15 minut",
+ "description": ""
+ },
+ "label_6": {
+ "message": "Przez 30 minut",
+ "description": ""
+ },
+ "label_7": {
+ "message": "Przez godzinę",
+ "description": ""
+ },
+ "label_8": {
+ "message": "Przez 2 godziny",
+ "description": ""
+ },
+ "label_9": {
+ "message": "Przez 5 godzin",
+ "description": ""
+ },
+ "label_13": {
+ "message": "Na własny odstęp czasowy",
+ "description": ""
+ },
+ "label_10": {
+ "message": "Włącz powiadomienia (dla sesji)",
+ "description": ""
+ },
+ "label_11": {
+ "message": "Stwórz wiadomość",
+ "description": ""
+ },
+ "label_12": {
+ "message": "Otwórz FAQ",
+ "description": ""
+ },
+ "label_14": {
+ "message": "Zalogowane konta",
+ "description": ""
+ },
+ "unknown": {
+ "message": "nieznane",
+ "description": ""
+ },
+ "and": {
+ "message": "i",
+ "description": ""
+ },
+ "log_into_your_account": {
+ "message": "Proszę się zalogować do swojego konta",
+ "description": ""
+ },
+ "notification": {
+ "message": "Od: [author_email][break]Tytuł: [title][break]Streszczenie: [summary]",
+ "description": ""
+ },
+ "options_title": {
+ "message": "Opcje - Powiadomienia Gmail™",
+ "description": ""
+ },
+ "options_inshort": {
+ "message": "Etykiety i powiadomienia kont dla Poczty Google (Gmail).",
+ "description": ""
+ },
+ "options_donation": {
+ "message": "Wspomóż rozwój programu",
+ "description": ""
+ },
+ "options_timings": {
+ "message": "Czasowe:",
+ "description": ""
+ },
+ "options_timings_l1": {
+ "message": "Sprawdzaj nowe wiadomości co (sekundy):",
+ "description": ""
+ },
+ "options_timings_l2": {
+ "message": "Minimalny odstęp czasowy to 10 sekund.",
+ "description": ""
+ },
+ "options_timings_l3": {
+ "message": "Przypominaj o nieprzeczytanych wiadomościach co (minuty):",
+ "description": ""
+ },
+ "options_timings_l4": {
+ "message": "Ustaw wartość na zero, aby nie otrzymywać przypomnień.",
+ "description": ""
+ },
+ "options_timings_l5": {
+ "message": "Minimalny odstęp czasowy to 5 minut.",
+ "description": ""
+ },
+ "options_timings_l6": {
+ "message": "Wartości inne niż zero wyzwalają powiadomienia na pulpicie oraz dźwięk, dopóki posiadasz nieprzeczytane wiadomości (podobnie jak otrzymanie nowej poczty).",
+ "description": ""
+ },
+ "options_timings_l7": {
+ "message": "Sprawdzaj nowe wiadomości przy starcie po (sekundy):",
+ "description": ""
+ },
+ "options_timings_l8": {
+ "message": "Ustaw wartość na zero, aby nie sprawdzać nowych wiadomości przed pierwszym ręcznym odświeżeniem [niedostępne na Safari].",
+ "description": ""
+ },
+ "options_gmail": {
+ "message": "Gmail:",
+ "description": ""
+ },
+ "options_gmail_1": {
+ "message": "Konto główne (/mail/u/0/)",
+ "description": ""
+ },
+ "options_gmail_2": {
+ "message": "Oddzielaj etykiety znakiem \",\" (przecinek).",
+ "description": ""
+ },
+ "options_gmail_3": {
+ "message": "Drugie konto (/mail/u/1/)",
+ "description": ""
+ },
+ "options_gmail_4": {
+ "message": "Trzecie konto (/mail/u/2/)",
+ "description": ""
+ },
+ "options_gmail_5": {
+ "message": "Czwarte konto (/mail/u/3/)",
+ "description": ""
+ },
+ "options_gmail_6": {
+ "message": "Piąte konto (/mail/u/4)",
+ "description": ""
+ },
+ "options_gmail_7": {
+ "message": "Szóste konto (/mail/u/5/)",
+ "description": ""
+ },
+ "options_gmail_8": {
+ "message": "Oznacz wiadomość jako przeczytaną podczas archiwizowania",
+ "description": ""
+ },
+ "options_gmail_15": {
+ "message": "Kilka popularnych etykiet:",
+ "description": ""
+ },
+ "options_gmail_10": {
+ "message": "Otrzymuj powiadomienia dla następujących etykiet oraz kont:",
+ "description": ""
+ },
+ "options_gmail_11": {
+ "message": "Własne kanały:",
+ "description": ""
+ },
+ "options_gmail_12": {
+ "message": "Oddzielaj kanały znakiem \",\" (przecinek). Przykładowy kanał:\nhttps://mail.google.com/mail/u/0/feed/atom/inbox",
+ "description": ""
+ },
+ "options_gmail_13": {
+ "message": "Informacja: maksymalna ilość wszystkich etykiet, poza \"inbox\", wynosi 20 (Kanały Google dostarczają jedynie 20 najnowszych rekordów).",
+ "description": ""
+ },
+ "options_gmail_14": {
+ "message": "Informacja: Aby Powiadomienia nasłuchiwały więcej niż 5 kont, dodaj adresy URL kanałów do pola \"Własne kanały\". Na przykład, aby nasłuchiwać szóste i siódme konto, dodaj: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox",
+ "description": ""
+ },
+ "options_notifications": {
+ "message": "Powiadomienia:",
+ "description": ""
+ },
+ "options_notifications_1": {
+ "message": "Wyświetlaj na pulpicie powiadomienia o nowych wiadomościach",
+ "description": ""
+ },
+ "options_notifications_2": {
+ "message": "Pokazuj powiadomienia na pulpicie przez (sekundy):",
+ "description": ""
+ },
+ "options_notifications_3": {
+ "message": "Ta opcja może nie działać na twoim systemie operacyjnym.",
+ "description": ""
+ },
+ "options_notifications_4": {
+ "message": "Format powiadomienia",
+ "description": ""
+ },
+ "options_notifications_5": {
+ "message": "Dostępne klucze:",
+ "description": ""
+ },
+ "options_notifications_6": {
+ "message": "Skracaj powiadomienia dłuższe niż",
+ "description": ""
+ },
+ "options_notifications_7": {
+ "message": "znaków dla pól [title] oraz [summary].",
+ "description": ""
+ },
+ "options_notifications_8": {
+ "message": "Jeżeli nie chcesz skracać, wpisz dużą liczbę.",
+ "description": ""
+ },
+ "options_notifications_9": {
+ "message": "Odtwórz dźwięk po otrzymaniu nowych wiadomości",
+ "description": ""
+ },
+ "options_notifications_10": {
+ "message": "Informacja dla użytkowników systemu Mac. Począwszy od Firefox 28.0, wszystkie powiadomienia na pulpicie są przechwytywane przez Centrum Powiadomień Mac, które wywołuje dodatkowy dźwięk powiadomienia. Zalecane jest wyłączenie jednego z tych dźwięków.",
+ "description": ""
+ },
+ "options_notifications_11": {
+ "message": "Wyświetlaj \"powiadomienia paska zadań Windows\" lub \"powiadomienia Mac OS Dock\"",
+ "description": ""
+ },
+ "options_notifications_12": {
+ "message": "Obecnie, powiadomienia paska zadań nie są wspierane na systemach Linuks.",
+ "description": ""
+ },
+ "options_notifications_13": {
+ "message": "Otwórz panel paska narzędzi podczas kliknięcia na ikonkę powiadomień paska zadań (tylko Windows, beta)",
+ "description": ""
+ },
+ "options_notifications_14": {
+ "message": "Ta funkcjonalność jest eksperymentalna i może uczynić Twoją przeglądarkę Firefox niestabilną [wymagany restart].",
+ "description": ""
+ },
+ "options_notifications_15": {
+ "message": "Domyślny dźwięk powiadomienia to",
+ "description": ""
+ },
+ "options_notifications_16": {
+ "message": "Domyślny sygnał Powiadomień Gmail™",
+ "description": ""
+ },
+ "options_notifications_17": {
+ "message": "Dzwonek Checker Plus",
+ "description": ""
+ },
+ "options_notifications_18": {
+ "message": "Dzwoneczek Checker Plus",
+ "description": ""
+ },
+ "options_notifications_19": {
+ "message": "Sygnał e-mail Windows",
+ "description": ""
+ },
+ "options_notifications_20": {
+ "message": "Własny sygnał",
+ "description": ""
+ },
+ "options_notifications_21": {
+ "message": "Własny dźwięk powiadomień:",
+ "description": ""
+ },
+ "options_notifications_22": {
+ "message": "Jeżeli Twoja przeglądarka nie odtwarza własnego dźwięku powiadomienia, spróbuj go przetworzyć na format WAV przy pomocy narzędzi konwersji w sieci.",
+ "description": ""
+ },
+ "options_notifications_35": {
+ "message": "Aby wybrać nowy własny dźwięk, najpierw wybierz wbudowany dźwięk, a następnie zmień wybór na Własny dźwięk",
+ "description": ""
+ },
+ "options_notifications_23": {
+ "message": "Głośność dźwięku powiadomienia",
+ "description": ""
+ },
+ "options_notifications_24": {
+ "message": "Głośność to liczba pomiędzy 0 i 100, gdzie 100 oznacza najwyższą głośność (domyślnie).",
+ "description": ""
+ },
+ "options_notifications_25": {
+ "message": "Safari często odtwarza nieprawidłowo domyślne dźwięki powiadomień. W takim przypadku spróbuj użyć własnych dźwięków powiadomień.",
+ "description": ""
+ },
+ "options_notifications_26": {
+ "message": "Zawsze pokazuj ikony powiadomień (tylko Windows)",
+ "description": ""
+ },
+ "options_notifications_27": {
+ "message": "Ikony obszaru powiadomień będą zawsze wyświetlane, nawet gdy brak nieprzeczytanych wiadomości.",
+ "description": ""
+ },
+ "options_notifications_28": {
+ "message": "Wyłącz wszystkie powiadomienia na własny odstęp czasowy (minuty):",
+ "description": ""
+ },
+ "options_notifications_29": {
+ "message": "Ta opcja jest dostępna po naciśnięciu Prawym Przyciskiem Myszy na przycisk na pasku narzędzi -> Wyłącz wszystkie powiadomienia -> Własny odstęp czasowy.",
+ "description": ""
+ },
+ "options_notifications_30": {
+ "message": "Połącz wszystkie jednoczesne powiadomienia na pulpicie w pojedyncze",
+ "description": ""
+ },
+ "options_notifications_31": {
+ "message": "Własny dźwięk powiadomienia",
+ "description": ""
+ },
+ "options_notifications_32": {
+ "message": "nazwa lub e-mail zawiera",
+ "description": ""
+ },
+ "options_notifications_33": {
+ "message": "tytuł e-mail'a zawiera",
+ "description": ""
+ },
+ "options_notifications_34": {
+ "message": "podsumowanie e-mail'a zawiera",
+ "description": ""
+ },
+ "options_notifications_36": {
+ "message": "Unikaj przekierowywania Gmail'a do 'inbox.google.com'",
+ "description": ""
+ },
+ "options_notifications_37": {
+ "message": "Wyświetlaj symbol z liczbą wiadomości",
+ "description": ""
+ },
+ "options_notifications_38": {
+ "message": "Szybsze operacje (oznacz jako przeczytane, usuń, ...) (Operacje są wykonywane po otrzymaniu nagłówków)",
+ "description": ""
+ },
+ "options_notifications_40": {
+ "message": "Zezwól na szybkie akcje z okna powiadomień (maksymalnie dwie akcje) (tylko dla Chrome)",
+ "description": ""
+ },
+ "options_notifications_41": {
+ "message": "Oznacz jako przeczytane",
+ "description": ""
+ },
+ "options_notifications_42": {
+ "message": "Archiwizuj",
+ "description": ""
+ },
+ "options_notifications_43": {
+ "message": "Usuń",
+ "description": ""
+ },
+ "options_tab": {
+ "message": "Otwieranie kart:",
+ "description": ""
+ },
+ "options_tab_1": {
+ "message": "Szukaj w aktywnym oknie otwartej karty z kontem Gmail",
+ "description": ""
+ },
+ "options_tab_2": {
+ "message": "Nie przeszukuj innych okien przeglądarki pod kątem otwartych kont Gmail. Jeżeli Gmail nie jest otworzony w aktywnym oknie, otwórz nową kartę.",
+ "description": ""
+ },
+ "options_tab_3": {
+ "message": "Otwórz kolejne konto Gmail za aktywną kartą",
+ "description": ""
+ },
+ "options_tab_4": {
+ "message": "Otwórz konto Gmail w aktywnej karcie",
+ "description": ""
+ },
+ "options_tab_5": {
+ "message": "Otwórz konto Gmail w karcie w tle",
+ "description": ""
+ },
+ "options_tab_6": {
+ "message": "Otwórz konto Gmail w nowym oknie",
+ "description": ""
+ },
+ "options_tab_7": {
+ "message": "Zawsze używaj pustych kart zamiast otwierania nowej karty (gdy opcja otwierania na karcie jest aktywna)",
+ "description": ""
+ },
+ "options_tab_8": {
+ "message": "Ignoruj otwarte karty Gmail'a",
+ "description": ""
+ },
+ "options_tab_9": {
+ "message": "Jeżeli odznaczono, Powiadomienia Gmail sprawdzą wszystkie otwarte okna w poszukiwaniu karty z otwartym Gmail'em, a następnie otworzy ją na żądanie.",
+ "description": ""
+ },
+ "options_tab_10": {
+ "message": "Otwórz wiadomości w trybie podstawowego HTML",
+ "description": ""
+ },
+ "options_tab_11": {
+ "message": "Otwórz najnowszą nieprzeczytaną wiadomość zamiast folderu Odebrane",
+ "description": ""
+ },
+ "options_toolbar": {
+ "message": "Pasek narzędzi:",
+ "description": ""
+ },
+ "options_toolbar_1": {
+ "message": "Zachowanie przycisku paska narzędzi",
+ "description": ""
+ },
+ "options_toolbar_2": {
+ "message": "Zawsze otwieraj panel podglądu wiadomości",
+ "description": ""
+ },
+ "options_toolbar_3": {
+ "message": "Otwieraj konto Gmail, tylko jeżeli zalogowano na jednym",
+ "description": ""
+ },
+ "options_toolbar_18": {
+ "message": "Otwórz konto Gmail (wymuś)",
+ "description": ""
+ },
+ "options_toolbar_4": {
+ "message": "Tryb panelu paska narzędzi",
+ "description": ""
+ },
+ "options_toolbar_5": {
+ "message": "Pokazuj tylko podsumowanie",
+ "description": ""
+ },
+ "options_toolbar_6": {
+ "message": "Pokazuj pełną zawartość",
+ "description": ""
+ },
+ "options_toolbar_7": {
+ "message": "Szerokość panelu paska narzędzi w trybie pełnej zawartości (piksele):",
+ "description": ""
+ },
+ "options_toolbar_8": {
+ "message": "Minimalna szerokość to 500px.",
+ "description": ""
+ },
+ "options_toolbar_9": {
+ "message": "Wysokość panelu paska narzędzi w trybie pełnej zawartości (piksele):",
+ "description": ""
+ },
+ "options_toolbar_10": {
+ "message": "Minimalna wysokość to 500px.",
+ "description": ""
+ },
+ "options_toolbar_11": {
+ "message": "Wsparcie skrótów klawiszowych w panelu paska narzędzi",
+ "description": ""
+ },
+ "options_toolbar_12": {
+ "message": "!: Zgłoś spam, #: Usuń, e: Archiwizuj, Shift + i: Oznacz jako przeczytane.",
+ "description": ""
+ },
+ "options_toolbar_13": {
+ "message": "Wyświetlaj wiadomości jako HTML w trybie pełnej zawartości",
+ "description": ""
+ },
+ "options_toolbar_14": {
+ "message": "Jeżeli wolisz surowy tekst w trybie pełnej zawartości, odznacz to pole.",
+ "description": ""
+ },
+ "options_toolbar_15": {
+ "message": "Akcja środkowego przycisku myszy na pasku narzędzi:",
+ "description": ""
+ },
+ "options_toolbar_16": {
+ "message": "Odśwież wszystkie konta",
+ "description": ""
+ },
+ "options_toolbar_17": {
+ "message": "Otwórz główne konto Gmail",
+ "description": ""
+ },
+ "options_misc": {
+ "message": "Różności:",
+ "description": ""
+ },
+ "options_misc_1": {
+ "message": "Sortuj konta alfabetycznie",
+ "description": ""
+ },
+ "options_misc_2": {
+ "message": "Domyślne sortowanie bazuje na kolejności zalogowania.",
+ "description": ""
+ },
+ "options_misc_3": {
+ "message": "Kolor paska narzędzi:",
+ "description": ""
+ },
+ "options_misc_4": {
+ "message": "Szary dla \"Nieprzeczytane\" i niebieski dla \"Rozłączony\"",
+ "description": ""
+ },
+ "options_misc_5": {
+ "message": "Niebieski dla \"Nieprzeczytane\" i szary dla \"Rozłączony\"",
+ "description": ""
+ },
+ "options_misc_9": {
+ "message": "Czerwony dla \"Nieprzeczytane\" i szary dla \"Rozłączony\"",
+ "description": ""
+ },
+ "options_misc_6": {
+ "message": "Pokazuj powiadomienia na pulpicie, aby powiadomić, że Gmail jest już otwarty w aktywnej karcie",
+ "description": ""
+ },
+ "options_misc_7": {
+ "message": "Pokazuj stronę powitalną po aktualizacji",
+ "description": ""
+ },
+ "options_misc_8": {
+ "message": "Przywróć wszystkie ustawienia do fabrycznych",
+ "description": ""
+ },
+ "options_misc_10": {
+ "message": "Uruchom powiadomienia na pulpicie oraz dźwiękowe, gdy e-mail został otrzymany poniżej (minut):",
+ "description": ""
+ },
+ "options_misc_11": {
+ "message": "Ustawienie tej opcji na zero spowoduje, iż nie będziesz otrzymywać powiadomień na pulpicie ani dźwiękowych; jednakże nadal będziesz otrzymywać powiadomienia z ikonki na pasku narzędzi.",
+ "description": ""
+ },
+ "options_misc_12": {
+ "message": "Nie uwzględniaj informacji o profilu w treści okienka podpowiedzi",
+ "description": ""
+ },
+ "options_misc_13": {
+ "message": "Rozszerzenie domyślnie aktualizuje treść okienka podpowiedzi na przycisku paska narzędzi informacjami o profilu. Odznaczenie tej opcji spowoduje zachowanie treści w domyślnej wartości.",
+ "description": ""
+ },
+ "options_misc_14": {
+ "message": "Nie wyświetlaj szczegółowej liczby na znaczku, gdy liczba nieprzeczytanych wiadomości jest większa niż 999",
+ "description": ""
+ },
+ "options_misc_15": {
+ "message": "Otwórz stronę FAQ (Często zadawane pytania) po zaktualizowaniu",
+ "description": ""
+ },
+ "options_plugins": {
+ "message": "Wtyczki:",
+ "description": ""
+ },
+ "options_plugins_1": {
+ "message": "Etykiety Gmail oraz symbol gwiazdki (eksperymentalne)",
+ "description": ""
+ },
+ "options_plugins_2": {
+ "message": "Ta wtyczka wyświetla symbol gwiazdki oraz etykiety tematu w panelu podglądu wiadomości (tylko tryb rozszerzony).",
+ "description": ""
+ },
+ "options_px": {
+ "message": "px",
+ "description": ""
+ },
+ "options_empty": {
+ "message": "nie określono",
+ "description": ""
+ },
+ "options_button_test": {
+ "message": "Odtwórz",
+ "description": ""
+ },
+ "options_button_reset": {
+ "message": "Przywróć ustawienia fabryczne",
+ "description": ""
+ },
+ "popup_settings": {
+ "message": "Ustawienia",
+ "description": ""
+ },
+ "popup_of": {
+ "message": "z",
+ "description": ""
+ },
+ "popup_wait": {
+ "message": "Czekaj...",
+ "description": ""
+ },
+ "popup_date_format": {
+ "message": "%dd %mm %yy",
+ "description": ""
+ },
+ "popup_no_subject": {
+ "message": "(brak tematu)",
+ "description": ""
+ },
+ "popup_open_settings": {
+ "message": "Otwórz ustawienia",
+ "description": ""
+ },
+ "popup_open_inbox": {
+ "message": "Otwórz skrzynkę",
+ "description": ""
+ },
+ "popup_archive": {
+ "message": "Archiwizuj",
+ "description": ""
+ },
+ "popup_spam": {
+ "message": "Zgłoś spam",
+ "description": ""
+ },
+ "popup_trash": {
+ "message": "Usuń",
+ "description": ""
+ },
+ "popup_refresh": {
+ "message": "Odśwież",
+ "description": ""
+ },
+ "popup_read": {
+ "message": "Przeczytane",
+ "description": ""
+ },
+ "popup_read_all": {
+ "message": "Wszystkie przeczytane",
+ "description": ""
+ },
+ "popup_msg_1": {
+ "message": "przed chwilą",
+ "description": ""
+ },
+ "popup_msg_2": {
+ "message": "minutę temu",
+ "description": ""
+ },
+ "popup_msg_3_format": {
+ "message": "%d minut(y) temu",
+ "description": ""
+ },
+ "popup_msg_4": {
+ "message": "godzinę temu",
+ "description": ""
+ },
+ "popup_msg_5": {
+ "message": "godzin(y) temu",
+ "description": ""
+ },
+ "popup_msg_6": {
+ "message": "wczoraj",
+ "description": ""
+ },
+ "popup_msg_7_format": {
+ "message": "%d dni temu",
+ "description": ""
+ },
+ "popup_msg_8_format": {
+ "message": "%d tygodni(e) temu",
+ "description": ""
+ },
+ "popup_msg_9_format": {
+ "message": "miesięcy temu: %d",
+ "description": ""
+ },
+ "popup_msg_10": {
+ "message": "stycznia",
+ "description": ""
+ },
+ "popup_msg_11": {
+ "message": "lutego",
+ "description": ""
+ },
+ "popup_msg_12": {
+ "message": "marca",
+ "description": ""
+ },
+ "popup_msg_13": {
+ "message": "kwietnia",
+ "description": ""
+ },
+ "popup_msg_14": {
+ "message": "maja",
+ "description": ""
+ },
+ "popup_msg_15": {
+ "message": "czerwca",
+ "description": ""
+ },
+ "popup_msg_16": {
+ "message": "lipca",
+ "description": ""
+ },
+ "popup_msg_17": {
+ "message": "sierpnia",
+ "description": ""
+ },
+ "popup_msg_18": {
+ "message": "września",
+ "description": ""
+ },
+ "popup_msg_19": {
+ "message": "października",
+ "description": ""
+ },
+ "popup_msg_20": {
+ "message": "listopada",
+ "description": ""
+ },
+ "popup_msg_21": {
+ "message": "grudnia",
+ "description": ""
+ },
+ "settings_open_title": {
+ "message": "Otwórz stronę opcji (ustawień)",
+ "description": ""
+ },
+ "settings_open_label": {
+ "message": "Otwórz opcje",
+ "description": ""
+ },
+ "gmail": {
+ "message": "Powiadomienia Gmail™",
+ "description": ""
+ }
+}
\ No newline at end of file
diff --git a/v3.classic/_locales/ru/messages.json b/v3.classic/_locales/ru/messages.json
new file mode 100644
index 00000000..0adcb5f2
--- /dev/null
+++ b/v3.classic/_locales/ru/messages.json
@@ -0,0 +1,762 @@
+{
+ "toolbar_label": {
+ "message": "Оповещения для Gmail™",
+ "description": ""
+ },
+ "tooltip_1": {
+ "message": "Левый клик: Открыть вкладку Gmail или окно предварительного просмотра",
+ "description": ""
+ },
+ "tooltip_2": {
+ "message": "Средний клик (или Ctrl+левый клик): Обновить все аккаунты",
+ "description": ""
+ },
+ "tooltip_3": {
+ "message": "Правый клик: Меню дополнения",
+ "description": ""
+ },
+ "description": {
+ "message": "Оповещение для нескольких аккаунтов Google Mail (Gmail)",
+ "description": ""
+ },
+ "log_in_to_your_account": {
+ "message": "Войдите, пожалуйста, в Ваш аккаунт Gmail",
+ "description": ""
+ },
+ "msg_1": {
+ "message": "Вкладка уже открыта. Нажмите на кнопку на панели инструментов, чтобы открыть Gmail в новой вкладке или перейти на уже открытую вкладку Gmail.",
+ "description": ""
+ },
+ "msg_2": {
+ "message": "Ссылка скопирована в буфер обмена.",
+ "description": ""
+ },
+ "msg_3": {
+ "message": "Выделенный текст скопирован в буфет обмена.",
+ "description": ""
+ },
+ "msg_4": {
+ "message": "Замечание: Чтобы оповещение работало правильно, вы должны быть залогинены в свой аккаунт Google.",
+ "description": ""
+ },
+ "msg_5": {
+ "message": "Выберите звуковой файл",
+ "description": ""
+ },
+ "label_1": {
+ "message": "Обновить",
+ "description": ""
+ },
+ "label_2": {
+ "message": "Настройки",
+ "description": ""
+ },
+ "label_3": {
+ "message": "Отключить все оповещения...",
+ "description": ""
+ },
+ "label_4": {
+ "message": "на 5 минут",
+ "description": ""
+ },
+ "label_5": {
+ "message": "на 15 минут",
+ "description": ""
+ },
+ "label_6": {
+ "message": "на 30 минут",
+ "description": ""
+ },
+ "label_7": {
+ "message": "на 1 час",
+ "description": ""
+ },
+ "label_8": {
+ "message": "на 2 часа",
+ "description": ""
+ },
+ "label_9": {
+ "message": "на 5 часов",
+ "description": ""
+ },
+ "label_13": {
+ "message": "на Х минут",
+ "description": ""
+ },
+ "label_10": {
+ "message": "Включить уведомления (текущая сессия)",
+ "description": ""
+ },
+ "label_11": {
+ "message": "Создать сообщение",
+ "description": ""
+ },
+ "label_12": {
+ "message": "Открыть FAQ",
+ "description": ""
+ },
+ "label_14": {
+ "message": "Авторизованные аккаунты",
+ "description": ""
+ },
+ "unknown": {
+ "message": "не определено",
+ "description": ""
+ },
+ "and": {
+ "message": "и",
+ "description": ""
+ },
+ "log_into_your_account": {
+ "message": "Пожалуйста, войдите в свой аккаунт",
+ "description": ""
+ },
+ "notification": {
+ "message": "От: [author_email][break]Тема: [title][break]Сводка: [summary]",
+ "description": ""
+ },
+ "options_title": {
+ "message": "Настройки",
+ "description": ""
+ },
+ "options_inshort": {
+ "message": "Оповещение для нескольких аккаунтов Google Mail (Gmail).",
+ "description": ""
+ },
+ "options_donation": {
+ "message": "Поддержка разработки",
+ "description": ""
+ },
+ "options_timings": {
+ "message": "Задержки:",
+ "description": ""
+ },
+ "options_timings_l1": {
+ "message": "Проверять почту каждые (в секундах):",
+ "description": ""
+ },
+ "options_timings_l2": {
+ "message": "Минимальный период - 10 сек.",
+ "description": ""
+ },
+ "options_timings_l3": {
+ "message": "Напоминать о непрочитанных сообщениях каждые (в минутах):",
+ "description": ""
+ },
+ "options_timings_l4": {
+ "message": "Установите ноль для отключения напоминаний.",
+ "description": ""
+ },
+ "options_timings_l5": {
+ "message": "Минимальный период - 5 мин.",
+ "description": ""
+ },
+ "options_timings_l6": {
+ "message": "Ненулевое значение включает всплывающие уведомления и звуковое оповещение (как при получении нового сообщения).",
+ "description": ""
+ },
+ "options_timings_l7": {
+ "message": "Не проверять почту сразу после запуска в течение (в секундах):",
+ "description": ""
+ },
+ "options_timings_l8": {
+ "message": "При установке нуля автоматическая проверка почты начнется только после первого ручного обновления (Не доступно в Safari).",
+ "description": ""
+ },
+ "options_gmail": {
+ "message": "Аккаунты Gmail:",
+ "description": ""
+ },
+ "options_gmail_1": {
+ "message": "Основной аккаунт (/mail/u/0/)",
+ "description": ""
+ },
+ "options_gmail_2": {
+ "message": "Разделяйте ярлыки \",\" (Запятой).",
+ "description": ""
+ },
+ "options_gmail_3": {
+ "message": "Второй аккаунт (/mail/u/1/)",
+ "description": ""
+ },
+ "options_gmail_4": {
+ "message": "Третий аккаунт (/mail/u/2/)",
+ "description": ""
+ },
+ "options_gmail_5": {
+ "message": "Четвертый аккаунт (/mail/u/3/)",
+ "description": ""
+ },
+ "options_gmail_6": {
+ "message": "Пятый аккаунт (/mail/u/4/)",
+ "description": ""
+ },
+ "options_gmail_7": {
+ "message": "Шестой аккаунт (/mail/u/5/)",
+ "description": ""
+ },
+ "options_gmail_8": {
+ "message": "Отмечать сообщения как прочитанные при архивации",
+ "description": ""
+ },
+ "options_gmail_15": {
+ "message": "Популярные ярлыки:",
+ "description": ""
+ },
+ "options_gmail_10": {
+ "message": "Получать оповещения для следующих аккаунтов и ярлыков:",
+ "description": ""
+ },
+ "options_gmail_11": {
+ "message": "Свои каналы:",
+ "description": ""
+ },
+ "options_gmail_12": {
+ "message": "Разделяйте каналы \",\" (Запятой). Пример канала: https://mail.google.com/mail/u/0/feed/atom/inbox",
+ "description": ""
+ },
+ "options_gmail_13": {
+ "message": "Примечание: максимальное количество всех ярлыков, кроме «входящие», составляет 20 (каналы Google содержат только 20 новых записей)",
+ "description": ""
+ },
+ "options_gmail_14": {
+ "message": "Примечание: чтобы \"Оповещения для Gmail\" проверял более 5 учетных записей, добавьте URL-адреса фидов в поле «Пользовательские каналы» («Custom feeds»). Например, чтобы проверять 6 и 7 учетные записи, добавьте: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox",
+ "description": ""
+ },
+ "options_notifications": {
+ "message": "Всплывающие уведомления:",
+ "description": ""
+ },
+ "options_notifications_1": {
+ "message": "Показывать всплывающие уведомления для новых сообщений",
+ "description": ""
+ },
+ "options_notifications_2": {
+ "message": "Время показа всплывающих уведомлений (в секундах):",
+ "description": ""
+ },
+ "options_notifications_3": {
+ "message": "Эта функция может не работать в Вашей ОС.",
+ "description": ""
+ },
+ "options_notifications_4": {
+ "message": "Формат уведомления",
+ "description": ""
+ },
+ "options_notifications_5": {
+ "message": "Доступные переменные:",
+ "description": ""
+ },
+ "options_notifications_6": {
+ "message": "Обрезать текст уведомления длиннее, чем",
+ "description": ""
+ },
+ "options_notifications_7": {
+ "message": "символов для полей [title] и [summary].",
+ "description": ""
+ },
+ "options_notifications_8": {
+ "message": "Чтобы избежать обрезания сообщений, используйте здесь большие значения.",
+ "description": ""
+ },
+ "options_notifications_9": {
+ "message": "Проигрывать звуковое оповещение при получении новых сообщений",
+ "description": ""
+ },
+ "options_notifications_10": {
+ "message": "Замечание для пользователей Mac. Начиная с Firefox 28.0, все всплывающие уведомления обрабатываются Mac Notification Center, что приводит к двойному звуковому оповещению. Вам следует отключить это звуковое оповещение или звуковое оповещение от Notification Center.",
+ "description": ""
+ },
+ "options_notifications_11": {
+ "message": "Показывать \"Уведомления панели задач Windows\" или \"Уведомления в док-панели Mac OS\"",
+ "description": ""
+ },
+ "options_notifications_12": {
+ "message": "Оповещения на панели задач для Linux OS пока не поддерживаются.",
+ "description": ""
+ },
+ "options_notifications_13": {
+ "message": "При клике на значок в трее открывать окно предварительного просмотра (только для Windows, beta)",
+ "description": ""
+ },
+ "options_notifications_14": {
+ "message": "Эта экспериментальная функция и может вызвать нестабильность в работе Firefox. [Требуется перезапуск].",
+ "description": ""
+ },
+ "options_notifications_15": {
+ "message": "Звук оповещений по умолчанию",
+ "description": ""
+ },
+ "options_notifications_16": {
+ "message": "По умолчанию",
+ "description": ""
+ },
+ "options_notifications_17": {
+ "message": "Оповещения из Checker Plus",
+ "description": ""
+ },
+ "options_notifications_18": {
+ "message": "Динь из Checker Plus",
+ "description": ""
+ },
+ "options_notifications_19": {
+ "message": "Оповещение о новом сообщении из Windows",
+ "description": ""
+ },
+ "options_notifications_20": {
+ "message": "Пользовательский звук",
+ "description": ""
+ },
+ "options_notifications_21": {
+ "message": "Пользовательский звук:",
+ "description": ""
+ },
+ "options_notifications_22": {
+ "message": "Если ваш браузер не воспроизводит звук оповещения, попробуйте конвертировать файл в формат WAV с помощью онлайн инструментов.",
+ "description": ""
+ },
+ "options_notifications_35": {
+ "message": "Для выбора нового пользовательского звука сначала выберите встроенный звук, а затем измените опцию на пользовательский звук",
+ "description": ""
+ },
+ "options_notifications_23": {
+ "message": "Громкость звукового оповещения:",
+ "description": ""
+ },
+ "options_notifications_24": {
+ "message": "Громкость - число от 0 до 100, где 100 соответствует максимальной громкости.",
+ "description": ""
+ },
+ "options_notifications_25": {
+ "message": "В Safari обычно встроенные звуковые оповещения воспроизводятся не правильно, в этом случае используйте пользовательские звуковые файлы для оповещения.",
+ "description": ""
+ },
+ "options_notifications_26": {
+ "message": "Всегда показывать значок уведомления в трее (Только Windows)",
+ "description": ""
+ },
+ "options_notifications_27": {
+ "message": "Значок в трее будет показан даже если нет не прочитанных сообщений.",
+ "description": ""
+ },
+ "options_notifications_28": {
+ "message": "Отключить все уведомления на определенный период времени Х (в минутах)",
+ "description": ""
+ },
+ "options_notifications_29": {
+ "message": "Эта настройка относится к меню кнопки на панели инструментов -> Отключить все уведомления -> на Х минут",
+ "description": ""
+ },
+ "options_notifications_30": {
+ "message": "Объединять несколько параллельных уведомлений в одно",
+ "description": ""
+ },
+ "options_notifications_31": {
+ "message": "Пользовательское звуковое оповещение",
+ "description": ""
+ },
+ "options_notifications_32": {
+ "message": "имя или email содержит",
+ "description": ""
+ },
+ "options_notifications_33": {
+ "message": "заголовок сообщения содержит",
+ "description": ""
+ },
+ "options_notifications_34": {
+ "message": "краткая сводка сообщения содержит",
+ "description": ""
+ },
+ "options_notifications_36": {
+ "message": "Попросить Gmail не перенаправлять на «inbox.google.com»",
+ "description": ""
+ },
+ "options_notifications_37": {
+ "message": "Номер отображаемого знака",
+ "description": ""
+ },
+ "options_notifications_38": {
+ "message": "Более быстрые действия (отметить как прочитанные, удалить, ...) (учитывать действия, которые необходимо производить при получении заголовков)",
+ "description": ""
+ },
+ "options_notifications_40": {
+ "message": "Разрешить быстрые действия в окне уведомления (не более двух действий) (только в Chrome)",
+ "description": ""
+ },
+ "options_notifications_41": {
+ "message": "Прочтено",
+ "description": ""
+ },
+ "options_notifications_42": {
+ "message": "Архивировать",
+ "description": ""
+ },
+ "options_notifications_43": {
+ "message": "Удалить",
+ "description": ""
+ },
+ "options_tab": {
+ "message": "Открытие вкладки Gmail:",
+ "description": ""
+ },
+ "options_tab_1": {
+ "message": "Отслеживать открытую вкладку Gmail только в активном окне браузера",
+ "description": ""
+ },
+ "options_tab_2": {
+ "message": "Не производить поиск открытой вкладки с Gmail в других окнах браузера. Если Gmail не открыт во вкладке активного окна - открыть новую вкладку.",
+ "description": ""
+ },
+ "options_tab_3": {
+ "message": "Открывать вкладку Gmail рядом с активной вкладкой",
+ "description": ""
+ },
+ "options_tab_4": {
+ "message": "Открывать Gmail в активной вкладке",
+ "description": ""
+ },
+ "options_tab_5": {
+ "message": "Открывать Gmail в фоновой вкладке",
+ "description": ""
+ },
+ "options_tab_6": {
+ "message": "Открывать Gmail в новом окне",
+ "description": ""
+ },
+ "options_tab_7": {
+ "message": "Использовать имеющуюся пустую вкладку вместо открытия новой, если активна функция \"Открывать во вкладке\"",
+ "description": ""
+ },
+ "options_tab_8": {
+ "message": "Игнорировать открытые с Gmail вкладки",
+ "description": ""
+ },
+ "options_tab_9": {
+ "message": "Если активировано, Gmail Notifier не проверяет наличие уже открытого окна Gmail и не переключает фокус на него.",
+ "description": ""
+ },
+ "options_tab_10": {
+ "message": "Открывать письма в базовом HTML-режиме",
+ "description": ""
+ },
+ "options_tab_11": {
+ "message": "Open the newest unread email instead of opening the INBOX folder",
+ "description": ""
+ },
+ "options_toolbar": {
+ "message": "Окно предварительного просмотра:",
+ "description": ""
+ },
+ "options_toolbar_1": {
+ "message": "Поведение кнопки на панели",
+ "description": ""
+ },
+ "options_toolbar_2": {
+ "message": "Всегда открывать окно предварительного просмотра",
+ "description": ""
+ },
+ "options_toolbar_3": {
+ "message": "Открывать Gmail только если авторизован один аккаунт",
+ "description": ""
+ },
+ "options_toolbar_18": {
+ "message": "Открыть аккаунт Gmail (принудительно)",
+ "description": ""
+ },
+ "options_toolbar_4": {
+ "message": "Режим окна предварительного просмотра",
+ "description": ""
+ },
+ "options_toolbar_5": {
+ "message": "Показывать только сводку",
+ "description": ""
+ },
+ "options_toolbar_6": {
+ "message": "Полный режим - показывать сообщение целиком",
+ "description": ""
+ },
+ "options_toolbar_7": {
+ "message": "Ширина окна просмотра в полном режиме (в пискелях):",
+ "description": ""
+ },
+ "options_toolbar_8": {
+ "message": "Минимальная ширина окна - 500px.",
+ "description": ""
+ },
+ "options_toolbar_9": {
+ "message": "Высота окна просмотра в полном режиме (в пикселях):",
+ "description": ""
+ },
+ "options_toolbar_10": {
+ "message": "Минимальная высота окна - 500px.",
+ "description": ""
+ },
+ "options_toolbar_11": {
+ "message": "Включить горячие клавиши в окне предварительного просмотра",
+ "description": ""
+ },
+ "options_toolbar_12": {
+ "message": "!: Сообщить о спаме, #: Удалить, e: Архивировать, Shift + i: Отметить как прочитанное.",
+ "description": ""
+ },
+ "options_toolbar_13": {
+ "message": "Отображать сообщения в HTML-формате в полном режиме",
+ "description": ""
+ },
+ "options_toolbar_14": {
+ "message": "Если Вы предпочитаете отображение в виде простого текста в полном режиме - снимите эту галку.",
+ "description": ""
+ },
+ "options_toolbar_15": {
+ "message": "Клик средней кнопкой мыши по значку в панели инструментов",
+ "description": ""
+ },
+ "options_toolbar_16": {
+ "message": "Обновить все аккаунты",
+ "description": ""
+ },
+ "options_toolbar_17": {
+ "message": "Открыть основной аккаунт",
+ "description": ""
+ },
+ "options_misc": {
+ "message": "Дополнительно:",
+ "description": ""
+ },
+ "options_misc_1": {
+ "message": "Сортировать аккаунты по алфавиту",
+ "description": ""
+ },
+ "options_misc_2": {
+ "message": "По умолчанию - сортировка по времени входа.",
+ "description": ""
+ },
+ "options_misc_3": {
+ "message": "Цвет значка на панели инструментов",
+ "description": ""
+ },
+ "options_misc_4": {
+ "message": "Серый для \"Нет непрочитанных\" и голубой для \"Отключен\"",
+ "description": ""
+ },
+ "options_misc_5": {
+ "message": "Голубой для \"Нет непрочитанных\" и серый для \"Отключен\"",
+ "description": ""
+ },
+ "options_misc_9": {
+ "message": "Красный для \"Нет непрочитанных\" и серый для \"Отключен\"",
+ "description": ""
+ },
+ "options_misc_6": {
+ "message": "Показывать всплывающее уведомление о том, что Gmail уже открыт в активной вкладке",
+ "description": ""
+ },
+ "options_misc_7": {
+ "message": "Показывать страницу приветствия при обновлении дополнения",
+ "description": ""
+ },
+ "options_misc_8": {
+ "message": "Сбросить все настройки на начальные",
+ "description": ""
+ },
+ "options_misc_10": {
+ "message": "Всплывающие уведомления и звуковое оповещение только для сообщений, полученных менее чем (в минутах):",
+ "description": ""
+ },
+ "options_misc_11": {
+ "message": "Установив здесь нулевое значение, Вы не получите ни всплывающего уведомления, ни звукового оповещения; однако значок уведомления будет работать.",
+ "description": ""
+ },
+ "options_misc_12": {
+ "message": "Не включать информацию об учетной записи в текст всплывающей подсказки ",
+ "description": ""
+ },
+ "options_misc_13": {
+ "message": "По умолчанию в тексте всплывающей подсказки значка на панели инструментов показывается название учетной записи.",
+ "description": ""
+ },
+ "options_misc_14": {
+ "message": "Не показывать точное количество непрочитанных сообщений на значке в панели инструментов, если оно превышает 999",
+ "description": ""
+ },
+ "options_misc_15": {
+ "message": "Открыть Часто Задаваемые Вопросы при обновлениях",
+ "description": ""
+ },
+ "options_plugins": {
+ "message": "Плагины:",
+ "description": ""
+ },
+ "options_plugins_1": {
+ "message": "Ярлыки и помеченные Gmail (экспериментальные)",
+ "description": ""
+ },
+ "options_plugins_2": {
+ "message": "Этот плагин отображает кнопку помеченные, а также цепочку ярлыков во всплывающем окне (только в расширенном режиме).",
+ "description": ""
+ },
+ "options_px": {
+ "message": "px",
+ "description": ""
+ },
+ "options_empty": {
+ "message": "не определен",
+ "description": ""
+ },
+ "options_button_test": {
+ "message": "Играть",
+ "description": ""
+ },
+ "options_button_reset": {
+ "message": "Сбросить настройки",
+ "description": ""
+ },
+ "popup_settings": {
+ "message": "настройки",
+ "description": ""
+ },
+ "popup_of": {
+ "message": "из",
+ "description": ""
+ },
+ "popup_wait": {
+ "message": "Ожидайте...",
+ "description": ""
+ },
+ "popup_date_format": {
+ "message": "%mm %dd, %yy",
+ "description": ""
+ },
+ "popup_no_subject": {
+ "message": "(без темы)",
+ "description": ""
+ },
+ "popup_open_settings": {
+ "message": "Открыть настройки",
+ "description": ""
+ },
+ "popup_open_inbox": {
+ "message": "Открыть входящие",
+ "description": ""
+ },
+ "popup_archive": {
+ "message": "Архивировать",
+ "description": ""
+ },
+ "popup_spam": {
+ "message": "Спам",
+ "description": ""
+ },
+ "popup_trash": {
+ "message": "Удалить",
+ "description": ""
+ },
+ "popup_refresh": {
+ "message": "Обновить",
+ "description": ""
+ },
+ "popup_read": {
+ "message": "Прочтено",
+ "description": ""
+ },
+ "popup_read_all": {
+ "message": "Все прочтено",
+ "description": ""
+ },
+ "popup_msg_1": {
+ "message": "только сейчас",
+ "description": ""
+ },
+ "popup_msg_2": {
+ "message": "1 минуту назад",
+ "description": ""
+ },
+ "popup_msg_3_format": {
+ "message": "%d минут назад",
+ "description": ""
+ },
+ "popup_msg_4": {
+ "message": "1 час назад",
+ "description": ""
+ },
+ "popup_msg_5": {
+ "message": "часов назад",
+ "description": ""
+ },
+ "popup_msg_6": {
+ "message": "Вчера",
+ "description": ""
+ },
+ "popup_msg_7_format": {
+ "message": "%d дней назад",
+ "description": ""
+ },
+ "popup_msg_8_format": {
+ "message": "%d недель назад",
+ "description": ""
+ },
+ "popup_msg_9_format": {
+ "message": "%d месяца(ев) назад",
+ "description": ""
+ },
+ "popup_msg_10": {
+ "message": "Январь",
+ "description": ""
+ },
+ "popup_msg_11": {
+ "message": "Февраль",
+ "description": ""
+ },
+ "popup_msg_12": {
+ "message": "Март",
+ "description": ""
+ },
+ "popup_msg_13": {
+ "message": "Апрель",
+ "description": ""
+ },
+ "popup_msg_14": {
+ "message": "Май",
+ "description": ""
+ },
+ "popup_msg_15": {
+ "message": "Июнь",
+ "description": ""
+ },
+ "popup_msg_16": {
+ "message": "Июль",
+ "description": ""
+ },
+ "popup_msg_17": {
+ "message": "Август",
+ "description": ""
+ },
+ "popup_msg_18": {
+ "message": "Сентябрь",
+ "description": ""
+ },
+ "popup_msg_19": {
+ "message": "Октябрь",
+ "description": ""
+ },
+ "popup_msg_20": {
+ "message": "Ноябрь",
+ "description": ""
+ },
+ "popup_msg_21": {
+ "message": "Декабрь",
+ "description": ""
+ },
+ "settings_open_title": {
+ "message": "Открыть страницу настроек",
+ "description": ""
+ },
+ "settings_open_label": {
+ "message": "Открыть настройки",
+ "description": ""
+ },
+ "gmail": {
+ "message": "Оповещения для Gmail™",
+ "description": ""
+ }
+}
\ No newline at end of file
diff --git a/v3.classic/_locales/sr/messages.json b/v3.classic/_locales/sr/messages.json
new file mode 100644
index 00000000..6814218b
--- /dev/null
+++ b/v3.classic/_locales/sr/messages.json
@@ -0,0 +1,762 @@
+{
+ "toolbar_label": {
+ "message": "Обавештења за Gmail™",
+ "description": ""
+ },
+ "tooltip_1": {
+ "message": "Леви клик: Отвори Gmail или панел прегледа поште",
+ "description": ""
+ },
+ "tooltip_2": {
+ "message": "Средњи (или Ctrl+Леви) клик: Освежи све налоге",
+ "description": ""
+ },
+ "tooltip_3": {
+ "message": "Десни клик: Избор налога",
+ "description": ""
+ },
+ "description": {
+ "message": "Обавештења за више Google Mail (Gmail) налога",
+ "description": ""
+ },
+ "log_in_to_your_account": {
+ "message": "Пријавите се својим Gmail налогом",
+ "description": ""
+ },
+ "msg_1": {
+ "message": "Картица је већ отворена. Кликните на дугме на алатној траци да отворите Gmail у новој картици или да се пребаците на постојећу Gmail картицу.",
+ "description": ""
+ },
+ "msg_2": {
+ "message": "Линк је копиран у клипборд.",
+ "description": ""
+ },
+ "msg_3": {
+ "message": "Одабрани текст је копиран у клипборд.",
+ "description": ""
+ },
+ "msg_4": {
+ "message": "Напомена: Да би обавештења радила исправно, морате бити пријављени на свој Google налог.",
+ "description": ""
+ },
+ "msg_5": {
+ "message": "Изаберите датотеку звучног обавештења",
+ "description": ""
+ },
+ "label_1": {
+ "message": "Освежи",
+ "description": ""
+ },
+ "label_2": {
+ "message": "Подешавања",
+ "description": ""
+ },
+ "label_3": {
+ "message": "Онемогући сва обавештења",
+ "description": ""
+ },
+ "label_4": {
+ "message": "На 5 минута",
+ "description": ""
+ },
+ "label_5": {
+ "message": "На 15 минута",
+ "description": ""
+ },
+ "label_6": {
+ "message": "На 30 минута",
+ "description": ""
+ },
+ "label_7": {
+ "message": "На 1 сат",
+ "description": ""
+ },
+ "label_8": {
+ "message": "На 2 сата",
+ "description": ""
+ },
+ "label_9": {
+ "message": "На 5 сати",
+ "description": ""
+ },
+ "label_13": {
+ "message": "У прилагођеном временском периоду",
+ "description": ""
+ },
+ "label_10": {
+ "message": "Омогући обавештења (сесија)",
+ "description": ""
+ },
+ "label_11": {
+ "message": "Напиши нову поруку",
+ "description": ""
+ },
+ "label_12": {
+ "message": "Отвори FAQ",
+ "description": ""
+ },
+ "label_14": {
+ "message": "Пријављени налози",
+ "description": ""
+ },
+ "unknown": {
+ "message": "непознат",
+ "description": ""
+ },
+ "and": {
+ "message": "и",
+ "description": ""
+ },
+ "log_into_your_account": {
+ "message": "Пријавите се својим Gmail налогом",
+ "description": ""
+ },
+ "notification": {
+ "message": "Од: [author_email][break]Наслов: [title][break]Кратак преглед: [summary]",
+ "description": ""
+ },
+ "options_title": {
+ "message": "Gmail™ Notifier - Опције",
+ "description": ""
+ },
+ "options_inshort": {
+ "message": "Обавештења за више Google Mail (Gmail) налога.",
+ "description": ""
+ },
+ "options_donation": {
+ "message": "Подржи развој",
+ "description": ""
+ },
+ "options_timings": {
+ "message": "Подешавања времена",
+ "description": ""
+ },
+ "options_timings_l1": {
+ "message": "Провери нову пошту сваких (у секундама):",
+ "description": ""
+ },
+ "options_timings_l2": {
+ "message": "Минимални период је 10 секунди.",
+ "description": ""
+ },
+ "options_timings_l3": {
+ "message": "Подсети на сву непрочитану пошту сваких (у минутима):",
+ "description": ""
+ },
+ "options_timings_l4": {
+ "message": "Постави вредност на нула за искључивање подсетника.",
+ "description": ""
+ },
+ "options_timings_l5": {
+ "message": "Минимални период је 5 минута.",
+ "description": ""
+ },
+ "options_timings_l6": {
+ "message": "Све вредности осим нуле покрећу десктоп обавештење и звучни сигнал (као када пристигне нова пошта) у задатим временским периодима ако имате непрочитану пошту.",
+ "description": ""
+ },
+ "options_timings_l7": {
+ "message": "Не проверавај нову пошту при покретању у року од (у секундама):",
+ "description": ""
+ },
+ "options_timings_l8": {
+ "message": "Постави вредност на нула за непроверавање поште до првог ручног ажурирања [није доступно у Safari прегледачу].",
+ "description": ""
+ },
+ "options_gmail": {
+ "message": "Gmail:",
+ "description": ""
+ },
+ "options_gmail_1": {
+ "message": "Основни налог (/mail/u/0/)",
+ "description": ""
+ },
+ "options_gmail_2": {
+ "message": "Одвојити ознаке \",\" (зарезом).",
+ "description": ""
+ },
+ "options_gmail_3": {
+ "message": "Други налог (/mail/u/1/)",
+ "description": ""
+ },
+ "options_gmail_4": {
+ "message": "Трећи налог (/mail/u/2/)",
+ "description": ""
+ },
+ "options_gmail_5": {
+ "message": "Четврти налог (/mail/u/3/)",
+ "description": ""
+ },
+ "options_gmail_6": {
+ "message": "Пети налог (/mail/u/4/)",
+ "description": ""
+ },
+ "options_gmail_7": {
+ "message": "Шести налог (/mail/u/5/)",
+ "description": ""
+ },
+ "options_gmail_8": {
+ "message": "Означи поруке као прочитане при архивирању",
+ "description": ""
+ },
+ "options_gmail_15": {
+ "message": "Неке популарне ознаке:",
+ "description": ""
+ },
+ "options_gmail_10": {
+ "message": "Примај обавештења за следеће ознаке и налоге:",
+ "description": ""
+ },
+ "options_gmail_11": {
+ "message": "Прилагођени канали:",
+ "description": ""
+ },
+ "options_gmail_12": {
+ "message": "Одвојити канале \",\" (зарезом). Пример канала: https://mail.google.com/mail/u/0/feed/atom/inbox",
+ "description": ""
+ },
+ "options_gmail_13": {
+ "message": "Напомена: максимални број за све ознаке осим за \"inbox\" је 20 (Google канали подржавају само 20 најновијих ставки)",
+ "description": ""
+ },
+ "options_gmail_14": {
+ "message": "Напомена: да би Notifier пратио више од 5 налога, додајте адресе канала у поље \"Прилагођени канали\". На пример, за праћење 6. и 7. налога додајте: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox",
+ "description": ""
+ },
+ "options_notifications": {
+ "message": "Обавештења:",
+ "description": ""
+ },
+ "options_notifications_1": {
+ "message": "Прикажи десктоп обавештења о новој пошти",
+ "description": ""
+ },
+ "options_notifications_2": {
+ "message": "Прикажи десктоп обавештења у трајању од (у секундама):",
+ "description": ""
+ },
+ "options_notifications_3": {
+ "message": "Ова опција можда неће радити на Вашем оперативном систему.",
+ "description": ""
+ },
+ "options_notifications_4": {
+ "message": "Формат обавештења",
+ "description": ""
+ },
+ "options_notifications_5": {
+ "message": "Доступне варијабле:",
+ "description": ""
+ },
+ "options_notifications_6": {
+ "message": "Скрати обавештења дужа од",
+ "description": ""
+ },
+ "options_notifications_7": {
+ "message": "карактера у пољима [title] и [summary].",
+ "description": ""
+ },
+ "options_notifications_8": {
+ "message": "Да би се избегло сечење поруке, употребите велики број.",
+ "description": ""
+ },
+ "options_notifications_9": {
+ "message": "Пусти звучно обавештење о новој пошти",
+ "description": ""
+ },
+ "options_notifications_10": {
+ "message": "Савет за кориснике Mac система. Од Firefox 28.0 верзије, свим десктоп обавештењима управља Mac Notification Center који емитује додатни звучни сигнал. Потребно је да одчекирате ово звучно обавештење или оно које је генерисано од стране Notification Center Mac система.",
+ "description": ""
+ },
+ "options_notifications_11": {
+ "message": "Прикажи \"Windows обавештења на траци задатака\" или \"Mac OS Dock обавештења\"",
+ "description": ""
+ },
+ "options_notifications_12": {
+ "message": "Обавештења на траци задатака нису подржана у Linux систему.",
+ "description": ""
+ },
+ "options_notifications_13": {
+ "message": "Отвори панел прегледа поште када кликнем на иконицу обавештења на траци задатака (само Windows, бета)",
+ "description": ""
+ },
+ "options_notifications_14": {
+ "message": "Ово је експериментална функција и може изазвати нестабилност Firefox прегледача. [Неопходно је поновно покретање].",
+ "description": ""
+ },
+ "options_notifications_15": {
+ "message": "Подразумевано звучно обавештење је",
+ "description": ""
+ },
+ "options_notifications_16": {
+ "message": "Gmail Notifier подразумевани звук",
+ "description": ""
+ },
+ "options_notifications_17": {
+ "message": "Checker Plus bell",
+ "description": ""
+ },
+ "options_notifications_18": {
+ "message": "Checker Plus ding",
+ "description": ""
+ },
+ "options_notifications_19": {
+ "message": "Windows email звук",
+ "description": ""
+ },
+ "options_notifications_20": {
+ "message": "Кориснички дефинисани звук",
+ "description": ""
+ },
+ "options_notifications_21": {
+ "message": "Кориснички дефинисани звук обавештења је",
+ "description": ""
+ },
+ "options_notifications_22": {
+ "message": "Ако ваш прегледач не емитује прилагођени звук обавештења, покушајте да га конвертујете у WAV формат користећи алат за конвертовање на мрежи.",
+ "description": ""
+ },
+ "options_notifications_35": {
+ "message": "За избор новог прилагођеног звука, изаберите прво уграђени звук а затим промените опцију на прилагођени звук",
+ "description": ""
+ },
+ "options_notifications_23": {
+ "message": "Јачина звука обавештења",
+ "description": ""
+ },
+ "options_notifications_24": {
+ "message": "Јачина је број од 0 до 100 при чему је 100 најгласније (подразумевано).",
+ "description": ""
+ },
+ "options_notifications_25": {
+ "message": "У Ѕafari прегледачу највероватније се подразумевани звук обавештења неће емитовати исправно, у том случају употребите прилагођени звук за обавештење.",
+ "description": ""
+ },
+ "options_notifications_26": {
+ "message": "Увек прикажи иконицу обавештења у системској траци (само Windows)",
+ "description": ""
+ },
+ "options_notifications_27": {
+ "message": "Иконица обавештења у системској траци ће бити приказана чак и ако нема непрочитаних порука.",
+ "description": ""
+ },
+ "options_notifications_28": {
+ "message": "Онемогући сва обавештења у прилагођеном временском периоду (у минутима)",
+ "description": ""
+ },
+ "options_notifications_29": {
+ "message": "Ова опција се односи на мени на десном клику на дугмету на алатној траци -> онемогући сва обавештења -> прилагођени временски период",
+ "description": ""
+ },
+ "options_notifications_30": {
+ "message": "Споји сва истовремена десктоп обавештења у једно обавештење",
+ "description": ""
+ },
+ "options_notifications_31": {
+ "message": "Прилагођени звук обавештења",
+ "description": ""
+ },
+ "options_notifications_32": {
+ "message": "име или е-пошта садржи",
+ "description": ""
+ },
+ "options_notifications_33": {
+ "message": "наслов е-поште садржи",
+ "description": ""
+ },
+ "options_notifications_34": {
+ "message": "кратак преглед е-поште садржи",
+ "description": ""
+ },
+ "options_notifications_36": {
+ "message": "Захтевај да Gmail спречи преусмеравање на 'inbox.google.com'",
+ "description": ""
+ },
+ "options_notifications_37": {
+ "message": "Прикажи бројчану ознаку",
+ "description": ""
+ },
+ "options_notifications_38": {
+ "message": "Брже радње (означи као прочитано, избриши...) (Размотрите радње које треба решити када се примају заглавља",
+ "description": ""
+ },
+ "options_notifications_40": {
+ "message": "Дозволи брзе радње из поља обавештења (највише две радње) (само Chrome)",
+ "description": ""
+ },
+ "options_notifications_41": {
+ "message": "Означи као прочитано",
+ "description": ""
+ },
+ "options_notifications_42": {
+ "message": "Архивирај",
+ "description": ""
+ },
+ "options_notifications_43": {
+ "message": "Избриши",
+ "description": ""
+ },
+ "options_tab": {
+ "message": "Отварање картица:",
+ "description": ""
+ },
+ "options_tab_1": {
+ "message": "Потражи отворени Gmail налог само у активном прозору",
+ "description": ""
+ },
+ "options_tab_2": {
+ "message": "Не тражи у другим прозорима прегледача отворене Gmail налоге. Ако Gmail није отворен у активном прозору, отвориће се у новој картици.",
+ "description": ""
+ },
+ "options_tab_3": {
+ "message": "Отвори нови Gmail налог поред активне картице",
+ "description": ""
+ },
+ "options_tab_4": {
+ "message": "Отвори Gmail налог у активној картици",
+ "description": ""
+ },
+ "options_tab_5": {
+ "message": "Отвори Gmail налог у позадинској картици",
+ "description": ""
+ },
+ "options_tab_6": {
+ "message": "Отвори Gmail налог у новом прозору",
+ "description": ""
+ },
+ "options_tab_7": {
+ "message": "Увек употреби празну картицу уместо отварања нове картице (када је отварање у картици активирано)",
+ "description": ""
+ },
+ "options_tab_8": {
+ "message": "Занемари отворене Gmail картице",
+ "description": ""
+ },
+ "options_tab_9": {
+ "message": "Када је одчекирано, Gmail Notifier проверава у активном или свим отвореним прозорима да ли има отворених Gmail инстанци и пребацује на картицу када је отварање картице захтевано.",
+ "description": ""
+ },
+ "options_tab_10": {
+ "message": "Отвори пошту у основном HTML режиму",
+ "description": ""
+ },
+ "options_tab_11": {
+ "message": "Open the newest unread email instead of opening the INBOX folder",
+ "description": ""
+ },
+ "options_toolbar": {
+ "message": "Алатна трака:",
+ "description": ""
+ },
+ "options_toolbar_1": {
+ "message": "Понашање дугмета на алатној картици",
+ "description": ""
+ },
+ "options_toolbar_2": {
+ "message": "Увек отвори панел прегледа поште",
+ "description": ""
+ },
+ "options_toolbar_3": {
+ "message": "Отвори Gmail налог ако је само један налог пријављен",
+ "description": ""
+ },
+ "options_toolbar_18": {
+ "message": "Отвори Gmail налог (принудно)",
+ "description": ""
+ },
+ "options_toolbar_4": {
+ "message": "Режим приказа панела",
+ "description": ""
+ },
+ "options_toolbar_5": {
+ "message": "Прикажи кратак преглед",
+ "description": ""
+ },
+ "options_toolbar_6": {
+ "message": "Прикажи пун садржај",
+ "description": ""
+ },
+ "options_toolbar_7": {
+ "message": "Ширина панела у режиму приказа пуног садржаја (у пикселима):",
+ "description": ""
+ },
+ "options_toolbar_8": {
+ "message": "Минимална ширина је 500 пиксела.",
+ "description": ""
+ },
+ "options_toolbar_9": {
+ "message": "Висина панела у режиму приказа пуног садржаја (у пикселима):",
+ "description": ""
+ },
+ "options_toolbar_10": {
+ "message": "Минимална висина је 500 пиксела.",
+ "description": ""
+ },
+ "options_toolbar_11": {
+ "message": "Омогући тастерске пречице у панелу",
+ "description": ""
+ },
+ "options_toolbar_12": {
+ "message": "!: Пријави непожељну поруку, #: Отпад, e: Архивирај, Shift + i: Означи као прочитано.",
+ "description": ""
+ },
+ "options_toolbar_13": {
+ "message": "Прикажи пошту као HTML у режиму приказа пуног садржаја",
+ "description": ""
+ },
+ "options_toolbar_14": {
+ "message": "Одчекирајте ако више волите приказ само текста у режиму приказа пуног садржаја.",
+ "description": ""
+ },
+ "options_toolbar_15": {
+ "message": "Средњи клик на дугме на алатној траци",
+ "description": ""
+ },
+ "options_toolbar_16": {
+ "message": "Освежава све налоге",
+ "description": ""
+ },
+ "options_toolbar_17": {
+ "message": "Отвара основни Gmail налог",
+ "description": ""
+ },
+ "options_misc": {
+ "message": "Остало:",
+ "description": ""
+ },
+ "options_misc_1": {
+ "message": "Поређај налоге по алфабету",
+ "description": ""
+ },
+ "options_misc_2": {
+ "message": "Подразумевани редослед је по времену пријављивања.",
+ "description": ""
+ },
+ "options_misc_3": {
+ "message": "Боја иконице на алатној траци",
+ "description": ""
+ },
+ "options_misc_4": {
+ "message": "Сива боја за \"Нема непрочитаних\" и плава за \"Неповезан\"",
+ "description": ""
+ },
+ "options_misc_5": {
+ "message": "Плава боја за \"Нема непрочитаних\" и сива за \"Неповезан\"",
+ "description": ""
+ },
+ "options_misc_9": {
+ "message": "Црвена боја за \"Нема непрочитаних\" и сива за \"Неповезан\"",
+ "description": ""
+ },
+ "options_misc_6": {
+ "message": "Прикажи десктоп обавештење као упозорење да је Gmail већ отворен у активној картици",
+ "description": ""
+ },
+ "options_misc_7": {
+ "message": "Прикажи страницу добродошлице при надоградњи",
+ "description": ""
+ },
+ "options_misc_8": {
+ "message": "Врати сва подешавања на фабричка",
+ "description": ""
+ },
+ "options_misc_10": {
+ "message": "Покрени десктоп и звучна обавештења само за пошту пристиглу у последњих (у минутима): ",
+ "description": ""
+ },
+ "options_misc_11": {
+ "message": "Постављајући ову вредност на нула, нећете примати ни десктоп ни звучна обавештења; ипак, обавештење у виду ознаке на иконици ће бити приказано.",
+ "description": ""
+ },
+ "options_misc_12": {
+ "message": "Не обухватај детаље о пријављивању у опису алатке",
+ "description": ""
+ },
+ "options_misc_13": {
+ "message": "Подразумевано, у опису алатке на дугмету на алатној траци се приказују информације о пријављивању. Одчекирањем ове опције, опис алатке остаје на подразумеваној вредности.",
+ "description": ""
+ },
+ "options_misc_14": {
+ "message": "Не приказуј тачан број непрочитаних порука на иконици ако је већи од 999",
+ "description": ""
+ },
+ "options_misc_15": {
+ "message": "Отвори најчешће постављана питања након ажурирања",
+ "description": ""
+ },
+ "options_plugins": {
+ "message": "Додатне компоненте:",
+ "description": ""
+ },
+ "options_plugins_1": {
+ "message": "Gmail ознаке и дугме звезда (експериментално)",
+ "description": ""
+ },
+ "options_plugins_2": {
+ "message": "Ова додатна компонента приказује дугме звезда као и ознаке тема у искачућем прозору (само режим приказа пуног садржаја).",
+ "description": ""
+ },
+ "options_px": {
+ "message": "px",
+ "description": ""
+ },
+ "options_empty": {
+ "message": "недефинисано",
+ "description": ""
+ },
+ "options_button_test": {
+ "message": "Репродукуј",
+ "description": ""
+ },
+ "options_button_reset": {
+ "message": "Поништи подешавања",
+ "description": ""
+ },
+ "popup_settings": {
+ "message": "подешавања",
+ "description": ""
+ },
+ "popup_of": {
+ "message": "од",
+ "description": ""
+ },
+ "popup_wait": {
+ "message": "Сачекај...",
+ "description": ""
+ },
+ "popup_date_format": {
+ "message": "%dd. %mm %yy.",
+ "description": ""
+ },
+ "popup_no_subject": {
+ "message": "(без наслова)",
+ "description": ""
+ },
+ "popup_open_settings": {
+ "message": "Отвори подешавања",
+ "description": ""
+ },
+ "popup_open_inbox": {
+ "message": "Отвори пријемно сандуче",
+ "description": ""
+ },
+ "popup_archive": {
+ "message": "Архивирај",
+ "description": ""
+ },
+ "popup_spam": {
+ "message": "Пријави непожељну поруку",
+ "description": ""
+ },
+ "popup_trash": {
+ "message": "Избриши",
+ "description": ""
+ },
+ "popup_refresh": {
+ "message": "Освежи",
+ "description": ""
+ },
+ "popup_read": {
+ "message": "Озн. као прочитано",
+ "description": ""
+ },
+ "popup_read_all": {
+ "message": "Означи све као прочитано",
+ "description": ""
+ },
+ "popup_msg_1": {
+ "message": "управо сада",
+ "description": ""
+ },
+ "popup_msg_2": {
+ "message": "пре 1 минут",
+ "description": ""
+ },
+ "popup_msg_3_format": {
+ "message": "пре %d минута",
+ "description": ""
+ },
+ "popup_msg_4": {
+ "message": "пре 1 сат",
+ "description": ""
+ },
+ "popup_msg_5": {
+ "message": "сата/и раније",
+ "description": ""
+ },
+ "popup_msg_6": {
+ "message": "јуче",
+ "description": ""
+ },
+ "popup_msg_7_format": {
+ "message": "пре %d дана",
+ "description": ""
+ },
+ "popup_msg_8_format": {
+ "message": "пре %d седмице/а",
+ "description": ""
+ },
+ "popup_msg_9_format": {
+ "message": "пре %d месеца",
+ "description": ""
+ },
+ "popup_msg_10": {
+ "message": "јануар",
+ "description": ""
+ },
+ "popup_msg_11": {
+ "message": "фебруар",
+ "description": ""
+ },
+ "popup_msg_12": {
+ "message": "март",
+ "description": ""
+ },
+ "popup_msg_13": {
+ "message": "април",
+ "description": ""
+ },
+ "popup_msg_14": {
+ "message": "мај",
+ "description": ""
+ },
+ "popup_msg_15": {
+ "message": "јун",
+ "description": ""
+ },
+ "popup_msg_16": {
+ "message": "јул",
+ "description": ""
+ },
+ "popup_msg_17": {
+ "message": "август",
+ "description": ""
+ },
+ "popup_msg_18": {
+ "message": "септембар",
+ "description": ""
+ },
+ "popup_msg_19": {
+ "message": "октобар",
+ "description": ""
+ },
+ "popup_msg_20": {
+ "message": "новембар",
+ "description": ""
+ },
+ "popup_msg_21": {
+ "message": "децембар",
+ "description": ""
+ },
+ "settings_open_title": {
+ "message": "Отвори страницу опција (подешавања)",
+ "description": ""
+ },
+ "settings_open_label": {
+ "message": "Отвори опције",
+ "description": ""
+ },
+ "gmail": {
+ "message": "Обавештења за Gmail™",
+ "description": ""
+ }
+}
\ No newline at end of file
diff --git a/v3.classic/_locales/tr/messages.json b/v3.classic/_locales/tr/messages.json
new file mode 100644
index 00000000..47cb5884
--- /dev/null
+++ b/v3.classic/_locales/tr/messages.json
@@ -0,0 +1,758 @@
+{
+ "toolbar_label": {
+ "message": "Notifier for Gmail™",
+ "description": ""
+ },
+ "tooltip_1": {
+ "message": "Left click: Open Gmail or mail preview panel",
+ "description": ""
+ },
+ "tooltip_2": {
+ "message": "Middle (or Ctrl+Left) click: Refresh all accounts",
+ "description": ""
+ },
+ "tooltip_3": {
+ "message": "Right click: Account selections",
+ "description": ""
+ },
+ "description": {
+ "message": "Multiple label and account notifier for Google Mail (Gmail)",
+ "description": ""
+ },
+ "log_in_to_your_account": {
+ "message": "Lütfen Gmail hesabınıza giriş yapın",
+ "description": ""
+ },
+ "msg_1": {
+ "message": "Sekme zaten açık. Gmail'i yeni bir sekmede açmak veya mevcut bir Gmail sekmesine geçmek için araç çubuğu düğmesine tıklayın.",
+ "description": ""
+ },
+ "msg_2": {
+ "message": "Bağlantı panoya kopyalandı.",
+ "description": ""
+ },
+ "msg_3": {
+ "message": "Seçilen metin panoya kopyalandı.",
+ "description": ""
+ },
+ "msg_4": {
+ "message": "Note: For the notifier to work properly, you need to be logged-in into your Google account.",
+ "description": ""
+ },
+ "msg_5": {
+ "message": "Bir ses dosyası seçin",
+ "description": ""
+ },
+ "label_1": {
+ "message": "Yenile",
+ "description": ""
+ },
+ "label_2": {
+ "message": "Ayarlar",
+ "description": ""
+ },
+ "label_3": {
+ "message": "Tüm bildirimleri devre dışı bırak",
+ "description": ""
+ },
+ "label_4": {
+ "message": "5 dakika",
+ "description": ""
+ },
+ "label_5": {
+ "message": "15 dakika",
+ "description": ""
+ },
+ "label_6": {
+ "message": "30 dakika",
+ "description": ""
+ },
+ "label_7": {
+ "message": "1 saat",
+ "description": ""
+ },
+ "label_8": {
+ "message": "2 saat",
+ "description": ""
+ },
+ "label_9": {
+ "message": "5 saat",
+ "description": ""
+ },
+ "label_13": {
+ "message": "Özel bir süre için",
+ "description": ""
+ },
+ "label_10": {
+ "message": "Bildirimleri etkinleştir",
+ "description": ""
+ },
+ "label_11": {
+ "message": "Bir e-posta oluştur",
+ "description": ""
+ },
+ "label_12": {
+ "message": "SSS'i aç",
+ "description": ""
+ },
+ "label_14": {
+ "message": "Giriş yapılan hesaplar",
+ "description": ""
+ },
+ "unknown": {
+ "message": "bilinmeyen",
+ "description": ""
+ },
+ "and": {
+ "message": "ve",
+ "description": ""
+ },
+ "log_into_your_account": {
+ "message": "Please log into your account",
+ "description": ""
+ },
+ "notification": {
+ "message": "From: [author_email][break]Title: [title][break]Summary: [summary]",
+ "description": ""
+ },
+ "options_title": {
+ "message": "Seçenekler - Gmail™ Notifier",
+ "description": ""
+ },
+ "options_inshort": {
+ "message": "Multiple label and account notifier for Google Mail (Gmail).",
+ "description": ""
+ },
+ "options_donation": {
+ "message": "Geliştirmeye Destek ol",
+ "description": ""
+ },
+ "options_timings": {
+ "message": "Zamanlama:",
+ "description": ""
+ },
+ "options_timings_l1": {
+ "message": "Şu kadar saniyede bir yeni e-postaları kontrol et:",
+ "description": ""
+ },
+ "options_timings_l2": {
+ "message": "En az süre 10 saniyedir.",
+ "description": ""
+ },
+ "options_timings_l3": {
+ "message": "Şu kadar dakikada bir okunmamış e-postaları hatırlat:",
+ "description": ""
+ },
+ "options_timings_l4": {
+ "message": "Hiçbir zaman hatırlatılmaması için değeri 0 (sıfır) olarak ayarlayın.",
+ "description": ""
+ },
+ "options_timings_l5": {
+ "message": "En az süre 5 dakikadır.",
+ "description": ""
+ },
+ "options_timings_l6": {
+ "message": "Değerler 0 (sıfır) değilse okunmamış e-postalar hem masaüstü bildirimi hem de uyarı sesiyle size bildirilir.",
+ "description": ""
+ },
+ "options_timings_l7": {
+ "message": "Şu saniyeliğine başlangıçta yeni e-postaları kontrol etme:",
+ "description": ""
+ },
+ "options_timings_l8": {
+ "message": "İlk elle yenilemeye kadar e-posta kontrolünü kapamak için değeri 0 (sıfır) olarak ayarlayın [Safari için geçerli değildir].",
+ "description": ""
+ },
+ "options_gmail": {
+ "message": "Gmail:",
+ "description": ""
+ },
+ "options_gmail_1": {
+ "message": "Birinci (asıl) hesap (/mail/u/0/)",
+ "description": ""
+ },
+ "options_gmail_2": {
+ "message": "Etiketleri \",\" (virgül) ile ayırın.",
+ "description": ""
+ },
+ "options_gmail_3": {
+ "message": "İkinci hesap (/mail/u/1/)",
+ "description": ""
+ },
+ "options_gmail_4": {
+ "message": "Üçüncü hesap (/mail/u/2/)",
+ "description": ""
+ },
+ "options_gmail_5": {
+ "message": "Dördüncü hesap (/mail/u/3/)",
+ "description": ""
+ },
+ "options_gmail_6": {
+ "message": "Beşinci hesap (/mail/u/4/)",
+ "description": ""
+ },
+ "options_gmail_7": {
+ "message": "Altıncı hesap (/mail/u/5/)",
+ "description": ""
+ },
+ "options_gmail_8": {
+ "message": "İletiyi arşivlerken okunmuş olarak işaretle",
+ "description": ""
+ },
+ "options_gmail_15": {
+ "message": "Some popular labels:",
+ "description": ""
+ },
+ "options_gmail_10": {
+ "message": "Aşağıdaki etiketler ve hesaplar için bildirim alın:",
+ "description": ""
+ },
+ "options_gmail_11": {
+ "message": "Custom feeds:",
+ "description": ""
+ },
+ "options_gmail_12": {
+ "message": "Separate feeds by \",\" (Comma). Sample feed: https://mail.google.com/mail/u/0/feed/atom/inbox",
+ "description": ""
+ },
+ "options_gmail_13": {
+ "message": "Note: maximum number for all labels except \"inbox\" is 20 (Google feeds only supply the 20 newest entries)",
+ "description": ""
+ },
+ "options_gmail_14": {
+ "message": "Note: for the Notifier to listen for more than 5 accounts, add feeds URLs to the \"Custom feeds\" field. For instance to listen to the 6 and 7th accounts add: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox",
+ "description": ""
+ },
+ "options_notifications": {
+ "message": "Bildirimler:",
+ "description": ""
+ },
+ "options_notifications_1": {
+ "message": "Yeni e-postalar için masaüstü bildirimlerini aç",
+ "description": ""
+ },
+ "options_notifications_2": {
+ "message": "Masaüstü bildirimlerini şu kadar saniye göster:",
+ "description": ""
+ },
+ "options_notifications_3": {
+ "message": "Bu seçenek işletim sisteminize bağlı olarak çalışmayabilir.",
+ "description": ""
+ },
+ "options_notifications_4": {
+ "message": "Bildirim şekli",
+ "description": ""
+ },
+ "options_notifications_5": {
+ "message": "Mevcut değişkenler:",
+ "description": ""
+ },
+ "options_notifications_6": {
+ "message": "Gelen e-posta yandaki sayı kadar karakterden fazla ise bildirim gösterme:",
+ "description": ""
+ },
+ "options_notifications_7": {
+ "message": " ",
+ "description": ""
+ },
+ "options_notifications_8": {
+ "message": "Elips şeklinde olmaması için burada büyük bir sayı kullanın veya varsayılan olarak bırakın.",
+ "description": ""
+ },
+ "options_notifications_9": {
+ "message": "Yeni e-postalar için uyarı sesi çal",
+ "description": ""
+ },
+ "options_notifications_10": {
+ "message": "Mac kullanıcıları için not: Firefox 28.0 sürümünde, tüm masaüstü bildirimleri, ekstra bir uyarıya neden olan Mac Bildirim Merkezi tarafından kontrol edilmektedir. Bu sesli bildirimin veya Bildirim Merkezi tarafından oluşturulan bildirimin tikini kaldırmanız gerekir.",
+ "description": ""
+ },
+ "options_notifications_11": {
+ "message": "\"Windows görev çubuğu bildirimi\" veya \"Mac OS Dock bildirimi\" ni görüntüle",
+ "description": ""
+ },
+ "options_notifications_12": {
+ "message": "Görev çubuğu bildirimleri şu anda Linux işletim sistemlerinde desteklenmemektedir.",
+ "description": ""
+ },
+ "options_notifications_13": {
+ "message": "Görev çubuğu bildirim simgesini tıklattığınızda araç çubuğu panelini açın (Yalnızca Windows, Beta)",
+ "description": ""
+ },
+ "options_notifications_14": {
+ "message": "Bu özellik oldukça deneyseldir ve Firefox tarayıcınızı kararsız hale getirebilir. [Yeniden başlatma gerektirir].",
+ "description": ""
+ },
+ "options_notifications_15": {
+ "message": "Varsayılan sesli bildirim",
+ "description": ""
+ },
+ "options_notifications_16": {
+ "message": "Gmail Bildirici varsayılan sesi",
+ "description": ""
+ },
+ "options_notifications_17": {
+ "message": "Checker Plus bildirim sesi",
+ "description": ""
+ },
+ "options_notifications_18": {
+ "message": "Checker Plus tınlama sesi",
+ "description": ""
+ },
+ "options_notifications_19": {
+ "message": "Windows e-posta sesi",
+ "description": ""
+ },
+ "options_notifications_20": {
+ "message": "Özel bildirim sesi seçin",
+ "description": ""
+ },
+ "options_notifications_21": {
+ "message": "Özel bildirim sesiniz:",
+ "description": ""
+ },
+ "options_notifications_22": {
+ "message": "Tarayıcınız özel bildirim sesini çalmıyorsa, çevrimiçi bir dönüştürme aracı kullanarak WAV formatına dönüştürmeyi deneyin.",
+ "description": ""
+ },
+ "options_notifications_35": {
+ "message": "To select a new custom sound, select a built-in sound first and then change the option to custom sound",
+ "description": ""
+ },
+ "options_notifications_23": {
+ "message": "Bildirim sesinin değeri",
+ "description": ""
+ },
+ "options_notifications_24": {
+ "message": "Ses, 0 ile 100 arasında bir sayıdır; burada 100, en yüksek ses düzeyidir (varsayılan).",
+ "description": ""
+ },
+ "options_notifications_25": {
+ "message": "Safari'de varsayılan sesli bildirimler düzgün şekilde oynatılmıyorsa, özel bir ses dosyası kullanın.",
+ "description": ""
+ },
+ "options_notifications_26": {
+ "message": "Always show tray notification (Windows only)",
+ "description": ""
+ },
+ "options_notifications_27": {
+ "message": "Tray notification will be shown even if there is no unread message.",
+ "description": ""
+ },
+ "options_notifications_28": {
+ "message": "Disable all notifications for a custom time period (in minutes):",
+ "description": ""
+ },
+ "options_notifications_29": {
+ "message": "This option is related to the right click menu on the toolbar button -> disable all notifications -> custom time period.",
+ "description": ""
+ },
+ "options_notifications_30": {
+ "message": "Combine all concurrent desktop notifications into a single notification",
+ "description": ""
+ },
+ "options_notifications_31": {
+ "message": "Özel bildirim sesi",
+ "description": ""
+ },
+ "options_notifications_32": {
+ "message": "name or email contains",
+ "description": ""
+ },
+ "options_notifications_33": {
+ "message": "email title contains",
+ "description": ""
+ },
+ "options_notifications_34": {
+ "message": "email summary contains",
+ "description": ""
+ },
+ "options_notifications_36": {
+ "message": "Ask Gmail to prevent 'inbox.google.com' redirection",
+ "description": ""
+ },
+ "options_notifications_37": {
+ "message": "Display Badge number",
+ "description": ""
+ },
+ "options_notifications_38": {
+ "message": "Faster actions (mark as read, delete, ...) (Consider actions to be resolved when headers are received)",
+ "description": ""
+ },
+ "options_notifications_40": {
+ "message": "Allow quick actions from notification box (maximum two actions) (Chrome only)",
+ "description": ""
+ },
+ "options_notifications_41": {
+ "message": "Mark as Read",
+ "description": ""
+ },
+ "options_notifications_42": {
+ "message": "Archive",
+ "description": ""
+ },
+ "options_notifications_43": {
+ "message": "Trash",
+ "description": ""
+ },
+ "options_tab": {
+ "message": "Sekme Açılışı:",
+ "description": ""
+ },
+ "options_tab_1": {
+ "message": "Sadece aktif pencerede açık bir Gmail hesabı arayın",
+ "description": ""
+ },
+ "options_tab_2": {
+ "message": "Do not search other browser windows for open Gmail accounts. If Gmail is not open in the active window, open a new tab.",
+ "description": ""
+ },
+ "options_tab_3": {
+ "message": "Open new Gmail account next to the active tab",
+ "description": ""
+ },
+ "options_tab_4": {
+ "message": "Open Gmail account in the active tab",
+ "description": ""
+ },
+ "options_tab_5": {
+ "message": "Open Gmail account in a background tab",
+ "description": ""
+ },
+ "options_tab_6": {
+ "message": "Open Gmail account in a new window",
+ "description": ""
+ },
+ "options_tab_7": {
+ "message": "Always use blank tabs instead of opening a new tab when open in tab is activated",
+ "description": ""
+ },
+ "options_tab_8": {
+ "message": "Ignore opened Gmail tabs",
+ "description": ""
+ },
+ "options_tab_9": {
+ "message": "When unchecked, Gmail Notifier checks either active window or all open windows for open instance of Gmail and switch to the tab when tab opening is requested.",
+ "description": ""
+ },
+ "options_tab_10": {
+ "message": "Open emails in basic HTML mode",
+ "description": ""
+ },
+ "options_toolbar": {
+ "message": "Araç Çubuğu:",
+ "description": ""
+ },
+ "options_toolbar_1": {
+ "message": "Toolbar button behaviour",
+ "description": ""
+ },
+ "options_toolbar_2": {
+ "message": "Always open email preview panel",
+ "description": ""
+ },
+ "options_toolbar_3": {
+ "message": "Yalnızca bir hesap giriş yaptıysa, Gmail hesabını aç",
+ "description": ""
+ },
+ "options_toolbar_18": {
+ "message": "Open Gmail account (forced)",
+ "description": ""
+ },
+ "options_toolbar_4": {
+ "message": "Toolbar panel mode",
+ "description": ""
+ },
+ "options_toolbar_5": {
+ "message": "Sadece özetini göster",
+ "description": ""
+ },
+ "options_toolbar_6": {
+ "message": "Tam içeriği göster",
+ "description": ""
+ },
+ "options_toolbar_7": {
+ "message": "Toolbar panel width in the full-content view mode is (in pixels):",
+ "description": ""
+ },
+ "options_toolbar_8": {
+ "message": "Minimum width is 500px.",
+ "description": ""
+ },
+ "options_toolbar_9": {
+ "message": "Toolbar panel height in the full-content view mode is (in pixels):",
+ "description": ""
+ },
+ "options_toolbar_10": {
+ "message": "Minimum height is 500px.",
+ "description": ""
+ },
+ "options_toolbar_11": {
+ "message": "Support keyboard shortcuts on the toolbar panel",
+ "description": ""
+ },
+ "options_toolbar_12": {
+ "message": "!: Report as spam, #: Trash, e: Archive, Shift + i: Mark as read.",
+ "description": ""
+ },
+ "options_toolbar_13": {
+ "message": "Render emails as HTML in full-content mode",
+ "description": ""
+ },
+ "options_toolbar_14": {
+ "message": "If you prefer text-only rendering in the full-content mode, uncheck the box.",
+ "description": ""
+ },
+ "options_toolbar_15": {
+ "message": "Middle-click on the toolbar button to",
+ "description": ""
+ },
+ "options_toolbar_16": {
+ "message": "Tüm hesapları yenile",
+ "description": ""
+ },
+ "options_toolbar_17": {
+ "message": "Open primary Gmail account",
+ "description": ""
+ },
+ "options_misc": {
+ "message": "Diğer Ayarlar:",
+ "description": ""
+ },
+ "options_misc_1": {
+ "message": "Sort accounts alphabetically",
+ "description": ""
+ },
+ "options_misc_2": {
+ "message": "The default order type is logged-in order.",
+ "description": ""
+ },
+ "options_misc_3": {
+ "message": "Toolbar color pattern is",
+ "description": ""
+ },
+ "options_misc_4": {
+ "message": "Gray color for \"No Unread\" and blue color for \"Disconnected\"",
+ "description": ""
+ },
+ "options_misc_5": {
+ "message": "Blue color for \"No Unread\" and gray color for \"Disconnected\"",
+ "description": ""
+ },
+ "options_misc_9": {
+ "message": "Red color for \"No Unread\" and gray color for \"Disconnected\"",
+ "description": ""
+ },
+ "options_misc_6": {
+ "message": "Show desktop notification to warn that Gmail is already opened in the active tab",
+ "description": ""
+ },
+ "options_misc_7": {
+ "message": "Show welcome page on upgrade",
+ "description": ""
+ },
+ "options_misc_8": {
+ "message": "Reset all settings back to factory",
+ "description": ""
+ },
+ "options_misc_10": {
+ "message": "Only fire desktop and sound notifications when email has arrived in less than (in minutes): ",
+ "description": ""
+ },
+ "options_misc_11": {
+ "message": "By setting this preference to zero, you will receive neither desktop nor sound notifications; however, you will still get badge notification.",
+ "description": ""
+ },
+ "options_misc_12": {
+ "message": "Do not include login details in the tooltip text",
+ "description": ""
+ },
+ "options_misc_13": {
+ "message": "By default, the notifier updates tooltip text of the toolbar button with login info. By unchecking this option, the tooltip text remains the default value.",
+ "description": ""
+ },
+ "options_misc_14": {
+ "message": "Do not show the exact badge number when the number of unread emails is greater than 999",
+ "description": ""
+ },
+ "options_misc_15": {
+ "message": "Her güncellemeden sonra SSS sayfasını aç",
+ "description": ""
+ },
+ "options_plugins": {
+ "message": "Plug-ins:",
+ "description": ""
+ },
+ "options_plugins_1": {
+ "message": "Gmail labels and star button (experimental)",
+ "description": ""
+ },
+ "options_plugins_2": {
+ "message": "This plugin displays the star button as well as thread's labels in the popup (expanded mode only).",
+ "description": ""
+ },
+ "options_px": {
+ "message": "px",
+ "description": ""
+ },
+ "options_empty": {
+ "message": "not defined",
+ "description": ""
+ },
+ "options_button_test": {
+ "message": "Oynat",
+ "description": ""
+ },
+ "options_button_reset": {
+ "message": "Tercihleri Sıfırla",
+ "description": ""
+ },
+ "popup_settings": {
+ "message": "ayarlar",
+ "description": ""
+ },
+ "popup_of": {
+ "message": "of",
+ "description": ""
+ },
+ "popup_wait": {
+ "message": "Bekleyiniz...",
+ "description": ""
+ },
+ "popup_date_format": {
+ "message": "%mm %dd, %yy",
+ "description": ""
+ },
+ "popup_no_subject": {
+ "message": "(konu yok)",
+ "description": ""
+ },
+ "popup_open_settings": {
+ "message": "Ayarları aç",
+ "description": ""
+ },
+ "popup_open_inbox": {
+ "message": "Gmail'i aç",
+ "description": ""
+ },
+ "popup_archive": {
+ "message": "Arşivle",
+ "description": ""
+ },
+ "popup_spam": {
+ "message": "Spamla",
+ "description": ""
+ },
+ "popup_trash": {
+ "message": "Sil",
+ "description": ""
+ },
+ "popup_refresh": {
+ "message": "Yenile",
+ "description": ""
+ },
+ "popup_read": {
+ "message": "Okundu İşaretle",
+ "description": ""
+ },
+ "popup_read_all": {
+ "message": "Tümünü okundu işaretle",
+ "description": ""
+ },
+ "popup_msg_1": {
+ "message": "az önce",
+ "description": ""
+ },
+ "popup_msg_2": {
+ "message": "1 dakika önce",
+ "description": ""
+ },
+ "popup_msg_3_format": {
+ "message": "%d dakika önce",
+ "description": ""
+ },
+ "popup_msg_4": {
+ "message": "1 saat önce",
+ "description": ""
+ },
+ "popup_msg_5": {
+ "message": "saat önce",
+ "description": ""
+ },
+ "popup_msg_6": {
+ "message": "Dün",
+ "description": ""
+ },
+ "popup_msg_7_format": {
+ "message": "%d gün önce",
+ "description": ""
+ },
+ "popup_msg_8_format": {
+ "message": "%d hafta önce",
+ "description": ""
+ },
+ "popup_msg_9_format": {
+ "message": "%d ay önce",
+ "description": ""
+ },
+ "popup_msg_10": {
+ "message": "Ocak",
+ "description": ""
+ },
+ "popup_msg_11": {
+ "message": "Şubat",
+ "description": ""
+ },
+ "popup_msg_12": {
+ "message": "Mart",
+ "description": ""
+ },
+ "popup_msg_13": {
+ "message": "Nisan",
+ "description": ""
+ },
+ "popup_msg_14": {
+ "message": "Mayıs",
+ "description": ""
+ },
+ "popup_msg_15": {
+ "message": "Haziran",
+ "description": ""
+ },
+ "popup_msg_16": {
+ "message": "Temmuz",
+ "description": ""
+ },
+ "popup_msg_17": {
+ "message": "Ağustos",
+ "description": ""
+ },
+ "popup_msg_18": {
+ "message": "Eylül",
+ "description": ""
+ },
+ "popup_msg_19": {
+ "message": "Ekim",
+ "description": ""
+ },
+ "popup_msg_20": {
+ "message": "Kasım",
+ "description": ""
+ },
+ "popup_msg_21": {
+ "message": "Aralık",
+ "description": ""
+ },
+ "settings_open_title": {
+ "message": "Open options (settings) page",
+ "description": ""
+ },
+ "settings_open_label": {
+ "message": "Seçenekler",
+ "description": ""
+ },
+ "gmail": {
+ "message": "Notifier for Gmail™",
+ "description": ""
+ }
+}
\ No newline at end of file
diff --git a/v3.classic/_locales/uk/messages.json b/v3.classic/_locales/uk/messages.json
new file mode 100644
index 00000000..62820f9f
--- /dev/null
+++ b/v3.classic/_locales/uk/messages.json
@@ -0,0 +1,758 @@
+{
+ "toolbar_label": {
+ "message": "Notifier for Gmail™",
+ "description": ""
+ },
+ "tooltip_1": {
+ "message": "Left click: Open Gmail or mail preview panel",
+ "description": ""
+ },
+ "tooltip_2": {
+ "message": "Middle (or Ctrl+Left) click: Refresh all accounts",
+ "description": ""
+ },
+ "tooltip_3": {
+ "message": "Right click: Account selections",
+ "description": ""
+ },
+ "description": {
+ "message": "Нагадувач облікового запису для Google Mail (Gmail) з багатьма мітками",
+ "description": ""
+ },
+ "log_in_to_your_account": {
+ "message": "Будь ласка, увійдіть в свій обліковий запис Gmail",
+ "description": ""
+ },
+ "msg_1": {
+ "message": "Вкладка вже відкрита. Натисніть кнопку на панелі інструментів, щоб відкрити Gmail в новій вкладці, або переключитися на існуючу вкладку Gmail.",
+ "description": ""
+ },
+ "msg_2": {
+ "message": "Посилання скопійовано до буфера обміну.",
+ "description": ""
+ },
+ "msg_3": {
+ "message": "Виділений текст скопійовано до буфера обміну.",
+ "description": ""
+ },
+ "msg_4": {
+ "message": "Note: For the notifier to work properly, you need to be logged-in into your Google account.",
+ "description": ""
+ },
+ "msg_5": {
+ "message": "Select an audio sound file",
+ "description": ""
+ },
+ "label_1": {
+ "message": "Оновити",
+ "description": ""
+ },
+ "label_2": {
+ "message": "Налаштування",
+ "description": ""
+ },
+ "label_3": {
+ "message": "Відключити всі попередження",
+ "description": ""
+ },
+ "label_4": {
+ "message": "Протягом 5 хвилин",
+ "description": ""
+ },
+ "label_5": {
+ "message": "Протягом 15 хвилин",
+ "description": ""
+ },
+ "label_6": {
+ "message": "Протягом 30 хвилин",
+ "description": ""
+ },
+ "label_7": {
+ "message": "Протягом 1 години",
+ "description": ""
+ },
+ "label_8": {
+ "message": "Протягом 2 годин",
+ "description": ""
+ },
+ "label_9": {
+ "message": "Протягом 5 годин",
+ "description": ""
+ },
+ "label_13": {
+ "message": "For a custom time period",
+ "description": ""
+ },
+ "label_10": {
+ "message": "Enable notifications (session)",
+ "description": ""
+ },
+ "label_11": {
+ "message": "Написати листа",
+ "description": ""
+ },
+ "label_12": {
+ "message": "Open FAQs",
+ "description": ""
+ },
+ "label_14": {
+ "message": "Logged-in accounts",
+ "description": ""
+ },
+ "unknown": {
+ "message": "unknown",
+ "description": ""
+ },
+ "and": {
+ "message": "and",
+ "description": ""
+ },
+ "log_into_your_account": {
+ "message": "Please log into your account",
+ "description": ""
+ },
+ "notification": {
+ "message": "From: [author_email][break]Title: [title][break]Summary: [summary]",
+ "description": ""
+ },
+ "options_title": {
+ "message": "Параметри - Gmail™ Notifier",
+ "description": ""
+ },
+ "options_inshort": {
+ "message": "Нагадувач облікового запису для Google Mail (Gmail) з багатьма мітками.",
+ "description": ""
+ },
+ "options_donation": {
+ "message": "Support Development",
+ "description": ""
+ },
+ "options_timings": {
+ "message": "Timings:",
+ "description": ""
+ },
+ "options_timings_l1": {
+ "message": "Check for new emails every (in seconds):",
+ "description": ""
+ },
+ "options_timings_l2": {
+ "message": "Minimum period is 10 seconds.",
+ "description": ""
+ },
+ "options_timings_l3": {
+ "message": "Remind for all unread emails every (in minutes):",
+ "description": ""
+ },
+ "options_timings_l4": {
+ "message": "Set the value to zero for none-periodic reminders.",
+ "description": ""
+ },
+ "options_timings_l5": {
+ "message": "Minimum period is 5 minutes.",
+ "description": ""
+ },
+ "options_timings_l6": {
+ "message": "Non-zero value fires both desktop notification and alert sound (similar to new email arrival) eternally if you have unread email(s).",
+ "description": ""
+ },
+ "options_timings_l7": {
+ "message": "Do not check for new emails on startup for (in seconds):",
+ "description": ""
+ },
+ "options_timings_l8": {
+ "message": "Set the value to zero for no email check until the first manual refresh [Not available on Safari].",
+ "description": ""
+ },
+ "options_gmail": {
+ "message": "Gmail:",
+ "description": ""
+ },
+ "options_gmail_1": {
+ "message": "Primary account (/mail/u/0/)",
+ "description": ""
+ },
+ "options_gmail_2": {
+ "message": "Separate labels by \",\" (Comma).",
+ "description": ""
+ },
+ "options_gmail_3": {
+ "message": "Secondary account (/mail/u/1/)",
+ "description": ""
+ },
+ "options_gmail_4": {
+ "message": "Tertiary account (/mail/u/2/)",
+ "description": ""
+ },
+ "options_gmail_5": {
+ "message": "Quaternary account (/mail/u/3/)",
+ "description": ""
+ },
+ "options_gmail_6": {
+ "message": "Quinary account (/mail/u/4/)",
+ "description": ""
+ },
+ "options_gmail_7": {
+ "message": "Senary account (/mail/u/5/)",
+ "description": ""
+ },
+ "options_gmail_8": {
+ "message": "Mark message as read when archiving it",
+ "description": ""
+ },
+ "options_gmail_15": {
+ "message": "Some popular labels:",
+ "description": ""
+ },
+ "options_gmail_10": {
+ "message": "Receive notifications for the following labels and accounts:",
+ "description": ""
+ },
+ "options_gmail_11": {
+ "message": "Custom feeds:",
+ "description": ""
+ },
+ "options_gmail_12": {
+ "message": "Separate feeds by \",\" (Comma). Sample feed: https://mail.google.com/mail/u/0/feed/atom/inbox",
+ "description": ""
+ },
+ "options_gmail_13": {
+ "message": "Note: maximum number for all labels except \"inbox\" is 20 (Google feeds only supply the 20 newest entries)",
+ "description": ""
+ },
+ "options_gmail_14": {
+ "message": "Note: for the Notifier to listen for more than 5 accounts, add feeds URLs to the \"Custom feeds\" field. For instance to listen to the 6 and 7th accounts add: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox",
+ "description": ""
+ },
+ "options_notifications": {
+ "message": "Notifications:",
+ "description": ""
+ },
+ "options_notifications_1": {
+ "message": "Display desktop notification for new emails",
+ "description": ""
+ },
+ "options_notifications_2": {
+ "message": "Show desktop notification for (in seconds):",
+ "description": ""
+ },
+ "options_notifications_3": {
+ "message": "This option may not work based on your OS.",
+ "description": ""
+ },
+ "options_notifications_4": {
+ "message": "Notification format",
+ "description": ""
+ },
+ "options_notifications_5": {
+ "message": "Available variables:",
+ "description": ""
+ },
+ "options_notifications_6": {
+ "message": "Truncate notifications longer than",
+ "description": ""
+ },
+ "options_notifications_7": {
+ "message": "characters for [title] and [summary] fields.",
+ "description": ""
+ },
+ "options_notifications_8": {
+ "message": "To have no ellipsis truncation, use a big number here.",
+ "description": ""
+ },
+ "options_notifications_9": {
+ "message": "Play alert sound for new emails",
+ "description": ""
+ },
+ "options_notifications_10": {
+ "message": "Note for Mac users. From Firefox 28.0, all desktop notifications are handled by Mac Notification Center which causes an extra sound alert. You need to either uncheck this sound notification or the one that is generated by the Notification Center.",
+ "description": ""
+ },
+ "options_notifications_11": {
+ "message": "Display \"Windows taskbar notification\" or \"Mac OS Dock notification\"",
+ "description": ""
+ },
+ "options_notifications_12": {
+ "message": "Taskbar notifications are not supported on Linux OS at the moment.",
+ "description": ""
+ },
+ "options_notifications_13": {
+ "message": "Open toolbar panel when click on the taskbar notification icon (Windows only, beta)",
+ "description": ""
+ },
+ "options_notifications_14": {
+ "message": "This feature is highly experimental and might make your Firefox browser unstable. [Restart required].",
+ "description": ""
+ },
+ "options_notifications_15": {
+ "message": "Default sound notification is",
+ "description": ""
+ },
+ "options_notifications_16": {
+ "message": "Gmail Notifier default alert",
+ "description": ""
+ },
+ "options_notifications_17": {
+ "message": "Checker Plus bell alert",
+ "description": ""
+ },
+ "options_notifications_18": {
+ "message": "Checker Plus ding alert",
+ "description": ""
+ },
+ "options_notifications_19": {
+ "message": "Windows email alert",
+ "description": ""
+ },
+ "options_notifications_20": {
+ "message": "User defined sound",
+ "description": ""
+ },
+ "options_notifications_21": {
+ "message": "User defined notification sound is",
+ "description": ""
+ },
+ "options_notifications_22": {
+ "message": "If your browser is not playing the custom notification sound, try to convert it into a plain WAV format using an online conversion tool.",
+ "description": ""
+ },
+ "options_notifications_35": {
+ "message": "To select a new custom sound, select a built-in sound first and then change the option to custom sound",
+ "description": ""
+ },
+ "options_notifications_23": {
+ "message": "Volume of the sound notification is",
+ "description": ""
+ },
+ "options_notifications_24": {
+ "message": "Volume is a number between 0 to 100 where 100 is the highest volume (default).",
+ "description": ""
+ },
+ "options_notifications_25": {
+ "message": "In safari most likely the default sound notifications are not playing properly, if so use a custom sound file as your notification.",
+ "description": ""
+ },
+ "options_notifications_26": {
+ "message": "Always show tray notification (Windows only)",
+ "description": ""
+ },
+ "options_notifications_27": {
+ "message": "Tray notification will be shown even if there is no unread message.",
+ "description": ""
+ },
+ "options_notifications_28": {
+ "message": "Disable all notifications for a custom time period (in minutes):",
+ "description": ""
+ },
+ "options_notifications_29": {
+ "message": "This option is related to the right click menu on the toolbar button -> disable all notifications -> custom time period.",
+ "description": ""
+ },
+ "options_notifications_30": {
+ "message": "Combine all concurrent desktop notifications into a single notification",
+ "description": ""
+ },
+ "options_notifications_31": {
+ "message": "Custom sound notification",
+ "description": ""
+ },
+ "options_notifications_32": {
+ "message": "name or email contains",
+ "description": ""
+ },
+ "options_notifications_33": {
+ "message": "email title contains",
+ "description": ""
+ },
+ "options_notifications_34": {
+ "message": "email summary contains",
+ "description": ""
+ },
+ "options_notifications_36": {
+ "message": "Ask Gmail to prevent 'inbox.google.com' redirection",
+ "description": ""
+ },
+ "options_notifications_37": {
+ "message": "Display Badge number",
+ "description": ""
+ },
+ "options_notifications_38": {
+ "message": "Faster actions (mark as read, delete, ...) (Consider actions to be resolved when headers are received)",
+ "description": ""
+ },
+ "options_notifications_40": {
+ "message": "Allow quick actions from notification box (maximum two actions) (Chrome only)",
+ "description": ""
+ },
+ "options_notifications_41": {
+ "message": "Mark as Read",
+ "description": ""
+ },
+ "options_notifications_42": {
+ "message": "Archive",
+ "description": ""
+ },
+ "options_notifications_43": {
+ "message": "Trash",
+ "description": ""
+ },
+ "options_tab": {
+ "message": "Tab Opening:",
+ "description": ""
+ },
+ "options_tab_1": {
+ "message": "Search for an open Gmail account only on the active window",
+ "description": ""
+ },
+ "options_tab_2": {
+ "message": "Do not search other browser windows for open Gmail accounts. If Gmail is not open in the active window, open a new tab.",
+ "description": ""
+ },
+ "options_tab_3": {
+ "message": "Open new Gmail account next to the active tab",
+ "description": ""
+ },
+ "options_tab_4": {
+ "message": "Open Gmail account in the active tab",
+ "description": ""
+ },
+ "options_tab_5": {
+ "message": "Open Gmail account in a background tab",
+ "description": ""
+ },
+ "options_tab_6": {
+ "message": "Open Gmail account in a new window",
+ "description": ""
+ },
+ "options_tab_7": {
+ "message": "Always use blank tabs instead of opening a new tab when open in tab is activated",
+ "description": ""
+ },
+ "options_tab_8": {
+ "message": "Ignore opened Gmail tabs",
+ "description": ""
+ },
+ "options_tab_9": {
+ "message": "When unchecked, Gmail Notifier checks either active window or all open windows for open instance of Gmail and switch to the tab when tab opening is requested.",
+ "description": ""
+ },
+ "options_tab_10": {
+ "message": "Open emails in basic HTML mode",
+ "description": ""
+ },
+ "options_toolbar": {
+ "message": "Toolbar:",
+ "description": ""
+ },
+ "options_toolbar_1": {
+ "message": "Toolbar button behaviour",
+ "description": ""
+ },
+ "options_toolbar_2": {
+ "message": "Always open email preview panel",
+ "description": ""
+ },
+ "options_toolbar_3": {
+ "message": "Open Gmail account if only one account is logged-in",
+ "description": ""
+ },
+ "options_toolbar_18": {
+ "message": "Open Gmail account (forced)",
+ "description": ""
+ },
+ "options_toolbar_4": {
+ "message": "Toolbar panel mode",
+ "description": ""
+ },
+ "options_toolbar_5": {
+ "message": "Show summary only",
+ "description": ""
+ },
+ "options_toolbar_6": {
+ "message": "Show full content",
+ "description": ""
+ },
+ "options_toolbar_7": {
+ "message": "Toolbar panel width in the full-content view mode is (in pixels):",
+ "description": ""
+ },
+ "options_toolbar_8": {
+ "message": "Minimum width is 500px.",
+ "description": ""
+ },
+ "options_toolbar_9": {
+ "message": "Toolbar panel height in the full-content view mode is (in pixels):",
+ "description": ""
+ },
+ "options_toolbar_10": {
+ "message": "Minimum height is 500px.",
+ "description": ""
+ },
+ "options_toolbar_11": {
+ "message": "Support keyboard shortcuts on the toolbar panel",
+ "description": ""
+ },
+ "options_toolbar_12": {
+ "message": "!: Report as spam, #: Trash, e: Archive, Shift + i: Mark as read.",
+ "description": ""
+ },
+ "options_toolbar_13": {
+ "message": "Render emails as HTML in full-content mode",
+ "description": ""
+ },
+ "options_toolbar_14": {
+ "message": "If you prefer text-only rendering in the full-content mode, uncheck the box.",
+ "description": ""
+ },
+ "options_toolbar_15": {
+ "message": "Middle-click on the toolbar button to",
+ "description": ""
+ },
+ "options_toolbar_16": {
+ "message": "Refresh all accounts",
+ "description": ""
+ },
+ "options_toolbar_17": {
+ "message": "Open primary Gmail account",
+ "description": ""
+ },
+ "options_misc": {
+ "message": "Miscellaneous:",
+ "description": ""
+ },
+ "options_misc_1": {
+ "message": "Sort accounts alphabetically",
+ "description": ""
+ },
+ "options_misc_2": {
+ "message": "The default order type is logged-in order.",
+ "description": ""
+ },
+ "options_misc_3": {
+ "message": "Toolbar color pattern is",
+ "description": ""
+ },
+ "options_misc_4": {
+ "message": "Gray color for \"No Unread\" and blue color for \"Disconnected\"",
+ "description": ""
+ },
+ "options_misc_5": {
+ "message": "Blue color for \"No Unread\" and gray color for \"Disconnected\"",
+ "description": ""
+ },
+ "options_misc_9": {
+ "message": "Red color for \"No Unread\" and gray color for \"Disconnected\"",
+ "description": ""
+ },
+ "options_misc_6": {
+ "message": "Show desktop notification to warn that Gmail is already opened in the active tab",
+ "description": ""
+ },
+ "options_misc_7": {
+ "message": "Show welcome page on upgrade",
+ "description": ""
+ },
+ "options_misc_8": {
+ "message": "Reset all settings back to factory",
+ "description": ""
+ },
+ "options_misc_10": {
+ "message": "Only fire desktop and sound notifications when email has arrived in less than (in minutes): ",
+ "description": ""
+ },
+ "options_misc_11": {
+ "message": "By setting this preference to zero, you will receive neither desktop nor sound notifications; however, you will still get badge notification.",
+ "description": ""
+ },
+ "options_misc_12": {
+ "message": "Do not include login details in the tooltip text",
+ "description": ""
+ },
+ "options_misc_13": {
+ "message": "By default, the notifier updates tooltip text of the toolbar button with login info. By unchecking this option, the tooltip text remains the default value.",
+ "description": ""
+ },
+ "options_misc_14": {
+ "message": "Do not show the exact badge number when the number of unread emails is greater than 999",
+ "description": ""
+ },
+ "options_misc_15": {
+ "message": "Open FAQs page on updates",
+ "description": ""
+ },
+ "options_plugins": {
+ "message": "Plug-ins:",
+ "description": ""
+ },
+ "options_plugins_1": {
+ "message": "Gmail labels and star button (experimental)",
+ "description": ""
+ },
+ "options_plugins_2": {
+ "message": "This plugin displays the star button as well as thread's labels in the popup (expanded mode only).",
+ "description": ""
+ },
+ "options_px": {
+ "message": "px",
+ "description": ""
+ },
+ "options_empty": {
+ "message": "not defined",
+ "description": ""
+ },
+ "options_button_test": {
+ "message": "Play",
+ "description": ""
+ },
+ "options_button_reset": {
+ "message": "Reset Preferences",
+ "description": ""
+ },
+ "popup_settings": {
+ "message": "settings",
+ "description": ""
+ },
+ "popup_of": {
+ "message": "of",
+ "description": ""
+ },
+ "popup_wait": {
+ "message": "Wait...",
+ "description": ""
+ },
+ "popup_date_format": {
+ "message": "%mm %dd, %yy",
+ "description": ""
+ },
+ "popup_no_subject": {
+ "message": "(no subject)",
+ "description": ""
+ },
+ "popup_open_settings": {
+ "message": "Open settings",
+ "description": ""
+ },
+ "popup_open_inbox": {
+ "message": "Open inbox",
+ "description": ""
+ },
+ "popup_archive": {
+ "message": "Archive",
+ "description": ""
+ },
+ "popup_spam": {
+ "message": "Spam",
+ "description": ""
+ },
+ "popup_trash": {
+ "message": "Trash",
+ "description": ""
+ },
+ "popup_refresh": {
+ "message": "Refresh",
+ "description": ""
+ },
+ "popup_read": {
+ "message": "Mark as Read",
+ "description": ""
+ },
+ "popup_read_all": {
+ "message": "Mark all as read",
+ "description": ""
+ },
+ "popup_msg_1": {
+ "message": "just now",
+ "description": ""
+ },
+ "popup_msg_2": {
+ "message": "1 minute ago",
+ "description": ""
+ },
+ "popup_msg_3_format": {
+ "message": "%d minutes ago",
+ "description": ""
+ },
+ "popup_msg_4": {
+ "message": "1 hour ago",
+ "description": ""
+ },
+ "popup_msg_5": {
+ "message": "hours ago",
+ "description": ""
+ },
+ "popup_msg_6": {
+ "message": "Yesterday",
+ "description": ""
+ },
+ "popup_msg_7_format": {
+ "message": "%d days ago",
+ "description": ""
+ },
+ "popup_msg_8_format": {
+ "message": "%d week(s) ago",
+ "description": ""
+ },
+ "popup_msg_9_format": {
+ "message": "%d month(s) ago",
+ "description": ""
+ },
+ "popup_msg_10": {
+ "message": "January",
+ "description": ""
+ },
+ "popup_msg_11": {
+ "message": "February",
+ "description": ""
+ },
+ "popup_msg_12": {
+ "message": "March",
+ "description": ""
+ },
+ "popup_msg_13": {
+ "message": "April",
+ "description": ""
+ },
+ "popup_msg_14": {
+ "message": "May",
+ "description": ""
+ },
+ "popup_msg_15": {
+ "message": "June",
+ "description": ""
+ },
+ "popup_msg_16": {
+ "message": "July",
+ "description": ""
+ },
+ "popup_msg_17": {
+ "message": "August",
+ "description": ""
+ },
+ "popup_msg_18": {
+ "message": "September",
+ "description": ""
+ },
+ "popup_msg_19": {
+ "message": "October",
+ "description": ""
+ },
+ "popup_msg_20": {
+ "message": "November",
+ "description": ""
+ },
+ "popup_msg_21": {
+ "message": "December",
+ "description": ""
+ },
+ "settings_open_title": {
+ "message": "Open options (settings) page",
+ "description": ""
+ },
+ "settings_open_label": {
+ "message": "Open Options",
+ "description": ""
+ },
+ "gmail": {
+ "message": "Notifier for Gmail™",
+ "description": ""
+ }
+}
\ No newline at end of file
diff --git a/v3.classic/_locales/zh_CN/messages.json b/v3.classic/_locales/zh_CN/messages.json
new file mode 100644
index 00000000..703c47cf
--- /dev/null
+++ b/v3.classic/_locales/zh_CN/messages.json
@@ -0,0 +1,762 @@
+{
+ "toolbar_label": {
+ "message": "Notifier for Gmail™",
+ "description": ""
+ },
+ "tooltip_1": {
+ "message": "左键单击:打开 Gmail 或邮件预览面板",
+ "description": ""
+ },
+ "tooltip_2": {
+ "message": "中键 (或 Ctrl+左键) 单击:刷新所有帐户",
+ "description": ""
+ },
+ "tooltip_3": {
+ "message": "右键单击:选择帐户",
+ "description": ""
+ },
+ "description": {
+ "message": "支持多个标签和帐户的通知工具,适用于 Google Mail (Gmail)",
+ "description": ""
+ },
+ "log_in_to_your_account": {
+ "message": "请登录您的 Gmail 帐户",
+ "description": ""
+ },
+ "msg_1": {
+ "message": "标签页已经打开。点击工具栏上的按钮在新标签页中打开 Gmail,或者切换到现有的 Gmail 标签页。",
+ "description": ""
+ },
+ "msg_2": {
+ "message": "链接已复制到剪贴板。",
+ "description": ""
+ },
+ "msg_3": {
+ "message": "选定文本已复制到剪贴板。",
+ "description": ""
+ },
+ "msg_4": {
+ "message": "注意:为了通知能正常工作,您需要先登录到您的 Google 帐户。",
+ "description": ""
+ },
+ "msg_5": {
+ "message": "选择一个声音文件",
+ "description": ""
+ },
+ "label_1": {
+ "message": "刷新",
+ "description": ""
+ },
+ "label_2": {
+ "message": "设置",
+ "description": ""
+ },
+ "label_3": {
+ "message": "禁用所有通知",
+ "description": ""
+ },
+ "label_4": {
+ "message": "禁用 5 分钟",
+ "description": ""
+ },
+ "label_5": {
+ "message": "禁用 15 分钟",
+ "description": ""
+ },
+ "label_6": {
+ "message": "禁用 30 分钟",
+ "description": ""
+ },
+ "label_7": {
+ "message": "禁用 1 小时",
+ "description": ""
+ },
+ "label_8": {
+ "message": "禁用 2 小时",
+ "description": ""
+ },
+ "label_9": {
+ "message": "禁用 5 小时",
+ "description": ""
+ },
+ "label_13": {
+ "message": "自定义时间长度",
+ "description": ""
+ },
+ "label_10": {
+ "message": "启用通知(本次会话期间)",
+ "description": ""
+ },
+ "label_11": {
+ "message": "撰写邮件",
+ "description": ""
+ },
+ "label_12": {
+ "message": "打开常见问题",
+ "description": ""
+ },
+ "label_14": {
+ "message": "已登录帐户",
+ "description": ""
+ },
+ "unknown": {
+ "message": "未知",
+ "description": ""
+ },
+ "and": {
+ "message": "及",
+ "description": ""
+ },
+ "log_into_your_account": {
+ "message": "请登录您的帐户",
+ "description": ""
+ },
+ "notification": {
+ "message": "来自: [author_email][break]标题: [title][break]摘要: [summary]",
+ "description": ""
+ },
+ "options_title": {
+ "message": "选项 - Gmail™ Notifier",
+ "description": ""
+ },
+ "options_inshort": {
+ "message": "支持多个标签和帐户的通知工具,适用于 Google Mail (Gmail)。",
+ "description": ""
+ },
+ "options_donation": {
+ "message": "支持软件开发",
+ "description": ""
+ },
+ "options_timings": {
+ "message": "时间:",
+ "description": ""
+ },
+ "options_timings_l1": {
+ "message": "检查新邮件,每隔(秒):",
+ "description": ""
+ },
+ "options_timings_l2": {
+ "message": "最小周期为 10 秒。",
+ "description": ""
+ },
+ "options_timings_l3": {
+ "message": "提醒有未读邮件,每隔(分钟):",
+ "description": ""
+ },
+ "options_timings_l4": {
+ "message": "设置值为 0 可禁用定期提醒。",
+ "description": ""
+ },
+ "options_timings_l5": {
+ "message": "最小周期为 5 分钟。",
+ "description": ""
+ },
+ "options_timings_l6": {
+ "message": "非零的值将反复触发桌面通知和提醒声音(类似有新邮件到达),如果您有未读的邮件。",
+ "description": ""
+ },
+ "options_timings_l7": {
+ "message": "不检查新邮件,在刚启动的(秒):",
+ "description": ""
+ },
+ "options_timings_l8": {
+ "message": "设置值为 0 将禁用邮件检查,除非手动刷新 [Safari 上不可用]。",
+ "description": ""
+ },
+ "options_gmail": {
+ "message": "Gmail:",
+ "description": ""
+ },
+ "options_gmail_1": {
+ "message": "主帐户 (/mail/u/0/)",
+ "description": ""
+ },
+ "options_gmail_2": {
+ "message": "用 \",\" (半角逗号) 分隔。",
+ "description": ""
+ },
+ "options_gmail_3": {
+ "message": "第二帐户 (/mail/u/1/)",
+ "description": ""
+ },
+ "options_gmail_4": {
+ "message": "第三帐户 (/mail/u/2/)",
+ "description": ""
+ },
+ "options_gmail_5": {
+ "message": "第四帐户 (/mail/u/3/)",
+ "description": ""
+ },
+ "options_gmail_6": {
+ "message": "第五帐户 (/mail/u/4/)",
+ "description": ""
+ },
+ "options_gmail_7": {
+ "message": "第六帐户 (/mail/u/5/)",
+ "description": ""
+ },
+ "options_gmail_8": {
+ "message": "归档时标记邮件为已读",
+ "description": ""
+ },
+ "options_gmail_15": {
+ "message": "常用的标签:",
+ "description": ""
+ },
+ "options_gmail_10": {
+ "message": "接收下列标签和帐户的通知:",
+ "description": ""
+ },
+ "options_gmail_11": {
+ "message": "自定义收取点:",
+ "description": ""
+ },
+ "options_gmail_12": {
+ "message": "用 \",\" (半角逗号) 分隔收取点。收取点样例: https://mail.google.com/mail/u/0/feed/atom/inbox",
+ "description": ""
+ },
+ "options_gmail_13": {
+ "message": "注意:除收件箱(inbox)外,所有标签的最大数量为 20(Google 提供的收取点仅提供最新的 20 项)",
+ "description": ""
+ },
+ "options_gmail_14": {
+ "message": "注意:要使 Notifier 监测超过5个帐户,请将收取点网址添加到“自定义收取点”栏。形式例如: https://mail.google.com/mail/u/6/feed/atom/inbox, https://mail.google.com/mail/u/7/feed/atom/inbox",
+ "description": ""
+ },
+ "options_notifications": {
+ "message": "通知:",
+ "description": ""
+ },
+ "options_notifications_1": {
+ "message": "为新邮件显示桌面通知",
+ "description": ""
+ },
+ "options_notifications_2": {
+ "message": "显示桌面通知(秒):",
+ "description": ""
+ },
+ "options_notifications_3": {
+ "message": "此选项在您的操作系统上可能无法正常工作。",
+ "description": ""
+ },
+ "options_notifications_4": {
+ "message": "通知格式",
+ "description": ""
+ },
+ "options_notifications_5": {
+ "message": "可用变量:",
+ "description": ""
+ },
+ "options_notifications_6": {
+ "message": "截断通知中超过",
+ "description": ""
+ },
+ "options_notifications_7": {
+ "message": "字符的标题和摘要。",
+ "description": ""
+ },
+ "options_notifications_8": {
+ "message": "要想没有截断和省略号,在这里使用较大的数值。",
+ "description": ""
+ },
+ "options_notifications_9": {
+ "message": "为新邮件播放声音提醒",
+ "description": ""
+ },
+ "options_notifications_10": {
+ "message": "Mac 用户请注意:从 Firefox 28.0 开始,所有桌面通知都经由 Mac 通知中心处理,包括触发一个额外的声音提醒。您需要取消这里的声音或者“通知中心”中的声音。",
+ "description": ""
+ },
+ "options_notifications_11": {
+ "message": "显示“Windows 任务栏通知”或者“Mac OS Dock 通知”",
+ "description": ""
+ },
+ "options_notifications_12": {
+ "message": "任务栏通知目前不支持 Linux 操作系统。",
+ "description": ""
+ },
+ "options_notifications_13": {
+ "message": "在点击任务栏通知图标时打开工具栏面板(仅 Windows,测试版)",
+ "description": ""
+ },
+ "options_notifications_14": {
+ "message": "此功能是实验性的,并可能导致您的 Firefox 浏览器不稳定 [需要重启]。",
+ "description": ""
+ },
+ "options_notifications_15": {
+ "message": "默认声音是",
+ "description": ""
+ },
+ "options_notifications_16": {
+ "message": "Gmail Notifier 默认声音",
+ "description": ""
+ },
+ "options_notifications_17": {
+ "message": "Checker Plus 钟声",
+ "description": ""
+ },
+ "options_notifications_18": {
+ "message": "Checker Plus 铃声",
+ "description": ""
+ },
+ "options_notifications_19": {
+ "message": "Windows 邮件提醒",
+ "description": ""
+ },
+ "options_notifications_20": {
+ "message": "用户定义声音",
+ "description": ""
+ },
+ "options_notifications_21": {
+ "message": "用户定义声音为",
+ "description": ""
+ },
+ "options_notifications_22": {
+ "message": "如果您的浏览器不能播放自定义的声音,请尝试用在线转换工具将它转换为纯 WAV 格式。",
+ "description": ""
+ },
+ "options_notifications_35": {
+ "message": "要选择一个新的自定义声音,选择一个内置声音,然后再更改此选项为自定义声音",
+ "description": ""
+ },
+ "options_notifications_23": {
+ "message": "声音提醒的音量为",
+ "description": ""
+ },
+ "options_notifications_24": {
+ "message": "音量是 0 至 100 之间的一个数字,100 是最高音量(默认值)。",
+ "description": ""
+ },
+ "options_notifications_25": {
+ "message": "在 Safari 下很可能默认的通知声音不能正常播放,如果您使用了一个自定义文件作为通知声音。",
+ "description": ""
+ },
+ "options_notifications_26": {
+ "message": "始终显示托盘通知 (仅 Windows)",
+ "description": ""
+ },
+ "options_notifications_27": {
+ "message": "托盘通知图标将始终显示,即使没有未读邮件。",
+ "description": ""
+ },
+ "options_notifications_28": {
+ "message": "指定时间内禁止所有通知 (分钟):",
+ "description": ""
+ },
+ "options_notifications_29": {
+ "message": "此选项有关工具栏按钮的右键菜单 -> 禁止所有通知 -> 自定义时间长度。",
+ "description": ""
+ },
+ "options_notifications_30": {
+ "message": "整合所有连续的桌面通知为单条通知",
+ "description": ""
+ },
+ "options_notifications_31": {
+ "message": "自定义声音通知",
+ "description": ""
+ },
+ "options_notifications_32": {
+ "message": "名称或电子邮件包含",
+ "description": ""
+ },
+ "options_notifications_33": {
+ "message": "邮件标题包含",
+ "description": ""
+ },
+ "options_notifications_34": {
+ "message": "邮件摘要包含",
+ "description": ""
+ },
+ "options_notifications_36": {
+ "message": "要求 Gmail 避免重定向到 'inbox.google.com'",
+ "description": ""
+ },
+ "options_notifications_37": {
+ "message": "显示徽标数字",
+ "description": ""
+ },
+ "options_notifications_38": {
+ "message": "快捷动作(标为已读、删除等)(看到标题后可能执行的操作)",
+ "description": ""
+ },
+ "options_notifications_40": {
+ "message": "允许从通知框执行快速操作(最多两项操作)(仅支持 Chrome)",
+ "description": ""
+ },
+ "options_notifications_41": {
+ "message": "标为已读",
+ "description": ""
+ },
+ "options_notifications_42": {
+ "message": "归档",
+ "description": ""
+ },
+ "options_notifications_43": {
+ "message": "移入垃圾箱",
+ "description": ""
+ },
+ "options_tab": {
+ "message": "打开标签页:",
+ "description": ""
+ },
+ "options_tab_1": {
+ "message": "只在活动窗口中搜索已打开的 Gmail 帐户",
+ "description": ""
+ },
+ "options_tab_2": {
+ "message": "不搜索其他浏览器窗口有无打开的 Gmail 帐户。如果活动窗口中没有已打开的 Gmail,打开一个新标签页。",
+ "description": ""
+ },
+ "options_tab_3": {
+ "message": "在当前标签页后面打开新的 Gmail 帐户",
+ "description": ""
+ },
+ "options_tab_4": {
+ "message": "在当前标签页打开 Gmail 帐户",
+ "description": ""
+ },
+ "options_tab_5": {
+ "message": "在后台标签页打开 Gmail 帐户",
+ "description": ""
+ },
+ "options_tab_6": {
+ "message": "在新窗口打开 Gmail 帐户",
+ "description": ""
+ },
+ "options_tab_7": {
+ "message": "始终使用空白标签页而不是打开一个新标签页",
+ "description": ""
+ },
+ "options_tab_8": {
+ "message": "忽略已打开的 Gmail 标签页",
+ "description": ""
+ },
+ "options_tab_9": {
+ "message": "在未选中时,Gmail Notifier 会检查是否已有活动窗口包含已打开的 Gmail,并在必要时切换到已打开的标签页。",
+ "description": ""
+ },
+ "options_tab_10": {
+ "message": "用基本 HTML 模式打开邮件",
+ "description": ""
+ },
+ "options_tab_11": {
+ "message": "直接打开最新的未读邮件,代替收件箱文件夹",
+ "description": ""
+ },
+ "options_toolbar": {
+ "message": "工具栏:",
+ "description": ""
+ },
+ "options_toolbar_1": {
+ "message": "工具栏按钮行为",
+ "description": ""
+ },
+ "options_toolbar_2": {
+ "message": "总是打开邮件预览面板",
+ "description": ""
+ },
+ "options_toolbar_3": {
+ "message": "打开 Gmail 帐户,如果只登录了一个帐户",
+ "description": ""
+ },
+ "options_toolbar_18": {
+ "message": "强制打开 Gmail 账户",
+ "description": ""
+ },
+ "options_toolbar_4": {
+ "message": "工具栏面板模式",
+ "description": ""
+ },
+ "options_toolbar_5": {
+ "message": "只显示摘要",
+ "description": ""
+ },
+ "options_toolbar_6": {
+ "message": "显示完整内容",
+ "description": ""
+ },
+ "options_toolbar_7": {
+ "message": "完整内容模式下的工具栏面板宽度为(像素):",
+ "description": ""
+ },
+ "options_toolbar_8": {
+ "message": "最小宽度为 500px。",
+ "description": ""
+ },
+ "options_toolbar_9": {
+ "message": "完整内容模式下的工具栏面板高度为(像素):",
+ "description": ""
+ },
+ "options_toolbar_10": {
+ "message": "最小高度为 500px。",
+ "description": ""
+ },
+ "options_toolbar_11": {
+ "message": "工具栏面板上支持键盘快捷键",
+ "description": ""
+ },
+ "options_toolbar_12": {
+ "message": "!: 报告为垃圾邮件, #: 删除, e: 归档, Shift + i: 标记为已读。",
+ "description": ""
+ },
+ "options_toolbar_13": {
+ "message": "在完整内容模式下,呈现邮件为 HTML 形式",
+ "description": ""
+ },
+ "options_toolbar_14": {
+ "message": "如果您偏好在完整内容模式下只呈现文本形式,取消此框。",
+ "description": ""
+ },
+ "options_toolbar_15": {
+ "message": "中键单击工具栏按钮",
+ "description": ""
+ },
+ "options_toolbar_16": {
+ "message": "刷新所有帐户",
+ "description": ""
+ },
+ "options_toolbar_17": {
+ "message": "打开主要的 Gmail 帐户",
+ "description": ""
+ },
+ "options_misc": {
+ "message": "杂项:",
+ "description": ""
+ },
+ "options_misc_1": {
+ "message": "按字母排序帐户",
+ "description": ""
+ },
+ "options_misc_2": {
+ "message": "默认顺序是登录顺序。",
+ "description": ""
+ },
+ "options_misc_3": {
+ "message": "工具栏颜色模式",
+ "description": ""
+ },
+ "options_misc_4": {
+ "message": "灰色表示“无未读邮件”,蓝色表示“已断开”",
+ "description": ""
+ },
+ "options_misc_5": {
+ "message": "蓝色表示“无未读邮件”,灰色表示“已断开”",
+ "description": ""
+ },
+ "options_misc_9": {
+ "message": "红色表示“无未读邮件”,灰色表示“已断开”",
+ "description": ""
+ },
+ "options_misc_6": {
+ "message": "显示桌面通知以警告 Gmail 已在活动标签页打开",
+ "description": ""
+ },
+ "options_misc_7": {
+ "message": "升级后显示欢迎页面",
+ "description": ""
+ },
+ "options_misc_8": {
+ "message": "重置所有设置到出厂设置",
+ "description": ""
+ },
+ "options_misc_10": {
+ "message": "仅在邮件抵达未超过x分钟时发出桌面和声音通知:",
+ "description": ""
+ },
+ "options_misc_11": {
+ "message": "如果将此选项设置为 0,您将不再收到桌面和声音通知,但仍可收到网址栏徽章通知。",
+ "description": ""
+ },
+ "options_misc_12": {
+ "message": "不在工具提示中包含登录信息",
+ "description": ""
+ },
+ "options_misc_13": {
+ "message": "默认情况下,本扩展的工具栏按钮的工具提示带有登录信息。取消此选项时,工具提示文本将恢复默认值。",
+ "description": ""
+ },
+ "options_misc_14": {
+ "message": "未读邮件超过 999 封时,不在徽章上显示确切数字",
+ "description": ""
+ },
+ "options_misc_15": {
+ "message": "更新时打开常见问题页面",
+ "description": ""
+ },
+ "options_plugins": {
+ "message": "插件:",
+ "description": ""
+ },
+ "options_plugins_1": {
+ "message": "Gmail 标签及星标按钮(实验性)",
+ "description": ""
+ },
+ "options_plugins_2": {
+ "message": "此插件在弹出窗口中显示星标按钮和主题的标签(仅限扩展模式)。",
+ "description": ""
+ },
+ "options_px": {
+ "message": "像素",
+ "description": ""
+ },
+ "options_empty": {
+ "message": "未定义",
+ "description": ""
+ },
+ "options_button_test": {
+ "message": "播放",
+ "description": ""
+ },
+ "options_button_reset": {
+ "message": "重置首选项",
+ "description": ""
+ },
+ "popup_settings": {
+ "message": "设置",
+ "description": ""
+ },
+ "popup_of": {
+ "message": "/",
+ "description": ""
+ },
+ "popup_wait": {
+ "message": "等待...",
+ "description": ""
+ },
+ "popup_date_format": {
+ "message": "%yy-%mm-%dd",
+ "description": ""
+ },
+ "popup_no_subject": {
+ "message": "(无主题)",
+ "description": ""
+ },
+ "popup_open_settings": {
+ "message": "打开设置",
+ "description": ""
+ },
+ "popup_open_inbox": {
+ "message": "打开收件箱",
+ "description": ""
+ },
+ "popup_archive": {
+ "message": "归档",
+ "description": ""
+ },
+ "popup_spam": {
+ "message": "垃圾",
+ "description": ""
+ },
+ "popup_trash": {
+ "message": "删除",
+ "description": ""
+ },
+ "popup_refresh": {
+ "message": "刷新",
+ "description": ""
+ },
+ "popup_read": {
+ "message": "标为已读",
+ "description": ""
+ },
+ "popup_read_all": {
+ "message": "全部标为已读",
+ "description": ""
+ },
+ "popup_msg_1": {
+ "message": "刚刚",
+ "description": ""
+ },
+ "popup_msg_2": {
+ "message": "1 分钟前",
+ "description": ""
+ },
+ "popup_msg_3_format": {
+ "message": "%d 分钟前",
+ "description": ""
+ },
+ "popup_msg_4": {
+ "message": "1 小时前",
+ "description": ""
+ },
+ "popup_msg_5": {
+ "message": "小时前",
+ "description": ""
+ },
+ "popup_msg_6": {
+ "message": "昨天",
+ "description": ""
+ },
+ "popup_msg_7_format": {
+ "message": "%d 天前",
+ "description": ""
+ },
+ "popup_msg_8_format": {
+ "message": "%d 周前",
+ "description": ""
+ },
+ "popup_msg_9_format": {
+ "message": "%d 个月前",
+ "description": ""
+ },
+ "popup_msg_10": {
+ "message": "1月",
+ "description": ""
+ },
+ "popup_msg_11": {
+ "message": "2月",
+ "description": ""
+ },
+ "popup_msg_12": {
+ "message": "3月",
+ "description": ""
+ },
+ "popup_msg_13": {
+ "message": "4月",
+ "description": ""
+ },
+ "popup_msg_14": {
+ "message": "5月",
+ "description": ""
+ },
+ "popup_msg_15": {
+ "message": "6月",
+ "description": ""
+ },
+ "popup_msg_16": {
+ "message": "7月",
+ "description": ""
+ },
+ "popup_msg_17": {
+ "message": "8月",
+ "description": ""
+ },
+ "popup_msg_18": {
+ "message": "9月",
+ "description": ""
+ },
+ "popup_msg_19": {
+ "message": "10月",
+ "description": ""
+ },
+ "popup_msg_20": {
+ "message": "11月",
+ "description": ""
+ },
+ "popup_msg_21": {
+ "message": "12月",
+ "description": ""
+ },
+ "settings_open_title": {
+ "message": "打开选项(设置)页面",
+ "description": ""
+ },
+ "settings_open_label": {
+ "message": "打开选项",
+ "description": ""
+ },
+ "gmail": {
+ "message": "Notifier for Gmail™",
+ "description": ""
+ }
+}
\ No newline at end of file
diff --git a/v3.classic/core/button.js b/v3.classic/core/button.js
new file mode 100644
index 00000000..24f30770
--- /dev/null
+++ b/v3.classic/core/button.js
@@ -0,0 +1,134 @@
+'use strict';
+
+const button = {
+ set label(title) {
+ chrome.action.setTitle({title});
+ },
+ set color(color) {
+ chrome.action.setBadgeBackgroundColor({color});
+ }
+};
+// button.badge
+{
+ Object.defineProperty(button, 'badge', {
+ set(val) {
+ chrome.storage.local.get({
+ 'minimal': true,
+ 'badge': true
+ }, prefs => {
+ if (val > 999 && prefs.minimal) {
+ const formatter = new Intl.NumberFormat('en-US', {
+ notation: 'compact',
+ compactDisplay: 'short'
+ });
+ val = '>' + formatter.format(val);
+ }
+ chrome.action.setBadgeText({
+ text: val === 0 || prefs.badge === false ? '' : String(val)
+ });
+ });
+ }
+ });
+}
+// button.icon
+{
+ let id;
+ Object.defineProperty(button, 'icon', {
+ set(clr) {
+ clearTimeout(id);
+
+ chrome.storage.local.get({
+ 'clrPattern': 0 // 0: normal color scheme, 1: reverse color scheme
+ }, prefs => {
+ function set(clr) {
+ // Change color pattern?
+ if (prefs.clrPattern === 1) {
+ switch (clr) {
+ case 'blue':
+ clr = 'gray';
+ break;
+ case 'gray':
+ clr = 'blue';
+ break;
+ }
+ }
+ if (prefs.clrPattern === 2) {
+ switch (clr) {
+ case 'blue':
+ clr = 'gray';
+ break;
+ case 'red':
+ clr = 'blue';
+ break;
+ case 'gray':
+ clr = 'red';
+ break;
+ }
+ }
+ chrome.action.setIcon({
+ path: {
+ '16': '/data/icons/' + clr + '/16.png',
+ '18': '/data/icons/' + clr + '/18.png',
+ '19': '/data/icons/' + clr + '/19.png',
+ '32': '/data/icons/' + clr + '/32.png'
+ }
+ });
+ }
+
+ if (clr === 'load') {
+ const next = (i, n = 0) => {
+ clearTimeout(id);
+ if (n < 100) {
+ id = setTimeout(() => {
+ set('load' + i);
+ i += 1;
+ next(i % 4, n += 1);
+ }, 200);
+ }
+ else {
+ set('blue');
+ }
+ };
+ next(0);
+ }
+ else if (clr === 'new') {
+ const next = i => {
+ clearTimeout(id);
+ id = setTimeout(() => {
+ set(i % 2 ? 'red' : 'new');
+ if (i < 7) {
+ i += 1;
+ next(i);
+ }
+ }, 300);
+ };
+ next(0);
+ }
+ else {
+ set(clr);
+ }
+ });
+ }
+ });
+}
+
+// once
+{
+ const once = () => {
+ if (once.done) {
+ return;
+ }
+ once.done = true;
+
+ chrome.storage.local.get({
+ 'backgroundColor': '#6e6e6e'
+ }).then(prefs => button.color = prefs.backgroundColor);
+ };
+ chrome.runtime.onStartup.addListener(once);
+ chrome.runtime.onInstalled.addListener(once);
+}
+chrome.storage.onChanged.addListener(ps => {
+ if (ps.backgroundColor) {
+ button.color = ps.backgroundColor.newValue;
+ }
+});
diff --git a/v3.classic/core/check.js b/v3.classic/core/check.js
new file mode 100644
index 00000000..8fed2b4d
--- /dev/null
+++ b/v3.classic/core/check.js
@@ -0,0 +1,630 @@
+/* global log, button, context, Feed, repeater, sound, offscreen, toast */
+
+if (typeof importScripts !== 'undefined') {
+ self.importScripts('/core/utils/feed.js');
+}
+
+{
+ const helper = {
+ id(href) {
+ const m = href.match(/u\/(?\d+)/);
+ if (m) {
+ return Number(m.groups.n);
+ }
+ },
+ base(href) {
+ return /[^?]*/.exec(href)[0].split('/h')[0].replace(/\/$/, '');
+ },
+ thread(href) {
+ const m = href.match(/message_id=(?[^&]+)/);
+ if (m) {
+ return m.groups.thread;
+ }
+ }
+ };
+
+ const isPrivate = false;
+
+ const read = (prefs, type = 'local') => chrome.storage[type].get(prefs);
+
+ const notify = async (text, title, click = {}, buttons = []) => {
+ title = title || chrome.i18n.getMessage('gmail');
+
+ const p2 = await read({
+ 'silent': false
+ }, 'session');
+ if (p2.silent) {
+ log('[feed]', 'notification is silent', text, title);
+ return;
+ }
+ const p1 = await read({
+ 'notificationTime': 10, // seconds
+ 'notification.state.active': true,
+ 'notification.state.idle': true,
+ 'notification.state.locked': true
+ }, 'local');
+
+ if (
+ p1['notification.state.active'] === false ||
+ p1['notification.state.idle'] === false ||
+ p1['notification.state.locked'] === false
+ ) {
+ const state = await chrome.idle.queryState(5 * 60);
+ if (p1['notification.state.' + state] === false) {
+ log('[feed]', 'notification is aborted', text, title);
+ return;
+ }
+ }
+
+ let isArray = Array.isArray(text);
+ if (isArray && text.length === 1) {
+ isArray = false;
+ text = text[0];
+ }
+ // Users on Mac OS X only see the first item.
+ if (isArray && navigator.platform.includes('Mac')) {
+ isArray = false;
+ text = text.join('\n\n');
+ }
+
+ const when = Date.now() + p1.notificationTime * 1000;
+ const options = {
+ type: isArray ? 'list' : 'basic',
+ iconUrl: '/data/icons/notification/48.png',
+ title,
+ message: isArray ? '' : text,
+ priority: 2,
+ eventTime: when,
+ items: isArray ? text.map(message => {
+ const tmp = message.split('\n');
+ return {
+ title: (tmp[1] || '').replace('Title: ', ''),
+ message: tmp[0].replace('From: ', '')
+ };
+ }) : [],
+ requireInteraction: click ? true : false,
+ buttons: buttons.map(b => ({
+ title: b.title,
+ iconUrl: b.iconUrl
+ }))
+
+ };
+ if (navigator.userAgent.includes('Firefox')) {
+ delete options.requireInteraction;
+ delete options.buttons;
+ }
+ // if (config.notification.actions === false) {
+ // delete options.buttons;
+ // }
+
+ const id = 'action.' + Math.random();
+ chrome.storage.session.set({
+ [id]: {
+ buttons: (buttons || []).map(o => o.action),
+ click
+ }
+ });
+ chrome.alarms.create('clear.notification.' + id, {
+ when
+ });
+ chrome.notifications.create(id, options);
+ };
+ chrome.notifications.onClicked.addListener(id => {
+ chrome.notifications.clear(id);
+ sound.stop();
+ if (id.startsWith('action.')) {
+ chrome.storage.session.get(id, prefs => {
+ chrome.storage.session.remove(id);
+ const {click} = prefs[id];
+ if (click.cmd === 'open') {
+ const {links} = click;
+ // use open to open the first link and use chrome.tabs.create for the rest
+ self.openLink(links[0]);
+ links.slice(1).forEach(url => chrome.tabs.create({
+ url,
+ active: false
+ }));
+ }
+ else {
+ console.error('No action', click);
+ }
+ });
+ }
+ });
+ chrome.alarms.onAlarm.addListener(o => {
+ if (o.name.startsWith('clear.notification.')) {
+ const id = o.name.slice(19);
+ chrome.notifications.clear(id);
+ chrome.storage.session.remove(id);
+ }
+ });
+ if (chrome.notifications.onButtonClicked) {
+ chrome.notifications.onButtonClicked.addListener((id, index) => {
+ sound.stop();
+
+ chrome.storage.session.get(id, prefs => {
+ chrome.storage.session.remove(id);
+ chrome.notifications.clear(id);
+
+ const request = prefs[id].buttons[index];
+ // links might be from different accounts
+ const bases = {};
+ for (const link of request.links) {
+ const base = helper.base(link);
+ bases[base] = bases[base] || [];
+ bases[base].push(link);
+ }
+ const requests = Object.values(bases).map(links => ({
+ ...request,
+ links
+ }));
+ // dispatch
+ chrome.storage.local.get({
+ doReadOnArchive: true
+ }, prefs => {
+ requests.forEach(r => r.prefs = prefs);
+ Promise.all(requests.map(request => offscreen.command({
+ cmd: 'gmail.action',
+ request
+ }))).then(arr => {
+ const errors = arr.filter(o => o !== true);
+ if (errors.length) {
+ console.error(errors);
+ toast(errors.map(e => e.message).join('\n\n'));
+ }
+ }).finally(() => repeater.reset('action.command', 500));
+ });
+ });
+ });
+ }
+
+ const shorten = (str = '', truncate) => {
+ if (str.length < truncate) {
+ return str;
+ }
+ return str.substr(0, truncate / 2) + '...' + str.substr(str.length - truncate / 2);
+ };
+
+ const attach = () => chrome.action.setPopup({
+ popup: '/data/popup/index.html'
+ });
+ const detach = () => {
+ chrome.action.setPopup({
+ popup: ''
+ });
+ chrome.runtime.sendMessage({
+ method: 'close-popup'
+ }, () => chrome.runtime.lastError);
+ };
+ chrome.storage.onChanged.addListener(ps => {
+ if (ps.oldFashion) {
+ self.checkEmails.getCached().then(objs => {
+ const numberOfAccounts = objs.map(o => o.xml ? o.xml.title : null)
+ .filter((o, i, a) => o && a.indexOf(o) === i).length;
+ const hasUnread = objs.map(o => o.xml ? o.xml.fullcount : 0)
+ .reduce((p, c) => p + c, 0);
+
+ if (numberOfAccounts === 1 && ps.oldFashion.newValue === 1) {
+ detach();
+ }
+ else if (hasUnread) {
+ attach();
+ }
+ });
+ }
+ });
+
+ const buildFeeds = prefs => {
+ const tmp = ['0', '1', '2', '3', '4', '5']
+ .map(i => prefs['feeds_' + i])
+ .map((f, i) => f.split(', ').map(tag => tag ? (tag.startsWith('http:') ? tag : i + '/feed/atom/' + encodeURIComponent(tag)) : ''));
+ let merged = [];
+ tmp.forEach(l => merged.push(...l));
+ merged = merged
+ .filter(s => s)
+ .map(tag => tag.startsWith('http:') ? tag : 'https://mail.google.com/mail/u/' + tag);
+
+ if (prefs.feeds_custom) {
+ merged = [
+ ...merged,
+ ...prefs.feeds_custom.split(/\s*,\s*/g)
+ ];
+ }
+ merged = merged
+ // only feeds without '/inbox' show the right full-count
+ .map(tag => tag.replace('/inbox', ''))
+ .filter(f => f)
+ .filter((feed, index, feeds) => feeds.indexOf(feed) === index)
+ .sort();
+ if (!merged.length) {
+ merged = [
+ 'https://mail.google.com/mail/u/0/feed/atom',
+ 'https://mail.google.com/mail/u/1/feed/atom',
+ 'https://mail.google.com/mail/u/2/feed/atom',
+ 'https://mail.google.com/mail/u/3/feed/atom',
+ 'https://mail.google.com/mail/u/4/feed/atom',
+ 'https://mail.google.com/mail/u/5/feed/atom'
+ ];
+ }
+ return merged;
+ };
+
+ self.checkEmails = {
+ getCached() {
+ if (self.checkEmails.cached) {
+ return Promise.resolve(self.checkEmails.cached);
+ }
+ return read({
+ 'cached-objects': []
+ }, 'session').then(prefs => prefs['cached-objects']);
+ }
+ };
+ self.checkEmails.execute = async forced => {
+ if (forced) {
+ button.icon = 'load';
+ button.badge = 0;
+ // do not use -1; if the user is logged out, the loading need to be stopped
+ chrome.storage.session.set({count: 0});
+ }
+ // Cancel previous execution?
+ if (self.checkEmails.controller) {
+ self.checkEmails.controller.abort();
+ }
+ const prefs = await read({
+ 'url': 'https://mail.google.com/mail/u/0',
+ 'feeds_0': '',
+ 'feeds_1': '',
+ 'feeds_2': '',
+ 'feeds_3': '',
+ 'feeds_4': '',
+ 'feeds_5': '',
+ 'feeds_custom': '',
+ 'timeout': 9000,
+ 'alphabetic': false,
+ 'notificationTruncate': 70,
+ 'combined': navigator.userAgent.includes('Firefox'),
+ 'maxReport': 3,
+ 'oldFashion': 0,
+ 'notification': true,
+ 'notification.buttons.markasread': true,
+ 'notification.buttons.archive': true,
+ 'notification.buttons.trash': false,
+ 'alert': true,
+ 'notificationFormat': chrome.i18n.getMessage('notification'),
+ 'accounts': {}
+ });
+
+ const controller = self.checkEmails.controller = new AbortController();
+ const signal = controller.signal;
+
+ const fdsr = buildFeeds(prefs); // requested feeds
+ // do not reduce the feed list from cookies. It is not reliable
+ const feeds = fdsr.map(feed => new Feed(feed, prefs.timeout, isPrivate));
+
+ try {
+ const objs = [];
+ let mn = -1; // keep track of the last logged-out account
+ const uids = new Set();
+ for (const feed of feeds) {
+ if (mn !== -1) {
+ if (helper.id(feed.href) >= mn) { // belongs to a logged-out account
+ continue;
+ }
+ }
+
+ const r = await feed.execute(signal, uid => { // do not check logged-out feeds
+ if (uid) {
+ if (uids.has(uid)) { // this is a logged-out account
+ const n = helper.id(feed.href);
+ mn = mn === -1 ? n : Math.min(mn, n);
+
+ return true;
+ }
+ uids.add(uid);
+ }
+ }).catch(e => signal.aborted === false && log('[feed]', 'error', e));
+ if (signal.aborted) {
+ return log('[feed]', 'skipped');
+ }
+ if (r && r.notAuthorized && mn === -1) {
+ mn = helper.id(feed.href);
+ }
+
+ if (r && r.xml) {
+ // only add logged-in accounts
+ if (r.network && !r.notAuthorized && r.xml && r.xml.entries) {
+ // meta
+ if (r.xml?.title) {
+ if (r.xml.title in prefs.accounts) {
+ r.meta = prefs.accounts[r.xml.title];
+ }
+ if (!r.meta) {
+ r.meta = {};
+ prefs.accounts[r.xml.title] = {};
+ chrome.storage.local.set({
+ accounts: prefs.accounts
+ });
+ }
+ }
+ objs.push(r);
+ }
+ }
+ }
+
+ log('[feed]', 'forced', forced, 'objects', objs);
+
+ const isAuthorized = objs.length !== 0 && objs.some(c => !c.notAuthorized && c.network);
+ const count = await new Promise(resolve => chrome.storage.session.get({
+ count: -1
+ }, prefs => resolve(prefs.count)));
+
+ if (!isAuthorized) {
+ if (count !== -1) {
+ button.icon = 'blue';
+ button.badge = 0;
+ chrome.storage.session.set({count: -1});
+ chrome.storage.session.set({
+ 'cached-objects': []
+ });
+ if (self.checkEmails.cached) {
+ self.checkEmails.cached.length = 0;
+ }
+ context.accounts('logged.out');
+ }
+ if (forced) {
+ self.openLink(prefs.url);
+ toast(chrome.i18n.getMessage('log_into_your_account'));
+ }
+ button.label = chrome.i18n.getMessage('gmail');
+ detach();
+
+ log('[feed]', 'ignore checking', 'unauthorized');
+ return;
+ }
+ // Sorting accounts
+ objs.sort((a, b) => {
+ const var1 = prefs.alphabetic ? a.xml.title : a.xml.link;
+ const var2 = prefs.alphabetic ? b.xml.title : b.xml.link;
+ if (var1 > var2) {
+ return 1;
+ }
+ if (var1 < var2) {
+ return -1;
+ }
+ return 0;
+ });
+ // simplified version of objs for storing and sending between contexts
+ const cachedObjs = objs.map(o => {
+ const xml = {
+ ...o.xml
+ };
+ delete xml.parent;
+ return {
+ newIDs: o.newIDs,
+ xml
+ };
+ });
+
+ // Update cache (only copy a minimal object)
+ chrome.storage.session.set({
+ 'cached-objects': cachedObjs
+ });
+
+ self.checkEmails.cached = objs;
+ // save new emails
+ for (const o of objs) {
+ o.commit();
+ }
+
+ // New total count number
+ const anyNewEmails = objs.filter(c => c.meta.ignored !== true).some(c => c.newIDs.length !== 0);
+ let newCount = 0;
+ for (const obj of objs) {
+ if (obj.meta.ignored === true) {
+ continue;
+ }
+ newCount += obj.xml.fullcount;
+ }
+
+ if (!anyNewEmails && !forced && count === newCount) {
+ // Updating panel if it is open
+ chrome.runtime.sendMessage({
+ method: 'update-date',
+ data: cachedObjs
+ }, () => {
+ if (chrome.runtime.lastError) {
+ return;
+ }
+ // maybe the current email is marked as read but still count is 20 (max value for non inbox labels)
+ chrome.runtime.sendMessage({
+ method: 'validate-current',
+ data: cachedObjs
+ });
+ });
+ // we could have a new account with no new emails
+ chrome.storage.session.get({
+ 'accounts.keys': []
+ }, prefs => {
+ if (prefs['accounts.keys'].length !== objs.length) {
+ context.accounts('mismatch');
+ }
+ });
+
+ return; // Everything is clear
+ }
+ //
+ chrome.storage.session.set({count: newCount});
+ //
+ context.accounts('new.email');
+ // Preparing the report
+ const reportArray = [];
+ for (const o of objs) {
+ if (o.meta.ignored === true) {
+ continue;
+ }
+
+ (o.xml && o.xml.entries ? o.xml.entries : []).filter(e => {
+ if (anyNewEmails) {
+ return o.newIDs.includes(e.id);
+ }
+ return o.xml.fullcount !== 0;
+ }).forEach(e => {
+ e.parent = o;
+ reportArray.push(e);
+ });
+ }
+ // keep recent ones
+ reportArray.sort((a, b) => {
+ return (new Date(b.modified)).getTime() - (new Date(a.modified)).getTime();
+ });
+ reportArray.splice(prefs.maxReport, reportArray.length);
+
+ let report = reportArray.map(e => prefs.notificationFormat
+ .replace('[author_name]', e.author_name)
+ .replace('[author_email]', e.author_email)
+ .replace('[summary]', shorten(e.summary, prefs.notificationTruncate))
+ .replace('[title]', shorten(e.title, prefs.notificationTruncate))
+ .replace(/\[break\]/g, '\n'));
+ if (prefs.combined) {
+ report = [report.join('\n\n')];
+ }
+ // Preparing the tooltip
+ button.label = chrome.i18n.getMessage('gmail') + '\n\n' +
+ objs.filter(c => c.meta.ignored !== true).reduce((p, c) => {
+ return p +=
+ c.xml.title +
+ (c.xml.label ? ' [' + c.xml.label + ']' : '') +
+ ' (' + c.xml.fullcount + ')\n';
+ }, '').replace(/\n$/, '');
+
+ const singleAccount = prefs.oldFashion === 1 ?
+ objs.filter(c => c.meta.ignored !== true)
+ .map(o => o.xml.rootLink).filter((s, i, l) => l.indexOf(s) === i).length === 1 :
+ prefs.oldFashion === 2;
+ //
+ if (!forced && !anyNewEmails) {
+ if (newCount) {
+ button.icon = 'red';
+ button.badge = newCount;
+ chrome.storage.session.set({count: newCount});
+
+ chrome.runtime.sendMessage({
+ method: 'update',
+ data: cachedObjs
+ }, () => chrome.runtime.lastError);
+ if (singleAccount) {
+ detach();
+ }
+ else {
+ attach();
+ }
+ }
+ else {
+ button.icon = 'gray';
+ button.badge = 0;
+ chrome.storage.session.set({count: 0});
+ detach();
+ }
+ }
+ else if (forced && !newCount) {
+ button.icon = 'gray';
+ button.badge = 0;
+ chrome.storage.session.set({count: 0});
+ detach();
+ }
+ else {
+ button.icon = 'new';
+ button.badge = newCount;
+ chrome.storage.session.set({count: newCount});
+ if (singleAccount) {
+ detach();
+ }
+ else {
+ attach();
+ }
+
+ if (prefs.notification) {
+ const buttons = [];
+ if (prefs['notification.buttons.markasread']) {
+ buttons.push({
+ title: chrome.i18n.getMessage('popup_read'),
+ iconUrl: '/data/images/read.png',
+ action: {
+ links: reportArray.map(o => o.link),
+ cmd: 'rd'
+ }
+ });
+ }
+ if (prefs['notification.buttons.archive']) {
+ buttons.push({
+ title: chrome.i18n.getMessage('popup_archive'),
+ iconUrl: '/data/images/archive.png',
+ action: {
+ links: reportArray.map(o => o.link),
+ cmd: 'rc_^i'
+ }
+ });
+ }
+ if (prefs['notification.buttons.trash']) {
+ buttons.push({
+ title: chrome.i18n.getMessage('popup_trash'),
+ iconUrl: '/data/images/trash.png',
+ action: {
+ links: reportArray.map(o => o.link),
+ cmd: 'tr'
+ }
+ });
+ }
+
+ // convert links
+ const links = [];
+ for (const o of reportArray) {
+ try {
+ const base = helper.base(o.link);
+ const thread = helper.thread(o.link);
+
+ if (thread && o.parent.xml.link.indexOf('#') === -1) {
+ links.push(base + '/?shva=1#inbox/' + thread);
+ }
+ else if (thread) {
+ links.push(o.parent.xml.link + '/' + thread);
+ }
+ else {
+ links.push(o.link);
+ }
+ }
+ catch (e) {
+ console.error(e);
+ links.push(o.link);
+ }
+ }
+ notify(report, '', {
+ cmd: 'open',
+ links
+ }, buttons.slice(0, 2));
+ }
+ if (prefs.alert) {
+ const entries = []; // new entries only
+ for (const o of objs) {
+ if (o.xml && o.newIDs.length) {
+ for (const entry of o.xml.entries) {
+ if (o.newIDs.includes(entry.id)) {
+ entries.push(entry);
+ }
+ }
+ }
+ }
+ sound.play(entries).catch(e => toast(e.message));
+ }
+ chrome.runtime.sendMessage({
+ method: 'update-reset',
+ data: cachedObjs
+ }, () => chrome.runtime.lastError);
+ }
+ }
+ catch (e) {
+ console.error(e);
+ }
+ };
+}
+
diff --git a/v3.classic/core/context.js b/v3.classic/core/context.js
new file mode 100644
index 00000000..3a90803d
--- /dev/null
+++ b/v3.classic/core/context.js
@@ -0,0 +1,284 @@
+/* global log, checkEmails, repeater */
+'use strict';
+
+// https://github.com/inbasic/ignotifier/issues/620
+const once = () => {
+ if (once.done) {
+ return;
+ }
+ once.done = true;
+
+ chrome.contextMenus.create({
+ id: 'root.ctx',
+ title: chrome.i18n.getMessage('label_14'),
+ contexts: ['action'],
+ enabled: false
+ }, () => chrome.runtime.lastError);
+ chrome.contextMenus.create({
+ id: 'ignored.ctx',
+ title: chrome.i18n.getMessage('label_15'),
+ contexts: ['action'],
+ enabled: false
+ }, () => chrome.runtime.lastError);
+ chrome.contextMenus.create({
+ title: chrome.i18n.getMessage('label_3'),
+ contexts: ['action'],
+ id: 'disable.ctx'
+ }, () => chrome.runtime.lastError);
+ for (const id of ['4', '5', '6', '7', '8', '9', '13']) {
+ chrome.contextMenus.create({
+ parentId: 'disable.ctx',
+ id: 'label_' + id,
+ title: chrome.i18n.getMessage('label_' + id),
+ contexts: ['action']
+ }, () => chrome.runtime.lastError);
+ }
+ // reset silence menu on startup. The actual pref is false
+ chrome.storage.session.set({ // Firefox
+ silent: false
+ });
+ chrome.contextMenus.create({
+ title: chrome.i18n.getMessage('label_10'),
+ type: 'checkbox',
+ contexts: ['action'],
+ id: 'silent.ctx',
+ checked: false
+ }, () => {
+ if (chrome.runtime.lastError) {
+ chrome.contextMenus.update('silent.ctx', {
+ checked: true
+ }, () => chrome.runtime.lastError);
+ }
+ });
+ chrome.contextMenus.create({
+ title: chrome.i18n.getMessage('label_11'),
+ contexts: ['action'],
+ id: 'label_11'
+ }, () => chrome.runtime.lastError);
+ chrome.contextMenus.create({
+ title: chrome.i18n.getMessage('label_1'),
+ contexts: ['action'],
+ id: 'label_1'
+ }, () => chrome.runtime.lastError);
+ // chrome.contextMenus.create({
+ // title: chrome.i18n.getMessage('label_12'),
+ // contexts: ['action'],
+ // id: 'label_12'
+ // }, () => chrome.runtime.lastError);
+};
+chrome.runtime.onInstalled.addListener(once);
+chrome.runtime.onStartup.addListener(once);
+
+/* public methods */
+self.context = {};
+self.context.accounts = async reason => {
+ const accounts = new Map();
+ const emails = new Set();
+ for (const o of await checkEmails.getCached()) {
+ if (o.xml?.title) {
+ emails.add(o.xml.title);
+ }
+ const href = o.xml?.rootLink.replace(/\?.*/, '');
+ if (href) {
+ accounts.set(href, {
+ title: o.xml.title
+ });
+ }
+ }
+ chrome.contextMenus.update('root.ctx', {
+ enabled: accounts.size !== 0
+ });
+ // create a unique key to determine whether context menu needs update or not
+ const keys = [...accounts.keys()];
+ chrome.storage.session.get({
+ 'accounts.keys': []
+ }, prefs => {
+ // do we need to update
+ if (prefs['accounts.keys'].join(',') === keys.join(',')) {
+ log('[menu]', 'accounts menu is up to date');
+ return;
+ }
+ log('[menu]', `Reason: "${reason}"`, prefs['accounts.keys'], keys);
+ chrome.storage.session.set({
+ 'accounts.keys': keys
+ });
+ // remove old context menu items
+ for (const key of prefs['accounts.keys']) {
+ chrome.contextMenus.remove(key, () => chrome.runtime.lastError);
+ }
+ // add new items
+ for (const [id, {title}] of accounts) {
+ chrome.contextMenus.create({
+ title,
+ id,
+ parentId: 'root.ctx',
+ contexts: ['action']
+ }, () => chrome.runtime.lastError);
+ }
+ });
+};
+
+{
+ const silent = time => {
+ const next = time => {
+ chrome.storage.session.set({
+ silent: true
+ });
+ chrome.alarms.create('resume.alarm', {
+ when: Date.now() + time * 1000
+ });
+ };
+ if (time === 'custom') {
+ chrome.storage.local.get({
+ 'silentTime': 10 // minutes
+ }, prefs => next(prefs.silentTime * 60));
+ }
+ else {
+ next(time);
+ }
+ };
+ const resume = () => {
+ chrome.alarms.clear('resume.alarm');
+ chrome.storage.session.set({
+ silent: false
+ });
+ };
+ chrome.alarms.onAlarm.addListener(o => {
+ if (o.name === 'resume.alarm') {
+ resume();
+ }
+ });
+ chrome.storage.onChanged.addListener(ps => {
+ if (ps.silent) {
+ chrome.contextMenus.update('silent.ctx', {
+ checked: !ps.silent.newValue
+ });
+ }
+ });
+
+ chrome.contextMenus.onClicked.addListener(info => {
+ const method = info.menuItemId;
+
+ if (method.startsWith('http')) {
+ // convert /u/0 to /u/0/
+ self.openLink(method + (/\/u\/\d$/.test(method) ? '/' : ''));
+ }
+ else if (method.startsWith('ignored:')) {
+ chrome.storage.local.get({
+ accounts: {}
+ }).then(prefs => {
+ prefs.accounts[method.replace('ignored:', '')].ignored = info.checked === false;
+ chrome.storage.local.set(prefs);
+ });
+ }
+ else if (method === 'root.ctx') {
+ chrome.storage.session.get({
+ 'accounts.keys': []
+ }, prefs => {
+ self.openLink(prefs['accounts.keys'][0]);
+ });
+ }
+ else if (method === 'label_4') {
+ silent(300);
+ }
+ else if (method === 'label_5') {
+ silent(900);
+ }
+ else if (method === 'label_6') {
+ silent(1800);
+ }
+ else if (method === 'label_7') {
+ silent(3600);
+ }
+ else if (method === 'label_8') {
+ silent(7200);
+ }
+ else if (method === 'label_9') {
+ silent(18000);
+ }
+ else if (method === 'label_13') {
+ silent('custom');
+ }
+ else if (method === 'label_11') {
+ chrome.storage.local.get({
+ compose: 'https://mail.google.com/mail/?ui=2&view=cm'
+ }, prefs => self.openLink(prefs.compose));
+ }
+ else if (method === 'silent.ctx') {
+ if (info.checked) {
+ resume();
+ }
+ else {
+ chrome.storage.session.set({
+ silent: true
+ });
+ }
+ }
+ else if (method === 'label_1') {
+ repeater.reset('user.request');
+ }
+ else if (method === 'label_12') {
+ self.openLink(chrome.runtime.getManifest().homepage_url);
+ }
+ });
+}
+
+// ignored list
+{
+ const update = () => chrome.storage.local.get({
+ accounts: {}
+ }).then(prefs => {
+ const entries = Object.entries(prefs.accounts);
+
+ for (const [title, o] of entries) {
+ chrome.contextMenus.create({
+ title,
+ contexts: ['action'],
+ id: 'ignored:' + title,
+ parentId: 'ignored.ctx',
+ type: 'checkbox',
+ checked: o.ignored !== true
+ }, () => chrome.runtime.lastError);
+ }
+ chrome.contextMenus.update('ignored.ctx', {
+ enabled: entries.length > 0
+ });
+ });
+ chrome.storage.onChanged.addListener(ps => {
+ if ('accounts' in ps) {
+ ps.accounts.newValue = ps.accounts.newValue || {};
+
+ // remove removed emails
+ if (ps.accounts.oldValue) {
+ const oldKeys = Object.keys(ps.accounts.oldValue);
+ for (const key of oldKeys) {
+ if (!(key in ps.accounts.newValue)) {
+ chrome.contextMenus.remove('ignored:' + key);
+ }
+ }
+ const newKeys = Object.keys(ps.accounts.newValue);
+ let check = false;
+ for (const key of newKeys) {
+ if (oldKeys.includes(key) === false) {
+ check = true;
+ break;
+ }
+ }
+ if (check === false) {
+ return;
+ }
+ }
+ update();
+ }
+ });
+
+ const once = () => {
+ if (once.done) {
+ return;
+ }
+ once.done = true;
+ update();
+ };
+ chrome.runtime.onInstalled.addListener(once);
+ chrome.runtime.onStartup.addListener(once);
+}
diff --git a/v3.classic/core/offscreen.js b/v3.classic/core/offscreen.js
new file mode 100644
index 00000000..46141a1f
--- /dev/null
+++ b/v3.classic/core/offscreen.js
@@ -0,0 +1,49 @@
+/* global log */
+
+const offscreen = {
+ busy: false,
+ cache: []
+};
+
+offscreen.command = async request => {
+ if (offscreen.busy) {
+ return new Promise(resolve => {
+ offscreen.cache.push({request, resolve});
+ });
+ }
+ offscreen.busy = true;
+
+ // do we have an active offscreen worker
+ const existingContexts = await chrome.runtime.getContexts({
+ contextTypes: ['OFFSCREEN_DOCUMENT']
+ });
+ if (existingContexts.length === 0) {
+ log('[offscreen]', 'creating...');
+ await chrome.offscreen.createDocument({
+ url: '/core/offscreen/index.html',
+ reasons: ['AUDIO_PLAYBACK', 'DOM_SCRAPING'],
+ justification: 'parse a command or play alert'
+ });
+ }
+ offscreen.busy = false;
+ for (const {request, resolve} of offscreen.cache) {
+ chrome.runtime.sendMessage({
+ method: 'offscreen',
+ request
+ }, resolve);
+ }
+ offscreen.cache.length = 0;
+
+ return new Promise(resolve => chrome.runtime.sendMessage({
+ method: 'offscreen',
+ request
+ }, resolve));
+};
+
+chrome.runtime.onMessage.addListener(request => {
+ if (request.method === 'exit-offscreen') {
+ chrome.offscreen.closeDocument().then(() => {
+ log('[offscreen]', 'exited');
+ });
+ }
+});
diff --git a/v3.classic/core/offscreen/firefox/polyfill.js b/v3.classic/core/offscreen/firefox/polyfill.js
new file mode 100644
index 00000000..8bbf4fde
--- /dev/null
+++ b/v3.classic/core/offscreen/firefox/polyfill.js
@@ -0,0 +1,33 @@
+// Firefox workaround
+chrome.offscreen = {
+ closeDocument() {
+ for (const e of document.querySelectorAll('iframe.offscreen')) {
+ e.remove();
+ }
+ return Promise.resolve();
+ },
+ createDocument(q) {
+ if (document.querySelector('iframe.offscreen')) {
+ return Promise.reject(Error('ALREADY_ATTACHED'));
+ }
+ return new Promise(resolve => {
+ const e = document.createElement('iframe');
+ e.classList.add('offscreen');
+ e.addEventListener('load', () => {
+ e.addEventListener('load', resolve, {
+ once: true
+ });
+ e.contentWindow.location.replace(q.url);
+ }, {once: true});
+ document.body.append(e);
+ });
+ }
+};
+chrome.runtime.getContexts = function(q) {
+ if (q.contextTypes && q.contextTypes.includes('OFFSCREEN_DOCUMENT')) {
+ return Promise.resolve([...document.querySelectorAll('iframe.offscreen')]);
+ }
+ else {
+ return Promise.reject(Error('NOT_SUPPORTED'));
+ }
+};
diff --git a/v3.classic/core/offscreen/gmail/core.js b/v3.classic/core/offscreen/gmail/core.js
new file mode 100644
index 00000000..68db4bd2
--- /dev/null
+++ b/v3.classic/core/offscreen/gmail/core.js
@@ -0,0 +1,251 @@
+const gmail = {};
+const cache = {
+ iks: new Map(),
+ ats: new Map()
+};
+gmail.page = n => {
+ if (cache.iks.has(n)) {
+ return Promise.resolve(cache.iks.get(n));
+ }
+
+ const page = localStorage.getItem('page-' + n) || `https://mail.google.com/mail/u/${n}/s/`;
+
+ const next = async href => {
+ const r = await fetch(href, {
+ credentials: 'include'
+ });
+ if (r.ok) {
+ const content = await r.text();
+ const m = content.match(/ID_KEY\s*=\s*['"](?[^'"]*)['"]/);
+
+ if (m) {
+ cache.iks.set(n, m.groups);
+ return m.groups;
+ }
+ const parser = new DOMParser();
+ const doc = parser.parseFromString(content, 'text/html');
+ const meta = doc.querySelector('meta[http-equiv="refresh"]');
+ if (meta) {
+ const url = meta.content.split('url=')[1];
+ if (url) {
+ const o = new URL(url, page);
+ localStorage.setItem('page-' + n, o.href);
+
+ return next(o.href);
+ }
+ }
+ }
+ throw Error('core.js -> id_key');
+ };
+
+ return next(page);
+};
+gmail.at = n => {
+ if (cache.ats.has(n)) {
+ return Promise.resolve(cache.ats.get(n));
+ }
+
+ return new Promise((resolve, reject) => chrome.runtime.sendMessage({
+ method: 'get-at',
+ n
+ }, at => {
+ if (at) {
+ cache.ats.set(n, at);
+ resolve(at);
+ }
+ // backup plan
+ else {
+ console.info('[core]', 'Using alternative method to get GAMIL_AT');
+
+ fetch(`https://mail.google.com/mail/u/${n}/h/`, {
+ credentials: 'include'
+ }).then(r => {
+ if (r.ok) {
+ return r.text();
+ }
+ throw Error('core.js -> at -> ' + r.status);
+ }).then(content => {
+ const parser = new DOMParser();
+ const doc = parser.parseFromString(content, 'text/html');
+
+ const e = doc.querySelector('a[href*="at="]');
+ const input = doc.querySelector('[name="at"]'); // do you really want to use this view
+
+ if (e) {
+ const args = new URLSearchParams(e.href.split('?')[1]);
+ if (args.has('at')) {
+ cache.ats.set(n, args.get('at'));
+ return resolve(args.get('at'));
+ }
+ }
+ if (input && input.value && input.value !== 'null') {
+ cache.ats.set(n, input.value);
+ return resolve(input.value);
+ }
+ throw Error('core.js -> at (h); Try to open Gmail in a browser tab to set the cookie');
+ }).then(resolve, reject);
+ }
+ }));
+};
+
+
+gmail.search = async ({url, query}) => {
+ const m = url.match(/u\/(?\d+)/);
+ if (m) {
+ const {n} = m.groups;
+ const {ik} = await gmail.page(n);
+ if (!ik) {
+ throw Error('core.js -> ik -> empty');
+ }
+ const at = await gmail.at(n);
+ if (!at) {
+ throw Error('core.js -> at -> empty');
+ }
+ const body = new URLSearchParams();
+ body.append('s_jr', JSON.stringify([null, [
+ [null, null, null, null, null, null, [null, true, false]],
+ [null, [null, query, 0, null, 80, null, null, null, false, [], [], true]]
+ ], 2, null, null, null, ik]));
+
+ const href = `https://mail.google.com/mail/u/${n}/s/?v=or&ik=${ik}&at=${at}&subui=chrome&hl=en&ts=` + Date.now();
+ const r = await fetch(href, {
+ method: 'POST',
+ credentials: 'include',
+ body
+ });
+ if (!r.ok) {
+ throw Error('core.js -> body: ' + r.status);
+ }
+ const content = await r.text();
+ // do we have access to the basic HTML
+ if (!content || content.includes('/spreauth')) {
+ const links = content.match(/\bhttps?:\/\/[^\s<>"'()]+/gi) || [];
+ const e = new Error('core.js -> permission_error');
+ e.details = {links};
+
+ throw e;
+ }
+
+ const parts = content.split(/\d+&/);
+
+ const results = parts[2];
+ const j = JSON.parse(results);
+ const entries = j[1][0][2][5].map(a => {
+ const entry = {};
+ entry.subject = a[3];
+ entry.thread = a[11];
+ entry.labels = a[8] || [];
+ entry.date = a[7];
+ entry.from = a[5];
+ entry.text = a[4];
+
+ try {
+ if (a[10][2] === 1) {
+ entry.labels.push('STARRED');
+ }
+ }
+ catch (e) {}
+ return entry;
+ });
+
+ return {
+ 'count': entries.length,
+ 'name': 'NA',
+ 'logged-in': true,
+ 'responseURL': r.responseURL,
+ entries
+ };
+ }
+ else {
+ throw Error('core.js -> valid_m');
+ }
+};
+
+gmail.action = async ({links, cmd, prefs}) => {
+ links = typeof links === 'string' ? [links] : links;
+
+ const a = links.map(link => {
+ const m = link.match(/u\/(?\d+).*message_id=(?[^&]+)/);
+ if (m) {
+ return m.groups;
+ }
+ }).filter(o => o);
+
+ if (a.length) {
+ const at = await gmail.at(a[0].n);
+
+ if (!at) {
+ throw Error('core.js -> at');
+ }
+ const {ik} = await gmail.page(a[0].n);
+ if (!ik) {
+ throw Error('core.js -> ik');
+ }
+
+ const action = {
+ command: 'l:all',
+ labels: [],
+ ids: []
+ };
+
+ if (cmd === 'rd' || cmd === 'rd-all') { // mark as read
+ action.code = 3;
+ }
+ else if (cmd === 'rc_^i' || cmd === 'rc_Inbox') { // archive
+ action.code = 1;
+ if (prefs.doReadOnArchive === true || prefs.doReadOnArchive === 'true') {
+ gmail.action({
+ links,
+ cmd: 'rd',
+ prefs
+ });
+ }
+ }
+ else if (cmd === 'sp' || cmd === 'rc_Spam') { // report spam
+ action.code = 7;
+ }
+ else if (cmd === 'tr') { // trash
+ action.code = 9;
+ }
+ else if (cmd === 'st') { // star
+ action.code = 5;
+ }
+ else if (cmd === 'xst') { // remove star
+ action.code = 6;
+ }
+ else if (cmd.startsWith('rc_')) { // add or remove labels
+ // action.labels = cmd.slice(3);
+ }
+ if (!action.code) {
+ throw Error('core.js -> action_not_supported: ' + cmd);
+ }
+
+ const body = new FormData();
+ body.append('s_jr', JSON.stringify([null, [
+ ...a.map(o => [null, null, null, [
+ null, action.code, o.thread, (o.id || o.thread), action.command, [], action.labels, o.ids
+ ]]),
+ [null, null, null, null, null, null, [null, true, false]],
+ [null, null, null, null, null, null, [null, true, false]]
+ ], 2, null, null, null, ik]));
+
+ const href = `https://mail.google.com/mail/u/${a[0].n}/s/?v=or&ik=${ik}&at=${at}&subui=chrome&hl=en&ts=` + Date.now();
+ const r = await fetch(href, {
+ method: 'POST',
+ credentials: 'include',
+ body
+ });
+ // do we have permission to do the action?
+ const content = await r.text();
+ if (!content || content.includes('/spreauth')) {
+ const links = content.match(/\bhttps?:\/\/[^\s<>"'()]+/gi) || [];
+ const e = new Error('core.js -> permission_error');
+ e.details = {links};
+
+ throw e;
+ }
+
+ return r;
+ }
+ throw Error('core.js -> no_links');
+};
diff --git a/v3.classic/core/offscreen/index.html b/v3.classic/core/offscreen/index.html
new file mode 100644
index 00000000..c4cd7af3
--- /dev/null
+++ b/v3.classic/core/offscreen/index.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/v3.classic/core/offscreen/index.js b/v3.classic/core/offscreen/index.js
new file mode 100644
index 00000000..0f783084
--- /dev/null
+++ b/v3.classic/core/offscreen/index.js
@@ -0,0 +1,98 @@
+/* global gmail */
+const ids = new Set();
+
+const exit = () => {
+ clearTimeout(exit.id);
+ console.info('%c[offscreen iframe]', 'color:#ff9900', 'exit request', ids.size);
+ exit.id = setTimeout(() => {
+ if (ids.size === 0) {
+ chrome.runtime.sendMessage({
+ method: 'exit-offscreen'
+ });
+ }
+ }, 60000);
+};
+
+const play = request => new Promise((resolve, reject) => {
+ stop();
+ const audio = document.createElement('audio');
+ audio.setAttribute('preload', 'auto');
+ audio.setAttribute('autobuffer', 'true');
+ audio.setAttribute('autoplay', 'true');
+ audio.onended = audio.onerror = e => {
+ ids.delete(request.id);
+ exit();
+ };
+ audio.iid = request.id;
+ document.body.append(audio);
+
+ const {index, media, prefs} = request;
+
+ const type = index === null ? media.default.type : media['custom' + index].type;
+ let path = '/data/sounds/' + type + '.mp4';
+ if (type === 4) {
+ path = index === null ? media.default.file : media['custom' + index].file;
+ }
+ audio.src = path;
+ audio.volume = prefs.soundVolume / 100;
+ audio.play().then(() => resolve(true), e => reject(e));
+});
+
+const stop = () => {
+ for (const e of document.querySelectorAll('audio')) {
+ e.pause();
+ e.remove();
+ ids.delete(e.iid);
+ }
+ exit();
+};
+
+chrome.runtime.onMessage.addListener(({request, method}, sender, response) => {
+ if (method === 'offscreen') {
+ console.info('%c[offscreen iframe]', 'color:#ff9900', 'request', request);
+ clearTimeout(exit.id);
+ const id = request.cmd + ';' + Math.random();
+ request.id = id;
+ ids.add(id);
+
+ if (request.cmd === 'play') {
+ play(request).then(() => response(true), e => response({
+ error: e.message
+ }));
+
+ return true;
+ }
+ else if (request.cmd === 'stop') {
+ stop(request);
+ response(true);
+ ids.delete(request.id);
+ exit();
+ }
+ else if (request.cmd === 'gmail.action') {
+ gmail.action(request.request).then(() => response(true)).catch(e => {
+ console.error(e);
+ response({
+ message: e.message,
+ details: e.details
+ });
+ }).finally(() => {
+ ids.delete(request.id);
+ exit();
+ });
+ return true;
+ }
+ else if (request.cmd === 'gmail.search') {
+ gmail.search(request.request).then(response).catch(e => {
+ console.error(e);
+ response({
+ message: e.message,
+ details: e.details
+ });
+ }).finally(() => {
+ ids.delete(request.id);
+ exit();
+ });
+ return true;
+ }
+ }
+});
diff --git a/v3.classic/core/open.js b/v3.classic/core/open.js
new file mode 100644
index 00000000..1884ddb9
--- /dev/null
+++ b/v3.classic/core/open.js
@@ -0,0 +1,134 @@
+/* global toast */
+
+{
+ const parseUri = str => {
+ const uri = new URL(str);
+ if (uri.hostname.startsWith('mail.google')) {
+ // https://mail.google.com/mail/u/0/#inbox
+ // https://mail.google.com/mail/u/0/#inbox/TEST_MESSAGE_ID
+ uri.messageId = (/message_id=([^&]*)|#[^/]*\/([^&]*)/.exec(uri.href) || [])[1] || uri.hash.split('/')[1] || '';
+ {
+ const a = uri.hash.substr(1).replace('label/', '').split('/');
+ a.pop();
+ uri.label = a.length ? a.join('/') : '';
+ }
+ }
+ return uri;
+ };
+
+ self.openLink = (url, inBackground, refresh) => {
+ url = url.replace('@private', ''); // some urls might end with "@private" for private mode
+
+ chrome.storage.local.get({
+ 'ignoreOpens': false,
+ 'searchMode': true, // true: current window only, false: all open windows
+ 'basic.html': false,
+ 'onGmailNotification': true,
+ 'currentTab': false,
+ 'newWindow': false,
+ 'relatedToCurrent': false,
+ 'background': false
+ }, async prefs => {
+ const mode = prefs.currentTab ? 2 : (prefs.newWindow ? 1 : 0);
+
+ const tabs = prefs.ignoreOpens ? [] : await new Promise(resolve => {
+ const options = {};
+ if (prefs.searchMode) {
+ options.currentWindow = true;
+ }
+ chrome.tabs.query(options, tabs => resolve(tabs.filter(t => t.url)));
+ });
+
+ const parse2 = parseUri(url);
+ // support for basic HTML
+ if (parse2.messageId && prefs['basic.html']) {
+ url = `${parse2.origin}${parse2.pathname}/h/?&th=${parse2.messageId}&v=c`.replace('//h', '/h');
+ if (parse2.label) {
+ url += '&s=l&l=' + parse2.label;
+ }
+ }
+
+ for (let i = 0; i < tabs.length; i++) {
+ const tab = tabs[i];
+ if (tab.url === url) {
+ if (prefs.onGmailNotification && tab.active) {
+ toast(chrome.i18n.getMessage('msg_1'));
+ }
+ const options = {
+ active: true
+ };
+ if (refresh) {
+ options.url = url;
+ }
+ chrome.tabs.update(tab.id, options);
+ chrome.windows.update(tab.windowId, {
+ focused: true
+ });
+ return;
+ }
+ const parse1 = parseUri(tab.url);
+ // Only if Gmail
+ if (
+ parse1.hostname.startsWith('mail.google') &&
+ parse1.hostname === parse2.hostname &&
+ parse1.pathname.indexOf(parse2.pathname) === 0 &&
+ !/to=/.test(url) &&
+ !/view=cm/.test(url)
+ ) {
+ const reload = refresh ||
+ (parse2.messageId && tab.url.indexOf(parse2.messageId) === -1) ||
+ (parse1.messageId && !parse2.messageId); // when opening INBOX when a thread page is open
+
+ if (tab.active && !reload) {
+ if (prefs.onGmailNotification) {
+ chrome.windows.getCurrent().then(w => {
+ if (w.id === tab.windowId) {
+ toast(chrome.i18n.getMessage('msg_1'));
+ }
+ });
+ }
+ }
+ const options = {
+ active: true
+ };
+ if (reload) {
+ options.url = url;
+ }
+ chrome.tabs.update(tab.id, options);
+ chrome.windows.update(tab.windowId, {
+ focused: true
+ });
+
+ return;
+ }
+ }
+ if (mode === 2) {
+ chrome.tabs.query({
+ active: true,
+ currentWindow: true
+ }, ([tab]) => chrome.tabs.update(tab.id, {url}));
+ }
+ else if (mode === 0) {
+ chrome.tabs.query({
+ active: true,
+ currentWindow: true
+ }, ([tab]) => {
+ const options = {
+ url,
+ active: typeof inBackground === 'undefined' ? !prefs.background : !inBackground
+ };
+ if (prefs.relatedToCurrent) {
+ options.index = tab.index + 1;
+ }
+ chrome.tabs.create(options);
+ });
+ }
+ else {
+ chrome.windows.create({
+ url,
+ focused: typeof inBackground === 'undefined' ? !prefs.background : !inBackground
+ });
+ }
+ });
+ };
+}
diff --git a/v3.classic/core/repeater.js b/v3.classic/core/repeater.js
new file mode 100644
index 00000000..5d3b846f
--- /dev/null
+++ b/v3.classic/core/repeater.js
@@ -0,0 +1,140 @@
+/* global log, checkEmails */
+const repeater = {
+ reason: ''
+};
+repeater.build = (type = 'normal', reason, delay) => chrome.storage.local.get({
+ 'period': 120, // seconds
+ 'initialPeriod': 3 // seconds
+}, async prefs => {
+ repeater.reason = reason;
+
+ if (isNaN(delay)) {
+ if (type === 'normal') {
+ delay = (prefs.initialPeriod || 5) * 1000;
+ }
+ else if (type === 'fired') {
+ delay = prefs.period * 1000;
+ }
+ else {
+ delay = 100;
+ }
+ }
+
+ const now = Date.now();
+ const when = now + delay;
+ // ignore
+ if (type !== 'fired') {
+ const next = await chrome.alarms.get('repeater');
+ if (next) {
+ if (next.scheduledTime > now) {
+ if ((when - next.scheduledTime) > 0) {
+ return log('[repeater]', 'ignored', when - next.scheduledTime);
+ }
+ }
+ }
+ }
+ log('[repeater]', `Reason: "${reason}"`, `Type: "${type}"`, `Delay: ${(delay / 1000).toFixed(2)}s`);
+ chrome.alarms.create('repeater', {
+ when,
+ periodInMinutes: prefs.period / 60
+ });
+});
+
+repeater.reset = (reason, delay) => repeater.build('now', reason, delay);
+
+/* alarm */
+chrome.alarms.onAlarm.addListener(o => {
+ if (o.name === 'repeater') {
+ repeater.build('fired', 'alarm.fired'); // make sure we can handle less than a minute calls
+
+ const forced = ['user.request', 'options.changes', 'change.of.feeds', 'popup.forced'].includes(repeater.reason);
+ checkEmails.execute(forced);
+
+ chrome.storage.local.get({
+ 'initialPeriod': 3 // seconds
+ }, prefs => {
+ if (prefs.initialPeriod === 0) { // manual mode
+ chrome.alarms.onAlarm.remove('repeater');
+ }
+ });
+ }
+});
+/* startup */
+{
+ const once = () => {
+ if (once.done) {
+ return;
+ }
+ once.done = true;
+ repeater.build('normal', 'startup');
+ };
+ chrome.runtime.onStartup.addListener(once);
+ chrome.runtime.onInstalled.addListener(once);
+}
+
+/* idle */
+{
+ const observe = name => {
+ if (name === 'active') {
+ repeater.reset('exit.idle');
+ }
+ };
+
+ const run = b => {
+ chrome.idle.onStateChanged.removeListener(observe);
+ if (b) {
+ chrome.idle.onStateChanged.addListener(observe);
+ }
+ };
+
+ chrome.storage.local.get({
+ 'idle.watch': true
+ }).then(prefs => {
+ run(prefs['idle.watch']);
+ });
+
+ chrome.storage.onChanged.addListener(ps => {
+ if ('idle.watch' in ps) {
+ run(ps['idle.watch'].newValue);
+ }
+ });
+
+ {
+ const once = () => {
+ if (once.done) {
+ return;
+ }
+ once.done = true;
+
+ chrome.storage.local.get({
+ 'idle-detection': 5 // minutes
+ }, prefs => {
+ chrome.idle.setDetectionInterval(prefs['idle-detection'] * 60);
+ });
+ };
+ chrome.runtime.onStartup.addListener(once);
+ chrome.runtime.onInstalled.addListener(once);
+ }
+}
+
+/* pref changes */
+chrome.storage.onChanged.addListener(prefs => {
+ if (prefs.minimal ||
+ prefs.feeds_0 || prefs.feeds_1 || prefs.feeds_2 || prefs.feeds_3 || prefs.feeds_4 || prefs.feeds_5 ||
+ prefs.feeds_custom
+ ) {
+ repeater.reset('change.of.feeds');
+ }
+ if (prefs.clrPattern || prefs.badge) {
+ repeater.reset('options.changes');
+ }
+ if (prefs.period) {
+ repeater.reset('period.changed');
+ }
+ if (prefs.oldFashion) {
+ repeater.reset('options.changes');
+ }
+ if (prefs.accounts) {
+ repeater.reset('change.of.ignored.list');
+ }
+});
diff --git a/v3.classic/core/sound.js b/v3.classic/core/sound.js
new file mode 100644
index 00000000..f9366b69
--- /dev/null
+++ b/v3.classic/core/sound.js
@@ -0,0 +1,197 @@
+/* global log, offscreen */
+
+const sound = {};
+
+sound.play = (entries = [], error = () => {}) => new Promise((resolve, reject) => {
+ chrome.storage.session.get({
+ silent: false
+ }, prefs => {
+ if (prefs.silent) {
+ log('[play]', 'aborted', 'silent mode');
+ return;
+ }
+ chrome.storage.local.get({
+ 'sound.state.active': true,
+ 'sound.state.idle': true,
+ 'sound.state.locked': true,
+ 'notification.sound.media.default.type': 0,
+ 'notification.sound.media.custom0.type': 0,
+ 'notification.sound.media.custom1.type': 0,
+ 'notification.sound.media.custom2.type': 0,
+ 'notification.sound.media.custom3.type': 0,
+ 'notification.sound.media.custom4.type': 0,
+ 'notification.sound.media.custom0.selector': 0,
+ 'notification.sound.media.custom1.selector': 0,
+ 'notification.sound.media.custom2.selector': 0,
+ 'notification.sound.media.custom3.selector': 0,
+ 'notification.sound.media.custom4.selector': 0,
+ 'notification.sound.media.custom0.filter': '',
+ 'notification.sound.media.custom1.filter': '',
+ 'notification.sound.media.custom2.filter': '',
+ 'notification.sound.media.custom3.filter': '',
+ 'notification.sound.media.custom4.filter': '',
+ 'notification.sound.media.default.file': null,
+ 'notification.sound.media.custom0.file': null,
+ 'notification.sound.media.custom1.file': null,
+ 'notification.sound.media.custom2.file': null,
+ 'notification.sound.media.custom3.file': null,
+ 'notification.sound.media.custom4.file': null,
+ 'alert': true,
+ 'soundVolume': 80
+ }, async prefs => {
+ if (
+ prefs['sound.state.active'] === false ||
+ prefs['sound.state.idle'] === false ||
+ prefs['sound.state.locked'] === false
+ ) {
+ const state = await chrome.idle.queryState(5 * 60);
+ if (prefs['sound.state.' + state] === false) {
+ log('[play]', 'aborted', 'unmatched idle state');
+ return;
+ }
+ }
+
+ const media = {
+ default: {
+ get type() { // 0-3: built-in, 4: user defined
+ return prefs['notification.sound.media.default.type'];
+ },
+ get file() {
+ return prefs['notification.sound.media.default.file'];
+ },
+ get mime() {
+ return prefs['notification.sound.media.default.mime'];
+ }
+ },
+ custom0: {
+ get type() { // 0-3: built-in, 4: user defined
+ return prefs['notification.sound.media.custom0.type'];
+ },
+ get file() {
+ return prefs['notification.sound.media.custom0.file'];
+ },
+ get mime() {
+ return prefs['notification.sound.media.custom0.mime'];
+ },
+ get filter() {
+ return prefs['notification.sound.media.custom0.filter'];
+ },
+ get selector() {
+ return prefs['notification.sound.media.custom0.selector'];
+ }
+ },
+ custom1: {
+ get type() { // 0-3: built-in, 4: user defined
+ return prefs['notification.sound.media.custom1.type'];
+ },
+ get file() {
+ return prefs['notification.sound.media.custom1.file'];
+ },
+ get mime() {
+ return prefs['notification.sound.media.custom1.mime'];
+ },
+ get filter() {
+ return prefs['notification.sound.media.custom1.filter'];
+ },
+ get selector() {
+ return prefs['notification.sound.media.custom1.selector'];
+ }
+ },
+ custom2: {
+ get type() { // 0-3: built-in, 4: user defined
+ return prefs['notification.sound.media.custom2.type'];
+ },
+ get file() {
+ return prefs['notification.sound.media.custom2.file'];
+ },
+ get mime() {
+ return prefs['notification.sound.media.custom2.mime'];
+ },
+ get filter() {
+ return prefs['notification.sound.media.custom2.filter'];
+ },
+ get selector() {
+ return prefs['notification.sound.media.custom2.selector'];
+ }
+ },
+ custom3: {
+ get type() { // 0-3: built-in, 4: user defined
+ return prefs['notification.sound.media.custom3.type'];
+ },
+ get file() {
+ return prefs['notification.sound.media.custom3.file'];
+ },
+ get mime() {
+ return prefs['notification.sound.media.custom3.mime'];
+ },
+ get filter() {
+ return prefs['notification.sound.media.custom3.filter'];
+ },
+ get selector() {
+ return prefs['notification.sound.media.custom3.selector'];
+ }
+ },
+ custom4: {
+ get type() { // 0-3: built-in, 4: user defined
+ return prefs['notification.sound.media.custom4.type'];
+ },
+ get file() {
+ return prefs['notification.sound.media.custom4.file'];
+ },
+ get mime() {
+ return prefs['notification.sound.media.custom4.mime'];
+ },
+ get filter() {
+ return prefs['notification.sound.media.custom4.filter'];
+ },
+ get selector() {
+ return prefs['notification.sound.media.custom4.selector'];
+ }
+ }
+ };
+ const filters = [0, 1, 2, 3, 4].map(index => ({
+ filter: media['custom' + index].filter,
+ selector: media['custom' + index].selector,
+ index
+ })).filter(o => o.filter).filter(obj => {
+ const keyword = obj.filter.toLowerCase();
+ if (obj.selector === 0) {
+ return entries.reduce((p, c) => {
+ return p || (
+ c.author_email.toLowerCase().includes(keyword) ||
+ c.author_name.toLowerCase().includes(keyword)
+ );
+ }, false);
+ }
+ if (obj.selector === 1) {
+ return entries.reduce((p, c) => p || c.title.toLowerCase().includes(keyword), false);
+ }
+ if (obj.selector === 2) {
+ return entries.reduce((p, c) => p || c.summary.toLowerCase().includes(keyword), false);
+ }
+ return false;
+ });
+
+ offscreen.command({
+ cmd: 'play',
+ media,
+ index: filters.length ? filters[0].index : null,
+ prefs: {
+ alert: prefs.alert,
+ soundVolume: prefs.soundVolume
+ }
+ }).then(b => {
+ if (b !== true && 'error' in b) {
+ reject(Error(b.error));
+ }
+ else {
+ resolve();
+ }
+ });
+ });
+ });
+});
+
+sound.stop = () => offscreen.command({
+ cmd: 'stop'
+});
diff --git a/v3.classic/core/utils/feed.js b/v3.classic/core/utils/feed.js
new file mode 100644
index 00000000..b5f3b52f
--- /dev/null
+++ b/v3.classic/core/utils/feed.js
@@ -0,0 +1,280 @@
+/* global sax */
+
+if (typeof importScripts !== 'undefined') {
+ self.importScripts('/core/utils/sax.js');
+}
+
+const convert = code => {
+ return new Promise((resolve, reject) => {
+ let tree;
+
+ class Node {
+ constructor(name, attributes) {
+ this.name = name;
+ this.attributes = attributes;
+ this.children = [];
+ }
+ }
+
+ const parser = sax.parser(false);
+ parser.onopentag = function(node) {
+ const child = new Node(node.name, node.attributes);
+
+ if (!tree) {
+ tree = child;
+ }
+ else {
+ child.parent = tree;
+ tree.children.push(child);
+ tree = child;
+ }
+ };
+
+ parser.onclosetag = function(name) {
+ if (name === tree.name) {
+ if (tree.parent) {
+ tree = tree.parent;
+ }
+ }
+ };
+ parser.ontext = text => tree.text = text;
+ parser.onend = () => {
+ resolve(tree);
+ };
+ parser.onerror = e => reject(e);
+ parser.write(code).end();
+ });
+};
+
+class Feed {
+ #timeout;
+ #isPrivate;
+ constructor(feed, timeout, isPrivate) {
+ this.href = feed;
+ this.#timeout = timeout;
+ this.#isPrivate = isPrivate;
+ }
+ execute(signal, duplicated = () => false) {
+ const isPrivate = this.#isPrivate;
+
+ // Sometimes id is wrong in the feed structure!
+ const fixID = link => {
+ const id = /u\/\d+/.exec(this.href);
+ if (id && id.length) {
+ return link.replace(/u\/\d+/, id[0]);
+ }
+ return link;
+ };
+ const controller = new AbortController();
+ signal.addEventListener('abort', () => controller.abort(signal.reason), {
+ signal: controller.signal
+ });
+ const id = setTimeout(() => controller.abort('TIMEOUT'), this.#timeout);
+ const href = this.href + '?rand=' + Math.round(Math.random() * 10000000);
+ return fetch(href, {
+ method: 'GET',
+ cache: 'no-store',
+ signal
+ }).then(async r => {
+ if (!r.ok) {
+ clearTimeout(id);
+ return {
+ isPrivate,
+ network: r.status !== 0,
+ notAuthorized: r.status === 401,
+ xml: null,
+ newIDs: []
+ };
+ }
+ if (r.url.includes('/u/0/') && this.href.includes('/u/0/') === false) {
+ clearTimeout(id);
+ return {
+ isPrivate,
+ network: r.status !== 0,
+ notAuthorized: true,
+ xml: null,
+ newIDs: []
+ };
+ }
+
+ const content = await r.text();
+ clearTimeout(id);
+ // global id
+ const uid = (content.split('')[1] || '').split(' ')[0];
+ if (uid) {
+ if (duplicated(uid)) {
+ return {
+ isPrivate,
+ network: r.status !== 0,
+ notAuthorized: true,
+ xml: null,
+ newIDs: []
+ };
+ }
+ }
+ //
+ const tree = await convert(content);
+
+ const xml = {
+ get fullcount() {
+ let one = 0;
+ for (const node of tree.children) {
+ if (node.name === 'FULLCOUNT') {
+ one = Number(node.text);
+ break;
+ }
+ }
+ const two = tree.children.filter(o => o.name === 'ENTRY').length;
+
+ return Math.max(one, two);
+ },
+ get id() {
+ return uid;
+ },
+ get title() {
+ let title = '';
+ for (const node of tree.children) {
+ if (node.name === 'TITLE') {
+ title = node.text;
+ break;
+ }
+ }
+ try {
+ return title.match(/[^ ]+@.+\.[^ ]+/)[0];
+ }
+ catch (e) {
+ return title;
+ }
+ },
+ get label() {
+ for (const node of tree.children) {
+ if (node.name === 'TAGLINE') {
+ const match = node.text.match(/'(.*)' label/);
+ if (match && match.length == 2) {
+ return match[1];
+ }
+ }
+ }
+ return '';
+ },
+ get link() {
+ let temp = this.rootLink;
+ const label = this.label;
+ if (label) {
+ temp += '/?shva=1#label/' + label;
+ }
+ // account selector uses this url as account identifier
+ if (isPrivate) {
+ temp += '@private';
+ }
+ return temp;
+ },
+ get rootLink() {
+ let temp = 'https://mail.google.com/mail/u/0';
+ // Inbox href
+ for (const node of tree.children) {
+ if (node.name === 'LINK') {
+ temp = node.attributes?.HREF;
+ break;
+ }
+ }
+ temp = temp.replace('http://', 'https://');
+ return fixID(temp);
+ },
+ get authorized() {
+ for (const node of tree.children) {
+ if (node.name === 'TITLE') {
+ return true;
+ }
+ }
+ return false;
+ },
+ get entries() {
+ return tree.children.filter(o => o.name === 'ENTRY').map(node => {
+ const o = {};
+ for (const c of node.children) {
+ if (c.name === 'TITLE') {
+ o.title = c.text;
+ }
+ else if (c.name === 'SUMMARY') {
+ o.summary = c.text;
+ }
+ else if (c.name === 'MODIFIED') {
+ o.modified = c.text;
+ }
+ else if (c.name === 'ISSUED') {
+ o.issued = c.text;
+ }
+ else if (c.name === 'ID') {
+ o.id = c.text;
+ }
+ else if (c.name === 'LINK') {
+ o.link = fixID((c.attributes.HREF || '').replace('http://', 'https://'));
+ }
+ else if (c.name === 'AUTHOR') {
+ for (const nn of c.children) {
+ if (nn.name === 'NAME') {
+ o['author_name'] = nn.text;
+ }
+ else if (nn.name === 'EMAIL') {
+ o['author_email'] = nn.text;
+ }
+ }
+ }
+ }
+ o['author_name'] = o['author_name'] || chrome.i18n.getMessage('msg_1');
+ o['author_email'] = o['author_email'] || '';
+ o.title = o.title || '';
+ o.summary = o.summary || '';
+
+ return o;
+ });
+ }
+ };
+ const key = 'ids.account.' + xml.title;
+ return new Promise(resolve => {
+ chrome.storage.local.get({
+ [key]: [],
+ 'threatAsNew': 10 // minutes
+ }, prefs => {
+ const newIDs = [];
+ const oldIDs = [];
+ const now = Date.now();
+ for (const {id, modified} of xml.entries) {
+ const age = (now - (new Date(modified)).getTime());
+ if (age > 1000 * 60 * prefs.threatAsNew) {
+ oldIDs.push(id);
+ }
+ else if (prefs[key].includes(id)) {
+ oldIDs.push(id);
+ }
+ else {
+ newIDs.push(id);
+ }
+ }
+ resolve({
+ isPrivate,
+ network: true,
+ notAuthorized: xml.authorized === false,
+ xml,
+ newIDs,
+ // we postpone the save of new ids to make sure the request is not being aborted
+ commit() {
+ if (newIDs.length) {
+ chrome.storage.local.set({
+ [key]: [
+ ...oldIDs,
+ ...newIDs
+ ]
+ });
+ }
+ }
+ });
+ });
+ });
+ }).catch(e => {
+ clearTimeout(id);
+ throw e;
+ });
+ }
+}
diff --git a/v3.classic/core/utils/log.js b/v3.classic/core/utils/log.js
new file mode 100644
index 00000000..fcc10194
--- /dev/null
+++ b/v3.classic/core/utils/log.js
@@ -0,0 +1,30 @@
+const log = (origin, ...args) => {
+ const cc = [
+ '#ff0099',
+ '#ff9900',
+ '#c46dff',
+ '#0099ff',
+ '#66cc00',
+ '#00cc66'
+ ];
+
+ let n = 0;
+ switch (origin) {
+ case '[offscreen]':
+ n = 1;
+ break;
+ case '[menu]':
+ n = 2;
+ break;
+ case '[feed]':
+ n = 3;
+ break;
+ case '[repeater]':
+ n = 4;
+ break;
+ case '[play]':
+ n = 5;
+ break;
+ }
+ console.info('%c' + origin, 'color:' + cc[n], ...args);
+};
diff --git a/v3.classic/core/utils/sax.js b/v3.classic/core/utils/sax.js
new file mode 100644
index 00000000..795d607e
--- /dev/null
+++ b/v3.classic/core/utils/sax.js
@@ -0,0 +1,1565 @@
+;(function (sax) { // wrapper for non-node envs
+ sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }
+ sax.SAXParser = SAXParser
+ sax.SAXStream = SAXStream
+ sax.createStream = createStream
+
+ // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.
+ // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),
+ // since that's the earliest that a buffer overrun could occur. This way, checks are
+ // as rare as required, but as often as necessary to ensure never crossing this bound.
+ // Furthermore, buffers are only tested at most once per write(), so passing a very
+ // large string into write() might have undesirable effects, but this is manageable by
+ // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme
+ // edge case, result in creating at most one complete copy of the string passed in.
+ // Set to Infinity to have unlimited buffers.
+ sax.MAX_BUFFER_LENGTH = 64 * 1024
+
+ var buffers = [
+ 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',
+ 'procInstName', 'procInstBody', 'entity', 'attribName',
+ 'attribValue', 'cdata', 'script'
+ ]
+
+ sax.EVENTS = [
+ 'text',
+ 'processinginstruction',
+ 'sgmldeclaration',
+ 'doctype',
+ 'comment',
+ 'opentagstart',
+ 'attribute',
+ 'opentag',
+ 'closetag',
+ 'opencdata',
+ 'cdata',
+ 'closecdata',
+ 'error',
+ 'end',
+ 'ready',
+ 'script',
+ 'opennamespace',
+ 'closenamespace'
+ ]
+
+ function SAXParser (strict, opt) {
+ if (!(this instanceof SAXParser)) {
+ return new SAXParser(strict, opt)
+ }
+
+ var parser = this
+ clearBuffers(parser)
+ parser.q = parser.c = ''
+ parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH
+ parser.opt = opt || {}
+ parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags
+ parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'
+ parser.tags = []
+ parser.closed = parser.closedRoot = parser.sawRoot = false
+ parser.tag = parser.error = null
+ parser.strict = !!strict
+ parser.noscript = !!(strict || parser.opt.noscript)
+ parser.state = S.BEGIN
+ parser.strictEntities = parser.opt.strictEntities
+ parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)
+ parser.attribList = []
+
+ // namespaces form a prototype chain.
+ // it always points at the current tag,
+ // which protos to its parent tag.
+ if (parser.opt.xmlns) {
+ parser.ns = Object.create(rootNS)
+ }
+
+ // mostly just for error reporting
+ parser.trackPosition = parser.opt.position !== false
+ if (parser.trackPosition) {
+ parser.position = parser.line = parser.column = 0
+ }
+ emit(parser, 'onready')
+ }
+
+ if (!Object.create) {
+ Object.create = function (o) {
+ function F () {}
+ F.prototype = o
+ var newf = new F()
+ return newf
+ }
+ }
+
+ if (!Object.keys) {
+ Object.keys = function (o) {
+ var a = []
+ for (var i in o) if (o.hasOwnProperty(i)) a.push(i)
+ return a
+ }
+ }
+
+ function checkBufferLength (parser) {
+ var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)
+ var maxActual = 0
+ for (var i = 0, l = buffers.length; i < l; i++) {
+ var len = parser[buffers[i]].length
+ if (len > maxAllowed) {
+ // Text/cdata nodes can get big, and since they're buffered,
+ // we can get here under normal conditions.
+ // Avoid issues by emitting the text node now,
+ // so at least it won't get any bigger.
+ switch (buffers[i]) {
+ case 'textNode':
+ closeText(parser)
+ break
+
+ case 'cdata':
+ emitNode(parser, 'oncdata', parser.cdata)
+ parser.cdata = ''
+ break
+
+ case 'script':
+ emitNode(parser, 'onscript', parser.script)
+ parser.script = ''
+ break
+
+ default:
+ error(parser, 'Max buffer length exceeded: ' + buffers[i])
+ }
+ }
+ maxActual = Math.max(maxActual, len)
+ }
+ // schedule the next check for the earliest possible buffer overrun.
+ var m = sax.MAX_BUFFER_LENGTH - maxActual
+ parser.bufferCheckPosition = m + parser.position
+ }
+
+ function clearBuffers (parser) {
+ for (var i = 0, l = buffers.length; i < l; i++) {
+ parser[buffers[i]] = ''
+ }
+ }
+
+ function flushBuffers (parser) {
+ closeText(parser)
+ if (parser.cdata !== '') {
+ emitNode(parser, 'oncdata', parser.cdata)
+ parser.cdata = ''
+ }
+ if (parser.script !== '') {
+ emitNode(parser, 'onscript', parser.script)
+ parser.script = ''
+ }
+ }
+
+ SAXParser.prototype = {
+ end: function () { end(this) },
+ write: write,
+ resume: function () { this.error = null; return this },
+ close: function () { return this.write(null) },
+ flush: function () { flushBuffers(this) }
+ }
+
+ var Stream
+ try {
+ Stream = require('stream').Stream
+ } catch (ex) {
+ Stream = function () {}
+ }
+
+ var streamWraps = sax.EVENTS.filter(function (ev) {
+ return ev !== 'error' && ev !== 'end'
+ })
+
+ function createStream (strict, opt) {
+ return new SAXStream(strict, opt)
+ }
+
+ function SAXStream (strict, opt) {
+ if (!(this instanceof SAXStream)) {
+ return new SAXStream(strict, opt)
+ }
+
+ Stream.apply(this)
+
+ this._parser = new SAXParser(strict, opt)
+ this.writable = true
+ this.readable = true
+
+ var me = this
+
+ this._parser.onend = function () {
+ me.emit('end')
+ }
+
+ this._parser.onerror = function (er) {
+ me.emit('error', er)
+
+ // if didn't throw, then means error was handled.
+ // go ahead and clear error, so we can write again.
+ me._parser.error = null
+ }
+
+ this._decoder = null
+
+ streamWraps.forEach(function (ev) {
+ Object.defineProperty(me, 'on' + ev, {
+ get: function () {
+ return me._parser['on' + ev]
+ },
+ set: function (h) {
+ if (!h) {
+ me.removeAllListeners(ev)
+ me._parser['on' + ev] = h
+ return h
+ }
+ me.on(ev, h)
+ },
+ enumerable: true,
+ configurable: false
+ })
+ })
+ }
+
+ SAXStream.prototype = Object.create(Stream.prototype, {
+ constructor: {
+ value: SAXStream
+ }
+ })
+
+ SAXStream.prototype.write = function (data) {
+ if (typeof Buffer === 'function' &&
+ typeof Buffer.isBuffer === 'function' &&
+ Buffer.isBuffer(data)) {
+ if (!this._decoder) {
+ var SD = require('string_decoder').StringDecoder
+ this._decoder = new SD('utf8')
+ }
+ data = this._decoder.write(data)
+ }
+
+ this._parser.write(data.toString())
+ this.emit('data', data)
+ return true
+ }
+
+ SAXStream.prototype.end = function (chunk) {
+ if (chunk && chunk.length) {
+ this.write(chunk)
+ }
+ this._parser.end()
+ return true
+ }
+
+ SAXStream.prototype.on = function (ev, handler) {
+ var me = this
+ if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {
+ me._parser['on' + ev] = function () {
+ var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)
+ args.splice(0, 0, ev)
+ me.emit.apply(me, args)
+ }
+ }
+
+ return Stream.prototype.on.call(me, ev, handler)
+ }
+
+ // this really needs to be replaced with character classes.
+ // XML allows all manner of ridiculous numbers and digits.
+ var CDATA = '[CDATA['
+ var DOCTYPE = 'DOCTYPE'
+ var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'
+ var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'
+ var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }
+
+ // http://www.w3.org/TR/REC-xml/#NT-NameStartChar
+ // This implementation works on strings, a single character at a time
+ // as such, it cannot ever support astral-plane characters (10000-EFFFF)
+ // without a significant breaking change to either this parser, or the
+ // JavaScript language. Implementation of an emoji-capable xml parser
+ // is left as an exercise for the reader.
+ var nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/
+
+ var nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/
+
+ var entityStart = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/
+ var entityBody = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/
+
+ function isWhitespace (c) {
+ return c === ' ' || c === '\n' || c === '\r' || c === '\t'
+ }
+
+ function isQuote (c) {
+ return c === '"' || c === '\''
+ }
+
+ function isAttribEnd (c) {
+ return c === '>' || isWhitespace(c)
+ }
+
+ function isMatch (regex, c) {
+ return regex.test(c)
+ }
+
+ function notMatch (regex, c) {
+ return !isMatch(regex, c)
+ }
+
+ var S = 0
+ sax.STATE = {
+ BEGIN: S++, // leading byte order mark or whitespace
+ BEGIN_WHITESPACE: S++, // leading whitespace
+ TEXT: S++, // general stuff
+ TEXT_ENTITY: S++, // & and such.
+ OPEN_WAKA: S++, // <
+ SGML_DECL: S++, //
+ SCRIPT: S++, //
+
+
+