Bug 1346825 - Import Screenshots version 6.3.0 into mozilla-central. rs=Mossop.
This is imported from https://github.com/mozilla-services/screenshots/. It has been reviewed as patches landed, but also reviewed by Mossop and kmag.
|
@ -0,0 +1,145 @@
|
|||
/* globals AddonManager, Components, LegacyExtensionsUtils, Services,
|
||||
XPCOMUtils */
|
||||
|
||||
const OLD_ADDON_PREF_NAME = "extensions.jid1-NeEaf3sAHdKHPA@jetpack.deviceIdInfo";
|
||||
const OLD_ADDON_ID = "jid1-NeEaf3sAHdKHPA@jetpack";
|
||||
const ADDON_ID = "screenshots@mozilla.org";
|
||||
const TELEMETRY_ENABLED_PREF = "toolkit.telemetry.enabled";
|
||||
const PREF_BRANCH = "extensions.screenshots.";
|
||||
const USER_DISABLE_PREF = "extensions.screenshots.disabled";
|
||||
const SYSTEM_DISABLE_PREF = "extensions.screenshots.system-disabled";
|
||||
|
||||
const { interfaces: Ci, utils: Cu } = Components;
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "AddonManager",
|
||||
"resource://gre/modules/AddonManager.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "Console",
|
||||
"resource://gre/modules/Console.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "Services",
|
||||
"resource://gre/modules/Services.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "LegacyExtensionsUtils",
|
||||
"resource://gre/modules/LegacyExtensionsUtils.jsm");
|
||||
|
||||
let addonResourceURI;
|
||||
let appStartupDone;
|
||||
const appStartupPromise = new Promise((resolve,reject) => {
|
||||
appStartupDone = resolve;
|
||||
});
|
||||
|
||||
const prefs = Services.prefs;
|
||||
const prefObserver = {
|
||||
register: function() {
|
||||
prefs.addObserver(PREF_BRANCH, this, false);
|
||||
},
|
||||
|
||||
unregister: function() {
|
||||
prefs.removeObserver(PREF_BRANCH, this);
|
||||
},
|
||||
|
||||
observe: function(aSubject, aTopic, aData) {
|
||||
// aSubject is the nsIPrefBranch we're observing (after appropriate QI)
|
||||
// aData is the name of the pref that's been changed (relative to aSubject)
|
||||
if (aData == USER_DISABLE_PREF || aData == SYSTEM_DISABLE_PREF) {
|
||||
// eslint-disable-next-line promise/catch-or-return
|
||||
appStartupPromise.then(handleStartup);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const appStartupObserver = {
|
||||
register: function() {
|
||||
Services.obs.addObserver(this, "sessionstore-windows-restored", false);
|
||||
},
|
||||
|
||||
unregister: function() {
|
||||
Services.obs.removeObserver(this, "sessionstore-windows-restored", false);
|
||||
},
|
||||
|
||||
observe: function() {
|
||||
appStartupDone();
|
||||
this.unregister();
|
||||
}
|
||||
}
|
||||
|
||||
const APP_STARTUP = 1;
|
||||
function startup(data, reason) { // eslint-disable-line no-unused-vars
|
||||
if (reason === APP_STARTUP) {
|
||||
appStartupObserver.register();
|
||||
} else {
|
||||
appStartupDone();
|
||||
}
|
||||
prefObserver.register();
|
||||
addonResourceURI = data.resourceURI;
|
||||
// eslint-disable-next-line promise/catch-or-return
|
||||
appStartupPromise.then(handleStartup);
|
||||
}
|
||||
|
||||
function shutdown(data, reason) { // eslint-disable-line no-unused-vars
|
||||
prefObserver.unregister();
|
||||
}
|
||||
|
||||
function install(data, reason) {} // eslint-disable-line no-unused-vars
|
||||
|
||||
function uninstall(data, reason) {} // eslint-disable-line no-unused-vars
|
||||
|
||||
function getBoolPref(pref) {
|
||||
return prefs.getPrefType(pref) && prefs.getBoolPref(pref);
|
||||
}
|
||||
|
||||
function shouldDisable() {
|
||||
return getBoolPref(USER_DISABLE_PREF) || getBoolPref(SYSTEM_DISABLE_PREF);
|
||||
}
|
||||
|
||||
function handleStartup() {
|
||||
const webExtension = LegacyExtensionsUtils.getEmbeddedExtensionFor({
|
||||
id: ADDON_ID,
|
||||
resourceURI: addonResourceURI
|
||||
});
|
||||
|
||||
if (!shouldDisable() && !webExtension.started) {
|
||||
start(webExtension);
|
||||
} else if (shouldDisable()) {
|
||||
stop(webExtension);
|
||||
}
|
||||
}
|
||||
|
||||
function start(webExtension) {
|
||||
webExtension.startup().then((api) => {
|
||||
api.browser.runtime.onMessage.addListener(handleMessage);
|
||||
}).catch((err) => {
|
||||
// The startup() promise will be rejected if the webExtension was
|
||||
// already started (a harmless error), or if initializing the
|
||||
// WebExtension failed and threw (an important error).
|
||||
console.error(err);
|
||||
if (err.message !== "This embedded extension has already been started") {
|
||||
// TODO: Should we send these errors to Sentry? #2420
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function stop(webExtension) {
|
||||
webExtension.shutdown();
|
||||
}
|
||||
|
||||
function handleMessage(msg, sender, sendReply) {
|
||||
if (!msg) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (msg.funcName === "getTelemetryPref") {
|
||||
let telemetryEnabled = getBoolPref(TELEMETRY_ENABLED_PREF);
|
||||
sendReply({type: "success", value: telemetryEnabled});
|
||||
} else if (msg.funcName === "getOldDeviceInfo") {
|
||||
let oldDeviceInfo = prefs.prefHasUserValue(OLD_ADDON_PREF_NAME) && prefs.getCharPref(OLD_ADDON_PREF_NAME);
|
||||
sendReply({type: "success", value: oldDeviceInfo || null});
|
||||
} else if (msg.funcName === "removeOldAddon") {
|
||||
AddonManager.getAddonByID(OLD_ADDON_ID, (addon) => {
|
||||
prefs.clearUserPref(OLD_ADDON_PREF_NAME);
|
||||
if (addon) {
|
||||
addon.uninstall();
|
||||
}
|
||||
sendReply({type: "success", value: !!addon});
|
||||
});
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>screenshots@mozilla.org</em:id>
|
||||
<em:name>Firefox Screenshots</em:name>
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> <!--Firefox-->
|
||||
<em:minVersion>51.0a1</em:minVersion>
|
||||
<em:maxVersion>*</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
<em:type>2</em:type>
|
||||
<em:version>6.3.0</em:version>
|
||||
<em:bootstrap>true</em:bootstrap>
|
||||
<em:hasEmbeddedWebExtension>true</em:hasEmbeddedWebExtension>
|
||||
<em:homepageURL>https://pageshot.net/</em:homepageURL>
|
||||
<em:multiprocessCompatible>true</em:multiprocessCompatible>
|
||||
</Description>
|
||||
</RDF>
|
|
@ -13,9 +13,12 @@ FINAL_TARGET_FILES.features['screenshots@mozilla.org'] += [
|
|||
# AUTOMATIC INSERTION START
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"] += [
|
||||
'webextension/assertIsTrusted.js',
|
||||
'webextension/blank.html',
|
||||
'webextension/buildSettings.js.template',
|
||||
'webextension/catcher.js',
|
||||
'webextension/clipboard.js',
|
||||
'webextension/domainFromUrl.js',
|
||||
'webextension/log.js',
|
||||
'webextension/makeUuid.js',
|
||||
'webextension/manifest.json',
|
||||
'webextension/randomString.js',
|
||||
|
@ -250,7 +253,7 @@ FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["backgrou
|
|||
]
|
||||
|
||||
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["build"] += [
|
||||
'webextension/build/defaultSentryDsn.js',
|
||||
'webextension/build/buildSettings.js',
|
||||
'webextension/build/inlineSelectionCss.js',
|
||||
'webextension/build/onboardingCss.js',
|
||||
'webextension/build/onboardingHtml.js',
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
[DEFAULT]
|
||||
support-files =
|
||||
head.js
|
||||
|
||||
[browser_screenshots_ui_check.js]
|
|
@ -0,0 +1,20 @@
|
|||
"use strict";
|
||||
|
||||
/* global add_task, is, promiseScreenshotsEnabled, promiseScreenshotsReset,
|
||||
registerCleanupFunction */
|
||||
|
||||
function checkElements(expectPresent, l) {
|
||||
for (let id of l) {
|
||||
is(!!document.getElementById(id), expectPresent, "element " + id + (expectPresent ? " is" : " is not") + " present");
|
||||
}
|
||||
}
|
||||
|
||||
add_task(function*() {
|
||||
yield promiseScreenshotsEnabled();
|
||||
|
||||
registerCleanupFunction(function* () {
|
||||
yield promiseScreenshotsReset();
|
||||
});
|
||||
|
||||
checkElements(true, ["screenshots_mozilla_org-browser-action"]);
|
||||
});
|
|
@ -0,0 +1,61 @@
|
|||
/* global CustomizableUI, info, Services */
|
||||
|
||||
// Currently Screenshots is disabled in tests. We want these tests to work under
|
||||
// either case that Screenshots is disabled or enabled on startup of the browser,
|
||||
// and that at the end we're reset to the correct state.
|
||||
let enabledOnStartup = false;
|
||||
|
||||
// ScreenshotsEnabled/Disabled promises return true if it was already
|
||||
// Enabled/Disabled, and false if it need to Enable/Disable.
|
||||
function promiseScreenshotsEnabled() {
|
||||
if (!Services.prefs.getBoolPref("extensions.screenshots.system-disabled", false)) {
|
||||
info("Screenshots was already enabled, assuming enabled by default for tests");
|
||||
enabledOnStartup = true;
|
||||
return Promise.resolve(true);
|
||||
}
|
||||
info("Screenshots is not enabled");
|
||||
return new Promise((resolve, reject) => {
|
||||
let listener = {
|
||||
onWidgetAfterCreation(widgetid) {
|
||||
if (widgetid == "screenshots_mozilla_org-browser-action") {
|
||||
info("screenshots_mozilla_org-browser-action button created");
|
||||
CustomizableUI.removeListener(listener);
|
||||
resolve(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
CustomizableUI.addListener(listener);
|
||||
info("Set Screenshots disabled pref to false.");
|
||||
Services.prefs.setBoolPref("extensions.screenshots.system-disabled", false);
|
||||
});
|
||||
}
|
||||
|
||||
function promiseScreenshotsDisabled() {
|
||||
if (Services.prefs.getBoolPref("extensions.screenshots.system-disabled", false)) {
|
||||
info("Screenshots already disabled");
|
||||
return Promise.resolve(true);
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
let listener = {
|
||||
onWidgetDestroyed(widgetid) {
|
||||
if (widgetid == "screenshots_mozilla_org-browser-action") {
|
||||
CustomizableUI.removeListener(listener);
|
||||
info("screenshots_mozilla_org-browser-action destroyed");
|
||||
resolve(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
CustomizableUI.addListener(listener);
|
||||
info("Set Screenshots disabled pref to true.");
|
||||
Services.prefs.setBoolPref("extensions.screenshots.system-disabled", true);
|
||||
});
|
||||
}
|
||||
|
||||
function promiseScreenshotsReset() { // eslint-disable-line no-unused-vars
|
||||
if (enabledOnStartup) {
|
||||
info("Reset is enabling Screenshots addon");
|
||||
return promiseScreenshotsEnabled();
|
||||
}
|
||||
info("Reset is disabling Screenshots addon");
|
||||
return promiseScreenshotsDisabled();
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Mak vidio ma ki ngolo macego cego ki cal me wang kio ki i Kakube ka igwok gi pi tutunu onyo matwal."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Mak cal me wang kio"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Cal Na"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Ywar onyo dii ii potbuk me yero bute. Dii ESC me juko."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Gwoki"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Gwok ma nen"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Gwok potbuk weng"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Juki"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Gam"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Ki loko kakube"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Ki loko kakube me cal mamegi i bao me coc. Dii $META_KEY$-V me mwono ne.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Pe tye katic."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Timwa kica! Pe onongo wa twero gwoko cal mamegi. Tim ber item doki lacen."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Pe watwero kube ki cal me wang kio mamegi."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Tim ber i rot kakube ni me intanet. Kace itwero kube i intanet, peko mo pi tutuno romo bedo tye i tic me Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Pe onongo wa twero gwoko cal mamegi pien peko mo tye i tic me Firefox Screenshots. Tim ber item doki lacen."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Pe watwero mako cal me wang kio me potbuk man."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Man pe obedo Kakube me rwom, pi meno pe watwero mako cal me wang kio ne."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Pe itwero mako cal me potbuk pa Firefox Screenshots!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Woo! Firefox Screenshots opo oo."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Pe wa ngeyo ngo ma otime kombedi. Iromo temo ne doki onyo mako cal pa potbuk mukene?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Maki, gwoki, ki nywak cal me wang kio labongo weko Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Mak ngo ma imito keken"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Dii ka i ywar me mako cal pa but potbuk keken. Itwero bene wot iwiye me wero yer mamegi."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Kit ma imito"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Gwok cal mamegi ma ki ngolo ii Kakube pi nywako i yoo ma yot, onyo gamo gi i kompiuta ni. Itwero bene diyo mapeca me Cal Na me nongo cal ma i mako weng."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Mak dirica onyo Potbuk weng"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Yer mapeca ma i tung lacuc malo me mako kabedo ma nen i dirica onyo me mako potbuk weng."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Kal"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Cal malubo"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Cal mukato"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Otum"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Tic ki Firefox Screenshots nyuto ni, i yee $TERMSANDPRIVACYNOTICETERMSLINK$ ki $TERMSANDPRIVACYNOTICEPRIVACYLINK$ me Screenshots.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Cik"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Ngec me mung"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Рабіце кліпы і здымкі экрана ў Сеціве і захоўвайце іх часова або назаўжды."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Зрабіць здымак экрана"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Мае здымкі"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Пацягніце або пстрыкніце на старонцы для выбару вобласці. Для адмены націсніце ESC."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Захаваць"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Захаваць бачную вобласць"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Захаваць усю старонку"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Скасаваць"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Сцягнуць"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Спасылка скапіявана"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Спасылка на ваш здымак была скапіявана ў буфер абмену. Націсніце $META_KEY$-V для ўстаўкі.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Адбылася памылка."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Выбачайце! Нам не ўдалося захаваць ваш здымак. Паспрабуйце пазней."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Мы не можам атрымаць доступ да вашых скрыншотаў."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Калі ласка, праверце ваша злучэнне з Інтэрнэтам. Калі ў вас усё ў парадку з падлучэннем да Інтэрнэту, магчыма, паўсталі часовыя праблемы са службай Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Нам не ўдалося захаваць ваш здымак, таму што ўзніклі праблемы са службай Firefox Screenshots. Паспрабуйце пазней."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Мы не можам зрабіць скрыншот гэтай старонкі."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Гэта не стандартная вэб-старонка, таму вы не можаце зрабіць яе скрыншот."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Вы не можаце зрабіць здымак старонкі Firefox Screenshots!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Вой! З Firefox Screenshots нешта не так."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Мы не ўпэўненыя, у чым праблема. Паспрабаваць яшчэ раз, ці зрабіць здымак іншай старонкі?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Рабіце здымкі экрана, захоўвайце і дзяліцеся імі не выходзячы з Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Рабіце скрыншоты чаго заўгодна"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Пстрыкніце і пацягніце мышшу для захопу часткі старонкі. Вы таксама можаце навесці курсор мышы для падсвятлення абранай вобласці."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Як вам падабаецца"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Захоўваеце свае здымкі ў Інтэрнэце, каб лёгка імі дзяліцца, або загружайце іх на свой кампутар. Вы таксама можаце прагледзець усе захаваныя здымкі, націснуўшы на кнопку Мае здымкі."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Рабіце захоп вокнаў або цэлых старонак"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "З дапамогай кнопак у верхнім правым куце выбірайце захоп бачнай вобласці акна або старонкі цалкам."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Прапусьціць"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Наступны слайд"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Папярэдні слайд"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Гатова"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Выкарыстоўваючы Firefox Screenshots, вы згаджаецеся з яго $TERMSANDPRIVACYNOTICETERMSLINK$ і $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Умовамі выкарыстання"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Паведамленнем аб прыватнасці"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Прави клипове и снимки на уебстраница и ги запазва временно или за постоянно."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Снимка на екрана"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Моите снимки"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "За да изберете участък влачете или щракнете с мишката в страницата. Натиснете ESC за отказ."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Запазване"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Запазване на видимата област"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Запазване на цялата страница"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Отказ"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Изтегляне"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Препратката е копирана"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Препратка към снимката е копирана в системния буфер. За да я поставите натиснете $META_KEY$-V.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Повреда."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Съжаляваме! Снимката не е запазена. Опитайте по-късно."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Няма връзка с вашите снимки."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Моля, проверете своята връзка към интернет. Ако имате връзка с Мрежата, в такъв случай може да има временен проблем с услугата на Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Снимката не може да бъде запазена, защото има проблем с услугата на Firefox Screenshots. Опитайте по-късно."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Снимка на тази страница не може да бъде направена."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Това не е обикновена уебстраница и за това снимка не може да ѝ бъде направена."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Не може да правите снимки на страницата на Firefox Screenshots!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Леле! Нещо се обърка с Firefox Screenshots."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Не сме сигурни какво точно се случи. Може да опитате отново, както и да снимате друга страница."
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Правете, запазвайте и споделяйте снимки на екрана без да напускате Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Уловете само нужното"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Щракнете с мишката или влачете, за да уловите части от страницата. Посочвайки елементите на страницата те се осветяват."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Както ви харесва"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Запазете снимките на страници от Мрежата за по-лесно споделяне или ги изтеглете на компютъра си. А бутонът „Моите снимки“ ще ви покаже всички направени от вас снимки."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Улавяйте прозорци и цели страници"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Използвайте бутоните в горния десен ъгъл, за да уловите само видимата част или цялата страница."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Прескачане"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Напред"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Назад"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Готово"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Използвайки Firefox Screenshots вие се съгласявате с тези $TERMSANDPRIVACYNOTICETERMSLINK$ и $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Условия"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Политика на поверителност"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "ওয়েব থেকে ক্লিপ এবং স্ক্রিনশট নিন এবং সেগুলো সাময়িকভাবে বা স্থায়ীভাবে সংরক্ষণ করুন।"
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "একটি স্ক্রীনশট নিন"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "আমার সটসমূহ"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "ড্রাগ করে অথবা পেজে ক্লিক করে একটি অংশ নির্বাচন করুন। বাতিল করতে ESC টিপুন।"
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "সংরক্ষণ"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "যতটুকু দেখা যাচ্ছে সংরক্ষণ করুন"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "সম্পূর্ণ পেজ সংরক্ষণ করুন"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "বাতিল"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "ডাউনলোড"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "লিঙ্ক কপি করা হয়েছে"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "আপার সট এর লিংক ক্লিপবোর্ডে কপি করা হয়েছে। পেস্ট করতে $META_KEY$-V চাপুন।",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "বিকল।"
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "দুঃখিত! আমরা আপনার সট সংরক্ষণ করতে পারিনি। অনুগ্রহ পুনরায় চেষ্টা করুন।"
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "আমরা আপনার স্ক্রিটসটসমূহ সংযোগ করতে পারছি না।"
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "অনুগ্রহ করে আপনার ইন্টারনেট সংযোগ পরীক্ষা করুন। আর যদি আপনার ইন্টারনেট সংযোগ ঠিক থাকে, তাহলে Firefox স্ক্রিনশট সেবাটিতে সাময়িক সমস্যা দেখা দিয়েছে।"
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "আমরা আপনার শট সংরক্ষণ করতে পারিনি কারণ সেখানে Firefox স্ক্রিণশট সেবার সমস্যা আছে। অনুগ্রহ করে আবার চেস্টা করুন।"
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "আমার এই পেজের স্ক্রিনশট নিতে পারব না।"
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "এটা কোন আদর্শ ওয়েব পেজ না, তাই আপনি এটার স্ক্রিনশট তুলতে পারবেন না।"
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "আপনি Firefox স্ক্রিনশটের পেজের শট নিতে পারেন না!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "আয় হায়! Firefox স্ক্রিনশট পাগল হয়ে গেছে।"
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "এই মাত্র কি ঘটেছে আমরা নিশ্চিত নই। আপনি কি অনুগ্রহ করে পুরনায় সট নেবেন কিংবা ভিন্ন একটি পেজে চেষ্টা করবেন?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Firefox ত্যাগ করা ছাড়াই স্ক্রিনশট তোল, সংরক্ষণ কর এবং শেয়ার কর।"
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "ক্যাপচার করুন আপনি যা চান"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "একটি পেজের কিয়দংশ ক্যাপচার করতে ক্লিক করে ড্রাগ করুন। অতঃপর আপনি মাউজ হোভার করে আপনার নির্বাচিত অংশ হাইলাইট করতে পারবেন।"
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "আপনি যেমন পছন্দ করেন"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "আপনার ক্রপ করা সটসমূহ ওয়েবে রাখুন সহজে শেয়ার করার সুবিধার্থে, অথবা আপনার কম্পিউটারে ডাউনলোড করুন। আপনার সকল সটসমূহ খুঁজে পেতে আমার সটসমূহ বাটনে ক্লিক করুন।"
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "উইন্ডো ক্যাপচার করুন অথবা পুরো পেজ"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "ইউন্ডোতে দৃশ্যমান অংশ অথবা সম্পূর্ণ পেজ ক্যাপচার করতে উপরে ডানদিকের বাটনগুলো থেকে নির্বাচন করুন।"
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "এড়িয়ে যান"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "পরবর্তী স্লাইড"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "পূর্ববর্তী স্লাইড"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "সম্পন্ন"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Firefox Screenshots ব্যবহারের জন্য, আপনি স্ক্রিনশটের $TERMSANDPRIVACYNOTICETERMSLINK$ এবং $TERMSANDPRIVACYNOTICEPRIVACYLINK$ নীতিতে আগ্রহী।",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "শর্তাবলী"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "গোপনীয়তা নীতি"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Pořizujte snímky webových stránek a ukládejte je dočasně nebo natrvalo."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Pořídit snímek obrazovky"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Mé snímky"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Stiskněte tlačítko myši a tahem označte oblast snímku. Pro zrušení výběru stiskněte klávesu ESC."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Uložit"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Uložit viditelnou oblast"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Uložit celou stránku"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Zrušit"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Stáhnout"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Odkaz zkopírován"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Odkaz na váš snímek byl zkopírován do schránky. Pro vložení stiskněte $META_KEY$-V.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Mimo provoz."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Je nám líto, ale nemohli jsme vás snímek uložit. Zkuste to prosím znovu později."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Nedaří se nám připojit k vašim snímkům."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Zkontrolujte prosím připojení k internetu. Pokud vám připojení funguje, mohlo dojít k dočasnému problému s naší službou Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Nemohli jsme uložit váš snímek, protože došlo k problému se službou Firefox Screenshots. Zkuste to prosím znovu později."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Snímek této stránky nelze pořídit."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Toto není běžná webová stránka, a proto z ní nelze pořizovat žádné snímky."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Nelze pořizovat snímek stránky Firefox Screenshots!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Jejda! Služba Firefox Screenshots přestala pracovat."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Nejsme si jistí, co se právě stalo. Chcete to zkusit znovu, nebo zkusíte pořídit snímek na jiné stránce?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Pořizujte, ukládejte a sdílejte snímky webových stránek bez opuštění Firefoxu."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Zachyťte, cokoliv chcete"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Stiskem tlačítka myši a tahem můžete vybrat oblast stránky. Výběr můžete provést také najetím myši na prvek stránky."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Jak sami chcete"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Uložte si oříznutý snímek stránky na web pro rychlejší sdílení, nebo si ho stáhněte do počítače. Pro zobrazení všech snímků stačí klepnout na tlačítko Mé snímky."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Pořizujte snímky jen částí nebo i celých stránek"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Pomocí tlačítek vpravo nahoře můžete pořídit snímek jen viditelné části nebo úplně celé stránky."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Přeskočit"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Další snímek"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Předchozí snímek"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Hotovo"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Používáním služby Firefox Screenshots souhlasíte s jejími $TERMSANDPRIVACYNOTICETERMSLINK$ a $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "podmínkami"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "zásadami ochrany osobních údajů"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Speichern Sie Ausschnitte und Bildschirmfotos von Webseiten, die Sie temporär oder dauerhaft speichern können."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Bildschirmfoto aufnehmen"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Meine Bildschirmfotos"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Ziehen oder Klicken Sie auf der Seite, um einen Bereich auszuwählen. Drücken Sie ESC zum Abbrechen."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Speichern"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Sichtbaren Bereich speichern"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Gesamte Seite speichern"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Abbrechen"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Herunterladen"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Link kopiert"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Der Link zu Ihrem Bildschirmfoto wurde in die Zwischenablage kopiert. Drücken Sie $META_KEY$-V zum Einfügen.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Außer Betrieb."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Wir konnten Ihr Bildschirmfoto leider nicht speichern. Bitte versuchen Sie es später erneut."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Es war keine Verbindung zu Ihren Bildschirmfotos möglich."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Bitte überprüfen Sie Ihre Internetverbindung. Wenn diese funktioniert, gibt es eventuell ein temporäres Problem mit dem Dienst von Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Ihr Bildschirmfoto konnte nicht gespeichert werden, weil ein Problem mit dem Dienst Firefox Screenshots aufgetreten ist. Bitte versuchen Sie es später erneut."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Ein Bildschirmfoto dieser Seite ist nicht möglich."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Dies ist keine Standard-Webseite, daher sind keine Bildschirmfotos von ihr möglich."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Sie können kein Bildschirmfoto einer Firefox-Screenshots-Seite machen!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Firefox Screenshots funktioniert nicht richtig."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Wir wissen auch nicht, was gerade passiert ist. Könnten Sie das Bildschirmfoto erneut oder auf einer anderen Seite aufnehmen?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Bildschirmfotos aufnehmen, speichern und teilen, ohne Firefox zu verlassen."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Nehmen Sie auf, was Sie möchten"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Klicken und ziehen Sie, um nur einen Teil einer Seite aufzunehmen. Sie können den Mauszeiger auch darüber bewegen, um Ihre Auswahl hervorzuheben."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Wie Sie möchten"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Speichern Sie Ihre zugeschnittenen Bildschirmfotos im Internet, sodass sie leicht zu teilen sind, oder laden Sie sie auf Ihren Computer herunter. Sie können auch auf die Schaltfläche „Meine Bildschirmfotos“ klicken, um alle Ihre Bildschirmfotos zu finden."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Fenster oder ganze Seiten speichern"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Nutzen Sie die Schaltflächen rechts oben, um den sichtbaren Bereich im Fenster oder eine ganze Seite zu speichern."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Überspringen"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Nächste Folie"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Vorherige Folie"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Fertig"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Durch die Verwendung von Firefox Screenshots stimmen Sie den entsprechenden $TERMSANDPRIVACYNOTICETERMSLINK$ und dem $TERMSANDPRIVACYNOTICEPRIVACYLINK$ zu.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Nutzungsbedingungen"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Datenschutzhinweis"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Wzejśo klipy a fota wobrazowki z weba a składujśo je nachylu abo na pśecej."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Foto wobrazowki gótowaś"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Móje fota wobrazowki"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Śěgniśo abo klikniśo na bok, aby wobcerk wubrał. Tłocćo na ESC, aby pśetergnuł."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Składowaś"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Widobny wobcerk składowaś"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Ceły bok składowaś"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Pśetergnuś"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Ześěgnuś"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Wótkaz kopěrowany"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Wótkaz k wašomu fotoju wobrazowki jo se do mjazywótkłada kopěrował. Tłocćo $META_KEY$-V, aby jen zasajźił.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Njeźěła."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Bóžko njejsmy mógli wašo foto wobrazowki składowaś. Pšosym wopytajśo pózdźej hyšći raz."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Njamóžomy z wašymi fotami wobrazowki zwězaś."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Pšosym pśekontrolěrujśo swój internetny zwisk. Jolic móžośo z internetom zwězaś, dajo snaź nachylny problem ze słužbu Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Njesjmy mógli swójo foto wobrazowki składowaś, dokulaž dajo problem ze słužbu Firefox Screenshots. Pšosym wopytajśo pózdźej hyšći raz."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Foto wobrazowki toś togo boka njejo móžne."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "To njejo standardny webbok, togodla foto wobrazowki wót njeje njejo móžne."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Njamóžośo wobrazowku boka Firefox Screenshots fotografěrowaś!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Hopla! Firefox Screenshots njeźěła."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Njejsmy se wěste, což jo se stało. Cośo hyšći raz wopytaś abo cośo drugi bok fotografěrowaś?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Gótujśo, składujśo a źělśo fota wobrazowki mimo až Firefox spušćaśo."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Fotografěrujśo jadnorje, což cośo"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Klikniśo a ześěgniśo, aby źěl boka fotografěrował. Móžośo teke špěrku myški nad nim gibaś, aby swój wuběr wuzwignuł."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Tak, kaž se wam spódoba"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Składujśo swóje pśirězane fota wobrazowki w interneśe, aby je lažcej źělił, abo ześěgniśo je na swójo licadło. Móžośo teke na tłocašk „Móje fota wobrazowki“ kliknuś, abye wšě fota wobrazowki namakał, kótarež sćo gótował."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Wokna abo cełe boki składowaś"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Wubjeŕśo tłocašk górjejce napšawo, aby widobny wobcerk we woknje abo ceły bok fotografěrowaś."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Pśeskócyś"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Pśiduce foto"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Pjerwjejšne foto"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Gótowo"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Pśez wužywanje Firefox ScreenShots, zwolijośo do $TERMSANDPRIVACYNOTICETERMSLINK$ a $TERMSANDPRIVACYNOTICEPRIVACYLINK$ Firefox Screenshots.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Wuměnjenja"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Powěźeńka priwatnosći"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Πραγματοποιήστε λήψη στιγμιοτύπων από το Διαδίκτυο και αποθηκεύστε τα προσωρινά ή μόνιμα."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Λήψη στιγμιότυπου"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Οι λήψεις μου"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Σύρετε ή κάντε κλικ στη σελίδα για να επιλέξετε μια περιοχή. Για ακύρωση πιέστε το πλήκτρο ESC."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Αποθήκευση"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Αποθήκευση ορατής περιοχής"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Αποθήκευση ολόκληρης σελίδας"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Ακύρωση"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Λήψη"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Αντιγραφή Συνδέσμου"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Ο σύνδεσμος προς την λήψη σας αντιγράφηκε στο πρόχειρο. Πατήστε $META_KEY$-V για επικόλληση.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Εκτός λειτουργίας."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Συγνώμη! Δεν μπορέσαμε να αποθηκεύουμε την λήψη σας. Προσπαθήστε ξανά αργότερα."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Δεν μπορούμε να συνδεθούμε στις λήψεις σας."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Ελέγξτε τη σύνδεσή σας στο Internet. Εάν είστε σε θέση να συνδεθείτε στο Internet, ίσως υπάρχει ένα προσωρινό πρόβλημα με την υπηρεσία Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Δεν μπορέσαμε να αποθηκεύσουμε την λήψη σας γιατί υπάρχει κάποιο πρόβλημα με την υπηρεσία Firefox Screenshots. Προσπαθήστε ξανά αργότερα."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Δεν μπορούμε να λάβουμε στιγμιότυπο αυτής της σελίδας."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Δεν μπορεί να γίνει λήψη στιγμιότυπου καθώς αυτή δεν είναι μια τυπική σελίδα του Διαδικτύου."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Δεν μπορεί να γίνει λήψη ενός στιγμιότυπου της σελίδας Firefox Screenshots!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Ωχ! Κάτι πήγε στραβά στην υπηρεσία Firefox Screenshots."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Δεν είμαστε σίγουροι για το τι ακριβώς συνέβη. Προσπαθήστε ξανά ή κάντε λήψη σε μια άλλη σελίδα."
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Λήψη, αποθήκευση και διαμοιρασμός στιγμιοτύπων μέσα από το Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Καταγράψτε αυτό που Εσείς Επιθυμείτε"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Κάντε κλικ και σύρετε για την καταγραφή ενός τμήματος της σελίδας. Μπορείτε να επισημάνετε την επιλογή σας μετακινώντας τον ποντίκι σας επάνω της."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Ακριβώς όπως το θέλετε"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Αποθηκεύστε της λήψεις σας στο Διαδίκτυο για ευκολότερο διαμοιρασμό, η λήψη τους στον υπολογιστή σας. Μπορείτε να βρείτε όλες τις λήψεις σας πατώντας στο κουμπί «Οι λήψεις μου»."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Καταγράψτε Παράθυρα ή Ολόκληρες Σελίδες"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Επιλέξτε τα κουμπιά επάνω δεξιά για να καταγράψετε την ορατή περιοχή του παραθύρου ή να καταγράψετε μια ολόκληρη σελίδα."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Παράβλεψη"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Επόμενη διαφάνεια"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Προηγούμενη διαφάνεια"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Τέλος"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Χρησιμοποιώντας το Firefox Screenshots, συμφωνείτε με τους $TERMSANDPRIVACYNOTICETERMSLINK$ Στιγμιότυπων και τη $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Όρους"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Σημείωση απορρήτου"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,106 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Take clips and screenshots from the Web and save them temporarily or permanently."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Take a Screenshot"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "My Shots"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Drag or click on the page to select a region. Press ESC to cancel."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Save"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Save visible"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Save full page"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Cancel"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Download"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Link Copied"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "The link to your shot has been copied to the clipboard. Press $META_KEY$-V to paste.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Out of order."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Sorry! We couldn’t save your shot. Please try again later."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "We can’t connect to your screenshots."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Please check your Internet connection. If you are able to connect to the Internet, there may be a temporary problem with the Firefox Screenshots service."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "We couldn’t save your shot because there is a problem with the Firefox Screenshots service. Please try again later."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "We can’t screenshot this page."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "This isn’t a standard Web page, so you can’t take a screenshot of it."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "You can’t take a shot of a Firefox Screenshots page!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Whoa! Firefox Screenshots went haywire."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "We’re not sure what just happened. Care to try again or take a shot of a different page?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Take, save, and share screenshots without leaving Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Capture Just What You Want"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Click and drag to capture just a portion of a page. You can also hover to highlight your selection."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "As You Like it"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Save your cropped shots to the Web for easier sharing, or download them to your computer. You also can click on the My Shots button to find all the shots you’ve taken."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Capture Windows or Entire Pages"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Select the buttons in the upper right to capture the visible area in the window or to capture an entire page."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "SKIP"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Next Slide"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Previous Slide"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Done"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Take clips and screenshots from the Web and save them temporarily or permanently."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Take a Screenshot"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "My Shots"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Drag or click on the page to select a region. Press ESC to cancel."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Save"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Save visible"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Save full page"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Cancel"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Download"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Link Copied"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "The link to your shot has been copied to the clipboard. Press $META_KEY$-V to paste.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Out of order."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Sorry! We couldn’t save your shot. Please try again later."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "We can’t connect to your screenshots."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Please check your Internet connection. If you are able to connect to the Internet, there may be a temporary problem with the Firefox Screenshots service."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "We couldn’t save your shot because there is a problem with the Firefox Screenshots service. Please try again later."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "We can’t screenshot this page."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "This isn’t a standard Web page, so you can’t take a screenshot of it."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "You can’t take a shot of a Firefox Screenshots page!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Whoa! Firefox Screenshots went haywire."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "We’re not sure what just happened. Care to try again or take a shot of a different page?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Take, save, and share screenshots without leaving Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Capture Just What You Want"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Click and drag to capture just a portion of a page. You can also hover to highlight your selection."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "As You Like it"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Save your cropped shots to the Web for easier sharing, or download them to your computer. You also can click on the My Shots button to find all the shots you’ve taken."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Capture Windows or Entire Pages"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Select the buttons in the upper right to capture the visible area in the window or to capture an entire page."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "SKIP"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Next Slide"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Previous Slide"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Done"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "By using Firefox Screenshots, you agree to the Screenshots $TERMSANDPRIVACYNOTICETERMSLINK$ and $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Terms"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Privacy Notice"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Tomá imágenes y capturas de la web y guardalos temporal o permanentemente."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Hacer captura de pantalla"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Mis capturas"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Arrastrá o hacé clic en la página para seleccionar una región. Presioná ESC para cancelar."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Guardar"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Guardar visible"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Guardar página completa"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Cancelar"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Descargar"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Enlace copiado"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "EL enlace a la captura ha sido copiado al portapapeles. Presioná $META_KEY$-V para pegar.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "No funciona."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "¡Perdón! No pudimos guardar la captura. Intentá más tarde."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "No podemos conectar a las capturas de pantalla."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Verificá la conexión a Internet. Si te podés conectar a Internet, hay un problema temporal con el servicio de capturas de Firefox."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "No pudimos guardar la captura porque hay un problema con el servicio de capturas de Firefox. Intentá más tarde."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "No podemos capturar esta página."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Esta no es una página web estándar, así que no podemos guardar una captura."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "¡No se puede hacer una captura de la página de capturas de Firefox!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "¡Apa! La capturas de pantalla de Firefox se volvieron locas."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "No estamos seguros de lo que pasó. ¿Querés intenar de nuevo o tomar una captura de una página diferente?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Hacer, guardar y compartir capturas de pantalla sin dejar Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Capturar sólo lo que querés"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Hacé clic y arrastrá para capturar una porción de la página. También podés pasar por encima para resaltar la selección."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Como te guste"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Guardá tus capturas recortadas a la web para compartir o descargarlas más fácilmente a tu computadora. También podés hacer clic en el botón Mis capturas para encontrar todas las capturas hechas."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Capturar ventanas o páginas enteras"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Seleccioná los botones arriba a la derecha para capturar el área visible en la ventana o la página completa."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Saltear"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Próxima diapositiva"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Diapositiva anterior"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Listo"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Al usar Firefox Screenshots, aceptás los $TERMSANDPRIVACYNOTICETERMSLINK$ y $TERMSANDPRIVACYNOTICEPRIVACYLINK$ de Screenshots.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Términos"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Nota de privacidad"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Toma capturas de un sitio Web para guardarlas de forma temporal o permanentemente."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Toma una captura de pantalla"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Mis capturas"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Arrastra o haz clic en la página para seleccionar una región. Presiona ESC para cancelar."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Guardar"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Guardar lo visible"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Guardar la página completa"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Cancelar"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Descargar"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Enlace copiado"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "El enlace a tu captura ha sido copiado al portapapeles. Presiona $META_KEY$-V para pegarla.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Fuera de orden."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "¡Lo sentimos! No pudimos guardar tu captura. Por favor, vuelve a intentarlo más tarde."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "No podemos conectar a tus capturas."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Por favor, revisa tu conexión a Internet. Si eres capaz de conectarte a Internet, puede que haya un problema temporal con el servicio de Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "No pudimos guardar tu captura porque hay un problema con el servicio de Firefox Screenshots. Por favor, vuelve a intentarlo más tarde."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "No podemos capturar esta página."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Esta no es una página Web estándar, por lo que no puedes tomar una captura de ella."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "¡No puedes tomar una captura de una página de Firefox Screenshots!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "¡Guau! Firefox Screenshots se copetió."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "No estamos seguros de lo que sucedió. ¿Te importaría volver a intentarlo o tomar una captura de una página diferente?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Toma, guarda y comparte capturas sin salir de Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Captura lo que necesitas"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Haz clic y arrastra para captura justo una parte de la página. También puedes colocarte sobre una parte para destacar tu selección."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Como tu quieras"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Guarda tus capturas recortadas en la Web para compartirlas fácilmente o descargarlas a tu computador. También puedes hacer clic en el botón Mis capturas para encontrar todas las que hayas tomado."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Captura ventanas o páginas completas"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Selecciona los botones en la parte superior derecha para capturar el área visible ne la ventana o para capturar una página completa."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "SALTAR"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Siguiente diapositiva"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Diapositiva anterior"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Hecho"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Al usar Firefox Screenshots, aceptas los $TERMSANDPRIVACYNOTICETERMSLINK$ y el $TERMSANDPRIVACYNOTICEPRIVACYLINK$ de Screenshots.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Términos"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Aviso de privacidad"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Haz capturas y recortes de la web y guárdalos temporal o permanentemente."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Hacer una captura de pantalla"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Mis capturas"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Arrastra o haz clic en la página para seleccionar una región. Pulsa ESC para cancelar."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Guardar"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Guardar visible"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Guardar página completa"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Cancelar"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Descargar"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Enlace copiado"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Se ha copiado el enlace a la captura en el portapapeles. Pulsa $META_KEY$-V para pegar.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "No funciona."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "¡Lo sentimos! No hemos podido guardar tu captura. Inténtalo más tarde."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "No podemos acceder a tus capturas de pantalla."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Comprueba tu conexión a Internet. Si puedes conectarte, puede que haya un problema temporal con el servicio de capturas de pantalla de Firefox."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "No se pudo guardar la captura porque hay un problema con el servicio de capturas de pantalla de Firefox. Inténtalo más tarde."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "No podemos hacer una captura de esta página."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "No es una página web común, por lo que no podemos hacer captura de pantalla."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "¡No puedes hacer una captura de la página de capturas de Firefox!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "¡Vaya! La página de capturas de pantalla de Firefox se ha vuelto loca."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "No estamos seguros de lo que acaba de pasar. ¿Te importa volver a intentarlo o hacer una captura de otra página?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Hacer, guardar y compartir capturas de pantalla sin salir de Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Haz capturas solo de lo que tú quieras"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Haz clic y arrastra para capturar solo una parte de la página. También puedes pasar por encima para resaltar tu selección."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Como más te guste"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Guarda las capturas de la Web recortadas para compartirlas mejor o descárgalas en tu ordenador. También puedes hacer clic en Mis capturas para ver todas las capturas que has hecho."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Haz capturas de Windows o páginas completas"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Selecciona los botones de la parte superior derecha para capturar el área visible en Windows o la página completa."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Saltar"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Diapositiva siguiente"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Diapositiva anterior"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Hecho"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Al usar Firefox Screenshots, aceptas los $TERMSANDPRIVACYNOTICETERMSLINK$ y el $TERMSANDPRIVACYNOTICEPRIVACYLINK$ de Screenshots.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Términos"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Aviso de privacidad"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Tomar clips y capturas de pantalla de la web y guardarlos temporalmente o permanentemente."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Tomar captura de pantalla"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Mis capturas"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Arrastra o haz clic en la página para seleccionar la región. Presiona ESC para cancelar."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Guardar"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Guardar visible"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Guardar página completa"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Cancelar"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Descarga"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Enlace copiado"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "El enlace que has capturado ha sido copiado al portapapeles. Presiona $META_KEY$-V para pegar.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Fuera de orden."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "¡Lo sentimos! No pudimos guardar tu captura. Por favor, intenta de nuevo más tarde."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "No podemos conectar a tus capturas de pantalla."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Por favor, revisa tu conexión a Internet. Si eres capaz de conectarte a Internet, puede ser que exista un error temporal con el servicio de capturas de pantalla de Firefox."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "No pudimos guardar tu captura porque hay un problema con el servicio de capturas de pantalla de Firefox. Por favor, intenta de nuevo más tarde."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "No podemos realizar una captura de pantalla a esta página."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Esta no es una página web estándar, por lo tanto no podemos tomar una captura de pantalla de ella."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "¡No puedes tomar una captura de la página de capturas de pantalla de Firefox!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "¡Oye! Las capturas de pantalla de Firefox salieron mal."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "No estamos seguros qué pasó. ¿Te importaría intentarlo de nuevo o tomar una captura de una página diferente?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Toma, guarda y comparte capturas de pantalla sin dejar Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Captura sólo lo que necesitas"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Haz clic y arrastra para capturas sólo una parte de la página. También puedes desplazarte para resaltar tu selección."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Como te gusta"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Guarda tus capturas recortadas en la Web para compartirlas más fácilmente o descárgalas en tu computadora. También puedes hacer clic en el botón Mis Capturas para encontrar todas las fotos que has tomado."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Captura ventanas o páginas enteras"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Selecciona los botones en la parte superior derecha para capturar el área visible en la ventana o para capturar una página completa."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Ignorar"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Siguiente diapositiva"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Diapositiva anterior"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Terminado"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Al usar Firefox Screenshots, estás de acuerdo con los $TERMSANDPRIVACYNOTICETERMSLINK$ y con el $TERMSANDPRIVACYNOTICETERMSLINK$ de Screenshots.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Términos"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Aviso de privacidad"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Tee veebist klippe või ekraanipilte ning salvesta need ajutiselt või püsivalt."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Tee ekraanipilt"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Minu pildid"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Ala valimiseks klõpsavõi lohista lehel. Tühistamiseks vajuta ESC."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Salvesta"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Salvesta nähtav"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Salvesta terve leht"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Tühista"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Laadi alla"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Link kopeeriti"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Link sinu pildile kopeeriti lõikepuhvrisse. Asetamiseks vajuta $META_KEY$-V.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Tekkis viga."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Vabandame! Me ei suutnud su pilti salvestada. Palun proovi hiljem uuesti."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Ühendumine sinu ekraanipiltidega ei õnnestunud."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Palun kontrolli internetiühenduse toimimist. Kui saad internetiga ühendust, siis võib tegemist olla Firefox Screenshots teenuse ajutise probleemiga."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Ekraanipildi salvestamine ebaõnnestus Firefox Screenshots teenuse probleemi tõttu. Palun proovi hiljem uuesti."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Sellest lehest ei saa ekraanipilti teha."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Tegemist pole standardse veebilehega, seetõttu ei saa sellest ekraanipilti teha."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Firefox Screenshots lehest ei saa ekraanipilti teha!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Oi-oi! Firefox Screenshots läks sassi."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Me pole kindlad, mis just juhtus. Proovid ehk uuesti või teed ekraanipildi mõnest teisest lehest?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Tee, salvesta ja jaga ekraanipilte Firefoxist lahkumata."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Salvesta just seda, mida soovid"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Klõpsa ja lohista lehe osa valimiseks. Samuti võid valiku esile toomiseks kursorit selle kohal hoida."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Nii, kuidas sulle meeldib"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Salvesta kärbitud pilte lihtsamaks jagamiseks veebi või laadi need alla enda arvutisse. Võid ka klõpsata Minu pildid nupul kõigi tehtud piltide vaatamiseks."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Salvesta aknaid või terveid lehti"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Kasuta nuppe ülal paremal aknas nähtava ala või terve lehe salvestamiseks."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Jäta vahele"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Järgmine slaid"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Eelmine slaid"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Valmis"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Firefox Screenshots kasutamisel nõustud Screenshots $TERMSANDPRIVACYNOTICETERMSLINK$ ja $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "kasutustingimuste"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "privaatsuspoliitikaga"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "از وب عکس بگیرید و کلیپ بسازید و به صورت موقت یا دایمی ذخیره کنید."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "موزیلا <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "از صفحه عکس بگیرید"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "عکسهای من"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "با کشیدن یا کلیک کردن روی صفحه یک منطقه را انتخاب کنید. برای لغو، ESC را فشار دهید."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "ذخیره"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "ذخیره ناحیه قابل مشاهده"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "ذخیره صفحه کامل"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "لغو"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "دریافت"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "پیوند کپی شد"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "لینک عکس شما در کلیپبورد رونوشت شد. $META_KEY$-V را برای جایگذاری فشار دهید.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "خارج از سرویس."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "متاسفم! نتوانستیم عکس شما را ذخیره کنیم. لطفاً بعدا دوباره تلاش کنید."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "نمیتوانیم به تصاویر صفحه شما متصل شویم."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "لطفا اتصال اینترنت خود را بررسی کنید. اگر قادر به اتصال به اینترنت هستید، ممکن است مشکلی موقتی در سرویس تصاویر صفحهٔ فایرفاکس وجود داشته باشد."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "به علت وجود مشکل در سرویس تصاویر صفحه فایرفاکس نتوانستیم عکس شما را ذخیره کنیم. لطفاً بعدا دوباره تلاش کنید."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "نمیتوانیم از این صفحه تصویر بگیریم."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "این یک صفحه استاندارد وب نیست، بنابراین شما نمیتوانید از آن تصویر بگیرید."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "نمیتوانید از صفحهٔ تصاویرِ فایرفاکس عکس بگیرید!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "اوه! سرویس تصاویر صفحه فایرفاکس قاطی کرده."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "مطمئن نیستیم چه اتفاقی افتاده است. میخواهید دوباره امتحان کنید یا از یک صفحهٔ دیگر عکس بگیرید؟"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "بدون خارج شدن از فایرفاکس، عکس بگیرید، ذخیره کنید و به اشتراک بگذارید."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "ضبط آنچه شما میخواهید"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "کلیک کنید و بکشید تا فقط از قسمتی از صفحه عکس بگیرید. میتوانید برای برجسته کردن روی ناحیه انتخاب شده حرکت کنید."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "همانطور که میپسندید"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "عکسهای بریده شده خود را برای به اشتراکگذاری راحتتر روی وب ذخیره کنید، یا آنها را روی رایانه خود دریافت کنید. همچنین برای دیدن همهٔ عکسهایی که گرفتید میتوانید روی دکمه «عکسهای من» کلیک کنید."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "ضبط پنجره یا کل صفحهها"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "برای گرفتن عکس از ناحیه قابل مشاهده در پنجره یا تمام صفحه از دکمههای بالا سمت راست استفاده کنید."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "رد کردن"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "اسلاید بعدی"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "اسلاید قبلی"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "انجام شد"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "با استفاده از سرویسِ تصاویرِ صفحهٔ فایرفاکس، شما با $TERMSANDPRIVACYNOTICETERMSLINK$ و $TERMSANDPRIVACYNOTICEPRIVACYLINK$ موافقت میکنید.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "شرایط"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "نکات حریمخصوصی"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Effectuez des captures d’écran sur le Web et sauvegardez-les de manière temporaire ou permanente."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Effectuer une capture d’écran"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Mes captures d’écran"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Sélectionnez une zone de la page par cliquer-glisser ou en cliquant sur l’élément à sélectionner. Appuyez sur Échap pour annuler."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Enregistrer"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Capturer la zone visible"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Capturer la page complète"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Annuler"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Télécharger"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Lien copié"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Le lien de votre capture a été copié dans le presse-papiers. Appuyez sur $META_KEY$-V pour le coller.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Impossible d’effectuer cette action."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Votre capture d’écran n’a pas pu être enregistrée. Veuillez réessayer plus tard."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Nous ne pouvons pas nous connecter à vos captures d’écran."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Veuillez vérifier votre connexion à Internet. Si celle-ci fonctionne normalement, il peut y avoir un problème temporaire avec le service de Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Nous n’avons pas pu enregistrer votre capture d’écran, car le service de Firefox Screenshot rencontre des difficultés. Veuillez réessayer plus tard."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Impossible d’effectuer une capture d’écran de cette page."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Impossible d’effectuer une capture d’écran, car cette page web n’est pas standard."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Vous ne pouvez pas effectuer une capture d’écran d’une page Firefox Screenshots."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Firefox Screenshots semble avoir un petit problème."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Un problème non identifié est survenu. Vous pouvez réessayer ou effectuer une capture d’écran d’une autre page."
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Effectuez des captures d’écran, enregistrez et partagez-les sans quitter Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Capturez ce que vous voulez"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Cliquez et glissez pour capturer seulement une partie de la page. Vous pouvez aussi survoler une zone avec votre curseur pour surligner votre sélection."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "À votre guise"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Sauvegardez en ligne vos captures recadrées pour les partager plus facilement, ou téléchargez-les sur votre ordinateur. Vous pouvez aussi cliquer sur « Mes captures d’écran » pour retrouver toutes vos captures."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Effectuez des captures d’écran de fenêtres ou de pages entières"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Utilisez les boutons en haut à droite pour capturer au choix la zone visible dans la fenêtre ou la page entière."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "IGNORER"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Écran suivant"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Écran précédent"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Terminé"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "En utilisant Firefox Screenshots, vous acceptez les $TERMSANDPRIVACYNOTICETERMSLINK$ et la $TERMSANDPRIVACYNOTICEPRIVACYLINK$ de Screenshots.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "mentions légales"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "politique de confidentialité"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Meitsje skermprintsjes of klips fan it web en bewarje se tydlik of permanint."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Meitsje in skermprintsje"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Myn skermprintsjes"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Sleep of klik op de side om in gebiet te selektearjen. Druk op ESC om te annulearjen."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Bewarje"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Sichtbere bewarje"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Folsleine side bewarje"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Annulearje"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Downloade"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Keppeling kopiearre"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "De keppeling nei jo skermprintsje is nei it klamboerd kopiearre. Brûk $META_KEY$-V om te plakken.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Bûten tsjinst."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Sorry! Wy koene jo skermprintsje net bewarje. Probearje it letter nochris."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Wy kinne net ferbine nei jo skermprintsjes."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Kontrolearje jo ynternetferbining. As jo wol ferbining meitsje kinne mei it ynternet, kin it wêze dat der tydlik in probleem is mei de tsjinst Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Wy koene jo skermprintsje net bewarje, omdat der in probleem is mei de tsjinst Firefox Screenshots. Probearje it letter nochris."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "It is net mooglik in skermprintsje fan dizze side te meitsjen."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Dit is net in standert webside, dus jo kinne der net in skermprintsje fan meitsje."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Jo kinne net in skermprintsje meitsje fan in Firefox Screenshots-side!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Oeps! Firefox Screenshots is yn 'e war."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Wy binne net wis wat der krekt bard is. Wolle jo it nochris probearje of in skermprintsje fan in oare side meitsje?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Meitsje, bewarje en diel skermprintsjes sûnder Firefox te ferlitten."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Fetsje wat jo wolle"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Klik en sleep om in part fan in side te fetsjen. Jo kinne ek oer in gebiet gean om jo seleksje út te ljochtsjen."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Nei jo winsk"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Bewarje jo byknippe skermprintsjes nei it web om se maklik te dielen, of download se nei jo kompjûter. Jo kinne ek op de knop Myn skermprintsjes klikke om al jo makke skermprintsjes te finen."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Fetsje finsters of folsleine websiden"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Selektearje knoppen rjochts boppe-oan om it sichtbere gebiet yn it finster te fetsjen, of fetsje in folsleine side."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Oerslaan"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Folgjende ôfbylding"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Foarige ôfbylding"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Dien"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Troch Firefox Screenshots te brûken, gean jo akkoard mei de $TERMSANDPRIVACYNOTICETERMSLINK$ en $TERMSANDPRIVACYNOTICEPRIVACYLINK$ fan Screenshots.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Betingsten"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Privacyferklearring"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "વેબમાંથી ક્લિપ્સ અને સ્ક્રીનશૉટ્સ લો અને તેમને કામચલાઉ અથવા કાયમી રીતે સાચવો."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla<screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "સ્ક્રીનશૉટ લેવા"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "મારા શોટ્સ"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "ખેંચો અથવા એક પ્રદેશ પસંદ કરવા માટે પાનાં પર ક્લિક કરો. રદ કરવા માટે ESC દબાવો."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "સાચવો"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "દૃશ્યમાન સાચવો"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "સંપૂર્ણ પૃષ્ઠ સાચવો"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "રદ"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "ડાઉનલોડ"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "લિંક કૉપિ"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "તમારા શોટ માટે લિંક ક્લિપબોર્ડ પર કૉપિ કરવામાં આવ્યું છે. પ્રેસ $META_KEY$ -V પેસ્ટ કરવા માટે.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "હુકમ બહાર."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "માફ કરશો! અમે તમારા શોટ સાચવી શક્યા નથી. પછીથી ફરી પ્રયત્ન કરો."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "અમે તમારા સ્ક્રીનશૉટ્સ ને કનેક્ટ થઈ શકતા નથી."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "તમારું ઇન્ટરનેટ કનેક્શન તપાસો. તમે ઇન્ટરનેટથી કનેક્ટ કરવા માટે સક્ષમ છો, તો ત્યાં ફાયરફોક્સ સ્ક્રીનશોટ્સ સેવા સાથે એક અસ્થાયી સમસ્યા હોઈ શકે છે."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "અમે તમારા શોટ સાચવી શક્યા નથી કારણ કે Firefox સ્ક્રીનશોટ્સ સેવા સાથે એક સમસ્યા છે. પછીથી ફરી પ્રયત્ન કરો."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "અમે આ પૃષ્ઠ સ્ક્રીનશૉટ ન કરી શકીએ."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "આ એક પ્રમાણભૂત વેબ પૃષ્ઠ, જેથી તમે તેને એક સ્ક્રીનશૉટ ન લઈ શકો."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "તમે પૃષ્ઠના Firefox સ્ક્રીનશોટ્સ શોટ લઇ શકો નહિ!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "થોભો! Firefox સ્ક્રીનશોટ્સ અવ્યવસ્થિત થઈ ગયા."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "અમે ખાતરી નથીકે શું માત્ર થયું છે . ફરી પ્રયાસ કરો અથવા એક અલગ પૃષ્ઠ એક શોટ લેવા માટે કાળજી કરો?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "લેવા, સાચવેલા, અને વહેંચાયેલ સ્ક્રીનશૉટ્સ Firefox છોડ્યાં વિના."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "કેદ કરો તમને જોઈએ તે"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "પાનાંના માત્ર એક ભાગ મેળવવા માટે ક્લિક કરો અને ખેંચો. તમે પણ તમારી પસંદગી પ્રકાશિત કરવા માટે હૉવર કરી શકો છો."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "તમને જે ગમે"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "સરળ શેરિંગ માટે વેબ પર તમારા કપાઈ શોટ સાચવો, અથવા તેમને તમારા કમ્પ્યુટર પર ડાઉનલોડ કરો. તમે બધા શોટ મેળવવા માટે મારું શોટ્સ બટન પર ક્લિક કરી પણ શકો છો બધા શોટ તમે લીધેલા શોધવા માટે."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "વિન્ડોઝ અથવા સમગ્ર પાના કેદ કરો"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "ઉપર જમણા બટનો પસંદ કરો વિન્ડોમાં દૃશ્યમાન વિસ્તાર મેળવવા માટે અથવા આખુ પાનું કેપ્ચર કરવા માટે."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "છોડવા"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "આગલી સ્લાઇડ"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "પહેલાની સ્લાઇડ"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "થઈ ગયું"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Firefox સ્ક્રીનશોટ્સ વાપરીને, તમે સ્ક્રીનશૉટ્સ થી સંમત છો $TERMSANDPRIVACYNOTICETERMSLINK$ અને $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "શરતો"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "ખાનગી સૂચના"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,94 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "יצירת צילומי מסך של דפי אינטרנט ושמירה שלהם באופן זמני או קבוע."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "צילום מסך"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "צילומי המסך שלי"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "נא לגרור או ללחוץ על הדף כדי לבחור תחום או על ESC לביטול."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "שמירה"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "שמירת התחום המוצג"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "שמירת הדף במלואו"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "ביטול"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "הורדה"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "הקישור הועתק"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "הקישור לתמונה שלך הועתק ללוח. נא ללחוץ על $META_KEY$-V כדי להדביק.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "לא תקין."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "אנו מצטערים, אך לא ניתן היה לשמור את התמונה. נא לנסות שוב מאוחר יותר."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "לא ניתן היה להתחבר אל מאגר צילומי המסך שלך."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "נא לבדוק את החיבור לאינטרנט. אם הצלחת להתחבר לאינטרנט כנראה שקיימת תקלה זמנית עם שירות Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "אין אפשרות לשמור את צילום המסך שלך כיוון שישנה תקלה עם שירות Firefox Screenshots. נא לנסות שוב מאוחר יותר."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "לא ניתן לצלם דף זה."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "דף זה אינו דף אינטרנט תקני, ולכן לא ניתן היה לצלם אותו."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "לא ניתן לצלם את הדף של Firefox Screenshot עצמו!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "אויש! Firefox Screenshots ירד מהפסים."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "אנחנו לא בטוחים מה קרה פה הרגע. אכפת לך לנסות שוב או לצלם דף אחר?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "צילום, שמירה ושיתוף של צילומי מסך מבלי לעזוב את Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "לצלם רק את מה שנחוץ לך"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "ניתן ללחוץ ולגרור כדי לצלם רק מקטע מהעמוד. ניתן גם לרחף מעל כדי לסמן את הבחירה שלך."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "לפי טעמך"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "שמירת הצילומים החתוכים שלך לאחסון מקוון לצורך שיתוף פשוט יותר, או להוריד אותם למחשב שלך. ניתן גם ללחוץ על כפתור הצילומים שלי כדי למצוא את כל הצילומים שצילמת."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "לצלם חלונות או דפים שלמים"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "נא לבחור בכפתורים שבחלק העליון כדי לצלם את האזור הגלוי בחלון או לצלם את הדף כולו."
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Wzmiće klipy a fota wobrazowki z weba a składujće je nachwilu abo na přeco."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Foto wobrazowki činić"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Moje fota wobrazowki"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Ćehńće abo klikńće na stronu, zo byšće wobwod wubrał. Tłóčće na ESC, zo byšće přetorhnył."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Składować"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Widźomny wobwod składować"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Cyłu stronu składować"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Přetorhnyć"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Sćahnyć"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Wotkaz kopěrowany"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Wotkaz k wašemu fotu wobrazowki je so do mjezyskłada kopěrował. Tłóčće $META_KEY$-V, zo byšće jón zasadźił.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Skóncowany."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Bohužel njemóžachmy waše foto wobrazowki składować. Prošu spytajće pozdźišo hišće raz."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Njemóžemy z wašimi fotami wobrazowki zwjazać."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Prošu přepruwujće swój internetny zwisk. Jeli móžeće z internetom zwjazać, je snano nachwilny problem ze słužbu Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Njemóžachmy swoje foto wobrazowki składować, dokelž je problem ze słužbu Firefox Screenshots. Prošu spytajće pozdźišo hišće raz."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Foto wobrazowki tuteje strony móžne njeje."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "To standardna webstrona njeje, tohodla foto wobrazowki wot njeje móžne njeje."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Njemóžeće wobrazowku strony Firefox Screenshots fotografować!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Hopla! Firefox Screenshots njefunguje."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Njejsmy sej wěsći, štož je so stało. Chceće hišće raz spytać abo chceće druhu stronu fotografować?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Čińće, składujće a dźělće fota wobrazowki bjez toho, zo byšće Firefox wopušćił."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Fotografujće prosće, štož chceće"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Klikńće a ćehńće, zo byšće dźěl strony fotografował. Móžeće tež pokazowak myški nad nim pohibować, zo byšće swój wuběr wuzběhnył."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Tak, kaž so wam spodoba"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Składujće swoje přitřihane fota wobrazowki w interneće, zo byšće je lóšo dźělił, abo sćehńće je na swój ličak. Móžeće tež na tłóčatko „Moje fota wobrazowki“ kliknyć, zo byšće wšě fota wobrazowki namakał, kotrež sće činił."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Wokna abo cyłe strony składować"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Wubjerće tłóčatka horjeka naprawo, zo byšće widźomny wobwod we woknje abo cyłu stronu fotografować."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Přeskočić"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Přichodne foto"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Předchadne foto"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Hotowo"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Přez wužiwanje Firefox ScreenShots, zwoliće do $TERMSANDPRIVACYNOTICETERMSLINK$ a $TERMSANDPRIVACYNOTICEPRIVACYLINK$ Firefox Screenshots.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Wuměnjenja"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Pokaz priwatnosće"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Készítsen videoklipeket és képernyőképeket a webről, és mentse őket ideiglenesen vagy véglegesen."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Készítsen képernyőképet"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Az Ön képei"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Húzza, vagy kattintson a lapra a terület kiválasztásához. Nyomjon ESC-t a megszakításhoz."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Mentés"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Láthatóak mentése"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Teljes oldal mentése"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Mégse"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Letöltés"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Hivatkozás másolva"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "A képernyőképre mutató hivatkozás a vágólapra lett másolva. Nyomjon $META_KEY$-V-t a beillesztéshez.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Nem működik."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Bocsánat! Nem tudtuk menteni a képet. Próbálkozzon később."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Nem tudunk kapcsolódni a képernyőképekhez."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Ellenőrizze az internetkapcsolatot. Ha tud kapcsolódni az internetre, akkor lehet, hogy ideiglenes probléma van a Firefox képernyőképek szolgáltatással."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Nem tudtuk elmenteni a képét, mert probléma lépett fel a Firefox képernyőképek szolgáltatással. Próbálja újra később."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Nem lehet képet készíteni erről a lapról."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Ez egy nem szabványos weblap, így nem készíthet róla képernyőképet."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Nem készíthet képet a Firefox képernyőképek oldalról!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Húha! A Firefox képernyőképek megkergült."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Nem vagyunk benne biztosak, hogy mi történt. Próbálja újra, vagy készítsen képet egy másik oldalról."
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Készítsen, mentsen és osszon meg képernyőképeket, anélkül, hogy elhagyná a Firefoxot."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Csak azt mentse, amit szeretne"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Kattintson és húzzon, hogy csak a lap egy részét mentse el. Vagy csak rá is mutathat a kijelöléshez."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Ahogy tetszik"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Mentse a kivágott képeket a webre a könnyebb megosztáshoz, vagy töltse le a számítógépére. Rá is kattinthat a Képernyőképek gombra, hogy megtalálja az összes képét."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Mentsen ablakokat vagy teljes lapokat"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Válassza a jobb felső sarokban lévő gombokat, hogy egy látható területet mentsen az ablakból, vagy elmentsen egy teljes oldalt."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Kihagyás"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Következő dia"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Előző dia"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Kész"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "A Firefox képernyőképek használatával, Ön beleegyezik a képernyőképek $TERMSANDPRIVACYNOTICETERMSLINK$ és $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Feltételeibe"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Adatvédelmi nyilatkozatába"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,106 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Ստացեք հոլովակներ և էկրանի հանույթներ վեբից և պահպանեք դանք ժամանակավոր կամ մշտապես:"
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Ստանալ էկրանի պատկերը"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Իմ պատկերները"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Քաշեք և սեղմեք էջի վրա՝ ընտրելու տարածքը: Սեղմեք ESC՝ չեղարկելու համար:"
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Պահպանել"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Պահպանելի տեսանելի"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Պահպանել ամբողջ էջը"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Չեղարկել"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Ներբեռնել"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Հղումը պատճենվել է"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Ձեր պատկերի հղումը պատճենվել է: Սեղմեք $META_KEY$-V՝ այն տեղադրելու համար:",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Անսարք:"
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Ցավոք մենք չենք կարող պահպանել պատկեր: Կրկին փորձեք ավելի ուշ:"
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Հնարավոր չէ ապակցել էկրանի ձեր հանույթներին:"
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Խնդրում ենք ստուգել համացանցային կապակցումը: Եթե մուտք չունեք համացանց՝ հնարավոր է՝ դա Firefox Screenshots ծառայության հետ կապված ժամանակավոր խնդիր է:"
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Մենք չենք կարող պահպանել ձեր պատկերը, քանի որ խնդիր կա Firefox Screenshots ծառայության հետ: Փորձեք ավելի ուշ:"
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Հնարավոր չէ ստանալ էկրանի պատկերը:"
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Սա ստանդարտ վեբ էջ չէ, ուստի դուք չեք կարող ստանալ դրա պատկերը:"
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Դուք չեք կարող ստանալ Firefox Screenshots-ի էջի պատկերը:"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Firefox Screenshots-ը գնաց գլխիվայր:"
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Մենք վստահ չենք, թե ինչ է տեղի ունեցնել: Կրկին փորձեք կամ փորձեք ստանալ մեկ այլ էջի պատկերը:"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Ստացեք, պահպանեք և համօգտագործեք էկրանի հանույթները՝ առանց Firefox-ը լքելու: "
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Ստացեք միայն այն, ինչ Ձեզ պետք է:"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Սեղմեք և քաշեք՝ ստանալու համար միայն էջի մի մասը: Նաև կարող եք վրայով անցկացնել՝ գունանշելու համար ընտրումը:"
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Ինչպես որ հավանում եք այն"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Պահպանեք ձեր եզրատած որոշ պատկերներ վեբում՝ դրանք հեշտությամբ համօգտագործելու կամ ներբեռնելու համար ձեր համակարգչում: Նաև կարող եք սեղմել Իմ պատկերները՝ գտնելու ձեր բոլոր ֆայլերը:"
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Ստանալ պատուհանը կամ ամբողջ էջեր"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Ընտրեք կոճակները վերևի աջ մասում՝ տեսանելի հատվածը ստանալու համար պատուհանում կամ ամբողջ էջը ստանալու համար:"
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Բաց թողնել"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Հաջորդ սահիկը"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Նախորդ սահիկը"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Պատրաստ է"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Rekam klip dan tangkapan layar dari Web dan simpan untuk sementara atau secara permanen."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Buat Tangkapan layar"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Gambar Saya"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Seret atau klik pada laman untuk memilih area. Tekan ESC untuk membatalkan."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Simpan"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Simpan yang terlihat"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Simpan laman sepenuhnya"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Batal"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Unduh"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Tautan Disalin"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Tautan ke gambar Anda telah disalin ke papan klip. Tekan $META_KEY$-V untuk menempelkan.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Tak dapat digunakan."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Maaf! Kami tidak dapat menyimpan gambar Anda. Silakan coba lagi."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Kami tidak dapat terhubung dengan tangkapan layar Anda."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Silakan periksa sambungan Internet Anda. Jika Anda dapat tersambung ke Internet, mungkin terjadi masalah sementara pada layanan Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Kami tidak dapat menyimpan gambar Anda karena ada masalah dengan layanan Firefox Screenshots. Silakan coba kembali nanti."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Kami tidak dapat menangkap layar laman ini."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Ini bukan laman Web yang standar, sehingga Anda tidak dapat membuat tangkapan dari layar ini."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Anda tidak dapat merekam gambar dari laman Firefox Screenshots!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Wah! Firefox Screenshots mendadak kacau."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Kami tidak yakin akan apa yang terjadi. Ingin mencoba lagi atau merekam gambar dari laman yang berbeda?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Ambil, simpan, dan bagikan tangkapan layar tanpa meninggalkan Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Rekam Bagian Yang Anda Inginkan"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Klik dan seret untuk merekam sebagian area laman. Anda juga dapat menggeser kursor untuk menyoroti pilihan Anda."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Sesuka Anda"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Simpan potongan tangkapan Anda ke Web agar mudah dibagikan, atau unduh ke komputer. Anda pun dapat mengeklik pada tombol Gambar Saya untuk menemukan semua tangkapan yang pernah Anda rekam."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Rekam Jendela atau Seluruh Laman"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Pilih tombol di kanan atas untuk merekam area yang terlihat pada jendela atau rekam seluruh laman."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Lewati"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Salindia Selanjutnya"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Salindia Sebelumnya"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Selesai"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Dengan menggunakan Firefox Screenshots, Anda setuju dengan $TERMSANDPRIVACYNOTICETERMSLINK$ dan $TERMSANDPRIVACYNOTICEPRIVACYLINK$ Screenshots.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Ketentuan"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Kebijakan Privasi"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Crea screenshot di contenuti sul Web e salvali, solo per un periodo di tempo o in modo permanente."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Cattura screenshot"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "I miei screenshot"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Trascina o fai clic su una pagina per selezionare una regione. Premi ESC per annullare."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Salva"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Salva l’area visibile"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Salva l’intera schermata"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Annulla"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Scarica"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Link aggiunto agli appunti"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Il link all’immagine è stato copiato negli appunti. Utilizza $META_KEY$-V per incollarlo.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Fuori servizio"
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Siamo spiacenti, non è stato possibile salvare l’immagine. Riprova più tardi."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Non è possibile accedere agli screenshot salvati."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Verifica che la connessione a Internet stia funzionando correttamente. Se è possibile accedere ad altri siti, potrebbe trattarsi di un problema temporaneo con il servizio Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Non è stato possibile salvare l’immagine in quanto si è verificato un problema con il servizio Firefox Screenshots. Riprova più tardi."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Non è possibile salvare uno screenshot di questa pagina."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Non è possibile salvare uno screenshot in quanto non si tratta di una normale pagina web."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Non è possibile salvare uno screenshot di una pagina di Firefox Screenshots"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Wow! Firefox Screenshots è andato in tilt"
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Non sappiamo che cosa sia successo. Riprova, magari con una pagina diversa."
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Cattura, salva e condividi screenshot senza mai uscire da Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Cattura solo ciò che ti serve"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Fai clic e trascina per catturare solo una parte della pagina. Posiziona il mouse sopra all’area selezionata per evidenziarla."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Come piace a te"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Cattura lo screenshot di una pagina web, ritaglialo e salvalo online per condividerlo in modo più veloce, oppure scaricalo sul tuo computer. Puoi anche utilizzare il pulsante “I miei screenshot” per ritrovare tutte le immagini che hai salvato."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Cattura una finestra o una pagina intera"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Utilizza i pulsanti in alto a destra per catturare una parte della finestra o l’intera pagina."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Ignora"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Schermata successiva"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Schermata precedente"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Fine"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Utilizzando Firefox Screenshots si accettano le $TERMSANDPRIVACYNOTICETERMSLINK$ e l’$TERMSANDPRIVACYNOTICEPRIVACYLINK$ del servizio.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "condizioni di utilizzo"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "informativa sulla privacy"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "ウェブからスクリーンショットを撮って、一時的または永久にそれを保存しましょう。"
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "スクリーンショットを撮る"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "自分のショット"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "ページをドラッグまたはクリックして範囲を選択してください。ESC キーを押すとキャンセルできます。"
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "保存"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "表示範囲を保存"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "ページ全体を保存"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "キャンセル"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "ダウンロード"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "リンクをコピーしました"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "ショットへのリンクがクリップボードにコピーされました。$META_KEY$+V キーで貼り付けられます。",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "問題が発生しました。"
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "申し訳ありませんが、ショットを保存できませんでした。また後で試してください。"
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "スクリーンショットへ接続できません。"
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "お使いのインターネット接続を確認してください。インターネットへ接続できる場合は、Firefox Screenshots サービスに一時的な問題が発生しているものと思われます。"
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Firefox Screenshots サービスに問題があるため、ショットを保存できませんでした。また後で試してください。"
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "このページはスクリーンショットを撮れません。"
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "これは通常のウェブページでないため、スクリーンショットを撮ることができません。"
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Firefox Screenshots ページのショットは撮れません。"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Firefox Screenshots に問題が発生しました。"
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "何か問題が発生したようです。再度試すか、別のページのショットを撮ってみてください。"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Firefox を離れることなく、スクリーンショットを撮影、保存、共有。"
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "必要なものだけをキャプチャー"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "クリック&ドラッグでページの一部だけをキャプチャーできます。また、マウスを当てれば選択範囲が強調表示されます。"
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "お好きなように"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "切り取ったショットを簡単に共有できるようウェブ上に保存したり、手元へダウンロードしたり。また「自分のショット」ボタンをクリックすれば、これまでに撮ったすべてのショットを見られます。"
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "ウィンドウもしくはページ全体をキャプチャー"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "右上のボタンを選択して、ウィンドウ内の表示範囲もしくはページ全体をキャプチャーしましょう。"
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "スキップ"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "次のスライド"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "前のスライド"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "完了"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Firefox Screenshots を使うことで、あなたは Screenshots の $TERMSANDPRIVACYNOTICETERMSLINK$ と $TERMSANDPRIVACYNOTICEPRIVACYLINK$ に同意したことになります。",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "利用規約"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "プライバシー通知"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Ṭṭef imrayen akked igdilen si Web sakin sekles-iten s wudem askudan neɣ s wudem yezgan."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Ṭṭef agdil"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Tuṭṭfiwin-iw"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Zuγer sakin sit γef af usebter akken ad tferneḍ tamnaṭ. Senned γef ESC akken ad tesfesxeḍ."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Sekles"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Sekles ayen ibanen"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Sekles asebter meṛṛa"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Sefsex"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Sider"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Aseγwen yettwanγel"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Aseγwen ar tuṭṭfa-ik yettwanγel yef afus. Senned yef $META_KEY$-V akken ad tsenṭḍeḍ.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Yeffeγ i talast."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Suref-aγ! Ur nezmir ara ad nsekles tuṭṭfa-ik. Ɛreḍ tikelt-nniḍen."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Ur nezmir ara ad neqqen ar tuṭṭfiwin-ik n ugdil."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Senqed tuqqna-ik Internet. Ma yella tzemred ad teqqneḍ ar Internet, ahat d ugur kan meẓẓiyen deg umeẓlu Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "UR nseklas ara tuṭṭfa-ik acku yella ugur akked umezlu Firefox Screenshots. Ma ulac aɣilif ɛreḍ tikelt-nniḍen."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Ur nezmir ara ad neṭṭef agdil n usebter-agi."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Mačči d asebter Web am iyaḍ, ur tizmireḍ ara ad s-teṭṭfeḍ agdil."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Ur tezmireḍ ar ad teṭṭfeḍ agdil n usebter Firefox Screenshots!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Ihuh! Firefox Screenshots ur iteddu ara."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Ur neẓri ara acu yeḍran. Ɛreḍ tikelt-nniḍen neɣ ṭṭef agdil n usebter-nniḍen?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Ṭṭef, sekles, bḍu igdilen war ma teffɣeḍ si Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Ṭṭef kan ayen tebγiḍ"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Sit sakin zuɣer akken ad teṭṭfeḍ aḥric seg usebter. Tzemreḍ daɣen ad tesrifgeḍ akken ad tsebṛuṛqeḍ afran-ik."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Akken tebγiḍ"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Sekles tuṭṭfiwin-ik ar Web i beṭṭu fessusen, neɣ sider-itent-id ar uselkim-ik. Tzemr€d daɣen ad tiseḍ ɣef tqeffalt Tiṭṭfiwin-iw akken ad tafeḍ akk tuṭṭfiwin n ugdil i teggid."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Ṭṭef isfuyla neγ isebtar meṛṛa"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Fren tiqeffalin s afella ayeffus akken ad teṭṭfeḍ tamnaṭ yettbanen deg usfaylu neɣ asebter i meṛṛa."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Zgel"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Tigri n zdat"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Tigri n deffir"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Immed"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "S useqdec Firefox Screenshots, ad tqebleḍ $TERMSANDPRIVACYNOTICETERMSLINK$ n Screenshots akked $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Tiwtilin"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Tasertit n tbaḍnit"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Интернеттен скриншоттарды түсіріп, оларды уақытша немесе тұрақты түрде сақтаңыз."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Скриншотты түсіру"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Менің скриншоттарым"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Аймақты таңдау үшін бетте шертіңіз. Бас тарту үшін ESC басыңыз."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Сақтау"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Көрінетінді сақтау"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Толық парақты сақтау"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Бас тарту"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Жүктеп алу"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Сілтеме көшірілді"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Сіздің скриншотыңызға сілтеме алмасу буферіне көшірілді. Кірістіру үшін $META_KEY$-V басыңыз.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Жұмыс істемейді."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Кешіріңіз! Сіздің скриншотыңызды сақтай алмадық. Кейінірек қайталап көріңіз."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Скриншоттарыңызға байланыса алмадық."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Бұл беттің скриншотын түсіре алмаймыз."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Бұл қалыпты веб беті емес, сондықтан оның скриншотын түсіру мүмкін емес."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Firefox скриншоттары бетінің скриншотын түсіру мүмкін емес!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Қап! Firefox скриншоттары жасамай қалған сияқты."
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Firefox ішінен скриншоттарды түсіру, сақтау және олармен бөлісу."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Тек керек нәрсені түсіріңіз"
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Өзіңізге керек түрде"
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Аттап кету"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Келесі слайд"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Алдыңғы слайд"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Дайын"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "웹 페이지를 찍거나 영상으로 만들어 임시로, 혹은 영구히 보관하세요."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "스크린샷 찍기"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "내 스크린샷"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "캡처 할 범위를 드래그하거나 클릭하세요. ESC를 누르면 취소됩니다."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "저장"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "보이는 내용 저장"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "전체 페이지 저장"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "취소"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "다운로드"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "링크 복사됨"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "방금 찍은 스냅샷의 링크가 클립보드에 저장됐습니다. 붙여넣으려면 $META_KEY$-V를 누르세요.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "문제가 발생했습니다."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "죄송합니다. 스크린샷을 저장하지 못했습니다. 잠시 후에 다시 시도해주세요."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "스크린샷에 접속할 수 없습니다."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "인터넷 연결 상태를 확인해주세요. 만약 인터넷이 연결돼있다면, Firefox Screenshots 서비스에 잠깐 문제가 있을 수도 있습니다."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Firefox Screenshots 서비스에 잠시 문제가 있어 저장에 실패했습니다. 잠시 후에 다시 시도해주세요."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "이 페이지를 캡처할 수 없습니다."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "표준 웹 페이지가 아니어서 스크린샷을 찍을 수 없습니다."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Firefox Screenshots 페이지는 캡처할 수 없어요!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "와우! Firefox Screenshots이 망가졌네요."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "무슨 일이 있었는지 모르겠네요. 다시 시도하시거나 다른 페이지 스크린샷을 찍어 보시겠어요?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Firefox를 떠나지 않은 채로 찍고, 저장하고, 공유하세요."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "원하는 것을 캡춰하세요"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "캡춰할 페이지의 부분을 클릭해서 드래그 해 보세요. 마우스를 올려서 선택한 부분을 확인할 수 있습니다."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "내가 원하는 대로"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "스크린샷을 공유하거나, 컴퓨터로 다운로드할 수도 있습니다. 내 스크린샷 버튼을 눌러서 지금까지 찍었던 모든 스크린샷을 찾을 수도 있습니다."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "창이나 페이지 전체를 캡춰할 수 있습니다"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "우측 위에 있는 버튼을 눌러 창을 캡처하거나 페이지 전체를 캡처할 수 있습니다."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "건너뛰기"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "다음 슬라이드"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "이전 슬라이드"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "완료"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Firefox Screenshots를 사용하므로써, $TERMSANDPRIVACYNOTICETERMSLINK$와 $TERMSANDPRIVACYNOTICEPRIVACYLINK$에 동의하게 됩니다.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "이용약관"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "개인 정보 취급 방침"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,106 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Fanni de föto do schermo da-o Web e sarvale in mòddo tenporaneo ò cin mòddo che restan."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Fanni 'na föto do schermo"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "E mæ föto do schermo"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Rebela ò sciacca in sciâ pagina pe seleçionâ 'na region. Sciacca ESC pe anulâ."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Sarva"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Sarva o vixibile"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Sarva tutta a pagina"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Anulla"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Descarega"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Colegamento copiou inti aponti"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "O colegamento a l'inmagine o l'é stæto copiou inti aponti. Sciacca$META_KEY$-V pe incolalo.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Feua serviçio."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Ne spiaxe! No poemmo sarvâ l'inmagine. Pe piaxei preuva torna dòppo."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "No poemmo conetise a-e teu föto do schermo."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Pe piaxei contròlla a teu conescion a l'Internet. Se ti riesci a conetite a l'Internet, ghe poeiva ese 'n problema tenporaneo co-o serviçio de Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "No poemmo sarvâ a teu inmagine perché gh'é 'n problema co-o serviçio de Firefox Screenshot. Pe piaxei preuva torna dòppo."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "No poemmo fâ 'na föto do schermo de sta pagina."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Sta chi a no l'é 'na pagina Web standard, coscì no peu faghe 'na föto do schermo."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "No ti peu fâ 'na föto do schermo a 'na pagina de Firefox Screenshots!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Ahime mi! Firefox Screeshot o s'é ciantou."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Niatri no emmo ben acapio cöse l'é sucesso. Ti peu miga preuvâ co-ina pagina dispægia?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Fanni, sarva e condividdi föto do schermo sensa sciortî da Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Catua solo quello che t'eu"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Sciacca e rebela pe catuâ solo 'na porçion de 'na pagina. Ti peu anche anâ co-o ratto sorvia l'area seleçionâ pe evidençiala."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Comme te piaxe"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Sarva 'n ritaggio de 'na pagina Web pe condividila in mòddo ciù façile ò scaregala into teu computer. Ti peu anche sciacâ into pomello “E mæ föto do schermo pe atrovâ” quello che t'æ za pigiou."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Catua 'n barcon ò 'na pagina intrega"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Seleçionn-a i pomelli de d'ato a drita pe catuâ l'area vixibile into barcon ò a pagina intrega."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Ignòra"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Pròscima schermâ"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Schermâ de primma"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Fæto"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "ບັນທຶກ"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "ບັນທຶກສ່ວນທີ່ເບິງເຫັນໄດ້"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "ບັນທຶກຫມົດຫນ້າ"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": ""
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "ດາວໂຫລດ"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "ໄດ້ສຳເນົາລີ້ງໄວ້ແລ້ວ"
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "ພວກເຮົາບໍ່ສາມາດຖ່າຍຮູບຫນ້າຈໍຂອງຫນ້ານີ້ໄດ້."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "ຂ້າມໄປ"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "ສະໄລດ໌ຕໍ່ໄປ"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "ສະໄລດ໌ກ່ອນຫນ້ານີ້"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "ສຳເລັດ"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Darykite iškarpas ir ekrano nuotraukos su interneto turiniu bei saugokite jas laikinai arba visąlaik."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "„Mozilla“ <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Padaryti ekrano nuotrauką"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Mano kadrai"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Tempkite arba spustelėkite tinklalapyje norėdami pasirinkti regioną. Spustelėkite „ESC“ norėdami atsisakyti."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Įrašyti"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Įrašyti matomą"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Įrašyti visą tinklalapį"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Atsisakyti"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Atsisiųsti"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Saitas nukopijuotas"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Jūsų nuotraukos saitas buvo nukopijuotas į iškarpinę. Spustelėkite „$META_KEY$-V“ norėdami įdėti.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Neveikia."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Atsiprašome! Mums nepavyko įrašyti jūsų nuotraukos. Prašome pabandyti vėliau."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Mums nepavyko prisijungti prie jūsų ekrano nuotraukų."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Patikrinkite savo interneto ryšį. Jeigu galite prisijungti prie interneto, gali būti, kad yra laikina problema su „Firefox Screenshots“ paslauga."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Mums nepavyko įrašyti jūsų nuotraukos, nes yra problema su „Firefox Screenshots“ paslauga. Prašome pabandyti vėliau."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Mums nepavyko nufotografuoti šio tinklalapio."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Tai nėra įprastas tinklalapis, tad negalite padaryti jo nuotraukos."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Negalite padaryti „Firefox Screenshots“ tinklalapio nuotraukos!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Vau! „Firefox Screenshots“ sugedo."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Mes nesame tikri, kas ką tik nutiko. Norite pabandyti dar kartą arba nufotografuoti kitą tinklalapį?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Darykite, įrašykite ir dalinkitės ekrano nuotraukomis nepalikdami „Firefox“."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Užfiksuokite būtent tai, ką norite"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Spustelėkite ir tempkite, kad užfiksuotumėte tik dalį tinklalapio. Taip pat galite užvesti pelę, norėdami paryškinti savo pasirinkimą."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Kaip jums patogiau"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Įrašykite padarytas nuotraukas saityne patogesniam dalinimuisi, arba atsisiųskite jas į savo kompiuterį. Spustelėję mygtuką „Mano kadrai“, matysite visas savo padarytas nuotraukas."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Fiksuokite langus arba ištisus tinklalapius"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Pasirinkite mygtukus aukščiau dešinėje, norėdami užfiksuoti matomą lango dalį arba visą tinklalapį."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "SKIP"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Kita skaidrė"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Buvusi skaidrė"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Baigta"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Naudodamiesi „Firefox Screenshots“, sutinkate su jų $TERMSANDPRIVACYNOTICETERMSLINK$ ir $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "sąlygomis"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "privatumo nuostatais"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,106 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Ambil klip dan skrinshot dari Web dan simpan untuk sementara waktu atau kekal."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Ambil skrinshot"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Shot Saya"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Seret atau klik pada halaman untuk memilih kawasan. Tekan ESC untuk batalkan."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Simpan"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Simpan yang terpapar"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Simpan halaman penuh"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Batal"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Muat turun"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Pautan Disalin"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Pautan ke shot anda telah disalin ke klipbod. Tekan $META_KEY$-V untuk tampal.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Tidak berfungsi."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Maaf! Kita tidak dapat menyimpan shot anda. Sila cuba lagi nanti."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Kami tidak dapat menyambungkan ke skrinshot anda."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Sila semak sambungan Internet anda. Jika anda boleh dapat sambungan ke Internet, mungkin ada masalah sementara dengan perkhidmatan screenshot di Firefox."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Kita tidak dapat menyimpan skrinshot anda kerana ada masalah dengan perkhidmatan skrinshot di Firefox. Sila cuba lagi nanti."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Halaman ini tidak boleh diskrinshot."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Ini bukan halaman Web piawai, jadi anda tidak boleh membuat skrinshot."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Anda tidak boleh mengambil gambar halaman Firefox Screenshots!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Oh tidak! Firefox Screenshot tidak berfungsi dengan betul."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Kami tidak pasti apa yang baru berlaku. Anda mahu cuba lagi atau mengambil gambar halaman lain?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Ambil, simpan, dan kongsi screenshot tanpa meninggalkan pelayar Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Ambil gambar hanya yang anda mahu"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Klik dan seret untuk mengambil gambar sebahagian daripada halaman. Anda boleh juga serlahkan pilihan anda."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Seperti Yang Anda Suka"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Simpan rakaman yang dipotong ke Web, cara yang lebih mudah untuk berkongsi, atau memuatturunnya ke komputer anda. Anda juga boleh klik pada butang Shot Saya untuk mencari semua rakaman yang telah diambil."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Tangkap Tetingkap atau Keseluruhan Halaman"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Pilih butang di bahagian atas kanan untuk merakam kawasan paparan dalam tetingkap atau untuk merakamkan keseluruhan halaman."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Langkau"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Slaid Seterusnya"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Slaid Sebelumnya"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Selesai"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Ta klipp og skjermbilder fra nettet og lagre de midlertidig eller permanent."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Ta et skjermbilde"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Mine skjermbilder"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Dra eller klikk på siden for å velge en region. Trykk på ESC for å avbryte."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Lagre"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Lagre synlig område"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Lagre hele siden"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Avbryt"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Last ned"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Lenke kopiert"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Lenken til skjermbildet ditt er kopiert til utklippstavlen. Trykk på $META_KEY$-V for å lime inn.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "I ustand."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Beklager! Vi klarte ikke å lagre skjermbildet ditt. Prøv igjen senere."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Vi kan ikke koble til dine skjermbilder."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Kontroller din internett-tilkopling. Om du kan koble til internett, kan det være et midlertidig problem med tjenesten Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Vi klarte ikke å lagre skjermbildet ditt, fordi det er et problem med tjenesten Firefox Screenshots. Prøv igjen senere."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Vi kan ikke ta skjermbilde av siden."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Dette er ikke en vanlig nettside, og du kan ikke ta skjermbilde av den."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Du kan ikke ta skjermbilde av siden Firefox Screenshots!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Oi! Det ser ut til at Firefox Screenshots ikke fungerer korrekt."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Vi er ikke sikre på hva som hendte. Kan du prøve igjen eller ta et bilde av en annen side?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Ta, lagre og del skjermbilder uten å forlate Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Ta bilde av akkurat hva du vil"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Klikk for å dra og ta skjermbilde av bare en del av siden. Du kan også føre musen over for å framheve merket område."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Som du vil ha det"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Lagre de beskjærte skjermbildene dine på nettet for enklere deling, eller last de ned til din datamaskin. Du kan også klikke på knappen Mine skjermbilde for å finne alle skjermbildene du har tatt."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Ta skjermbilde av vinduer eller hele sider."
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Bruk knappene i det øvre høyre hjørnet for å ta skjermbilde av det synlige området i vinduet eller for å ta skjermbilde av en hel side."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Hopp over"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Neste slide"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Forrige slide"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Ferdig"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Ved å bruke Firefox Screenshots, godtar du $TERMSANDPRIVACYNOTICETERMSLINK$ og $TERMSANDPRIVACYNOTICEPRIVACYLINK$ for Screenshots.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "vilkår"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "personvernbestemmelser"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Maak clips en schermafbeeldingen van het web en sla deze tijdelijk of permanent op."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Een schermafbeelding maken"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Mijn afbeeldingen"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Sleep of klik op de pagina om een gebied te selecteren. Druk op ESC om te annuleren."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Opslaan"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Zichtbaar gebied opslaan"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Volledige pagina opslaan"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Annuleren"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Downloaden"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Koppeling gekopieerd"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "De koppeling naar uw afbeelding is naar het klembord gekopieerd. Druk op $META_KEY$-V om te plakken.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Buiten werking."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Sorry! Uw afbeelding kon niet worden opgeslagen. Probeer het later opnieuw."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "We kunnen geen verbinding met uw schermafdrukken maken."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Controleer uw internetverbinding. Als u verbinding met het internet kunt maken, kan er sprake zijn van een tijdelijk probleem met de Firefox Screenshots-service."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Uw afbeelding kon niet worden opgeslagen, omdat er een probleem is met de Firefox Screenshots-service. Probeer het later opnieuw."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Van deze pagina kan geen schermafbeelding worden gemaakt."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Dit is geen standaardwebpagina, dus u kunt er geen schermafbeelding van maken."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "U kunt geen afbeelding van een Firefox Screenshots-pagina maken!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Ho! Er is iets mis met Firefox Screenshots."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "We weten niet precies wat er zonet is gebeurd. Wilt u het nogmaals proberen of een schermafbeelding van een andere pagina maken?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Maak, bewaar en deel schermafbeeldingen zonder Firefox te verlaten."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Leg alleen vast wat u wilt"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Klik en sleep om alleen een gedeelte van een pagina vast te leggen. U kunt ook de muisaanwijzer boven een gebied houden om uw selectie te accentueren."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Zoals u wilt"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Sla uw bijgesneden afbeeldingen op op het web voor makkelijker delen, of download ze naar uw computer. U kunt ook op de knop Mijn afbeeldingen klikken om al uw gemaakte afbeeldingen te vinden."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Leg vensters of hele pagina’s vast"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Selecteer de knoppen rechtsboven om het zichtbare gebied in het venster vast te leggen, of om een hele pagina vast te leggen."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Overslaan"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Volgende slide"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Vorige slide"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Gereed"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Door Firefox Screenshots te gebruiken, gaat u akkoord met de $TERMSANDPRIVACYNOTICETERMSLINK$ en $TERMSANDPRIVACYNOTICEPRIVACYLINK$ van Screenshots.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Voorwaarden"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Privacyverklaring"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Ta klipp og skjermbilde frå nettet og lagre dei mellombels eller permanent."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Ta eit skjermbilde"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Mine skjermbilde"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Drag eller klikk på sida for å velje ein region. Trykk på ESC for å avbryte."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Lagre"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Lagre synleg område"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Lagre heile sida"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Avbryt"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Last ned"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Lenke kopiert"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Lenka til skjermbildet ditt er kopiert til utklipp. Trykk på $META_KEY$-V for å lime inn.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "I ustand."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Beklagar! Vi klarte ikkje å lagre skjermbiildet ditt. Prøv igjen seinare."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Vi kan ikkje kople til skjermbilda dine."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Kontroller internett-tilkoplinga di. Om du kan kople til internett, kan det vere eit mellombels problem med tenesta Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Vi klarte ikkje å lagre skjermbildet ditt, fordi det er eit problem med tenesta Firefox Screenshots. Prøv igjen seinare."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Vi kan ikkje ta skjermbilde av sida."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Dette er ikkje ei vanleg nettside, og du kan ikkje ta skjermbilde av henne."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Du kan ikkje ta skjermbilde av sida Firefox Screenshots!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Oj! Det ser ut til at Firefox Screenshots ikkje fungerer korrekt."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Vi er ikkje sikre på kva som hende. Kan du prøve igjen eller ta eit bilde på ei anna side?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Ta, lagre og del skjermbilde utan å forlate Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Knips akkurat det du vil"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Klikk for å drage og knipse berre ein del av sida. Du kan også føre musa over for å framheve merkt område."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Som du vil ha det"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Lagre dei tilskjerte bilda dine på nettet for enklare deling, eller last dei ned til datamaskina di. Du kan også klikke på knappen Mine skjermbilde for å finne alle bilda du har tatt."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Knips vindauge eller heile sider"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Vel knappane i det øvre høgre hjørnet for å knipse det synlege området i vindauget eller for å knipse ei heil side."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Hopp over"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Neste slide"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Føregåande slide"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Ferdig"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Ved å bruke Firefox Screenshots, godtar du $TERMSANDPRIVACYNOTICETERMSLINK$ og $TERMSANDPRIVACYNOTICEPRIVACYLINK$ for Screenshots.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Vilkår"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Personvernmerknad"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
"addonAuthorsList": {
|
||||
"message": "ਮੌਜ਼ੀਲਾ <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "ਸਕਰੀਨ-ਸ਼ਾਟ ਲਵੋ"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "ਮੇਰੇ ਸ਼ਾਟ"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "ਖੇਤਰ ਨੂੰ ਚੁਣਨ ਵਾਸਤੇ ਖਿੱਚੋ ਜਾਂ ਕਲਿੱਕ ਕਰੋ। ਰੱਦ ਕਰਨ ਵਾਸਤੇ ESC ਦੱਬੋ।"
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "ਸੰਭਾਲੋ"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "ਦਿੱਖ ਨੂੰ ਸੰਭਾਲੋ"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "ਪੂਰੇ ਸਫ਼ੇ ਨੂੰ ਸੰਭਾਲੋ"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "ਰੱਦ ਕਰੋ"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "ਡਾਊਨਲੋਡ ਕਰੋ"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "ਲਿੰਕ ਕਾਪੀ ਕੀਤਾ ਗਿਆ"
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "ਖ਼ਰਾਬ ਹੈ।"
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "ਛੱਡੋ"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "ਅਗਲੀ ਸਲਾਈਡ"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "ਪਿਛਲੀ ਸਲਾਈਡ"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "ਮੁਕੰਮਲ"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Twórz wycinki i zrzuty stron internetowych i zapisuj je tymczasowo lub trwale."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Wykonaj zrzut ekranu"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Moje zrzuty"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Przeciągnij lub kliknij na stronie, aby wybrać obszar. Naciśnij klawisz Esc, aby anulować."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Zapisz"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Zapisz widoczne"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Zapisz całą stronę"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Anuluj"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Pobierz"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Skopiowano odnośnik"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Odnośnik do zrzutu został skopiowany do schowka. Naciśnij $META_KEY$-V, aby go wkleić.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Awaria."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Nie można zapisać zrzutu. Spróbuj ponownie później."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Nie można połączyć się z zrzutami ekranu."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Sprawdź swoje połączenie z Internetem. Jeśli działa ono prawidłowo, to może występować tymczasowy problem z usługą Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Nie można zapisać zrzutu, ponieważ występuje problem z usługą Firefox Screenshots. Spróbuj ponownie później."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Nie można wykonać zrzutu tej strony."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "To nie jest standardowa strona internetowa, więc nie można wykonać jej zrzutu."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Nie można wykonać zrzutu strony Firefox Screenshots."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Firefox Screenshots wymknęło się spod kontroli."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Nie bardzo wiemy, co się wydarzyło. Spróbujesz ponownie lub wykonasz zrzut innej strony?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Wykonuj, zapisuj i udostępniaj zrzuty ekranu bez wychodzenia z Firefoksa."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Zapisuj tylko to, co potrzebujesz"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Kliknij i przeciągnij, aby zapisać tylko część strony. Możesz także najechać, aby wyróżnić zaznaczony obszar."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Tak, jak lubisz"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Zapisuj przycięte zrzuty w Internecie, aby łatwiej je udostępniać, albo pobierz je na swój komputer. Możesz też kliknąć przycisk „Moje zrzuty”, aby przeglądać wszystkie wykonane zrzuty."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Zapisuj zrzuty okien lub całych stron"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Kliknij przycisk w górnym prawym rogu, aby zapisać obszar widoczny w oknie lub całą stronę."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Pomiń"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Dalej"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Wstecz"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Zamknij"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Używając Firefox Screenshots, zgadzasz się na $TERMSANDPRIVACYNOTICETERMSLINK$ i $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "warunki korzystania z usługi"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "zasady ochrony prywatności"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Tire clipes e capturas de tela da Web e guarde-as temporariamente ou permanentemente."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Tirar uma captura de tela"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Minhas capturas"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Arraste ou clique na página para selecionar uma área. Pressione ESC para cancelar."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Salvar"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Salvar área visível"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Salvar página completa"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Cancelar"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Baixar"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Link copiado"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "O link da sua captura foi copiado para a área de transferência. Pressione $META_KEY$-V para colar.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Fora de ordem."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Desculpa! Não pudemos salvar a sua captura de tela. Por favor, tente novamente mais tarde."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Não conseguimos conectar suas capturas de tela."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Por favor verifique a sua conexão com a Internet. Se consegue conecta-se à Internet, pode existir um problema temporário com o serviço capturas de tela do Firefox."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Não conseguimos salvar a sua captura porque existe um problema com o serviço de capturas de tela do Firefox. Por favor tente novamente mais tarde."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Não conseguimos capturar a tela nesta página."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Esta não é uma página web padrão, por isso não podemos tirar uma captura de tela da mesma."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Você não pode tirar uma captura em uma página de capturas de tela do Firefox!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Uau! Algo correu mal com a capturas de tela do Firefox."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Não temos certeza do que acabou de acontecer. Tentar novamente ou fazer uma captura de uma página diferente?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Capture, salve e compartilhe telas sem sair do Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Capture apenas o que você quer"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Clique e arraste para capturar apenas uma parte de uma página. Você também pode passar o mouse para realçar sua seleção."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Como você quiser"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Salve as suas capturas na Web para compartilhar mais facilmente ou baixe-as no seu computador. Você também pode clicar no botão Minhas capturas para encontras todas as capturas que tirou."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Capture janelas ou páginas inteiras"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Selecione os botões no canto superior direito para capturar a área visível na janela ou capturar uma página inteira."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Pular"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Próximo slide"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Slide anterior"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Concluir"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Usando Firefox Screenshots, você concorda com os $TERMSANDPRIVACYNOTICETERMSLINK$ e $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Termos"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Política de privacidade"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Tire clipes e capturas de ecrã da Web e guarde-as temporariamente ou permanentemente."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Tirar uma captura de ecrã"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Minhas capturas"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Arraste ou clique na página para selecionar uma região. Pressione ESC para cancelar."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Guardar"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Guardar visível"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Guardar página inteira"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Cancelar"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Descarregar"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Ligação copiada"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "A ligação à sua captura foi copiada para a área de transferência. Pressione $META_KEY$-V para colar.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Fora de serviço."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Desculpe! Não conseguimos guardar a sua captura. Por favor tente novamente mais tarde."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Não conseguimos ligar às suas capturas de ecrã."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Por favor verifique a sua ligação à Internet. Se consegue ligar-se à Internet, pode existir um problema temporário com o serviço Capturas de ecrã Firefox."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Não conseguimos guardar a sua captura porque existe um problema com o serviço Capturas de ecrã Firefox. Por favor tente novamente mais tarde."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Não conseguimos capturar o ecrã nesta página."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Esta não é uma página web padrão, por isso não podemos tirar uma captura de ecrã da mesma."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Não pode tirar uma captura duma página Capturas de ecrã Firefox!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Uau! Algo correu mal com o Capturas de ecrã Firefox."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Não temos a certeza do que acabou de acontecer. Tentar novamente ou tirar uma captura de uma página diferente?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Tire, guarde, e partilhe capturas de ecrã sem sair do Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Capture aquilo mesmo que pretende"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Clique e arraste para capturar apenas uma porção de uma página. Pode também pairar para destacar a sua seleção."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Como gosta"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Guarde as suas capturas na Web para partilhar mais facilmente, ou descarregue-as para o seu computador. Pode também clicar no botão Minhas capturas para encontras todas as capturas que tirou."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Capture janelas ou páginas inteiras"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Selecione os botões no canto superior direito para capturar a área visível na janela ou capturar uma página inteira."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Saltar"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Diapositivo seguinte"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Diapositivo anterior"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Feito"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Ao utilizar o Firefox Screenshots, você concorda com os $TERMSANDPRIVACYNOTICETERMSLINK$ e com a $TERMSANDPRIVACYNOTICEPRIVACYLINK$ do Screenshots.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Termos"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Nota de privacidade"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Fai maletgs da visur dal web ed als memorisescha temporarmain u permanentamain."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Far in maletg dal visur"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Mes maletgs da visur"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Tira u clicca sin la pagina per tscherner ina regiun. Smatga ESC per interrumper."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Memorisar"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Memorisar la regiun visibla"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Memorisar la pagina cumpletta"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Interrumper"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Telechargiar"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Copià la colliaziun"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "La colliaziun tar tes maletg da visur è vegnida copiada en l'archiv provisoric. Smatga $META_KEY$-V per l'encollar.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Ord funcziun."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Perstgisa! I è actualmain betg pussibel da memorisar tes maletg da visur. Emprova p.pl. pli tard anc ina giada."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Impussibel da connectar a tes maletgs da visur."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Controllescha tia connexiun a l'internet. Sche ti has access a l'internet ha il servetsch da Firefox Screenshots forsa temporarmain in problem."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Impussibel da memorisar tes maletg da virus perquai ch'i dat in problem un il servetsch da Firefox Screenshots. Emprova p.pl. pli tard."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Impussibel da far in maletg da visur da questa pagina."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Quai n'è betg ina pagina web da standard, perquai n'èsi betg pussaivel da far in maletg da visur dad ella."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Impussibel da far in maletg da visur dad ina pagina da Firefox Screenshots."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Oh dieu! Firefox Screenshots ha il singlut."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Nus na savain betg tge ch'è gist capità. Vuls empruvar anc ina giada, forsa cun in'autra pagina?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Far, memorisar e cundivider maletgs da visur senza bandunar Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Far maletgs da visur da tut che vi vuls"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Clicca e tira per far in maletg da be ina part da la pagina. Ti pos posiziunar la mieur sur la selecziun per la relevar."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Co che ti prefereschas"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Memorisescha ils maletgs da visur en il web per als pudair cundivider u telechargiar sin tes computer. Ti pos era cliccar sin il buttun «Mes maletgs da visur» per vesair tut ils maletgs dal visur che ti has fatg."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Far maletgs da fanestras u paginas cumplettas"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Tscherna il buttun sura dretg per far in maletg da la part visibla en la fanestra u per far in maletg da la pagina cumpletta."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Sursiglir"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Proxim pass"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Ultim pass"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Finì"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Cun utilisar Firefox Screenshots accepteschas ti $TERMSANDPRIVACYNOTICETERMSLINK$ e $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "las cundiziuns d'utilisaziun"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "la decleraziun da protecziun da datas"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Делайте вырезки и скриншоты из Интернета и сохраняйте их временно или навсегда."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Сделать скриншот"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Мои снимки"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Потяните мышью или щёлкните по странице, чтобы выбрать область. Нажмите ESC для отмены."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Сохранить"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Сохранить видимую область"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Сохранить всю страницу"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Отмена"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Загрузить"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Ссылка скопирована"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Ссылка на ваш снимок была скопирована в буфер обмена. Нажмите $META_KEY$-V для её вставки.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Произошла ошибка."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Извините! Мы не смогли сохранить ваш снимок. Пожалуйста, попробуйте позже."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Мы не смогли получить доступ к вашим скриншотам."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Пожалуйста, проверьте соединение с Интернетом. Если у вам удаётся войти в Интернет, то возможно, возникла временная проблема со службой Скриншотов Firefox."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Мы не можем сохранить ваш снимок, так как возникла проблема с сервисом Скриншотов Firefox. Пожалуйста, попробуйте позже."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Мы не можем сделать скриншот этой страницы."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Так как это не обычная веб-страница, мы не сможем сделать её скриншот."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Вы не можете сделать скриншот страницы Скриншотов Firefox."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Ого! Скриншоты Firefox вышли из строя."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Мы не уверены, в чём проблема. Попробуете ещё раз или сделаете снимок другой страницы?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Делайте, сохраняйте и делитесь скриншотами прямо в Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Делайте снимки чего угодно"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Щелкните и потяните мышью для захвата части страницы. Вы также можете навести курсор мыши для подсветки выбранной области."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Как вам нравится"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Сохраняйте свои снимки в Интернете, чтобы легко ими делиться, или загружайте их на свой компьютер. Вы также можете просмотреть все сохранённые снимки, нажав на кнопку Мои снимки."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Захватывайте окна или целые страницы"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "С помощью кнопок в верхнем правом углу выбирайте захват видимой области окна или страницы целиком."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Пропустить"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Следующий слайд"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Предыдущий слайд"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Готово"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Используя Firefox Screenshots, вы соглашаетесь с его $TERMSANDPRIVACYNOTICETERMSLINK$ и $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Условиями использования"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Уведомлением о приватности"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Vytvorte si snímky obrazovky na webe a uložte si ich dočasne či navždy."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Urobiť snímku obrazovky"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Moje snímky"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Potiahnutím alebo kliknutím si vyberte oblasť, ktorú chcete zachytiť. Výber zrušíte stlačením klávesa ESC."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Uložiť"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Uložiť viditeľnú časť"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Uložiť celú stránku"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Zrušiť"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Prevziať"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Odkaz bol skopírovaný"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Odkaz na vašu snímku bol skopírovaný do schránky. Stlačením $META_KEY$-V ho prilepíte.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Mimo prevádzky."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Mrzí nás to, no nemôžeme uložiť vašu snímku. Skúste to, prosím, neskôr."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Nemôžeme sa spojiť s vašimi snímkami."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Prosím, skontrolujte svoje internetové pripojenie. Ak ste pripojení na internet, môže ísť o dočasný problém na strane služby Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Nemohli sme uložiť vašu snímku, pretože nastal problém so službou Firefox Screenshots. Skúste to, prosím, neskôr."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Túto stránku nemôžeme zachytiť."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Toto nie je štandardná webová stránka, takže z nej nemôžeme vytvoriť snímku obrazovky."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Nemôžete vytvoriť snímku obrazovky stránky Firefox Screenshots!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Ups! Služba Firefox Screenshots prestala pracovať."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Nie sme si istí, čo sa práve stalo. Chcete tú skúsiť znova alebo chcete vytvoriť snímku inej stránky?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Tvorte, ukladajte a zdieľajte snímky obrazovky bez toho, aby ste museli opustiť Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Zachyťte to, čo chcete"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Ak chcete zachytiť časť stránky, urobíte to kliknutím a potiahnutím. Váš výber zvýrazníte tak, že sa naň presuniete myšou."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Tak ako to chcete"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Uložte si orezanú snímku na web, aby ste ju mohli ľahšie zdieľať alebo si ju prevziať do počítača. Môžete si taktiež pozrieť všetky vaše snímky, stačí ak kliknete na tlačidlo Moje snímky."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Zachyťte okná alebo celé webové stránky"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Kliknutím na tlačidlo v pravom hornom rohu môžete zachytiť viditeľnú časť stránky. Pomocou ďalšieho tlačidla zachytíte celú stránku."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Preskočiť"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Ďalšia snímka"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Predchádzajúca snímka"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Hotovo"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Používaním služby Firefox Screenshots vyjadrujete súhlas s $TERMSANDPRIVACYNOTICETERMSLINK$ služby Screenshots a so $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "podmienkami"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "zásadami ochrany súkromia"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Zajemajte posnetke zaslona s spleta ter jih shranite začasno ali trajno."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Zajemi posnetek zaslona"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Moji posnetki"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Povlecite ali kliknite na strani za izbiro območja. Pritisnite ESC za preklic."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Shrani"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Shrani vidno"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Shrani celotno stran"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Prekliči"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Prenesi"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Povezava kopirana"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Povezava do vašega posnetka zaslona je bila kopirana v odložišče. Pritisnite $META_KEY$-V, da jo prilepite.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Ne dela."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Vašega posnetka nismo uspeli shraniti. Poskusite znova kasneje."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Ne moremo vzpostaviti povezave do vaših posnetkov."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Preverite svojo internetno povezavo. V kolikor povezava deluje, gre morda za začasno težavo s storitvijo Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Ne moremo shraniti vašega posnetka, ker je prišlo do težave s storitvijo Firefox Screenshots. Poskusite znova kasneje."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Ne moremo zajeti posnetka te strani."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "To ni običajna spletna stran, zato ne morete zajeti njenega zaslonskega posnetka."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Posnetka strani Firefox Screenshots ni mogoče zajeti!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Uf! Firefox Screenshots se je pokvaril."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Ne vemo točno, kaj se je pravkar zgodilo. Bi radi poskusili znova ali pa zajeli posnetek kakšne druge strani?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Zajemite, shranite in delite zaslonske posnetke, ne da bi zapustili Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Zajemite to, kar hočete"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Kliknite in povlecite, če želite zajeti samo del strani. Svojo izbiro lahko tudi poudarite, tako da preko nje povlečete miškin kazalec."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Kot vi želite"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Shranite obrezane posnetke na splet za lažje deljenje ali jih prenesite na svoj računalnik. Vse zajete posnetke lahko najdete s klikom na gumb My Shots."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Zajemite okna ali celotne strani"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "V zgornjem desnem kotu izberite gumb za zajem vidnega območja v oknu ali celotne strani."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Preskoči"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Naslednji diapozitiv"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Prejšnji diapozitiv"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Končano"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Z uporabo razširitve Firefox Screenshots se strinjate s $TERMSANDPRIVACYNOTICETERMSLINK$ in $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "pogoji"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "obvestilom o zasebnosti"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Ruaje"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Anuloje"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Shkarkoje"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Lidhja u Kopjua"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Бележите снимке екрана са веба и сачувајте их привремено или трајно."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Усликајте екран"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Моји снимци"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Превуците или кликните на страници да изаберете област. Притисните ESC да прекинете."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Сачувај"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Сачувај видљиво"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Сачувај целу страницу"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Откажи"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Преузми"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Веза копирана"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Веза коју сте забележили је копирана у бележницу. Притисните $META_KEY$-V да налепите.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Не ради."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Жао нам је! Нисмо могли сачувати ваш снимак. Покушајте поново касније."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Не можемо се повезати на ваше снимке."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Проверите вашу интернет конекцију. Ако можете да се конектујете, онда можда постоји привремени проблем са Firefox Screenshots-ом."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Нисмо могли сачувати ваш снимак јер постоји проблем са Firefox Screenshots-ом. Покушајте поново касније."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Не можемо забележити снимак ове странице."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Ово није стандардна веб страница, тако да не можете забележити њен снимак."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Не можете усликати Firefox Screenshots страницу!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Ајој! Firefox Screenshots је пошашавио."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Нисмо сигурни шта се управо догодило. Желите ли покушати поново или да усликате другачију страницу?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Забележите, сачувајте и поделите снимке екрана без напуштања Firefox-а."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Усликајте баш оно што желите"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Кликните и превуците да усликате само део странице. Такође можете означити вашу селекцију."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Као што волите"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Сачувајте ваш исечени снимак на веб ради лакшег дељења или преузимања на ваш рачунар. Такође можете кликнути на дугме \"Моји снимци\" да пронађете све ваше снимке."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Усликајте прозоре или целе странице"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Изаберите дугмад у горњем десном углу да усликате видљиве делове прозора или да усликате целу страницу."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Прескочи"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Следећи слајд"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Претходни слајд"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Готово"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Коришћењем услуге Firefox Screenshots, слажете се са $TERMSANDPRIVACYNOTICETERMSLINK$ и $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "условима"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "обавештењем о приватности"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Ta klipp och skärmbilder från webben och spara dem tillfälligt eller permanent."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Ta en skärmbild"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Mina skärmbilder"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Dra eller klicka på sidan för att välja en region. Tryck på ESC för att avbryta."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Spara"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Spara synligt område"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Spara hela sidan"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Avbryt"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Ladda ner"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Länk kopierad"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Länken till din skärmbild har kopierats till urklipp. Tryck på $META_KEY$-V för att klistra in.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Ur funktion."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Förlåt! Vi kunde inte spara din skärmbild. Försök igen senare."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Vi kan inte ansluta till dina skärmbilder."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Kontrollera din internetanslutning. Om du kan ansluta till internet, kan det vara ett tillfälligt problem med tjänsten Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Vi kunde inte spara din skärmbild eftersom det finns ett problem med tjänsten Firefox Screenshots. Försök igen senare."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Vi kan inte ta en skärmbild av sidan."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Detta är inte en vanlig webbsida, så du kan inte ta en skärmbild av den."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Du kan inte ta en skärmbild av sidan Firefox Screenshots!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Oj! Firefox Screenshots verkar inte fungera korrekt."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Vi är inte säkra på vad som just hände. Kan du försöka igen eller ta en bild på en annan sida?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Ta, spara, och dela skärmbilder utan att lämna Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Fånga precis vad du vill"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Klicka och dra för att fånga bara en del av en sida. Du kan också hovra för att markera ditt val."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Som du vill ha det"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Spara dina beskurna bilder till webben för enklare delning, eller hämta dem till datorn. Du kan också klicka på knappen Mina skärmbilder för att hitta alla bilder du tagit."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Fånga fönster eller hela sidor"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Välj knapparna i det övre högra hörnet för att fånga det synliga området i fönstret eller för att fånga en hel sida."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Hoppa över"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Nästa sida"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Föregående sida"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Färdig"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Genom att använda Firefox Screenshots, godkänner du $TERMSANDPRIVACYNOTICETERMSLINK$ och $TERMSANDPRIVACYNOTICEPRIVACYLINK$ för Screenshots.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Villkor"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Sekretesspolicy"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "จับภาพหน้าจอจากเว็บและบันทึกไว้ชั่วคราวหรือถาวร"
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "จับภาพหน้าจอ"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "ภาพของฉัน"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "ลากหรือคลิกหน้าเว็บเพื่อเลือกบริเวณ กด ESC เพื่อยกเลิก"
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "บันทึก"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "บันทึกส่วนที่เห็น"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "บันทึกเต็มหน้า"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "ยกเลิก"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "ดาวน์โหลด"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "คัดลอกลิงก์แล้ว"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "คัดลอกลิงก์ภาพของไว้ในคลิปบอร์ดแล้ว กด $META_KEY$-V เพื่อวาง",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "ใช้งานไม่ได้"
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "ขออภัย! เราไม่สามารถบันทึกภาพของคุณได้ โปรดลองอีกครั้งหลังจากนี้"
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "เราเชื่อมต่อภาพหน้าจอของคุณไม่ได้"
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "กรุณาตรวจสอบการเชื่อมต่ออินเทอร์เน็ต หากคุณสามารถเชื่อมต่อกับอินเทอร์เน็ต บริการ Firefox Screenshots อาจมีปัญหาชั่วคราว "
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "เราไม่สามารถบันทึกภาพได้เพราะมีปัญหากับบริการ Firefox Screenshots โปรดลองใหม่ภายหลัง"
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "เราไม่สามารถจับภาพหน้าจอหน้านี้"
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "นี่ไม่ใช่หน้าเว็บมาตรฐานดังนั้นคุณไม่สามารถจับภาพได้"
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "คุณไม่สามารถจับภาพหน้าจอของหน้า Firefox Screenshots"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "โอ๊ย! Firefox Screenshots รวน"
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "เราไม่แน่ใจว่าเกิดอะไรขึ้น โปรดลองอีกครั้งหรือจับภาพของหน้าอื่น"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "จับ บันทึกและแบ่งปันภาพหน้าจอโดยที่ไม่ต้องออกจาก Firefox"
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "จับภาพตามที่คุณต้องการ"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "คลิกหรือลากเพื่อจับภาพเฉพาะบางส่วนของหน้าเว็บ คุณสามารถเลื่อนมาชี้เพื่อเน้นภาพส่วนที่คุณเลือก"
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "ตามที่คุณโปรด"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "บันทึกและครอปภาพลงในเว็บเพื่อให้แบ่งปันได้ง่าย หรือดาวน์โหลดลงคอมพิวเตอร์ของคุณ คุณยังสามารถคลิกที่ปุ่มภาพของฉันเพื่อที่จะหาภาพที่คุณจับไว้"
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "จับภาพหน้าต่างหรือทั้งหน้า"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "กดปุ่มด้านบนขวาเพื่อจับภาพบริเวณที่มองเห็นในหน้าต่างหรือทั้งหน้าเว็บ"
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "ข้าม"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "ภาพนิ่งถัดไป"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "ภาพนิ่งก่อนหน้า"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "เสร็จสิ้น"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "เพื่อใช้ Firefox Screenshots คุณยอมรับ $TERMSANDPRIVACYNOTICETERMSLINK$ และ $TERMSANDPRIVACYNOTICEPRIVACYLINK$ ของ Screenshots",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "ข้อกำหนด"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "ประกาศความเป็นส่วนตัว"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Dalhin ang clip at mga screenshot mula sa Web at i-save ang mga ito pansamantala o permanente."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Kumuha ng Screenshot"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Aking Shots"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "I-drag o i-click sa pahina upang pumili ng rehiyon. Pindutin ang ESC upang kanselahin."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "I-save"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "I-save na nakikita"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "I-save ang buong pahina"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Kanselahin"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Download"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Kinopya ang Link"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Ang link na ito sa iyong shot ay kinopya sa clipboard. Pindutin $META_KEY$-V i-paste.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Mula sa pagkakasunod-sunod."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Paumanhin! Hindi namin mai-save ang iyong mga shot. Subukang muli mamaya."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Hindi namin maaaring i-kunekta sa iyong mga screenshot."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Mangyaring suriin ang iyong koneksyon sa Internet. Kung ikaw ay kumonekta sa Internet, maaaring may isang pansamantalang problema sa serbisyo Firefox screenshot."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Hindi namin mai-save ang iyong mga shot dahil may problema sa serbisyo Firefox screenshot. Subukang muli mamaya."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Hindi namin maaaring screenshot pahinang ito."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Ito ay hindi isang standard na Web page, kaya hindi ka maaaring kumuha ng isang screenshot ng mga ito."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Hindi ka maaaring kumuha ng isang shot ng isang pahina ng Firefox screenshot!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Whoa! Nagiging magulo ang Firefox screenshot."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Hindi kami sigurado kung ano ang nangyari. Pag-aalaga upang subukang muli o kumuha ng isang shot ng isang iba't ibang mga pahina?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Dumaan, i-save, at ibahagi ang mga screenshot nang hindi umaalis sa Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Kunan Kung Ano Ang Gusto Mo"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "I-click at i-drag upang makuha lamang ang isang bahagi ng isang pahina. Maaari mo ring i-hover upang i-highlight ang iyong pagpili."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Bilang Nagustuhan Mo ito"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "I-save ang iyong crop shot sa Web para sa madaling pagbabahagi, o i-download ito sa iyong computer. Maaari mo ring i-click sa pindutan ng My Shots upang mahanap ang lahat ng mga pag-shot na kinunan mo."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "I-capture ang Windows o Buong Pahina"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Piliin ang pindutan sa kanang itaas upang makuha ang nakikitang lugar sa window o upang makuha ang isang buong pahina."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Laktawan"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Susunod na Slide"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Nakaraan na Slide"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Tapos"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Sa pamamagitan ng paggamit ng Firefox screenshot, sumasang-ayon ka sa mga screenshot $TERMSANDPRIVACYNOTICETERMSLINK$ at $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Mga tuntunin"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Abiso sa Privacy"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Web sayfalarının ekran görüntülerini alın, ister geçici ister kalıcı olarak kaydedin."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Ekran görüntüsü al"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Ekran görüntülerim"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Bir bölgeyi seçmek için işaretçiyi sürükleyin veya tıklayın. İptal etmek için ESC tuşuna basın."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Kaydet"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Görünür alanı kaydet"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Tüm sayfayı kaydet"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Vazgeç"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "İndir"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Bağlantı kopyalandı"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Ekran görüntünüzün bağlantısı panoya kopyalandı. Yapıştırmak için $META_KEY$-V tuşlarına basabilirsiniz.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Arıza var."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Ekran görüntünüzü kaydedemedik. Lütfen daha sonra yeniden deneyin."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Ekran görüntülerinize bağlanamadık."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Lütfen internet bağlantınızı kontrol edin. İnternete bağlanabiliyorsanız Firefox Screenhosts hizmeti ile ilgili geçici bir sorun olabilir."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Firefox Screenshosts hizmetinde bir sorun yaşandığı için ekran görüntünüzü kaydedemedik. Lütfen daha sonra yeniden deneyin."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Bu sayfanın ekran görüntüsü alınamıyor."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Bu sayfa standart bir web sayfası olmadığı için ekran görüntüsünü alamazsınız."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Firefox Screenshots sayfalarının ekran görüntüsünü alamazsınz."
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Firefox Screenshosts kafayı yedi!"
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Ne olduğunu biz de anlamadık. Bir daha denemeye veya başka bir sayfanın ekran görüntüsünü almaya ne dersiniz?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Firefox'tan çıkmadan ekran görüntüleri alın, kaydedin ve paylaşın."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "İstediğini yakala"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Sayfanın belli bir kısmını yakalamak için işaretçiyi tıklayıp sürükleyin. Seçiminizi vurgulamak için fareyle üzerine gelebilirsiniz."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "İstediğin gibi yakala"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Ekran görüntülerinizi daha kolay paylşamak veya bilgisayarınıza indirmek için web'e kaydedin. Kaydettiğiniz tüm görüntüleri bulmak için \"Ekran görüntülerim\" düğmesine tıklayabilirsiniz."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Pencereleri veya sayfaların tamamını yakala"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "Yalnızda pencerede gördüğünüz alanı veya sayfanın tamamını yakalamak için sağ üstteki düğmelerden uygun olanı seçin."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "GEÇ"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Sonraki slayt"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Önceki slayt"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Tamam"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Firefox Screenshots'ı kullandığınızda Screenshosts $TERMSANDPRIVACYNOTICETERMSLINK$ ve $TERMSANDPRIVACYNOTICEPRIVACYLINK$ kabul etmiş sayılırsınız.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Koşullarını"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Gizlilik Bildirimini"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "Робіть вирізки та знімки екрану в Інтернеті та зберігайте їх для подальшої роботи."
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "Зробити знімок екрану"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "Мої знімки"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "Потягніть або клацніть на сторінці для вибору області. Натисніть ESC для скасування."
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "Зберегти"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "Зберегти видиму область"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "Зберегти всю сторінку"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "Скасувати"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "Завантажити"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "Посилання скопійовано"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "Посилання на ваш знімок було скопійоване до буфера обміну. Натисніть $META_KEY$-V для вставлення.",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "Сталася помилка."
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "Вибачте! Нам не вдалося зберегти ваш знімок. Спробуйте знову пізніше."
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "Ми не можемо отримати доступ до ваших знімків."
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "Будь ласка, перевірте ваше підключення до Інтернету. Якщо у вас все в порядку з Інтернетом, можливо, виникли тимчасові проблеми зі службою Firefox Screenshots."
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Нам не вдалося зберегти ваш знімок, тому що виникли проблеми зі службою Firefox Screenshots. Спробуйте знову пізніше."
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "Ми не можемо зробити знімок цієї сторінки."
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "Це не стандартна веб-сторінка, тому ви не можете зробити її знімок."
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "Ви не можете зробити знімок сторінки Firefox Screenshots!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "Оу! З Firefox Screenshots щось негаразд."
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "Ми не впевнені, в чому проблема. Спробувати ще раз, або ж зробити знімок іншої сторінки?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "Робіть знімки екрану, зберігайте та діліться ними прямо в Firefox."
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "Робіть знімки чого завгодно"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "Клацніть і потягніть мишею для захоплення частини сторінки. Ви також можете навести курсор миші для підсвічення вибраної області."
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "Як вам подобається"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "Зберігайте свої знімки в Інтернеті, щоб легко ними ділитися, або завантажуйте їх на свій комп'ютер. Ви також можете переглянути всі збережені знімки, натиснувши на кнопку Мої знімки."
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "Захоплюйте вікна або цілі сторінки"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "За допомогою кнопок у верхній правій частині обирайте захоплення видимої області вікна, або сторінки повністю."
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "Пропустити"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "Наступний слайд"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "Попередній слайд"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "Готово"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "Використовуючи Firefox Screenshots, ви погоджуєтеся з його $TERMSANDPRIVACYNOTICETERMSLINK$ та $TERMSANDPRIVACYNOTICEPRIVACYLINK$.",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "Умовами використання"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "Повідомленням про приватність"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,103 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "ویب سے کللبس یاا اسکرین شاٹیں لیں اور ان کو عارظی یا مستقل طور پر محفوظ کریں۔"
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "ایک سکرین شاٹ لیں"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "میری شاٹس"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "علاقہ منتخب کرنے کے لیئے گھسیٹیں یا صفحہ پر کلک کریں۔ منسوخ کرنے کے لیئے ESC دبائیں۔"
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "محفوظ کریں"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "مرئی محفوظ کریں"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "پورا صفحہ محفوظ کریں"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "منسوخ کریں"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "ڈاؤن لوڈ"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "تبط نقل کر دیا گیا"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "آُپ کی شاٹس کا ربط و تختہ تراشہ پر نقل کر دیا گیا ہے۔ چسپاں کرنے کے لیئے $META_KEY$-V دبائِں۔",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "خراب ہے۔"
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "معاف کیجیئے گا! ہم آپ کی شاٹ محفوظ نہیں کر سکے۔ براہ مہربانی کچھ دیر بعد کوشش کریں۔"
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "ہم آپ کی اسکرین شاٹس سے نہیں جڑ سکتے۔"
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "براہ مہربانی اپنے انٹرنیٹ کنکشن کی پڑتال کریں۔ اگر آپ انٹرنیٹ سے جڑنے کے قابل ہیں، تو شاید Firefox اسکرین شاٹ خدمات کے ساتھ عارظی مسلہ ہو۔"
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "ہم آُپ کی شاٹ محفوظ نہیں کر سکے کیونکہ Firefox اسکرین شاٹ خدمت کے ساتھ مسلہ ہے۔ براہ مہربانی کچھ دیربعد کوشش کیجیئے۔ "
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "ہم اس صفحہ کی اسکرین شاٹ نہیں کر سکتے۔"
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "یہ ایک میعاری صفحہ نہہیں، تو آپ اسکی اسکرین شاٹ نہیں لے سکتے۔"
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "آپ Firefox اسکرین شاٹس صفحے! کی ایک شاٹ نہیں لے سکت"
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "ہمیں یقین نہیں کہ کیا ہوا تھا۔ خیال رکھ کر پھر کوشش کریں یا بھر مختلف صفحہ کی تصویرلیں؟"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "۔Firefox کو چھوڑے بغیر اسکرینشاٹس لیں، محفوظ کریں اور شیئر کریں۔"
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "جو آپ چاہتے ہیں وہ گرفت کریں"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "صفحہ کا ایک حصہ گرفت کرنے کے لیئے گھسیتیں اور کلک کریں.آُپ اپنے انتخاب کو نمایاں کرنے کے لیئے منڈلا سکتے ہیں۔"
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "جس طرح آپ کو پسند ہے"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "اپنے کمپیوٹڑ میں ڈائونلوڈ کرنے یا ویب پر آسانی سے شیئر کرنے کے لیئےاپنی کتری ہوئی شاٹس محفوظ کریں۔ آپ میری شاٹس کے بٹن پ کلک کر کے بھی اتمام پنی لی گئی شاٹس ڈھّونڈ سکتےہیں۔"
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "دریچہ ہا مکمل صفحہ گرفت کریں"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "دریچہ میں نظر آنے والے علاقے یا مکمل صفحہ کو گرفت کرنے کے لیئے بالائی دائیں جانب بٹن کا انتخاب کریں۔"
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "اچٹیں\t "
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "اگلى سلائيڈ"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "پچھلی سلائڈ"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "ہوگیا"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "剪辑和拍摄 Web 截图,临时或永久保存它们。"
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "拍摄截图"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "我的截图"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "在页面上拖动或点击以选择范围。按 ESC 取消。"
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "保存"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "保存可见范围"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "保存整个页面"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "取消"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "下载"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "链接已复制"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "您的截图的链接已复制到剪贴板。按 $META_KEY$-V 粘贴。",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "出故障了。"
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "很抱歉,我们无法为您保存截图。请稍后再试。"
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "我们无法连接到您的截图。"
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "请检查您的互联网连接。如果您正常连接到互联网,Firefox Screenshots 的服务器可能遇到了问题。"
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Firefox Screenshots 服务遇到问题,我们现在无法保存您的截图。请稍后再试。"
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "我们无法截图此页面。"
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "这不是一个标准的网页,所以无法截图。"
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "您不能拍摄 Firefox Screenshots 的页面!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "哎呀,Firefox Screenshots 遇到问题。"
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "我们不确定发生了什么。您可以再试一次或者试试另一个页面。"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "拍摄、保存和分享屏幕截图,无需 Firefox 以外的工具。"
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "只拍摄想要的部分"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "单击并拖动以只拍摄页面某个区域。您也可以悬停以高亮您的选择范围。"
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "做你所想"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "将您裁剪后的截图保存到网上以便共享,或者下载到您的计算机。您也可以点击“我的截图”按钮找到您拍摄的所有截图。"
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "拍摄窗口或整个页面"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "选择右上角的按钮可以拍摄窗口中的可见区域或者整个页面。"
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "跳过"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "下一页"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "上一页"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "完成"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "使用 Firefox Screenshots 即代表您同意 Screenshots 的$TERMSANDPRIVACYNOTICETERMSLINK$和$TERMSANDPRIVACYNOTICEPRIVACYLINK$。",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "条款"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "隐私声明"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
{
|
||||
"addonDescription": {
|
||||
"message": "拍攝網頁的擷圖,可暫時儲存或永久儲存。"
|
||||
},
|
||||
"addonAuthorsList": {
|
||||
"message": "Mozilla <screenshots-feedback@mozilla.org>"
|
||||
},
|
||||
"contextMenuLabel": {
|
||||
"message": "拍攝畫面擷圖"
|
||||
},
|
||||
"myShotsLink": {
|
||||
"message": "我的擷圖"
|
||||
},
|
||||
"screenshotInstructions": {
|
||||
"message": "拖曳或點擊頁面來選擇區域,按下 ESC 取消。"
|
||||
},
|
||||
"saveScreenshotSelectedArea": {
|
||||
"message": "儲存"
|
||||
},
|
||||
"saveScreenshotVisibleArea": {
|
||||
"message": "儲存可見範圍"
|
||||
},
|
||||
"saveScreenshotFullPage": {
|
||||
"message": "儲存完整頁面"
|
||||
},
|
||||
"cancelScreenshot": {
|
||||
"message": "取消"
|
||||
},
|
||||
"downloadScreenshot": {
|
||||
"message": "下載"
|
||||
},
|
||||
"notificationLinkCopiedTitle": {
|
||||
"message": "已複製鏈結"
|
||||
},
|
||||
"notificationLinkCopiedDetails": {
|
||||
"message": "已將您拍攝的圖片鏈結複製到剪貼簿,按下 $META_KEY$+V 即可貼上。",
|
||||
"placeholders": {
|
||||
"meta_key": {
|
||||
"content": "$1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requestErrorTitle": {
|
||||
"message": "系統維護中。"
|
||||
},
|
||||
"requestErrorDetails": {
|
||||
"message": "抱歉!無法儲存您拍攝的圖片,請稍候再試一次。"
|
||||
},
|
||||
"connectionErrorTitle": {
|
||||
"message": "無法連線至您的畫面擷圖。"
|
||||
},
|
||||
"connectionErrorDetails": {
|
||||
"message": "請檢查您的網路連線。若您可以正常上網,可能是 Firefox Screenshots 臨時出了問題。"
|
||||
},
|
||||
"loginErrorDetails": {
|
||||
"message": "Firefox Screenshots 服務發生問題,我們無法儲存您拍攝的擷圖。請稍候再試。"
|
||||
},
|
||||
"unshootablePageErrorTitle": {
|
||||
"message": "無法幫此頁面拍照。"
|
||||
},
|
||||
"unshootablePageErrorDetails": {
|
||||
"message": "這不是標準的網頁,無法拍照。"
|
||||
},
|
||||
"selfScreenshotErrorTitle": {
|
||||
"message": "您不能幫 Firefox Screenshots 的頁面拍照!"
|
||||
},
|
||||
"genericErrorTitle": {
|
||||
"message": "唉呀,Firefox Screenshots 有點秀逗了。"
|
||||
},
|
||||
"genericErrorDetails": {
|
||||
"message": "我們不確定剛剛發生了什麼事,您可以再試一次,或拍攝其他頁面的擷圖嗎?"
|
||||
},
|
||||
"tourBodyOne": {
|
||||
"message": "不用離開 Firefox 就可以拍攝、儲存、分享畫面擷圖。"
|
||||
},
|
||||
"tourHeaderTwo": {
|
||||
"message": "只拍你想拍的"
|
||||
},
|
||||
"tourBodyTwo": {
|
||||
"message": "點擊並拖曳出頁面當中的一部份,您也可以停留下來,強調選擇範圍。"
|
||||
},
|
||||
"tourHeaderThree": {
|
||||
"message": "用您想要的方式分享"
|
||||
},
|
||||
"tourBodyThree": {
|
||||
"message": "直接將裁切過的擷圖傳到網路上方便分享,或者下載到電腦上。您也可以點擊「我的擷圖」按鈕,尋找您拍過的所有擷圖。"
|
||||
},
|
||||
"tourHeaderFour": {
|
||||
"message": "拍攝視窗或整張網頁"
|
||||
},
|
||||
"tourBodyFour": {
|
||||
"message": "透過右上角的不同按鈕來選擇只拍攝視窗中的可見區域,或是整張網頁。"
|
||||
},
|
||||
"tourSkip": {
|
||||
"message": "略過"
|
||||
},
|
||||
"tourNext": {
|
||||
"message": "下一頁"
|
||||
},
|
||||
"tourPrevious": {
|
||||
"message": "上一頁"
|
||||
},
|
||||
"tourDone": {
|
||||
"message": "完成"
|
||||
},
|
||||
"termsAndPrivacyNotice": {
|
||||
"message": "使用 Firefox Screenshots,代表您同意 Screenshots 的 $TERMSANDPRIVACYNOTICETERMSLINK$ 及 $TERMSANDPRIVACYNOTICEPRIVACYLINK$。",
|
||||
"placeholders": {
|
||||
"termsandprivacynoticetermslink": {
|
||||
"content": "$1"
|
||||
},
|
||||
"termsandprivacynoticeprivacylink": {
|
||||
"content": "$2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"termsAndPrivacyNoticeTermsLink": {
|
||||
"message": "使用條款"
|
||||
},
|
||||
"termsAndPrivacyNoticyPrivacyLink": {
|
||||
"message": "隱私權保護政策"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
/** For use with addEventListener, assures that any events have event.isTrusted set to true
|
||||
https://developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted
|
||||
Should be applied *inside* catcher.watchFunction
|
||||
*/
|
||||
this.assertIsTrusted = function assertIsTrusted(handlerFunction) {
|
||||
return function (event) {
|
||||
if (! event) {
|
||||
let exc = new Error("assertIsTrusted did not get an event");
|
||||
exc.noPopup = true;
|
||||
throw exc;
|
||||
}
|
||||
if (! event.isTrusted) {
|
||||
let exc = new Error(`Received untrusted event (type: ${event.type})`);
|
||||
exc.noPopup = true;
|
||||
throw exc;
|
||||
}
|
||||
return handlerFunction.call(this, event);
|
||||
};
|
||||
}
|
||||
null;
|
|
@ -0,0 +1,81 @@
|
|||
/* globals main, auth, catcher, deviceInfo, communication, log */
|
||||
|
||||
"use strict";
|
||||
|
||||
this.analytics = (function () {
|
||||
let exports = {};
|
||||
|
||||
let telemetryPrefKnown = false;
|
||||
let telemetryPref;
|
||||
|
||||
exports.sendEvent = function (action, label, options) {
|
||||
let eventCategory = "addon";
|
||||
if (! telemetryPrefKnown) {
|
||||
log.warn("sendEvent called before we were able to refresh");
|
||||
return Promise.resolve();
|
||||
}
|
||||
if (! telemetryPref) {
|
||||
log.info(`Cancelled sendEvent ${eventCategory}/${action}/${label || 'none'} ${JSON.stringify(options)}`);
|
||||
return Promise.resolve();
|
||||
}
|
||||
if (typeof label == "object" && (! options)) {
|
||||
options = label;
|
||||
label = undefined;
|
||||
}
|
||||
options = options || {};
|
||||
let di = deviceInfo();
|
||||
return new Promise((resolve, reject) => {
|
||||
let url = main.getBackend() + "/event";
|
||||
let req = new XMLHttpRequest();
|
||||
req.open("POST", url);
|
||||
req.setRequestHeader("content-type", "application/json");
|
||||
req.onload = catcher.watchFunction(() => {
|
||||
if (req.status >= 300) {
|
||||
let exc = new Error("Bad response from POST /event");
|
||||
exc.status = req.status;
|
||||
exc.statusText = req.statusText;
|
||||
reject(exc);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
options.applicationName = di.appName;
|
||||
options.applicationVersion = di.addonVersion;
|
||||
let abTests = auth.getAbTests();
|
||||
for (let [gaField, value] of Object.entries(abTests)) {
|
||||
options[gaField] = value;
|
||||
}
|
||||
log.info(`sendEvent ${eventCategory}/${action}/${label || 'none'} ${JSON.stringify(options)}`);
|
||||
req.send(JSON.stringify({
|
||||
deviceId: auth.getDeviceId(),
|
||||
event: eventCategory,
|
||||
action,
|
||||
label,
|
||||
options
|
||||
}));
|
||||
});
|
||||
};
|
||||
|
||||
exports.refreshTelemetryPref = function () {
|
||||
return communication.sendToBootstrap("getTelemetryPref").then((result) => {
|
||||
telemetryPrefKnown = true;
|
||||
if (result === communication.NO_BOOTSTRAP) {
|
||||
telemetryPref = true;
|
||||
} else {
|
||||
telemetryPref = result;
|
||||
}
|
||||
}, (error) => {
|
||||
// If there's an error reading the pref, we should assume that we shouldn't send data
|
||||
telemetryPrefKnown = true;
|
||||
telemetryPref = false;
|
||||
throw error;
|
||||
});
|
||||
};
|
||||
|
||||
exports.getTelemetryPrefSync = function() {
|
||||
catcher.watchPromise(exports.refreshTelemetryPref());
|
||||
return !!telemetryPref;
|
||||
};
|
||||
|
||||
return exports;
|
||||
})();
|
|
@ -0,0 +1,216 @@
|
|||
/* globals browser, log */
|
||||
/* globals main, makeUuid, deviceInfo, analytics, catcher, buildSettings, communication */
|
||||
|
||||
"use strict";
|
||||
|
||||
this.auth = (function () {
|
||||
let exports = {};
|
||||
|
||||
let registrationInfo;
|
||||
let initialized = false;
|
||||
let authHeader = null;
|
||||
let sentryPublicDSN = null;
|
||||
let abTests = {};
|
||||
|
||||
catcher.watchPromise(browser.storage.local.get(["registrationInfo", "abTests"]).then((result) => {
|
||||
if (result.abTests) {
|
||||
abTests = result.abTests;
|
||||
}
|
||||
if (result.registrationInfo) {
|
||||
registrationInfo = result.registrationInfo;
|
||||
} else {
|
||||
registrationInfo = generateRegistrationInfo();
|
||||
log.info("Generating new device authentication ID", registrationInfo);
|
||||
return browser.storage.local.set({registrationInfo});
|
||||
}
|
||||
}));
|
||||
|
||||
exports.getDeviceId = function () {
|
||||
return registrationInfo && registrationInfo.deviceId;
|
||||
};
|
||||
|
||||
function generateRegistrationInfo() {
|
||||
let info = {
|
||||
deviceId: `anon${makeUuid()}`,
|
||||
secret: makeUuid(),
|
||||
registered: false
|
||||
};
|
||||
return info;
|
||||
}
|
||||
|
||||
function register() {
|
||||
return new Promise((resolve, reject) => {
|
||||
let registerUrl = main.getBackend() + "/api/register";
|
||||
// TODO: replace xhr with Fetch #2261
|
||||
let req = new XMLHttpRequest();
|
||||
req.open("POST", registerUrl);
|
||||
req.setRequestHeader("content-type", "application/json");
|
||||
req.onload = catcher.watchFunction(() => {
|
||||
if (req.status == 200) {
|
||||
log.info("Registered login");
|
||||
initialized = true;
|
||||
saveAuthInfo(JSON.parse(req.responseText));
|
||||
resolve(true);
|
||||
analytics.sendEvent("registered");
|
||||
} else {
|
||||
analytics.sendEvent("register-failed", `bad-response-${req.status}`);
|
||||
log.warn("Error in response:", req.responseText);
|
||||
let exc = new Error("Bad response: " + req.status);
|
||||
exc.popupMessage = "LOGIN_ERROR";
|
||||
reject(exc);
|
||||
}
|
||||
});
|
||||
req.onerror = catcher.watchFunction(() => {
|
||||
analytics.sendEvent("register-failed", "connection-error");
|
||||
let exc = new Error("Error contacting server");
|
||||
exc.popupMessage = "LOGIN_CONNECTION_ERROR";
|
||||
reject(exc);
|
||||
});
|
||||
req.send(JSON.stringify({
|
||||
deviceId: registrationInfo.deviceId,
|
||||
secret: registrationInfo.secret,
|
||||
deviceInfo: JSON.stringify(deviceInfo())
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
function login(options) {
|
||||
let { ownershipCheck, noRegister } = options || {};
|
||||
return new Promise((resolve, reject) => {
|
||||
let loginUrl = main.getBackend() + "/api/login";
|
||||
// TODO: replace xhr with Fetch #2261
|
||||
let req = new XMLHttpRequest();
|
||||
req.open("POST", loginUrl);
|
||||
req.onload = catcher.watchFunction(() => {
|
||||
if (req.status == 404) {
|
||||
if (noRegister) {
|
||||
resolve(false);
|
||||
} else {
|
||||
resolve(register());
|
||||
}
|
||||
} else if (req.status >= 300) {
|
||||
log.warn("Error in response:", req.responseText);
|
||||
let exc = new Error("Could not log in: " + req.status);
|
||||
exc.popupMessage = "LOGIN_ERROR";
|
||||
analytics.sendEvent("login-failed", `bad-response-${req.status}`);
|
||||
reject(exc);
|
||||
} else if (req.status === 0) {
|
||||
let error = new Error("Could not log in, server unavailable");
|
||||
error.popupMessage = "LOGIN_CONNECTION_ERROR";
|
||||
analytics.sendEvent("login-failed", "connection-error");
|
||||
reject(error);
|
||||
} else {
|
||||
initialized = true;
|
||||
let jsonResponse = JSON.parse(req.responseText);
|
||||
log.info("Screenshots logged in");
|
||||
analytics.sendEvent("login");
|
||||
saveAuthInfo(jsonResponse);
|
||||
if (ownershipCheck) {
|
||||
resolve({isOwner: jsonResponse.isOwner});
|
||||
} else {
|
||||
resolve(true);
|
||||
}
|
||||
}
|
||||
});
|
||||
req.onerror = catcher.watchFunction(() => {
|
||||
analytics.sendEvent("login-failed", "connection-error");
|
||||
let exc = new Error("Connection failed");
|
||||
exc.url = loginUrl;
|
||||
exc.popupMessage = "CONNECTION_ERROR";
|
||||
reject(exc);
|
||||
});
|
||||
req.setRequestHeader("content-type", "application/json");
|
||||
req.send(JSON.stringify({
|
||||
deviceId: registrationInfo.deviceId,
|
||||
secret: registrationInfo.secret,
|
||||
deviceInfo: JSON.stringify(deviceInfo()),
|
||||
ownershipCheck
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
function saveAuthInfo(responseJson) {
|
||||
if (responseJson.sentryPublicDSN) {
|
||||
sentryPublicDSN = responseJson.sentryPublicDSN;
|
||||
}
|
||||
if (responseJson.authHeader) {
|
||||
authHeader = responseJson.authHeader;
|
||||
if (!registrationInfo.registered) {
|
||||
registrationInfo.registered = true;
|
||||
catcher.watchPromise(browser.storage.local.set({registrationInfo}));
|
||||
}
|
||||
}
|
||||
if (responseJson.abTests) {
|
||||
abTests = responseJson.abTests;
|
||||
catcher.watchPromise(browser.storage.local.set({abTests}));
|
||||
}
|
||||
}
|
||||
|
||||
exports.getDeviceId = function () {
|
||||
return registrationInfo.deviceId;
|
||||
};
|
||||
|
||||
exports.authHeaders = function () {
|
||||
let initPromise = Promise.resolve();
|
||||
if (! initialized) {
|
||||
initPromise = login();
|
||||
}
|
||||
return initPromise.then(() => {
|
||||
if (authHeader) {
|
||||
return {"x-screenshots-auth": authHeader};
|
||||
} else {
|
||||
log.warn("No auth header available");
|
||||
return {};
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
exports.getSentryPublicDSN = function () {
|
||||
return sentryPublicDSN || buildSettings.defaultSentryDsn;
|
||||
};
|
||||
|
||||
exports.getAbTests = function () {
|
||||
return abTests;
|
||||
};
|
||||
|
||||
exports.isRegistered = function () {
|
||||
return registrationInfo.registered;
|
||||
};
|
||||
|
||||
exports.setDeviceInfoFromOldAddon = function (newDeviceInfo) {
|
||||
if (! (newDeviceInfo.deviceId && newDeviceInfo.secret)) {
|
||||
throw new Error("Bad deviceInfo");
|
||||
}
|
||||
if (registrationInfo.deviceId === newDeviceInfo.deviceId &&
|
||||
registrationInfo.secret === newDeviceInfo.secret) {
|
||||
// Probably we already imported the information
|
||||
return Promise.resolve(false);
|
||||
}
|
||||
registrationInfo = {
|
||||
deviceId: newDeviceInfo.deviceId,
|
||||
secret: newDeviceInfo.secret,
|
||||
registered: true
|
||||
};
|
||||
initialized = false;
|
||||
return browser.storage.local.set({registrationInfo}).then(() => {
|
||||
return true;
|
||||
});
|
||||
};
|
||||
|
||||
communication.register("getAuthInfo", (sender, ownershipCheck) => {
|
||||
let info = registrationInfo;
|
||||
let done = Promise.resolve();
|
||||
if (info.registered) {
|
||||
done = login({ownershipCheck}).then((result) => {
|
||||
if (result && result.isOwner) {
|
||||
info.isOwner = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
return done.then(() => {
|
||||
return info;
|
||||
});
|
||||
});
|
||||
|
||||
return exports;
|
||||
})();
|
|
@ -0,0 +1,80 @@
|
|||
/* globals browser, catcher, log */
|
||||
|
||||
"use strict";
|
||||
|
||||
this.communication = (function () {
|
||||
let exports = {};
|
||||
|
||||
let registeredFunctions = {};
|
||||
|
||||
browser.runtime.onMessage.addListener(catcher.watchFunction((req, sender, sendResponse) => {
|
||||
if (! (req.funcName in registeredFunctions)) {
|
||||
log.error(`Received unknown internal message type ${req.funcName}`);
|
||||
sendResponse({type: "error", name: "Unknown message type"});
|
||||
return;
|
||||
}
|
||||
if (! Array.isArray(req.args)) {
|
||||
log.error("Received message with no .args list");
|
||||
sendResponse({type: "error", name: "No .args"});
|
||||
return;
|
||||
}
|
||||
let func = registeredFunctions[req.funcName];
|
||||
let result;
|
||||
try {
|
||||
req.args.unshift(sender);
|
||||
result = func.apply(null, req.args);
|
||||
} catch (e) {
|
||||
log.error(`Error in ${req.funcName}:`, e, e.stack);
|
||||
// FIXME: should consider using makeError from catcher here:
|
||||
sendResponse({type: "error", message: e+""});
|
||||
return;
|
||||
}
|
||||
if (result && result.then) {
|
||||
result.then((concreteResult) => {
|
||||
sendResponse({type: "success", value: concreteResult});
|
||||
}).catch((errorResult) => {
|
||||
log.error(`Promise error in ${req.funcName}:`, errorResult, errorResult && errorResult.stack);
|
||||
sendResponse({type: "error", message: errorResult+""});
|
||||
});
|
||||
return true;
|
||||
} else {
|
||||
sendResponse({type: "success", value: result});
|
||||
}
|
||||
}));
|
||||
|
||||
exports.register = function (name, func) {
|
||||
registeredFunctions[name] = func;
|
||||
};
|
||||
|
||||
/** Send a message to bootstrap.js
|
||||
Technically any worker can listen to this. If the bootstrap wrapper is not in place, then this
|
||||
will *not* fail, and will return a value of exports.NO_BOOTSTRAP */
|
||||
exports.sendToBootstrap = function (funcName, ...args) {
|
||||
return browser.runtime.sendMessage({funcName, args}).then((result) => {
|
||||
if (result.type === "success") {
|
||||
return result.value;
|
||||
} else {
|
||||
throw new Error(`Error in ${funcName}: ${result.name || 'unknown'}`);
|
||||
}
|
||||
}, (error) => {
|
||||
if (isBootstrapMissingError(error)) {
|
||||
return exports.NO_BOOTSTRAP;
|
||||
}
|
||||
throw error;
|
||||
});
|
||||
};
|
||||
|
||||
function isBootstrapMissingError(error) {
|
||||
if (! error) {
|
||||
return false;
|
||||
}
|
||||
return error.errorCode === "NO_RECEIVING_END" ||
|
||||
(! error.errorCode && error.message === "Could not establish connection. Receiving end does not exist.");
|
||||
}
|
||||
|
||||
|
||||
// A singleton/sentinal (with a name):
|
||||
exports.NO_BOOTSTRAP = {name: "communication.NO_BOOTSTRAP"};
|
||||
|
||||
return exports;
|
||||
})();
|
|
@ -0,0 +1,34 @@
|
|||
/* globals browser, catcher */
|
||||
|
||||
"use strict";
|
||||
|
||||
this.deviceInfo = (function () {
|
||||
let manifest = browser.runtime.getManifest();
|
||||
|
||||
let platformInfo = {};
|
||||
catcher.watchPromise(browser.runtime.getPlatformInfo().then((info) => {
|
||||
platformInfo = info;
|
||||
}));
|
||||
|
||||
return function deviceInfo() {
|
||||
let match = navigator.userAgent.match(/Chrom(?:e|ium)\/([0-9\.]+)/);
|
||||
let chromeVersion = match ? match[1] : null;
|
||||
match = navigator.userAgent.match(/Firefox\/([0-9\.]+)/);
|
||||
let firefoxVersion = match ? match[1] : null;
|
||||
let appName = chromeVersion ? "chrome" : "firefox";
|
||||
|
||||
return {
|
||||
addonVersion: manifest.version,
|
||||
platform: platformInfo.os,
|
||||
architecture: platformInfo.arch,
|
||||
version: firefoxVersion || chromeVersion,
|
||||
// These don't seem to apply to Chrome:
|
||||
//build: system.build,
|
||||
//platformVersion: system.platformVersion,
|
||||
userAgent: navigator.userAgent,
|
||||
appVendor: appName,
|
||||
appName
|
||||
};
|
||||
};
|
||||
|
||||
})();
|
|
@ -0,0 +1,276 @@
|
|||
/* globals browser, console, XMLHttpRequest, Image, document, setTimeout, navigator */
|
||||
/* globals selectorLoader, analytics, communication, catcher, makeUuid, auth, senderror */
|
||||
|
||||
"use strict";
|
||||
|
||||
this.main = (function () {
|
||||
let exports = {};
|
||||
|
||||
const pasteSymbol = (window.navigator.platform.match(/Mac/i)) ? "\u2318" : "Ctrl";
|
||||
const { sendEvent } = analytics;
|
||||
|
||||
let manifest = browser.runtime.getManifest();
|
||||
let backend;
|
||||
|
||||
let hasSeenOnboarding;
|
||||
|
||||
browser.storage.local.get(["hasSeenOnboarding"]).then((result) => {
|
||||
hasSeenOnboarding = !! result.hasSeenOnboarding;
|
||||
if (! hasSeenOnboarding) {
|
||||
setIconActive(false, null);
|
||||
// Note that the branded name 'Firefox Screenshots' is not localized:
|
||||
browser.browserAction.setTitle({
|
||||
title: "Firefox Screenshots"
|
||||
});
|
||||
}
|
||||
}).catch((error) => {
|
||||
log.error("Error getting hasSeenOnboarding:", error);
|
||||
});
|
||||
|
||||
exports.setBackend = function (newBackend) {
|
||||
backend = newBackend;
|
||||
backend = backend.replace(/\/*$/, "");
|
||||
};
|
||||
|
||||
exports.getBackend = function () {
|
||||
return backend;
|
||||
};
|
||||
|
||||
communication.register("getBackend", () => {
|
||||
return backend;
|
||||
});
|
||||
|
||||
function getOnboardingUrl() {
|
||||
return backend + "/#hello";
|
||||
}
|
||||
|
||||
for (let permission of manifest.permissions) {
|
||||
if (/^https?:\/\//.test(permission)) {
|
||||
exports.setBackend(permission);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function setIconActive(active, tabId) {
|
||||
let path = active ? "icons/icon-highlight-38.png" : "icons/icon-38.png";
|
||||
if ((! hasSeenOnboarding) && ! active) {
|
||||
path = "icons/icon-starred-38.png";
|
||||
}
|
||||
browser.browserAction.setIcon({path, tabId});
|
||||
}
|
||||
|
||||
function toggleSelector(tab) {
|
||||
return analytics.refreshTelemetryPref()
|
||||
.then(() => selectorLoader.toggle(tab.id, hasSeenOnboarding))
|
||||
.then(active => {
|
||||
setIconActive(active, tab.id);
|
||||
return active;
|
||||
})
|
||||
.catch((error) => {
|
||||
error.popupMessage = "UNSHOOTABLE_PAGE";
|
||||
throw error;
|
||||
});
|
||||
}
|
||||
|
||||
function shouldOpenMyShots(url) {
|
||||
return /^about:(?:newtab|blank)/i.test(url) || /^resource:\/\/activity-streams\//i.test(url);
|
||||
}
|
||||
|
||||
browser.browserAction.onClicked.addListener(catcher.watchFunction((tab) => {
|
||||
if (shouldOpenMyShots(tab.url)) {
|
||||
if (! hasSeenOnboarding) {
|
||||
catcher.watchPromise(analytics.refreshTelemetryPref().then(() => {
|
||||
sendEvent("goto-onboarding", "selection-button");
|
||||
return forceOnboarding();
|
||||
}));
|
||||
return;
|
||||
}
|
||||
catcher.watchPromise(analytics.refreshTelemetryPref().then(() => {
|
||||
sendEvent("goto-myshots", "about-newtab");
|
||||
}));
|
||||
catcher.watchPromise(
|
||||
auth.authHeaders()
|
||||
.then(() => browser.tabs.update({url: backend + "/shots"})));
|
||||
} else {
|
||||
catcher.watchPromise(
|
||||
toggleSelector(tab)
|
||||
.then(active => {
|
||||
const event = active ? "start-shot" : "cancel-shot";
|
||||
sendEvent(event, "toolbar-button");
|
||||
}, (error) => {
|
||||
if ((! hasSeenOnboarding) && error.popupMessage == "UNSHOOTABLE_PAGE") {
|
||||
sendEvent("goto-onboarding", "selection-button");
|
||||
return forceOnboarding();
|
||||
}
|
||||
throw error;
|
||||
}));
|
||||
}
|
||||
}));
|
||||
|
||||
function forceOnboarding() {
|
||||
return browser.tabs.create({url: getOnboardingUrl()}).then((tab) => {
|
||||
return toggleSelector(tab);
|
||||
});
|
||||
}
|
||||
|
||||
browser.contextMenus.create({
|
||||
id: "create-screenshot",
|
||||
title: browser.i18n.getMessage("contextMenuLabel"),
|
||||
contexts: ["page"],
|
||||
documentUrlPatterns: ["<all_urls>"]
|
||||
}, () => {
|
||||
// Note: unlike most browser.* functions this one does not return a promise
|
||||
if (browser.runtime.lastError) {
|
||||
catcher.unhandled(new Error(browser.runtime.lastError.message));
|
||||
}
|
||||
});
|
||||
|
||||
browser.contextMenus.onClicked.addListener(catcher.watchFunction((info, tab) => {
|
||||
if (! tab) {
|
||||
// Not in a page/tab context, ignore
|
||||
return;
|
||||
}
|
||||
catcher.watchPromise(
|
||||
toggleSelector(tab)
|
||||
.then(() => sendEvent("start-shot", "context-menu")));
|
||||
}));
|
||||
|
||||
function urlEnabled(url) {
|
||||
if (shouldOpenMyShots(url)) {
|
||||
return true;
|
||||
}
|
||||
if (isShotOrMyShotPage(url) || /^(?:about|data|moz-extension):/i.test(url) || isBlacklistedUrl(url)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function isShotOrMyShotPage(url) {
|
||||
// It's okay to take a shot of any pages except shot pages and My Shots
|
||||
if (! url.startsWith(backend)) {
|
||||
return false;
|
||||
}
|
||||
let path = url.substr(backend.length).replace(/^\/*/, "").replace(/#.*/, "").replace(/\?.*/, "");
|
||||
if (path == "shots") {
|
||||
return true;
|
||||
}
|
||||
if (/^[^/]+\/[^/]+$/.test(url)) {
|
||||
// Blocks {:id}/{:domain}, but not /, /privacy, etc
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function isBlacklistedUrl(url) {
|
||||
// These specific domains are not allowed for general WebExtension permission reasons
|
||||
// Discussion: https://bugzilla.mozilla.org/show_bug.cgi?id=1310082
|
||||
// List of domains copied from: https://dxr.mozilla.org/mozilla-central/source/browser/app/permissions#18-19
|
||||
// Note we disable it here to be informative, the security check is done in WebExtension code
|
||||
const badDomains = ["addons.mozilla.org", "testpilot.firefox.com"];
|
||||
let domain = url.replace(/^https?:\/\//i, "");
|
||||
domain = domain.replace(/\/.*/, "").replace(/:.*/, "");
|
||||
domain = domain.toLowerCase();
|
||||
return badDomains.includes(domain);
|
||||
}
|
||||
|
||||
browser.tabs.onUpdated.addListener(catcher.watchFunction((id, info, tab) => {
|
||||
if (info.url && tab.active) {
|
||||
if (urlEnabled(info.url)) {
|
||||
browser.browserAction.enable(tab.id);
|
||||
} else if (hasSeenOnboarding) {
|
||||
browser.browserAction.disable(tab.id);
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
browser.tabs.onActivated.addListener(catcher.watchFunction(({tabId, windowId}) => {
|
||||
catcher.watchPromise(browser.tabs.get(tabId).then((tab) => {
|
||||
// onActivated may fire before the url is set
|
||||
if (!tab.url) {
|
||||
return;
|
||||
}
|
||||
if (urlEnabled(tab.url)) {
|
||||
browser.browserAction.enable(tabId);
|
||||
} else if (hasSeenOnboarding) {
|
||||
browser.browserAction.disable(tabId);
|
||||
}
|
||||
}));
|
||||
}));
|
||||
|
||||
communication.register("sendEvent", (sender, ...args) => {
|
||||
catcher.watchPromise(sendEvent(...args));
|
||||
// We don't wait for it to complete:
|
||||
return null;
|
||||
});
|
||||
|
||||
communication.register("openMyShots", (sender) => {
|
||||
return catcher.watchPromise(
|
||||
auth.authHeaders()
|
||||
.then(() => browser.tabs.create({url: backend + "/shots"})));
|
||||
});
|
||||
|
||||
communication.register("openShot", (sender, {url, copied}) => {
|
||||
if (copied) {
|
||||
const id = makeUuid();
|
||||
return browser.notifications.create(id, {
|
||||
type: "basic",
|
||||
iconUrl: "../icons/copy.png",
|
||||
title: browser.i18n.getMessage("notificationLinkCopiedTitle"),
|
||||
message: browser.i18n.getMessage("notificationLinkCopiedDetails", pasteSymbol)
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
communication.register("downloadShot", (sender, info) => {
|
||||
// 'data:' urls don't work directly, let's use a Blob
|
||||
// see http://stackoverflow.com/questions/40269862/save-data-uri-as-file-using-downloads-download-api
|
||||
const binary = atob(info.url.split(',')[1]); // just the base64 data
|
||||
const data = Uint8Array.from(binary, char => char.charCodeAt(0))
|
||||
const blob = new Blob([data], {type: "image/png"})
|
||||
return browser.downloads.download({
|
||||
url: URL.createObjectURL(blob),
|
||||
filename: info.filename
|
||||
});
|
||||
});
|
||||
|
||||
communication.register("closeSelector", (sender) => {
|
||||
setIconActive(false, sender.tab.id)
|
||||
});
|
||||
|
||||
catcher.watchPromise(communication.sendToBootstrap("getOldDeviceInfo").then((deviceInfo) => {
|
||||
if (deviceInfo === communication.NO_BOOTSTRAP || ! deviceInfo) {
|
||||
return;
|
||||
}
|
||||
deviceInfo = JSON.parse(deviceInfo);
|
||||
if (deviceInfo && typeof deviceInfo == "object") {
|
||||
return auth.setDeviceInfoFromOldAddon(deviceInfo).then((updated) => {
|
||||
if (updated === communication.NO_BOOTSTRAP) {
|
||||
throw new Error("bootstrap.js disappeared unexpectedly");
|
||||
}
|
||||
if (updated) {
|
||||
return communication.sendToBootstrap("removeOldAddon");
|
||||
}
|
||||
});
|
||||
}
|
||||
}));
|
||||
|
||||
communication.register("hasSeenOnboarding", () => {
|
||||
hasSeenOnboarding = true;
|
||||
catcher.watchPromise(browser.storage.local.set({hasSeenOnboarding}));
|
||||
setIconActive(false, null);
|
||||
browser.browserAction.setTitle({
|
||||
title: browser.i18n.getMessage("contextMenuLabel")
|
||||
});
|
||||
});
|
||||
|
||||
communication.register("abortFrameset", () => {
|
||||
sendEvent("abort-start-shot", "frame-page");
|
||||
// Note, we only show the error but don't report it, as we know that we can't
|
||||
// take shots of these pages:
|
||||
senderror.showError({
|
||||
popupMessage: "UNSHOOTABLE_PAGE"
|
||||
});
|
||||
});
|
||||
|
||||
return exports;
|
||||
})();
|
|
@ -0,0 +1,114 @@
|
|||
/* globals browser, catcher, log */
|
||||
|
||||
"use strict";
|
||||
|
||||
this.selectorLoader = (function () {
|
||||
const exports = {};
|
||||
|
||||
// These modules are loaded in order, first standardScripts, then optionally onboardingScripts, and then selectorScripts
|
||||
// The order is important due to dependencies
|
||||
const standardScripts = [
|
||||
"build/buildSettings.js",
|
||||
"log.js",
|
||||
"catcher.js",
|
||||
"assertIsTrusted.js",
|
||||
"background/selectorLoader.js",
|
||||
"selector/callBackground.js",
|
||||
"selector/util.js"
|
||||
];
|
||||
|
||||
const selectorScripts = [
|
||||
"clipboard.js",
|
||||
"makeUuid.js",
|
||||
"build/shot.js",
|
||||
"randomString.js",
|
||||
"domainFromUrl.js",
|
||||
"build/inlineSelectionCss.js",
|
||||
"selector/documentMetadata.js",
|
||||
"selector/ui.js",
|
||||
"selector/shooter.js",
|
||||
"selector/uicontrol.js"
|
||||
];
|
||||
|
||||
// These are loaded on request (by the selector worker) to activate the onboarding:
|
||||
const onboardingScripts = [
|
||||
"build/onboardingCss.js",
|
||||
"build/onboardingHtml.js",
|
||||
"onboarding/slides.js"
|
||||
];
|
||||
|
||||
exports.unloadIfLoaded = function (tabId) {
|
||||
return browser.tabs.executeScript(tabId, {
|
||||
code: "this.selectorLoader && this.selectorLoader.unloadModules()",
|
||||
runAt: "document_start"
|
||||
}).then(result => {
|
||||
return result && result[0];
|
||||
});
|
||||
};
|
||||
|
||||
exports.loadModules = function (tabId, hasSeenOnboarding) {
|
||||
if (hasSeenOnboarding) {
|
||||
return executeModules(tabId, standardScripts.concat(selectorScripts));
|
||||
} else {
|
||||
return executeModules(tabId, standardScripts.concat(onboardingScripts).concat(selectorScripts));
|
||||
}
|
||||
};
|
||||
|
||||
function executeModules(tabId, scripts) {
|
||||
let lastPromise = Promise.resolve(null);
|
||||
scripts.forEach((file) => {
|
||||
lastPromise = lastPromise.then(() => {
|
||||
return browser.tabs.executeScript(tabId, {
|
||||
file,
|
||||
runAt: "document_end"
|
||||
})
|
||||
.catch((error) => {
|
||||
log.error("error in script:", file, error);
|
||||
error.scriptName = file;
|
||||
throw error;
|
||||
})
|
||||
})
|
||||
});
|
||||
return lastPromise.then(() => {
|
||||
log.debug("finished loading scripts:", scripts.join(" "));
|
||||
},
|
||||
(error) => {
|
||||
exports.unloadIfLoaded(tabId);
|
||||
catcher.unhandled(error);
|
||||
throw error;
|
||||
});
|
||||
}
|
||||
|
||||
exports.unloadModules = function () {
|
||||
const watchFunction = catcher.watchFunction;
|
||||
let allScripts = standardScripts.concat(onboardingScripts).concat(selectorScripts);
|
||||
const moduleNames = allScripts.map((filename) =>
|
||||
filename.replace(/^.*\//, "").replace(/\.js$/, ""));
|
||||
moduleNames.reverse();
|
||||
for (let moduleName of moduleNames) {
|
||||
let moduleObj = global[moduleName];
|
||||
if (moduleObj && moduleObj.unload) {
|
||||
try {
|
||||
watchFunction(moduleObj.unload)();
|
||||
} catch (e) {
|
||||
// ignore (watchFunction handles it)
|
||||
}
|
||||
}
|
||||
delete global[moduleName];
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
exports.toggle = function (tabId, hasSeenOnboarding) {
|
||||
return exports.unloadIfLoaded(tabId)
|
||||
.then(wasLoaded => {
|
||||
if (!wasLoaded) {
|
||||
exports.loadModules(tabId, hasSeenOnboarding);
|
||||
}
|
||||
return !wasLoaded;
|
||||
})
|
||||
};
|
||||
|
||||
return exports;
|
||||
})();
|
||||
null;
|
|
@ -0,0 +1,117 @@
|
|||
/* globals analytics, browser, communication, makeUuid, Raven, catcher, auth, log */
|
||||
|
||||
"use strict";
|
||||
|
||||
this.senderror = (function () {
|
||||
let exports = {};
|
||||
|
||||
// Do not show an error more than every ERROR_TIME_LIMIT milliseconds:
|
||||
const ERROR_TIME_LIMIT = 3000;
|
||||
|
||||
let messages = {
|
||||
REQUEST_ERROR: {
|
||||
title: browser.i18n.getMessage("requestErrorTitle"),
|
||||
info: browser.i18n.getMessage("requestErrorDetails")
|
||||
},
|
||||
CONNECTION_ERROR: {
|
||||
title: browser.i18n.getMessage("connectionErrorTitle"),
|
||||
info: browser.i18n.getMessage("connectionErrorDetails")
|
||||
},
|
||||
LOGIN_ERROR: {
|
||||
title: browser.i18n.getMessage("requestErrorTitle"),
|
||||
info: browser.i18n.getMessage("loginErrorDetails")
|
||||
},
|
||||
LOGIN_CONNECTION_ERROR: {
|
||||
title: browser.i18n.getMessage("connectionErrorTitle"),
|
||||
info: browser.i18n.getMessage("connectionErrorDetails")
|
||||
},
|
||||
UNSHOOTABLE_PAGE: {
|
||||
title: browser.i18n.getMessage("unshootablePageErrorTitle"),
|
||||
info: browser.i18n.getMessage("unshootablePageErrorDetails")
|
||||
},
|
||||
SHOT_PAGE: {
|
||||
title: browser.i18n.getMessage("selfScreenshotErrorTitle")
|
||||
},
|
||||
MY_SHOTS: {
|
||||
title: browser.i18n.getMessage("selfScreenshotErrorTitle")
|
||||
},
|
||||
generic: {
|
||||
title: browser.i18n.getMessage("genericErrorTitle"),
|
||||
info: browser.i18n.getMessage("genericErrorDetails"),
|
||||
showMessage: true
|
||||
}
|
||||
};
|
||||
|
||||
communication.register("reportError", (sender, error) => {
|
||||
catcher.unhandled(error);
|
||||
});
|
||||
|
||||
let lastErrorTime;
|
||||
|
||||
exports.showError = function (error) {
|
||||
if (lastErrorTime && (Date.now() - lastErrorTime) < ERROR_TIME_LIMIT) {
|
||||
return;
|
||||
}
|
||||
lastErrorTime = Date.now();
|
||||
let id = makeUuid();
|
||||
let popupMessage = error.popupMessage || "generic";
|
||||
if (! messages[popupMessage]) {
|
||||
popupMessage = "generic";
|
||||
}
|
||||
let title = messages[popupMessage].title;
|
||||
let message = messages[popupMessage].info || '';
|
||||
let showMessage = messages[popupMessage].showMessage;
|
||||
if (error.message && showMessage) {
|
||||
if (message) {
|
||||
message += "\n" + error.message;
|
||||
} else {
|
||||
message = error.message;
|
||||
}
|
||||
}
|
||||
browser.notifications.create(id, {
|
||||
type: "basic",
|
||||
// FIXME: need iconUrl for an image, see #2239
|
||||
title,
|
||||
message
|
||||
});
|
||||
};
|
||||
|
||||
exports.reportError = function (e) {
|
||||
if (!analytics.getTelemetryPrefSync()) {
|
||||
log.error("Telemetry disabled. Not sending critical error:", e);
|
||||
return;
|
||||
}
|
||||
let dsn = auth.getSentryPublicDSN();
|
||||
if (! dsn) {
|
||||
log.warn("Error:", e);
|
||||
return;
|
||||
}
|
||||
if (! Raven.isSetup()) {
|
||||
Raven.config(dsn).install();
|
||||
}
|
||||
let exception = new Error(e.message);
|
||||
exception.stack = e.multilineStack || e.stack || undefined;
|
||||
let rest = {};
|
||||
for (let attr in e) {
|
||||
if (! ["name", "message", "stack", "multilineStack", "popupMessage", "version", "sentryPublicDSN", "help"].includes(attr)) {
|
||||
rest[attr] = e[attr];
|
||||
}
|
||||
}
|
||||
rest.stack = e.multilineStack || e.stack;
|
||||
Raven.captureException(exception, {
|
||||
logger: 'addon',
|
||||
tags: {version: e.version, category: e.popupMessage},
|
||||
message: exception.message,
|
||||
extra: rest
|
||||
});
|
||||
};
|
||||
|
||||
catcher.registerHandler((errorObj) => {
|
||||
if (! errorObj.noPopup) {
|
||||
exports.showError(errorObj);
|
||||
}
|
||||
exports.reportError(errorObj);
|
||||
});
|
||||
|
||||
return exports;
|
||||
})();
|
|
@ -0,0 +1,128 @@
|
|||
/* globals communication, shot, main, auth, catcher, analytics, browser */
|
||||
|
||||
"use strict";
|
||||
|
||||
this.takeshot = (function () {
|
||||
let exports = {};
|
||||
const Shot = shot.AbstractShot;
|
||||
const { sendEvent } = analytics;
|
||||
|
||||
communication.register("takeShot", catcher.watchFunction((sender, options) => {
|
||||
let { captureType, captureText, scroll, selectedPos, shotId, shot } = options;
|
||||
shot = new Shot(main.getBackend(), shotId, shot);
|
||||
let capturePromise = Promise.resolve();
|
||||
let openedTab;
|
||||
if (! shot.clipNames().length) {
|
||||
// canvas.drawWindow isn't available, so we fall back to captureVisibleTab
|
||||
capturePromise = screenshotPage(selectedPos, scroll).then((dataUrl) => {
|
||||
shot.addClip({
|
||||
createdDate: Date.now(),
|
||||
image: {
|
||||
url: dataUrl,
|
||||
captureType,
|
||||
text: captureText,
|
||||
location: selectedPos,
|
||||
dimensions: {
|
||||
x: selectedPos.right - selectedPos.left,
|
||||
y: selectedPos.bottom - selectedPos.top
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
let shotAbTests = {};
|
||||
let abTests = auth.getAbTests();
|
||||
for (let testName of Object.keys(abTests)) {
|
||||
if (abTests[testName].shotField) {
|
||||
shotAbTests[testName] = abTests[testName].value;
|
||||
}
|
||||
}
|
||||
if (Object.keys(shotAbTests).length) {
|
||||
shot.abTests = shotAbTests;
|
||||
}
|
||||
return catcher.watchPromise(capturePromise.then(() => {
|
||||
return browser.tabs.create({url: shot.creatingUrl})
|
||||
}).then((tab) => {
|
||||
openedTab = tab;
|
||||
return uploadShot(shot);
|
||||
}).then(() => {
|
||||
return browser.tabs.update(openedTab.id, {url: shot.viewUrl});
|
||||
}).then(() => {
|
||||
return shot.viewUrl;
|
||||
}).catch((error) => {
|
||||
browser.tabs.remove(openedTab.id);
|
||||
throw error;
|
||||
}));
|
||||
}));
|
||||
|
||||
communication.register("screenshotPage", (sender, selectedPos, scroll) => {
|
||||
return screenshotPage(selectedPos, scroll);
|
||||
});
|
||||
|
||||
function screenshotPage(pos, scroll) {
|
||||
pos = {
|
||||
top: pos.top - scroll.scrollY,
|
||||
left: pos.left - scroll.scrollX,
|
||||
bottom: pos.bottom - scroll.scrollY,
|
||||
right: pos.right - scroll.scrollX
|
||||
};
|
||||
pos.width = pos.right - pos.left;
|
||||
pos.height = pos.bottom - pos.top;
|
||||
return catcher.watchPromise(browser.tabs.captureVisibleTab(
|
||||
null,
|
||||
{format: "png"}
|
||||
).then((dataUrl) => {
|
||||
let image = new Image();
|
||||
image.src = dataUrl;
|
||||
return new Promise((resolve, reject) => {
|
||||
image.onload = catcher.watchFunction(() => {
|
||||
let xScale = image.width / scroll.innerWidth;
|
||||
let yScale = image.height / scroll.innerHeight;
|
||||
let canvas = document.createElement("canvas");
|
||||
canvas.height = pos.height * yScale;
|
||||
canvas.width = pos.width * xScale;
|
||||
let context = canvas.getContext("2d");
|
||||
context.drawImage(
|
||||
image,
|
||||
pos.left * xScale, pos.top * yScale,
|
||||
pos.width * xScale, pos.height * yScale,
|
||||
0, 0,
|
||||
pos.width * xScale, pos.height * yScale
|
||||
);
|
||||
let result = canvas.toDataURL();
|
||||
resolve(result);
|
||||
});
|
||||
});
|
||||
}));
|
||||
}
|
||||
|
||||
function uploadShot(shot) {
|
||||
return auth.authHeaders().then((headers) => {
|
||||
headers["content-type"] = "application/json";
|
||||
let body = JSON.stringify(shot.asJson());
|
||||
let req = new Request(shot.jsonUrl, {
|
||||
method: "PUT",
|
||||
mode: "cors",
|
||||
headers,
|
||||
body
|
||||
});
|
||||
sendEvent("upload", "started", {eventValue: Math.floor(body.length / 1000)});
|
||||
return fetch(req);
|
||||
}).then((resp) => {
|
||||
if (! resp.ok) {
|
||||
sendEvent("upload-failed", `status-${resp.status}`);
|
||||
let exc = new Error(`Response failed with status ${resp.status}`);
|
||||
exc.popupMessage = "REQUEST_ERROR";
|
||||
throw exc;
|
||||
} else {
|
||||
sendEvent("upload", "success");
|
||||
}
|
||||
}, (error) => {
|
||||
// FIXME: I'm not sure what exceptions we can expect
|
||||
sendEvent("upload-failed", "connection");
|
||||
throw error;
|
||||
});
|
||||
}
|
||||
|
||||
return exports;
|
||||
})();
|
|
@ -0,0 +1 @@
|
|||
<html></html>
|
|
@ -0,0 +1,6 @@
|
|||
window.buildSettings = {
|
||||
defaultSentryDsn: "",
|
||||
logLevel: "" || "warn"
|
||||
};
|
||||
null;
|
||||
|
|
@ -0,0 +1,438 @@
|
|||
/* Created from build/server/static/css/inline-selection.css */
|
||||
window.inlineSelectionCss = `
|
||||
.button, .highlight-button-cancel, .highlight-button-save, .highlight-button-download {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: 0;
|
||||
border-radius: 1px;
|
||||
cursor: pointer;
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
height: 40px;
|
||||
min-width: 40px;
|
||||
outline: none;
|
||||
padding: 0 10px;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
transition: background 150ms;
|
||||
user-select: none;
|
||||
white-space: nowrap; }
|
||||
.button.small, .small.highlight-button-cancel, .small.highlight-button-save, .small.highlight-button-download {
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
padding: 0 8px; }
|
||||
.button.tiny, .tiny.highlight-button-cancel, .tiny.highlight-button-save, .tiny.highlight-button-download {
|
||||
font-size: 12px;
|
||||
height: 22px;
|
||||
line-height: 12px;
|
||||
padding: 2px 6px; }
|
||||
.button.set-width--medium, .set-width--medium.highlight-button-cancel, .set-width--medium.highlight-button-save, .set-width--medium.highlight-button-download {
|
||||
max-width: 200px; }
|
||||
.button.inline, .inline.highlight-button-cancel, .inline.highlight-button-save, .inline.highlight-button-download {
|
||||
display: inline-block; }
|
||||
.button.block-button, .block-button.highlight-button-cancel, .block-button.highlight-button-save, .block-button.highlight-button-download {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: none;
|
||||
border-right: 1px solid rgba(0, 0, 0, 0.1);
|
||||
box-shadow: none;
|
||||
border-radius: 0;
|
||||
height: 100%;
|
||||
line-height: 100%;
|
||||
padding: 0 20px;
|
||||
margin-right: 20px;
|
||||
flex: 0 0 155px; }
|
||||
.button .arrow-icon, .highlight-button-cancel .arrow-icon, .highlight-button-save .arrow-icon, .highlight-button-download .arrow-icon {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
top: 1px;
|
||||
flex: 0 0 18px;
|
||||
height: 16px;
|
||||
opacity: .6;
|
||||
background-image: url(../img/arrow-page-right-16.svg);
|
||||
background-position: right center;
|
||||
background-repeat: no-repeat; }
|
||||
|
||||
.inverse-color-scheme {
|
||||
background: #383E49;
|
||||
color: #FFF; }
|
||||
.inverse-color-scheme a {
|
||||
color: #0996F8; }
|
||||
.inverse-color-scheme .large-icon {
|
||||
filter: invert(100%); }
|
||||
|
||||
.default-color-scheme {
|
||||
background: #f2f2f2;
|
||||
color: #000; }
|
||||
.default-color-scheme a {
|
||||
color: #0996F8; }
|
||||
|
||||
.button.primary, .primary.highlight-button-cancel, .highlight-button-save, .primary.highlight-button-download {
|
||||
background-color: #0996F8;
|
||||
color: #FFF; }
|
||||
.button.primary:hover, .primary.highlight-button-cancel:hover, .highlight-button-save:hover, .primary.highlight-button-download:hover, .button.primary:focus, .primary.highlight-button-cancel:focus, .highlight-button-save:focus, .primary.highlight-button-download:focus {
|
||||
background-color: #0681d7; }
|
||||
.button.primary:active, .primary.highlight-button-cancel:active, .highlight-button-save:active, .primary.highlight-button-download:active {
|
||||
background-color: #0573be; }
|
||||
|
||||
.button.secondary, .highlight-button-cancel, .secondary.highlight-button-save, .highlight-button-download {
|
||||
background: #EDEDED;
|
||||
color: #000; }
|
||||
.button.secondary:hover, .highlight-button-cancel:hover, .secondary.highlight-button-save:hover, .highlight-button-download:hover, .button.secondary:focus, .highlight-button-cancel:focus, .secondary.highlight-button-save:focus, .highlight-button-download:focus {
|
||||
background-color: #dbdbdb; }
|
||||
.button.secondary:active, .highlight-button-cancel:active, .secondary.highlight-button-save:active, .highlight-button-download:active {
|
||||
background-color: #cecece; }
|
||||
|
||||
.button.warning, .warning.highlight-button-cancel, .warning.highlight-button-save, .warning.highlight-button-download {
|
||||
color: #FFF;
|
||||
background: #d92215; }
|
||||
.button.warning:hover, .warning.highlight-button-cancel:hover, .warning.highlight-button-save:hover, .warning.highlight-button-download:hover, .button.warning:focus, .warning.highlight-button-cancel:focus, .warning.highlight-button-save:focus, .warning.highlight-button-download:focus {
|
||||
background: #b81d12; }
|
||||
.button.warning:active, .warning.highlight-button-cancel:active, .warning.highlight-button-save:active, .warning.highlight-button-download:active {
|
||||
background: #a11910; }
|
||||
|
||||
.subtitle-link {
|
||||
color: #0996F8; }
|
||||
|
||||
@keyframes fade-in {
|
||||
0% {
|
||||
opacity: 0; }
|
||||
100% {
|
||||
opacity: 1; } }
|
||||
|
||||
@keyframes pop {
|
||||
0% {
|
||||
transform: scale(1); }
|
||||
97% {
|
||||
transform: scale(1.04); }
|
||||
100% {
|
||||
transform: scale(1); } }
|
||||
|
||||
@keyframes pulse {
|
||||
0% {
|
||||
opacity: .3;
|
||||
transform: scale(1); }
|
||||
70% {
|
||||
opacity: .25;
|
||||
transform: scale(1.04); }
|
||||
100% {
|
||||
opacity: .3;
|
||||
transform: scale(1); } }
|
||||
|
||||
@keyframes slide-left {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: translate3d(160px, 0, 0); }
|
||||
100% {
|
||||
opacity: 1;
|
||||
transform: translate3d(0, 0, 0); } }
|
||||
|
||||
.mover-target {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
pointer-events: auto;
|
||||
position: absolute;
|
||||
z-index: 5; }
|
||||
|
||||
.highlight,
|
||||
.mover-target {
|
||||
background-color: transparent;
|
||||
background-image: none; }
|
||||
|
||||
.mover-target,
|
||||
.bghighlight {
|
||||
border: 0; }
|
||||
|
||||
.hover-highlight {
|
||||
animation: fade-in 125ms forwards cubic-bezier(0.07, 0.95, 0, 1);
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
border-radius: 1px;
|
||||
pointer-events: none;
|
||||
position: absolute;
|
||||
z-index: 10000000000; }
|
||||
|
||||
.mover-target.direction-topLeft {
|
||||
cursor: nwse-resize;
|
||||
height: 60px;
|
||||
left: -30px;
|
||||
top: -30px;
|
||||
width: 60px; }
|
||||
|
||||
.mover-target.direction-top {
|
||||
cursor: ns-resize;
|
||||
height: 60px;
|
||||
left: 0;
|
||||
top: -30px;
|
||||
width: 100%;
|
||||
z-index: 4; }
|
||||
|
||||
.mover-target.direction-topRight {
|
||||
cursor: nesw-resize;
|
||||
height: 60px;
|
||||
right: -30px;
|
||||
top: -30px;
|
||||
width: 60px; }
|
||||
|
||||
.mover-target.direction-left {
|
||||
cursor: ew-resize;
|
||||
height: 100%;
|
||||
left: -30px;
|
||||
top: 0;
|
||||
width: 60px;
|
||||
z-index: 4; }
|
||||
|
||||
.mover-target.direction-right {
|
||||
cursor: ew-resize;
|
||||
height: 100%;
|
||||
right: -30px;
|
||||
top: 0;
|
||||
width: 60px;
|
||||
z-index: 4; }
|
||||
|
||||
.mover-target.direction-bottomLeft {
|
||||
bottom: -30px;
|
||||
cursor: nesw-resize;
|
||||
height: 60px;
|
||||
left: -30px;
|
||||
width: 60px; }
|
||||
|
||||
.mover-target.direction-bottom {
|
||||
bottom: -30px;
|
||||
cursor: ns-resize;
|
||||
height: 60px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
z-index: 4; }
|
||||
|
||||
.mover-target.direction-bottomRight {
|
||||
bottom: -30px;
|
||||
cursor: nwse-resize;
|
||||
height: 60px;
|
||||
right: -30px;
|
||||
width: 60px; }
|
||||
|
||||
.mover-target:hover .mover {
|
||||
transform: scale(1.05); }
|
||||
|
||||
.mover {
|
||||
background-color: #FFF;
|
||||
border-radius: 50%;
|
||||
box-shadow: 0 0 4px rgba(0, 0, 0, 0.5);
|
||||
height: 16px;
|
||||
opacity: 1;
|
||||
position: relative;
|
||||
transition: transform 125ms cubic-bezier(0.07, 0.95, 0, 1);
|
||||
width: 16px; }
|
||||
.small-selection .mover {
|
||||
height: 10px;
|
||||
width: 10px; }
|
||||
|
||||
.direction-topLeft .mover,
|
||||
.direction-left .mover,
|
||||
.direction-bottomLeft .mover {
|
||||
left: -1px; }
|
||||
|
||||
.direction-topLeft .mover,
|
||||
.direction-top .mover,
|
||||
.direction-topRight .mover {
|
||||
top: -1px; }
|
||||
|
||||
.direction-topRight .mover,
|
||||
.direction-right .mover,
|
||||
.direction-bottomRight .mover {
|
||||
right: -1px; }
|
||||
|
||||
.direction-bottomRight .mover,
|
||||
.direction-bottom .mover,
|
||||
.direction-bottomLeft .mover {
|
||||
bottom: -1px; }
|
||||
|
||||
.bghighlight {
|
||||
background-color: rgba(0, 0, 0, 0.7);
|
||||
position: absolute;
|
||||
z-index: 9999999999; }
|
||||
|
||||
.preview-overlay {
|
||||
align-items: center;
|
||||
background-color: rgba(0, 0, 0, 0.7);
|
||||
display: flex;
|
||||
height: 100%;
|
||||
justify-content: center;
|
||||
left: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
z-index: 9999999999; }
|
||||
|
||||
.highlight {
|
||||
border-radius: 2px;
|
||||
border: 2px dashed rgba(255, 255, 255, 0.8);
|
||||
box-sizing: border-box;
|
||||
cursor: move;
|
||||
position: absolute;
|
||||
z-index: 9999999999; }
|
||||
|
||||
.highlight-buttons {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
bottom: -55px;
|
||||
position: absolute;
|
||||
right: 5px;
|
||||
z-index: 6; }
|
||||
.bottom-selection .highlight-buttons {
|
||||
bottom: 5px; }
|
||||
|
||||
.highlight-button-cancel {
|
||||
background-color: #ededed;
|
||||
background-image: url("MOZ_EXTENSION/icons/cancel.svg");
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 18px 18px;
|
||||
margin: 5px;
|
||||
width: 40px; }
|
||||
|
||||
.highlight-button-save {
|
||||
font-size: 18px;
|
||||
margin: 5px;
|
||||
min-width: 80px; }
|
||||
|
||||
.highlight-button-download {
|
||||
background-color: #ededed;
|
||||
background-image: url("MOZ_EXTENSION/icons/download.svg");
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 18px 18px;
|
||||
display: block;
|
||||
margin: 5px;
|
||||
width: 40px; }
|
||||
|
||||
.highlight-button-cancel,
|
||||
.highlight-button-download {
|
||||
transition: background-color cubic-bezier(0.07, 0.95, 0, 1) 250ms; }
|
||||
.highlight-button-cancel:hover, .highlight-button-cancel:focus, .highlight-button-cancel:active,
|
||||
.highlight-button-download:hover,
|
||||
.highlight-button-download:focus,
|
||||
.highlight-button-download:active {
|
||||
background-color: #dbdbdb; }
|
||||
|
||||
.pixel-dimensions {
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
font-weight: bold;
|
||||
font-family: sans-serif;
|
||||
font-size: 70%;
|
||||
color: #000;
|
||||
text-shadow: -1px -1px 0 #fff, 1px -1px 0 #fff, -1px 1px 0 #fff, 1px 1px 0 #fff; }
|
||||
|
||||
.fixed-container {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
height: 100%;
|
||||
justify-content: center;
|
||||
left: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
pointer-events: none;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 100%; }
|
||||
|
||||
.preview-instructions {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
animation: pulse 125mm cubic-bezier(0.07, 0.95, 0, 1);
|
||||
color: #fff;
|
||||
font-family: -apple-system, BlinkMacSystemFont, sans-serif;
|
||||
font-size: 24px;
|
||||
line-height: 32px;
|
||||
text-align: center;
|
||||
width: 400px; }
|
||||
|
||||
.myshots-all-buttons-container {
|
||||
display: flex;
|
||||
flex-direction: row-reverse;
|
||||
background: #f5f5f5;
|
||||
border-radius: 1px;
|
||||
box-sizing: border-box;
|
||||
height: 80px;
|
||||
padding: 8px;
|
||||
position: absolute;
|
||||
right: 5px;
|
||||
top: 5px; }
|
||||
.myshots-all-buttons-container .spacer {
|
||||
background-color: #c9c9c9;
|
||||
flex: 0 0 1px;
|
||||
height: 80px;
|
||||
margin: 0 10px;
|
||||
position: relative;
|
||||
top: -8px; }
|
||||
.myshots-all-buttons-container button {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
justify-content: flex-end;
|
||||
background-color: #f5f5f5;
|
||||
background-position: center top;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 46px 46px;
|
||||
border: 1px solid transparent;
|
||||
cursor: pointer;
|
||||
height: 100%;
|
||||
min-width: 90px;
|
||||
padding: 46px 5px 5px;
|
||||
pointer-events: all;
|
||||
transition: border 150ms cubic-bezier(0.07, 0.95, 0, 1), background-color 150ms cubic-bezier(0.07, 0.95, 0, 1);
|
||||
white-space: nowrap; }
|
||||
.myshots-all-buttons-container button:hover {
|
||||
background-color: #ebebeb;
|
||||
border: 1px solid #c7c7c7; }
|
||||
.myshots-all-buttons-container button:active {
|
||||
background-color: #dedede;
|
||||
border: 1px solid #989898; }
|
||||
.myshots-all-buttons-container .myshots-button {
|
||||
background-image: url("MOZ_EXTENSION/icons/menu-myshot.svg"); }
|
||||
.myshots-all-buttons-container .full-page {
|
||||
background-image: url("MOZ_EXTENSION/icons/menu-fullpage.svg"); }
|
||||
.myshots-all-buttons-container .visible {
|
||||
background-image: url("MOZ_EXTENSION/icons/menu-visible.svg"); }
|
||||
|
||||
.myshots-button-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center; }
|
||||
|
||||
/* styleMyShotsButton test: */
|
||||
.styleMyShotsButton-bright .myshots-button {
|
||||
color: #fff;
|
||||
background: #0996F8; }
|
||||
|
||||
.styleMyShotsButton-bright .myshots-text-pre,
|
||||
.styleMyShotsButton-bright .myshots-text-post {
|
||||
filter: brightness(20); }
|
||||
|
||||
/* end styleMyShotsButton test */
|
||||
@keyframes pulse {
|
||||
0% {
|
||||
transform: scale(1); }
|
||||
50% {
|
||||
transform: scale(1.06); }
|
||||
100% {
|
||||
transform: scale(1); } }
|
||||
|
||||
@keyframes fade-in {
|
||||
0% {
|
||||
opacity: 0; }
|
||||
100% {
|
||||
opacity: 1; } }
|
||||
|
||||
`;
|
||||
null;
|
||||
|
|
@ -0,0 +1,244 @@
|
|||
/* Created from build/server/static/css/onboarding.css */
|
||||
window.onboardingCss = `
|
||||
@keyframes fade-in {
|
||||
0% {
|
||||
opacity: 0; }
|
||||
100% {
|
||||
opacity: 1; } }
|
||||
|
||||
@keyframes pop {
|
||||
0% {
|
||||
transform: scale(1); }
|
||||
97% {
|
||||
transform: scale(1.04); }
|
||||
100% {
|
||||
transform: scale(1); } }
|
||||
|
||||
@keyframes pulse {
|
||||
0% {
|
||||
opacity: .3;
|
||||
transform: scale(1); }
|
||||
70% {
|
||||
opacity: .25;
|
||||
transform: scale(1.04); }
|
||||
100% {
|
||||
opacity: .3;
|
||||
transform: scale(1); } }
|
||||
|
||||
@keyframes slide-left {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: translate3d(160px, 0, 0); }
|
||||
100% {
|
||||
opacity: 1;
|
||||
transform: translate3d(0, 0, 0); } }
|
||||
|
||||
html,
|
||||
body {
|
||||
box-sizing: border-box;
|
||||
font-family: -apple-system, BlinkMacSystemFont, sans-serif;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
width: 100%; }
|
||||
|
||||
#slide-overlay {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
animation: fade-in 250ms forwards cubic-bezier(0.07, 0.95, 0, 1);
|
||||
background: rgba(0, 0, 0, 0.8);
|
||||
height: 100%;
|
||||
opacity: 0;
|
||||
width: 100%; }
|
||||
|
||||
#slide-container {
|
||||
animation-delay: 50ms;
|
||||
animation: fade-in 250ms forwards cubic-bezier(0.07, 0.95, 0, 1);
|
||||
opacity: 0; }
|
||||
|
||||
.slide {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
background-color: #f2f2f2;
|
||||
border-radius: 5px;
|
||||
height: 520px;
|
||||
overflow: hidden;
|
||||
width: 700px; }
|
||||
.slide .slide-image {
|
||||
background-size: 700px 378px;
|
||||
flex: 0 0 360px;
|
||||
font-size: 16px;
|
||||
width: 100%; }
|
||||
.slide .slide-content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
box-sizing: border-box;
|
||||
flex: 0 0 160px;
|
||||
padding: 5px;
|
||||
text-align: center; }
|
||||
.slide h1 {
|
||||
font-size: 30px;
|
||||
font-weight: 400;
|
||||
margin: 0 0 10px; }
|
||||
.slide h1 sup {
|
||||
background: #00d1e6;
|
||||
border-radius: 2px;
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
margin-left: 5px;
|
||||
padding: 2px;
|
||||
text-transform: uppercase; }
|
||||
.slide p {
|
||||
animation-duration: 350ms;
|
||||
font-size: 16px;
|
||||
line-height: 23px;
|
||||
margin: 0;
|
||||
width: 75%; }
|
||||
.slide .slide-content-aligner h1 {
|
||||
font-size: 34px; }
|
||||
.slide .slide-content-aligner p {
|
||||
margin: 0 auto; }
|
||||
.slide .onboarding-legal-notice {
|
||||
font-size: 12px;
|
||||
color: #858585; }
|
||||
.slide .onboarding-legal-notice a {
|
||||
color: #009ec0;
|
||||
text-decoration: none; }
|
||||
.slide:not(.slide-1) h1 {
|
||||
opacity: 0;
|
||||
transform: translate3d(160px, 0, 0);
|
||||
animation: slide-left 500ms forwards cubic-bezier(0.07, 0.95, 0, 1); }
|
||||
.slide:not(.slide-1) p {
|
||||
opacity: 0;
|
||||
transform: translate3d(160px, 0, 0);
|
||||
animation: slide-left 600ms forwards cubic-bezier(0.07, 0.95, 0, 1); }
|
||||
.slide:not(.slide-1) .slide-image {
|
||||
background-color: #00d1e6; }
|
||||
.slide.slide-1 {
|
||||
background: #fff; }
|
||||
.slide.slide-1 .slide-content {
|
||||
justify-content: space-between;
|
||||
width: 100%; }
|
||||
|
||||
.slide-1,
|
||||
.slide-2,
|
||||
.slide-3,
|
||||
.slide-4,
|
||||
.slide-5 {
|
||||
display: none; }
|
||||
|
||||
.active-slide-1 .slide-1,
|
||||
.active-slide-2 .slide-2,
|
||||
.active-slide-3 .slide-3,
|
||||
.active-slide-4 .slide-4 {
|
||||
display: flex; }
|
||||
|
||||
#slide-status-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding-top: 15px; }
|
||||
|
||||
.goto-slide {
|
||||
background: transparent;
|
||||
background-color: #f2f2f2;
|
||||
border-radius: 50%;
|
||||
border: 0;
|
||||
flex: 0 0 9px;
|
||||
height: 9px;
|
||||
margin: 0 4px;
|
||||
opacity: 0.7;
|
||||
padding: 0;
|
||||
transition: height 100ms cubic-bezier(0.07, 0.95, 0, 1), opacity 100ms cubic-bezier(0.07, 0.95, 0, 1); }
|
||||
|
||||
.goto-slide:hover {
|
||||
opacity: 1; }
|
||||
|
||||
.active-slide-1 .goto-slide-1,
|
||||
.active-slide-2 .goto-slide-2,
|
||||
.active-slide-3 .goto-slide-3,
|
||||
.active-slide-4 .goto-slide-4 {
|
||||
opacity: 1;
|
||||
transform: scale(1.1); }
|
||||
|
||||
#prev, #next,
|
||||
#done {
|
||||
background-color: #f0f0f0;
|
||||
border-radius: 50%;
|
||||
border: 0;
|
||||
box-shadow: 0 0 12px rgba(0, 0, 0, 0.2);
|
||||
display: inline-block;
|
||||
height: 70px;
|
||||
margin-top: -70px;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
top: 50%;
|
||||
transition: background-color 150ms cubic-bezier(0.07, 0.95, 0, 1), background-size 250ms cubic-bezier(0.07, 0.95, 0, 1);
|
||||
width: 70px; }
|
||||
|
||||
#prev {
|
||||
left: 50%;
|
||||
margin-left: -385px; }
|
||||
|
||||
#next,
|
||||
#done {
|
||||
left: 50%;
|
||||
margin-left: 315px; }
|
||||
|
||||
#prev,
|
||||
#next,
|
||||
#done {
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 20px 20px; }
|
||||
|
||||
#next {
|
||||
transform: rotate(180deg); }
|
||||
|
||||
#skip {
|
||||
background: none;
|
||||
border: 0;
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
left: 50%;
|
||||
margin-left: -330px;
|
||||
margin-top: 257px;
|
||||
opacity: 0.7;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transition: opacity 100ms cubic-bezier(0.07, 0.95, 0, 1);
|
||||
z-index: 10; }
|
||||
|
||||
#prev:hover,
|
||||
#next:hover,
|
||||
#done:hover {
|
||||
background-color: #fff;
|
||||
background-size: 22px 22px; }
|
||||
|
||||
#prev:active,
|
||||
#next:active,
|
||||
#done:active {
|
||||
background-color: #fff;
|
||||
background-size: 24px 24px; }
|
||||
|
||||
#skip:hover {
|
||||
opacity: 1; }
|
||||
|
||||
.active-slide-1 #prev,
|
||||
.active-slide-4 #next {
|
||||
display: none; }
|
||||
|
||||
#done {
|
||||
display: none; }
|
||||
|
||||
.active-slide-4 #done {
|
||||
display: inline-block; }
|
||||
|
||||
`;
|
||||
null;
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
/* Created from addon/webextension/onboarding/slides.html */
|
||||
window.onboardingHtml = `
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<!-- onboarding.scss is automatically inserted here: -->
|
||||
<style></style>
|
||||
<!-- Here and in onboarding.scss use MOZ_EXTENSION/path to refer to local files -->
|
||||
</head>
|
||||
<body>
|
||||
<div id="slide-overlay">
|
||||
<!-- The current slide is set by having .active-slide-1, .active-slide-2, etc on #slide element: -->
|
||||
<div id="slide-container" data-number-of-slides="4" class="active-slide-1">
|
||||
<div class="slide slide-1">
|
||||
<!-- Note: all images must be listed in manifest.json.template under web_accessible_resources -->
|
||||
<div class="slide-image" style="background-image: url('MOZ_EXTENSION/icons/onboarding-1.png');"></div>
|
||||
<div class="slide-content">
|
||||
<div class="slide-content-aligner">
|
||||
<h1><span><strong>Firefox</strong> Screenshots</span><sup>Beta</sup></h1>
|
||||
<p data-l10n-id="tourBodyOne"></p>
|
||||
</div>
|
||||
<p class="onboarding-legal-notice"><!-- Substituted with termsAndPrivacyNotice --></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="slide slide-2">
|
||||
<div class="slide-image" style="background-image: url('MOZ_EXTENSION/icons/onboarding-2.png');"></div>
|
||||
<div class="slide-content">
|
||||
<h1 data-l10n-id="tourHeaderTwo"></h1>
|
||||
<p data-l10n-id="tourBodyTwo"></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="slide slide-3">
|
||||
<div class="slide-image" style="background-image: url('MOZ_EXTENSION/icons/onboarding-3.png');"></div>
|
||||
<div class="slide-content">
|
||||
<h1 data-l10n-id="tourHeaderThree"></h1>
|
||||
<p data-l10n-id="tourBodyThree"></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="slide slide-4">
|
||||
<div class="slide-image" style="background-image: url('MOZ_EXTENSION/icons/onboarding-4.png');"></div>
|
||||
<div class="slide-content">
|
||||
<h1 data-l10n-id="tourHeaderFour"></h1>
|
||||
<p data-l10n-id="tourBodyFour"></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Clickable elements should be buttons for accessibility -->
|
||||
<button id="skip" data-l10n-id="tourSkip" tabindex=1>Skip</button>
|
||||
<button id="prev" tabindex=2 data-l10n-label-id="tourPrevious" style="background-image: url('MOZ_EXTENSION/icons/back.svg');"></button>
|
||||
<button id="next" tabindex=3 data-l10n-label-id="tourNext" style="background-image: url('MOZ_EXTENSION/icons/back.svg');"/></button>
|
||||
<button id="done" tabindex=4 data-l10n-label-id="tourDone" style="background-image: url('MOZ_EXTENSION/icons/done.svg')"></button>
|
||||
<div id="slide-status-container">
|
||||
<button class="goto-slide goto-slide-1" data-number="1" tabindex=4></button>
|
||||
<button class="goto-slide goto-slide-2" data-number="2" tabindex=5></button>
|
||||
<button class="goto-slide goto-slide-3" data-number="3" tabindex=6></button>
|
||||
<button class="goto-slide goto-slide-4" data-number="4" tabindex=7></button>
|
||||
</div>
|
||||
<!-- FIXME: Need to put in privacy / etc links -->
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
`;
|
||||
null;
|
||||
|
|
@ -0,0 +1,727 @@
|
|||
window.shot = (function () {let exports={}; // Note: in this library we can't use any "system" dependencies because this can be used from multiple
|
||||
// environments
|
||||
/* globals console */
|
||||
|
||||
/** Throws an error if the condition isn't true. Any extra arguments after the condition
|
||||
are used as console.error() arguments. */
|
||||
function assert(condition, ...args) {
|
||||
if (condition) {
|
||||
return;
|
||||
}
|
||||
console.error("Failed assertion", ...args);
|
||||
throw new Error("Failed assertion", ...args);
|
||||
}
|
||||
|
||||
/** True if `url` is a valid URL */
|
||||
function isUrl(url) {
|
||||
// FIXME: this is rather naive, obviously
|
||||
if ((/^about:.+$/i).test(url)) {
|
||||
return true;
|
||||
}
|
||||
if ((/^file:\/.*$/i).test(url)) {
|
||||
return true;
|
||||
}
|
||||
if ((/^data:.*$/i).test(url)) {
|
||||
return true;
|
||||
}
|
||||
if ((/^chrome:.*/i).test(url)) {
|
||||
return true;
|
||||
}
|
||||
if ((/^view-source:/i).test(url)) {
|
||||
return isUrl(url.substr("view-source:".length));
|
||||
}
|
||||
return (/^https?:\/\/[a-z0-9\.\-]+[a-z0-9](:[0-9]+)?\/?/i).test(url);
|
||||
}
|
||||
|
||||
function assertUrl(url) {
|
||||
if (! url) {
|
||||
throw new Error("Empty value is not URL");
|
||||
}
|
||||
if (! isUrl(url)) {
|
||||
let exc = new Error("Not a URL");
|
||||
exc.scheme = url.split(":")[0];
|
||||
throw exc;
|
||||
}
|
||||
}
|
||||
|
||||
function assertOrigin(url) {
|
||||
assertUrl(url);
|
||||
if (url.search(/^https?:/i) != -1) {
|
||||
let match = (/^https?:\/\/[^/:]+\/?$/i).exec(url);
|
||||
if (! match) {
|
||||
throw new Error("Bad origin, might include path");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function originFromUrl(url) {
|
||||
if (! url) {
|
||||
return null;
|
||||
}
|
||||
if (url.search(/^https?:/i) == -1) {
|
||||
// Non-HTTP URLs don't have an origin
|
||||
return null;
|
||||
}
|
||||
let match = (/^https?:\/\/[^/:]+/i).exec(url);
|
||||
if (match) {
|
||||
return match[0];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/** Check if the given object has all of the required attributes, and no extra
|
||||
attributes exception those in optional */
|
||||
function checkObject(obj, required, optional) {
|
||||
if (typeof obj != "object" || obj === null) {
|
||||
throw new Error("Cannot check non-object: " + (typeof obj) + " that is " + JSON.stringify(obj));
|
||||
}
|
||||
required = required || [];
|
||||
for (let attr of required) {
|
||||
if (! (attr in obj)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
optional = optional || [];
|
||||
for (let attr in obj) {
|
||||
if (required.indexOf(attr) == -1 && optional.indexOf(attr) == -1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Create a JSON object from a normal object, given the required and optional
|
||||
attributes (filtering out any other attributes). Optional attributes are
|
||||
only kept when they are truthy. */
|
||||
function jsonify(obj, required, optional) {
|
||||
required = required || [];
|
||||
let result = {};
|
||||
for (let attr of required) {
|
||||
result[attr] = obj[attr];
|
||||
}
|
||||
optional = optional || [];
|
||||
for (let attr of optional) {
|
||||
if (obj[attr]) {
|
||||
result[attr] = obj[attr];
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/** Resolve url relative to base */
|
||||
function resolveUrl(base, url) {
|
||||
// FIXME: totally ad hoc and probably incorrect, but we can't
|
||||
// use any libraries in this file
|
||||
if (url.search(/^https?:/) != -1) {
|
||||
// Absolute url
|
||||
return url;
|
||||
}
|
||||
if (url.indexOf("//") === 0) {
|
||||
// Protocol-relative URL
|
||||
return (/^https?:/i).exec(base)[0] + url;
|
||||
}
|
||||
if (url.indexOf("/") === 0) {
|
||||
// Domain-relative URL
|
||||
return (/^https?:\/\/[a-z0-9\.\-]+/i).exec(base)[0] + url;
|
||||
}
|
||||
// Otherwise, a full relative URL
|
||||
while (url.indexOf("./") === 0) {
|
||||
url = url.substr(2);
|
||||
}
|
||||
let match = (/.*\//).exec(base)[0];
|
||||
if (match.search(/^https?:\/$/i) === 0) {
|
||||
// Domain without path
|
||||
match = match + "/";
|
||||
}
|
||||
return match + url;
|
||||
}
|
||||
|
||||
/** True if the two objects look alike. Null, undefined, and absent properties
|
||||
are all treated as equivalent. Traverses objects and arrays */
|
||||
function deepEqual(a, b) {
|
||||
if ((a === null || a === undefined) && (b === null || b === undefined)) {
|
||||
return true;
|
||||
}
|
||||
if (typeof a != "object" || typeof b != "object") {
|
||||
return a === b;
|
||||
}
|
||||
if (Array.isArray(a)) {
|
||||
if (! Array.isArray(b)) {
|
||||
return false;
|
||||
}
|
||||
if (a.length != b.length) {
|
||||
return false;
|
||||
}
|
||||
for (let i=0; i<a.length; i++) {
|
||||
if (! deepEqual(a[i], b[i])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Array.isArray(b)) {
|
||||
return false;
|
||||
}
|
||||
let seen = new Set();
|
||||
for (let attr of Object.keys(a)) {
|
||||
if (! deepEqual(a[attr], b[attr])) {
|
||||
return false;
|
||||
}
|
||||
seen.add(attr);
|
||||
}
|
||||
for (let attr of Object.keys(b)) {
|
||||
if (! seen.has(attr)) {
|
||||
if (! deepEqual(a[attr], b[attr])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function makeRandomId() {
|
||||
// Note: this isn't for secure contexts, only for non-conflicting IDs
|
||||
let id = "";
|
||||
while (id.length < 12) {
|
||||
let num;
|
||||
if (! id) {
|
||||
num = Date.now() % Math.pow(36, 3);
|
||||
} else {
|
||||
num = Math.floor(Math.random() * Math.pow(36, 3));
|
||||
}
|
||||
id += num.toString(36);
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
class AbstractShot {
|
||||
|
||||
constructor(backend, id, attrs) {
|
||||
attrs = attrs || {};
|
||||
assert((/^[a-zA-Z0-9]+\/[a-z0-9\.-]+$/).test(id), "Bad ID (should be alphanumeric):", JSON.stringify(id));
|
||||
this._backend = backend;
|
||||
this._id = id;
|
||||
this.origin = attrs.origin || null;
|
||||
this.fullUrl = attrs.fullUrl || null;
|
||||
if ((! attrs.fullUrl) && attrs.url) {
|
||||
console.warn("Received deprecated attribute .url");
|
||||
this.fullUrl = attrs.url;
|
||||
}
|
||||
this.docTitle = attrs.docTitle || null;
|
||||
this.userTitle = attrs.userTitle || null;
|
||||
this.createdDate = attrs.createdDate || Date.now();
|
||||
this.favicon = attrs.favicon || null;
|
||||
this.siteName = attrs.siteName || null;
|
||||
this.images = [];
|
||||
if (attrs.images) {
|
||||
this.images = attrs.images.map(
|
||||
(json) => new this.Image(json));
|
||||
}
|
||||
this.openGraph = attrs.openGraph || null;
|
||||
this.twitterCard = attrs.twitterCard || null;
|
||||
this.documentSize = attrs.documentSize || null;
|
||||
this.fullScreenThumbnail = attrs.fullScreenThumbnail || null;
|
||||
this.abTests = attrs.abTests || null;
|
||||
this._clips = {};
|
||||
if (attrs.clips) {
|
||||
for (let clipId in attrs.clips) {
|
||||
let clip = attrs.clips[clipId];
|
||||
this._clips[clipId] = new this.Clip(this, clipId, clip);
|
||||
}
|
||||
}
|
||||
|
||||
for (let attr in attrs) {
|
||||
if (attr !== "clips" && attr !== "id" && this.REGULAR_ATTRS.indexOf(attr) === -1 && this.DEPRECATED_ATTRS.indexOf(attr) === -1) {
|
||||
throw new Error("Unexpected attribute: " + attr);
|
||||
} else if (attr === "id") {
|
||||
console.warn("passing id in attrs in AbstractShot constructor");
|
||||
console.trace();
|
||||
assert(attrs.id === this.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Update any and all attributes in the json object, with deep updating
|
||||
of `json.clips` */
|
||||
update(json) {
|
||||
let ALL_ATTRS = ["clips"].concat(this.REGULAR_ATTRS);
|
||||
assert(checkObject(json, [], ALL_ATTRS), "Bad attr to new Shot():", Object.keys(json));
|
||||
for (let attr in json) {
|
||||
if (attr == "clips") {
|
||||
continue;
|
||||
}
|
||||
if (typeof json[attr] == "object" && typeof this[attr] == "object" && this[attr] !== null) {
|
||||
let val = this[attr];
|
||||
if (val.asJson) {
|
||||
val = val.asJson();
|
||||
}
|
||||
if (! deepEqual(json[attr], val)) {
|
||||
this[attr] = json[attr];
|
||||
}
|
||||
} else if (json[attr] !== this[attr] &&
|
||||
(json[attr] || this[attr])) {
|
||||
this[attr] = json[attr];
|
||||
}
|
||||
}
|
||||
if (json.clips) {
|
||||
for (let clipId in json.clips) {
|
||||
if (! json.clips[clipId]) {
|
||||
this.delClip(clipId);
|
||||
} else if (! this.getClip(clipId)) {
|
||||
this.setClip(clipId, json.clips[clipId]);
|
||||
} else if (! deepEqual(this.getClip(clipId).asJson(), json.clips[clipId])) {
|
||||
this.setClip(clipId, json.clips[clipId]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/** Returns a JSON version of this shot */
|
||||
asJson() {
|
||||
let result = {};
|
||||
for (let attr of this.REGULAR_ATTRS) {
|
||||
var val = this[attr];
|
||||
if (val && val.asJson) {
|
||||
val = val.asJson();
|
||||
}
|
||||
result[attr] = val;
|
||||
}
|
||||
result.clips = {};
|
||||
for (let attr in this._clips) {
|
||||
result.clips[attr] = this._clips[attr].asJson();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/** A more minimal JSON representation for creating indexes of shots */
|
||||
asRecallJson() {
|
||||
let result = {clips: {}};
|
||||
for (let attr of this.RECALL_ATTRS) {
|
||||
var val = this[attr];
|
||||
if (val && val.asJson) {
|
||||
val = val.asJson();
|
||||
}
|
||||
result[attr] = val;
|
||||
}
|
||||
for (let name of this.clipNames()) {
|
||||
result.clips[name] = this.getClip(name).asJson();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
get backend() {
|
||||
return this._backend;
|
||||
}
|
||||
|
||||
get id() {
|
||||
return this._id;
|
||||
}
|
||||
|
||||
get url() {
|
||||
return this.fullUrl || this.origin;
|
||||
}
|
||||
set url(val) {
|
||||
throw new Error(".url is read-only");
|
||||
}
|
||||
|
||||
get fullUrl() {
|
||||
return this._fullUrl;
|
||||
}
|
||||
set fullUrl(val) {
|
||||
if (val) {
|
||||
assertUrl(val);
|
||||
}
|
||||
this._fullUrl = val || undefined;
|
||||
}
|
||||
|
||||
get origin() {
|
||||
return this._origin;
|
||||
}
|
||||
set origin(val) {
|
||||
if (val) {
|
||||
assertOrigin(val);
|
||||
}
|
||||
this._origin = val || undefined;
|
||||
}
|
||||
|
||||
get filename() {
|
||||
let filenameTitle = this.title;
|
||||
let date = new Date(this.createdDate);
|
||||
filenameTitle = filenameTitle.replace(/[\/!@&*.|\n\r\t]/g, " ");
|
||||
filenameTitle = filenameTitle.replace(/\s+/g, " ");
|
||||
let clipFilename = `Screenshot-${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()} ${filenameTitle}`;
|
||||
const clipFilenameBytesSize = clipFilename.length * 2; // JS STrings are UTF-16
|
||||
if (clipFilenameBytesSize > 251) { // 255 bytes (Usual filesystems max) - 4 for the ".png" file extension string
|
||||
const excedingchars = (clipFilenameBytesSize - 246) / 2; // 251 - 5 for ellipsis "[...]"
|
||||
clipFilename = clipFilename.substring(0, clipFilename.length - excedingchars);
|
||||
clipFilename = clipFilename + '[...]';
|
||||
}
|
||||
return clipFilename + '.png';
|
||||
}
|
||||
|
||||
get urlDisplay() {
|
||||
if (! this.url) {
|
||||
return null;
|
||||
}
|
||||
if (this.url.search(/^https?/i) != -1) {
|
||||
let txt = this.url;
|
||||
txt = txt.replace(/^[a-z]+:\/\//i, "");
|
||||
txt = txt.replace(/\/.*/, "");
|
||||
txt = txt.replace(/^www\./i, "");
|
||||
return txt;
|
||||
} else if (this.url.startsWith("data:")) {
|
||||
return "data:url";
|
||||
} else {
|
||||
let txt = this.url;
|
||||
txt = txt.replace(/\?.*/, "");
|
||||
return txt;
|
||||
}
|
||||
}
|
||||
|
||||
get viewUrl() {
|
||||
let url = this.backend + "/" + this.id;
|
||||
return url;
|
||||
}
|
||||
|
||||
get creatingUrl() {
|
||||
let url = `${this.backend}/creating/${this.id}`;
|
||||
url += `?title=${encodeURIComponent(this.title || "")}`;
|
||||
url += `&url=${encodeURIComponent(this.url)}`;
|
||||
return url;
|
||||
}
|
||||
|
||||
get jsonUrl() {
|
||||
return this.backend + "/data/" + this.id;
|
||||
}
|
||||
|
||||
get oembedUrl() {
|
||||
return this.backend + "/oembed?url=" + encodeURIComponent(this.viewUrl);
|
||||
}
|
||||
|
||||
get docTitle() {
|
||||
return this._title;
|
||||
}
|
||||
set docTitle(val) {
|
||||
assert(val === null || typeof val == "string", "Bad docTitle:", val);
|
||||
this._title = val;
|
||||
}
|
||||
|
||||
get openGraph() {
|
||||
return this._openGraph || null;
|
||||
}
|
||||
set openGraph(val) {
|
||||
assert(val === null || typeof val == "object", "Bad openGraph:", val);
|
||||
if (val) {
|
||||
assert(checkObject(val, [], this._OPENGRAPH_PROPERTIES), "Bad attr to openGraph:", Object.keys(val));
|
||||
this._openGraph = val;
|
||||
} else {
|
||||
this._openGraph = null;
|
||||
}
|
||||
}
|
||||
|
||||
get twitterCard() {
|
||||
return this._twitterCard || null;
|
||||
}
|
||||
set twitterCard(val) {
|
||||
assert(val === null || typeof val == "object", "Bad twitterCard:", val);
|
||||
if (val) {
|
||||
assert(checkObject(val, [], this._TWITTERCARD_PROPERTIES), "Bad attr to twitterCard:", Object.keys(val));
|
||||
this._twitterCard = val;
|
||||
} else {
|
||||
this._twitterCard = null;
|
||||
}
|
||||
}
|
||||
|
||||
get userTitle() {
|
||||
return this._userTitle;
|
||||
}
|
||||
set userTitle(val) {
|
||||
assert(val === null || typeof val == "string", "Bad userTitle:", val);
|
||||
this._userTitle = val;
|
||||
}
|
||||
|
||||
get title() {
|
||||
// FIXME: we shouldn't support both openGraph.title and ogTitle
|
||||
let ogTitle = this.openGraph && this.openGraph.title;
|
||||
let twitterTitle = this.twitterCard && this.twitterCard.title;
|
||||
let title = this.userTitle || ogTitle || twitterTitle || this.docTitle || this.url;
|
||||
if (Array.isArray(title)) {
|
||||
title = title[0];
|
||||
}
|
||||
return title;
|
||||
}
|
||||
|
||||
get createdDate() {
|
||||
return this._createdDate;
|
||||
}
|
||||
set createdDate(val) {
|
||||
assert(val === null || typeof val == "number", "Bad createdDate:", val);
|
||||
this._createdDate = val;
|
||||
}
|
||||
|
||||
get favicon() {
|
||||
return this._favicon;
|
||||
}
|
||||
set favicon(val) {
|
||||
assert(val === null || isUrl(val), "Bad favicon URL:", val);
|
||||
if (val) {
|
||||
val = resolveUrl(this.url, val);
|
||||
}
|
||||
this._favicon = val;
|
||||
}
|
||||
|
||||
clipNames() {
|
||||
let names = Object.getOwnPropertyNames(this._clips);
|
||||
names.sort(function (a, b) {
|
||||
return a.sortOrder < b.sortOrder ? 1 : 0;
|
||||
});
|
||||
return names;
|
||||
}
|
||||
getClip(name) {
|
||||
return this._clips[name];
|
||||
}
|
||||
addClip(val) {
|
||||
let name = makeRandomId();
|
||||
this.setClip(name, val);
|
||||
return name;
|
||||
}
|
||||
setClip(name, val) {
|
||||
let clip = new this.Clip(this, name, val);
|
||||
this._clips[name] = clip;
|
||||
}
|
||||
delClip(name) {
|
||||
if (! this._clips[name]) {
|
||||
throw new Error("No existing clip with id: " + name);
|
||||
}
|
||||
delete this._clips[name];
|
||||
}
|
||||
biggestClipSortOrder() {
|
||||
let biggest = 0;
|
||||
for (let clipId in this._clips) {
|
||||
biggest = Math.max(biggest, this._clips[clipId].sortOrder);
|
||||
}
|
||||
return biggest;
|
||||
}
|
||||
updateClipUrl(clipId, clipUrl) {
|
||||
let clip = this.getClip(clipId);
|
||||
if ( clip && clip.image ) {
|
||||
clip.image.url = clipUrl;
|
||||
} else {
|
||||
console.warn("Tried to update the url of a clip with no image:", clip);
|
||||
}
|
||||
}
|
||||
|
||||
get siteName() {
|
||||
return this._siteName || null;
|
||||
}
|
||||
set siteName(val) {
|
||||
assert(typeof val == "string" || ! val);
|
||||
this._siteName = val;
|
||||
}
|
||||
|
||||
get documentSize() {
|
||||
return this._documentSize;
|
||||
}
|
||||
set documentSize(val) {
|
||||
assert(typeof val == "object" || ! val);
|
||||
if (val) {
|
||||
assert(checkObject(val, ["height", "width"], "Bad attr to documentSize:", Object.keys(val)));
|
||||
assert(typeof val.height == "number");
|
||||
assert(typeof val.width == "number");
|
||||
this._documentSize = val;
|
||||
} else {
|
||||
this._documentSize = null;
|
||||
}
|
||||
}
|
||||
|
||||
get fullScreenThumbnail() {
|
||||
return this._fullScreenThumbnail;
|
||||
}
|
||||
set fullScreenThumbnail(val) {
|
||||
assert(typeof val == "string" || ! val);
|
||||
if (val) {
|
||||
assert(isUrl(val));
|
||||
this._fullScreenThumbnail = val;
|
||||
} else {
|
||||
this._fullScreenThumbnail = null;
|
||||
}
|
||||
}
|
||||
|
||||
get abTests() {
|
||||
return this._abTests;
|
||||
}
|
||||
set abTests(val) {
|
||||
if (val === null || val === undefined) {
|
||||
this._abTests = null;
|
||||
return;
|
||||
}
|
||||
assert(typeof val == "object", "abTests should be an object, not:", typeof val);
|
||||
assert(! Array.isArray(val), "abTests should not be an Array");
|
||||
for (let name in val) {
|
||||
assert(val[name] && typeof val[name] == "string", `abTests.${name} should be a string:`, typeof val[name]);
|
||||
}
|
||||
this._abTests = val;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
AbstractShot.prototype.REGULAR_ATTRS = (`
|
||||
origin fullUrl docTitle userTitle createdDate favicon images
|
||||
siteName openGraph twitterCard documentSize
|
||||
fullScreenThumbnail abTests
|
||||
`).split(/\s+/g);
|
||||
|
||||
// Attributes that will be accepted in the constructor, but ignored/dropped
|
||||
AbstractShot.prototype.DEPRECATED_ATTRS = (`
|
||||
microdata history ogTitle createdDevice head body htmlAttrs bodyAttrs headAttrs
|
||||
readable hashtags comments showPage isPublic resources deviceId url
|
||||
`).split(/\s+/g);
|
||||
|
||||
AbstractShot.prototype.RECALL_ATTRS = (`
|
||||
url docTitle userTitle createdDate favicon
|
||||
openGraph twitterCard images fullScreenThumbnail
|
||||
`).split(/\s+/g);
|
||||
|
||||
AbstractShot.prototype._OPENGRAPH_PROPERTIES = (`
|
||||
title type url image audio description determiner locale site_name video
|
||||
image:secure_url image:type image:width image:height
|
||||
video:secure_url video:type video:width image:height
|
||||
audio:secure_url audio:type
|
||||
article:published_time article:modified_time article:expiration_time article:author article:section article:tag
|
||||
book:author book:isbn book:release_date book:tag
|
||||
profile:first_name profile:last_name profile:username profile:gender
|
||||
`).split(/\s+/g);
|
||||
|
||||
AbstractShot.prototype._TWITTERCARD_PROPERTIES = (`
|
||||
card site title description image
|
||||
player player:width player:height player:stream player:stream:content_type
|
||||
`).split(/\s+/g);
|
||||
|
||||
/** Represents one found image in the document (not a clip) */
|
||||
class _Image {
|
||||
// FIXME: either we have to notify the shot of updates, or make
|
||||
// this read-only
|
||||
constructor(json) {
|
||||
assert(typeof json === "object", "Clip Image given a non-object", json);
|
||||
assert(checkObject(json, ["url"], ["dimensions", "title", "alt"]), "Bad attrs for Image:", Object.keys(json));
|
||||
assert(isUrl(json.url), "Bad Image url:", json.url);
|
||||
this.url = json.url;
|
||||
assert((! json.dimensions) ||
|
||||
(typeof json.dimensions.x == "number" && typeof json.dimensions.y == "number"),
|
||||
"Bad Image dimensions:", json.dimensions);
|
||||
this.dimensions = json.dimensions;
|
||||
assert(typeof json.title == "string" || ! json.title, "Bad Image title:", json.title);
|
||||
this.title = json.title;
|
||||
assert(typeof json.alt == "string" || ! json.alt, "Bad Image alt:", json.alt);
|
||||
this.alt = json.alt;
|
||||
}
|
||||
|
||||
asJson() {
|
||||
return jsonify(this, ["url"], ["dimensions"]);
|
||||
}
|
||||
}
|
||||
|
||||
AbstractShot.prototype.Image = _Image;
|
||||
|
||||
/** Represents a clip, either a text or image clip */
|
||||
class _Clip {
|
||||
constructor(shot, id, json) {
|
||||
this._shot = shot;
|
||||
assert(checkObject(json, ["createdDate", "image"], ["sortOrder"]), "Bad attrs for Clip:", Object.keys(json));
|
||||
assert(typeof id == "string" && id, "Bad Clip id:", id);
|
||||
this._id = id;
|
||||
this.createdDate = json.createdDate;
|
||||
if ('sortOrder' in json) {
|
||||
assert(typeof json.sortOrder == "number" || ! json.sortOrder, "Bad Clip sortOrder:", json.sortOrder);
|
||||
}
|
||||
if ('sortOrder' in json) {
|
||||
this.sortOrder = json.sortOrder;
|
||||
} else {
|
||||
let biggestOrder = shot.biggestClipSortOrder();
|
||||
this.sortOrder = biggestOrder + 100;
|
||||
}
|
||||
this.image = json.image;
|
||||
}
|
||||
|
||||
toString() {
|
||||
return `[Shot Clip id=${this.id} sortOrder=${this.sortOrder} image ${this.image.dimensions.x}x${this.image.dimensions.y}]`;
|
||||
}
|
||||
|
||||
asJson() {
|
||||
return jsonify(this, ["createdDate"], ["sortOrder", "image"]);
|
||||
}
|
||||
|
||||
get id() {
|
||||
return this._id;
|
||||
}
|
||||
|
||||
get createdDate() {
|
||||
return this._createdDate;
|
||||
}
|
||||
set createdDate(val) {
|
||||
assert(typeof val == "number" || ! val, "Bad Clip createdDate:", val);
|
||||
this._createdDate = val;
|
||||
}
|
||||
|
||||
get image() {
|
||||
return this._image;
|
||||
}
|
||||
set image(image) {
|
||||
if (! image) {
|
||||
this._image = undefined;
|
||||
return;
|
||||
}
|
||||
assert(checkObject(image, ["url"], ["dimensions", "text", "location", "captureType"]), "Bad attrs for Clip Image:", Object.keys(image));
|
||||
assert(isUrl(image.url), "Bad Clip image URL:", image.url);
|
||||
assert(image.captureType == "madeSelection" || image.captureType == "selection" || image.captureType == "visible" || image.captureType == "auto" || image.captureType == "fullPage" || ! image.captureType, "Bad image.captureType:", image.captureType);
|
||||
assert(typeof image.text == "string" || ! image.text, "Bad Clip image text:", image.text);
|
||||
if (image.dimensions) {
|
||||
assert(typeof image.dimensions.x == "number" && typeof image.dimensions.y == "number", "Bad Clip image dimensions:", image.dimensions);
|
||||
}
|
||||
assert(image.location &&
|
||||
typeof image.location.left == "number" &&
|
||||
typeof image.location.right == "number" &&
|
||||
typeof image.location.top == "number" &&
|
||||
typeof image.location.bottom == "number", "Bad Clip image pixel location:", image.location);
|
||||
if (image.location.topLeftElement || image.location.topLeftOffset ||
|
||||
image.location.bottomRightElement || image.location.bottomRightOffset) {
|
||||
assert(typeof image.location.topLeftElement == "string" &&
|
||||
image.location.topLeftOffset &&
|
||||
typeof image.location.topLeftOffset.x == "number" &&
|
||||
typeof image.location.topLeftOffset.y == "number" &&
|
||||
typeof image.location.bottomRightElement == "string" &&
|
||||
image.location.bottomRightOffset &&
|
||||
typeof image.location.bottomRightOffset.x == "number" &&
|
||||
typeof image.location.bottomRightOffset.y == "number",
|
||||
"Bad Clip image element location:", image.location);
|
||||
}
|
||||
this._image = image;
|
||||
}
|
||||
|
||||
isDataUrl() {
|
||||
if (this.image) {
|
||||
return this.image.url.startsWith("data:");
|
||||
}
|
||||
}
|
||||
|
||||
get sortOrder() {
|
||||
return this._sortOrder || null;
|
||||
}
|
||||
set sortOrder(val) {
|
||||
assert(typeof val == "number" || ! val, "Bad Clip sortOrder:", val);
|
||||
this._sortOrder = val;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
AbstractShot.prototype.Clip = _Clip;
|
||||
|
||||
if (typeof exports != "undefined") {
|
||||
exports.AbstractShot = AbstractShot;
|
||||
exports.originFromUrl = originFromUrl;
|
||||
}
|
||||
|
||||
return exports;
|
||||
})();
|
||||
null;
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
window.buildSettings = {
|
||||
defaultSentryDsn: process.env.SCREENSHOTS_SENTRY,
|
||||
logLevel: process.env.SCREENSHOTS_LOG_LEVEL || "warn"
|
||||
};
|
||||
null;
|
|
@ -0,0 +1,83 @@
|
|||
/* globals log */
|
||||
|
||||
"use strict";
|
||||
|
||||
var global = this;
|
||||
|
||||
this.catcher = (function () {
|
||||
let exports = {};
|
||||
|
||||
let handler;
|
||||
|
||||
let queue = [];
|
||||
|
||||
exports.unhandled = function (error, info) {
|
||||
log.error("Unhandled error:", error, info);
|
||||
let e = makeError(error, info);
|
||||
if (! handler) {
|
||||
queue.push(e);
|
||||
} else {
|
||||
handler(e);
|
||||
}
|
||||
};
|
||||
|
||||
/** Turn an exception into an error object */
|
||||
function makeError(exc, info) {
|
||||
let result;
|
||||
if (exc.fromMakeError) {
|
||||
result = exc;
|
||||
} else {
|
||||
result = {
|
||||
fromMakeError: true,
|
||||
name: exc.name || "ERROR",
|
||||
message: String(exc),
|
||||
stack: exc.stack
|
||||
};
|
||||
for (let attr in exc) {
|
||||
result[attr] = exc[attr];
|
||||
}
|
||||
}
|
||||
if (info) {
|
||||
for (let attr of Object.keys(info)) {
|
||||
result[attr] = info[attr];
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/** Wrap the function, and if it raises any exceptions then call unhandled() */
|
||||
exports.watchFunction = function watchFunction(func) {
|
||||
return function () {
|
||||
try {
|
||||
return func.apply(this, arguments);
|
||||
} catch (e) {
|
||||
exports.unhandled(e);
|
||||
throw e;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
exports.watchPromise = function watchPromise(promise) {
|
||||
return promise.catch((e) => {
|
||||
log.error("------Error in promise:", e);
|
||||
log.error(e.stack);
|
||||
exports.unhandled(makeError(e));
|
||||
throw e;
|
||||
});
|
||||
};
|
||||
|
||||
exports.registerHandler = function (h) {
|
||||
if (handler) {
|
||||
log.error("registerHandler called after handler was already registered");
|
||||
return;
|
||||
}
|
||||
handler = h;
|
||||
for (let error of queue) {
|
||||
handler(error);
|
||||
}
|
||||
queue = [];
|
||||
};
|
||||
|
||||
return exports;
|
||||
})();
|
||||
null;
|
|
@ -0,0 +1,23 @@
|
|||
/* globals catcher */
|
||||
|
||||
"use strict";
|
||||
|
||||
this.clipboard = (function () {
|
||||
let exports = {};
|
||||
|
||||
exports.copy = function (text) {
|
||||
let el = document.createElement("textarea");
|
||||
document.body.appendChild(el);
|
||||
el.value = text;
|
||||
el.select();
|
||||
const copied = document.execCommand("copy");
|
||||
document.body.removeChild(el);
|
||||
if (!copied) {
|
||||
catcher.unhandled(new Error("Clipboard copy failed"));
|
||||
}
|
||||
return copied;
|
||||
};
|
||||
|
||||
return exports;
|
||||
})();
|
||||
null;
|
|
@ -0,0 +1,29 @@
|
|||
/** Returns the domain of a URL, but safely and in ASCII; URLs without domains
|
||||
(such as about:blank) return the scheme, Unicode domains get stripped down
|
||||
to ASCII */
|
||||
|
||||
"use strict";
|
||||
|
||||
this.domainFromUrl = (function () {
|
||||
|
||||
return function urlDomainForId(location) { // eslint-disable-line no-unused-vars
|
||||
let domain = location.hostname;
|
||||
if (!domain) {
|
||||
domain = location.origin.split(":")[0];
|
||||
if (! domain) {
|
||||
domain = "unknown";
|
||||
}
|
||||
}
|
||||
if (domain.search(/^[a-z0-9.\-]+$/i) === -1) {
|
||||
// Probably a unicode domain; we could use punycode but it wouldn't decode
|
||||
// well in the URL anyway. Instead we'll punt.
|
||||
domain = domain.replace(/[^a-z0-9.\-]/ig, "");
|
||||
if (! domain) {
|
||||
domain = "site";
|
||||
}
|
||||
}
|
||||
return domain;
|
||||
};
|
||||
|
||||
})();
|
||||
null;
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#3D3D40;}
|
||||
</style>
|
||||
<path id="path-1_1_" class="st0" fill="#3D3D40" d="M18.8,8.5H4.2l5.4-5.4c0.5-0.5,0.5-1.2,0-1.8s-1.2-0.5-1.8,0L0.4,8.9c-0.5,0.5-0.5,1.2,0,1.8
|
||||
l7.5,7.5c0.2,0.2,0.5,0.4,0.9,0.4s0.6-0.1,0.9-0.4c0.5-0.5,0.5-1.2,0-1.8L4.2,11h14.5c0.8,0,1.2-0.5,1.2-1.2S19.5,8.5,18.8,8.5z"/>
|
||||
</svg>
|
После Ширина: | Высота: | Размер: 675 B |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#3E3D40;}
|
||||
</style>
|
||||
<path id="Combined-Shape" class="st0" d="M10.5,8.7L5.2,3.3c-0.5-0.5-1.3-0.5-1.8,0l0,0c-0.5,0.5-0.5,1.3,0,1.8l5.3,5.3l-5.3,5.3
|
||||
c-0.5,0.5-0.5,1.3,0,1.8l0,0c0.5,0.5,1.3,0.5,1.8,0l5.3-5.3l5.3,5.3c0.5,0.5,1.3,0.5,1.8,0l0,0c0.5-0.5,0.5-1.3,0-1.8l-5.3-5.3
|
||||
l5.3-5.3c0.5-0.5,0.5-1.3,0-1.8l0,0c-0.5-0.5-1.3-0.5-1.8,0L10.5,8.7z"/>
|
||||
</svg>
|
После Ширина: | Высота: | Размер: 728 B |
После Ширина: | Высота: | Размер: 985 B |
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#009EC0;}
|
||||
</style>
|
||||
<path class="st0" d="M19.5,4c-0.6-0.6-1.6-0.6-2.2,0l-10,10L2.7,9.4c-0.6-0.6-1.6-0.6-2.2,0c-0.6,0.6-0.6,1.6,0,2.2l5.8,5.8
|
||||
c0,0,0,0,0,0c0,0,0,0,0,0l0,0c0.3,0.3,0.7,0.5,1.1,0.5c0.4,0,0.8-0.2,1.1-0.5L19.5,6.3C20.2,5.7,20.2,4.7,19.5,4z"/>
|
||||
</svg>
|
После Ширина: | Высота: | Размер: 641 B |
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#3E3D40;}
|
||||
</style>
|
||||
<path id="Combined-Shape" class="st0" d="M9.1,12L4.9,7.9c-0.5-0.5-1.3-0.5-1.8,0s-0.5,1.3,0,1.8l6.2,6.2c0.5,0.5,1.3,0.5,1.8,0
|
||||
l6.2-6.2c0.5-0.5,0.5-1.3,0-1.8s-1.3-0.5-1.8,0L11.6,12V1.2C11.6,0.6,11,0,10.3,0C9.6,0,9.1,0.6,9.1,1.2V12z M4,20
|
||||
c-0.7,0-1.2-0.6-1.2-1.2s0.6-1.2,1.2-1.2h12.5c0.7,0,1.2,0.6,1.2,1.2S17.2,20,16.5,20H4z"/>
|
||||
</svg>
|
После Ширина: | Высота: | Размер: 733 B |
После Ширина: | Высота: | Размер: 2.4 KiB |
После Ширина: | Высота: | Размер: 373 B |
После Ширина: | Высота: | Размер: 619 B |
После Ширина: | Высота: | Размер: 4.4 KiB |
После Ширина: | Высота: | Размер: 727 B |
После Ширина: | Высота: | Размер: 1.1 KiB |
После Ширина: | Высота: | Размер: 1.0 KiB |
После Ширина: | Высота: | Размер: 1.3 KiB |
После Ширина: | Высота: | Размер: 1.0 KiB |
После Ширина: | Высота: | Размер: 1.0 KiB |
После Ширина: | Высота: | Размер: 993 B |
После Ширина: | Высота: | Размер: 1.3 KiB |
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 46 46" style="enable-background:new 0 0 46 46;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#00FDFF;}
|
||||
.st1{fill:#3E3D40;}
|
||||
.st2{fill:#004C66;}
|
||||
.st3{fill:#00D1E6;}
|
||||
</style>
|
||||
<polygon id="bg" class="st0" points="7,42 39,42 39,5.1 7,5.1 "/>
|
||||
<g id="frame" transform="translate(0.000000, 6.000000)">
|
||||
<path class="st1" d="M40,5c0.5,0,1,0.4,1,1v24c0,0.5-0.5,1-1,1H6c-0.6,0-1-0.5-1-1V6c0-0.6,0.4-1,1-1H40z M7,29h32V7H7V29z"/>
|
||||
<polygon id="Fill-4" class="st2" points="7,7 39,7 39,5 7,5 "/>
|
||||
<polygon id="Fill-6" class="st2" points="7,31 39,31 39,29 7,29 "/>
|
||||
</g>
|
||||
<path id="dash" class="st3" d="M38,11h1V9h-1V11z M38,14h1v-2h-1V14z M38,17h1v-2h-1V17z M38,20h1v-2h-1V20z M38,23h1v-2h-1V23z
|
||||
M38,26h1v-2h-1V26z M38,29h1v-2h-1V29z M38,32h1v-2h-1V32z M38,35h1v-2h-1V35z M38,38h1v-2h-1V38z M38,41h1v-2h-1V41z M37,42h2v-1
|
||||
h-2V42z M34,42h2v-1h-2V42z M31,42h2v-1h-2V42z M28,42h2v-1h-2V42z M25,42h2v-1h-2V42z M22,42h2v-1h-2V42z M19,42h2v-1h-2V42z
|
||||
M16,42h2v-1h-2V42z M13,42h2v-1h-2V42z M10,42h2v-1h-2V42z M8,39H7v2v1h2v-1H8V39z M7,38h1v-2H7V38z M7,35h1v-2H7V35z M7,32h1v-2H7
|
||||
V32z M7,29h1v-2H7V29z M7,26h1v-2H7V26z M7,23h1v-2H7V23z M7,20h1v-2H7V20z M7,17h1v-2H7V17z M7,14h1v-2H7V14z M7,11h1V9H7V11z M9,5
|
||||
H7v1v2h1V6h1V5z M10,6h2V5h-2V6z M13,6h2V5h-2V6z M16,6h2V5h-2V6z M19,6h2V5h-2V6z M22,6h2V5h-2V6z M25,6h2V5h-2V6z M28,6h2V5h-2V6z
|
||||
M31,6h2V5h-2V6z M34,6h2V5h-2V6z M39,5h-2v1h1v2h1V5z"/>
|
||||
</svg>
|
После Ширина: | Высота: | Размер: 1.6 KiB |
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 46 46" style="enable-background:new 0 0 46 46;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#3E3D40;}
|
||||
</style>
|
||||
<path class="st0" d="M11,29v6c0,0.5,0.4,1,1,1h6v-7H11z"/>
|
||||
<rect x="20" y="11" class="st0" width="7" height="7"/>
|
||||
<rect x="11" y="20" class="st0" width="7" height="7"/>
|
||||
<path class="st0" d="M18,11h-6c-0.5,0-1,0.4-1,1v6h7V11z"/>
|
||||
<rect x="20" y="29" class="st0" width="7" height="7"/>
|
||||
<path class="st0" d="M35,11h-6v7h7v-6C36,11.5,35.6,11,35,11z"/>
|
||||
<path class="st0" d="M29,36h6c0.5,0,1-0.4,1-1v-6h-7V36z"/>
|
||||
<rect x="20" y="20" class="st0" width="7" height="7"/>
|
||||
<rect x="29" y="20" class="st0" width="7" height="7"/>
|
||||
</svg>
|
После Ширина: | Высота: | Размер: 921 B |
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 46 46" style="enable-background:new 0 0 46 46;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#3E3D40;}
|
||||
.st1{fill:#00FDFF;}
|
||||
.st2{fill:#00D1E6;}
|
||||
</style>
|
||||
<path id="Fill-1" class="st0" d="M5,12c0-0.6,0.5-1,1-1h34c0.6,0,1,0.5,1,1v24c0,0.6-0.5,1-1,1H6c-0.6,0-1-0.5-1-1V12z M7,35V13h32
|
||||
v22H7z"/>
|
||||
<polygon id="bg" class="st1" points="7,35 39,35 39,13 7,13 "/>
|
||||
<path id="dash" class="st2" d="M38,19h1v-2h-1V19z M38,22h1v-2h-1V22z M38,25h1v-2h-1V25z M38,28h1v-2h-1V28z M38,31h1v-2h-1V31z
|
||||
M38,34h1v-2h-1V34z M37,35h2v-1h-2V35z M34,35h2v-1h-2V35z M31,35h2v-1h-2V35z M28,35h2v-1h-2V35z M25,35h2v-1h-2V35z M22,35h2v-1
|
||||
h-2V35z M19,35h2v-1h-2V35z M16,35h2v-1h-2V35z M13,35h2v-1h-2V35z M10,35h2v-1h-2V35z M8,32H7v2v1h2v-1H8V32z M7,31h1v-2H7V31z
|
||||
M7,28h1v-2H7V28z M7,25h1v-2H7V25z M7,22h1v-2H7V22z M7,19h1v-2H7V19z M9,13H7v1v2h1v-2h1V13z M10,14h2v-1h-2V14z M13,14h2v-1h-2
|
||||
V14z M16,14h2v-1h-2V14z M19,14h2v-1h-2V14z M22,14h2v-1h-2V14z M25,14h2v-1h-2V14z M28,14h2v-1h-2V14z M31,14h2v-1h-2V14z M34,14h2
|
||||
v-1h-2V14z M39,13h-2v1h1v2h1V13z"/>
|
||||
</svg>
|
После Ширина: | Высота: | Размер: 1.3 KiB |