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
29 changes: 20 additions & 9 deletions src/components/Output/PrintToZebraDialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { useT } from "../../lib/useT";
import { DialogShell } from "../ui/DialogShell";
import {
discoverBrowserPrintDevices,
isConnectionRefused,
sendViaBrowserPrint,
sendViaNetwork,
type BrowserPrintDevice,
Expand Down Expand Up @@ -56,14 +55,26 @@ export function PrintToZebraDialog({ zpl, onClose }: Props) {
async function handleNetworkSend() {
persistNetwork();
setNetStatus({ type: "sending" });
try {
await sendViaNetwork(ip.trim(), Number(port) || 9100, zpl);
setNetStatus({ type: "success", message: t.zebraPrint.success });
} catch (e) {
const msg = isConnectionRefused(e)
? t.zebraPrint.errorRefused
: t.zebraPrint.errorGeneric;
setNetStatus({ type: "error", message: msg });
const result = await sendViaNetwork(ip.trim(), Number(port) || 9100, zpl);
switch (result.kind) {
case "responded":
// 2xx only counts as success; print servers / proxies that respond
// with 4xx or 5xx must surface as an error rather than green-success.
if (result.status >= 200 && result.status < 300) {
setNetStatus({ type: "success", message: t.zebraPrint.success });
} else {
setNetStatus({ type: "error", message: t.zebraPrint.errorGeneric });
}
return;
Comment thread
u8array marked this conversation as resolved.
case "no_response":
// Raw-socket printers (port 9100) never reply with HTTP, so a
// timeout is the typical success case — but it is indistinguishable
// from an unreachable host. Report honestly instead of green-success.
setNetStatus({ type: "success", message: t.zebraPrint.sentNoResponse });
return;
case "refused":
setNetStatus({ type: "error", message: t.zebraPrint.errorRefused });
return;
}
}

Expand Down
36 changes: 31 additions & 5 deletions src/lib/zebraPrint.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,21 +45,47 @@ export function isConnectionRefused(e: unknown): boolean {
return e instanceof TypeError && /refused/i.test(e.message);
}

// Chrome shows a Private Network Access permission prompt on first use.
/**
* Outcome of a direct network-print attempt.
*
* - `responded`: fetch completed with an HTTP response. Rare for raw-socket
* printers (port 9100), more typical for print servers / web frontends.
* - `no_response`: fetch threw without a connection-refused signal — most
* commonly a timeout. For raw-socket Zebra printers this is the *normal*
* success case (they read the bytes and never reply with HTTP), but the
* same exception is also raised when the host is unreachable. The browser
* cannot tell those apart, so the UI must surface this honestly rather
* than reporting an unverified success.
* - `refused`: TCP RST — host reachable but nothing listening on the port.
*/
export type NetworkPrintResult =
| { kind: "responded"; status: number }
| { kind: "no_response" }
| { kind: "refused" };

/**
* Direct raw-socket print attempt. Returns a Result rather than throwing
* because the success and unreachable-host paths raise the same exception
* (the printer never speaks HTTP back). The Browser-Print helpers above
* throw because they speak HTTP end-to-end and have no such ambiguity.
*
* Chrome shows a Private Network Access permission prompt on first use.
*/
export async function sendViaNetwork(
ip: string,
port: number,
zpl: string,
): Promise<void> {
): Promise<NetworkPrintResult> {
try {
await fetch(`http://${ip}:${port}`, {
const res = await fetch(`http://${ip}:${port}`, {
method: "POST",
body: zpl,
headers: { "Content-Type": "text/plain" },
signal: AbortSignal.timeout(4000),
});
return { kind: "responded", status: res.status };
} catch (e) {
// Timeout/abort is expected — printer never sends a valid HTTP response.
if (isConnectionRefused(e)) throw e;
if (isConnectionRefused(e)) return { kind: "refused" };
return { kind: "no_response" };
}
}
1 change: 1 addition & 0 deletions src/locales/ar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const ar = {
noPrinters: 'لم يتم العثور على طابعات',
agentNotFound: 'عميل Zebra Browser Print غير نشط. قم بتنزيله من zebra.com.',
success: 'تم إرسال ZPL بنجاح',
sentNoResponse: 'تم الإرسال. تحقق من الطابعة.',
errorRefused: 'الاتصال مرفوض — تحقق من IP والمنفذ',
errorGeneric: 'فشل إرسال ZPL',
httpsWarning: 'الصفحة على HTTPS — قد يحظر المتصفح الطباعة المباشرة عبر IP (محتوى مختلط).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/bg.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const bg = {
noPrinters: 'Не са намерени принтери',
agentNotFound: 'Агентът Zebra Browser Print не работи. Изтеглете от zebra.com.',
success: 'ZPL изпратен успешно',
sentNoResponse: 'Изпратено. Проверете принтера.',
errorRefused: 'Връзката е отказана — проверете IP и порт',
errorGeneric: 'Неуспешно изпращане на ZPL',
httpsWarning: 'Страницата е на HTTPS — директният печат по IP може да бъде блокиран от браузъра (смесено съдържание).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/cs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const cs = {
noPrinters: 'Nenalezeny žádné tiskárny',
agentNotFound: 'Agent Zebra Browser Print není spuštěn. Stáhněte z zebra.com.',
success: 'ZPL úspěšně odesláno',
sentNoResponse: 'Odesláno. Zkontrolujte tiskárnu.',
errorRefused: 'Připojení odmítnuto — zkontrolujte IP a port',
errorGeneric: 'Odeslání ZPL selhalo',
httpsWarning: 'Stránka používá HTTPS — přímý tisk přes IP může být prohlížečem zablokován (smíšený obsah).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/da.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const da = {
noPrinters: 'Ingen printere fundet',
agentNotFound: 'Zebra Browser Print-agenten kører ikke. Download fra zebra.com.',
success: 'ZPL sendt',
sentNoResponse: 'Sendt. Kontrollér printeren.',
errorRefused: 'Forbindelse nægtet — kontroller IP og port',
errorGeneric: 'Afsendelse af ZPL mislykkedes',
httpsWarning: 'Siden bruger HTTPS — direkte udskrivning via IP kan blive blokeret af browseren (blandet indhold).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ const de = {
noPrinters: 'Keine Drucker gefunden',
agentNotFound: 'Zebra Browser Print Agent nicht gefunden. Download auf zebra.com.',
success: 'ZPL erfolgreich gesendet',
sentNoResponse: 'Gesendet. Bitte am Drucker prüfen.',
errorRefused: 'Verbindung abgelehnt — IP und Port prüfen',
errorGeneric: 'Fehler beim Senden',
httpsWarning: 'Seite läuft über HTTPS — direktes IP-Drucken kann vom Browser blockiert werden (Mixed Content).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/el.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const el = {
noPrinters: 'Δεν βρέθηκαν εκτυπωτές',
agentNotFound: 'Ο πράκτορας Zebra Browser Print δεν εκτελείται. Κατεβάστε από το zebra.com.',
success: 'Το ZPL στάλθηκε επιτυχώς',
sentNoResponse: 'Στάλθηκε. Ελέγξτε τον εκτυπωτή.',
errorRefused: 'Η σύνδεση απορρίφθηκε — ελέγξτε IP και θύρα',
errorGeneric: 'Αποτυχία αποστολής ZPL',
httpsWarning: 'Η σελίδα χρησιμοποιεί HTTPS — η άμεση εκτύπωση μέσω IP ενδέχεται να αποκλειστεί από τον φυλλομετρητή (μεικτό περιεχόμενο).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ const en = {
noPrinters: 'No printers found',
agentNotFound: 'Zebra Browser Print agent not running. Download it from zebra.com.',
success: 'ZPL sent successfully',
sentNoResponse: 'Sent. Verify on the printer.',
errorRefused: 'Connection refused — check IP and port',
errorGeneric: 'Failed to send ZPL',
httpsWarning: 'Page is on HTTPS — direct IP printing may be blocked by the browser (Mixed Content).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const es = {
noPrinters: 'No se encontraron impresoras',
agentNotFound: 'Agente Zebra Browser Print no activo. Descárgalo en zebra.com.',
success: 'ZPL enviado correctamente',
sentNoResponse: 'Enviado. Verifica en la impresora.',
errorRefused: 'Conexión rechazada — verifica IP y puerto',
errorGeneric: 'Error al enviar ZPL',
httpsWarning: 'La página está en HTTPS — la impresión directa por IP puede ser bloqueada por el navegador (contenido mixto).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/et.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const et = {
noPrinters: 'Printereid ei leitud',
agentNotFound: 'Zebra Browser Print agent ei tööta. Laadige alla aadressilt zebra.com.',
success: 'ZPL edukalt saadetud',
sentNoResponse: 'Saadetud. Kontrolli printerit.',
errorRefused: 'Ühendus keeldutud — kontrollige IP-d ja porti',
errorGeneric: 'ZPL saatmine ebaõnnestus',
httpsWarning: 'Leht kasutab HTTPS-i — otsene IP-printimistöö võib olla brauseri poolt blokeeritud (segasisaldus).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/fa.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const fa = {
noPrinters: 'چاپگری یافت نشد',
agentNotFound: 'عامل Zebra Browser Print در حال اجرا نیست. از zebra.com دانلود کنید.',
success: 'ZPL با موفقیت ارسال شد',
sentNoResponse: 'ارسال شد. روی چاپگر بررسی کنید.',
errorRefused: 'اتصال رد شد — IP و پورت را بررسی کنید',
errorGeneric: 'ارسال ZPL ناموفق بود',
httpsWarning: 'صفحه روی HTTPS است — چاپ مستقیم از طریق IP ممکن است توسط مرورگر مسدود شود (محتوای مختلط).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/fi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const fi = {
noPrinters: 'Tulostimia ei löydy',
agentNotFound: 'Zebra Browser Print -agentti ei ole käynnissä. Lataa osoitteesta zebra.com.',
success: 'ZPL lähetetty onnistuneesti',
sentNoResponse: 'Lähetetty. Tarkista tulostimelta.',
errorRefused: 'Yhteys evätty — tarkista IP ja portti',
errorGeneric: 'ZPL:n lähetys epäonnistui',
httpsWarning: 'Sivu on HTTPS:llä — suora IP-tulostus saattaa olla selaimen estämä (sekasisältö).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const fr = {
noPrinters: 'Aucune imprimante trouvée',
agentNotFound: 'Agent Zebra Browser Print non détecté. Téléchargez-le sur zebra.com.',
success: 'ZPL envoyé avec succès',
sentNoResponse: 'Envoyé. Vérifie sur l\'imprimante.',
errorRefused: 'Connexion refusée — vérifiez IP et port',
errorGeneric: 'Échec de l’envoi ZPL',
httpsWarning: 'La page est en HTTPS — l\'impression directe par IP peut être bloquée par le navigateur (contenu mixte).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/he.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const he = {
noPrinters: 'לא נמצאו מדפסות',
agentNotFound: 'סוכן Zebra Browser Print אינו פועל. הורד מזברא.com.',
success: 'ZPL נשלח בהצלחה',
sentNoResponse: 'נשלח. בדוק במדפסת.',
errorRefused: 'החיבור סורב — בדוק IP ופורט',
errorGeneric: 'שליחת ZPL נכשלה',
httpsWarning: 'הדף נמצא על HTTPS — הדפסה ישירה דרך IP עלולה להיחסם על ידי הדפדפן (תוכן מעורב).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/hr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const hr = {
noPrinters: 'Nisu pronađeni pisači',
agentNotFound: 'Agent Zebra Browser Print nije pokrenut. Preuzmite sa zebra.com.',
success: 'ZPL uspješno poslan',
sentNoResponse: 'Poslano. Provjerite na pisaču.',
errorRefused: 'Veza odbijena — provjerite IP i port',
errorGeneric: 'Slanje ZPL-a nije uspjelo',
httpsWarning: 'Stranica koristi HTTPS — izravno ispisivanje putem IP-a može biti blokirano od preglednika (mješoviti sadržaj).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/hu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const hu = {
noPrinters: 'Nem találhatók nyomtatók',
agentNotFound: 'A Zebra Browser Print ügynök nem fut. Töltse le a zebra.com oldalról.',
success: 'ZPL sikeresen elküldve',
sentNoResponse: 'Elküldve. Ellenőrizze a nyomtatón.',
errorRefused: 'Kapcsolat megtagadva — ellenőrizze az IP-t és a portot',
errorGeneric: 'ZPL küldése sikertelen',
httpsWarning: 'Az oldal HTTPS-en fut — az IP-n keresztüli közvetlen nyomtatást a böngésző blokkolhatja (vegyes tartalom).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const it = {
noPrinters: 'Nessuna stampante trovata',
agentNotFound: 'Agente Zebra Browser Print non attivo. Scaricalo su zebra.com.',
success: 'ZPL inviato con successo',
sentNoResponse: 'Inviato. Verifica sulla stampante.',
errorRefused: 'Connessione rifiutata — verifica IP e porta',
errorGeneric: 'Invio ZPL non riuscito',
httpsWarning: 'La pagina è in HTTPS — la stampa diretta tramite IP potrebbe essere bloccata dal browser (contenuto misto).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const ja = {
noPrinters: 'プリンターが見つかりません',
agentNotFound: 'Zebra Browser Print エージェントが起動していません。zebra.com からダウンロードしてください。',
success: 'ZPL を送信しました',
sentNoResponse: '送信しました。プリンターで確認してください。',
errorRefused: '接続が拒否されました — IP とポートを確認してください',
errorGeneric: 'ZPL の送信に失敗しました',
httpsWarning: 'ページが HTTPS 上にあります — ブラウザが直接 IP 印刷をブロックする場合があります(混在コンテンツ)。',
Expand Down
1 change: 1 addition & 0 deletions src/locales/ko.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const ko = {
noPrinters: '프린터를 찾을 수 없습니다',
agentNotFound: 'Zebra Browser Print 에이전트가 실행 중이 아닙니다. zebra.com에서 다운로드하세요.',
success: 'ZPL이 전송되었습니다',
sentNoResponse: '전송됨. 프린터에서 확인하세요.',
errorRefused: '연결이 거부되었습니다 — IP와 포트를 확인하세요',
errorGeneric: 'ZPL 전송에 실패했습니다',
httpsWarning: '페이지가 HTTPS 상에 있습니다 — 브라우저가 직접 IP 인쇄를 차단할 수 있습니다(혼합 콘텐츠).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/lt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const lt = {
noPrinters: 'Spausdintuvų nerasta',
agentNotFound: 'Zebra Browser Print agentas neveikia. Atsisiųskite iš zebra.com.',
success: 'ZPL sėkmingai išsiųsta',
sentNoResponse: 'Išsiųsta. Patikrinkite spausdintuvą.',
errorRefused: 'Ryšys atmestas — patikrinkite IP ir prievadą',
errorGeneric: 'ZPL siuntimas nepavyko',
httpsWarning: 'Puslapis naudoja HTTPS — tiesioginis spausdinimas per IP gali būti užblokuotas naršyklės (mišrus turinys).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/lv.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const lv = {
noPrinters: 'Printeri nav atrasti',
agentNotFound: 'Zebra Browser Print aģents nedarbojas. Lejupielādējiet no zebra.com.',
success: 'ZPL veikmīgi nosūtīts',
sentNoResponse: 'Nosūtīts. Pārbaudiet printerī.',
errorRefused: 'Savienojums atteikts — pārbaudiet IP un portu',
errorGeneric: 'ZPL nosūtīšana neizdevās',
httpsWarning: 'Lapa izmanto HTTPS — tiešā IP drukāšana var tikt bloķēta pārlūkprogrammā (jaukts saturs).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/nl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const nl = {
noPrinters: 'Geen printers gevonden',
agentNotFound: 'Zebra Browser Print-agent niet actief. Download op zebra.com.',
success: 'ZPL succesvol verzonden',
sentNoResponse: 'Verzonden. Controleer op de printer.',
errorRefused: 'Verbinding geweigerd — controleer IP en poort',
errorGeneric: 'ZPL verzenden mislukt',
httpsWarning: 'Pagina gebruikt HTTPS — direct afdrukken via IP kan worden geblokkeerd door de browser (gemengde inhoud).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/no.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const no = {
noPrinters: 'Ingen skrivere funnet',
agentNotFound: 'Zebra Browser Print-agenten kjører ikke. Last ned fra zebra.com.',
success: 'ZPL sendt',
sentNoResponse: 'Sendt. Sjekk på skriveren.',
errorRefused: 'Tilkobling nektet — sjekk IP og port',
errorGeneric: 'Sending av ZPL mislyktes',
httpsWarning: 'Siden bruker HTTPS — direkte utskrift via IP kan bli blokkert av nettleseren (blandet innhold).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const pl = {
noPrinters: 'Nie znaleziono drukarek',
agentNotFound: 'Agent Zebra Browser Print nie działa. Pobierz ze strony zebra.com.',
success: 'ZPL wysłany pomyślnie',
sentNoResponse: 'Wysłano. Sprawdź na drukarce.',
errorRefused: 'Odmowa połączenia — sprawdź IP i port',
errorGeneric: 'Błąd wysyłania ZPL',
httpsWarning: 'Strona używa HTTPS — bezpośrednie drukowanie przez IP może zostać zablokowane przez przeglądarkę (mieszana treść).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/pt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const pt = {
noPrinters: 'Nenhuma impressora encontrada',
agentNotFound: 'Agente Zebra Browser Print não está em execução. Baixe em zebra.com.',
success: 'ZPL enviado com sucesso',
sentNoResponse: 'Enviado. Verifique na impressora.',
errorRefused: 'Conexão recusada — verifique IP e porta',
errorGeneric: 'Falha ao enviar ZPL',
httpsWarning: 'A página está em HTTPS — a impressão direta por IP pode ser bloqueada pelo navegador (conteúdo misto).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/ro.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const ro = {
noPrinters: 'Nu s-au găsit imprimante',
agentNotFound: 'Agentul Zebra Browser Print nu rulează. Descărcați de pe zebra.com.',
success: 'ZPL trimis cu succes',
sentNoResponse: 'Trimis. Verifică pe imprimantă.',
errorRefused: 'Conexiune refuzată — verificați IP şi portul',
errorGeneric: 'Trimiterea ZPL a eşuat',
httpsWarning: 'Pagina este pe HTTPS — imprimarea directă prin IP poate fi blocată de browser (conținut mixt).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/sk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const sk = {
noPrinters: 'Neboli nájdené žiadne tlačiarne',
agentNotFound: 'Agent Zebra Browser Print nie je spustený. Stiahnite zo zebra.com.',
success: 'ZPL úspšne odoslané',
sentNoResponse: 'Odoslané. Skontrolujte na tlačiarni.',
errorRefused: 'Pripojenie odmietnuté — skontrolujte IP a port',
errorGeneric: 'Odoslanie ZPL zlyhalo',
httpsWarning: 'Stránka beží cez HTTPS — priama tlač cez IP môže byť prehliadačom zablokovaná (zmiešaný obsah).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/sl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const sl = {
noPrinters: 'Ni najdenih tiskalnikov',
agentNotFound: 'Agent Zebra Browser Print ne deluje. Prenesite s zebra.com.',
success: 'ZPL uspešno poslan',
sentNoResponse: 'Poslano. Preverite na tiskalniku.',
errorRefused: 'Povezava zavrnjena — preverite IP in vrata',
errorGeneric: 'Pošiljanje ZPL ni uspelo',
httpsWarning: 'Stran uporablja HTTPS — neposredno tiskanje prek IP-ja je morda blokirano s strani brskalnika (mešana vsebina).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/sr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const sr = {
noPrinters: 'Nisu pronađeni štampači',
agentNotFound: 'Agent Zebra Browser Print nije pokrenut. Preuzmite sa zebra.com.',
success: 'ZPL uspešno poslat',
sentNoResponse: 'Poslato. Proverite na štampaču.',
errorRefused: 'Veza odbijena — proverite IP i port',
errorGeneric: 'Slanje ZPL-a nije uspelo',
httpsWarning: 'Stranica koristi HTTPS — direktno štampanje putem IP može biti blokirano od strane pregledača (mešoviti sadržaj).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/sv.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const sv = {
noPrinters: 'Inga skrivare hittades',
agentNotFound: 'Zebra Browser Print-agenten körs inte. Ladda ner från zebra.com.',
success: 'ZPL skickades',
sentNoResponse: 'Skickat. Verifiera på skrivaren.',
errorRefused: 'Anslutning nekad — kontrollera IP och port',
errorGeneric: 'Det gick inte att skicka ZPL',
httpsWarning: 'Sidan använder HTTPS — direktutskrift via IP kan blockeras av webbläsaren (blandat innehåll).',
Expand Down
1 change: 1 addition & 0 deletions src/locales/tr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ const tr = {
noPrinters: 'Yazıcı bulunamadı',
agentNotFound: 'Zebra Browser Print aracısı çalışmıyor. zebra.com adresinden indirin.',
success: 'ZPL başarıyla gönderildi',
sentNoResponse: 'Gönderildi. Yazıcıdan doğrulayın.',
errorRefused: 'Bağlantı reddedildi — IP ve portu kontrol edin',
errorGeneric: 'ZPL gönderilemedi',
httpsWarning: 'Sayfa HTTPS üzerinde — doğrudan IP yazdırma tarayıcı tarafından engellenebilir (karma içerik).',
Expand Down
Loading