Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/slash-commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ for its available flags.
| `/compact` | Force context compaction for the current conversation |
| `/verbose` | Toggle verbose/compact tool display |
| `/reset` | Clear the conversation and all per-conversation flags |
| `/print` | Open the current page's native print dialog |
| `/screenshot [--full-page]` | Capture the visible tab, or the full scrollable page with `--full-page` (Chrome only) |
| `/record [--full-screen] [--hide-recording-indicator] [--transcribe]` | Record the current tab, or a selected screen/window with `--full-screen` (Chrome only); add `--hide-recording-indicator` to hide the banner or `--transcribe` to save a transcript after stop |
| `/export [--traces \| --config]` | Download version-stamped conversation Markdown, export the version-stamped tool chain with `--traces`, or export a Settings snapshot with `--config` |
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/ar.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'فتح مربع حوار الطباعة الأصلي للصفحة الحالية',
'sp.print.error': 'تعذر فتح مربع حوار الطباعة: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'انقطع بث الاستجابة؛ تتم إعادة محاولة دور Ask هذا بدون بث.',
'sp.providers.no_setup_group': 'لا يتطلب إعدادًا',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/bn.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'বর্তমান পৃষ্ঠার নেটিভ প্রিন্ট ডায়ালগ খুলুন',
'sp.print.error': 'প্রিন্ট ডায়ালগ খোলা যায়নি: {msg}',
'sp.streaming.fallback': 'প্রতিক্রিয়া স্ট্রিম বাধাগ্রস্ত হয়েছে; স্ট্রিমিং ছাড়া এই Ask পালাটি আবার চেষ্টা করা হচ্ছে।',
'sp.providers.no_setup_group': "কোন সেটআপ প্রয়োজন",
'sp.providers.no_setup': "কোনো সেটআপ নেই",
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/de.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Nativen Druckdialog der aktuellen Seite öffnen',
'sp.print.error': 'Druckdialog konnte nicht geöffnet werden: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'Der Antwortstream wurde unterbrochen; dieser Ask-Durchgang wird ohne Streaming erneut versucht.',
'sp.providers.no_setup_group': 'Keine Einrichtung erforderlich',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/en.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
import apocalypseModeCopy from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Open the current page’s native print dialog',
'sp.print.error': 'Could not open the print dialog: {msg}',
'sp.streaming.fallback': 'Response streaming was interrupted; retrying this Ask turn without streaming.',
'sp.providers.no_setup_group': 'No setup required',
'sp.providers.no_setup': 'No setup',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/es.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Abrir el diálogo de impresión nativo de la página actual',
'sp.print.error': 'No se pudo abrir el diálogo de impresión: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'Se interrumpió la transmisión de la respuesta; reintentando este turno de Ask sin transmisión.',
'sp.providers.no_setup_group': 'Sin configuración',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/fa.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'باز کردن گفت‌وگوی چاپ بومی صفحهٔ فعلی',
'sp.print.error': 'گفت‌وگوی چاپ باز نشد: {msg}',
'sp.streaming.fallback': 'جریان پاسخ قطع شد؛ این نوبت Ask بدون پخش جریانی دوباره امتحان می‌شود.',
'sp.providers.no_setup_group': "بدون نیاز به راه اندازی",
'sp.providers.no_setup': "بدون راه اندازی",
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/fr.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Ouvrir la boîte de dialogue d’impression native de la page actuelle',
'sp.print.error': 'Impossible d’ouvrir la boîte de dialogue d’impression : {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'Le flux de réponse a été interrompu ; nouvelle tentative de ce tour Ask sans streaming.',
'sp.providers.no_setup_group': 'Sans configuration',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/he.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'פתיחת תיבת הדו־שיח המקורית להדפסת הדף הנוכחי',
'sp.print.error': 'לא ניתן לפתוח את תיבת הדו־שיח להדפסה: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'הזרמת התשובה נקטעה; מתבצע ניסיון חוזר לתור Ask הזה ללא הזרמה.',
'sp.providers.no_setup_group': 'ללא הגדרה',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/hi.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'वर्तमान पृष्ठ का मूल प्रिंट संवाद खोलें',
'sp.print.error': 'प्रिंट संवाद नहीं खुल सका: {msg}',
'sp.streaming.fallback': 'प्रतिक्रिया स्ट्रीम बाधित हुई; इस Ask टर्न को बिना स्ट्रीमिंग के फिर से आज़माया जा रहा है।',
'sp.providers.no_setup_group': "किसी सेटअप की आवश्यकता नहीं है",
'sp.providers.no_setup': "कोई सेटअप नहीं",
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/id.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Buka dialog cetak bawaan halaman saat ini',
'sp.print.error': 'Tidak dapat membuka dialog cetak: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'Streaming respons terputus; mencoba kembali giliran Ask ini tanpa streaming.',
'sp.providers.no_setup_group': 'Tanpa penyiapan',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/ja.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': '現在のページのネイティブ印刷ダイアログを開く',
'sp.print.error': '印刷ダイアログを開けませんでした: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': '応答ストリームが中断されました。この Ask ターンをストリーミングなしで再試行します。',
'sp.providers.no_setup_group': '設定不要',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/ko.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': '현재 페이지의 기본 인쇄 대화상자 열기',
'sp.print.error': '인쇄 대화상자를 열 수 없습니다: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': '응답 스트리밍이 중단되었습니다. 이 Ask 요청을 스트리밍 없이 다시 시도합니다.',
'sp.providers.no_setup_group': '설정 필요 없음',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/ms.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Buka dialog cetak asli halaman semasa',
'sp.print.error': 'Tidak dapat membuka dialog cetak: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'Penstriman respons terganggu; mencuba semula giliran Ask ini tanpa penstriman.',
'sp.providers.no_setup_group': 'Tanpa persediaan',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/nl.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Het systeemeigen afdrukvenster van de huidige pagina openen',
'sp.print.error': 'Het afdrukvenster kon niet worden geopend: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'De antwoordstream is onderbroken; deze Ask-beurt wordt opnieuw geprobeerd zonder streaming.',
'sp.providers.no_setup_group': 'Geen configuratie nodig',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/pl.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Otwórz natywne okno drukowania bieżącej strony',
'sp.print.error': 'Nie udało się otworzyć okna drukowania: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'Strumieniowanie odpowiedzi zostało przerwane; ponawiam tę turę Ask bez strumieniowania.',
'sp.providers.no_setup_group': 'Bez konfiguracji',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/pt.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Abrir a caixa de diálogo de impressão nativa da página atual',
'sp.print.error': 'Não foi possível abrir a caixa de diálogo de impressão: {msg}',
'sp.streaming.fallback': 'A transmissão da resposta foi interrompida; tentando novamente esta interação Ask sem transmissão.',
'sp.providers.no_setup_group': "Nenhuma configuração necessária",
'sp.providers.no_setup': "Sem configuração",
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/ru.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Открыть системное диалоговое окно печати текущей страницы',
'sp.print.error': 'Не удалось открыть диалоговое окно печати: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'Поток ответа был прерван; этот запрос Ask повторяется без потоковой передачи.',
'sp.providers.no_setup_group': 'Без настройки',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/th.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'เปิดกล่องโต้ตอบการพิมพ์ดั้งเดิมของหน้าปัจจุบัน',
'sp.print.error': 'ไม่สามารถเปิดกล่องโต้ตอบการพิมพ์ได้: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'การสตรีมคำตอบถูกขัดจังหวะ กำลังลอง Ask รอบนี้อีกครั้งโดยไม่ใช้สตรีม',
'sp.providers.no_setup_group': 'ไม่ต้องตั้งค่า',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/tl.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Buksan ang native na dialog ng pag-print ng kasalukuyang pahina',
'sp.print.error': 'Hindi mabuksan ang dialog ng pag-print: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'Naputol ang pag-stream ng tugon; sinusubukang muli ang Ask turn na ito nang walang streaming.',
'sp.providers.no_setup_group': 'Walang setup',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/tr.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Geçerli sayfanın yerel yazdırma iletişim kutusunu aç',
'sp.print.error': 'Yazdırma iletişim kutusu açılamadı: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'Yanıt akışı kesildi; bu Ask turu akış olmadan yeniden deneniyor.',
'sp.providers.no_setup_group': 'Kurulum gerektirmez',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/uk.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Відкрити системне діалогове вікно друку поточної сторінки',
'sp.print.error': 'Не вдалося відкрити діалогове вікно друку: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'Потік відповіді перервано; цей запит Ask повторюється без потокової передачі.',
'sp.providers.no_setup_group': 'Без налаштування',
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/vi.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Mở hộp thoại in gốc của trang hiện tại',
'sp.print.error': 'Không thể mở hộp thoại in: {msg}',
'sp.streaming.fallback': 'Luồng phản hồi bị gián đoạn; đang thử lại lượt Ask này mà không phát trực tuyến.',
'sp.providers.no_setup_group': "Không cần thiết lập",
'sp.providers.no_setup': "Không cần thiết lập",
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/src/ui/locales/zh.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': '打开当前页面的原生打印对话框',
'sp.print.error': '无法打开打印对话框:{msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': '响应流已中断;正在以非流式方式重试本次 Ask。',
'sp.providers.no_setup_group': '无需配置',
Expand Down
27 changes: 25 additions & 2 deletions src/chrome/src/ui/sidepanel.js
Original file line number Diff line number Diff line change
Expand Up @@ -666,6 +666,7 @@ const SLASH_COMMANDS = [
{ value: '/compact', usage: '/compact [prompt]', descriptionKey: 'sp.slash.compact', action: 'compact', acceptsPayload: true },
{ value: '/verbose', usage: '/verbose', descriptionKey: 'sp.slash.verbose', action: 'toggle', outOfBand: true },
{ value: '/reset', usage: '/reset', descriptionKey: 'sp.slash.reset', action: 'reset' },
{ value: '/print', usage: '/print', descriptionKey: 'sp.slash.print', action: 'print' },
{
value: '/screenshot',
usage: '/screenshot [--full-page]',
Expand Down Expand Up @@ -7224,6 +7225,23 @@ function toggledVisionProviderConfig(providerId, config) {
return { enabled, config: { ...config, supportsVision: enabled } };
}

async function executePrintSlashCommand(tabId, currentTabId, tabs, scripting, showToast, translate) {
try {
const tab = tabId == null ? null : await tabs.get(tabId);
if (currentTabId !== tabId || !tab?.active) return { skipped: true };
await scripting.executeScript({
target: { tabId },
func: () => window.print(),
});
return { ok: true };
} catch (error) {
if (currentTabId === tabId) {
showToast(translate('sp.print.error', { msg: error?.message || 'unknown error' }), { duration: 5000 });
}
return { error: error?.message || 'unknown error' };
}
}

async function parseSlashCommands(text, tabId = currentTabId, options = {}) {
if (/^\s*\/watch(?:\s|$)/i.test(text) && !/^\s*\/watch\s+--help\s*$/i.test(text)) {
const watchArgs = parseWatchSlashCommand(text);
Expand Down Expand Up @@ -7276,7 +7294,7 @@ async function parseSlashCommands(text, tabId = currentTabId, options = {}) {
return '';
}

if ((command.value === '/screenshot' || command.value === '/record')
if ((command.value === '/screenshot' || command.value === '/record' || command.value === '/print')
&& isSelectionGroundedForTab(tabId)) {
showComposerToast(t('sp.selection_scope.description'), { duration: 5000 });
return '';
Expand Down Expand Up @@ -7439,6 +7457,11 @@ async function parseSlashCommands(text, tabId = currentTabId, options = {}) {
return '';
}

if (command.value === '/print') {
await executePrintSlashCommand(tabId, currentTabId, chrome.tabs, chrome.scripting, showComposerToast, t);
return '';
}

if (command.value === '/screenshot' && action === 'viewport') {
try {
const tab = tabId == null ? null : await chrome.tabs.get(tabId);
Expand Down Expand Up @@ -7899,7 +7922,7 @@ async function sendMessage(extraChatParams = {}) {
}
let runCaptureDirective = null;
if (!retryOptions) {
if (sourceGrounding && /^\s*\/(?:screenshot|record)(?:\s|$)/i.test(text)) {
if (sourceGrounding && /^\s*\/(?:screenshot|record|print)(?:\s|$)/i.test(text)) {
showComposerToast(t('sp.selection_scope.description'), { duration: 5000 });
return false;
}
Expand Down
2 changes: 2 additions & 0 deletions src/firefox/src/ui/locales/ar.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'فتح مربع حوار الطباعة الأصلي للصفحة الحالية',
'sp.print.error': 'تعذر فتح مربع حوار الطباعة: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'انقطع بث الاستجابة؛ تتم إعادة محاولة دور Ask هذا بدون بث.',
'sp.providers.no_setup_group': 'لا يتطلب إعدادًا',
Expand Down
2 changes: 2 additions & 0 deletions src/firefox/src/ui/locales/bn.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'বর্তমান পৃষ্ঠার নেটিভ প্রিন্ট ডায়ালগ খুলুন',
'sp.print.error': 'প্রিন্ট ডায়ালগ খোলা যায়নি: {msg}',
'sp.streaming.fallback': 'প্রতিক্রিয়া স্ট্রিম বাধাগ্রস্ত হয়েছে; স্ট্রিমিং ছাড়া এই Ask পালাটি আবার চেষ্টা করা হচ্ছে।',
'sp.providers.no_setup_group': "কোন সেটআপ প্রয়োজন",
'sp.providers.no_setup': "কোনো সেটআপ নেই",
Expand Down
2 changes: 2 additions & 0 deletions src/firefox/src/ui/locales/de.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Nativen Druckdialog der aktuellen Seite öffnen',
'sp.print.error': 'Druckdialog konnte nicht geöffnet werden: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'Der Antwortstream wurde unterbrochen; dieser Ask-Durchgang wird ohne Streaming erneut versucht.',
'sp.providers.no_setup_group': 'Keine Einrichtung erforderlich',
Expand Down
2 changes: 2 additions & 0 deletions src/firefox/src/ui/locales/en.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
import apocalypseModeCopy from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Open the current page’s native print dialog',
'sp.print.error': 'Could not open the print dialog: {msg}',
'sp.streaming.fallback': 'Response streaming was interrupted; retrying this Ask turn without streaming.',
'sp.providers.no_setup_group': 'No setup required',
'sp.providers.no_setup': 'No setup',
Expand Down
2 changes: 2 additions & 0 deletions src/firefox/src/ui/locales/es.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import chromeWebStoreLocale from './chrome-web-store.mjs';
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'Abrir el diálogo de impresión nativo de la página actual',
'sp.print.error': 'No se pudo abrir el diálogo de impresión: {msg}',
...chromeWebStoreLocale,
'sp.streaming.fallback': 'Se interrumpió la transmisión de la respuesta; reintentando este turno de Ask sin transmisión.',
'sp.providers.no_setup_group': 'Sin configuración',
Expand Down
2 changes: 2 additions & 0 deletions src/firefox/src/ui/locales/fa.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
import { getApocalypseModeCopy } from './apocalypse-copy.mjs';

export default {
'sp.slash.print': 'باز کردن گفت‌وگوی چاپ بومی صفحهٔ فعلی',
'sp.print.error': 'گفت‌وگوی چاپ باز نشد: {msg}',
'sp.streaming.fallback': 'جریان پاسخ قطع شد؛ این نوبت Ask بدون پخش جریانی دوباره امتحان می‌شود.',
'sp.providers.no_setup_group': "بدون نیاز به راه اندازی",
'sp.providers.no_setup': "بدون راه اندازی",
Expand Down
Loading
Loading