diff --git a/src-tauri/packaging/flatpak/de.u8array.zplab.yml b/src-tauri/packaging/flatpak/de.u8array.zplab.yml
new file mode 100644
index 00000000..6be47233
--- /dev/null
+++ b/src-tauri/packaging/flatpak/de.u8array.zplab.yml
@@ -0,0 +1,51 @@
+# Flathub manifest. Flathub builds this itself from the release deb, release.yml has no Flatpak leg.
+app-id: de.u8array.zplab
+runtime: org.gnome.Platform
+runtime-version: "50"
+sdk: org.gnome.Sdk
+command: ZPLab
+finish-args:
+ # Raw TCP to printers, Labelary previews, the loopback MCP server.
+ - --share=network
+ # The system print queue runs through libcups.
+ - --socket=cups
+ # The usblp nodes under /dev/usb are outside --device=usb.
+ - --device=all
+ # Saved printer and database passwords live in the Secret Service.
+ - --talk-name=org.freedesktop.secrets
+ - --socket=wayland
+ - --socket=fallback-x11
+ - --share=ipc
+ # The GTK file dialogs are not portal aware.
+ - --filesystem=home
+modules:
+ - name: zplab
+ buildsystem: simple
+ rename-desktop-file: ZPLab.desktop
+ rename-icon: ZPLab
+ build-commands:
+ - ar x ZPLab.deb
+ - tar -xf data.tar.*
+ - install -Dm755 usr/bin/ZPLab /app/bin/ZPLab
+ - install -Dm755 usr/bin/zplab-mcp /app/bin/zplab-mcp
+ - install -Dm644 usr/share/applications/ZPLab.desktop /app/share/applications/ZPLab.desktop
+ - for size in 32x32 128x128; do install -Dm644 "usr/share/icons/hicolor/$size/apps/ZPLab.png" "/app/share/icons/hicolor/$size/apps/ZPLab.png"; done
+ # Tauri files the 256 px icon under a size no theme lookup reads.
+ - install -Dm644 usr/share/icons/hicolor/256x256@2/apps/ZPLab.png /app/share/icons/hicolor/256x256/apps/ZPLab.png
+ - install -Dm644 de.u8array.zplab.metainfo.xml /app/share/metainfo/de.u8array.zplab.metainfo.xml
+ # The packaged metainfo launches the deb's desktop file name.
+ - sed -i 's#ZPLab.desktop#de.u8array.zplab.desktop#' /app/share/metainfo/de.u8array.zplab.metainfo.xml
+ sources:
+ - type: file
+ dest-filename: ZPLab.deb
+ only-arches: [x86_64]
+ url: https://github.com/u8array/ZPLab/releases/download/v0.7.1/ZPLab_0.7.1_amd64.deb
+ sha256: fc9044106420d1349227c74d259949c73305709882da3e733d8e347648ba9c4a
+ x-checker-data:
+ type: json
+ url: https://api.github.com/repos/u8array/ZPLab/releases/latest
+ version-query: .tag_name | sub("^v"; "")
+ url-query: .assets[] | select(.name | test("_amd64\\.deb$")) | .browser_download_url
+ # The deb of a release carries the metainfo as it was before that release's own entry.
+ - type: file
+ path: ../linux/de.u8array.zplab.metainfo.xml
diff --git a/src-tauri/packaging/flatpak/flathub.json b/src-tauri/packaging/flatpak/flathub.json
new file mode 100644
index 00000000..637604e8
--- /dev/null
+++ b/src-tauri/packaging/flatpak/flathub.json
@@ -0,0 +1,3 @@
+{
+ "only-arches": ["x86_64"]
+}
diff --git a/src-tauri/packaging/linux/de.u8array.zplab.metainfo.xml b/src-tauri/packaging/linux/de.u8array.zplab.metainfo.xml
index f93608d0..cf080770 100644
--- a/src-tauri/packaging/linux/de.u8array.zplab.metainfo.xml
+++ b/src-tauri/packaging/linux/de.u8array.zplab.metainfo.xml
@@ -78,4 +78,13 @@
https://github.com/u8array/ZPLab
+
+
+
+ https://github.com/u8array/ZPLab/releases/tag/v0.7.1
+
+
+ https://github.com/u8array/ZPLab/releases/tag/v0.7.0
+
+
diff --git a/src-tauri/src/package.rs b/src-tauri/src/package.rs
index a28af31d..326161f5 100644
--- a/src-tauri/src/package.rs
+++ b/src-tauri/src/package.rs
@@ -16,3 +16,8 @@ pub fn is_packaged() -> bool {
pub fn is_packaged() -> bool {
false
}
+
+/// The file marks every sandbox, even one started with a cleared environment.
+pub fn is_flatpak() -> bool {
+ cfg!(target_os = "linux") && std::path::Path::new("/.flatpak-info").exists()
+}
diff --git a/src-tauri/src/updates.rs b/src-tauri/src/updates.rs
index 45a4ed50..00b7282d 100644
--- a/src-tauri/src/updates.rs
+++ b/src-tauri/src/updates.rs
@@ -1,9 +1,11 @@
use tauri::{AppHandle, Config};
/// Tauri's Windows updater runs the NSIS setup, which cannot replace a packaged install.
-/// The Store variant also ships without plugins.updater.
+/// The Store variant also ships without plugins.updater. Flathub updates a Flatpak itself.
pub fn self_update_enabled(config: &Config) -> bool {
- config.plugins.0.contains_key("updater") && !crate::package::is_packaged()
+ config.plugins.0.contains_key("updater")
+ && !crate::package::is_packaged()
+ && !crate::package::is_flatpak()
}
#[tauri::command]
diff --git a/src-tauri/src/usb.rs b/src-tauri/src/usb.rs
index d0509b86..70152344 100644
--- a/src-tauri/src/usb.rs
+++ b/src-tauri/src/usb.rs
@@ -389,6 +389,10 @@ const UDEV_RULE: &str = include_str!("../packaging/udev/70-zplab.rules");
#[cfg(target_os = "linux")]
#[tauri::command]
pub async fn setup_usb_access() -> Result<(), String> {
+ // No pkexec in the sandbox and the host /etc is out of reach.
+ if crate::package::is_flatpak() {
+ return Err("flatpak".to_string());
+ }
// Used by AppImage (no installer) and as a repair path. Writes to
// /etc/udev/rules.d (writable on immutable distros, the right place for a
// runtime rule); set -e so a failed step surfaces instead of being swallowed.
diff --git a/src/components/Output/PrintToZebraDialog.tsx b/src/components/Output/PrintToZebraDialog.tsx
index 912686ff..0928eea0 100644
--- a/src/components/Output/PrintToZebraDialog.tsx
+++ b/src/components/Output/PrintToZebraDialog.tsx
@@ -230,7 +230,7 @@ export function PrintToZebraDialog({ zpl, onClose }: Props) {
setUsbStatus({ type: "idle" });
} catch (e) {
// Failed or cancelled: keep usbNeedsSetup so the button stays available.
- setUsbStatus({ type: "error", message: errorMessage(e) });
+ setUsbStatus({ type: "error", message: e === "flatpak" ? t.zebraPrint.usbSetupFlatpak : errorMessage(e) });
}
}
diff --git a/src/components/Output/PrintToZebraDialog.usb.test.tsx b/src/components/Output/PrintToZebraDialog.usb.test.tsx
new file mode 100644
index 00000000..ad2c7f3f
--- /dev/null
+++ b/src/components/Output/PrintToZebraDialog.usb.test.tsx
@@ -0,0 +1,60 @@
+// @vitest-environment jsdom
+import { describe, it, expect, afterEach, beforeEach, vi } from "vitest";
+import { render, cleanup, act, fireEvent, waitFor } from "@testing-library/react";
+import { PrintToZebraDialog } from "./PrintToZebraDialog";
+import { useLabelStore } from "../../store/labelStore";
+import { DEFAULT_PRINT_TARGET } from "../../lib/printTarget";
+import { fallbackTranslations as en } from "../../locales";
+
+vi.mock("../../lib/platform", async (importOriginal) => ({ ...(await importOriginal>()), isDesktopShell: true }));
+vi.mock("../../lib/localPrint", async (importOriginal) => ({
+ ...(await importOriginal>()),
+ listLocalPrinters: vi.fn().mockResolvedValue([]),
+}));
+// vi.mock is hoisted above this const, so the factory reaches it through a closure.
+const setupUsbAccess = vi.fn();
+vi.mock("../../lib/usbPrint", async (importOriginal) => ({
+ ...(await importOriginal>()),
+ listUsbPrinters: vi.fn().mockResolvedValue([{ id: "usb1", name: "Zebra ZD230", vendor_id: "0a5f" }]),
+ sendZplUsb: vi.fn().mockResolvedValue({ kind: "permission_denied" }),
+ setupUsbAccess: () => setupUsbAccess(),
+}));
+
+afterEach(cleanup);
+
+beforeEach(() => {
+ setupUsbAccess.mockReset();
+ act(() => {
+ useLabelStore.setState({ zebraPrintSource: "label", dataset: null, columnMapping: null, printTarget: { ...DEFAULT_PRINT_TARGET, transport: "usb" } });
+ });
+});
+
+describe("PrintToZebraDialog USB access", () => {
+ it("shows the manual route when the sandbox refuses to install the udev rule", async () => {
+ setupUsbAccess.mockRejectedValue("flatpak");
+ const r = render();
+ await waitFor(() => expect(r.getByText(/Zebra ZD230/)).toBeTruthy());
+ await act(async () => {
+ fireEvent.click(r.getByText(en.zebraPrint.send));
+ });
+ await act(async () => {
+ fireEvent.click(r.getByText(en.zebraPrint.usbSetupAccess));
+ });
+ expect(setupUsbAccess).toHaveBeenCalledTimes(1);
+ expect(r.getByText(en.zebraPrint.usbSetupFlatpak)).toBeTruthy();
+ expect(r.getByText(en.zebraPrint.usbSetupAccess)).toBeTruthy();
+ });
+
+ it("keeps the raw reason for any other failure", async () => {
+ setupUsbAccess.mockRejectedValue("setup cancelled");
+ const r = render();
+ await waitFor(() => expect(r.getByText(/Zebra ZD230/)).toBeTruthy());
+ await act(async () => {
+ fireEvent.click(r.getByText(en.zebraPrint.send));
+ });
+ await act(async () => {
+ fireEvent.click(r.getByText(en.zebraPrint.usbSetupAccess));
+ });
+ expect(r.getByText("setup cancelled")).toBeTruthy();
+ });
+});
diff --git a/src/locales/ar.ts b/src/locales/ar.ts
index 1ea8921b..f202da8b 100644
--- a/src/locales/ar.ts
+++ b/src/locales/ar.ts
@@ -826,7 +826,7 @@ const ar = {
checkUpdates: 'التحقق من التحديثات',
checkingUpdates: 'جارٍ التحقق…',
upToDate: 'أنت على أحدث إصدار.',
- updatesViaStore: 'التحديثات تصل عبر Microsoft Store.',
+ updatesViaStore: 'التحديثات تصل عبر المتجر الذي ثبّت ZPLab.',
},
preview: {
providerHeading: 'عارض المعاينة',
@@ -1790,6 +1790,7 @@ const ar = {
tabUsb: 'USB',
usbPermissionDenied: 'لا يمكن الوصول إلى طابعة USB. انقر على «إعداد الوصول» لمنح الإذن.',
usbSetupAccess: 'إعداد الوصول',
+ usbSetupFlatpak: 'داخل Flatpak، لا يمكن للتطبيق تثبيت قاعدة udev بنفسه. ثبّت الملف 70-zplab.rules من مستودع ZPLab على النظام المضيف، ثم أعد توصيل الطابعة.',
usbNotFound: 'لم يتم العثور على طابعة USB، أعد توصيلها وقم بالتحديث.',
},
pdfExport: {
diff --git a/src/locales/bg.ts b/src/locales/bg.ts
index c7e47646..5a18186e 100644
--- a/src/locales/bg.ts
+++ b/src/locales/bg.ts
@@ -826,7 +826,7 @@ const bg = {
checkUpdates: 'Проверка за актуализации',
checkingUpdates: 'Проверка…',
upToDate: 'Използвате най-новата версия.',
- updatesViaStore: 'Актуализациите пристигат през Microsoft Store.',
+ updatesViaStore: 'Актуализациите пристигат през магазина, който инсталира ZPLab.',
},
preview: {
providerHeading: 'Визуализатор за преглед',
@@ -1790,6 +1790,7 @@ const bg = {
tabUsb: 'USB',
usbPermissionDenied: 'Няма достъп до USB принтера. Щракнете върху Настройване на достъп, за да го предоставите.',
usbSetupAccess: 'Настройване на достъп',
+ usbSetupFlatpak: 'В Flatpak приложението не може само да инсталира правилото за udev. Инсталирайте 70-zplab.rules от хранилището на ZPLab на хост системата, след което включете принтера отново.',
usbNotFound: 'USB принтерът не е намерен, включете го отново и обновете.',
},
pdfExport: {
diff --git a/src/locales/cs.ts b/src/locales/cs.ts
index c3e9f9e5..0ae94ed5 100644
--- a/src/locales/cs.ts
+++ b/src/locales/cs.ts
@@ -826,7 +826,7 @@ const cs = {
checkUpdates: 'Zkontrolovat aktualizace',
checkingUpdates: 'Kontrola…',
upToDate: 'Máte nejnovější verzi.',
- updatesViaStore: 'Aktualizace přicházejí přes Microsoft Store.',
+ updatesViaStore: 'Aktualizace přicházejí přes obchod, který nainstaloval ZPLab.',
},
preview: {
providerHeading: 'Vykreslovač náhledu',
@@ -1790,6 +1790,7 @@ const cs = {
tabUsb: 'USB',
usbPermissionDenied: 'Bez přístupu k tiskárně USB. Přístup udělíte kliknutím na Nastavit přístup.',
usbSetupAccess: 'Nastavit přístup',
+ usbSetupFlatpak: 'Uvnitř Flatpaku si aplikace nemůže pravidlo udev nainstalovat sama. Nainstalujte 70-zplab.rules z repozitáře ZPLab na hostitelský systém a tiskárnu znovu připojte.',
usbNotFound: 'Tiskárna USB nebyla nalezena, znovu ji zapojte a obnovte.',
},
pdfExport: {
diff --git a/src/locales/da.ts b/src/locales/da.ts
index a7bd518d..f2643305 100644
--- a/src/locales/da.ts
+++ b/src/locales/da.ts
@@ -826,7 +826,7 @@ const da = {
checkUpdates: 'Søg efter opdateringer',
checkingUpdates: 'Søger…',
upToDate: 'Du har den nyeste version.',
- updatesViaStore: 'Opdateringer kommer via Microsoft Store.',
+ updatesViaStore: 'Opdateringer kommer via den butik, der installerede ZPLab.',
},
preview: {
providerHeading: 'Forhåndsvisningsrenderer',
@@ -1790,6 +1790,7 @@ const da = {
tabUsb: 'USB',
usbPermissionDenied: 'Ingen adgang til USB-printeren. Klik på Konfigurer adgang for at give den.',
usbSetupAccess: 'Konfigurer adgang',
+ usbSetupFlatpak: 'Inde i Flatpak kan appen ikke selv installere udev-reglen. Installer 70-zplab.rules fra ZPLab-repositoriet på værtssystemet, og tilslut derefter printeren igen.',
usbNotFound: 'USB-printer ikke fundet. Tilslut den igen, og opdater.',
},
pdfExport: {
diff --git a/src/locales/de.ts b/src/locales/de.ts
index e092f790..a0733b8c 100644
--- a/src/locales/de.ts
+++ b/src/locales/de.ts
@@ -826,7 +826,7 @@ const de = {
checkUpdates: 'Nach Updates suchen',
checkingUpdates: 'Suche läuft…',
upToDate: 'Du bist auf dem neuesten Stand.',
- updatesViaStore: 'Updates kommen über den Microsoft Store.',
+ updatesViaStore: 'Updates kommen über den Store, der ZPLab installiert hat.',
},
preview: {
providerHeading: 'Vorschau-Renderer',
@@ -1048,6 +1048,7 @@ const de = {
tabUsb: 'USB',
usbPermissionDenied: 'Kein Zugriff auf den USB-Drucker. Klicke auf Zugriff einrichten.',
usbSetupAccess: 'Zugriff einrichten',
+ usbSetupFlatpak: 'Innerhalb von Flatpak kann die App die udev-Regel nicht selbst installieren. Installiere 70-zplab.rules aus dem ZPLab-Repository auf dem Host und schließe den Drucker danach erneut an.',
usbNotFound: 'USB-Drucker nicht gefunden, neu einstecken und aktualisieren.',
},
pdfExport: {
diff --git a/src/locales/el.ts b/src/locales/el.ts
index c97af0b1..e42b6b60 100644
--- a/src/locales/el.ts
+++ b/src/locales/el.ts
@@ -826,7 +826,7 @@ const el = {
checkUpdates: 'Έλεγχος για ενημερώσεις',
checkingUpdates: 'Έλεγχος…',
upToDate: 'Έχετε την πιο πρόσφατη έκδοση.',
- updatesViaStore: 'Οι ενημερώσεις έρχονται μέσω του Microsoft Store.',
+ updatesViaStore: 'Οι ενημερώσεις έρχονται μέσω του καταστήματος που εγκατέστησε το ZPLab.',
},
preview: {
providerHeading: 'Μηχανή απόδοσης προεπισκόπησης',
@@ -1790,6 +1790,7 @@ const el = {
tabUsb: 'USB',
usbPermissionDenied: 'Δεν υπάρχει πρόσβαση στον εκτυπωτή USB. Κάντε κλικ στο Ρύθμιση πρόσβασης για να την παραχωρήσετε.',
usbSetupAccess: 'Ρύθμιση πρόσβασης',
+ usbSetupFlatpak: 'Μέσα στο Flatpak η εφαρμογή δεν μπορεί να εγκαταστήσει μόνη της τον κανόνα udev. Εγκαταστήστε το 70-zplab.rules από το αποθετήριο ZPLab στο σύστημα υποδοχής και συνδέστε ξανά τον εκτυπωτή.',
usbNotFound: 'Ο εκτυπωτής USB δεν βρέθηκε. Συνδέστε τον ξανά και ανανεώστε.',
},
pdfExport: {
diff --git a/src/locales/en.ts b/src/locales/en.ts
index 22207788..30df6d5f 100644
--- a/src/locales/en.ts
+++ b/src/locales/en.ts
@@ -826,7 +826,7 @@ const en = {
checkUpdates: 'Check for updates',
checkingUpdates: 'Checking…',
upToDate: 'You are up to date.',
- updatesViaStore: 'Updates arrive through the Microsoft Store.',
+ updatesViaStore: 'Updates arrive through the store that installed ZPLab.',
},
preview: {
providerHeading: 'Preview renderer',
@@ -1048,6 +1048,7 @@ const en = {
tabUsb: 'USB',
usbPermissionDenied: 'No access to the USB printer. Click Set up access to grant it.',
usbSetupAccess: 'Set up access',
+ usbSetupFlatpak: 'Inside Flatpak the app cannot install the udev rule itself. Install 70-zplab.rules from the ZPLab repository on the host, then re-plug the printer.',
usbNotFound: 'USB printer not found, re-plug it and refresh.',
},
pdfExport: {
diff --git a/src/locales/es.ts b/src/locales/es.ts
index 8929d779..7e9ddd9e 100644
--- a/src/locales/es.ts
+++ b/src/locales/es.ts
@@ -826,7 +826,7 @@ const es = {
checkUpdates: 'Buscar actualizaciones',
checkingUpdates: 'Comprobando…',
upToDate: 'Ya tienes la última versión.',
- updatesViaStore: 'Las actualizaciones llegan a través de Microsoft Store.',
+ updatesViaStore: 'Las actualizaciones llegan a través de la tienda que instaló ZPLab.',
},
preview: {
providerHeading: 'Renderizador de vista previa',
@@ -1790,6 +1790,7 @@ const es = {
tabUsb: 'USB',
usbPermissionDenied: 'Sin acceso a la impresora USB. Haz clic en Configurar acceso para concederlo.',
usbSetupAccess: 'Configurar acceso',
+ usbSetupFlatpak: 'Dentro de Flatpak, la aplicación no puede instalar la regla udev por sí misma. Instala 70-zplab.rules desde el repositorio de ZPLab en el host y luego vuelve a conectar la impresora.',
usbNotFound: 'Impresora USB no encontrada, vuelve a conectarla y actualiza.',
},
pdfExport: {
diff --git a/src/locales/et.ts b/src/locales/et.ts
index c03a7c34..caee8d1d 100644
--- a/src/locales/et.ts
+++ b/src/locales/et.ts
@@ -826,7 +826,7 @@ const et = {
checkUpdates: 'Otsi uuendusi',
checkingUpdates: 'Otsin…',
upToDate: 'Teil on uusim versioon.',
- updatesViaStore: 'Uuendused tulevad Microsoft Store kaudu.',
+ updatesViaStore: 'Uuendused tulevad poe kaudu, mis paigaldas rakenduse ZPLab.',
},
preview: {
providerHeading: 'Eelvaate renderdaja',
@@ -1790,6 +1790,7 @@ const et = {
tabUsb: 'USB',
usbPermissionDenied: 'USB-printerile puudub juurdepääs. Klõpsa Seadista juurdepääs, et see anda.',
usbSetupAccess: 'Seadista juurdepääs',
+ usbSetupFlatpak: 'Flatpaki sees ei saa rakendus ise udev-reeglit paigaldada. Paigalda 70-zplab.rules ZPLab-i hoidlast hostsüsteemi ja ühenda printer uuesti.',
usbNotFound: 'USB-printerit ei leitud. Ühenda see uuesti ja värskenda.',
},
pdfExport: {
diff --git a/src/locales/fa.ts b/src/locales/fa.ts
index d2a11df9..8d0ad15d 100644
--- a/src/locales/fa.ts
+++ b/src/locales/fa.ts
@@ -826,7 +826,7 @@ const fa = {
checkUpdates: 'بررسی بهروزرسانیها',
checkingUpdates: 'در حال بررسی…',
upToDate: 'شما از آخرین نسخه استفاده میکنید.',
- updatesViaStore: 'بهروزرسانیها از طریق Microsoft Store میرسند.',
+ updatesViaStore: 'بهروزرسانیها از طریق فروشگاهی میرسند که ZPLab را نصب کرده است.',
},
preview: {
providerHeading: 'موتور پیشنمایش',
@@ -1790,6 +1790,7 @@ const fa = {
tabUsb: 'USB',
usbPermissionDenied: 'دسترسی به چاپگر USB وجود ندارد. برای اعطای دسترسی روی «تنظیم دسترسی» کلیک کنید.',
usbSetupAccess: 'تنظیم دسترسی',
+ usbSetupFlatpak: 'داخل Flatpak، برنامه نمیتواند قانون udev را خودش نصب کند. فایل 70-zplab.rules را از مخزن ZPLab روی میزبان نصب کنید، سپس چاپگر را دوباره وصل کنید.',
usbNotFound: 'چاپگر USB یافت نشد، آن را دوباره وصل کنید و بهروزرسانی کنید.',
},
pdfExport: {
diff --git a/src/locales/fi.ts b/src/locales/fi.ts
index 8a367b82..45117c7a 100644
--- a/src/locales/fi.ts
+++ b/src/locales/fi.ts
@@ -826,7 +826,7 @@ const fi = {
checkUpdates: 'Tarkista päivitykset',
checkingUpdates: 'Tarkistetaan…',
upToDate: 'Sinulla on uusin versio.',
- updatesViaStore: 'Päivitykset saapuvat Microsoft Storen kautta.',
+ updatesViaStore: 'Päivitykset saapuvat sen kaupan kautta, joka asensi sovelluksen ZPLab.',
},
preview: {
providerHeading: 'Esikatselun renderöijä',
@@ -1790,6 +1790,7 @@ const fi = {
tabUsb: 'USB',
usbPermissionDenied: 'Ei käyttöoikeutta USB-tulostimeen. Napsauta Määritä käyttöoikeus myöntääksesi sen.',
usbSetupAccess: 'Määritä käyttöoikeus',
+ usbSetupFlatpak: 'Flatpakin sisällä sovellus ei voi asentaa udev-sääntöä itse. Asenna 70-zplab.rules ZPLab-tietovarastosta isäntäjärjestelmään ja kytke tulostin uudelleen.',
usbNotFound: 'USB-tulostinta ei löytynyt. Kytke se uudelleen ja päivitä.',
},
pdfExport: {
diff --git a/src/locales/fr.ts b/src/locales/fr.ts
index 8a79562d..7e7d77e0 100644
--- a/src/locales/fr.ts
+++ b/src/locales/fr.ts
@@ -826,7 +826,7 @@ const fr = {
checkUpdates: 'Rechercher des mises à jour',
checkingUpdates: 'Vérification…',
upToDate: 'Vous êtes à jour.',
- updatesViaStore: 'Les mises à jour arrivent via le Microsoft Store.',
+ updatesViaStore: 'Les mises à jour arrivent via la boutique qui a installé ZPLab.',
},
preview: {
providerHeading: "Moteur d'aperçu",
@@ -1790,6 +1790,7 @@ const fr = {
tabUsb: 'USB',
usbPermissionDenied: "Aucun accès à l'imprimante USB. Clique sur Configurer l'accès pour l'autoriser.",
usbSetupAccess: "Configurer l'accès",
+ usbSetupFlatpak: "À l'intérieur de Flatpak, l'application ne peut pas installer la règle udev elle-même. Installe 70-zplab.rules depuis le dépôt ZPLab sur l'hôte, puis rebranche l'imprimante.",
usbNotFound: 'Imprimante USB introuvable, rebranche-la et actualise.',
},
pdfExport: {
diff --git a/src/locales/he.ts b/src/locales/he.ts
index 0b3f491c..2cc94b39 100644
--- a/src/locales/he.ts
+++ b/src/locales/he.ts
@@ -826,7 +826,7 @@ const he = {
checkUpdates: 'בדיקת עדכונים',
checkingUpdates: 'בודק…',
upToDate: 'אתה מעודכן.',
- updatesViaStore: 'העדכונים מגיעים דרך Microsoft Store.',
+ updatesViaStore: 'העדכונים מגיעים דרך החנות שהתקינה את ZPLab.',
},
preview: {
providerHeading: 'מנוע תצוגה מקדימה',
@@ -1790,6 +1790,7 @@ const he = {
tabUsb: 'USB',
usbPermissionDenied: "אין גישה למדפסת ה-USB. לחץ על 'הגדרת גישה' כדי להעניק אותה.",
usbSetupAccess: 'הגדרת גישה',
+ usbSetupFlatpak: 'בתוך Flatpak האפליקציה לא יכולה להתקין את כלל ה-udev בעצמה. התקן את 70-zplab.rules ממאגר ZPLab על המארח, ואז חבר את המדפסת מחדש.',
usbNotFound: 'מדפסת ה-USB לא נמצאה, חבר אותה מחדש ורענן.',
},
pdfExport: {
diff --git a/src/locales/hr.ts b/src/locales/hr.ts
index 09733e2c..bbb2c885 100644
--- a/src/locales/hr.ts
+++ b/src/locales/hr.ts
@@ -826,7 +826,7 @@ const hr = {
checkUpdates: 'Provjeri ažuriranja',
checkingUpdates: 'Provjeravam…',
upToDate: 'Imate najnoviju verziju.',
- updatesViaStore: 'Ažuriranja stižu putem Microsoft Storea.',
+ updatesViaStore: 'Ažuriranja stižu putem trgovine koja je instalirala ZPLab.',
},
preview: {
providerHeading: 'Prikaz pregleda',
@@ -1790,6 +1790,7 @@ const hr = {
tabUsb: 'USB',
usbPermissionDenied: 'Nema pristupa USB pisaču. Kliknite Postavi pristup da biste ga odobrili.',
usbSetupAccess: 'Postavi pristup',
+ usbSetupFlatpak: 'Unutar Flatpaka aplikacija ne može sama instalirati udev pravilo. Instalirajte 70-zplab.rules iz ZPLab repozitorija na glavnom sustavu, zatim ponovno priključite pisač.',
usbNotFound: 'USB pisač nije pronađen. Ponovno ga priključite i osvježite.',
},
pdfExport: {
diff --git a/src/locales/hu.ts b/src/locales/hu.ts
index 92b13258..e399180b 100644
--- a/src/locales/hu.ts
+++ b/src/locales/hu.ts
@@ -826,7 +826,7 @@ const hu = {
checkUpdates: 'Frissítések keresése',
checkingUpdates: 'Keresés…',
upToDate: 'A legújabb verziót használja.',
- updatesViaStore: 'A frissítéseket a Microsoft Store kézbesíti.',
+ updatesViaStore: 'A frissítéseket az a bolt kézbesíti, amely telepítette a ZPLab alkalmazást.',
},
preview: {
providerHeading: 'Előnézet-megjelenítő',
@@ -1790,6 +1790,7 @@ const hu = {
tabUsb: 'USB',
usbPermissionDenied: 'Nincs hozzáférés az USB-nyomtatóhoz. Kattintson a Hozzáférés beállítása gombra az engedélyezéshez.',
usbSetupAccess: 'Hozzáférés beállítása',
+ usbSetupFlatpak: 'A Flatpakon belül az alkalmazás nem tudja magától telepíteni az udev szabályt. Telepítse a 70-zplab.rules fájlt a ZPLab tárolóból a gazdagépre, majd csatlakoztassa újra a nyomtatót.',
usbNotFound: 'Az USB-nyomtató nem található. Csatlakoztassa újra, és frissítsen.',
},
pdfExport: {
diff --git a/src/locales/it.ts b/src/locales/it.ts
index 7d9450b8..4767d585 100644
--- a/src/locales/it.ts
+++ b/src/locales/it.ts
@@ -826,7 +826,7 @@ const it = {
checkUpdates: 'Controlla aggiornamenti',
checkingUpdates: 'Controllo…',
upToDate: 'Hai la versione più recente.',
- updatesViaStore: 'Gli aggiornamenti arrivano tramite Microsoft Store.',
+ updatesViaStore: 'Gli aggiornamenti arrivano tramite lo store che ha installato ZPLab.',
},
preview: {
providerHeading: 'Motore di anteprima',
@@ -1790,6 +1790,7 @@ const it = {
tabUsb: 'USB',
usbPermissionDenied: 'Nessun accesso alla stampante USB. Fai clic su Configura accesso per concederlo.',
usbSetupAccess: 'Configura accesso',
+ usbSetupFlatpak: "All'interno di Flatpak l'app non può installare la regola udev da sola. Installa 70-zplab.rules dal repository ZPLab sull'host, poi ricollega la stampante.",
usbNotFound: 'Stampante USB non trovata, ricollegala e aggiorna.',
},
pdfExport: {
diff --git a/src/locales/ja.ts b/src/locales/ja.ts
index 5733e987..0fa11014 100644
--- a/src/locales/ja.ts
+++ b/src/locales/ja.ts
@@ -826,7 +826,7 @@ const ja = {
checkUpdates: 'アップデートを確認',
checkingUpdates: '確認中…',
upToDate: '最新の状態です。',
- updatesViaStore: 'アップデートはMicrosoft Store経由で届きます。',
+ updatesViaStore: 'アップデートはZPLabをインストールしたストア経由で届きます。',
},
preview: {
providerHeading: 'プレビューのレンダラー',
@@ -1790,6 +1790,7 @@ const ja = {
tabUsb: 'USB',
usbPermissionDenied: 'USBプリンターにアクセスできません。「アクセスを設定」をクリックして許可してください。',
usbSetupAccess: 'アクセスを設定',
+ usbSetupFlatpak: 'Flatpak内ではアプリが自分でudevルールをインストールできません。ホスト側でZPLabリポジトリから70-zplab.rulesをインストールし、プリンターを再接続してください。',
usbNotFound: 'USBプリンターが見つかりません。再接続して更新してください。',
},
pdfExport: {
diff --git a/src/locales/ko.ts b/src/locales/ko.ts
index e581f151..18ea6f3a 100644
--- a/src/locales/ko.ts
+++ b/src/locales/ko.ts
@@ -826,7 +826,7 @@ const ko = {
checkUpdates: '업데이트 확인',
checkingUpdates: '확인 중…',
upToDate: '최신 상태입니다.',
- updatesViaStore: '업데이트는 Microsoft Store를 통해 제공됩니다.',
+ updatesViaStore: '업데이트는 ZPLab을 설치한 스토어를 통해 제공됩니다.',
},
preview: {
providerHeading: '미리보기 렌더러',
@@ -1790,6 +1790,7 @@ const ko = {
tabUsb: 'USB',
usbPermissionDenied: "USB 프린터에 액세스할 수 없습니다. '액세스 설정'을 클릭하여 권한을 부여하세요.",
usbSetupAccess: '액세스 설정',
+ usbSetupFlatpak: 'Flatpak 내부에서는 앱이 직접 udev 규칙을 설치할 수 없습니다. 호스트에서 ZPLab 저장소의 70-zplab.rules를 설치한 뒤 프린터를 다시 연결하세요.',
usbNotFound: 'USB 프린터를 찾을 수 없습니다. 다시 연결한 후 새로 고침하세요.',
},
pdfExport: {
diff --git a/src/locales/lt.ts b/src/locales/lt.ts
index 3a99406d..2ed8f4da 100644
--- a/src/locales/lt.ts
+++ b/src/locales/lt.ts
@@ -826,7 +826,7 @@ const lt = {
checkUpdates: 'Tikrinti atnaujinimus',
checkingUpdates: 'Tikrinama…',
upToDate: 'Turite naujausią versiją.',
- updatesViaStore: 'Atnaujinimai pasiekia per Microsoft Store.',
+ updatesViaStore: 'Atnaujinimai pasiekia per parduotuvę, kuri įdiegė ZPLab.',
},
preview: {
providerHeading: 'Peržiūros atvaizdavimo įrankis',
@@ -1790,6 +1790,7 @@ const lt = {
tabUsb: 'USB',
usbPermissionDenied: 'Nėra prieigos prie USB spausdintuvo. Spustelėkite Nustatyti prieigą, kad ją suteiktumėte.',
usbSetupAccess: 'Nustatyti prieigą',
+ usbSetupFlatpak: 'Flatpak aplinkoje programa negali pati įdiegti udev taisyklės. Įdiekite 70-zplab.rules iš ZPLab saugyklos pagrindinėje sistemoje, tada iš naujo prijunkite spausdintuvą.',
usbNotFound: 'USB spausdintuvas nerastas. Prijunkite jį iš naujo ir atnaujinkite.',
},
pdfExport: {
diff --git a/src/locales/lv.ts b/src/locales/lv.ts
index 02d75c61..df006f73 100644
--- a/src/locales/lv.ts
+++ b/src/locales/lv.ts
@@ -826,7 +826,7 @@ const lv = {
checkUpdates: 'Meklēt atjauninājumus',
checkingUpdates: 'Pārbauda…',
upToDate: 'Jums ir jaunākā versija.',
- updatesViaStore: 'Atjauninājumus nodrošina Microsoft Store.',
+ updatesViaStore: 'Atjauninājumus nodrošina veikals, kas instalēja ZPLab.',
},
preview: {
providerHeading: 'Priekšskatījuma renderētājs',
@@ -1790,6 +1790,7 @@ const lv = {
tabUsb: 'USB',
usbPermissionDenied: 'Nav piekļuves USB printerim. Noklikšķiniet uz Iestatīt piekļuvi, lai to piešķirtu.',
usbSetupAccess: 'Iestatīt piekļuvi',
+ usbSetupFlatpak: 'Flatpak iekšienē lietotne nevar pati instalēt udev kārtulu. Instalējiet 70-zplab.rules no ZPLab repozitorija resursdatorā un pēc tam atkārtoti pievienojiet printeri.',
usbNotFound: 'USB printeris nav atrasts. Pievienojiet to atkārtoti un atsvaidziniet.',
},
pdfExport: {
diff --git a/src/locales/nl.ts b/src/locales/nl.ts
index eb93aabd..ff113031 100644
--- a/src/locales/nl.ts
+++ b/src/locales/nl.ts
@@ -826,7 +826,7 @@ const nl = {
checkUpdates: 'Controleren op updates',
checkingUpdates: 'Controleren…',
upToDate: 'Je hebt de nieuwste versie.',
- updatesViaStore: 'Updates komen via de Microsoft Store.',
+ updatesViaStore: 'Updates komen via de store die ZPLab heeft geïnstalleerd.',
},
preview: {
providerHeading: 'Voorbeeldrenderer',
@@ -1790,6 +1790,7 @@ const nl = {
tabUsb: 'USB',
usbPermissionDenied: 'Geen toegang tot de USB-printer. Klik op Toegang instellen om toegang te verlenen.',
usbSetupAccess: 'Toegang instellen',
+ usbSetupFlatpak: 'Binnen Flatpak kan de app de udev-regel niet zelf installeren. Installeer 70-zplab.rules uit de ZPLab-repository op de host en sluit de printer vervolgens opnieuw aan.',
usbNotFound: 'USB-printer niet gevonden. Sluit deze opnieuw aan en vernieuw.',
},
pdfExport: {
diff --git a/src/locales/no.ts b/src/locales/no.ts
index a6a8c653..59720fda 100644
--- a/src/locales/no.ts
+++ b/src/locales/no.ts
@@ -826,7 +826,7 @@ const no = {
checkUpdates: 'Se etter oppdateringer',
checkingUpdates: 'Søker…',
upToDate: 'Du har den nyeste versjonen.',
- updatesViaStore: 'Oppdateringer kommer via Microsoft Store.',
+ updatesViaStore: 'Oppdateringer kommer via butikken som installerte ZPLab.',
},
preview: {
providerHeading: 'Forhåndsvisningsmotor',
@@ -1790,6 +1790,7 @@ const no = {
tabUsb: 'USB',
usbPermissionDenied: 'Ingen tilgang til USB-skriveren. Klikk på Konfigurer tilgang for å gi den.',
usbSetupAccess: 'Konfigurer tilgang',
+ usbSetupFlatpak: 'Inne i Flatpak kan appen ikke installere udev-regelen selv. Installer 70-zplab.rules fra ZPLab-repositoriet på verten, og koble deretter skriveren til på nytt.',
usbNotFound: 'Fant ikke USB-skriveren. Koble den til på nytt, og oppdater.',
},
pdfExport: {
diff --git a/src/locales/pl.ts b/src/locales/pl.ts
index 032a0ba1..eeaebf04 100644
--- a/src/locales/pl.ts
+++ b/src/locales/pl.ts
@@ -826,7 +826,7 @@ const pl = {
checkUpdates: 'Sprawdź aktualizacje',
checkingUpdates: 'Sprawdzanie…',
upToDate: 'Masz najnowszą wersję.',
- updatesViaStore: 'Aktualizacje docierają przez Microsoft Store.',
+ updatesViaStore: 'Aktualizacje docierają przez sklep, który zainstalował ZPLab.',
},
preview: {
providerHeading: 'Silnik podglądu',
@@ -1790,6 +1790,7 @@ const pl = {
tabUsb: 'USB',
usbPermissionDenied: 'Brak dostępu do drukarki USB. Kliknij Skonfiguruj dostęp, aby go przyznać.',
usbSetupAccess: 'Skonfiguruj dostęp',
+ usbSetupFlatpak: 'Wewnątrz Flatpaka aplikacja nie może sama zainstalować reguły udev. Zainstaluj 70-zplab.rules z repozytorium ZPLab na hoście, a następnie podłącz drukarkę ponownie.',
usbNotFound: 'Nie znaleziono drukarki USB, podłącz ją ponownie i odśwież.',
},
pdfExport: {
diff --git a/src/locales/pt.ts b/src/locales/pt.ts
index d60ff898..0083d598 100644
--- a/src/locales/pt.ts
+++ b/src/locales/pt.ts
@@ -826,7 +826,7 @@ const pt = {
checkUpdates: 'Verificar atualizações',
checkingUpdates: 'Verificando…',
upToDate: 'Você está atualizado.',
- updatesViaStore: 'As atualizações chegam através da Microsoft Store.',
+ updatesViaStore: 'As atualizações chegam através da loja que instalou ZPLab.',
},
preview: {
providerHeading: 'Renderizador de pré-visualização',
@@ -1790,6 +1790,7 @@ const pt = {
tabUsb: 'USB',
usbPermissionDenied: 'Sem acesso à impressora USB. Clique em Configurar acesso para conceder.',
usbSetupAccess: 'Configurar acesso',
+ usbSetupFlatpak: 'Dentro do Flatpak, a aplicação não pode instalar a regra udev por si própria. Instale o 70-zplab.rules a partir do repositório ZPLab no anfitrião e depois volte a ligar a impressora.',
usbNotFound: 'Impressora USB não encontrada, reconecte-a e atualize.',
},
pdfExport: {
diff --git a/src/locales/ro.ts b/src/locales/ro.ts
index 6d95435f..fd055a4f 100644
--- a/src/locales/ro.ts
+++ b/src/locales/ro.ts
@@ -826,7 +826,7 @@ const ro = {
checkUpdates: 'Caută actualizări',
checkingUpdates: 'Se verifică…',
upToDate: 'Aveți cea mai recentă versiune.',
- updatesViaStore: 'Actualizările ajung prin Microsoft Store.',
+ updatesViaStore: 'Actualizările ajung prin magazinul care a instalat ZPLab.',
},
preview: {
providerHeading: 'Motor de previzualizare',
@@ -1790,6 +1790,7 @@ const ro = {
tabUsb: 'USB',
usbPermissionDenied: 'Fără acces la imprimanta USB. Fă clic pe Configurează accesul pentru a-l acorda.',
usbSetupAccess: 'Configurează accesul',
+ usbSetupFlatpak: 'În interiorul Flatpak, aplicația nu poate instala regula udev singură. Instalează 70-zplab.rules din depozitul ZPLab pe sistemul-host, apoi reconectează imprimanta.',
usbNotFound: 'Imprimanta USB nu a fost găsită, reconecteaz-o și reîmprospătează.',
},
pdfExport: {
diff --git a/src/locales/sk.ts b/src/locales/sk.ts
index b9c3d4a9..e611bd58 100644
--- a/src/locales/sk.ts
+++ b/src/locales/sk.ts
@@ -826,7 +826,7 @@ const sk = {
checkUpdates: 'Skontrolovať aktualizácie',
checkingUpdates: 'Kontrola…',
upToDate: 'Máte najnovšiu verziu.',
- updatesViaStore: 'Aktualizácie prichádzajú cez Microsoft Store.',
+ updatesViaStore: 'Aktualizácie prichádzajú cez obchod, ktorý nainštaloval ZPLab.',
},
preview: {
providerHeading: 'Vykresľovač náhľadu',
@@ -1790,6 +1790,7 @@ const sk = {
tabUsb: 'USB',
usbPermissionDenied: 'Žiadny prístup k tlačiarni USB. Prístup udelíte kliknutím na Nastaviť prístup.',
usbSetupAccess: 'Nastaviť prístup',
+ usbSetupFlatpak: 'Vo Flatpaku si aplikácia nemôže pravidlo udev nainštalovať sama. Nainštalujte 70-zplab.rules z repozitára ZPLab na hostiteľský systém a potom znova pripojte tlačiareň.',
usbNotFound: 'Tlačiareň USB sa nenašla, znova ju zapojte a obnovte.',
},
pdfExport: {
diff --git a/src/locales/sl.ts b/src/locales/sl.ts
index bc595e92..ab60acfc 100644
--- a/src/locales/sl.ts
+++ b/src/locales/sl.ts
@@ -826,7 +826,7 @@ const sl = {
checkUpdates: 'Preveri posodobitve',
checkingUpdates: 'Preverjanje…',
upToDate: 'Imate najnovejšo različico.',
- updatesViaStore: 'Posodobitve prihajajo prek Microsoft Store.',
+ updatesViaStore: 'Posodobitve prihajajo prek trgovine, ki je namestila ZPLab.',
},
preview: {
providerHeading: 'Izrisovalnik predogleda',
@@ -1790,6 +1790,7 @@ const sl = {
tabUsb: 'USB',
usbPermissionDenied: 'Ni dostopa do tiskalnika USB. Za dodelitev kliknite Nastavi dostop.',
usbSetupAccess: 'Nastavi dostop',
+ usbSetupFlatpak: 'Znotraj Flatpaka aplikacija ne more sama namestiti pravila udev. Namestite 70-zplab.rules iz repozitorija ZPLab na gostitelja in nato tiskalnik znova priključite.',
usbNotFound: 'Tiskalnika USB ni mogoče najti, znova ga priključite in osvežite.',
},
pdfExport: {
diff --git a/src/locales/sr.ts b/src/locales/sr.ts
index dc1049a9..72b9e8f2 100644
--- a/src/locales/sr.ts
+++ b/src/locales/sr.ts
@@ -826,7 +826,7 @@ const sr = {
checkUpdates: 'Провери ажурирања',
checkingUpdates: 'Провера…',
upToDate: 'Имате најновију верзију.',
- updatesViaStore: 'Ажурирања стижу путем Microsoft Storea.',
+ updatesViaStore: 'Ажурирања стижу путем продавнице која је инсталирала ZPLab.',
},
preview: {
providerHeading: 'Prikazivač pregleda',
@@ -1790,6 +1790,7 @@ const sr = {
tabUsb: 'USB',
usbPermissionDenied: 'Нема приступа USB штампачу. Кликните на Подеси приступ да бисте га омогућили.',
usbSetupAccess: 'Подеси приступ',
+ usbSetupFlatpak: 'Унутар Flatpak-а апликација не може сама да инсталира udev правило. Инсталирајте 70-zplab.rules из ZPLab репозиторијума на хост систем, затим поново прикључите штампач.',
usbNotFound: 'USB штампач није пронађен, поново га прикључите и освежите.',
},
pdfExport: {
diff --git a/src/locales/sv.ts b/src/locales/sv.ts
index 92941bb6..04381c50 100644
--- a/src/locales/sv.ts
+++ b/src/locales/sv.ts
@@ -826,7 +826,7 @@ const sv = {
checkUpdates: 'Sök efter uppdateringar',
checkingUpdates: 'Söker…',
upToDate: 'Du har den senaste versionen.',
- updatesViaStore: 'Uppdateringar kommer via Microsoft Store.',
+ updatesViaStore: 'Uppdateringar kommer via butiken som installerade ZPLab.',
},
preview: {
providerHeading: 'Förhandsgranskningsrenderare',
@@ -1790,6 +1790,7 @@ const sv = {
tabUsb: 'USB',
usbPermissionDenied: 'Ingen åtkomst till USB-skrivaren. Klicka på Konfigurera åtkomst för att ge den.',
usbSetupAccess: 'Konfigurera åtkomst',
+ usbSetupFlatpak: 'Inuti Flatpak kan appen inte installera udev-regeln själv. Installera 70-zplab.rules från ZPLab-förrådet på värden och anslut sedan skrivaren igen.',
usbNotFound: 'USB-skrivaren hittades inte. Anslut den igen och uppdatera.',
},
pdfExport: {
diff --git a/src/locales/tr.ts b/src/locales/tr.ts
index a6b96fd1..b3a9a836 100644
--- a/src/locales/tr.ts
+++ b/src/locales/tr.ts
@@ -826,7 +826,7 @@ const tr = {
checkUpdates: 'Güncellemeleri denetle',
checkingUpdates: 'Denetleniyor…',
upToDate: 'En güncel sürümü kullanıyorsunuz.',
- updatesViaStore: 'Güncellemeler Microsoft Store üzerinden gelir.',
+ updatesViaStore: "Güncellemeler, ZPLab'ı yükleyen mağaza üzerinden gelir.",
},
preview: {
providerHeading: 'Önizleme oluşturucu',
@@ -1790,6 +1790,7 @@ const tr = {
tabUsb: 'USB',
usbPermissionDenied: "USB yazıcıya erişilemiyor. İzin vermek için Erişimi ayarla'ya tıklayın.",
usbSetupAccess: 'Erişimi ayarla',
+ usbSetupFlatpak: 'Flatpak içinde uygulama udev kuralını kendi başına yükleyemez. ZPLab deposundan 70-zplab.rules dosyasını ana makineye yükleyin, ardından yazıcıyı yeniden takın.',
usbNotFound: 'USB yazıcı bulunamadı, yeniden takıp yenileyin.',
},
pdfExport: {
diff --git a/src/locales/zh-hans.ts b/src/locales/zh-hans.ts
index e7a4e3f6..b6a8ab08 100644
--- a/src/locales/zh-hans.ts
+++ b/src/locales/zh-hans.ts
@@ -826,7 +826,7 @@ const zhHans = {
checkUpdates: '检查更新',
checkingUpdates: '正在检查…',
upToDate: '已是最新版本。',
- updatesViaStore: '更新通过 Microsoft Store 提供。',
+ updatesViaStore: '更新通过安装 ZPLab 的商店提供。',
},
preview: {
providerHeading: '预览渲染方式',
@@ -1790,6 +1790,7 @@ const zhHans = {
tabUsb: 'USB',
usbPermissionDenied: '无法访问 USB 打印机。点击「设置访问权限」以授予权限。',
usbSetupAccess: '设置访问权限',
+ usbSetupFlatpak: '在 Flatpak 中,应用无法自行安装 udev 规则。请在主机上从 ZPLab 仓库安装 70-zplab.rules,然后重新插拔打印机。',
usbNotFound: '未找到 USB 打印机,请重新插入并刷新。',
},
pdfExport: {
diff --git a/src/locales/zh-hant.ts b/src/locales/zh-hant.ts
index 8ad1604d..ee332e3e 100644
--- a/src/locales/zh-hant.ts
+++ b/src/locales/zh-hant.ts
@@ -826,7 +826,7 @@ const zhHant = {
checkUpdates: '檢查更新',
checkingUpdates: '檢查中…',
upToDate: '已是最新版本。',
- updatesViaStore: '更新透過 Microsoft Store 提供。',
+ updatesViaStore: '更新透過安裝 ZPLab 的商店提供。',
},
preview: {
providerHeading: '預覽算繪方式',
@@ -1790,6 +1790,7 @@ const zhHant = {
tabUsb: 'USB',
usbPermissionDenied: '無法存取 USB 印表機。點按「設定存取權限」以授予權限。',
usbSetupAccess: '設定存取權限',
+ usbSetupFlatpak: '在 Flatpak 中,應用程式無法自行安裝 udev 規則。請在主機上從 ZPLab 儲存庫安裝 70-zplab.rules,然後重新插拔印表機。',
usbNotFound: '找不到 USB 印表機,請重新插入並重新整理。',
},
pdfExport: {