Bug 1372310 - Exports Screenshots 10.1.0 to Firefox; r=standard8

--HG--
extra : rebase_source : 4837746f30875b215bcdbb6b8e9115da94e5d787
This commit is contained in:
Ian Bicking 2017-06-12 13:38:25 -05:00
parent 06e954de4b
commit 9dde471d5e
87 changed files with 982 additions and 665 deletions

View File

@ -12,7 +12,7 @@
</Description> </Description>
</em:targetApplication> </em:targetApplication>
<em:type>2</em:type> <em:type>2</em:type>
<em:version>9.0.0</em:version> <em:version>10.1.0</em:version>
<em:bootstrap>true</em:bootstrap> <em:bootstrap>true</em:bootstrap>
<em:homepageURL>https://pageshot.net/</em:homepageURL> <em:homepageURL>https://pageshot.net/</em:homepageURL>
<em:multiprocessCompatible>true</em:multiprocessCompatible> <em:multiprocessCompatible>true</em:multiprocessCompatible>

View File

@ -248,6 +248,10 @@ FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales
'webextension/_locales/sv_SE/messages.json' 'webextension/_locales/sv_SE/messages.json'
] ]
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["ta"] += [
'webextension/_locales/ta/messages.json'
]
FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["te"] += [ FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["_locales"]["te"] += [
'webextension/_locales/te/messages.json' 'webextension/_locales/te/messages.json'
] ]
@ -292,6 +296,7 @@ FINAL_TARGET_FILES.features['screenshots@mozilla.org']["webextension"]["backgrou
'webextension/background/main.js', 'webextension/background/main.js',
'webextension/background/selectorLoader.js', 'webextension/background/selectorLoader.js',
'webextension/background/senderror.js', 'webextension/background/senderror.js',
'webextension/background/startBackground.js',
'webextension/background/takeshot.js' 'webextension/background/takeshot.js'
] ]

View File

@ -80,17 +80,17 @@
"message": "Dii ka i ywar me mako cal pa but potbuk keken. Itwero bene wot iwiye me wero yer mamegi." "message": "Dii ka i ywar me mako cal pa but potbuk keken. Itwero bene wot iwiye me wero yer mamegi."
}, },
"tourHeaderThree": { "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" "message": "Mak dirica onyo Potbuk weng"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Yer mapeca ma i tung lacuc malo me mako kabedo ma nen i dirica onyo me mako potbuk weng." "message": "Yer mapeca ma i tung lacuc malo me mako kabedo ma nen i dirica onyo me mako potbuk weng."
}, },
"tourHeaderFour": {
"message": "Kit ma imito"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Kal" "message": "Kal"
}, },

View File

@ -80,17 +80,17 @@
"message": "انقر و اسحب لالتقاط جزء معين من الصفحة. يمكنك أيضًا التحويم لإبراز التحديد." "message": "انقر و اسحب لالتقاط جزء معين من الصفحة. يمكنك أيضًا التحويم لإبراز التحديد."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "كما تريدها"
},
"tourBodyThree": {
"message": "احفظ اللقطات التي أخذتها على الوب لمشاركتها بسهولة، أو نزّلها على حاسوبك. يمكنك أيضًل النقر على زر ”لقطاتي“ للعثور على كل اللقطات التي أخذتها."
},
"tourHeaderFour": {
"message": "التقط النوافذ أو صفحات كاملة" "message": "التقط النوافذ أو صفحات كاملة"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "اختر الأزرار في أعلى اليمين لالتقاط المنطقة المرئية في النافذة أو الصفحة كلها." "message": "اختر الأزرار في أعلى اليمين لالتقاط المنطقة المرئية في النافذة أو الصفحة كلها."
}, },
"tourHeaderFour": {
"message": "كما تريدها"
},
"tourBodyFour": {
"message": "احفظ اللقطات التي أخذتها على الوب لمشاركتها بسهولة، أو نزّلها على حاسوبك. يمكنك أيضًل النقر على زر ”لقطاتي“ للعثور على كل اللقطات التي أخذتها."
},
"tourSkip": { "tourSkip": {
"message": "تخطَّ" "message": "تخطَّ"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Вы не можаце зрабіць здымак старонкі Firefox Screenshots!" "message": "Вы не можаце зрабіць здымак старонкі Firefox Screenshots!"
}, },
"emptySelectionErrorTitle": {
"message": "Абраная вобласць занадта малая"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Вой! З Firefox Screenshots нешта не так." "message": "Вой! З Firefox Screenshots нешта не так."
}, },
@ -80,17 +83,17 @@
"message": "Пстрыкніце і пацягніце мышшу для захопу часткі старонкі. Вы таксама можаце навесці курсор мышы для падсвятлення абранай вобласці." "message": "Пстрыкніце і пацягніце мышшу для захопу часткі старонкі. Вы таксама можаце навесці курсор мышы для падсвятлення абранай вобласці."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "Як вам падабаецца"
},
"tourBodyThree": {
"message": "Захоўваеце свае здымкі ў Інтэрнэце, каб лёгка імі дзяліцца, або загружайце іх на свой камп'ютар. Вы таксама можаце прагледзець усе захаваныя здымкі, націснуўшы на кнопку Мае здымкі."
},
"tourHeaderFour": {
"message": "Рабіце захоп вокнаў або цэлых старонак" "message": "Рабіце захоп вокнаў або цэлых старонак"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "З дапамогай кнопак у верхнім правым куце выбірайце захоп бачнай вобласці акна або старонкі цалкам." "message": "З дапамогай кнопак у верхнім правым куце выбірайце захоп бачнай вобласці акна або старонкі цалкам."
}, },
"tourHeaderFour": {
"message": "Як вам падабаецца"
},
"tourBodyFour": {
"message": "Захоўваеце свае здымкі ў Інтэрнэце, каб лёгка імі дзяліцца, або загружайце іх на свой камп'ютар. Вы таксама можаце прагледзець усе захаваныя здымкі, націснуўшы на кнопку Мае здымкі."
},
"tourSkip": { "tourSkip": {
"message": "Прапусьціць" "message": "Прапусьціць"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Не може да правите снимки на страницата на Firefox Screenshots!" "message": "Не може да правите снимки на страницата на Firefox Screenshots!"
}, },
"emptySelectionErrorTitle": {
"message": "Избраната област е твърде малка"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Леле! Нещо се обърка с Firefox Screenshots." "message": "Леле! Нещо се обърка с Firefox Screenshots."
}, },
@ -80,17 +83,17 @@
"message": "Щракнете с мишката или влачете, за да уловите части от страницата. Посочвайки елементи от страницата те се осветяват." "message": "Щракнете с мишката или влачете, за да уловите части от страницата. Посочвайки елементи от страницата те се осветяват."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "Както ви харесва"
},
"tourBodyThree": {
"message": "Запазете снимките на страници от Мрежата за по-лесно споделяне или ги изтеглете на компютъра си. А бутонът „Моите снимки“ ще ви покаже всички направени от вас снимки."
},
"tourHeaderFour": {
"message": "Улавяйте прозорци и цели страници" "message": "Улавяйте прозорци и цели страници"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Използвайте бутоните в горния десен ъгъл, за да уловите само видимата част или цялата страница." "message": "Използвайте бутоните в горния десен ъгъл, за да уловите само видимата част или цялата страница."
}, },
"tourHeaderFour": {
"message": "Както ви харесва"
},
"tourBodyFour": {
"message": "Запазете снимките на страници от Мрежата за по-лесно споделяне или ги изтеглете на компютъра си. А бутонът „Моите снимки“ ще ви покаже всички направени от вас снимки."
},
"tourSkip": { "tourSkip": {
"message": "Прескачане" "message": "Прескачане"
}, },

View File

@ -80,17 +80,17 @@
"message": "একটি পেজের কিয়দংশ ক্যাপচার করতে ক্লিক করে ড্রাগ করুন। অতঃপর আপনি মাউজ হোভার করে আপনার নির্বাচিত অংশ হাইলাইট করতে পারবেন।" "message": "একটি পেজের কিয়দংশ ক্যাপচার করতে ক্লিক করে ড্রাগ করুন। অতঃপর আপনি মাউজ হোভার করে আপনার নির্বাচিত অংশ হাইলাইট করতে পারবেন।"
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "আপনি যেমন পছন্দ করেন"
},
"tourBodyThree": {
"message": "আপনার ক্রপ করা সটসমূহ ওয়েবে রাখুন সহজে শেয়ার করার সুবিধার্থে, অথবা আপনার কম্পিউটারে ডাউনলোড করুন। আপনার সকল সটসমূহ খুঁজে পেতে আমার সটসমূহ বাটনে ক্লিক করুন।"
},
"tourHeaderFour": {
"message": "উইন্ডো ক্যাপচার করুন অথবা পুরো পেজ" "message": "উইন্ডো ক্যাপচার করুন অথবা পুরো পেজ"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "ইউন্ডোতে দৃশ্যমান অংশ অথবা সম্পূর্ণ পেজ ক্যাপচার করতে উপরে ডানদিকের বাটনগুলো থেকে নির্বাচন করুন।" "message": "ইউন্ডোতে দৃশ্যমান অংশ অথবা সম্পূর্ণ পেজ ক্যাপচার করতে উপরে ডানদিকের বাটনগুলো থেকে নির্বাচন করুন।"
}, },
"tourHeaderFour": {
"message": "আপনি যেমন পছন্দ করেন"
},
"tourBodyFour": {
"message": "আপনার ক্রপ করা সটসমূহ ওয়েবে রাখুন সহজে শেয়ার করার সুবিধার্থে, অথবা আপনার কম্পিউটারে ডাউনলোড করুন। আপনার সকল সটসমূহ খুঁজে পেতে আমার সটসমূহ বাটনে ক্লিক করুন।"
},
"tourSkip": { "tourSkip": {
"message": "এড়িয়ে যান" "message": "এড়িয়ে যান"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Nelze pořizovat snímek stránky Firefox Screenshots!" "message": "Nelze pořizovat snímek stránky Firefox Screenshots!"
}, },
"emptySelectionErrorTitle": {
"message": "Vybraná oblast je moc malá"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Jejda! Služba Firefox Screenshots přestala pracovat." "message": "Jejda! Služba Firefox Screenshots přestala pracovat."
}, },
@ -80,17 +83,17 @@
"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." "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": { "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" "message": "Pořizujte snímky jen částí nebo i celých stránek"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Pomocí tlačítek vpravo nahoře můžete pořídit snímek jen viditelné části nebo úplně celé stránky." "message": "Pomocí tlačítek vpravo nahoře můžete pořídit snímek jen viditelné části nebo úplně celé stránky."
}, },
"tourHeaderFour": {
"message": "Jak sami chcete"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Přeskočit" "message": "Přeskočit"
}, },

View File

@ -80,17 +80,17 @@
"message": "Cliciwch a llusgo i gipio rhan o dudalen. Gallwch hofran i amlygu eich dewis." "message": "Cliciwch a llusgo i gipio rhan o dudalen. Gallwch hofran i amlygu eich dewis."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "Yn Ôl eich Dewis"
},
"tourBodyThree": {
"message": "Cadwch eich lluniau wedi eu golygu i'r We ar gyfer rhannu haws, neu eu llwytho i lawr i'ch cyfrifiadur. Gallwch hefyd glicio ar Fy Lluniau i weld pob llun sydd gennych."
},
"tourHeaderFour": {
"message": "Cipio Ffenestri neu Dudalennau Cyfan" "message": "Cipio Ffenestri neu Dudalennau Cyfan"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Dewiswch y botymau ar y dde uchod i gipio ardal gweladwy mewn ffenestr neu i gipio tudalen gyfan." "message": "Dewiswch y botymau ar y dde uchod i gipio ardal gweladwy mewn ffenestr neu i gipio tudalen gyfan."
}, },
"tourHeaderFour": {
"message": "Yn Ôl eich Dewis"
},
"tourBodyFour": {
"message": "Cadwch eich lluniau wedi eu golygu i'r We ar gyfer rhannu haws, neu eu llwytho i lawr i'ch cyfrifiadur. Gallwch hefyd glicio ar Fy Lluniau i weld pob llun sydd gennych."
},
"tourSkip": { "tourSkip": {
"message": "SKIP" "message": "SKIP"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Du kan ikke tage skærmbilleder af en side i Firefox Screenshots." "message": "Du kan ikke tage skærmbilleder af en side i Firefox Screenshots."
}, },
"emptySelectionErrorTitle": {
"message": "Din markering er for lille"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Hov! Noget gik helt galt med Firefox Screenshots." "message": "Hov! Noget gik helt galt med Firefox Screenshots."
}, },
@ -80,17 +83,17 @@
"message": "Klik og træk for at tage et udklip af en del af en side. Du kan også holde markøren over for at fremhæve din markering." "message": "Klik og træk for at tage et udklip af en del af en side. Du kan også holde markøren over for at fremhæve din markering."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "Som du vil have det."
},
"tourBodyThree": {
"message": "Gem dine beskårne skærmbilleder på nettet for nemmere at dele dem - eller hent dem ned på din computer. Du kan også klikke på knappen \"Mine skærmbilleder\" for at finde de skærmbilleder, du har taget."
},
"tourHeaderFour": {
"message": "Tag skærmbilleder af vinduer eller hele sider." "message": "Tag skærmbilleder af vinduer eller hele sider."
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Brug knapperne øverst til højre for at tage et skærmbillede af det synlige område i vinduet eller for at tage et skærmbillede af hele siden." "message": "Brug knapperne øverst til højre for at tage et skærmbillede af det synlige område i vinduet eller for at tage et skærmbillede af hele siden."
}, },
"tourHeaderFour": {
"message": "Som du vil have det."
},
"tourBodyFour": {
"message": "Gem dine beskårne skærmbilleder på nettet for nemmere at dele dem - eller hent dem ned på din computer. Du kan også klikke på knappen \"Mine skærmbilleder\" for at finde de skærmbilleder, du har taget."
},
"tourSkip": { "tourSkip": {
"message": "SPRING OVER" "message": "SPRING OVER"
}, },

View File

@ -83,17 +83,17 @@
"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." "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": { "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" "message": "Fenster oder ganze Seiten speichern"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Nutzen Sie die Schaltflächen rechts oben, um den sichtbaren Bereich im Fenster oder eine ganze Seite zu speichern." "message": "Nutzen Sie die Schaltflächen rechts oben, um den sichtbaren Bereich im Fenster oder eine ganze Seite zu speichern."
}, },
"tourHeaderFour": {
"message": "Wie Sie möchten"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Überspringen" "message": "Überspringen"
}, },

View File

@ -83,17 +83,17 @@
"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ł." "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": { "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ś" "message": "Wokna abo cełe boki składowaś"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Wubjeŕśo tłocašk górjejce napšawo, aby widobny wobcerk we woknje abo ceły bok fotografěrowaś." "message": "Wubjeŕśo tłocašk górjejce napšawo, aby widobny wobcerk we woknje abo ceły bok fotografěrowaś."
}, },
"tourHeaderFour": {
"message": "Tak, kaž se wam spódoba"
},
"tourBodyFour": {
"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ł."
},
"tourSkip": { "tourSkip": {
"message": "Pśeskócyś" "message": "Pśeskócyś"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Δεν μπορεί να γίνει λήψη ενός στιγμιότυπου της σελίδας Firefox Screenshots!" "message": "Δεν μπορεί να γίνει λήψη ενός στιγμιότυπου της σελίδας Firefox Screenshots!"
}, },
"emptySelectionErrorTitle": {
"message": "Η επιλογή σας είναι πολύ μικρή"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Ωχ! Κάτι πήγε στραβά στην υπηρεσία Firefox Screenshots." "message": "Ωχ! Κάτι πήγε στραβά στην υπηρεσία Firefox Screenshots."
}, },
@ -80,17 +83,17 @@
"message": "Κάντε κλικ και σύρετε για την καταγραφή ενός τμήματος της σελίδας. Μπορείτε να επισημάνετε την επιλογή σας μετακινώντας τον ποντίκι σας επάνω της." "message": "Κάντε κλικ και σύρετε για την καταγραφή ενός τμήματος της σελίδας. Μπορείτε να επισημάνετε την επιλογή σας μετακινώντας τον ποντίκι σας επάνω της."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "Ακριβώς όπως το θέλετε"
},
"tourBodyThree": {
"message": "Αποθηκεύστε της λήψεις σας στο Διαδίκτυο για ευκολότερο διαμοιρασμό, η λήψη τους στον υπολογιστή σας. Μπορείτε να βρείτε όλες τις λήψεις σας πατώντας στο κουμπί «Οι λήψεις μου»."
},
"tourHeaderFour": {
"message": "Λήψη παραθύρων ή ολόκληρων σελίδων" "message": "Λήψη παραθύρων ή ολόκληρων σελίδων"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Επιλέξτε τα κουμπιά επάνω δεξιά για να καταγράψετε την ορατή περιοχή του παραθύρου ή να καταγράψετε μια ολόκληρη σελίδα." "message": "Επιλέξτε τα κουμπιά επάνω δεξιά για να καταγράψετε την ορατή περιοχή του παραθύρου ή να καταγράψετε μια ολόκληρη σελίδα."
}, },
"tourHeaderFour": {
"message": "Ακριβώς όπως το θέλετε"
},
"tourBodyFour": {
"message": "Αποθηκεύστε της λήψεις σας στο Διαδίκτυο για ευκολότερο διαμοιρασμό, η λήψη τους στον υπολογιστή σας. Μπορείτε να βρείτε όλες τις λήψεις σας πατώντας στο κουμπί «Οι λήψεις μου»."
},
"tourSkip": { "tourSkip": {
"message": "Παράβλεψη" "message": "Παράβλεψη"
}, },

View File

@ -80,17 +80,17 @@
"message": "Click and drag to capture just a portion of a page. You can also hover to highlight your selection." "message": "Click and drag to capture just a portion of a page. You can also hover to highlight your selection."
}, },
"tourHeaderThree": { "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 youve taken."
},
"tourHeaderFour": {
"message": "Capture Windows or Entire Pages" "message": "Capture Windows or Entire Pages"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Select the buttons in the upper right to capture the visible area in the window or to capture an entire page." "message": "Select the buttons in the upper right to capture the visible area in the window or to capture an entire page."
}, },
"tourHeaderFour": {
"message": "As You Like It"
},
"tourBodyFour": {
"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 youve taken."
},
"tourSkip": { "tourSkip": {
"message": "SKIP" "message": "SKIP"
}, },

View File

@ -83,17 +83,17 @@
"message": "Click and drag to capture just a portion of a page. You can also hover to highlight your selection." "message": "Click and drag to capture just a portion of a page. You can also hover to highlight your selection."
}, },
"tourHeaderThree": { "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 youve taken."
},
"tourHeaderFour": {
"message": "Capture Windows or Entire Pages" "message": "Capture Windows or Entire Pages"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Select the buttons in the upper right to capture the visible area in the window or to capture an entire page." "message": "Select the buttons in the upper right to capture the visible area in the window or to capture an entire page."
}, },
"tourHeaderFour": {
"message": "As You Like It"
},
"tourBodyFour": {
"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 youve taken."
},
"tourSkip": { "tourSkip": {
"message": "SKIP" "message": "SKIP"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "¡No se puede hacer una captura de la página de capturas de Firefox!" "message": "¡No se puede hacer una captura de la página de capturas de Firefox!"
}, },
"emptySelectionErrorTitle": {
"message": "La selección es demasiado chica"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "¡Apa! La capturas de pantalla de Firefox se volvieron locas." "message": "¡Apa! La capturas de pantalla de Firefox se volvieron locas."
}, },
@ -80,17 +83,17 @@
"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." "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": { "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" "message": "Capturar ventanas o páginas enteras"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Seleccioná los botones arriba a la derecha para capturar el área visible en la ventana o la página completa." "message": "Seleccioná los botones arriba a la derecha para capturar el área visible en la ventana o la página completa."
}, },
"tourHeaderFour": {
"message": "Como te guste"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Saltear" "message": "Saltear"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "¡No puedes tomar una captura de una página de Firefox Screenshots!" "message": "¡No puedes tomar una captura de una página de Firefox Screenshots!"
}, },
"emptySelectionErrorTitle": {
"message": "Tu selección es muy pequeña"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "¡Guau! Firefox Screenshots se copetió." "message": "¡Guau! Firefox Screenshots se copetió."
}, },
@ -80,17 +83,17 @@
"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." "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": { "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" "message": "Captura ventanas o páginas completas"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Selecciona los botones en la parte superior derecha para capturar el área visible ne la ventana o para capturar una página completa." "message": "Selecciona los botones en la parte superior derecha para capturar el área visible ne la ventana o para capturar una página completa."
}, },
"tourHeaderFour": {
"message": "Como tu quieras"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "SALTAR" "message": "SALTAR"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "¡No puedes hacer una captura de la página de capturas de Firefox!" "message": "¡No puedes hacer una captura de la página de capturas de Firefox!"
}, },
"emptySelectionErrorTitle": {
"message": "Tu selección es demasiado pequeña"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "¡Vaya! La página de capturas de pantalla de Firefox se ha vuelto loca." "message": "¡Vaya! La página de capturas de pantalla de Firefox se ha vuelto loca."
}, },
@ -80,17 +83,17 @@
"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." "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": { "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" "message": "Haz capturas de Windows o páginas completas"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Selecciona los botones de la parte superior derecha para capturar el área visible en Windows o la página completa." "message": "Selecciona los botones de la parte superior derecha para capturar el área visible en Windows o la página completa."
}, },
"tourHeaderFour": {
"message": "Como más te guste"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Saltar" "message": "Saltar"
}, },

View File

@ -83,17 +83,17 @@
"message": "Haz clic y arrastra para capturas sólo una parte de la página. También puedes desplazarte para resaltar tu selección." "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": { "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" "message": "Captura ventanas o páginas enteras"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Selecciona los botones en la parte superior derecha para capturar el área visible en la ventana o para capturar una página completa." "message": "Selecciona los botones en la parte superior derecha para capturar el área visible en la ventana o para capturar una página completa."
}, },
"tourHeaderFour": {
"message": "Como te gusta"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Ignorar" "message": "Ignorar"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Firefox Screenshots lehest ei saa ekraanipilti teha!" "message": "Firefox Screenshots lehest ei saa ekraanipilti teha!"
}, },
"emptySelectionErrorTitle": {
"message": "Valik on liiga väike"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Oi-oi! Firefox Screenshots läks sassi." "message": "Oi-oi! Firefox Screenshots läks sassi."
}, },
@ -80,17 +83,17 @@
"message": "Klõpsa ja lohista lehe osa valimiseks. Samuti võid valiku esile toomiseks kursorit selle kohal hoida." "message": "Klõpsa ja lohista lehe osa valimiseks. Samuti võid valiku esile toomiseks kursorit selle kohal hoida."
}, },
"tourHeaderThree": { "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" "message": "Salvesta aknaid või terveid lehti"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Kasuta nuppe ülal paremal aknas nähtava ala või terve lehe salvestamiseks." "message": "Kasuta nuppe ülal paremal aknas nähtava ala või terve lehe salvestamiseks."
}, },
"tourHeaderFour": {
"message": "Nii, kuidas sulle meeldib"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Jäta vahele" "message": "Jäta vahele"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "نمی‌توانید از صفحهٔ تصاویرِ فایرفاکس عکس بگیرید!" "message": "نمی‌توانید از صفحهٔ تصاویرِ فایرفاکس عکس بگیرید!"
}, },
"emptySelectionErrorTitle": {
"message": "انتخاب شما خیلی کوچک است"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "اوه! سرویس تصاویر صفحه فایرفاکس قاطی کرده." "message": "اوه! سرویس تصاویر صفحه فایرفاکس قاطی کرده."
}, },
@ -80,17 +83,17 @@
"message": "کلیک کنید و بکشید تا فقط از قسمتی از صفحه عکس بگیرید. می‌توانید برای برجسته کردن روی ناحیه انتخاب شده حرکت کنید." "message": "کلیک کنید و بکشید تا فقط از قسمتی از صفحه عکس بگیرید. می‌توانید برای برجسته کردن روی ناحیه انتخاب شده حرکت کنید."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "همانطور که می‌پسندید"
},
"tourBodyThree": {
"message": "عکس‌های بریده شده خود را برای به اشتراک‌گذاری راحت‌تر روی وب ذخیره کنید، یا آن‌ها را روی رایانه خود دریافت کنید. همچنین برای دیدن همهٔ عکس‌هایی که گرفتید می‌توانید روی دکمه «عکس‌های من» کلیک کنید."
},
"tourHeaderFour": {
"message": "ضبط پنجره یا کل صفحه‌ها" "message": "ضبط پنجره یا کل صفحه‌ها"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "برای گرفتن عکس از ناحیه قابل مشاهده در پنجره یا تمام صفحه از دکمه‌های بالا سمت راست استفاده کنید." "message": "برای گرفتن عکس از ناحیه قابل مشاهده در پنجره یا تمام صفحه از دکمه‌های بالا سمت راست استفاده کنید."
}, },
"tourHeaderFour": {
"message": "همانطور که می‌پسندید"
},
"tourBodyFour": {
"message": "عکس‌های بریده شده خود را برای به اشتراک‌گذاری راحت‌تر روی وب ذخیره کنید، یا آن‌ها را روی رایانه خود دریافت کنید. همچنین برای دیدن همهٔ عکس‌هایی که گرفتید می‌توانید روی دکمه «عکس‌های من» کلیک کنید."
},
"tourSkip": { "tourSkip": {
"message": "رد کردن" "message": "رد کردن"
}, },

View File

@ -80,17 +80,17 @@
"message": "Kaappaa vain osa sivusta napsauttamalla ja vetämällä. Voit myös korostaa valinnan pitämällä hiirtä sen päällä." "message": "Kaappaa vain osa sivusta napsauttamalla ja vetämällä. Voit myös korostaa valinnan pitämällä hiirtä sen päällä."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "Haluamallasi tavalla"
},
"tourBodyThree": {
"message": "Tallenna rajaamasi kuvat verkkoon helpompaa jakamista varten tai lataa ne tietokoneellesi. Voit myös napsauttaa Omat kaappaukset -painiketta ja nähdä kaikki ottamasi kuvat."
},
"tourHeaderFour": {
"message": "Kaappaa ikkunoita tai kokonaisia sivuja" "message": "Kaappaa ikkunoita tai kokonaisia sivuja"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Valitse oikean yläkulman painikkeista joko ikkunassa näkyvän alueen kaappaus tai koko sivun kaappaus." "message": "Valitse oikean yläkulman painikkeista joko ikkunassa näkyvän alueen kaappaus tai koko sivun kaappaus."
}, },
"tourHeaderFour": {
"message": "Haluamallasi tavalla"
},
"tourBodyFour": {
"message": "Tallenna rajaamasi kuvat verkkoon helpompaa jakamista varten tai lataa ne tietokoneellesi. Voit myös napsauttaa Omat kaappaukset -painiketta ja nähdä kaikki ottamasi kuvat."
},
"tourSkip": { "tourSkip": {
"message": "OHITA" "message": "OHITA"
}, },

View File

@ -83,17 +83,17 @@
"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." "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": { "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" "message": "Effectuez des captures décran de fenêtres ou de pages entières"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Utilisez les boutons en haut à droite pour capturer au choix la zone visible dans la fenêtre ou la page entière." "message": "Utilisez les boutons en haut à droite pour capturer au choix la zone visible dans la fenêtre ou la page entière."
}, },
"tourHeaderFour": {
"message": "À votre guise"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "IGNORER" "message": "IGNORER"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Jo kinne net in skermprintsje meitsje fan in Firefox Screenshots-side!" "message": "Jo kinne net in skermprintsje meitsje fan in Firefox Screenshots-side!"
}, },
"emptySelectionErrorTitle": {
"message": "Jo seleksje is te lyts"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Oeps! Firefox Screenshots is yn 'e war." "message": "Oeps! Firefox Screenshots is yn 'e war."
}, },
@ -80,17 +83,17 @@
"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." "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": { "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" "message": "Fetsje finsters of folsleine websiden"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Selektearje knoppen rjochts boppe-oan om it sichtbere gebiet yn it finster te fetsjen, of fetsje in folsleine side." "message": "Selektearje knoppen rjochts boppe-oan om it sichtbere gebiet yn it finster te fetsjen, of fetsje in folsleine side."
}, },
"tourHeaderFour": {
"message": "Nei jo winsk"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Oerslaan" "message": "Oerslaan"
}, },

View File

@ -80,17 +80,17 @@
"message": "પાનાંના માત્ર એક ભાગ મેળવવા માટે ક્લિક કરો અને ખેંચો. તમે પણ તમારી પસંદગી પ્રકાશિત કરવા માટે હૉવર કરી શકો છો." "message": "પાનાંના માત્ર એક ભાગ મેળવવા માટે ક્લિક કરો અને ખેંચો. તમે પણ તમારી પસંદગી પ્રકાશિત કરવા માટે હૉવર કરી શકો છો."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "તમને જે ગમે"
},
"tourBodyThree": {
"message": "સરળ શેરિંગ માટે વેબ પર તમારા કપાઈ શોટ સાચવો, અથવા તેમને તમારા કમ્પ્યુટર પર ડાઉનલોડ કરો. તમે બધા શોટ મેળવવા માટે મારું શોટ્સ બટન પર ક્લિક કરી પણ શકો છો બધા શોટ તમે લીધેલા શોધવા માટે."
},
"tourHeaderFour": {
"message": "વિન્ડોઝ અથવા સમગ્ર પાના કેદ કરો" "message": "વિન્ડોઝ અથવા સમગ્ર પાના કેદ કરો"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "ઉપર જમણા બટનો પસંદ કરો વિન્ડોમાં દૃશ્યમાન વિસ્તાર મેળવવા માટે અથવા આખુ પાનું કેપ્ચર કરવા માટે." "message": "ઉપર જમણા બટનો પસંદ કરો વિન્ડોમાં દૃશ્યમાન વિસ્તાર મેળવવા માટે અથવા આખુ પાનું કેપ્ચર કરવા માટે."
}, },
"tourHeaderFour": {
"message": "તમને જે ગમે"
},
"tourBodyFour": {
"message": "સરળ શેરિંગ માટે વેબ પર તમારા કપાઈ શોટ સાચવો, અથવા તેમને તમારા કમ્પ્યુટર પર ડાઉનલોડ કરો. તમે બધા શોટ મેળવવા માટે મારું શોટ્સ બટન પર ક્લિક કરી પણ શકો છો બધા શોટ તમે લીધેલા શોધવા માટે."
},
"tourSkip": { "tourSkip": {
"message": "છોડવા" "message": "છોડવા"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "לא ניתן לצלם את הדף של Firefox Screenshot עצמו!" "message": "לא ניתן לצלם את הדף של Firefox Screenshot עצמו!"
}, },
"emptySelectionErrorTitle": {
"message": "הבחירה שלך קטנה מידי"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "אויש! Firefox Screenshots ירד מהפסים." "message": "אויש! Firefox Screenshots ירד מהפסים."
}, },
@ -80,17 +83,17 @@
"message": "ניתן ללחוץ ולגרור כדי לצלם רק מקטע מהעמוד. ניתן גם לרחף מעל כדי לסמן את הבחירה שלך." "message": "ניתן ללחוץ ולגרור כדי לצלם רק מקטע מהעמוד. ניתן גם לרחף מעל כדי לסמן את הבחירה שלך."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "לפי טעמך"
},
"tourBodyThree": {
"message": "שמירת הצילומים החתוכים שלך לאחסון מקוון לצורך שיתוף פשוט יותר, או להוריד אותם למחשב שלך. ניתן גם ללחוץ על כפתור הצילומים שלי כדי למצוא את כל הצילומים שצילמת."
},
"tourHeaderFour": {
"message": "לצלם חלונות או דפים שלמים" "message": "לצלם חלונות או דפים שלמים"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "בחרו בכפתורים שבחלק העליון כדי לצלם את האזור הגלוי בחלון או כדי לצלם את הדף כולו." "message": "בחרו בכפתורים שבחלק העליון כדי לצלם את האזור הגלוי בחלון או כדי לצלם את הדף כולו."
}, },
"tourHeaderFour": {
"message": "לפי טעמך"
},
"tourBodyFour": {
"message": "שמירת הצילומים החתוכים שלך לאחסון מקוון לצורך שיתוף פשוט יותר, או להוריד אותם למחשב שלך. ניתן גם ללחוץ על כפתור הצילומים שלי כדי למצוא את כל הצילומים שצילמת."
},
"tourSkip": { "tourSkip": {
"message": "דילוג" "message": "דילוג"
}, },

View File

@ -80,17 +80,17 @@
"message": "पृष्ठ के बस एक हिस्से को कैद करने के लिए क्लिक करें और खींचें. आप अपने चयन को हाइलाइट करने के लिए भी जा सकते हैं." "message": "पृष्ठ के बस एक हिस्से को कैद करने के लिए क्लिक करें और खींचें. आप अपने चयन को हाइलाइट करने के लिए भी जा सकते हैं."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "जैसा आप इसे चाहते हैं"
},
"tourBodyThree": {
"message": "आसानी से साझा करने या उन्हें अपने कंप्यूटर पर डाउनलोड करने के लिए अपने क्रॉप किये गये शॉट को वेब पर सहेजें. आपके द्वारा लिए गये सभी शॉट्स को ढूंढने के लिए आप मेरे शॉट्स बटन पर भी क्लिक कर सकते हैं."
},
"tourHeaderFour": {
"message": "विंडोज़ या संपूर्ण पृष्ठों को कैद करें" "message": "विंडोज़ या संपूर्ण पृष्ठों को कैद करें"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "विंडो में दिखाई देने वाले क्षेत्र या एक पूरे पृष्ठ को कैद करने के लिए ऊपर में दाहिनी तरफ़ के बटन का चयन करें." "message": "विंडो में दिखाई देने वाले क्षेत्र या एक पूरे पृष्ठ को कैद करने के लिए ऊपर में दाहिनी तरफ़ के बटन का चयन करें."
}, },
"tourHeaderFour": {
"message": "जैसा आप इसे चाहते हैं"
},
"tourBodyFour": {
"message": "आसानी से साझा करने या उन्हें अपने कंप्यूटर पर डाउनलोड करने के लिए अपने क्रॉप किये गये शॉट को वेब पर सहेजें. आपके द्वारा लिए गये सभी शॉट्स को ढूंढने के लिए आप मेरे शॉट्स बटन पर भी क्लिक कर सकते हैं."
},
"tourSkip": { "tourSkip": {
"message": "SKIP" "message": "SKIP"
}, },

View File

@ -83,17 +83,17 @@
"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ł." "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": { "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ć" "message": "Wokna abo cyłe strony składować"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Wubjerće tłóčatka horjeka naprawo, zo byšće widźomny wobwod we woknje abo cyłu stronu fotografować." "message": "Wubjerće tłóčatka horjeka naprawo, zo byšće widźomny wobwod we woknje abo cyłu stronu fotografować."
}, },
"tourHeaderFour": {
"message": "Tak, kaž so wam spodoba"
},
"tourBodyFour": {
"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ł."
},
"tourSkip": { "tourSkip": {
"message": "Přeskočić" "message": "Přeskočić"
}, },

View File

@ -83,17 +83,17 @@
"message": "Kattintson és húzzon, hogy csak a lap egy részét mentse el. Vagy csak rá is mutathat a kijelöléshez." "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": { "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" "message": "Mentsen ablakokat vagy teljes lapokat"
}, },
"tourBodyFour": { "tourBodyThree": {
"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." "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."
}, },
"tourHeaderFour": {
"message": "Ahogy tetszik"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Kihagyás" "message": "Kihagyás"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Դուք չեք կարող ստանալ Firefox Screenshots-ի էջի պատկերը:" "message": "Դուք չեք կարող ստանալ Firefox Screenshots-ի էջի պատկերը:"
}, },
"emptySelectionErrorTitle": {
"message": "Ընտրվածը քիչ է"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Firefox Screenshots-ը գնաց գլխիվայր:" "message": "Firefox Screenshots-ը գնաց գլխիվայր:"
}, },
@ -80,17 +83,17 @@
"message": "Սեղմեք և քաշեք՝ ստանալու համար միայն էջի մի մասը: Նաև կարող եք վրայով անցկացնել՝ գունանշելու համար ընտրումը:" "message": "Սեղմեք և քաշեք՝ ստանալու համար միայն էջի մի մասը: Նաև կարող եք վրայով անցկացնել՝ գունանշելու համար ընտրումը:"
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "Ինչպես որ հավանում եք այն"
},
"tourBodyThree": {
"message": "Պահպանեք ձեր եզրատած որոշ պատկերներ վեբում՝ դրանք հեշտությամբ համօգտագործելու կամ ներբեռնելու համար ձեր համակարգչում: Նաև կարող եք սեղմել Իմ պատկերները՝ գտնելու ձեր բոլոր ֆայլերը:"
},
"tourHeaderFour": {
"message": "Ստանալ պատուհանը կամ ամբողջ էջեր" "message": "Ստանալ պատուհանը կամ ամբողջ էջեր"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Ընտրեք կոճակները վերևի աջ մասում՝ տեսանելի հատվածը ստանալու համար պատուհանում կամ ամբողջ էջը ստանալու համար:" "message": "Ընտրեք կոճակները վերևի աջ մասում՝ տեսանելի հատվածը ստանալու համար պատուհանում կամ ամբողջ էջը ստանալու համար:"
}, },
"tourHeaderFour": {
"message": "Ինչպես որ հավանում եք այն"
},
"tourBodyFour": {
"message": "Պահպանեք ձեր եզրատած որոշ պատկերներ վեբում՝ դրանք հեշտությամբ համօգտագործելու կամ ներբեռնելու համար ձեր համակարգչում: Նաև կարող եք սեղմել Իմ պատկերները՝ գտնելու ձեր բոլոր ֆայլերը:"
},
"tourSkip": { "tourSkip": {
"message": "Բաց թողնել" "message": "Բաց թողնել"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Anda tidak dapat merekam gambar dari laman Firefox Screenshots!" "message": "Anda tidak dapat merekam gambar dari laman Firefox Screenshots!"
}, },
"emptySelectionErrorTitle": {
"message": "Seleksi Anda terlalu kecil"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Wah! Firefox Screenshots mendadak kacau." "message": "Wah! Firefox Screenshots mendadak kacau."
}, },
@ -80,17 +83,17 @@
"message": "Klik dan seret untuk merekam sebagian area laman. Anda juga dapat menggeser kursor untuk menyoroti pilihan Anda." "message": "Klik dan seret untuk merekam sebagian area laman. Anda juga dapat menggeser kursor untuk menyoroti pilihan Anda."
}, },
"tourHeaderThree": { "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" "message": "Rekam Jendela atau Seluruh Laman"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Pilih tombol di kanan atas untuk merekam area yang terlihat pada jendela atau rekam seluruh laman." "message": "Pilih tombol di kanan atas untuk merekam area yang terlihat pada jendela atau rekam seluruh laman."
}, },
"tourHeaderFour": {
"message": "Sesuka Anda"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Lewati" "message": "Lewati"
}, },

View File

@ -83,17 +83,17 @@
"message": "Fai clic e trascina per catturare solo una parte della pagina. Posiziona il mouse sopra allarea selezionata per evidenziarla." "message": "Fai clic e trascina per catturare solo una parte della pagina. Posiziona il mouse sopra allarea selezionata per evidenziarla."
}, },
"tourHeaderThree": { "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" "message": "Cattura una finestra o una pagina intera"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Utilizza i pulsanti in alto a destra per catturare una parte della finestra o lintera pagina." "message": "Utilizza i pulsanti in alto a destra per catturare una parte della finestra o lintera pagina."
}, },
"tourHeaderFour": {
"message": "Come piace a te"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Ignora" "message": "Ignora"
}, },

View File

@ -83,17 +83,17 @@
"message": "クリック&ドラッグでページの一部だけをキャプチャーできます。また、マウスを当てれば選択範囲が強調表示されます。" "message": "クリック&ドラッグでページの一部だけをキャプチャーできます。また、マウスを当てれば選択範囲が強調表示されます。"
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "お好きなように"
},
"tourBodyThree": {
"message": "切り取ったショットを簡単に共有できるようウェブ上に保存したり、手元へダウンロードしたり。また「自分のショット」ボタンをクリックすれば、これまでに撮ったすべてのショットを見られます。"
},
"tourHeaderFour": {
"message": "ウィンドウもしくはページ全体をキャプチャー" "message": "ウィンドウもしくはページ全体をキャプチャー"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "右上のボタンを選択して、ウィンドウ内の表示範囲もしくはページ全体をキャプチャーしましょう。" "message": "右上のボタンを選択して、ウィンドウ内の表示範囲もしくはページ全体をキャプチャーしましょう。"
}, },
"tourHeaderFour": {
"message": "お好きなように"
},
"tourBodyFour": {
"message": "切り取ったショットを簡単に共有できるようウェブ上に保存したり、手元へダウンロードしたり。また「自分のショット」ボタンをクリックすれば、これまでに撮ったすべてのショットを見られます。"
},
"tourSkip": { "tourSkip": {
"message": "スキップ" "message": "スキップ"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Ur tezmireḍ ar ad teṭṭfeḍ agdil n usebter Firefox Screenshots!" "message": "Ur tezmireḍ ar ad teṭṭfeḍ agdil n usebter Firefox Screenshots!"
}, },
"emptySelectionErrorTitle": {
"message": "Tafrant inek wezzil-t aṭas"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Ihuh! Firefox Screenshots ur iteddu ara." "message": "Ihuh! Firefox Screenshots ur iteddu ara."
}, },
@ -80,17 +83,17 @@
"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." "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": { "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" "message": "Ṭṭef isfuyla neγ isebtar meṛṛa"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Fren tiqeffalin s afella ayeffus akken ad teṭṭfeḍ tamnaṭ yettbanen deg usfaylu neɣ asebter i meṛṛa." "message": "Fren tiqeffalin s afella ayeffus akken ad teṭṭfeḍ tamnaṭ yettbanen deg usfaylu neɣ asebter i meṛṛa."
}, },
"tourHeaderFour": {
"message": "Akken tebγiḍ"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Zgel" "message": "Zgel"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Firefox скриншоттары бетінің скриншотын түсіру мүмкін емес!" "message": "Firefox скриншоттары бетінің скриншотын түсіру мүмкін емес!"
}, },
"emptySelectionErrorTitle": {
"message": "Сіздің таңдауыңыз тым кішкентай"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Қап! Firefox скриншоттары жасамай қалған сияқты." "message": "Қап! Firefox скриншоттары жасамай қалған сияқты."
}, },
@ -80,17 +83,17 @@
"message": "Беттің тек бір бөлігін түсіру үшін тышқанды шертіп, тартыңыз. Таңдауыңызды түспен ерекшелеу үшін үстінен өткізсеңіз болады." "message": "Беттің тек бір бөлігін түсіру үшін тышқанды шертіп, тартыңыз. Таңдауыңызды түспен ерекшелеу үшін үстінен өткізсеңіз болады."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "Өзіңізге керек түрде"
},
"tourBodyThree": {
"message": "Қиылған скриншоттарыңыздбен оңай бөлісу үшін оларды интернетте сақтаңыз, немесе өз компьютеріңізге жүктеп алыңыз. Сонымен қатар, сіз жасаған барлық скриншоттарды табу үшін Менің скриншоттарым батырмасына шерте аласыз."
},
"tourHeaderFour": {
"message": "Терезелер немесе толық беттерді түсіріңіз" "message": "Терезелер немесе толық беттерді түсіріңіз"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Жоғарғы оң жақта орналасқан батырмаларды терезенің көрінетін аймағын, немесе толық бетті түсіру үшін қолданыңыз." "message": "Жоғарғы оң жақта орналасқан батырмаларды терезенің көрінетін аймағын, немесе толық бетті түсіру үшін қолданыңыз."
}, },
"tourHeaderFour": {
"message": "Өзіңізге керек түрде"
},
"tourBodyFour": {
"message": "Қиылған скриншоттарыңыздбен оңай бөлісу үшін оларды интернетте сақтаңыз, немесе өз компьютеріңізге жүктеп алыңыз. Сонымен қатар, сіз жасаған барлық скриншоттарды табу үшін Менің скриншоттарым батырмасына шерте аласыз."
},
"tourSkip": { "tourSkip": {
"message": "Аттап кету" "message": "Аттап кету"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Firefox Screenshots 페이지는 캡처할 수 없어요!" "message": "Firefox Screenshots 페이지는 캡처할 수 없어요!"
}, },
"emptySelectionErrorTitle": {
"message": "선택영역이 너무 작음"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "와우! Firefox Screenshots이 망가졌네요." "message": "와우! Firefox Screenshots이 망가졌네요."
}, },
@ -80,17 +83,17 @@
"message": "캡춰할 페이지의 부분을 클릭해서 드래그 해 보세요. 마우스를 올려서 선택한 부분을 확인할 수 있습니다." "message": "캡춰할 페이지의 부분을 클릭해서 드래그 해 보세요. 마우스를 올려서 선택한 부분을 확인할 수 있습니다."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "내가 원하는 대로"
},
"tourBodyThree": {
"message": "스크린샷을 공유하거나, 컴퓨터로 다운로드할 수도 있습니다. 내 스크린샷 버튼을 눌러서 지금까지 찍었던 모든 스크린샷을 찾을 수도 있습니다."
},
"tourHeaderFour": {
"message": "창이나 페이지 전체를 캡춰할 수 있습니다" "message": "창이나 페이지 전체를 캡춰할 수 있습니다"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "우측 위에 있는 버튼을 눌러 창을 캡처하거나 페이지 전체를 캡처할 수 있습니다." "message": "우측 위에 있는 버튼을 눌러 창을 캡처하거나 페이지 전체를 캡처할 수 있습니다."
}, },
"tourHeaderFour": {
"message": "내가 원하는 대로"
},
"tourBodyFour": {
"message": "스크린샷을 공유하거나, 컴퓨터로 다운로드할 수도 있습니다. 내 스크린샷 버튼을 눌러서 지금까지 찍었던 모든 스크린샷을 찾을 수도 있습니다."
},
"tourSkip": { "tourSkip": {
"message": "건너뛰기" "message": "건너뛰기"
}, },

View File

@ -80,17 +80,17 @@
"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." "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": { "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" "message": "Catua 'n barcon ò 'na pagina intrega"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Seleçionn-a i pomelli de d'ato a drita pe catuâ l'area vixibile into barcon ò a pagina intrega." "message": "Seleçionn-a i pomelli de d'ato a drita pe catuâ l'area vixibile into barcon ò a pagina intrega."
}, },
"tourHeaderFour": {
"message": "Comme te piaxe"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Ignòra" "message": "Ignòra"
}, },

View File

@ -80,17 +80,17 @@
"message": "ຄິກ ຫລື ລາກເພື່ອຖ່າຍພາບສະເພາະບາງສ່ວນຂອງຫນ້າເວັບ. ພ້ອມດຽວກັນນັ້ນທ່ານຍັງສາມາດເລື່ອນມາເພື່ອເນັ້ນພາບທີ່ທ່ານເລືອກ." "message": "ຄິກ ຫລື ລາກເພື່ອຖ່າຍພາບສະເພາະບາງສ່ວນຂອງຫນ້າເວັບ. ພ້ອມດຽວກັນນັ້ນທ່ານຍັງສາມາດເລື່ອນມາເພື່ອເນັ້ນພາບທີ່ທ່ານເລືອກ."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "ຕາມທີ່ທ່ານມັກ"
},
"tourBodyThree": {
"message": "ບັນທຶກຮູບພາບທີ່ທ່ານໄດ້ຄັອບເອົາໄວ້ລົງໄປໄວ້ໃນເວັບເພື່ອເຮັດໃຫ້ແບ່ງປັນໄດ້ງ່າຍ ຫລື ດາວໂຫລດໄປໄວ້ໃນຄອມພິວເຕີຂອງທ່ານ. ທ່ານຍັງສາມາດຄິກໃສ່ໃນປຸ່ມກົດ \"ຮູບພາບຂອງຂ້ອຍ\" ເພື່ອຊອກຫາຮູບພາບທັງຫມົດທີ່ທ່ານໄດ້ຖ່າຍເອົາໄວ້."
},
"tourHeaderFour": {
"message": "ຖ່າຍພາບວິນໂດ ຫລື ຫມົດທັ້ງຫນ້າ" "message": "ຖ່າຍພາບວິນໂດ ຫລື ຫມົດທັ້ງຫນ້າ"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "ເລືອກປຸ່ມກົດທີ່ຢູ່ເທິງເບື້ອງຂວາມືເພື່ອຈັບພາບໃນບໍລິເວນທີ່ເບິງເຫັນໄດ້ໃນວິນໂດ ຫລື ເພື່ອຈັບພາບທັງຫມົດໃນຫນ້າເວັບ." "message": "ເລືອກປຸ່ມກົດທີ່ຢູ່ເທິງເບື້ອງຂວາມືເພື່ອຈັບພາບໃນບໍລິເວນທີ່ເບິງເຫັນໄດ້ໃນວິນໂດ ຫລື ເພື່ອຈັບພາບທັງຫມົດໃນຫນ້າເວັບ."
}, },
"tourHeaderFour": {
"message": "ຕາມທີ່ທ່ານມັກ"
},
"tourBodyFour": {
"message": "ບັນທຶກຮູບພາບທີ່ທ່ານໄດ້ຄັອບເອົາໄວ້ລົງໄປໄວ້ໃນເວັບເພື່ອເຮັດໃຫ້ແບ່ງປັນໄດ້ງ່າຍ ຫລື ດາວໂຫລດໄປໄວ້ໃນຄອມພິວເຕີຂອງທ່ານ. ທ່ານຍັງສາມາດຄິກໃສ່ໃນປຸ່ມກົດ \"ຮູບພາບຂອງຂ້ອຍ\" ເພື່ອຊອກຫາຮູບພາບທັງຫມົດທີ່ທ່ານໄດ້ຖ່າຍເອົາໄວ້."
},
"tourSkip": { "tourSkip": {
"message": "ຂ້າມໄປ" "message": "ຂ້າມໄປ"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Negalite padaryti „Firefox Screenshots“ tinklalapio nuotraukos!" "message": "Negalite padaryti „Firefox Screenshots“ tinklalapio nuotraukos!"
}, },
"emptySelectionErrorTitle": {
"message": "Jūsų pasirinkimas yra per mažas"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Vau! „Firefox Screenshots“ sugedo." "message": "Vau! „Firefox Screenshots“ sugedo."
}, },
@ -80,17 +83,17 @@
"message": "Spustelėkite ir tempkite, kad užfiksuotumėte tik dalį tinklalapio. Taip pat galite užvesti pelę, norėdami paryškinti savo pasirinkimą." "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": { "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" "message": "Fiksuokite langus arba ištisus tinklalapius"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Pasirinkite mygtukus aukščiau dešinėje, norėdami užfiksuoti matomą lango dalį arba visą tinklalapį." "message": "Pasirinkite mygtukus aukščiau dešinėje, norėdami užfiksuoti matomą lango dalį arba visą tinklalapį."
}, },
"tourHeaderFour": {
"message": "Kaip jums patogiau"
},
"tourBodyFour": {
"message": "Įrašykite padarytas nuotraukas saityne patogesniam dalinimuisi, arba atsisiųskite jas į savo kompiuterį. Spustelėję mygtuką „Mano kadrai“, matysite visas savo padarytas nuotraukas."
},
"tourSkip": { "tourSkip": {
"message": "SKIP" "message": "SKIP"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Anda tidak boleh mengambil gambar halaman Firefox Screenshots!" "message": "Anda tidak boleh mengambil gambar halaman Firefox Screenshots!"
}, },
"emptySelectionErrorTitle": {
"message": "Pilihan anda terlalu kecil"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Oh tidak! Firefox Screenshot tidak berfungsi dengan betul." "message": "Oh tidak! Firefox Screenshot tidak berfungsi dengan betul."
}, },
@ -80,17 +83,17 @@
"message": "Klik dan seret untuk mengambil gambar sebahagian daripada halaman. Anda boleh juga serlahkan pilihan anda." "message": "Klik dan seret untuk mengambil gambar sebahagian daripada halaman. Anda boleh juga serlahkan pilihan anda."
}, },
"tourHeaderThree": { "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" "message": "Tangkap Tetingkap atau Keseluruhan Halaman"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Pilih butang di bahagian atas kanan untuk merakam kawasan paparan dalam tetingkap atau untuk merakamkan keseluruhan halaman." "message": "Pilih butang di bahagian atas kanan untuk merakam kawasan paparan dalam tetingkap atau untuk merakamkan keseluruhan halaman."
}, },
"tourHeaderFour": {
"message": "Seperti Yang Anda Suka"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Langkau" "message": "Langkau"
}, },

View File

@ -48,10 +48,10 @@
"message": "ကိုယ်နှစ်သက်ရာ စာမျက်နှာများကို ဖမ်းယူပါ" "message": "ကိုယ်နှစ်သက်ရာ စာမျက်နှာများကို ဖမ်းယူပါ"
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "နှစ်သက်သလို" "message": "ဝင်ဒိုးများ သို့မဟုတ် စာမျက်နှာတစ်ခုလုံးကို ဖမ်းယူပါ"
}, },
"tourHeaderFour": { "tourHeaderFour": {
"message": "ဝင်ဒိုးများ သို့မဟုတ် စာမျက်နှာတစ်ခုလုံးကို ဖမ်းယူပါ" "message": "နှစ်သက်သလို"
}, },
"tourSkip": { "tourSkip": {
"message": "SKIP" "message": "SKIP"

View File

@ -12,7 +12,7 @@
"message": "Mine skjermbilder" "message": "Mine skjermbilder"
}, },
"screenshotInstructions": { "screenshotInstructions": {
"message": "Dra eller klikk på siden for å velge en region. Trykk på ESC for å avbryte." "message": "Dra eller klikk på siden for å velge et område. Trykk på ESC for å avbryte."
}, },
"saveScreenshotSelectedArea": { "saveScreenshotSelectedArea": {
"message": "Lagre" "message": "Lagre"
@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Du kan ikke ta skjermbilde av siden Firefox Screenshots!" "message": "Du kan ikke ta skjermbilde av siden Firefox Screenshots!"
}, },
"emptySelectionErrorTitle": {
"message": "Det valgte området er for liten"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Oi! Det ser ut til at Firefox Screenshots ikke fungerer korrekt." "message": "Oi! Det ser ut til at Firefox Screenshots ikke fungerer korrekt."
}, },
@ -80,17 +83,17 @@
"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." "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": { "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." "message": "Ta skjermbilde av vinduer eller hele sider."
}, },
"tourBodyFour": { "tourBodyThree": {
"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." "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."
}, },
"tourHeaderFour": {
"message": "Som du vil ha det"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Hopp over" "message": "Hopp over"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "U kunt geen afbeelding van een Firefox Screenshots-pagina maken!" "message": "U kunt geen afbeelding van een Firefox Screenshots-pagina maken!"
}, },
"emptySelectionErrorTitle": {
"message": "Uw selectie is te klein"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Ho! Er is iets mis met Firefox Screenshots." "message": "Ho! Er is iets mis met Firefox Screenshots."
}, },
@ -80,17 +83,17 @@
"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." "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": { "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 paginas vast" "message": "Leg vensters of hele paginas vast"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Selecteer de knoppen rechtsboven om het zichtbare gebied in het venster vast te leggen, of om een hele pagina vast te leggen." "message": "Selecteer de knoppen rechtsboven om het zichtbare gebied in het venster vast te leggen, of om een hele pagina vast te leggen."
}, },
"tourHeaderFour": {
"message": "Zoals u wilt"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Overslaan" "message": "Overslaan"
}, },

View File

@ -12,7 +12,7 @@
"message": "Mine skjermbilde" "message": "Mine skjermbilde"
}, },
"screenshotInstructions": { "screenshotInstructions": {
"message": "Drag eller klikk på sida for å velje ein region. Trykk på ESC for å avbryte." "message": "Drag eller klikk på sida for å velje eit område. Trykk på ESC for å avbryte."
}, },
"saveScreenshotSelectedArea": { "saveScreenshotSelectedArea": {
"message": "Lagre" "message": "Lagre"
@ -33,7 +33,7 @@
"message": "Lenke kopiert" "message": "Lenke kopiert"
}, },
"notificationLinkCopiedDetails": { "notificationLinkCopiedDetails": {
"message": "Lenka til skjermbildet ditt er kopiert til utklipp. Trykk på $META_KEY$-V for å lime inn.", "message": "Lenka til skjermbildet ditt er kopiert til utklippstavla. Trykk på $META_KEY$-V for å lime inn.",
"placeholders": { "placeholders": {
"meta_key": { "meta_key": {
"content": "$1" "content": "$1"
@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Du kan ikkje ta skjermbilde av sida Firefox Screenshots!" "message": "Du kan ikkje ta skjermbilde av sida Firefox Screenshots!"
}, },
"emptySelectionErrorTitle": {
"message": "Markeringa di er for lita"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Oj! Det ser ut til at Firefox Screenshots ikkje fungerer korrekt." "message": "Oj! Det ser ut til at Firefox Screenshots ikkje fungerer korrekt."
}, },
@ -80,17 +83,17 @@
"message": "Klikk for å drage og knipse berre ein del av sida. Du kan også føre musa over for å framheve merkt område." "message": "Klikk for å drage og knipse berre ein del av sida. Du kan også føre musa over for å framheve merkt område."
}, },
"tourHeaderThree": { "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" "message": "Knips vindauge eller heile sider"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Vel knappane i det øvre høgre hjørnet for å knipse det synlege området i vindauget eller for å knipse ei heil side." "message": "Vel knappane i det øvre høgre hjørnet for å knipse det synlege området i vindauget eller for å knipse ei heil side."
}, },
"tourHeaderFour": {
"message": "Som du vil ha det"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Hopp over" "message": "Hopp over"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Nie można wykonać zrzutu strony Firefox Screenshots." "message": "Nie można wykonać zrzutu strony Firefox Screenshots."
}, },
"emptySelectionErrorTitle": {
"message": "Zaznaczenie jest za małe"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Firefox Screenshots wymknęło się spod kontroli." "message": "Firefox Screenshots wymknęło się spod kontroli."
}, },
@ -80,17 +83,17 @@
"message": "Kliknij i przeciągnij, aby zapisać tylko część strony. Możesz także najechać, aby wyróżnić zaznaczony obszar." "message": "Kliknij i przeciągnij, aby zapisać tylko część strony. Możesz także najechać, aby wyróżnić zaznaczony obszar."
}, },
"tourHeaderThree": { "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" "message": "Zapisuj zrzuty okien lub całych stron"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Kliknij przycisk w górnym prawym rogu, aby zapisać obszar widoczny w oknie lub całą stronę." "message": "Kliknij przycisk w górnym prawym rogu, aby zapisać obszar widoczny w oknie lub całą stronę."
}, },
"tourHeaderFour": {
"message": "Tak, jak lubisz"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Pomiń" "message": "Pomiń"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Você não pode tirar uma captura em uma página de capturas de tela do Firefox!" "message": "Você não pode tirar uma captura em uma página de capturas de tela do Firefox!"
}, },
"emptySelectionErrorTitle": {
"message": "Sua seleção é muito pequena"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Uau! Algo correu mal com a capturas de tela do Firefox." "message": "Uau! Algo correu mal com a capturas de tela do Firefox."
}, },
@ -80,17 +83,17 @@
"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." "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": { "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" "message": "Capture janelas ou páginas inteiras"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Selecione os botões no canto superior direito para capturar a área visível na janela ou capturar uma página inteira." "message": "Selecione os botões no canto superior direito para capturar a área visível na janela ou capturar uma página inteira."
}, },
"tourHeaderFour": {
"message": "Como você quiser"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Pular" "message": "Pular"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Não pode tirar uma captura de uma página Firefox Screenshots!" "message": "Não pode tirar uma captura de uma página Firefox Screenshots!"
}, },
"emptySelectionErrorTitle": {
"message": "A sua seleção é demasiado pequena"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Uau! Algo correu mal com o Firefox Screenshots." "message": "Uau! Algo correu mal com o Firefox Screenshots."
}, },
@ -80,17 +83,17 @@
"message": "Clique e arraste para capturar apenas uma porção de uma página. Pode também pairar para destacar a sua seleção." "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": { "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" "message": "Capture janelas ou páginas inteiras"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Selecione os botões no canto superior direito para capturar a área visível na janela ou para capturar uma página inteira." "message": "Selecione os botões no canto superior direito para capturar a área visível na janela ou para capturar uma página inteira."
}, },
"tourHeaderFour": {
"message": "Como gosta"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "SALTAR" "message": "SALTAR"
}, },

View File

@ -80,17 +80,17 @@
"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." "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": { "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" "message": "Far maletgs da fanestras u paginas cumplettas"
}, },
"tourBodyFour": { "tourBodyThree": {
"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." "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."
}, },
"tourHeaderFour": {
"message": "Co che ti prefereschas"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Sursiglir" "message": "Sursiglir"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Вы не можете сделать скриншот страницы Скриншотов Firefox." "message": "Вы не можете сделать скриншот страницы Скриншотов Firefox."
}, },
"emptySelectionErrorTitle": {
"message": "Выбрана слишком небольшая область"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Ого! Скриншоты Firefox вышли из строя." "message": "Ого! Скриншоты Firefox вышли из строя."
}, },
@ -80,17 +83,17 @@
"message": "Щелкните и потяните мышью для захвата части страницы. Вы также можете навести курсор мыши для подсветки выбранной области." "message": "Щелкните и потяните мышью для захвата части страницы. Вы также можете навести курсор мыши для подсветки выбранной области."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "Как вам нравится"
},
"tourBodyThree": {
"message": "Сохраняйте свои снимки в Интернете, чтобы легко ими делиться, или загружайте их на свой компьютер. Вы также можете просмотреть все сохранённые снимки, нажав на кнопку Мои снимки."
},
"tourHeaderFour": {
"message": "Захватывайте окна или целые страницы" "message": "Захватывайте окна или целые страницы"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "С помощью кнопок в верхнем правом углу выбирайте захват видимой области окна или страницы целиком." "message": "С помощью кнопок в верхнем правом углу выбирайте захват видимой области окна или страницы целиком."
}, },
"tourHeaderFour": {
"message": "Как вам нравится"
},
"tourBodyFour": {
"message": "Сохраняйте свои снимки в Интернете, чтобы легко ими делиться, или загружайте их на свой компьютер. Вы также можете просмотреть все сохранённые снимки, нажав на кнопку Мои снимки."
},
"tourSkip": { "tourSkip": {
"message": "Пропустить" "message": "Пропустить"
}, },

View File

@ -83,17 +83,17 @@
"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." "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": { "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" "message": "Zachyťte okná alebo celé webové stránky"
}, },
"tourBodyFour": { "tourBodyThree": {
"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." "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."
}, },
"tourHeaderFour": {
"message": "Tak ako to chcete"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Preskočiť" "message": "Preskočiť"
}, },

View File

@ -83,17 +83,17 @@
"message": "Kliknite in povlecite, če želite zajeti samo del strani. Svojo izbiro lahko tudi poudarite, tako da preko nje povlečete miškin kazalec." "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": { "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" "message": "Zajemite okna ali celotne strani"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "V zgornjem desnem kotu izberite gumb za zajem vidnega območja v oknu ali celotne strani." "message": "V zgornjem desnem kotu izberite gumb za zajem vidnega območja v oknu ali celotne strani."
}, },
"tourHeaderFour": {
"message": "Kot vi želite"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Preskoči" "message": "Preskoči"
}, },

View File

@ -62,10 +62,10 @@
"message": "Fiksoni Në Foto Aq Sa Doni" "message": "Fiksoni Në Foto Aq Sa Doni"
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "Si Tju Pëlqejë" "message": "Fiksoni Dritare ose Krejt Faqet"
}, },
"tourHeaderFour": { "tourHeaderFour": {
"message": "Fiksoni Dritare ose Krejt Faqet" "message": "Si Tju Pëlqejë"
}, },
"tourDone": { "tourDone": {
"message": "U bë" "message": "U bë"

View File

@ -83,17 +83,17 @@
"message": "Кликните и превуците да усликате само део странице. Такође можете означити вашу селекцију." "message": "Кликните и превуците да усликате само део странице. Такође можете означити вашу селекцију."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "Као што волите"
},
"tourBodyThree": {
"message": "Сачувајте ваш исечени снимак на веб ради лакшег дељења или преузимања на ваш рачунар. Такође можете кликнути на дугме \"Моји снимци\" да пронађете све ваше снимке."
},
"tourHeaderFour": {
"message": "Усликајте прозоре или целе странице" "message": "Усликајте прозоре или целе странице"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Изаберите дугмад у горњем десном углу да усликате видљиве делове прозора или да усликате целу страницу." "message": "Изаберите дугмад у горњем десном углу да усликате видљиве делове прозора или да усликате целу страницу."
}, },
"tourHeaderFour": {
"message": "Као што волите"
},
"tourBodyFour": {
"message": "Сачувајте ваш исечени снимак на веб ради лакшег дељења или преузимања на ваш рачунар. Такође можете кликнути на дугме \"Моји снимци\" да пронађете све ваше снимке."
},
"tourSkip": { "tourSkip": {
"message": "Прескочи" "message": "Прескочи"
}, },

View File

@ -83,17 +83,17 @@
"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." "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": { "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" "message": "Fånga fönster eller hela sidor"
}, },
"tourBodyFour": { "tourBodyThree": {
"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." "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."
}, },
"tourHeaderFour": {
"message": "Som du vill ha det"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Hoppa över" "message": "Hoppa över"
}, },

View File

@ -0,0 +1,126 @@
{
"addonDescription": {
"message": "வலைபக்கங்களை நிரந்தரமாக (அ) தற்காலிகமாக துணுக்குகளாக (அ) திரைப்பிடிப்புகளாக சேமியுங்கள்."
},
"addonAuthorsList": {
"message": "மொசில்லா <screenshots-feedback@mozilla.com>"
},
"contextMenuLabel": {
"message": "ஒரு திரைப்பிடிப்பு செய்"
},
"myShotsLink": {
"message": "எனது திரைகள்"
},
"screenshotInstructions": {
"message": "பக்கத்தில் இழுத்தோ (அ) சொடுக்கியோ ஒரு பகுதியைத் தேர்வுச்செய்க. இரத்து செய்ய ESC விசையை அழுத்தவும்."
},
"saveScreenshotSelectedArea": {
"message": "சேமி"
},
"saveScreenshotVisibleArea": {
"message": "பார்ப்பதைச் சேமி"
},
"saveScreenshotFullPage": {
"message": "முழு பக்கத்தைச் சேமி"
},
"cancelScreenshot": {
"message": "இரத்து"
},
"downloadScreenshot": {
"message": "பதிவிறக்கு"
},
"notificationLinkCopiedTitle": {
"message": "தொடுப்பு நகலெடுக்கப்பட்டது"
},
"notificationLinkCopiedDetails": {
"message": "நீங்கள் எடுத்த திரைப்பிடிப்பிற்கான தொடுப்பு ஒட்டுபலகைக்கு நகலெடுக்கப்பட்டது. ஒட்ட $META_KEY$ விசையை அழுத்தவும்.",
"placeholders": {
"meta_key": {
"content": "$1"
}
}
},
"requestErrorTitle": {
"message": "சேவை இணைப்பில் இல்லை."
},
"requestErrorDetails": {
"message": "மன்னிக்க! உங்களின் திரைப்பிடிப்பைச் சேமிக்க முடியவில்லை. மீண்டும் முயற்சிக்கவும்."
},
"connectionErrorTitle": {
"message": "உங்களின் திரைப்பிடிப்பு சேவையகத்தை அணுக முடியவில்லை."
},
"connectionErrorDetails": {
"message": "தயவுச்செய்து உங்கள் இணைய இணைப்பைச் சரிபாருங்கள். உங்களால் இணையத்தை அணுக முடிந்தால் இது பயர்பாஃசு திரைப்பிடிப்பிற்கான இடைப்பட்ட சேவை துண்டிப்பாகும்."
},
"loginErrorDetails": {
"message": "பயர்பாஃசின் திரைப்பிடிப்பு சேவை தடைப்பட்டதால் உங்களின் திரைப்பிடிப்பைச் சேமிக்க முடியவில்லை. மீண்டும் முயற்சிக்கவும்."
},
"unshootablePageErrorTitle": {
"message": "இப்பக்கத்தை திரைப்பிடிப்பு செய்ய முடியாது."
},
"unshootablePageErrorDetails": {
"message": "இது ஒரு இணையத்தளம் போன்று தெரிவில்லை, எனவே உங்களால் திரைப்பிடிப்பு எடுக்க முடியாது."
},
"selfScreenshotErrorTitle": {
"message": "பயர்பாஃசு திரைப்பிடிப்பு பக்கத்தை உங்களால் திரைப்பிடிப்பு செய்ய முடியாது!"
},
"emptySelectionErrorTitle": {
"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": "முடிந்தது"
},
"termsAndPrivacyNoticeCloudServices": {
"message": "பயர்பாஃசு திரைப்பிடிப்பைப் பயன்படுத்துவதன் மூலம் எங்களின் முகில் கணிமச் சேவைகளுக்கான பின்வரும் $TERMSANDPRIVACYNOTICETERMSLINK$ $TERMSANDPRIVACYNOTICEPRIVACYLINK$ நிபந்தனைகளை ஏற்றுக் கொள்கிறீர்கள்.",
"placeholders": {
"termsandprivacynoticetermslink": {
"content": "$1"
},
"termsandprivacynoticeprivacylink": {
"content": "$2"
}
}
},
"termsAndPrivacyNoticeTermsLink": {
"message": "நிபந்தனைகள்"
},
"termsAndPrivacyNoticyPrivacyLink": {
"message": "தனியுரிம கொள்கை"
}
}

View File

@ -35,7 +35,7 @@
"tourHeaderTwo": { "tourHeaderTwo": {
"message": "" "message": ""
}, },
"tourHeaderThree": { "tourHeaderFour": {
"message": "మీకు నచ్చినట్టుగా" "message": "మీకు నచ్చినట్టుగా"
}, },
"tourSkip": { "tourSkip": {

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "คุณไม่สามารถจับภาพของหน้า Firefox Screenshots!" "message": "คุณไม่สามารถจับภาพของหน้า Firefox Screenshots!"
}, },
"emptySelectionErrorTitle": {
"message": "การเลือกของคุณเล็กเกินไป"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "โอ๊ย! Firefox Screenshots รวน" "message": "โอ๊ย! Firefox Screenshots รวน"
}, },
@ -80,17 +83,17 @@
"message": "คลิกแล้วลากเพื่อจับภาพแค่บางส่วนของหน้า คุณยังสามารถวางเมาส์เพื่อเน้นการเลือกของคุณ" "message": "คลิกแล้วลากเพื่อจับภาพแค่บางส่วนของหน้า คุณยังสามารถวางเมาส์เพื่อเน้นการเลือกของคุณ"
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "ตามใจชอบ"
},
"tourBodyThree": {
"message": "บันทึกภาพที่ครอบตัดของคุณไปยังเว็บเพื่อการแบ่งปันที่ง่ายขึ้น หรือดาวน์โหลดไปยังคอมพิวเตอร์ของคุณ คุณยังสามารถคลิกที่ปุ่ม ภาพของฉัน เพื่อค้นหาภาพทั้งหมดที่คุณจับไว้"
},
"tourHeaderFour": {
"message": "จับภาพหน้าต่างหรือทั้งหน้า" "message": "จับภาพหน้าต่างหรือทั้งหน้า"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "คลิกที่ปุ่มด้านบนขวาเพื่อจับภาพพื้นที่ที่มองเห็นในหน้าต่างหรือเพื่อจับภาพทั้งหน้า" "message": "คลิกที่ปุ่มด้านบนขวาเพื่อจับภาพพื้นที่ที่มองเห็นในหน้าต่างหรือเพื่อจับภาพทั้งหน้า"
}, },
"tourHeaderFour": {
"message": "ตามใจชอบ"
},
"tourBodyFour": {
"message": "บันทึกภาพที่ครอบตัดของคุณไปยังเว็บเพื่อการแบ่งปันที่ง่ายขึ้น หรือดาวน์โหลดไปยังคอมพิวเตอร์ของคุณ คุณยังสามารถคลิกที่ปุ่ม ภาพของฉัน เพื่อค้นหาภาพทั้งหมดที่คุณจับไว้"
},
"tourSkip": { "tourSkip": {
"message": "ข้าม" "message": "ข้าม"
}, },

View File

@ -80,17 +80,17 @@
"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." "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": { "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" "message": "I-capture ang Windows o Buong Pahina"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Piliin ang pindutan sa kanang itaas upang makuha ang nakikitang lugar sa window o upang makuha ang isang buong pahina." "message": "Piliin ang pindutan sa kanang itaas upang makuha ang nakikitang lugar sa window o upang makuha ang isang buong pahina."
}, },
"tourHeaderFour": {
"message": "Bilang Nagustuhan Mo ito"
},
"tourBodyFour": {
"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."
},
"tourSkip": { "tourSkip": {
"message": "Laktawan" "message": "Laktawan"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "Firefox Screenshots sayfalarının ekran görüntüsünü alamazsınz." "message": "Firefox Screenshots sayfalarının ekran görüntüsünü alamazsınz."
}, },
"emptySelectionErrorTitle": {
"message": "Seçiminiz çok küçük"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "Firefox Screenshosts kafayı yedi!" "message": "Firefox Screenshosts kafayı yedi!"
}, },
@ -80,17 +83,17 @@
"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." "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": { "tourHeaderThree": {
"message": "İstediğin gibi yakala"
},
"tourBodyThree": {
"message": "Ekran görüntülerinizi daha kolay paylaşmak veya bilgisayarınıza indirmek için webe 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" "message": "Pencereleri veya sayfaların tamamını yakala"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "Yalnızca pencerede gördüğünüz alanı veya sayfanın tamamını yakalamak için sağ üstteki düğmelerden uygun olanı seçin." "message": "Yalnızca pencerede gördüğünüz alanı veya sayfanın tamamını yakalamak için sağ üstteki düğmelerden uygun olanı seçin."
}, },
"tourHeaderFour": {
"message": "İstediğin gibi yakala"
},
"tourBodyFour": {
"message": "Ekran görüntülerinizi daha kolay paylaşmak veya bilgisayarınıza indirmek için webe kaydedin. Kaydettiğiniz tüm görüntüleri bulmak için \"Ekran görüntülerim\" düğmesine tıklayabilirsiniz."
},
"tourSkip": { "tourSkip": {
"message": "GEÇ" "message": "GEÇ"
}, },

View File

@ -83,17 +83,17 @@
"message": "Клацніть і потягніть мишею для захоплення частини сторінки. Ви також можете навести курсор миші для підсвічення вибраної області." "message": "Клацніть і потягніть мишею для захоплення частини сторінки. Ви також можете навести курсор миші для підсвічення вибраної області."
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "Як вам подобається"
},
"tourBodyThree": {
"message": "Зберігайте свої знімки в Інтернеті, щоб легко ними ділитися, або завантажуйте їх на свій комп'ютер. Ви також можете переглянути всі збережені знімки, натиснувши на кнопку Мої знімки."
},
"tourHeaderFour": {
"message": "Захоплюйте вікна або цілі сторінки" "message": "Захоплюйте вікна або цілі сторінки"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "За допомогою кнопок у верхній правій частині обирайте захоплення видимої області вікна, або сторінки повністю." "message": "За допомогою кнопок у верхній правій частині обирайте захоплення видимої області вікна, або сторінки повністю."
}, },
"tourHeaderFour": {
"message": "Як вам подобається"
},
"tourBodyFour": {
"message": "Зберігайте свої знімки в Інтернеті, щоб легко ними ділитися, або завантажуйте їх на свій комп'ютер. Ви також можете переглянути всі збережені знімки, натиснувши на кнопку Мої знімки."
},
"tourSkip": { "tourSkip": {
"message": "Пропустити" "message": "Пропустити"
}, },

View File

@ -80,17 +80,17 @@
"message": "صفحہ کا ایک حصہ گرفت کرنے کے لیئے گھسیتیں اور کلک کریں.آُپ اپنے انتخاب کو نمایاں کرنے کے لیئے منڈلا سکتے ہیں۔" "message": "صفحہ کا ایک حصہ گرفت کرنے کے لیئے گھسیتیں اور کلک کریں.آُپ اپنے انتخاب کو نمایاں کرنے کے لیئے منڈلا سکتے ہیں۔"
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "جس طرح آپ کو پسند ہے"
},
"tourBodyThree": {
"message": "اپنے کمپیوٹڑ میں ڈائونلوڈ کرنے یا ویب پر آسانی سے شیئر کرنے کے لیئےاپنی کتری ہوئی شاٹس محفوظ کریں۔ آپ میری شاٹس کے بٹن پ کلک کر کے بھی اتمام پنی لی گئی شاٹس ڈھّونڈ سکتےہیں۔"
},
"tourHeaderFour": {
"message": "دریچہ ہا مکمل صفحہ گرفت کریں" "message": "دریچہ ہا مکمل صفحہ گرفت کریں"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "دریچہ میں نظر آنے والے علاقے یا مکمل صفحہ کو گرفت کرنے کے لیئے بالائی دائیں جانب بٹن کا انتخاب کریں۔" "message": "دریچہ میں نظر آنے والے علاقے یا مکمل صفحہ کو گرفت کرنے کے لیئے بالائی دائیں جانب بٹن کا انتخاب کریں۔"
}, },
"tourHeaderFour": {
"message": "جس طرح آپ کو پسند ہے"
},
"tourBodyFour": {
"message": "اپنے کمپیوٹڑ میں ڈائونلوڈ کرنے یا ویب پر آسانی سے شیئر کرنے کے لیئےاپنی کتری ہوئی شاٹس محفوظ کریں۔ آپ میری شاٹس کے بٹن پ کلک کر کے بھی اتمام پنی لی گئی شاٹس ڈھّونڈ سکتےہیں۔"
},
"tourSkip": { "tourSkip": {
"message": "اچٹیں" "message": "اچٹیں"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "您不能截取 Firefox Screenshots 的页面!" "message": "您不能截取 Firefox Screenshots 的页面!"
}, },
"emptySelectionErrorTitle": {
"message": "您选择的范围太小"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "哎呀Firefox Screenshots 遇到问题。" "message": "哎呀Firefox Screenshots 遇到问题。"
}, },
@ -80,17 +83,17 @@
"message": "单击并拖动以截取页面某个区域。您也可以悬停以高亮您的选择范围。" "message": "单击并拖动以截取页面某个区域。您也可以悬停以高亮您的选择范围。"
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "做您所想"
},
"tourBodyThree": {
"message": "将您裁剪后的截图保存到网上以便共享,或者下载到您的计算机。您也可以点击“我的截图”按钮找到您截取的所有截图。"
},
"tourHeaderFour": {
"message": "截取窗口或整个页面" "message": "截取窗口或整个页面"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "选择右上角的按钮可以截取窗口中的可见区域或者整个页面。" "message": "选择右上角的按钮可以截取窗口中的可见区域或者整个页面。"
}, },
"tourHeaderFour": {
"message": "做您所想"
},
"tourBodyFour": {
"message": "将您裁剪后的截图保存到网上以便共享,或者下载到您的计算机。您也可以点击“我的截图”按钮找到您截取的所有截图。"
},
"tourSkip": { "tourSkip": {
"message": "跳过" "message": "跳过"
}, },

View File

@ -64,6 +64,9 @@
"selfScreenshotErrorTitle": { "selfScreenshotErrorTitle": {
"message": "您不能幫 Firefox Screenshots 的頁面拍照!" "message": "您不能幫 Firefox Screenshots 的頁面拍照!"
}, },
"emptySelectionErrorTitle": {
"message": "您的選擇範圍太小"
},
"genericErrorTitle": { "genericErrorTitle": {
"message": "唉呀Firefox Screenshots 有點秀逗了。" "message": "唉呀Firefox Screenshots 有點秀逗了。"
}, },
@ -80,17 +83,17 @@
"message": "點擊並拖曳出頁面當中的一部份,您也可以停留下來,強調選擇範圍。" "message": "點擊並拖曳出頁面當中的一部份,您也可以停留下來,強調選擇範圍。"
}, },
"tourHeaderThree": { "tourHeaderThree": {
"message": "用您想要的方式分享"
},
"tourBodyThree": {
"message": "直接將裁切過的擷圖傳到網路上方便分享,或者下載到電腦上。您也可以點擊「我的擷圖」按鈕,尋找您拍過的所有擷圖。"
},
"tourHeaderFour": {
"message": "拍攝視窗或整張網頁" "message": "拍攝視窗或整張網頁"
}, },
"tourBodyFour": { "tourBodyThree": {
"message": "透過右上角的不同按鈕來選擇只拍攝視窗中的可見區域,或是整張網頁。" "message": "透過右上角的不同按鈕來選擇只拍攝視窗中的可見區域,或是整張網頁。"
}, },
"tourHeaderFour": {
"message": "用您想要的方式分享"
},
"tourBodyFour": {
"message": "直接將裁切過的擷圖傳到網路上方便分享,或者下載到電腦上。您也可以點擊「我的擷圖」按鈕,尋找您拍過的所有擷圖。"
},
"tourSkip": { "tourSkip": {
"message": "略過" "message": "略過"
}, },

View File

@ -7,7 +7,7 @@ this.communication = (function() {
let registeredFunctions = {}; let registeredFunctions = {};
browser.runtime.onMessage.addListener(catcher.watchFunction((req, sender, sendResponse) => { exports.onMessage = catcher.watchFunction((req, sender, sendResponse) => {
if (!(req.funcName in registeredFunctions)) { if (!(req.funcName in registeredFunctions)) {
log.error(`Received unknown internal message type ${req.funcName}`); log.error(`Received unknown internal message type ${req.funcName}`);
sendResponse({type: "error", name: "Unknown message type"}); sendResponse({type: "error", name: "Unknown message type"});
@ -39,7 +39,7 @@ this.communication = (function() {
return true; return true;
} }
sendResponse({type: "success", value: result}); sendResponse({type: "success", value: result});
})); });
exports.register = function(name, func) { exports.register = function(name, func) {
registeredFunctions[name] = func; registeredFunctions[name] = func;
@ -63,6 +63,7 @@ this.communication = (function() {
}; };
function isBootstrapMissingError(error) { function isBootstrapMissingError(error) {
// Note: some of this logic is copied into startBackground.js's getOldDeviceInfo call
if (!error) { if (!error) {
return false; return false;
} }

View File

@ -11,9 +11,9 @@ this.deviceInfo = (function() {
})); }));
return function deviceInfo() { return function deviceInfo() {
let match = navigator.userAgent.match(/Chrom(?:e|ium)\/([0-9\.]+)/); let match = navigator.userAgent.match(/Chrom(?:e|ium)\/([0-9\.]{1,1000})/);
let chromeVersion = match ? match[1] : null; let chromeVersion = match ? match[1] : null;
match = navigator.userAgent.match(/Firefox\/([0-9\.]+)/); match = navigator.userAgent.match(/Firefox\/([0-9\.]{1,1000})/);
let firefoxVersion = match ? match[1] : null; let firefoxVersion = match ? match[1] : null;
let appName = chromeVersion ? "chrome" : "firefox"; let appName = chromeVersion ? "chrome" : "firefox";

View File

@ -55,7 +55,14 @@ this.main = (function() {
if ((!hasSeenOnboarding) && !active) { if ((!hasSeenOnboarding) && !active) {
path = "icons/icon-starred-32.svg"; path = "icons/icon-starred-32.svg";
} }
browser.browserAction.setIcon({path, tabId}); browser.browserAction.setIcon({path, tabId}).catch((error) => {
// FIXME: use errorCode
if (error.message && /Invalid tab ID/.test(error.message)) {
// This is a normal exception that we can ignore
} else {
catcher.unhandled(error);
}
});
} }
function toggleSelector(tab) { function toggleSelector(tab) {
@ -66,6 +73,9 @@ this.main = (function() {
return active; return active;
}) })
.catch((error) => { .catch((error) => {
if (error.message && /Missing host permission for the tab/.test(error.message)) {
error.noReport = true;
}
error.popupMessage = "UNSHOOTABLE_PAGE"; error.popupMessage = "UNSHOOTABLE_PAGE";
throw error; throw error;
}); });
@ -87,7 +97,8 @@ this.main = (function() {
return /^about:(?:newtab|blank)/i.test(url) || /^resource:\/\/activity-streams\//i.test(url); return /^about:(?:newtab|blank)/i.test(url) || /^resource:\/\/activity-streams\//i.test(url);
} }
browser.browserAction.onClicked.addListener(catcher.watchFunction((tab) => { // This is called by startBackground.js, directly in response to browser.browserAction.onClicked
exports.onClicked = catcher.watchFunction((tab) => {
if (shouldOpenMyShots(tab.url)) { if (shouldOpenMyShots(tab.url)) {
if (!hasSeenOnboarding) { if (!hasSeenOnboarding) {
catcher.watchPromise(analytics.refreshTelemetryPref().then(() => { catcher.watchPromise(analytics.refreshTelemetryPref().then(() => {
@ -116,27 +127,13 @@ this.main = (function() {
throw error; 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) => { function forceOnboarding() {
return browser.tabs.create({url: getOnboardingUrl()});
}
exports.onClickedContextMenu = catcher.watchFunction((info, tab) => {
if (!tab) { if (!tab) {
// Not in a page/tab context, ignore // Not in a page/tab context, ignore
return; return;
@ -150,7 +147,7 @@ this.main = (function() {
catcher.watchPromise( catcher.watchPromise(
toggleSelector(tab) toggleSelector(tab)
.then(() => sendEvent("start-shot", "context-menu"))); .then(() => sendEvent("start-shot", "context-menu")));
})); });
function urlEnabled(url) { function urlEnabled(url) {
if (shouldOpenMyShots(url)) { if (shouldOpenMyShots(url)) {
@ -171,7 +168,7 @@ this.main = (function() {
if (path == "shots") { if (path == "shots") {
return true; return true;
} }
if (/^[^/]+\/[^/]+$/.test(path)) { if (/^[^/]{1,4000}\/[^/]{1,4000}$/.test(path)) {
// Blocks {:id}/{:domain}, but not /, /privacy, etc // Blocks {:id}/{:domain}, but not /, /privacy, etc
return true; return true;
} }
@ -241,7 +238,7 @@ this.main = (function() {
}); });
communication.register("closeSelector", (sender) => { communication.register("closeSelector", (sender) => {
setIconActive(false, sender.tab.id) setIconActive(false, sender.tab.id);
}); });
catcher.watchPromise(communication.sendToBootstrap("getOldDeviceInfo").then((deviceInfo) => { catcher.watchPromise(communication.sendToBootstrap("getOldDeviceInfo").then((deviceInfo) => {
@ -279,6 +276,16 @@ this.main = (function() {
}); });
}); });
communication.register("abortNoDocumentBody", (sender, tagName) => {
tagName = String(tagName || "").replace(/[^a-z0-9]/ig, "");
sendEvent("abort-start-shot", `document-is-${tagName}`);
// 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"
});
});
// Note: this signal is only needed until bug 1357589 is fixed. // Note: this signal is only needed until bug 1357589 is fixed.
communication.register("openTermsPage", () => { communication.register("openTermsPage", () => {
return catcher.watchPromise(browser.tabs.create({url: "https://www.mozilla.org/about/legal/terms/services/"})); return catcher.watchPromise(browser.tabs.create({url: "https://www.mozilla.org/about/legal/terms/services/"}));

View File

@ -86,13 +86,12 @@ this.selectorLoader = (function() {
return browser.tabs.executeScript(tabId, { return browser.tabs.executeScript(tabId, {
file, file,
runAt: "document_end" runAt: "document_end"
}) }).catch((error) => {
.catch((error) => { log.error("error in script:", file, error);
log.error("error in script:", file, error); error.scriptName = file;
error.scriptName = file; throw error;
throw error; });
}) });
})
}); });
return lastPromise.then(() => { return lastPromise.then(() => {
log.debug("finished loading scripts:", scripts.join(" ")); log.debug("finished loading scripts:", scripts.join(" "));

View File

@ -2,6 +2,8 @@
"use strict"; "use strict";
const startTime = Date.now();
this.senderror = (function() { this.senderror = (function() {
let exports = {}; let exports = {};
@ -73,12 +75,14 @@ this.senderror = (function() {
message = error.message; message = error.message;
} }
} }
browser.notifications.create(id, { if (Date.now() - startTime > 5 * 1000) {
type: "basic", browser.notifications.create(id, {
// FIXME: need iconUrl for an image, see #2239 type: "basic",
title, // FIXME: need iconUrl for an image, see #2239
message title,
}); message
});
}
}; };
exports.reportError = function(e) { exports.reportError = function(e) {
@ -88,7 +92,7 @@ this.senderror = (function() {
} }
let dsn = auth.getSentryPublicDSN(); let dsn = auth.getSentryPublicDSN();
if (!dsn) { if (!dsn) {
log.warn("Error:", e); log.warn("Screenshots error:", e);
return; return;
} }
if (!Raven.isSetup()) { if (!Raven.isSetup()) {
@ -96,16 +100,24 @@ this.senderror = (function() {
} }
let exception = new Error(e.message); let exception = new Error(e.message);
exception.stack = e.multilineStack || e.stack || undefined; exception.stack = e.multilineStack || e.stack || undefined;
// To improve Sentry reporting & grouping, replace the
// moz-extension://$uuid base URL with a generic resource:// URL.
exception.stack = exception.stack.replace(
/moz-extension:\/\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/g,
"resource://screenshots-addon"
);
let rest = {}; let rest = {};
for (let attr in e) { for (let attr in e) {
if (!["name", "message", "stack", "multilineStack", "popupMessage", "version", "sentryPublicDSN", "help"].includes(attr)) { if (!["name", "message", "stack", "multilineStack", "popupMessage", "version", "sentryPublicDSN", "help", "fromMakeError"].includes(attr)) {
rest[attr] = e[attr]; rest[attr] = e[attr];
} }
} }
rest.stack = e.multilineStack || e.stack; rest.stack = exception.stack;
Raven.captureException(exception, { Raven.captureException(exception, {
logger: 'addon', logger: 'addon',
tags: {version: manifest.version, category: e.popupMessage}, tags: {category: e.popupMessage},
release: manifest.version,
message: exception.message, message: exception.message,
extra: rest extra: rest
}); });

View File

@ -0,0 +1,125 @@
/* globals browser, main, communication */
/* This file handles:
browser.browserAction.onClicked
browser.contextMenus.onClicked
browser.runtime.onMessage
and loads the rest of the background page in response to those events, forwarding
the events to main.onClicked, main.onClickedContextMenu, or communication.onMessage
*/
this.startBackground = (function() {
const backgroundScripts = [
"log.js",
"makeUuid.js",
"catcher.js",
"background/selectorLoader.js",
"background/communication.js",
"background/auth.js",
"background/senderror.js",
"build/raven.js",
"build/shot.js",
"background/analytics.js",
"background/deviceInfo.js",
"background/takeshot.js",
"background/main.js"
];
// Maximum milliseconds to wait before checking for migration possibility
const CHECK_MIGRATION_DELAY = 2000;
browser.browserAction.onClicked.addListener((tab) => {
loadIfNecessary().then(() => {
main.onClicked(tab);
}).catch((error) => {
console.error("Error loading Screenshots:", error);
});
});
browser.contextMenus.create({
id: "create-screenshot",
title: browser.i18n.getMessage("contextMenuLabel"),
contexts: ["page"],
documentUrlPatterns: ["<all_urls>"]
});
browser.contextMenus.onClicked.addListener((info, tab) => {
loadIfNecessary().then(() => {
main.onClickedContextMenu(info, tab);
}).catch((error) => {
console.error("Error loading Screenshots:", error);
});
});
// Note this duplicates functionality in main.js, but we need to change
// the onboarding icon before main.js loads up
browser.storage.local.get(["hasSeenOnboarding"]).then((result) => {
let hasSeenOnboarding = !!result.hasSeenOnboarding;
if (!hasSeenOnboarding) {
let path = "icons/icon-starred-32.svg";
browser.browserAction.setIcon({path});
}
}).catch((error) => {
console.error("Error loading Screenshots onboarding flag:", error);
});
browser.runtime.onMessage.addListener((req, sender, sendResponse) => {
loadIfNecessary().then(() => {
return communication.onMessage(req, sender, sendResponse);
}).catch((error) => {
console.error("Error loading Screenshots:", error);
});
return true;
});
// We delay this check (by CHECK_MIGRATION_DELAY) just to avoid piling too
// many things onto browser/add-on startup
requestIdleCallback(() => {
browser.runtime.sendMessage({funcName: "getOldDeviceInfo"}).then((result) => {
if (result && result.type == "success" && result.value) {
// There is a possible migration to run, so we'll load the entire background
// page and continue the process
return loadIfNecessary();
}
if (!result) {
throw new Error("Got no result from getOldDeviceInfo");
}
if (result.type == "error") {
throw new Error(`Error from getOldDeviceInfo: ${result.name}`);
}
}).catch((error) => {
if (error && error.message == "Could not establish connection. Receiving end does not exist") {
// Just a missing bootstrap.js, ignore
} else {
console.error("Screenshots error checking for Page Shot migration:", error);
}
});
}, {timeout: CHECK_MIGRATION_DELAY});
let loadedPromise;
function loadIfNecessary() {
if (loadedPromise) {
return loadedPromise;
}
loadedPromise = Promise.resolve();
backgroundScripts.forEach((script) => {
loadedPromise = loadedPromise.then(() => {
return new Promise((resolve, reject) => {
let tag = document.createElement("script");
tag.src = browser.extension.getURL(script);
tag.onload = () => {
resolve();
};
tag.onerror = (error) => {
let exc = new Error(`Error loading script: ${error.message}`);
exc.scriptName = script;
reject(exc);
};
document.head.appendChild(tag);
});
});
});
return loadedPromise;
}
})();

View File

@ -172,11 +172,19 @@ window.inlineSelectionCss = `
.hover-highlight { .hover-highlight {
animation: fade-in 125ms forwards cubic-bezier(0.07, 0.95, 0, 1); animation: fade-in 125ms forwards cubic-bezier(0.07, 0.95, 0, 1);
background: rgba(255, 255, 255, 0.1); background: rgba(255, 255, 255, 0.2);
border-radius: 1px; border-radius: 1px;
pointer-events: none; pointer-events: none;
position: absolute; position: absolute;
z-index: 10000000000; } z-index: 10000000000; }
.hover-highlight:before {
border: 2px dashed rgba(255, 255, 255, 0.4);
bottom: 0;
content: '';
left: 0;
position: absolute;
right: 0;
top: 0; }
.mover-target.direction-topLeft { .mover-target.direction-topLeft {
cursor: nwse-resize; cursor: nwse-resize;

View File

@ -1,4 +1,4 @@
/*! Raven.js 3.14.2 (5cf57e1) | github.com/getsentry/raven-js */ /*! Raven.js 3.15.0 (d49a1b8) | github.com/getsentry/raven-js */
/* /*
* Includes TraceKit * Includes TraceKit
@ -120,6 +120,7 @@ function Raven() {
maxUrlLength: 250, maxUrlLength: 250,
stackTraceLimit: 50, stackTraceLimit: 50,
autoBreadcrumbs: true, autoBreadcrumbs: true,
instrument: true,
sampleRate: 1 sampleRate: 1
}; };
this._ignoreOnError = 0; this._ignoreOnError = 0;
@ -155,7 +156,7 @@ Raven.prototype = {
// webpack (using a build step causes webpack #1617). Grunt verifies that // webpack (using a build step causes webpack #1617). Grunt verifies that
// this value matches package.json during build. // this value matches package.json during build.
// See: https://github.com/getsentry/raven-js/issues/465 // See: https://github.com/getsentry/raven-js/issues/465
VERSION: '3.14.2', VERSION: '3.15.0',
debug: false, debug: false,
@ -220,6 +221,18 @@ Raven.prototype = {
} }
globalOptions.autoBreadcrumbs = autoBreadcrumbs; globalOptions.autoBreadcrumbs = autoBreadcrumbs;
var instrumentDefaults = {
tryCatch: true
};
var instrument = globalOptions.instrument;
if ({}.toString.call(instrument) === '[object Object]') {
instrument = objectMerge(instrumentDefaults, instrument);
} else if (instrument !== false) {
instrument = instrumentDefaults;
}
globalOptions.instrument = instrument;
TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors;
// return for chaining // return for chaining
@ -240,7 +253,10 @@ Raven.prototype = {
TraceKit.report.subscribe(function () { TraceKit.report.subscribe(function () {
self._handleOnErrorStackInfo.apply(self, arguments); self._handleOnErrorStackInfo.apply(self, arguments);
}); });
self._instrumentTryCatch(); if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) {
self._instrumentTryCatch();
}
if (self._globalOptions.autoBreadcrumbs) if (self._globalOptions.autoBreadcrumbs)
self._instrumentBreadcrumbs(); self._instrumentBreadcrumbs();
@ -918,7 +934,8 @@ Raven.prototype = {
}, },
/** /**
* Install any queued plugins * Wrap timer functions and event targets to catch errors and provide
* better metadata.
*/ */
_instrumentTryCatch: function() { _instrumentTryCatch: function() {
var self = this; var self = this;
@ -1116,11 +1133,22 @@ Raven.prototype = {
// Make a copy of the arguments to prevent deoptimization // Make a copy of the arguments to prevent deoptimization
// https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments
var args = new Array(arguments.length); var args = new Array(arguments.length);
for(var i = 0; i < args.length; ++i) { for (var i = 0; i < args.length; ++i) {
args[i] = arguments[i]; args[i] = arguments[i];
} }
var fetchInput = args[0];
var method = 'GET'; var method = 'GET';
var url;
if (typeof fetchInput === 'string') {
url = fetchInput;
} else {
url = fetchInput.url;
if (fetchInput.method) {
method = fetchInput.method;
}
}
if (args[1] && args[1].method) { if (args[1] && args[1].method) {
method = args[1].method; method = args[1].method;
@ -1128,7 +1156,7 @@ Raven.prototype = {
var fetchData = { var fetchData = {
method: method, method: method,
url: args[0], url: url,
status_code: null status_code: null
}; };

View File

@ -1,4 +1,4 @@
window.shot = (function () {let exports={}; // Note: in this library we can't use any "system" dependencies because this can be used from multiple this.shot = (function () {let exports={}; // Note: in this library we can't use any "system" dependencies because this can be used from multiple
// environments // environments
/** Throws an error if the condition isn't true. Any extra arguments after the condition /** Throws an error if the condition isn't true. Any extra arguments after the condition
@ -14,22 +14,22 @@ function assert(condition, ...args) {
/** True if `url` is a valid URL */ /** True if `url` is a valid URL */
function isUrl(url) { function isUrl(url) {
// FIXME: this is rather naive, obviously // FIXME: this is rather naive, obviously
if ((/^about:.+$/i).test(url)) { if ((/^about:.{1,8000}$/i).test(url)) {
return true; return true;
} }
if ((/^file:\/.*$/i).test(url)) { if ((/^file:\/.{0,8000}$/i).test(url)) {
return true; return true;
} }
if ((/^data:.*$/i).test(url)) { if ((/^data:.*$/i).test(url)) {
return true; return true;
} }
if ((/^chrome:.*/i).test(url)) { if ((/^chrome:.{0,8000}/i).test(url)) {
return true; return true;
} }
if ((/^view-source:/i).test(url)) { if ((/^view-source:/i).test(url)) {
return isUrl(url.substr("view-source:".length)); return isUrl(url.substr("view-source:".length));
} }
return (/^https?:\/\/[a-z0-9\.\-]+[a-z0-9](:[0-9]+)?\/?/i).test(url); return (/^https?:\/\/[a-z0-9\.\-]{1,8000}[a-z0-9](:[0-9]{1,8000})?\/?/i).test(url);
} }
function assertUrl(url) { function assertUrl(url) {
@ -46,7 +46,7 @@ function assertUrl(url) {
function assertOrigin(url) { function assertOrigin(url) {
assertUrl(url); assertUrl(url);
if (url.search(/^https?:/i) != -1) { if (url.search(/^https?:/i) != -1) {
let match = (/^https?:\/\/[^/:]+\/?$/i).exec(url); let match = (/^https?:\/\/[^/:]{1,4000}\/?$/i).exec(url);
if (!match) { if (!match) {
throw new Error("Bad origin, might include path"); throw new Error("Bad origin, might include path");
} }
@ -61,7 +61,7 @@ function originFromUrl(url) {
// Non-HTTP URLs don't have an origin // Non-HTTP URLs don't have an origin
return null; return null;
} }
let match = (/^https?:\/\/[^/:]+/i).exec(url); let match = (/^https?:\/\/[^/:]{1,4000}/i).exec(url);
if (match) { if (match) {
return match[0]; return match[0];
} }
@ -121,12 +121,17 @@ function resolveUrl(base, url) {
} }
if (url.indexOf("/") === 0) { if (url.indexOf("/") === 0) {
// Domain-relative URL // Domain-relative URL
return (/^https?:\/\/[a-z0-9\.\-]+/i).exec(base)[0] + url; return (/^https?:\/\/[a-z0-9\.\-]{1,4000}/i).exec(base)[0] + url;
} }
// Otherwise, a full relative URL // Otherwise, a full relative URL
while (url.indexOf("./") === 0) { while (url.indexOf("./") === 0) {
url = url.substr(2); url = url.substr(2);
} }
if (!base) {
// It's not an absolute URL, and we don't have a base URL, so we have
// to throw away the URL
return null;
}
let match = (/.*\//).exec(base)[0]; let match = (/.*\//).exec(base)[0];
if (match.search(/^https?:\/$/i) === 0) { if (match.search(/^https?:\/$/i) === 0) {
// Domain without path // Domain without path
@ -196,7 +201,7 @@ class AbstractShot {
constructor(backend, id, attrs) { constructor(backend, id, attrs) {
attrs = attrs || {}; attrs = attrs || {};
assert((/^[a-zA-Z0-9]+\/[a-z0-9\.-]+$/).test(id), "Bad ID (should be alphanumeric):", JSON.stringify(id)); assert((/^[a-zA-Z0-9]{1,4000}\/[a-z0-9\.-]{1,4000}$/).test(id), "Bad ID (should be alphanumeric):", JSON.stringify(id));
this._backend = backend; this._backend = backend;
this._id = id; this._id = id;
this.origin = attrs.origin || null; this.origin = attrs.origin || null;
@ -347,7 +352,7 @@ class AbstractShot {
let filenameTitle = this.title; let filenameTitle = this.title;
let date = new Date(this.createdDate); let date = new Date(this.createdDate);
filenameTitle = filenameTitle.replace(/[\/!@&*.|\n\r\t]/g, " "); filenameTitle = filenameTitle.replace(/[\/!@&*.|\n\r\t]/g, " ");
filenameTitle = filenameTitle.replace(/\s+/g, " "); filenameTitle = filenameTitle.replace(/\s{1,4000}/g, " ");
let clipFilename = `Screenshot-${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()} ${filenameTitle}`; let clipFilename = `Screenshot-${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()} ${filenameTitle}`;
const clipFilenameBytesSize = clipFilename.length * 2; // JS STrings are UTF-16 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 if (clipFilenameBytesSize > 251) { // 255 bytes (Usual filesystems max) - 4 for the ".png" file extension string
@ -364,15 +369,15 @@ class AbstractShot {
} }
if (this.url.search(/^https?/i) != -1) { if (this.url.search(/^https?/i) != -1) {
let txt = this.url; let txt = this.url;
txt = txt.replace(/^[a-z]+:\/\//i, ""); txt = txt.replace(/^[a-z]{1,4000}:\/\//i, "");
txt = txt.replace(/\/.*/, ""); txt = txt.replace(/\/.{0,4000}/, "");
txt = txt.replace(/^www\./i, ""); txt = txt.replace(/^www\./i, "");
return txt; return txt;
} else if (this.url.startsWith("data:")) { } else if (this.url.startsWith("data:")) {
return "data:url"; return "data:url";
} }
let txt = this.url; let txt = this.url;
txt = txt.replace(/\?.*/, ""); txt = txt.replace(/\?.{0,4000}/, "");
return txt; return txt;
} }
@ -446,6 +451,9 @@ class AbstractShot {
if (Array.isArray(title)) { if (Array.isArray(title)) {
title = title[0]; title = title[0];
} }
if (!title) {
title = "Screenshot";
}
return title; return title;
} }
@ -461,7 +469,11 @@ class AbstractShot {
return this._favicon; return this._favicon;
} }
set favicon(val) { set favicon(val) {
assert(val === null || isUrl(val), "Bad favicon URL:", val); // We allow but ignore bad favicon URLs, as they seem somewhat common
val = val || null;
if (!isUrl(val)) {
val = null;
}
if (val) { if (val) {
val = resolveUrl(this.url, val); val = resolveUrl(this.url, val);
} }

View File

@ -12,7 +12,9 @@ this.catcher = (function() {
let log = global.log; let log = global.log;
exports.unhandled = function(error, info) { exports.unhandled = function(error, info) {
log.error("Unhandled error:", error, info); if (!error.noReport) {
log.error("Unhandled error:", error, info);
}
let e = makeError(error, info); let e = makeError(error, info);
if (!handler) { if (!handler) {
queue.push(e); queue.push(e);
@ -62,11 +64,15 @@ this.catcher = (function() {
exports.watchPromise = function watchPromise(promise, quiet) { exports.watchPromise = function watchPromise(promise, quiet) {
return promise.catch((e) => { return promise.catch((e) => {
if (quiet) { if (quiet) {
log.debug("------Error in promise:", e); if (!e.noReport) {
log.debug(e.stack); log.debug("------Error in promise:", e);
log.debug(e.stack);
}
} else { } else {
log.error("------Error in promise:", e); if (!e.noReport) {
log.error(e.stack); log.error("------Error in promise:", e);
log.error(e.stack);
}
exports.unhandled(makeError(e)); exports.unhandled(makeError(e));
} }
throw e; throw e;

View File

@ -14,7 +14,7 @@ this.domainFromUrl = (function() {
domain = "unknown"; domain = "unknown";
} }
} }
if (domain.search(/^[a-z0-9.\-]+$/i) === -1) { if (domain.search(/^[a-z0-9.\-]{1,1000}$/i) === -1) {
// Probably a unicode domain; we could use punycode but it wouldn't decode // Probably a unicode domain; we could use punycode but it wouldn't decode
// well in the URL anyway. Instead we'll punt. // well in the URL anyway. Instead we'll punt.
domain = domain.replace(/[^a-z0-9.\-]/ig, ""); domain = domain.replace(/[^a-z0-9.\-]/ig, "");

View File

@ -1,42 +1 @@
<?xml version="1.0" encoding="UTF-8"?> <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>icon-16</title><path d="M8 2a4 4 0 0 0-4 4h4V2zm12 0h-4v4h4V2zm8 0v4h4a4 4 0 0 0-4-4zM14 2h-4v4h4V2zm12 0h-4v4h4V2zm2 10h4V8h-4v4zm0 12a4 4 0 0 0 4-4h-4v4zm0-6h4v-4h-4v4zm-.882-4.334a4 4 0 0 0-5.57-.984l-7.67 5.662-3.936-2.76c.031-.193.05-.388.058-.584a4.976 4.976 0 0 0-2-3.978V8H4v2.1a5 5 0 1 0 3.916 8.948l2.484 1.738-2.8 1.964a4.988 4.988 0 1 0 2.3 3.266l17.218-12.35zM5 17.5a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5zm0 12a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5zm10.8-4.858l6.034 4.6a4 4 0 0 0 5.57-.984L19.28 22.2l-3.48 2.442z" fill-rule="nonzero" fill="#4C4C4C"/></svg>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch -->
<title>icon-16</title>
<desc>Created with Sketch.</desc>
<defs>
<path d="M11,2 L15,2 L15,4 L11,4 L11,2 Z M17,2 L21,2 L21,4 L17,4 L17,2 Z M14,28 L18,28 L21,28 L21,30 L14,30 L14,28 Z M28,11 L30,11 L30,15 L28,15 L28,11 Z M28,17 L30,17 L30,21 L28,21 L28,17 Z M30,3.00292933 L30,9 L28,9 L28,4.49769878 C28,4.21484375 27.7771727,4 27.5023012,4 L23,4 L23,2 L28.9970707,2 C29.5621186,2 30,2.44902676 30,3.00292933 Z M28.9970707,30 L23,30 L23,28 L27.5023012,28 C27.7851562,28 28,27.7771727 28,27.5023012 L28,23 L30,23 L30,28.9970707 C30,29.5621186 29.5509732,30 28.9970707,30 Z M9,2 L9,4 L4.49769878,4 C4.21484375,4 4,4.22595492 4,4.50468445 L4,6 L2,6 L2,3.0093689 C2,2.44335318 2.44902676,2 3.00292933,2 L9,2 Z" id="path-1"></path>
<filter x="-1.8%" y="-7.1%" width="103.6%" height="112.5%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<filter x="-1.8%" y="-7.1%" width="103.6%" height="112.5%" filterUnits="objectBoundingBox" id="filter-3">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
</filter>
<path d="M12.5318913,18.5 L10.5328767,17.0889308 C9.66345095,17.6647004 8.62088218,18 7.5,18 C4.46243388,18 2,15.5375661 2,12.5 C2,9.46243388 4.46243388,7 7.5,7 C10.5375661,7 13,9.46243388 13,12.5 C13,12.9555527 12.9446152,13.3981697 12.8402119,13.8214846 L16,16.0519233 L23.3466336,10.8660643 C24.2490314,10.2290776 25.4969491,10.4442358 26.1339357,11.3466336 C26.7709224,12.2490314 26.5557642,13.4969491 25.6533664,14.1339357 L12.8402119,23.1785154 C12.9446152,23.6018303 13,24.0444473 13,24.5 C13,27.5375661 10.5375661,30 7.5,30 C4.46243388,30 2,27.5375661 2,24.5 C2,21.4624339 4.46243388,19 7.5,19 C8.62088218,19 9.66345095,19.3352996 10.5328767,19.9110692 L12.5318913,18.5 Z M17.5,22.0069002 L20.9681087,19.5588235 L25.6533664,22.8660643 C26.5557642,23.5030509 26.7709224,24.7509686 26.1339357,25.6533664 C25.4969491,26.5557642 24.2490314,26.7709224 23.3466336,26.1339357 L17.5,22.0069002 Z M7.5,15.25 C9.01878306,15.25 10.25,14.0187831 10.25,12.5 C10.25,10.9812169 9.01878306,9.75 7.5,9.75 C5.98121694,9.75 4.75,10.9812169 4.75,12.5 C4.75,14.0187831 5.98121694,15.25 7.5,15.25 Z M7.5,27.25 C9.01878306,27.25 10.25,26.0187831 10.25,24.5 C10.25,22.9812169 9.01878306,21.75 7.5,21.75 C5.98121694,21.75 4.75,22.9812169 4.75,24.5 C4.75,26.0187831 5.98121694,27.25 7.5,27.25 Z" id="path-4"></path>
<filter x="-2.0%" y="-2.2%" width="116.3%" height="108.7%" filterUnits="objectBoundingBox" id="filter-5">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<filter x="-2.0%" y="-2.2%" width="116.3%" height="108.7%" filterUnits="objectBoundingBox" id="filter-6">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
</filter>
</defs>
<g id="Onboarding" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="icon">
<g id="Combined-Shape">
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill="#4D4D4D" fill-rule="evenodd" xlink:href="#path-1"></use>
<use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-1"></use>
</g>
<g id="Combined-Shape">
<use fill="black" fill-opacity="1" filter="url(#filter-5)" xlink:href="#path-4"></use>
<use fill="#4D4D4D" fill-rule="evenodd" xlink:href="#path-4"></use>
<use fill="black" fill-opacity="1" filter="url(#filter-6)" xlink:href="#path-4"></use>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 658 B

View File

@ -1,42 +1 @@
<?xml version="1.0" encoding="UTF-8"?> <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>icon-32</title><path d="M8 2a4 4 0 0 0-4 4h4V2zm12 0h-4v4h4V2zm8 0v4h4a4 4 0 0 0-4-4zM14 2h-4v4h4V2zm12 0h-4v4h4V2zm2 10h4V8h-4v4zm0 12a4 4 0 0 0 4-4h-4v4zm0-6h4v-4h-4v4zm-.882-4.334a4 4 0 0 0-5.57-.984l-7.67 5.662-3.936-2.76c.031-.193.05-.388.058-.584a4.976 4.976 0 0 0-2-3.978V8H4v2.1a5 5 0 1 0 3.916 8.948l2.484 1.738-2.8 1.964a4.988 4.988 0 1 0 2.3 3.266l17.218-12.35zM5 17.5a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5zm0 12a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5zm10.8-4.858l6.034 4.6a4 4 0 0 0 5.57-.984L19.28 22.2l-3.48 2.442z" fill-rule="nonzero" fill="#4C4C4C"/></svg>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch -->
<title>icon-32</title>
<desc>Created with Sketch.</desc>
<defs>
<path d="M11,2 L15,2 L15,4 L11,4 L11,2 Z M17,2 L21,2 L21,4 L17,4 L17,2 Z M14,28 L18,28 L21,28 L21,30 L14,30 L14,28 Z M28,11 L30,11 L30,15 L28,15 L28,11 Z M28,17 L30,17 L30,21 L28,21 L28,17 Z M30,3.00292933 L30,9 L28,9 L28,4.49769878 C28,4.21484375 27.7771727,4 27.5023012,4 L23,4 L23,2 L28.9970707,2 C29.5621186,2 30,2.44902676 30,3.00292933 Z M28.9970707,30 L23,30 L23,28 L27.5023012,28 C27.7851562,28 28,27.7771727 28,27.5023012 L28,23 L30,23 L30,28.9970707 C30,29.5621186 29.5509732,30 28.9970707,30 Z M9,2 L9,4 L4.49769878,4 C4.21484375,4 4,4.22595492 4,4.50468445 L4,6 L2,6 L2,3.0093689 C2,2.44335318 2.44902676,2 3.00292933,2 L9,2 Z" id="path-1"></path>
<filter x="-1.8%" y="-7.1%" width="103.6%" height="112.5%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<filter x="-1.8%" y="-7.1%" width="103.6%" height="112.5%" filterUnits="objectBoundingBox" id="filter-3">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
</filter>
<path d="M12.5318913,18.5 L10.5328767,17.0889308 C9.66345095,17.6647004 8.62088218,18 7.5,18 C4.46243388,18 2,15.5375661 2,12.5 C2,9.46243388 4.46243388,7 7.5,7 C10.5375661,7 13,9.46243388 13,12.5 C13,12.9555527 12.9446152,13.3981697 12.8402119,13.8214846 L16,16.0519233 L23.3466336,10.8660643 C24.2490314,10.2290776 25.4969491,10.4442358 26.1339357,11.3466336 C26.7709224,12.2490314 26.5557642,13.4969491 25.6533664,14.1339357 L12.8402119,23.1785154 C12.9446152,23.6018303 13,24.0444473 13,24.5 C13,27.5375661 10.5375661,30 7.5,30 C4.46243388,30 2,27.5375661 2,24.5 C2,21.4624339 4.46243388,19 7.5,19 C8.62088218,19 9.66345095,19.3352996 10.5328767,19.9110692 L12.5318913,18.5 Z M17.5,22.0069002 L20.9681087,19.5588235 L25.6533664,22.8660643 C26.5557642,23.5030509 26.7709224,24.7509686 26.1339357,25.6533664 C25.4969491,26.5557642 24.2490314,26.7709224 23.3466336,26.1339357 L17.5,22.0069002 Z M7.5,15.25 C9.01878306,15.25 10.25,14.0187831 10.25,12.5 C10.25,10.9812169 9.01878306,9.75 7.5,9.75 C5.98121694,9.75 4.75,10.9812169 4.75,12.5 C4.75,14.0187831 5.98121694,15.25 7.5,15.25 Z M7.5,27.25 C9.01878306,27.25 10.25,26.0187831 10.25,24.5 C10.25,22.9812169 9.01878306,21.75 7.5,21.75 C5.98121694,21.75 4.75,22.9812169 4.75,24.5 C4.75,26.0187831 5.98121694,27.25 7.5,27.25 Z" id="path-4"></path>
<filter x="-2.0%" y="-2.2%" width="116.3%" height="108.7%" filterUnits="objectBoundingBox" id="filter-5">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<filter x="-2.0%" y="-2.2%" width="116.3%" height="108.7%" filterUnits="objectBoundingBox" id="filter-6">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
</filter>
</defs>
<g id="Onboarding" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="icon">
<g id="Combined-Shape">
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill="#4D4D4D" fill-rule="evenodd" xlink:href="#path-1"></use>
<use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-1"></use>
</g>
<g id="Combined-Shape">
<use fill="black" fill-opacity="1" filter="url(#filter-5)" xlink:href="#path-4"></use>
<use fill="#4D4D4D" fill-rule="evenodd" xlink:href="#path-4"></use>
<use fill="black" fill-opacity="1" filter="url(#filter-6)" xlink:href="#path-4"></use>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 658 B

View File

@ -1,16 +1 @@
<?xml version="1.0" encoding="UTF-8"?> <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>icon-32</title><path d="M8 2a4 4 0 0 0-4 4h4V2zm12 0h-4v4h4V2zm8 0v4h4a4 4 0 0 0-4-4zM14 2h-4v4h4V2zm12 0h-4v4h4V2zm2 10h4V8h-4v4zm0 12a4 4 0 0 0 4-4h-4v4zm0-6h4v-4h-4v4zm-.882-4.334a4 4 0 0 0-5.57-.984l-7.67 5.662-3.936-2.76c.031-.193.05-.388.058-.584a4.976 4.976 0 0 0-2-3.978V8H4v2.1a5 5 0 1 0 3.916 8.948l2.484 1.738-2.8 1.964a4.988 4.988 0 1 0 2.3 3.266l17.218-12.35zM5 17.5a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5zm0 12a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5zm10.8-4.858l6.034 4.6a4 4 0 0 0 5.57-.984L19.28 22.2l-3.48 2.442z" fill-rule="nonzero" fill="#989898"/></svg>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch -->
<title>icon-32</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Onboarding" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="icon" fill="#989898">
<path d="M11,2 L15,2 L15,4 L11,4 L11,2 Z M17,2 L21,2 L21,4 L17,4 L17,2 Z M14,28 L18,28 L21,28 L21,30 L14,30 L14,28 Z M28,11 L30,11 L30,15 L28,15 L28,11 Z M28,17 L30,17 L30,21 L28,21 L28,17 Z M30,3.00292933 L30,9 L28,9 L28,4.49769878 C28,4.21484375 27.7771727,4 27.5023012,4 L23,4 L23,2 L28.9970707,2 C29.5621186,2 30,2.44902676 30,3.00292933 Z M28.9970707,30 L23,30 L23,28 L27.5023012,28 C27.7851562,28 28,27.7771727 28,27.5023012 L28,23 L30,23 L30,28.9970707 C30,29.5621186 29.5509732,30 28.9970707,30 Z M9,2 L9,4 L4.49769878,4 C4.21484375,4 4,4.22595492 4,4.50468445 L4,6 L2,6 L2,3.0093689 C2,2.44335318 2.44902676,2 3.00292933,2 L9,2 Z" id="Combined-Shape"></path>
<path d="M7.5,18 C4.46243388,18 2,15.5375661 2,12.5 C2,9.46243388 4.46243388,7 7.5,7 C10.5375661,7 13,9.46243388 13,12.5 C13,15.5375661 10.5375661,18 7.5,18 Z M7.5,15.25 C9.01878306,15.25 10.25,14.0187831 10.25,12.5 C10.25,10.9812169 9.01878306,9.75 7.5,9.75 C5.98121694,9.75 4.75,10.9812169 4.75,12.5 C4.75,14.0187831 5.98121694,15.25 7.5,15.25 Z" id="Combined-Shape"></path>
<path d="M7.5,30 C4.46243388,30 2,27.5375661 2,24.5 C2,21.4624339 4.46243388,19 7.5,19 C10.5375661,19 13,21.4624339 13,24.5 C13,27.5375661 10.5375661,30 7.5,30 Z M7.5,27.25 C9.01878306,27.25 10.25,26.0187831 10.25,24.5 C10.25,22.9812169 9.01878306,21.75 7.5,21.75 C5.98121694,21.75 4.75,22.9812169 4.75,24.5 C4.75,26.0187831 5.98121694,27.25 7.5,27.25 Z" id="Combined-Shape-Copy"></path>
<path d="M17.5,17.1107468 C15.3660747,15.6044466 13.2177087,14.087953 11.6169865,12.9580314 C10.6291131,12.260709 8.43228761,15.6061621 9.47511461,16.3422753 L14.0318913,19.5588235 L17.5,17.1107468 Z M20.9681087,19.5588235 C23.6164424,21.4282356 25.6533664,22.8660643 25.6533664,22.8660643 C26.5557642,23.5030509 26.7709224,24.7509686 26.1339357,25.6533664 C25.4969491,26.5557642 24.2490314,26.7709224 23.3466336,26.1339357 L17.5,22.0069002 C18.6001,21.2303591 19.7896836,20.390653 20.9681087,19.5588235 Z" id="Combined-Shape" fill-rule="nonzero"></path>
<path d="M12.0225886,23.7556612 L25.6533664,14.1339357 C26.5557642,13.4969491 26.7709224,12.2490314 26.1339357,11.3466336 C25.4969491,10.4442358 24.2490314,10.2290776 23.3466336,10.8660643 L9.80606657,20.4241116 C8.65292225,21.2380958 10.8995145,24.5484194 12.0225886,23.7556612 Z" id="Line" fill-rule="nonzero"></path>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 658 B

View File

@ -1,43 +1 @@
<?xml version="1.0" encoding="UTF-8"?> <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>icon copy 2-32</title><g fill="none" fill-rule="evenodd"><g fill="#4D4D4D"><path d="M8 2a4 4 0 0 0-4 4h4V2zm6 0h-4v4h4V2zm14 22a4 4 0 0 0 4-4h-4v4zm-12.2.642l6.034 4.6a4 4 0 0 0 5.57-.984L19.28 22.2l-3.48 2.442z" fill-rule="nonzero"/><path d="M21.86 17.437L9.9 26.016a4.988 4.988 0 1 1-2.3-3.266l2.8-1.964-2.484-1.738A5 5 0 1 1 4 10.1V8h4v3.022A4.976 4.976 0 0 1 10 15c-.008.196-.027.39-.058.584l3.936 2.76 4.46-3.292a9.014 9.014 0 0 0 3.522 2.385zM5 17.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zm0 12a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM16.512 6H16V2h3.343a9.018 9.018 0 0 0-2.83 4zM28 17.488V18h4v-3.343a9.018 9.018 0 0 1-4 2.83z"/></g><g transform="translate(18 2)"><circle fill="#00FEFF" cx="7" cy="7" r="7"/><path d="M7 2c.332 0 .765.182.89.694l.401 1.653.075.31.308-.09 1.645-.482a.906.906 0 0 1 1.113.542.868.868 0 0 1-.223.985L9.965 6.783l-.232.22.232.218 1.244 1.172a.869.869 0 0 1 .223.984.906.906 0 0 1-1.113.542l-1.645-.481-.308-.09-.075.31-.402 1.652c-.124.513-.557.694-.889.694-.332 0-.765-.181-.89-.694L5.71 9.657l-.075-.31-.308.091-1.645.481a.906.906 0 0 1-1.113-.542.869.869 0 0 1 .223-.984L4.035 7.22l.232-.219-.232-.219L2.79 5.612a.868.868 0 0 1-.223-.985.906.906 0 0 1 1.113-.542l1.645.481.308.09.075-.309.402-1.653C6.235 2.182 6.668 2 7 2" fill="#005A71"/></g></g></svg>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch -->
<title>icon-starred-32</title>
<desc>Created with Sketch.</desc>
<defs>
<path d="M11,2 L15,2 L15,4 L11,4 L11,2 Z M17,2 L19,2 L19,4 L17,4 L17,2 Z M14,28 L18,28 L21,28 L21,30 L14,30 L14,28 Z M28,18 L30,18 L30,21 L28,21 L28,18 Z M28.9970707,30 L23,30 L23,28 L27.5023012,28 C27.7851562,28 28,27.7771727 28,27.5023012 L28,23 L30,23 L30,28.9970707 C30,29.5621186 29.5509732,30 28.9970707,30 Z M9,2 L9,4 L4.49769878,4 C4.21484375,4 4,4.22595492 4,4.50468445 L4,6 L2,6 L2,3.0093689 C2,2.44335318 2.44902676,2 3.00292933,2 L9,2 Z" id="path-1"></path>
<filter x="-1.8%" y="-7.1%" width="103.6%" height="112.5%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<filter x="-1.8%" y="-7.1%" width="103.6%" height="112.5%" filterUnits="objectBoundingBox" id="filter-3">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
</filter>
<path d="M16.2999464,15.8401964 C16.308319,16.6949285 16.7256347,17.5052335 17.4378266,18.0070314 C18.0631741,18.4476404 18.8359546,18.5940831 19.5621306,18.4336316 L12.8402119,23.1785154 C12.9446152,23.6018303 13,24.0444473 13,24.5 C13,27.5375661 10.5375661,30 7.5,30 C4.46243388,30 2,27.5375661 2,24.5 C2,21.4624339 4.46243388,19 7.5,19 C8.62088218,19 9.66345095,19.3352996 10.5328767,19.9110692 L12.5318913,18.5 L10.5328767,17.0889308 C9.66345095,17.6647004 8.62088218,18 7.5,18 C4.46243388,18 2,15.5375661 2,12.5 C2,9.46243388 4.46243388,7 7.5,7 C10.5375661,7 13,9.46243388 13,12.5 C13,12.9555527 12.9446152,13.3981697 12.8402119,13.8214846 L16,16.0519233 L16.2999464,15.8401964 Z M17.5,22.0069002 L20.9681087,19.5588235 L25.6533664,22.8660643 C26.5557642,23.5030509 26.7709224,24.7509686 26.1339357,25.6533664 C25.4969491,26.5557642 24.2490314,26.7709224 23.3466336,26.1339357 L17.5,22.0069002 Z M7.5,15.25 C9.01878306,15.25 10.25,14.0187831 10.25,12.5 C10.25,10.9812169 9.01878306,9.75 7.5,9.75 C5.98121694,9.75 4.75,10.9812169 4.75,12.5 C4.75,14.0187831 5.98121694,15.25 7.5,15.25 Z M7.5,27.25 C9.01878306,27.25 10.25,26.0187831 10.25,24.5 C10.25,22.9812169 9.01878306,21.75 7.5,21.75 C5.98121694,21.75 4.75,22.9812169 4.75,24.5 C4.75,26.0187831 5.98121694,27.25 7.5,27.25 Z" id="path-4"></path>
<filter x="-2.0%" y="-39.1%" width="132.7%" height="145.7%" filterUnits="objectBoundingBox" id="filter-5">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<filter x="-2.0%" y="-39.1%" width="132.7%" height="145.7%" filterUnits="objectBoundingBox" id="filter-6">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
</filter>
</defs>
<g id="Onboarding" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="icon-starred">
<g id="Combined-Shape">
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill="#4D4D4D" fill-rule="evenodd" xlink:href="#path-1"></use>
<use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-1"></use>
</g>
<g id="Combined-Shape">
<use fill="black" fill-opacity="1" filter="url(#filter-5)" xlink:href="#path-4"></use>
<use fill="#4D4D4D" fill-rule="evenodd" xlink:href="#path-4"></use>
<use fill="black" fill-opacity="1" filter="url(#filter-6)" xlink:href="#path-4"></use>
</g>
<path d="M31.0298163,5.60065296 L26.6315676,4.81413617 L24.5599053,0.655603441 C24.3597524,0.253892444 23.949655,-8.95905326e-17 23.5009482,0 C23.0522413,5.97270217e-17 22.642144,0.253892444 22.441991,0.655603441 L20.3692531,4.81413617 L15.9796095,5.59850107 C15.5518938,5.67324058 15.1994617,5.97631422 15.0614174,6.38809939 C14.9233731,6.79988456 15.0218952,7.25422244 15.3180974,7.57178672 L18.4664647,10.9577899 L17.8114064,15.6489161 C17.7498225,16.0883409 17.9391303,16.5253075 18.3017873,16.7808292 C18.6644442,17.036351 19.1395182,17.0674963 19.5324134,16.8615077 L23.5004103,14.7913869 L27.4694829,16.8647355 C27.8623781,17.0707241 28.3374521,17.0395788 28.7001091,16.7840571 C29.062766,16.5285353 29.2520739,16.0915688 29.19049,15.652144 L28.534356,10.9577899 L31.6816477,7.57286266 C31.9779332,7.25540997 32.0766057,6.80113504 31.9387231,6.38932166 C31.8019739,5.98045861 31.4537759,5.67832329 31.0298163,5.60065296 Z" id="Shape" fill="#FF1AD9" fill-rule="nonzero"></path>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,7 +1,7 @@
{ {
"manifest_version": 2, "manifest_version": 2,
"name": "Firefox Screenshots", "name": "Firefox Screenshots",
"version": "9.0.0", "version": "10.1.0",
"description": "__MSG_addonDescription__", "description": "__MSG_addonDescription__",
"author": "__MSG_addonAuthorsList__", "author": "__MSG_addonAuthorsList__",
"homepage_url": "https://github.com/mozilla-services/screenshots", "homepage_url": "https://github.com/mozilla-services/screenshots",
@ -22,19 +22,7 @@
"background": { "background": {
"scripts": [ "scripts": [
"build/buildSettings.js", "build/buildSettings.js",
"log.js", "background/startBackground.js"
"makeUuid.js",
"catcher.js",
"background/selectorLoader.js",
"background/communication.js",
"background/auth.js",
"background/senderror.js",
"build/raven.js",
"build/shot.js",
"background/analytics.js",
"background/deviceInfo.js",
"background/takeshot.js",
"background/main.js"
] ]
}, },
"content_scripts": [ "content_scripts": [
@ -46,8 +34,7 @@
"catcher.js", "catcher.js",
"selector/callBackground.js", "selector/callBackground.js",
"sitehelper.js" "sitehelper.js"
], ]
"run_at": "document_start"
} }
], ],
"web_accessible_resources": [ "web_accessible_resources": [

View File

@ -153,6 +153,12 @@ this.slides = (function() {
event.preventDefault(); event.preventDefault();
callBackground("openPrivacyPage"); callBackground("openPrivacyPage");
}))); })));
doc.querySelector("#slide-overlay").addEventListener("click", watchFunction(assertIsTrusted((event) => {
if (event.target == doc.querySelector("#slide-overlay")) {
shooter.sendEvent("cancel-slides", "background-click");
callbacks.onEnd();
}
})));
setSlide(1); setSlide(1);
} }

View File

@ -18,7 +18,7 @@ this.documentMetadata = (function() {
function getOpenGraph() { function getOpenGraph() {
let openGraph = {}; let openGraph = {};
// If you update this, also update _OPENGRAPH_PROPERTIES in shot.js: // If you update this, also update _OPENGRAPH_PROPERTIES in shot.js:
let forceSingle = `title type url`.split(/\s+/g); let forceSingle = `title type url`.split(" ");
let openGraphProperties = ` let openGraphProperties = `
title type url image audio description determiner locale site_name video title type url image audio description determiner locale site_name video
image:secure_url image:type image:width image:height image:secure_url image:type image:width image:height

View File

@ -1,15 +1,15 @@
/* globals global, documentMetadata, util, uicontrol, ui, catcher */ /* globals global, documentMetadata, util, uicontrol, ui, catcher */
/* globals buildSettings, domainFromUrl, randomString */ /* globals buildSettings, domainFromUrl, randomString, shot */
"use strict"; "use strict";
this.shooter = (function() { // eslint-disable-line no-unused-vars this.shooter = (function() { // eslint-disable-line no-unused-vars
let exports = {}; let exports = {};
const { AbstractShot } = window.shot; const { AbstractShot } = shot;
const RANDOM_STRING_LENGTH = 16; const RANDOM_STRING_LENGTH = 16;
let backend; let backend;
let shot; let shotObject;
let supportsDrawWindow; let supportsDrawWindow;
const callBackground = global.callBackground; const callBackground = global.callBackground;
const clipboard = global.clipboard; const clipboard = global.clipboard;
@ -33,11 +33,11 @@ this.shooter = (function() { // eslint-disable-line no-unused-vars
callBackground("reportError", sanitizeError(errorObj)); callBackground("reportError", sanitizeError(errorObj));
}); });
{ catcher.watchFunction(() => {
let canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas'); let canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas');
let ctx = canvas.getContext('2d'); let ctx = canvas.getContext('2d');
supportsDrawWindow = !!ctx.drawWindow; supportsDrawWindow = !!ctx.drawWindow;
} })();
function screenshotPage(selectedPos) { function screenshotPage(selectedPos) {
if (!supportsDrawWindow) { if (!supportsDrawWindow) {
@ -81,7 +81,10 @@ this.shooter = (function() { // eslint-disable-line no-unused-vars
return; return;
} }
isSaving = setTimeout(() => { isSaving = setTimeout(() => {
ui.Box.clearSaveDisabled(); if (typeof ui !== "undefined") {
// ui might disappear while the timer is running because the save succeeded
ui.Box.clearSaveDisabled();
}
isSaving = null; isSaving = null;
}, 1000); }, 1000);
selectedPos = selectedPos.asJson(); selectedPos = selectedPos.asJson();
@ -91,8 +94,8 @@ this.shooter = (function() { // eslint-disable-line no-unused-vars
} }
let dataUrl = screenshotPage(selectedPos); let dataUrl = screenshotPage(selectedPos);
if (dataUrl) { if (dataUrl) {
shot.delAllClips(); shotObject.delAllClips();
shot.addClip({ shotObject.addClip({
createdDate: Date.now(), createdDate: Date.now(),
image: { image: {
url: dataUrl, url: dataUrl,
@ -116,8 +119,8 @@ this.shooter = (function() { // eslint-disable-line no-unused-vars
innerWidth: window.innerWidth innerWidth: window.innerWidth
}, },
selectedPos, selectedPos,
shotId: shot.id, shotId: shotObject.id,
shot: shot.asJson() shot: shotObject.asJson()
}).then((url) => { }).then((url) => {
const copied = clipboard.copy(url); const copied = clipboard.copy(url);
return callBackground("openShot", { url, copied }); return callBackground("openShot", { url, copied });
@ -154,7 +157,7 @@ this.shooter = (function() { // eslint-disable-line no-unused-vars
}); });
} }
catcher.watchPromise(promise.then((dataUrl) => { catcher.watchPromise(promise.then((dataUrl) => {
ui.triggerDownload(dataUrl, shot.filename); ui.triggerDownload(dataUrl, shotObject.filename);
uicontrol.deactivate(); uicontrol.deactivate();
})); }));
}; };
@ -163,14 +166,16 @@ this.shooter = (function() { // eslint-disable-line no-unused-vars
callBackground("sendEvent", ...args); callBackground("sendEvent", ...args);
}; };
shot = new AbstractShot( catcher.watchFunction(() => {
backend, shotObject = new AbstractShot(
randomString(RANDOM_STRING_LENGTH) + "/" + domainFromUrl(location), backend,
{ randomString(RANDOM_STRING_LENGTH) + "/" + domainFromUrl(location),
origin: window.shot.originFromUrl(location.href) {
} origin: shot.originFromUrl(location.href)
); }
shot.update(documentMetadata()); );
shotObject.update(documentMetadata());
})();
return exports; return exports;
})(); })();

View File

@ -272,6 +272,11 @@ this.ui = (function() { // eslint-disable-line no-unused-vars
}, },
updateElementSize() { updateElementSize() {
if (!this.element) {
// This can happen if the selector is unloaded during the resize adjustment
// time-delay
return;
}
this.element.style.height = window.innerHeight + "px"; this.element.style.height = window.innerHeight + "px";
this.element.style.width = window.innerWidth + "px"; this.element.style.width = window.innerWidth + "px";
}, },
@ -429,7 +434,6 @@ this.ui = (function() { // eslint-disable-line no-unused-vars
} else { } else {
this.el.classList.remove("left-selection"); this.el.classList.remove("left-selection");
} }
this.el.style.top = (pos.top - bodyRect.top) + "px"; this.el.style.top = (pos.top - bodyRect.top) + "px";
this.el.style.left = (pos.left - bodyRect.left) + "px"; this.el.style.left = (pos.left - bodyRect.left) + "px";
this.el.style.height = (pos.bottom - pos.top - bodyRect.top) + "px"; this.el.style.height = (pos.bottom - pos.top - bodyRect.top) + "px";
@ -450,6 +454,18 @@ this.ui = (function() { // eslint-disable-line no-unused-vars
this.bgRight.style.height = pos.bottom - pos.top + "px"; this.bgRight.style.height = pos.bottom - pos.top + "px";
this.bgRight.style.left = (pos.right - bodyRect.left) + "px"; this.bgRight.style.left = (pos.right - bodyRect.left) + "px";
this.bgRight.style.width = docWidth - (pos.right - bodyRect.left) + "px"; this.bgRight.style.width = docWidth - (pos.right - bodyRect.left) + "px";
if (!(this.isElementInViewport(this.buttons))) {
this.cancel.style.position = this.download.style.position = this.save.style.position = "fixed";
this.cancel.style.left = (pos.left - bodyRect.left - 50) + "px";
this.download.style.left = ((pos.left - bodyRect.left - 100)) + "px";
this.save.style.left = ((pos.left - bodyRect.left) - 190) + "px";
this.cancel.style.top = this.download.style.top = this.save.style.top = (pos.top - bodyRect.top) + "px";
} else {
this.cancel.style.position = this.download.style.position = this.save.style.position = "initial";
this.cancel.style.top = this.download.style.top = this.save.style.top = 0;
this.cancel.style.left = this.download.style.left = this.save.style.left = 0;
}
}, },
remove() { remove() {
@ -478,6 +494,7 @@ this.ui = (function() { // eslint-disable-line no-unused-vars
save.textContent = browser.i18n.getMessage("saveScreenshotSelectedArea"); save.textContent = browser.i18n.getMessage("saveScreenshotSelectedArea");
save.title = browser.i18n.getMessage("saveScreenshotSelectedArea"); save.title = browser.i18n.getMessage("saveScreenshotSelectedArea");
buttons.appendChild(save); buttons.appendChild(save);
this.buttons = buttons;
this.cancel = cancel; this.cancel = cancel;
this.download = download; this.download = download;
this.save = save; this.save = save;
@ -541,6 +558,11 @@ this.ui = (function() { // eslint-disable-line no-unused-vars
return false; return false;
}, },
isElementInViewport(el) {
let rect = el.getBoundingClientRect();
return (rect.right <= window.innerWidth);
},
clearSaveDisabled() { clearSaveDisabled() {
this.save.removeAttribute("disabled"); this.save.removeAttribute("disabled");
}, },

View File

@ -511,6 +511,15 @@ this.uicontrol = (function() {
}, },
mousedown(event) { mousedown(event) {
// FIXME: this is happening but we don't know why, we'll track it now
// but avoid popping up messages:
if (typeof ui === "undefined") {
let exc = new Error("Undefined ui in mousedown");
exc.unloadTime = unloadTime;
exc.nowTime = Date.now();
exc.noPopup = true;
throw exc;
}
if (ui.isHeader(event.target)) { if (ui.isHeader(event.target)) {
return undefined; return undefined;
} }
@ -774,14 +783,14 @@ this.uicontrol = (function() {
}; };
let documentWidth = Math.max( let documentWidth = Math.max(
document.body.clientWidth, document.body && document.body.clientWidth,
document.documentElement.clientWidth, document.documentElement.clientWidth,
document.body.scrollWidth, document.body && document.body.scrollWidth,
document.documentElement.scrollWidth); document.documentElement.scrollWidth);
let documentHeight = Math.max( let documentHeight = Math.max(
document.body.clientHeight, document.body && document.body.clientHeight,
document.documentElement.clientHeight, document.documentElement.clientHeight,
document.body.scrollHeight, document.body && document.body.scrollHeight,
document.documentElement.scrollHeight); document.documentElement.scrollHeight);
function scrollIfByEdge(pageX, pageY) { function scrollIfByEdge(pageX, pageY) {
@ -809,6 +818,11 @@ this.uicontrol = (function() {
let shouldOnboard = typeof slides !== "undefined"; let shouldOnboard = typeof slides !== "undefined";
exports.activate = function() { exports.activate = function() {
if (!document.body) {
callBackground("abortNoDocumentBody", document.documentElement.tagName);
selectorLoader.unloadModules();
return;
}
if (isFrameset()) { if (isFrameset()) {
callBackground("abortFrameset"); callBackground("abortFrameset");
selectorLoader.unloadModules(); selectorLoader.unloadModules();
@ -838,8 +852,11 @@ this.uicontrol = (function() {
} }
}; };
let unloadTime = 0;
exports.unload = function() { exports.unload = function() {
// Note that ui.unload() will be called on its own // Note that ui.unload() will be called on its own
unloadTime = Date.now();
removeHandlers(); removeHandlers();
}; };
@ -921,7 +938,7 @@ this.uicontrol = (function() {
registeredDocumentHandlers = []; registeredDocumentHandlers = [];
} }
exports.activate(); catcher.watchFunction(exports.activate)();
return exports; return exports;
})(); })();