diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ddc82b0..a7a045a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,3 +41,36 @@ jobs: # locally from an elevated shell. - name: Compile tests run: cargo test --no-run --locked + + check-linux: + name: clippy + build + tests (Linux) + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + components: clippy + + # eframe/tray pull in GTK, libxdo and the Ayatana app-indicator at build + # time; the runner image doesn't ship their -dev packages. + - name: Install system libraries + run: | + sudo apt-get update + sudo apt-get install -y libgtk-3-dev libxdo-dev libayatana-appindicator3-dev pkg-config + + - name: Cache cargo build + uses: Swatinem/rust-cache@v2 + + - name: Clippy + run: cargo clippy --all-targets --locked -- -D warnings + + - name: Build + run: cargo build --locked + + # No requireAdministrator manifest on Linux, so the tests actually run + # here (the Windows job can only compile them). + - name: Tests + run: cargo test --locked diff --git a/README.md b/README.md index 9302c04..1eb693d 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,9 @@ date while you play ARC Raiders. It signs you into ARCTracker, helps you start the game from Steam or Epic, and then connects your game account so ARCTracker can sync your inventory automatically in the background. -It runs as a small Windows desktop app with a tray icon. Once it's set up, you -mostly leave it alone — open it, start your game, and play. +It runs as a small desktop app — a polished Windows build with a tray icon, plus +a build-from-source option for Linux (ARC Raiders via Proton). Once it's set up, +you mostly leave it alone — open it, start your game, and play. > **License:** ARCTracker Sync is **free for noncommercial use** under the > PolyForm Noncommercial License 1.0.0. **Commercial use requires a separate @@ -59,10 +60,12 @@ ARCTracker sign-in is kept in Windows Credential Manager. ### Why it needs Administrator To notice your game account connecting, ARCTracker Sync watches your own -computer's network traffic using Windows raw sockets, which Windows only allows -with Administrator rights. By default there's no kernel driver, bundled network -library, or extra capture tool to install — and it only ever looks at traffic on -your own machine. +computer's network traffic using raw sockets, which the OS only allows with +elevated privileges. On Windows that means Administrator rights; on Linux it +means the `CAP_NET_RAW` capability (granted with a one-time `setcap`, or by +running as root) — see [Linux](#linux-arc-raiders-via-proton). By default +there's no kernel driver, bundled network library, or extra capture tool to +install — and it only ever looks at traffic on your own machine. ### Optional: Npcap capture @@ -100,6 +103,35 @@ The app ships a manifest that requests elevation, so it runs as Administrator external tooling is needed for the default raw-socket capture; the optional Npcap capture method uses Npcap's driver, installed separately by the user. +### Linux (ARC Raiders via Proton) + +Windows is the primary, prebuilt target. Linux is supported as a +**build-from-source** option for running ARC Raiders through Proton — there is +no Linux release binary, so you compile it yourself. The audience here is +already comfortable in a terminal (you're running a Proton game), so this is a +script, not an installer. + +Prerequisites: + +- A stable Rust toolchain (install via [rustup](https://rustup.rs/)). +- The GUI's system libraries: GTK 3, libxdo, and the Ayatana app-indicator + (`libgtk-3-dev`, `libxdo-dev`, `libayatana-appindicator3-dev` on Debian/Ubuntu; + the equivalents on your distro). +- ARC Raiders on **Steam** (the Epic launcher isn't supported on Linux). + +From the repository root: + +```bash +./scripts/run-linux.sh +``` + +That builds the release binary, grants it `CAP_NET_RAW` with a one-time +`sudo setcap cap_net_raw+ep` (so the GUI itself runs unprivileged, the Linux +equivalent of the Windows Administrator requirement), and launches it. + +See [docs/LINUX.md](docs/LINUX.md) for how capture works under Proton, the +`SSLKEYLOGFILE` setup, a capture smoke test, and current caveats. + ## Contributing Bug reports, feature ideas, and pull requests are welcome. See diff --git a/examples/capture_smoke.rs b/examples/capture_smoke.rs new file mode 100644 index 0000000..2d0e848 --- /dev/null +++ b/examples/capture_smoke.rs @@ -0,0 +1,73 @@ +//! Capture smoke test: lists interfaces, opens the first non-loopback one, and +//! reports how many frames and TCP/443 segments arrive over a few seconds. +//! +//! It exercises the live capture backend end to end (interface enumeration, +//! socket open, frame read, link-layer strip, TCP/443 filter) without the GUI +//! or any game, so a non-zero TCP/443 count while browsing HTTPS means capture +//! works on this machine. Needs CAP_NET_RAW (run as root, or after +//! `setcap cap_net_raw+ep` on the binary). +//! +//! cargo run --release --example capture_smoke [interface] [seconds] + +use std::time::{Duration, Instant}; + +use anyhow::{Context, Result}; +use arctracker_sync::packet::{datalink_name, parse_tcp_segment}; +use arctracker_sync::rawsock::RawSock; + +fn main() -> Result<()> { + let mut args = std::env::args().skip(1); + let wanted = args.next(); + let seconds: u64 = args.next().and_then(|s| s.parse().ok()).unwrap_or(5); + + let sock = RawSock::load().context("loading capture backend")?; + let devices = sock.list_devices().context("listing interfaces")?; + if devices.is_empty() { + anyhow::bail!("no capture interfaces found"); + } + + println!("Interfaces:"); + for device in &devices { + let desc = device.description.as_deref().unwrap_or(""); + println!(" {} {}", device.name, desc); + } + + let chosen = match &wanted { + Some(name) => devices + .iter() + .find(|d| &d.name == name) + .with_context(|| format!("interface {name:?} not found"))?, + None => &devices[0], + }; + println!("\nOpening {} for {seconds}s ...", chosen.name); + + let mut capture = sock + .open_live(&chosen.name) + .with_context(|| format!("opening {}", chosen.name))?; + let datalink = capture.datalink()?; + capture.set_filter("tcp port 443").ok(); + println!("Datalink: {} ({datalink})", datalink_name(datalink)); + + let started = Instant::now(); + let mut frames = 0u64; + let mut https = 0u64; + while started.elapsed() < Duration::from_secs(seconds) { + if let Some(packet) = capture.next_packet()? { + frames += 1; + if parse_tcp_segment(frames, packet.timestamp_us, datalink, &packet.data)?.is_some() { + https += 1; + } + } + } + + println!("\nframes captured: {frames}"); + println!("TCP/443 segments: {https}"); + if https > 0 { + println!("OK: live TCP/443 capture works on this interface."); + } else if frames > 0 { + println!("Frames seen but no TCP/443 — browse an HTTPS site while this runs."); + } else { + println!("No frames — wrong interface, or CAP_NET_RAW is missing."); + } + Ok(()) +} diff --git a/locales/da.json b/locales/da.json index a3566bd..16de305 100644 --- a/locales/da.json +++ b/locales/da.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "Indstillinger", "SyncApp.state.needsAdmin.title": "En hurtig tilladelse først", "SyncApp.state.needsAdmin.body": "ARCTracker Sync skal køre som administrator for at læse dit inventar mens du spiller. Genstarte det med administratoradgang for at fortsætte.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync skal have tilladelse til at opsamle netværkstrafik for at læse dit inventar mens du spiller. Giv det opsamlingsadgang (CAP_NET_RAW) for at fortsætte.", "SyncApp.state.signedOut.title": "Velkommen til ARCTracker Sync", "SyncApp.state.signedOut.body": "Log ind for at forbinde din ARCTracker-konto. Når det er sat op, opdateres dit ARC Raiders-inventar automatisk mens du spiller.", "SyncApp.state.signingIn.title": "Afslut login…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "Spiller som %{account}. Dit ARC Raiders-inventar er opdateret på ARCTracker.", "SyncApp.state.synced.session": "Dit inventar forbliver synkroniseret indtil %{time}.", "SyncApp.state.synced.canClose": "Du kan lukke ARCTracker Sync og blive ved med at spille. Lad det køre i systemstatusfeltet for at blive ved med at synkronisere hele sessionnen.", + "SyncApp.state.synced.canCloseLinux": "Hold dette vindue åbent mens du spiller — ARCTracker Sync holder dit inventar synkroniseret hele sessionnen.", "SyncApp.state.syncedIdle.body": "Venter på din næste ARC Raiders-session. ARCTracker Sync kører videre i systemstatusfeltet.", + "SyncApp.state.syncedIdle.bodyLinux": "Venter på din næste ARC Raiders-session. Hold ARCTracker Sync kørende.", "SyncApp.state.needsLauncher.title": "%{launcher} skal forberes igen", "SyncApp.state.needsLauncher.body": "%{launcher} blev genstartet på egen hånd, så ARCTracker kan ikke læse dit inventar lige nu. Forbered det igen for at fortsætte synkroniseringen.", "SyncApp.state.needsAttention.title": "Synkronisering kræver opmærksomhed", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "Få hjælp", "SyncApp.action.tryAgain": "Prøv igen", "SyncApp.action.restartAsAdmin": "Genstart som administrator", + "SyncApp.action.grantCapture": "Giv opsamlingsadgang", "SyncApp.action.gotIt": "Forstået", "SyncApp.explain.title": "Hvad betyder forberedelsen af %{launcher}", "SyncApp.explain.body": "ARCTracker holder dit ARC Raiders-inventar opdateret på hjemmesiden automatisk mens du spiller. For at sætte det op, åbner det %{launcher} igen, bare få sekunder, så spillet kan forbinde til appen.\n\nMens du spiller, henter ARCTracker Sync en midlertidig adgangsnøgle fra spillet og sender den til ARCTracker, som bruger den til at læse dit inventar for dig. Nøglen udløber af sig selv og er aldrig dit %{launcher} eller ARC Raiders-password.\n\nDin %{launcher}-konto røres ikke. Dine spil, downloads, venner og login forbliver nøjagtigt som de er. Alt kører på din pc; det eneste, der sendes til ARCTracker, er den midlertidige nøgle.", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "Sprog", "SyncApp.settings.displayLanguage": "Visningssprog", "SyncApp.settings.matchesWindows": "Svarer til Windows som standard", + "SyncApp.settings.matchesSystem": "Svarer til dit system som standard", "SyncApp.settings.matchWindows": "Svar til Windows", + "SyncApp.settings.matchSystem": "Svar til system", "SyncApp.settings.network": "Netværk", "SyncApp.settings.networkAdapter": "Netværkskort", "SyncApp.settings.networkAdapterSub": "Auto-valgt. Skift kun hvis synkronisering ikke forbindes.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "Opsamlingsmetode", "SyncApp.settings.captureMethodSub": "Sådan læser Sync din pc's egen spiltrafik. Skift til Npcap, hvis antivirussoftware blokerer den indbyggede metode — det kan også fungere bedre, hvis du bruger en VPN eller proxy.", "SyncApp.settings.captureRawSockets": "Windows raw sockets (indbygget)", + "SyncApp.settings.captureRawSocketsLinux": "Raw sockets (AF_PACKET, indbygget)", "SyncApp.settings.captureNpcap": "Npcap (installeres separat)", "SyncApp.settings.npcapMissing": "Npcap er ikke installeret, så synkronisering kan ikke opsamle trafik. Installer det, og brug derefter Prøv igen på hovedskærmen.", "SyncApp.settings.npcapLink": "Hent Npcap (gratis) på npcap.com", diff --git a/locales/de.json b/locales/de.json index 01331ba..df22f51 100644 --- a/locales/de.json +++ b/locales/de.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "Einstellungen", "SyncApp.state.needsAdmin.title": "Zunächst eine kurze Berechtigung", "SyncApp.state.needsAdmin.body": "ARCTracker Sync benötigt Administratorrechte, um dein Inventar während des Spielens zu lesen. Starten Sie es mit Administratorzugriff neu, um fortzufahren.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync benötigt Berechtigung zum Erfassen von Netzwerkverkehr, um dein Inventar während des Spielens zu lesen. Gewähre ihm Erfassungszugriff (CAP_NET_RAW), um fortzufahren.", "SyncApp.state.signedOut.title": "Willkommen bei ARCTracker Sync", "SyncApp.state.signedOut.body": "Melde dich an, um dein ARCTracker-Konto zu verbinden. Nach der Einrichtung wird dein ARC Raiders-Inventar während des Spiels automatisch aktualisiert.", "SyncApp.state.signingIn.title": "Anmeldung wird abgeschlossen…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "Spielt als %{account}. Dein ARC Raiders-Inventar ist auf ARCTracker aktuell.", "SyncApp.state.synced.session": "Dein Inventar bleibt bis %{time} synchronisiert.", "SyncApp.state.synced.canClose": "Du kannst ARCTracker Sync schließen und weiterspielen. Lass es im Hintergrund laufen, um während deiner ganzen Sitzung synchronisiert zu bleiben.", + "SyncApp.state.synced.canCloseLinux": "Lass dieses Fenster während des Spielens offen — ARCTracker Sync hält dein Inventar während der gesamten Sitzung synchronisiert.", "SyncApp.state.syncedIdle.body": "Wartet auf deine nächste ARC Raiders-Sitzung. ARCTracker Sync läuft im Hintergrund weiter.", + "SyncApp.state.syncedIdle.bodyLinux": "Wartet auf deine nächste ARC Raiders-Sitzung. ARCTracker Sync läuft weiter.", "SyncApp.state.needsLauncher.title": "%{launcher} muss wieder vorbereitet werden", "SyncApp.state.needsLauncher.body": "%{launcher} wurde von selbst neu gestartet, daher kann ARCTracker dein Inventar momentan nicht lesen. Bereite es erneut vor, um die Synchronisierung weiterhin zu gewährleisten.", "SyncApp.state.needsAttention.title": "Synchronisierung benötigt Aufmerksamkeit", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "Hilfe erhalten", "SyncApp.action.tryAgain": "Nochmal versuchen", "SyncApp.action.restartAsAdmin": "Als Administrator neu starten", + "SyncApp.action.grantCapture": "Erfassungszugriff gewähren", "SyncApp.action.gotIt": "Verstanden", "SyncApp.explain.title": "Was %{launcher} vorbereiten bewirkt", "SyncApp.explain.body": "ARCTracker hält dein ARC Raiders-Inventar auf der Website automatisch aktuell, während du spielst. Um das einzurichten, öffnet es %{launcher} einmal neu, nur wenige Sekunden, damit das Spiel sich mit der App verbinden kann.\n\nWährend du spielst, holt ARCTracker Sync einen temporären Zugangsschlüssel aus dem Spiel und leitet ihn an ARCTracker weiter, das ihn nutzt, um dein Inventar für dich zu lesen. Der Schlüssel verfällt von selbst und ist niemals dein %{launcher}- oder ARC Raiders-Passwort.\n\nDein %{launcher}-Konto wird nicht berührt. Deine Spiele, Downloads, Freunde und Anmeldung bleiben genau wie sie sind. Alles läuft auf deinem PC. Das einzige, das an ARCTracker versendet wird, ist dieser temporäre Schlüssel.", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "Sprache", "SyncApp.settings.displayLanguage": "Anzeigesprache", "SyncApp.settings.matchesWindows": "Entspricht standardmäßig Windows", + "SyncApp.settings.matchesSystem": "Entspricht standardmäßig deinem System", "SyncApp.settings.matchWindows": "Windows abgleichen", + "SyncApp.settings.matchSystem": "System abgleichen", "SyncApp.settings.network": "Netzwerk", "SyncApp.settings.networkAdapter": "Netzwerkadapter", "SyncApp.settings.networkAdapterSub": "Automatisch ausgewählt. Nur ändern, wenn Sync sich nicht verbindet.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "Erfassungsmethode", "SyncApp.settings.captureMethodSub": "Wie Sync den eigenen Spielverkehr deines PCs liest. Wechsle zu Npcap, wenn Antivirensoftware die integrierte Methode blockiert — es kann auch besser funktionieren, wenn du ein VPN oder einen Proxy verwendest.", "SyncApp.settings.captureRawSockets": "Windows Raw Sockets (integriert)", + "SyncApp.settings.captureRawSocketsLinux": "Raw Sockets (AF_PACKET, integriert)", "SyncApp.settings.captureNpcap": "Npcap (separat installiert)", "SyncApp.settings.npcapMissing": "Npcap ist nicht installiert, daher kann die Synchronisierung keinen Datenverkehr erfassen. Installiere es und nutze dann „Nochmal versuchen“ auf dem Hauptbildschirm.", "SyncApp.settings.npcapLink": "Npcap (kostenlos) auf npcap.com herunterladen", diff --git a/locales/en.json b/locales/en.json index 9bf5afd..997b688 100644 --- a/locales/en.json +++ b/locales/en.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "Settings", "SyncApp.state.needsAdmin.title": "One quick permission first", "SyncApp.state.needsAdmin.body": "ARCTracker Sync needs to run as administrator to read your inventory while you play. Restart it with administrator access to continue.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync needs permission to capture network traffic to read your inventory while you play. Grant it capture access (CAP_NET_RAW) to continue.", "SyncApp.state.signedOut.title": "Welcome to ARCTracker Sync", "SyncApp.state.signedOut.body": "Sign in to connect your ARCTracker account. Once set up, your ARC Raiders inventory stays up to date automatically while you play.", "SyncApp.state.signingIn.title": "Finish signing in…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "Playing as %{account}. Your ARC Raiders inventory is up to date on ARCTracker.", "SyncApp.state.synced.session": "Your inventory stays synced until %{time}.", "SyncApp.state.synced.canClose": "You can close this window and keep playing — ARCTracker Sync stays in the tray and keeps your stash synced all session.", + "SyncApp.state.synced.canCloseLinux": "Keep this window open while you play — ARCTracker Sync keeps your stash synced all session.", "SyncApp.state.syncedIdle.body": "Waiting for your next ARC Raiders session. ARCTracker Sync keeps running in the tray.", + "SyncApp.state.syncedIdle.bodyLinux": "Waiting for your next ARC Raiders session. Keep ARCTracker Sync running.", "SyncApp.state.needsLauncher.title": "%{launcher} needs preparing again", "SyncApp.state.needsLauncher.body": "%{launcher} was restarted on its own, so ARCTracker can't read your inventory right now. Prepare it again to keep syncing.", "SyncApp.state.needsAttention.title": "Sync needs attention", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "Get help", "SyncApp.action.tryAgain": "Try again", "SyncApp.action.restartAsAdmin": "Restart as administrator", + "SyncApp.action.grantCapture": "Grant capture access", "SyncApp.action.gotIt": "Got it", "SyncApp.explain.title": "What preparing %{launcher} does", "SyncApp.explain.body": "ARCTracker keeps your ARC Raiders inventory up to date on the website automatically while you play. To set that up, it reopens %{launcher} once, just for a few seconds, so the game can connect to the app.\n\nWhile you play, ARCTracker Sync picks up a temporary access key from the game and passes it to ARCTracker, which uses it to read your inventory for you. The key expires on its own and is never your %{launcher} or ARC Raiders password.\n\nYour %{launcher} account isn't touched. Your games, downloads, friends, and sign-in stay exactly as they are. Everything runs on your PC; the only thing sent to ARCTracker is that temporary key.", @@ -84,6 +88,8 @@ "SyncApp.settings.displayLanguage": "Display language", "SyncApp.settings.matchesWindows": "Matches Windows by default", "SyncApp.settings.matchWindows": "Match Windows", + "SyncApp.settings.matchesSystem": "Matches your system by default", + "SyncApp.settings.matchSystem": "Match system", "SyncApp.settings.network": "Network", "SyncApp.settings.networkAdapter": "Network adapter", "SyncApp.settings.networkAdapterSub": "Auto-selected. Only change it if sync won't connect.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "Capture method", "SyncApp.settings.captureMethodSub": "How Sync reads your PC's own game traffic. Switch to Npcap if antivirus software blocks the built-in method — it may also work better if you use a VPN or proxy.", "SyncApp.settings.captureRawSockets": "Windows raw sockets (built in)", + "SyncApp.settings.captureRawSocketsLinux": "Raw sockets (AF_PACKET, built in)", "SyncApp.settings.captureNpcap": "Npcap (installed separately)", "SyncApp.settings.npcapMissing": "Npcap isn't installed, so sync can't capture traffic. Install it, then use Try again on the main screen.", "SyncApp.settings.npcapLink": "Get Npcap (free) at npcap.com", diff --git a/locales/es.json b/locales/es.json index 2a6b837..90e40a1 100644 --- a/locales/es.json +++ b/locales/es.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "Configuración", "SyncApp.state.needsAdmin.title": "Un permiso rápido primero", "SyncApp.state.needsAdmin.body": "ARCTracker Sync necesita ejecutarse como administrador para leer tu inventario mientras juegas. Reinícialo con acceso de administrador para continuar.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync necesita permiso para capturar tráfico de red y leer tu inventario mientras juegas. Otórgale acceso a captura (CAP_NET_RAW) para continuar.", "SyncApp.state.signedOut.title": "Bienvenido a ARCTracker Sync", "SyncApp.state.signedOut.body": "Inicia sesión para conectar tu cuenta de ARCTracker. Una vez configurado, tu inventario de ARC Raiders se mantendrá actualizado automáticamente mientras juegas.", "SyncApp.state.signingIn.title": "Finaliza el inicio de sesión…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "Jugando como %{account}. Tu inventario de ARC Raiders está actualizado en ARCTracker.", "SyncApp.state.synced.session": "Tu inventario permanece sincronizado hasta las %{time}.", "SyncApp.state.synced.canClose": "Puedes cerrar ARCTracker Sync y seguir jugando. Déjalo ejecutándose en la bandeja para mantenerte sincronizado durante toda tu sesión.", + "SyncApp.state.synced.canCloseLinux": "Mantén esta ventana abierta mientras juegas — ARCTracker Sync mantiene tu inventario sincronizado durante toda la sesión.", "SyncApp.state.syncedIdle.body": "Esperando tu próxima sesión de ARC Raiders. ARCTracker Sync sigue ejecutándose en la bandeja.", + "SyncApp.state.syncedIdle.bodyLinux": "Esperando tu próxima sesión de ARC Raiders. Mantén ARCTracker Sync ejecutándose.", "SyncApp.state.needsLauncher.title": "%{launcher} necesita prepararse de nuevo", "SyncApp.state.needsLauncher.body": "%{launcher} se reinició por sí solo, así que ARCTracker no puede leer tu inventario ahora. Prepáralo de nuevo para seguir sincronizando.", "SyncApp.state.needsAttention.title": "La sincronización necesita atención", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "Obtener ayuda", "SyncApp.action.tryAgain": "Intentar de nuevo", "SyncApp.action.restartAsAdmin": "Reiniciar como administrador", + "SyncApp.action.grantCapture": "Otorgar acceso a captura", "SyncApp.action.gotIt": "Entendido", "SyncApp.explain.title": "Lo que hace preparar %{launcher}", "SyncApp.explain.body": "ARCTracker mantiene tu inventario de ARC Raiders actualizado en el sitio web automáticamente mientras juegas. Para configurarlo, reabre %{launcher} una sola vez, solo unos segundos, para que el juego pueda conectarse a la aplicación.\n\nMientras juegas, ARCTracker Sync recoge una clave de acceso temporal del juego y se la pasa a ARCTracker, que la usa para leer tu inventario por ti. La clave expira por sí sola y nunca es tu contraseña de %{launcher} ni de ARC Raiders.\n\nTu cuenta de %{launcher} no se ve afectada. Tus juegos, descargas, amigos e inicio de sesión permanecen exactamente como están. Todo se ejecuta en tu PC; lo único que se envía a ARCTracker es esa clave temporal.", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "Idioma", "SyncApp.settings.displayLanguage": "Idioma de visualización", "SyncApp.settings.matchesWindows": "Coincide con Windows de forma predeterminada", + "SyncApp.settings.matchesSystem": "Coincide con tu sistema de forma predeterminada", "SyncApp.settings.matchWindows": "Coincidir con Windows", + "SyncApp.settings.matchSystem": "Coincidir con el sistema", "SyncApp.settings.network": "Red", "SyncApp.settings.networkAdapter": "Adaptador de red", "SyncApp.settings.networkAdapterSub": "Seleccionado automáticamente. Solo cambia si la sincronización no se conecta.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "Método de captura", "SyncApp.settings.captureMethodSub": "Cómo Sync lee el tráfico de juego de tu propio PC. Cambia a Npcap si un antivirus bloquea el método integrado — también puede funcionar mejor si utilizas un VPN o proxy.", "SyncApp.settings.captureRawSockets": "Sockets sin procesar de Windows (integrado)", + "SyncApp.settings.captureRawSocketsLinux": "Sockets sin procesar (AF_PACKET, integrado)", "SyncApp.settings.captureNpcap": "Npcap (se instala por separado)", "SyncApp.settings.npcapMissing": "Npcap no está instalado, así que la sincronización no puede capturar el tráfico. Instálalo y luego usa Intentar de nuevo en la pantalla principal.", "SyncApp.settings.npcapLink": "Consigue Npcap (gratis) en npcap.com", diff --git a/locales/fr.json b/locales/fr.json index ed95e2d..30009c1 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "Paramètres", "SyncApp.state.needsAdmin.title": "Une permission rapide d'abord", "SyncApp.state.needsAdmin.body": "ARCTracker Sync a besoin de s'exécuter en tant qu'administrateur pour lire votre inventaire pendant que vous jouez. Redémarrez-le avec l'accès administrateur pour continuer.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync a besoin de permission pour capturer le trafic réseau afin de lire votre inventaire pendant que vous jouez. Accordez-lui l'accès à la capture (CAP_NET_RAW) pour continuer.", "SyncApp.state.signedOut.title": "Bienvenue dans ARCTracker Sync", "SyncApp.state.signedOut.body": "Connectez-vous pour lier votre compte ARCTracker. Une fois configuré, votre inventaire ARC Raiders reste à jour automatiquement pendant que vous jouez.", "SyncApp.state.signingIn.title": "Finalisez votre connexion…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "Vous jouez en tant que %{account}. Votre inventaire ARC Raiders est à jour sur ARCTracker.", "SyncApp.state.synced.session": "Votre inventaire reste synchronisé jusqu'à %{time}.", "SyncApp.state.synced.canClose": "Vous pouvez fermer ARCTracker Sync et continuer à jouer. Laissez-le s'exécuter dans la barre d'état système pour rester synchronisé pendant toute votre session.", + "SyncApp.state.synced.canCloseLinux": "Gardez cette fenêtre ouverte pendant que vous jouez — ARCTracker Sync maintient votre inventaire synchronisé toute la session.", "SyncApp.state.syncedIdle.body": "En attente de votre prochaine session ARC Raiders. ARCTracker Sync continue de s'exécuter dans la barre d'état système.", + "SyncApp.state.syncedIdle.bodyLinux": "En attente de votre prochaine session ARC Raiders. Gardez ARCTracker Sync actif.", "SyncApp.state.needsLauncher.title": "%{launcher} doit être préparé de nouveau", "SyncApp.state.needsLauncher.body": "%{launcher} a été redémarré de lui-même, donc ARCTracker ne peut pas lire votre inventaire maintenant. Préparez-le à nouveau pour continuer la synchronisation.", "SyncApp.state.needsAttention.title": "La synchronisation nécessite une attention", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "Obtenir de l'aide", "SyncApp.action.tryAgain": "Réessayer", "SyncApp.action.restartAsAdmin": "Redémarrer en tant qu'administrateur", + "SyncApp.action.grantCapture": "Accorder l'accès à la capture", "SyncApp.action.gotIt": "D'accord", "SyncApp.explain.title": "À quoi sert la préparation de %{launcher}", "SyncApp.explain.body": "ARCTracker garde votre inventaire ARC Raiders à jour sur le site Web automatiquement pendant que vous jouez. Pour cela, il rouvre %{launcher} une seule fois, juste quelques secondes, afin que le jeu puisse se connecter à l'application.\n\nPendant que vous jouez, ARCTracker Sync récupère une clé d'accès temporaire du jeu et la transmet à ARCTracker, qui l'utilise pour lire votre inventaire. La clé expire d'elle-même et n'est jamais votre mot de passe %{launcher} ou ARC Raiders.\n\nVotre compte %{launcher} n'est pas affecté. Vos jeux, téléchargements, amis et identifiant restent exactement comme ils sont. Tout s'exécute sur votre PC ; la seule chose envoyée à ARCTracker est cette clé temporaire.", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "Langue", "SyncApp.settings.displayLanguage": "Langue d'affichage", "SyncApp.settings.matchesWindows": "Correspond à Windows par défaut", + "SyncApp.settings.matchesSystem": "Correspond à votre système par défaut", "SyncApp.settings.matchWindows": "Correspondre à Windows", + "SyncApp.settings.matchSystem": "Correspondre au système", "SyncApp.settings.network": "Réseau", "SyncApp.settings.networkAdapter": "Adaptateur réseau", "SyncApp.settings.networkAdapterSub": "Sélectionné automatiquement. Ne changez que si la synchronisation ne se connecte pas.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "Méthode de capture", "SyncApp.settings.captureMethodSub": "Comment Sync lit le trafic de jeu de votre propre PC. Passez à Npcap si un antivirus bloque la méthode intégrée — cela peut également mieux fonctionner si vous utilisez un VPN ou un proxy.", "SyncApp.settings.captureRawSockets": "Sockets bruts Windows (intégré)", + "SyncApp.settings.captureRawSocketsLinux": "Sockets bruts (AF_PACKET, intégré)", "SyncApp.settings.captureNpcap": "Npcap (installé séparément)", "SyncApp.settings.npcapMissing": "Npcap n'est pas installé, donc la synchronisation ne peut pas capturer le trafic. Installez-le, puis utilisez « Réessayer » sur l'écran principal.", "SyncApp.settings.npcapLink": "Obtenez Npcap (gratuit) sur npcap.com", diff --git a/locales/he.json b/locales/he.json index e3e65f3..7f2546a 100644 --- a/locales/he.json +++ b/locales/he.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "הגדרות", "SyncApp.state.needsAdmin.title": "רשות אחת מהירה בבקשה", "SyncApp.state.needsAdmin.body": "ARCTracker Sync צריך להפעיל כמנהל כדי לקרוא את המלאי שלך בזמן שאתה משחק. הפעל אותו מחדש עם הרשאות מנהל כדי להמשיך.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync צריך הרשאה כדי ללכוד תעבורת רשת לקריאת המלאי שלך בזמן שאתה משחק. תן לו גישת לכידה (CAP_NET_RAW) כדי להמשיך.", "SyncApp.state.signedOut.title": "ברוכים הבאים ל-ARCTracker Sync", "SyncApp.state.signedOut.body": "היכנסו כדי לחבר את חשבון ARCTracker שלכם. לאחר ההגדרה, המלאי של ARC Raiders שלכם יתעדכן באופן אוטומטי בזמן משחק.", "SyncApp.state.signingIn.title": "סיום כניסה…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "משחק כ-%{account}. המלאי של ARC Raiders שלכם עדכני ב-ARCTracker.", "SyncApp.state.synced.session": "המלאי שלכם יישאר סונכרן עד %{time}.", "SyncApp.state.synced.canClose": "אתם יכולים לסגור את ARCTracker Sync ולהמשיך לשחק. השאירו אותו פועל בשרייה כדי להישאר סונכרנים לכל הפעילות שלכם.", + "SyncApp.state.synced.canCloseLinux": "שמור את החלון הזה פתוח בזמן שאתה משחק — ARCTracker Sync שומר על המלאי שלך סונכרן כל הפעילות.", "SyncApp.state.syncedIdle.body": "ממתינים לפעילות ARC Raiders הבאה שלכם. ARCTracker Sync ממשיך לרוץ בשרייה.", + "SyncApp.state.syncedIdle.bodyLinux": "ממתינים לפעילות ARC Raiders הבאה שלך. החזק את ARCTracker Sync פועל.", "SyncApp.state.needsLauncher.title": "%{launcher} צריך הכנה שוב", "SyncApp.state.needsLauncher.body": "%{launcher} הופעל מחדש מעצמו, כך שARCTracker לא יכול לקרוא את המלאי שלכם כעת. הכינו אותו שוב כדי להמשיך בסנכרון.", "SyncApp.state.needsAttention.title": "סנכרון זקוק לתשומת לב", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "קבל עזרה", "SyncApp.action.tryAgain": "נסה שוב", "SyncApp.action.restartAsAdmin": "הפעל מחדש כמנהל", + "SyncApp.action.grantCapture": "תן גישת לכידה", "SyncApp.action.gotIt": "הבנתי", "SyncApp.explain.title": "מה עושה הכנת %{launcher}", "SyncApp.explain.body": "ARCTracker שומר על המלאי של ARC Raiders שלך עדכני באתר באופן אוטומטי בזמן משחק. כדי להגדיר זאת, זה פותח %{launcher} שוב פעם אחת, רק כמה שניות, כדי שהמשחק יוכל להתחבר לאפליקציה.\n\nבזמן משחק, ARCTracker Sync קוטף מפתח גישה זמני מהמשחק ומעביר אותו ל-ARCTracker, שמשתמש בו כדי לקרוא את המלאי שלך. המפתח תוקף באופן אוטומטי ולעולם איננו הסיסמה של %{launcher} או ARC Raiders.\n\nחשבון %{launcher} שלך לא נגע. המשחקים, ההורדות, החברים וההתחברויות שלך נשארים בדיוק כמו שהם. הכל פועל על המחשב שלך; הדבר היחיד שנשלח ל-ARCTracker הוא מפתח זמני זה.", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "שפה", "SyncApp.settings.displayLanguage": "שפת תצוגה", "SyncApp.settings.matchesWindows": "תואם ל-Windows כברירת מחדל", + "SyncApp.settings.matchesSystem": "תואם למערכת שלך כברירת מחדל", "SyncApp.settings.matchWindows": "תאם ל-Windows", + "SyncApp.settings.matchSystem": "תאם למערכת", "SyncApp.settings.network": "רשת", "SyncApp.settings.networkAdapter": "מתאם רשת", "SyncApp.settings.networkAdapterSub": "נבחר באופן אוטומטי. שנה רק אם סנכרון לא מתחבר.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "שיטת לכידה", "SyncApp.settings.captureMethodSub": "כיצד Sync קורא את תעבורת המשחק של המחשב שלך. עבור ל-Npcap אם תוכנת אנטי-וירוס חוסמת את השיטה המובנית — זה גם עשוי לעבוד טוב יותר אם אתה משתמש ב-VPN או פרוקסי.", "SyncApp.settings.captureRawSockets": "Windows raw sockets (מובנה)", + "SyncApp.settings.captureRawSocketsLinux": "Raw sockets (AF_PACKET, מובנה)", "SyncApp.settings.captureNpcap": "Npcap (מותקן בנפרד)", "SyncApp.settings.npcapMissing": "Npcap לא מותקן, ולכן הסנכרון לא יכול ללכוד תעבורה. התקן אותו, ואז השתמש ב\"נסה שוב\" במסך הראשי.", "SyncApp.settings.npcapLink": "קבל את Npcap (בחינם) ב-npcap.com", diff --git a/locales/hr.json b/locales/hr.json index 9170c1b..575efa8 100644 --- a/locales/hr.json +++ b/locales/hr.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "Postavke", "SyncApp.state.needsAdmin.title": "Prvo je potrebna dozvola", "SyncApp.state.needsAdmin.body": "ARCTracker Sync treba raditi kao administrator kako bi mogao čitati vaš inventar dok igrate. Ponovno ga pokrenite s pravima administratora kako bi nastavili.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync treba dozvolu da hvata mrežni promet da bi mogao čitati vaš inventar dok igrate. Dodijelite mu pristup hvatanju (CAP_NET_RAW) kako bi nastavili.", "SyncApp.state.signedOut.title": "Dobrodošli u ARCTracker Sync", "SyncApp.state.signedOut.body": "Prijavite se da povežete svoj ARCTracker račun. Nakon postavljanja, vaš ARC Raiders inventar ostaje automatski ažuran tijekom igranja.", "SyncApp.state.signingIn.title": "Završite prijavu…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "Igrate kao %{account}. Vaš ARC Raiders inventar je ažuran na ARCTracker-u.", "SyncApp.state.synced.session": "Vaš inventar ostaje sinhroniziran do %{time}.", "SyncApp.state.synced.canClose": "Možete zatvoriti ARCTracker Sync i nastaviti s igrom. Ostavite ga pokrenuta u tracu da ostanete sinhronizirati tijekom cijele sesije.", + "SyncApp.state.synced.canCloseLinux": "Ostavite ovaj prozor otvoren dok igrate — ARCTracker Sync održava vašu zalihu sinhroniziranom tijekom cijele sesije.", "SyncApp.state.syncedIdle.body": "Čekam vašu sljedeću ARC Raiders sesiju. ARCTracker Sync nastavlja raditi u tracu.", + "SyncApp.state.syncedIdle.bodyLinux": "Čekam vašu sljedeću ARC Raiders sesiju. Ostavite ARCTracker Sync pokrenutu.", "SyncApp.state.needsLauncher.title": "%{launcher} trebaje ponovno pripremiti", "SyncApp.state.needsLauncher.body": "%{launcher} je samostalno restartovan, pa ARCTracker sada ne može čitati vaš inventar. Pripremite ga ponovno da biste nastavili sinhronizaciju.", "SyncApp.state.needsAttention.title": "Sinhronizacija trebanja pažnje", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "Potražite pomoć", "SyncApp.action.tryAgain": "Pokušajte ponovno", "SyncApp.action.restartAsAdmin": "Ponovno pokrenite kao administrator", + "SyncApp.action.grantCapture": "Dodijelite pristup hvatanju", "SyncApp.action.gotIt": "Razumijem", "SyncApp.explain.title": "Što radi priprema %{launcher}", "SyncApp.explain.body": "ARCTracker vašu ARC Raiders zalihu drži ažurnom na stranici automatski tijekom igranja. Da biste to postavili, ponovno otvara %{launcher} jednom, samo nekoliko sekundi, kako bi se igra mogla povezati s aplikacijom.\n\nDok igrate, ARCTracker Sync preuzima privremeni pristupni ključ iz igre i prosljeđuje ga ARCTracker-u, koji ga koristi da bi čitao vašu zalihu. Ključ ističe sam od sebe i nikada nije vaš %{launcher} ili ARC Raiders lozinka.\n\nVaš %{launcher} račun nije dotaknut. Vaše igre, preuzimanja, prijatelji i prijava ostaju upravo kako su. Sve se izvršava na vašem PC-u; jedina stvar koja se šalje ARCTracker-u je taj privremeni ključ.", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "Jezik", "SyncApp.settings.displayLanguage": "Jezik prikaza", "SyncApp.settings.matchesWindows": "Poklapa se sa Windows-om prema zadanom", + "SyncApp.settings.matchesSystem": "Poklapa se sa sustavom prema zadanom", "SyncApp.settings.matchWindows": "Uskladi sa Windows-om", + "SyncApp.settings.matchSystem": "Uskladi sa sustavom", "SyncApp.settings.network": "Mreža", "SyncApp.settings.networkAdapter": "Mrežni adapter", "SyncApp.settings.networkAdapterSub": "Automatski odabran. Mijenjajte samo ako sinhronizacija neće biti povezana.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "Metoda hvatanja", "SyncApp.settings.captureMethodSub": "Kako Sync čita vlastiti promet igre vašeg PC-a. Prebacite se na Npcap ako antivirusni softver blokira ugrađenu metodu — može i bolje raditi ako koristite VPN ili proxy.", "SyncApp.settings.captureRawSockets": "Windows sirovi socketi (ugrađeno)", + "SyncApp.settings.captureRawSocketsLinux": "Sirovi socketi (AF_PACKET, ugrađeno)", "SyncApp.settings.captureNpcap": "Npcap (instalira se zasebno)", "SyncApp.settings.npcapMissing": "Npcap nije instaliran, pa sinhronizacija ne može hvatati promet. Instalirajte ga, a zatim upotrijebite Pokušajte ponovno na glavnom zaslonu.", "SyncApp.settings.npcapLink": "Preuzmite Npcap (besplatno) na npcap.com", diff --git a/locales/it.json b/locales/it.json index 0b6aad3..24f55ab 100644 --- a/locales/it.json +++ b/locales/it.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "Impostazioni", "SyncApp.state.needsAdmin.title": "Un rapido permesso prima", "SyncApp.state.needsAdmin.body": "ARCTracker Sync ha bisogno di eseguire come amministratore per leggere il tuo inventario mentre giochi. Riavvialo con accesso amministratore per continuare.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync ha bisogno di autorizzazione per acquisire il traffico di rete per leggere il tuo inventario mentre giochi. Concedigli accesso di acquisizione (CAP_NET_RAW) per continuare.", "SyncApp.state.signedOut.title": "Benvenuto su ARCTracker Sync", "SyncApp.state.signedOut.body": "Accedi per collegare il tuo account ARCTracker. Una volta configurato, l'inventario di ARC Raiders rimane sempre aggiornato automaticamente mentre giochi.", "SyncApp.state.signingIn.title": "Completa l'accesso…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "Giocando come %{account}. L'inventario di ARC Raiders è aggiornato su ARCTracker.", "SyncApp.state.synced.session": "L'inventario rimane sincronizzato fino a %{time}.", "SyncApp.state.synced.canClose": "Puoi chiudere ARCTracker Sync e continuare a giocare. Lascialo in esecuzione nel vassoio per rimanere sincronizzato per l'intera sessione.", + "SyncApp.state.synced.canCloseLinux": "Mantieni questa finestra aperta mentre giochi — ARCTracker Sync mantiene l'inventario sincronizzato per l'intera sessione.", "SyncApp.state.syncedIdle.body": "In attesa della tua prossima sessione di ARC Raiders. ARCTracker Sync continua a funzionare nel vassoio.", + "SyncApp.state.syncedIdle.bodyLinux": "In attesa della tua prossima sessione di ARC Raiders. Continua a mantenere ARCTracker Sync in esecuzione.", "SyncApp.state.needsLauncher.title": "%{launcher} necessita di preparazione di nuovo", "SyncApp.state.needsLauncher.body": "%{launcher} è stato riavviato autonomamente, quindi ARCTracker non riesce a leggere l'inventario in questo momento. Preparalo di nuovo per continuare la sincronizzazione.", "SyncApp.state.needsAttention.title": "La sincronizzazione necessita attenzione", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "Ottieni aiuto", "SyncApp.action.tryAgain": "Riprova", "SyncApp.action.restartAsAdmin": "Riavvia come amministratore", + "SyncApp.action.grantCapture": "Concedi accesso di acquisizione", "SyncApp.action.gotIt": "Ho capito", "SyncApp.explain.title": "Cosa fa la preparazione di %{launcher}", "SyncApp.explain.body": "ARCTracker mantiene l'inventario di ARC Raiders sempre aggiornato sul sito web automaticamente mentre giochi. Per configurarlo, riapre %{launcher} una sola volta, solo pochi secondi, in modo che il gioco possa connettersi all'app.\n\nMentre giochi, ARCTracker Sync raccoglie un token di accesso temporaneo dal gioco e lo passa ad ARCTracker, che lo utilizza per leggere il tuo inventario. Il token scade automaticamente e non è mai la tua password di %{launcher} o di ARC Raiders.\n\nIl tuo account %{launcher} non viene toccato. I tuoi giochi, i download, gli amici e l'accesso rimangono esattamente come sono. Tutto funziona sul tuo PC; l'unica cosa inviata ad ARCTracker è quel token temporaneo.", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "Lingua", "SyncApp.settings.displayLanguage": "Lingua di visualizzazione", "SyncApp.settings.matchesWindows": "Corrisponde a Windows per impostazione predefinita", + "SyncApp.settings.matchesSystem": "Corrisponde al tuo sistema per impostazione predefinita", "SyncApp.settings.matchWindows": "Abbina a Windows", + "SyncApp.settings.matchSystem": "Abbina al sistema", "SyncApp.settings.network": "Rete", "SyncApp.settings.networkAdapter": "Adattatore di rete", "SyncApp.settings.networkAdapterSub": "Auto-selezionato. Modifica solo se la sincronizzazione non si connette.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "Metodo di acquisizione", "SyncApp.settings.captureMethodSub": "Come Sync legge il traffico di gioco del tuo PC. Passa a Npcap se il software antivirus blocca il metodo integrato — potrebbe funzionare meglio anche se utilizzi una VPN o un proxy.", "SyncApp.settings.captureRawSockets": "Socket raw di Windows (integrati)", + "SyncApp.settings.captureRawSocketsLinux": "Socket raw (AF_PACKET, integrati)", "SyncApp.settings.captureNpcap": "Npcap (installato separatamente)", "SyncApp.settings.npcapMissing": "Npcap non è installato, quindi la sincronizzazione non può acquisire il traffico. Installalo, poi usa Riprova nella schermata principale.", "SyncApp.settings.npcapLink": "Ottieni Npcap (gratuito) su npcap.com", diff --git a/locales/ja.json b/locales/ja.json index a1adcae..71a0c33 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "設定", "SyncApp.state.needsAdmin.title": "クイック権限設定を確認してください", "SyncApp.state.needsAdmin.body": "ARCTracker Sync がプレイ中のインベントリを読み取るには、管理者として実行する必要があります。管理者アクセスで再起動して続行してください。", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync がプレイ中のインベントリを読み取るには、ネットワークトラフィックをキャプチャする権限が必要です。キャプチャアクセス(CAP_NET_RAW)を付与して続行してください。", "SyncApp.state.signedOut.title": "ARCTracker Sync へようこそ", "SyncApp.state.signedOut.body": "サインインして ARCTracker アカウントを接続してください。セットアップ後、ARC Raiders のインベントリはプレイ中に自動的に最新の状態に保たれます。", "SyncApp.state.signingIn.title": "サインインを完了中…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "%{account} でプレイ中です。ARCTracker はインベントリを最新に保っています。", "SyncApp.state.synced.session": "インベントリは %{time} まで同期が続きます。", "SyncApp.state.synced.canClose": "ARCTracker Sync を閉じてプレイ継続できます。トレイで実行し続けてセッション全体で同期を保ってください。", + "SyncApp.state.synced.canCloseLinux": "プレイ中はこのウィンドウを開いたままにしてください — ARCTracker Sync がセッション全体でストレージを最新に保ちます。", "SyncApp.state.syncedIdle.body": "次の ARC Raiders セッションを待機中です。ARCTracker Sync はトレイで実行し続けます。", + "SyncApp.state.syncedIdle.bodyLinux": "次の ARC Raiders セッションを待機中です。ARCTracker Sync を実行し続けてください。", "SyncApp.state.needsLauncher.title": "%{launcher} の準備が再度必要です", "SyncApp.state.needsLauncher.body": "%{launcher} が独自に再起動されたため、ARCTracker はインベントリを読み込めません。同期を続行するには再度準備してください。", "SyncApp.state.needsAttention.title": "同期に注意が必要です", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "ヘルプを表示", "SyncApp.action.tryAgain": "もう一度試す", "SyncApp.action.restartAsAdmin": "管理者として再起動", + "SyncApp.action.grantCapture": "キャプチャアクセスを付与", "SyncApp.action.gotIt": "わかりました", "SyncApp.explain.title": "%{launcher} を準備することについて", "SyncApp.explain.body": "ARCTracker は ARC Raiders のインベントリを自動的に最新の状態に保ちます。そのセットアップのため、ARCTracker は %{launcher} を一度再起動します。わずか数秒で、ゲームがアプリに接続できるようにするためです。\n\nプレイ中、ARCTracker Sync はゲームから一時的なアクセストークンを取得し、ARCTracker に渡します。ARCTracker はそのトークンを使用してあなたのインベントリを読み込みます。トークンは自動的に期限切れになり、決して %{launcher} または ARC Raiders のパスワードではありません。\n\nあなたの %{launcher} アカウントは影響を受けません。ゲーム、ダウンロード、フレンド、サインインはそのままです。すべてあなたの PC で実行され、ARCTracker に送信されるのはその一時的なトークンだけです。", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "言語", "SyncApp.settings.displayLanguage": "表示言語", "SyncApp.settings.matchesWindows": "デフォルトで Windows に合わせます", + "SyncApp.settings.matchesSystem": "デフォルトでシステムに合わせます", "SyncApp.settings.matchWindows": "Windows に合わせる", + "SyncApp.settings.matchSystem": "システムに合わせる", "SyncApp.settings.network": "ネットワーク", "SyncApp.settings.networkAdapter": "ネットワークアダプター", "SyncApp.settings.networkAdapterSub": "自動選択。同期が接続されない場合のみ変更してください。", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "キャプチャ方式", "SyncApp.settings.captureMethodSub": "Sync が PC 自身のゲームトラフィックを読み取る方法です。ウイルス対策ソフトが内蔵の方式をブロックする場合は Npcap に切り替えてください。VPN またはプロキシを使用している場合は、さらに動作が良くなる可能性があります。", "SyncApp.settings.captureRawSockets": "Windows RAW ソケット(内蔵)", + "SyncApp.settings.captureRawSocketsLinux": "RAW ソケット(AF_PACKET、内蔵)", "SyncApp.settings.captureNpcap": "Npcap(別途インストール)", "SyncApp.settings.npcapMissing": "Npcap がインストールされていないため、同期はトラフィックをキャプチャできません。インストール後、メイン画面の「もう一度試す」を使用してください。", "SyncApp.settings.npcapLink": "npcap.com で Npcap(無料)を入手", diff --git a/locales/ko.json b/locales/ko.json index 97d9c9d..25dd6f6 100644 --- a/locales/ko.json +++ b/locales/ko.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "설정", "SyncApp.state.needsAdmin.title": "먼저 권한이 필요합니다", "SyncApp.state.needsAdmin.body": "ARCTracker Sync는 플레이 중인 인벤토리를 읽기 위해 관리자 권한으로 실행되어야 합니다. 계속하려면 관리자 권한으로 다시 시작하세요.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync는 플레이 중인 인벤토리를 읽기 위해 네트워크 트래픽을 캡처할 수 있는 권한이 필요합니다. 계속하려면 캡처 액세스(CAP_NET_RAW)를 부여하세요.", "SyncApp.state.signedOut.title": "ARCTracker Sync에 오신 것을 환영합니다", "SyncApp.state.signedOut.body": "로그인하여 ARCTracker 계정을 연결하세요. 설정이 완료되면 플레이 중에 ARC Raiders 인벤토리가 자동으로 최신 상태로 유지됩니다.", "SyncApp.state.signingIn.title": "로그인 완료 중…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "%{account}(으)로 플레이 중입니다. ARC Raiders 인벤토리가 ARCTracker에서 최신 상태입니다.", "SyncApp.state.synced.session": "인벤토리는 %{time}까지 동기화된 상태를 유지합니다.", "SyncApp.state.synced.canClose": "ARCTracker Sync를 닫고 계속 플레이할 수 있습니다. 트레이에서 실행 상태를 유지하면 전체 세션 동안 동기화를 유지할 수 있습니다.", + "SyncApp.state.synced.canCloseLinux": "플레이 중에 이 창을 계속 열어 두세요 — ARCTracker Sync가 전체 세션 동안 보관함을 동기화 상태로 유지합니다.", "SyncApp.state.syncedIdle.body": "다음 ARC Raiders 세션을 기다리는 중입니다. ARCTracker Sync는 시스템 트레이에서 계속 실행됩니다.", + "SyncApp.state.syncedIdle.bodyLinux": "다음 ARC Raiders 세션을 기다리는 중입니다. ARCTracker Sync를 계속 실행 상태로 유지하세요.", "SyncApp.state.needsLauncher.title": "%{launcher}을 다시 준비해야 합니다", "SyncApp.state.needsLauncher.body": "%{launcher}이 자체적으로 재시작되었기 때문에 ARCTracker가 지금 인벤토리를 읽을 수 없습니다. 동기화를 계속하려면 다시 준비하세요.", "SyncApp.state.needsAttention.title": "동기화에 주의가 필요합니다", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "도움말 보기", "SyncApp.action.tryAgain": "다시 시도", "SyncApp.action.restartAsAdmin": "관리자 권한으로 다시 시작", + "SyncApp.action.grantCapture": "캡처 액세스 부여", "SyncApp.action.gotIt": "알겠습니다", "SyncApp.explain.title": "%{launcher} 준비가 하는 일", "SyncApp.explain.body": "ARCTracker는 플레이 중에 ARC Raiders 인벤토리를 웹사이트에서 자동으로 최신 상태로 유지합니다. 이를 설정하기 위해 %{launcher}를 한 번 다시 열어야 합니다. 단 몇 초만 소요됩니다. 그러면 게임이 앱에 연결될 수 있습니다.\n\n플레이 중에 ARCTracker Sync는 게임에서 임시 액세스 키를 받아 ARCTracker에 전달하고, ARCTracker가 이를 사용하여 당신의 인벤토리를 읽습니다. 이 키는 자동으로 만료되며 당신의 %{launcher} 계정이나 ARC Raiders 비밀번호가 절대 아닙니다.\n\n당신의 %{launcher} 계정은 손대지 않습니다. 게임, 다운로드, 친구, 로그인이 정확히 그대로 유지됩니다. 모든 것이 당신의 PC에서 실행되며 ARCTracker로 전송되는 유일한 것은 그 임시 키입니다.", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "언어", "SyncApp.settings.displayLanguage": "표시 언어", "SyncApp.settings.matchesWindows": "기본적으로 Windows와 일치", + "SyncApp.settings.matchesSystem": "기본적으로 시스템과 일치", "SyncApp.settings.matchWindows": "Windows와 일치", + "SyncApp.settings.matchSystem": "시스템과 일치", "SyncApp.settings.network": "네트워크", "SyncApp.settings.networkAdapter": "네트워크 어댑터", "SyncApp.settings.networkAdapterSub": "자동 선택. 동기화가 연결되지 않으면 변경하세요.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "캡처 방식", "SyncApp.settings.captureMethodSub": "Sync가 PC 자체의 게임 트래픽을 읽는 방식입니다. 바이러스 백신 소프트웨어가 기본 제공 방식을 차단하는 경우 Npcap으로 전환하세요. VPN 또는 프록시를 사용하는 경우 더 잘 작동할 수 있습니다.", "SyncApp.settings.captureRawSockets": "Windows 원시 소켓(기본 제공)", + "SyncApp.settings.captureRawSocketsLinux": "원시 소켓(AF_PACKET, 기본 제공)", "SyncApp.settings.captureNpcap": "Npcap(별도 설치)", "SyncApp.settings.npcapMissing": "Npcap이 설치되어 있지 않아 동기화가 트래픽을 캡처할 수 없습니다. 설치한 후 메인 화면에서 '다시 시도'를 사용하세요.", "SyncApp.settings.npcapLink": "npcap.com에서 Npcap(무료) 받기", diff --git a/locales/no.json b/locales/no.json index 8f58d48..87b224a 100644 --- a/locales/no.json +++ b/locales/no.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "Innstillinger", "SyncApp.state.needsAdmin.title": "En rask tillatelse først", "SyncApp.state.needsAdmin.body": "ARCTracker Sync må kjøre som administrator for å lese inventaret ditt mens du spiller. Start det på nytt med administratortilgang for å fortsette.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync trenger tillatelse til å fange opp nettverkstrafikk for å lese inventaret ditt mens du spiller. Gi det fangstilgang (CAP_NET_RAW) for å fortsette.", "SyncApp.state.signedOut.title": "Velkommen til ARCTracker Sync", "SyncApp.state.signedOut.body": "Logg inn for å koble ARCTracker-kontoen din. Når det er satt opp, holdes ARC Raiders-inventaret ditt oppdatert automatisk mens du spiller.", "SyncApp.state.signingIn.title": "Fullfør pålogging…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "Spiller som %{account}. ARC Raiders-inventaret ditt er oppdatert på ARCTracker.", "SyncApp.state.synced.session": "Inventaret ditt forblir synkronisert til %{time}.", "SyncApp.state.synced.canClose": "Du kan lukke ARCTracker Sync og fortsette å spille. La det kjøre i systemkurven for å holde det synkronisert hele økten.", + "SyncApp.state.synced.canCloseLinux": "Hold dette vinduet åpent mens du spiller — ARCTracker Sync holder inventaret ditt synkronisert hele økten.", "SyncApp.state.syncedIdle.body": "Venter på neste ARC Raiders-sesjon. ARCTracker Sync kjører i systemkurven.", + "SyncApp.state.syncedIdle.bodyLinux": "Venter på neste ARC Raiders-sesjon. Kjør ARCTracker Sync.", "SyncApp.state.needsLauncher.title": "%{launcher} må forbereddes igjen", "SyncApp.state.needsLauncher.body": "%{launcher} ble startet på nytt av seg selv, så ARCTracker kan ikke lese inventaret ditt nå. Forbered det igjen for å fortsette synkroniseringen.", "SyncApp.state.needsAttention.title": "Synkronisering trenger oppmerksomhet", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "Få hjelp", "SyncApp.action.tryAgain": "Prøv igjen", "SyncApp.action.restartAsAdmin": "Start på nytt som administrator", + "SyncApp.action.grantCapture": "Gi fangstilgang", "SyncApp.action.gotIt": "Skjønner", "SyncApp.explain.title": "Hva som skjer når %{launcher} forberedes", "SyncApp.explain.body": "ARCTracker holder ARC Raiders-inventaret ditt oppdatert på nettstedet automatisk mens du spiller. For å sette det opp åpner det %{launcher} på nytt en gang, bare et par sekunder, slik at spillet kan koble seg til appen.\n\nMens du spiller henter ARCTracker Sync en midlertidig tilgangsnøkkel fra spillet og sender den til ARCTracker, som bruker den til å lese inventaret ditt. Nøkkelen utløper av seg selv og er aldri %{launcher}- eller ARC Raiders-passordet ditt.\n\n%{launcher}-kontoen din blir ikke berørt. Spillene dine, nedlastingene, vennene og påloggingen forblir akkurat som de er. Alt kjører på PC-en din; det eneste som sendes til ARCTracker er den midlertidige nøkkelen.", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "Språk", "SyncApp.settings.displayLanguage": "Visningsspråk", "SyncApp.settings.matchesWindows": "Samsvarer med Windows som standard", + "SyncApp.settings.matchesSystem": "Samsvarer med systemet som standard", "SyncApp.settings.matchWindows": "Samsvarer med Windows", + "SyncApp.settings.matchSystem": "Samsvarer med systemet", "SyncApp.settings.network": "Nettverk", "SyncApp.settings.networkAdapter": "Nettverkskort", "SyncApp.settings.networkAdapterSub": "Automatisk valgt. Endre bare hvis synkronisering ikke kobles til.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "Fangstmetode", "SyncApp.settings.captureMethodSub": "Hvordan Sync leser PC-ens egen spilltrafikk. Bytt til Npcap hvis antivirusprogramvare blokkerer den innebygde metoden — det kan også fungere bedre hvis du bruker en VPN eller proxy.", "SyncApp.settings.captureRawSockets": "Windows raw sockets (innebygd)", + "SyncApp.settings.captureRawSocketsLinux": "Raw sockets (AF_PACKET, innebygd)", "SyncApp.settings.captureNpcap": "Npcap (installeres separat)", "SyncApp.settings.npcapMissing": "Npcap er ikke installert, så synkronisering kan ikke fange opp trafikk. Installer det, og bruk deretter Prøv igjen på hovedskjermen.", "SyncApp.settings.npcapLink": "Hent Npcap (gratis) på npcap.com", diff --git a/locales/pl.json b/locales/pl.json index eb01bf7..ece96e3 100644 --- a/locales/pl.json +++ b/locales/pl.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "Ustawienia", "SyncApp.state.needsAdmin.title": "Najpierw wymagane jest jedno uprawnienie", "SyncApp.state.needsAdmin.body": "ARCTracker Sync musi być uruchamiany z uprawnieniami administratora, aby odczytywać Twój ekwipunek podczas gry. Uruchom go ponownie z dostępem administratora, aby kontynuować.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync musi mieć uprawnienie do przechwytywania ruchu sieciowego, aby odczytywać Twój ekwipunek podczas gry. Przyznaj mu dostęp do przechwytywania (CAP_NET_RAW), aby kontynuować.", "SyncApp.state.signedOut.title": "Witaj w ARCTracker Sync", "SyncApp.state.signedOut.body": "Zaloguj się, aby połączyć swoje konto ARCTracker. Po konfiguracji twój ekwipunek ARC Raiders będzie automatycznie aktualizowany podczas gry.", "SyncApp.state.signingIn.title": "Zakończ logowanie…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "Grasz jako %{account}. Twój ekwipunek ARC Raiders jest aktualny w ARCTracker.", "SyncApp.state.synced.session": "Twój ekwipunek pozostaje zsynchronizowany do %{time}.", "SyncApp.state.synced.canClose": "Możesz zamknąć ARCTracker Sync i kontynuować grę. Trzymaj go uruchomionego w zasobniku, aby pozostać zsynchronizowanym przez całą sesję.", + "SyncApp.state.synced.canCloseLinux": "Trzymaj to okno otwarte podczas grania — ARCTracker Sync utrzymuje Twój ekwipunek zsynchronizowany przez całą sesję.", "SyncApp.state.syncedIdle.body": "Oczekiwanie na następną sesję ARC Raiders. ARCTracker Sync wciąż działa w zasobniku systemu.", + "SyncApp.state.syncedIdle.bodyLinux": "Oczekiwanie na następną sesję ARC Raiders. Trzymaj ARCTracker Sync uruchomiony.", "SyncApp.state.needsLauncher.title": "%{launcher} wymaga przygotowania ponownie", "SyncApp.state.needsLauncher.body": "%{launcher} został uruchomiony ponownie samodzielnie, więc ARCTracker nie może w tej chwili czytać twojego ekwipunku. Przygotuj go ponownie, aby kontynuować synchronizowanie.", "SyncApp.state.needsAttention.title": "Synchronizowanie wymaga uwagi", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "Uzyskaj pomoc", "SyncApp.action.tryAgain": "Spróbuj ponownie", "SyncApp.action.restartAsAdmin": "Uruchom ponownie jako administrator", + "SyncApp.action.grantCapture": "Przyznaj dostęp do przechwytywania", "SyncApp.action.gotIt": "Rozumiem", "SyncApp.explain.title": "Co robi przygotowanie %{launcher}", "SyncApp.explain.body": "ARCTracker automatycznie utrzymuje twój ekwipunek ARC Raiders aktualny na stronie podczas gry. Aby to skonfigurować, ponownie otwiera %{launcher} zaledwie na kilka sekund, aby gra mogła się połączyć z aplikacją.\n\nPodczas gry ARCTracker Sync pobiera tymczasowy klucz dostępu z gry i przesyła go do ARCTracker, który używa go do odczytania twojego ekwipunku. Klucz wygasa sam w sobie i nigdy nie jest to twoje konto %{launcher} ani hasło ARC Raiders.\n\nTwoje konto %{launcher} nie jest dotknięte. Twoje gry, pobierania, znajomi i logowanie pozostają dokładnie takie same. Wszystko działa na twoim komputerze; jedyną rzeczą wysyłaną do ARCTracker jest ten tymczasowy klucz.", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "Język", "SyncApp.settings.displayLanguage": "Język wyświetlania", "SyncApp.settings.matchesWindows": "Domyślnie dopasowuje się do Windows", + "SyncApp.settings.matchesSystem": "Domyślnie dopasowuje się do Twojego systemu", "SyncApp.settings.matchWindows": "Dopasuj do Windows", + "SyncApp.settings.matchSystem": "Dopasuj do systemu", "SyncApp.settings.network": "Sieć", "SyncApp.settings.networkAdapter": "Adapter sieciowy", "SyncApp.settings.networkAdapterSub": "Auto-wybrany. Zmień tylko jeśli synchronizowanie się nie łączy.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "Metoda przechwytywania", "SyncApp.settings.captureMethodSub": "Sposób, w jaki Sync odczytuje ruch gry z twojego komputera. Przełącz na Npcap, jeśli oprogramowanie antywirusowe blokuje wbudowaną metodę — może działać też lepiej, jeśli używasz VPN lub proxy.", "SyncApp.settings.captureRawSockets": "Surowe gniazda Windows (wbudowane)", + "SyncApp.settings.captureRawSocketsLinux": "Surowe gniazda (AF_PACKET, wbudowane)", "SyncApp.settings.captureNpcap": "Npcap (instalowany osobno)", "SyncApp.settings.npcapMissing": "Npcap nie jest zainstalowany, więc synchronizowanie nie może przechwytywać ruchu. Zainstaluj go, a następnie użyj Spróbuj ponownie na głównym ekranie.", "SyncApp.settings.npcapLink": "Pobierz Npcap (bezpłatnie) ze strony npcap.com", diff --git a/locales/pt-BR.json b/locales/pt-BR.json index 66434c9..c5abd5f 100644 --- a/locales/pt-BR.json +++ b/locales/pt-BR.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "Configurações", "SyncApp.state.needsAdmin.title": "Uma permissão rápida primeiro", "SyncApp.state.needsAdmin.body": "ARCTracker Sync precisa ser executado como administrador para ler seu inventário enquanto você joga. Reinicie-o com acesso de administrador para continuar.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync precisa de permissão para capturar tráfego de rede para ler seu inventário enquanto você joga. Conceda acesso à captura (CAP_NET_RAW) para continuar.", "SyncApp.state.signedOut.title": "Bem-vindo ao ARCTracker Sync", "SyncApp.state.signedOut.body": "Conecte-se para vincular sua conta ARCTracker. Depois de configurado, seu inventário do ARC Raiders fica atualizado automaticamente enquanto você joga.", "SyncApp.state.signingIn.title": "Finalizando conexão…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "Jogando como %{account}. Seu inventário do ARC Raiders está atualizado no ARCTracker.", "SyncApp.state.synced.session": "Seu inventário fica sincronizado até %{time}.", "SyncApp.state.synced.canClose": "Você pode fechar ARCTracker Sync e continuar jogando. Deixe rodando na bandeja para ficar sincronizado durante toda sua sessão.", + "SyncApp.state.synced.canCloseLinux": "Mantenha esta janela aberta enquanto você joga — ARCTracker Sync mantém seu inventário sincronizado durante toda a sessão.", "SyncApp.state.syncedIdle.body": "Aguardando sua próxima sessão do ARC Raiders. ARCTracker Sync continua rodando na bandeja.", + "SyncApp.state.syncedIdle.bodyLinux": "Aguardando sua próxima sessão do ARC Raiders. Mantenha ARCTracker Sync rodando.", "SyncApp.state.needsLauncher.title": "%{launcher} precisa ser preparado novamente", "SyncApp.state.needsLauncher.body": "%{launcher} foi reiniciado sozinho, então ARCTracker não consegue ler seu inventário agora. Prepare-o novamente para continuar sincronizando.", "SyncApp.state.needsAttention.title": "Sincronização precisa de atenção", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "Obter ajuda", "SyncApp.action.tryAgain": "Tentar novamente", "SyncApp.action.restartAsAdmin": "Reiniciar como administrador", + "SyncApp.action.grantCapture": "Conceder acesso à captura", "SyncApp.action.gotIt": "Entendi", "SyncApp.explain.title": "O que preparar %{launcher} faz", "SyncApp.explain.body": "ARCTracker mantém seu inventário do ARC Raiders atualizado no site automaticamente enquanto você joga. Para configurar isso, ele reabre %{launcher} uma vez, apenas alguns segundos, para que o jogo possa se conectar ao app.\n\nEnquanto você joga, ARCTracker Sync obtém uma chave de acesso temporária do jogo e a passa para ARCTracker, que a usa para ler seu inventário. A chave expira automaticamente e nunca é sua %{launcher} ou senha do ARC Raiders.\n\nSua conta do %{launcher} não é alterada. Seus jogos, downloads, amigos e login permanecem exatamente como estavam. Tudo funciona no seu PC; a única coisa enviada para ARCTracker é essa chave temporária.", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "Idioma", "SyncApp.settings.displayLanguage": "Idioma de exibição", "SyncApp.settings.matchesWindows": "Corresponde ao Windows por padrão", + "SyncApp.settings.matchesSystem": "Corresponde ao seu sistema por padrão", "SyncApp.settings.matchWindows": "Corresponder ao Windows", + "SyncApp.settings.matchSystem": "Corresponder ao sistema", "SyncApp.settings.network": "Rede", "SyncApp.settings.networkAdapter": "Adaptador de rede", "SyncApp.settings.networkAdapterSub": "Auto-selecionado. Mude apenas se a sincronização não conectar.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "Método de captura", "SyncApp.settings.captureMethodSub": "Como o Sync lê o tráfego de jogo do seu próprio PC. Mude para o Npcap se um antivírus bloquear o método integrado — também pode funcionar melhor se você usar um VPN ou proxy.", "SyncApp.settings.captureRawSockets": "Sockets brutos do Windows (integrado)", + "SyncApp.settings.captureRawSocketsLinux": "Sockets brutos (AF_PACKET, integrado)", "SyncApp.settings.captureNpcap": "Npcap (instalado separadamente)", "SyncApp.settings.npcapMissing": "O Npcap não está instalado, então a sincronização não consegue capturar o tráfego. Instale-o e depois use Tentar novamente na tela principal.", "SyncApp.settings.npcapLink": "Baixe o Npcap (grátis) em npcap.com", diff --git a/locales/pt.json b/locales/pt.json index b06f1b0..01717bf 100644 --- a/locales/pt.json +++ b/locales/pt.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "Definições", "SyncApp.state.needsAdmin.title": "Uma permissão rápida primeiro", "SyncApp.state.needsAdmin.body": "ARCTracker Sync precisa de executar como administrador para ler o seu inventário enquanto joga. Reinicie com acesso de administrador para continuar.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync precisa de permissão para capturar tráfego de rede e ler o teu inventário enquanto jogas. Concede-lhe acesso de captura (CAP_NET_RAW) para continuar.", "SyncApp.state.signedOut.title": "Bem-vindo ao ARCTracker Sync", "SyncApp.state.signedOut.body": "Inicia sessão para conectar a tua conta ARCTracker. Depois de configurar, o teu inventário ARC Raiders mantém-se atualizado automaticamente enquanto jogas.", "SyncApp.state.signingIn.title": "Completa a sessão…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "A jogar como %{account}. O teu inventário de ARC Raiders está atualizado no ARCTracker.", "SyncApp.state.synced.session": "O teu inventário mantém-se sincronizado até %{time}.", "SyncApp.state.synced.canClose": "Podes fechar ARCTracker Sync e continuar a jogar. Deixa-o em execução na bandeja para manteres a sincronização durante toda a sessão.", + "SyncApp.state.synced.canCloseLinux": "Mantém esta janela aberta enquanto jogas — ARCTracker Sync mantém o teu inventário sincronizado durante toda a sessão.", "SyncApp.state.syncedIdle.body": "À espera da tua próxima sessão ARC Raiders. ARCTracker Sync continua a funcionar na bandeja.", + "SyncApp.state.syncedIdle.bodyLinux": "À espera da tua próxima sessão ARC Raiders. Mantém ARCTracker Sync em execução.", "SyncApp.state.needsLauncher.title": "%{launcher} precisa de ser preparado novamente", "SyncApp.state.needsLauncher.body": "%{launcher} foi reiniciado por conta própria, por isso ARCTracker não consegue ler o teu inventário neste momento. Prepara-o novamente para continuar a sincronizar.", "SyncApp.state.needsAttention.title": "A sincronização precisa de atenção", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "Obter ajuda", "SyncApp.action.tryAgain": "Tenta novamente", "SyncApp.action.restartAsAdmin": "Reiniciar como administrador", + "SyncApp.action.grantCapture": "Concede acesso de captura", "SyncApp.action.gotIt": "Percebi", "SyncApp.explain.title": "O que a preparação de %{launcher} faz", "SyncApp.explain.body": "O ARCTracker mantém o teu inventário de ARC Raiders atualizado no sítio web automaticamente enquanto jogas. Para o configurar, reabre %{launcher} uma vez, apenas alguns segundos, para que o jogo consiga conectar-se à aplicação.\n\nEnquanto jogas, ARCTracker Sync recebe uma chave de acesso temporária do jogo e passa-a para ARCTracker, que a utiliza para ler o teu inventário. A chave expira por si própria e nunca é a tua senha de %{launcher} ou de ARC Raiders.\n\nA tua conta de %{launcher} não é afetada. Os teus jogos, transferências, amigos e sessão mantêm-se exatamente como são. Tudo executa no teu PC; a única coisa enviada para ARCTracker é essa chave temporária.", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "Idioma", "SyncApp.settings.displayLanguage": "Idioma de apresentação", "SyncApp.settings.matchesWindows": "Corresponde a Windows por predefinição", + "SyncApp.settings.matchesSystem": "Corresponde ao teu sistema por predefinição", "SyncApp.settings.matchWindows": "Correspondência Windows", + "SyncApp.settings.matchSystem": "Correspondência do sistema", "SyncApp.settings.network": "Rede", "SyncApp.settings.networkAdapter": "Adaptador de rede", "SyncApp.settings.networkAdapterSub": "Auto-selecionado. Altera apenas se sync não conectar.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "Método de captura", "SyncApp.settings.captureMethodSub": "Como Sync lê o tráfego de jogo do teu próprio PC. Muda para Npcap se um antivírus bloquear o método integrado — também pode funcionar melhor se usares um VPN ou proxy.", "SyncApp.settings.captureRawSockets": "Sockets em bruto do Windows (integrado)", + "SyncApp.settings.captureRawSocketsLinux": "Sockets em bruto (AF_PACKET, integrado)", "SyncApp.settings.captureNpcap": "Npcap (instalado separadamente)", "SyncApp.settings.npcapMissing": "Npcap não está instalado, por isso a sincronização não consegue capturar tráfego. Instala-o e depois usa Tenta novamente no ecrã principal.", "SyncApp.settings.npcapLink": "Obtém Npcap (gratuito) em npcap.com", diff --git a/locales/ru.json b/locales/ru.json index e0e3111..209ab76 100644 --- a/locales/ru.json +++ b/locales/ru.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "Настройки", "SyncApp.state.needsAdmin.title": "Сначала нужно разрешение", "SyncApp.state.needsAdmin.body": "ARCTracker Sync требует прав администратора для чтения вашего инвентаря во время игры. Перезапустите его с правами администратора для продолжения.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync требует разрешения на захват сетевого трафика для чтения вашего инвентаря во время игры. Предоставьте ему доступ к захвату (CAP_NET_RAW) для продолжения.", "SyncApp.state.signedOut.title": "Добро пожаловать в ARCTracker Sync", "SyncApp.state.signedOut.body": "Войдите, чтобы подключить вашу учётную запись ARCTracker. После настройки ваш инвентарь ARC Raiders будет автоматически обновляться во время игры.", "SyncApp.state.signingIn.title": "Завершите вход…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "Играете как %{account}. Ваш инвентарь ARC Raiders актуален на ARCTracker.", "SyncApp.state.synced.session": "Ваш инвентарь остаётся синхронизированным до %{time}.", "SyncApp.state.synced.canClose": "Вы можете закрыть ARCTracker Sync и продолжить играть. Оставьте его работать в трее, чтобы остаться синхронизированным на протяжении всего сеанса.", + "SyncApp.state.synced.canCloseLinux": "Оставьте это окно открытым во время игры — ARCTracker Sync поддерживает синхронизацию вашего инвентаря на протяжении всего сеанса.", "SyncApp.state.syncedIdle.body": "Ожидание вашего следующего сеанса ARC Raiders. ARCTracker Sync продолжает работать в трее.", + "SyncApp.state.syncedIdle.bodyLinux": "Ожидание вашего следующего сеанса ARC Raiders. Оставьте ARCTracker Sync работать.", "SyncApp.state.needsLauncher.title": "%{launcher} нужно подготовить снова", "SyncApp.state.needsLauncher.body": "%{launcher} был перезагружен самостоятельно, поэтому ARCTracker не может прочитать ваш инвентарь прямо сейчас. Подготовьте его снова, чтобы продолжить синхронизацию.", "SyncApp.state.needsAttention.title": "Синхронизация требует внимания", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "Получить помощь", "SyncApp.action.tryAgain": "Попробовать снова", "SyncApp.action.restartAsAdmin": "Перезапустить с правами администратора", + "SyncApp.action.grantCapture": "Предоставить доступ к захвату", "SyncApp.action.gotIt": "Понял", "SyncApp.explain.title": "Что делает подготовка %{launcher}", "SyncApp.explain.body": "ARCTracker поддерживает актуальность вашего инвентаря ARC Raiders на сайте автоматически во время игры. Для подготовки приложение переоткрывает %{launcher} один раз, всего на несколько секунд, чтобы игра смогла подключиться к приложению.\n\nВо время игры ARCTracker Sync получает временный ключ доступа от игры и передаёт его в ARCTracker, который использует его для чтения вашего инвентаря. Ключ автоматически истекает и никогда не является вашим паролем от %{launcher} или ARC Raiders.\n\nВаша учётная запись %{launcher} не затрагивается. Ваши игры, загрузки, друзья и вход остаются точно такими же. Всё работает на вашем ПК; единственное, что отправляется в ARCTracker, это временный ключ.", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "Язык", "SyncApp.settings.displayLanguage": "Язык интерфейса", "SyncApp.settings.matchesWindows": "По умолчанию совпадает с Windows", + "SyncApp.settings.matchesSystem": "По умолчанию совпадает с вашей системой", "SyncApp.settings.matchWindows": "Совпадать с Windows", + "SyncApp.settings.matchSystem": "Совпадать с системой", "SyncApp.settings.network": "Сеть", "SyncApp.settings.networkAdapter": "Сетевой адаптер", "SyncApp.settings.networkAdapterSub": "Выбран автоматически. Измените только если синхронизация не подключается.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "Метод захвата", "SyncApp.settings.captureMethodSub": "Как Sync читает собственный игровой трафик вашего ПК. Переключайтесь на Npcap, если антивирус блокирует встроенный метод — это также может работать лучше, если вы используете VPN или прокси.", "SyncApp.settings.captureRawSockets": "Сырые сокеты Windows (встроено)", + "SyncApp.settings.captureRawSocketsLinux": "Сырые сокеты (AF_PACKET, встроено)", "SyncApp.settings.captureNpcap": "Npcap (устанавливается отдельно)", "SyncApp.settings.npcapMissing": "Npcap не установлен, поэтому синхронизация не может захватывать трафик. Установите его, а затем нажмите «Попробовать снова» на главном экране.", "SyncApp.settings.npcapLink": "Получить Npcap (бесплатно) на npcap.com", diff --git a/locales/sr.json b/locales/sr.json index 334dae2..859fc8e 100644 --- a/locales/sr.json +++ b/locales/sr.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "Postavke", "SyncApp.state.needsAdmin.title": "Prvo trebate dozvolu", "SyncApp.state.needsAdmin.body": "ARCTracker Sync treba da se pokrene kao administrator da bi čitao vašu inventaru dok igrate. Ponovo ga pokrenite sa administratorskim pristupom da biste nastavili.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync treba dozvolu da hvata mrežni promet da bi čitao vašu inventaru dok igrate. Dodelite mu pristup hvatanju (CAP_NET_RAW) da biste nastavili.", "SyncApp.state.signedOut.title": "Dobrodošli u ARCTracker Sync", "SyncApp.state.signedOut.body": "Prijavite se da povežete svoj ARCTracker nalog. Nakon postavljanja, vaša ARC Raiders inventara će biti ažurna automatski dok igrate.", "SyncApp.state.signingIn.title": "Završite prijavu…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "Igranje kao %{account}. Vaša ARC Raiders inventara je ažurna na ARCTracker-u.", "SyncApp.state.synced.session": "Vaša inventara ostaje sinhronizovana do %{time}.", "SyncApp.state.synced.canClose": "Možete zatvoriti ARCTracker Sync i nastaviti sa igranjem. Pustite da radi u paleti da ostanete sinhronizovani tokom cele sesije.", + "SyncApp.state.synced.canCloseLinux": "Zadržite ovaj prozor otvoren dok igrate — ARCTracker Sync održava vašu inventaru sinhronizovanom tokom cele sesije.", "SyncApp.state.syncedIdle.body": "Čekam vašu sledećу ARC Raiders sesiju. ARCTracker Sync nastavlja da radi u paleti.", + "SyncApp.state.syncedIdle.bodyLinux": "Čekam vašu sledeću ARC Raiders sesiju. Zadržite ARCTracker Sync pokrenuto.", "SyncApp.state.needsLauncher.title": "%{launcher} se opet trebate da pripremi", "SyncApp.state.needsLauncher.body": "%{launcher} je sâm restartuovan, tako da ARCTracker trenutno ne može čitati vašu inventaru. Pripremite ponovo da nastavite sa sinhronizacijom.", "SyncApp.state.needsAttention.title": "Sinhronizacija trebate pažnju", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "Zatražite pomoć", "SyncApp.action.tryAgain": "Pokušajte ponovo", "SyncApp.action.restartAsAdmin": "Ponovo pokreni kao administrator", + "SyncApp.action.grantCapture": "Dodelite pristup hvatanju", "SyncApp.action.gotIt": "Shvatio sam", "SyncApp.explain.title": "Šta radi pripremanje %{launcher}", "SyncApp.explain.body": "ARCTracker čini vašu ARC Raiders inventaru ažurnom na sajtu automatski dok igrate. Da biste to postavili, on ponovno otvara %{launcher} jednom, samo nekoliko sekundi, tako da igra može da se poveže sa aplikacijom.\n\nDok igrate, ARCTracker Sync preuzima privremeni pristupni ključ iz igre i prosleđuje ga ARCTracker-u, koji ga koristi da čita vašu inventaru za vas. Ključ istječe sam od sebe i nikad nije vaš %{launcher} ili ARC Raiders lozinka.\n\nVaš %{launcher} nalog se ne dira. Vaše igre, preuzimanja, prijatelji i prijava ostaju tačno kako su bili. Sve se izvršava na vašem PC-u; jedina stvar koja se šalje ARCTracker-u je taj privremeni ključ.", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "Jezik", "SyncApp.settings.displayLanguage": "Prikazi jezik", "SyncApp.settings.matchesWindows": "Odgovara Windows po zadanom", + "SyncApp.settings.matchesSystem": "Po zadanom odgovara vašem sistemu", "SyncApp.settings.matchWindows": "Uskladi sa Windows-om", + "SyncApp.settings.matchSystem": "Uskladi sa sistemom", "SyncApp.settings.network": "Mreža", "SyncApp.settings.networkAdapter": "Mrežni adapter", "SyncApp.settings.networkAdapterSub": "Automatski izabran. Samo promenite ako sinhronizacija se ne povezuje.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "Metoda hvatanja", "SyncApp.settings.captureMethodSub": "Kako Sync čita sopstveni promet igre vašeg PC-a. Pređite na Npcap ako antivirusni softver blokira ugrađenu metodu — može i bolje raditi ako koristite VPN ili proxy.", "SyncApp.settings.captureRawSockets": "Windows sirovi soketi (ugrađeno)", + "SyncApp.settings.captureRawSocketsLinux": "Sirovi soketi (AF_PACKET, ugrađeno)", "SyncApp.settings.captureNpcap": "Npcap (instalira se zasebno)", "SyncApp.settings.npcapMissing": "Npcap nije instaliran, pa sinhronizacija ne može da hvata promet. Instalirajte ga, a zatim upotrebite Pokušajte ponovo na glavnom ekranu.", "SyncApp.settings.npcapLink": "Preuzmite Npcap (besplatno) na npcap.com", diff --git a/locales/tr.json b/locales/tr.json index d31d8d1..715ba57 100644 --- a/locales/tr.json +++ b/locales/tr.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "Ayarlar", "SyncApp.state.needsAdmin.title": "Önce hızlı bir izin", "SyncApp.state.needsAdmin.body": "ARCTracker Sync oyun oynarken envanterinizi okumak için yönetici olarak çalışması gerekiyor. Devam etmek için yönetici erişimi ile yeniden başlatın.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync oyun oynarken envanterinizi okumak için ağ trafiğini yakalamaya yönelik izne ihtiyacı var. Devam etmek için yakalama erişimi (CAP_NET_RAW) verin.", "SyncApp.state.signedOut.title": "ARCTracker Sync'e hoş geldiniz", "SyncApp.state.signedOut.body": "ARCTracker hesabınızı bağlamak için oturum açın. Kurulum tamamlandıktan sonra, ARC Raiders envanteriniz oynarken otomatik olarak güncel kalır.", "SyncApp.state.signingIn.title": "Oturum açmayı tamamlayın…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "%{account} olarak oynanıyor. ARC Raiders envanteriniz ARCTracker'da güncel.", "SyncApp.state.synced.session": "Envanteriniz %{time} kadar senkronize kalacak.", "SyncApp.state.synced.canClose": "ARCTracker Sync'i kapatabilir ve oynamaya devam edebilirsiniz. Tray'de çalışmaya devam ettirerek tüm oturumunuz boyunca senkronize kalabilirsiniz.", + "SyncApp.state.synced.canCloseLinux": "Bu pencereyi oynarken açık tutun — ARCTracker Sync envanterinizi tüm oturum boyunca senkronize tutar.", "SyncApp.state.syncedIdle.body": "Bir sonraki ARC Raiders oturumunuz için bekleniyor. ARCTracker Sync tray'de çalışmaya devam eder.", + "SyncApp.state.syncedIdle.bodyLinux": "Sonraki ARC Raiders oturumunuz bekleniyor. ARCTracker Sync çalışmaya devam edin.", "SyncApp.state.needsLauncher.title": "%{launcher} yeniden hazırlanması gerekiyor", "SyncApp.state.needsLauncher.body": "%{launcher} kendi başına yeniden başlatıldı, bu nedenle ARCTracker şu anda envanterinizi okuyamıyor. Senkronizasyonu devam ettirmek için yeniden hazırlayın.", "SyncApp.state.needsAttention.title": "Senkronizasyon dikkat gerektiriyor", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "Yardım alın", "SyncApp.action.tryAgain": "Tekrar deneyin", "SyncApp.action.restartAsAdmin": "Yönetici olarak yeniden başlat", + "SyncApp.action.grantCapture": "Yakalama erişimi ver", "SyncApp.action.gotIt": "Anladım", "SyncApp.explain.title": "%{launcher}'ı hazırlamanın ne yaptığı", "SyncApp.explain.body": "ARCTracker, oynarken ARC Raiders envanterinizi web sitesinde otomatik olarak güncel tutar. Bunu ayarlamak için %{launcher}'ı bir kez yeniden açar (sadece birkaç saniye boyunca) böylece oyun uygulamayla bağlanabilir.\n\nOynarken, ARCTracker Sync oyundan geçici bir erişim anahtarı alır ve bunu ARCTracker'a iletir. ARCTracker, sizin için envanterinizi okumak için bu anahtarı kullanır. Anahtar kendi başına sona erer ve hiçbir zaman %{launcher} veya ARC Raiders şifreniz değildir.\n\n%{launcher} hesabınıza dokunulmaz. Oyunlarınız, indirmeleriniz, arkadaşlarınız ve oturum açışınız tamamen aynı kalır. Her şey bilgisayarınızda çalışır ve ARCTracker'a gönderilen tek şey bu geçici anahtardır.", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "Dil", "SyncApp.settings.displayLanguage": "Görüntüleme dili", "SyncApp.settings.matchesWindows": "Varsayılan olarak Windows ile eşleşir", + "SyncApp.settings.matchesSystem": "Varsayılan olarak sisteminizle eşleşir", "SyncApp.settings.matchWindows": "Windows'la eşleştir", + "SyncApp.settings.matchSystem": "Sistemle eşleştir", "SyncApp.settings.network": "Ağ", "SyncApp.settings.networkAdapter": "Ağ adaptörü", "SyncApp.settings.networkAdapterSub": "Otomatik seçilir. Senkronizasyon bağlanamıyorsa değiştirin.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "Yakalama yöntemi", "SyncApp.settings.captureMethodSub": "Sync'in bilgisayarınızın kendi oyun trafiğini nasıl okuduğu. Antivirüs yazılımı yerleşik yöntemi engelliyorsa Npcap'e geçin — VPN veya proxy kullanıyorsanız daha iyi çalışabilir.", "SyncApp.settings.captureRawSockets": "Windows ham soketleri (yerleşik)", + "SyncApp.settings.captureRawSocketsLinux": "Ham soketler (AF_PACKET, yerleşik)", "SyncApp.settings.captureNpcap": "Npcap (ayrı olarak yüklenir)", "SyncApp.settings.npcapMissing": "Npcap yüklü değil, bu nedenle senkronizasyon trafiği yakalayamıyor. Yükleyin, ardından ana ekrandaki Tekrar deneyin düğmesini kullanın.", "SyncApp.settings.npcapLink": "Npcap'i (ücretsiz) npcap.com adresinden edinin", diff --git a/locales/uk.json b/locales/uk.json index e514215..512354e 100644 --- a/locales/uk.json +++ b/locales/uk.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "Параметри", "SyncApp.state.needsAdmin.title": "Один важливий дозвіл спочатку", "SyncApp.state.needsAdmin.body": "ARCTracker Sync потребує прав адміністратора для читання вашого інвентаря під час гри. Перезавантажте його з доступом адміністратора, щоб продовжити.", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync потребує дозволу для захоплення мережевого трафіку для читання вашого інвентаря під час гри. Надайте йому доступ до захоплення (CAP_NET_RAW), щоб продовжити.", "SyncApp.state.signedOut.title": "Добро пожалувати до ARCTracker Sync", "SyncApp.state.signedOut.body": "Увійдіть, щоб підключити свій акаунт ARCTracker. Після налаштування ваш інвентар ARC Raiders автоматично оновлюватиметься під час гри.", "SyncApp.state.signingIn.title": "Завершіть вхід…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "Грає як %{account}. Ваш інвентар ARC Raiders актуальний на ARCTracker.", "SyncApp.state.synced.session": "Ваш інвентар залишається синхронізованим до %{time}.", "SyncApp.state.synced.canClose": "Ви можете закрити ARCTracker Sync і продовжити грати. Залиште його запущеним у треї, щоб залишатися синхронізованим протягом усієї сесії.", + "SyncApp.state.synced.canCloseLinux": "Тримайте це вікно відкритим під час гри — ARCTracker Sync тримає ваш інвентар синхронізованим протягом усієї сесії.", "SyncApp.state.syncedIdle.body": "Очікування вашої наступної сесії ARC Raiders. ARCTracker Sync продовжує працювати у треї.", + "SyncApp.state.syncedIdle.bodyLinux": "Очікування вашої наступної сесії ARC Raiders. Тримайте ARCTracker Sync запущеним.", "SyncApp.state.needsLauncher.title": "%{launcher} потребує підготовки знову", "SyncApp.state.needsLauncher.body": "%{launcher} був перезапущений самостійно, тому ARCTracker не може прочитати ваш інвентар прямо зараз. Підготуйте його знову, щоб продовжити синхронізацію.", "SyncApp.state.needsAttention.title": "Синхронізація потребує уваги", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "Отримати допомогу", "SyncApp.action.tryAgain": "Спробуйте ще раз", "SyncApp.action.restartAsAdmin": "Перезавантажити з правами адміністратора", + "SyncApp.action.grantCapture": "Надати доступ до захоплення", "SyncApp.action.gotIt": "Зрозуміло", "SyncApp.explain.title": "Що робить підготовка %{launcher}", "SyncApp.explain.body": "ARCTracker тримає ваш інвентар ARC Raiders актуальним на веб-сайті автоматично під час гри. Для налаштування він перезапускає %{launcher} один раз, всього кілька секунд, щоб гра могла підключитися до застосунку.\n\nПід час гри ARCTracker Sync отримує тимчасовий ключ доступу з гри та передає його ARCTracker, який використовує його для читання вашого інвентаря. Ключ закінчується сам по собі і ніколи не є вашим паролем %{launcher} або ARC Raiders.\n\nВаш акаунт %{launcher} не зачіпається. Ваші ігри, завантаження, друзі та вхід залишаються такими ж, як вони є. Все працює на вашому ПК; єдине, що надсилається ARCTracker, це тимчасовий ключ.", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "Мова", "SyncApp.settings.displayLanguage": "Мова інтерфейсу", "SyncApp.settings.matchesWindows": "За замовчуванням відповідає Windows", + "SyncApp.settings.matchesSystem": "За замовчуванням відповідає вашій системі", "SyncApp.settings.matchWindows": "Відповідати Windows", + "SyncApp.settings.matchSystem": "Відповідати системі", "SyncApp.settings.network": "Мережа", "SyncApp.settings.networkAdapter": "Мережевий адаптер", "SyncApp.settings.networkAdapterSub": "Автоматично вибирається. Змініть, тільки якщо синхронізація не підключається.", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "Метод захоплення", "SyncApp.settings.captureMethodSub": "Як Sync читає власний ігровий трафік вашого ПК. Переходьте на Npcap, якщо антивірус блокує вбудований метод — це також може працювати краще, якщо ви використовуєте VPN або проксі.", "SyncApp.settings.captureRawSockets": "Сирі сокети Windows (вбудовано)", + "SyncApp.settings.captureRawSocketsLinux": "Сирі сокети (AF_PACKET, вбудовано)", "SyncApp.settings.captureNpcap": "Npcap (встановлюється окремо)", "SyncApp.settings.npcapMissing": "Npcap не встановлений, тому синхронізація не може захоплювати трафік. Встановіть його, а потім натисніть «Спробуйте ще раз» на головному екрані.", "SyncApp.settings.npcapLink": "Отримати Npcap (безкоштовно) на npcap.com", diff --git a/locales/zh-CN.json b/locales/zh-CN.json index 24ccf61..4e31600 100644 --- a/locales/zh-CN.json +++ b/locales/zh-CN.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "设置", "SyncApp.state.needsAdmin.title": "需要权限", "SyncApp.state.needsAdmin.body": "ARCTracker Sync 需要以管理员身份运行才能在您游玩时读取您的物品栏。请使用管理员权限重启以继续。", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync 需要权限来捕获网络流量以在您游玩时读取您的物品栏。授予它捕获访问权限(CAP_NET_RAW)以继续。", "SyncApp.state.signedOut.title": "欢迎来到 ARCTracker Sync", "SyncApp.state.signedOut.body": "登录以连接你的 ARCTracker 账户。设置完成后,你的 ARC Raiders 物品栏在游戏时会自动保持最新。", "SyncApp.state.signingIn.title": "完成登录…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "正在以 %{account} 的身份游玩。ARCTracker 正在保持你的 ARC Raiders 物品栏最新。", "SyncApp.state.synced.session": "你的物品栏将一直保持同步到 %{time}。", "SyncApp.state.synced.canClose": "你可以关闭ARCTracker Sync并继续游玩。在系统托盘中运行它可以在整个会话中保持同步。", + "SyncApp.state.synced.canCloseLinux": "在游玩时保持此窗口打开 — ARCTracker Sync 会在整个会话中保持你的库存同步。", "SyncApp.state.syncedIdle.body": "等待你的下一个 ARC Raiders 会话。ARCTracker Sync 会继续在系统托盘中运行。", + "SyncApp.state.syncedIdle.bodyLinux": "等待你的下一个 ARC Raiders 会话。请保持 ARCTracker Sync 运行。", "SyncApp.state.needsLauncher.title": "%{launcher} 需要再次准备", "SyncApp.state.needsLauncher.body": "%{launcher} 被自动重启了,所以 ARCTracker 目前无法读取你的物品栏。再次准备它以继续同步。", "SyncApp.state.needsAttention.title": "同步需要关注", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "获取帮助", "SyncApp.action.tryAgain": "重试", "SyncApp.action.restartAsAdmin": "以管理员身份重启", + "SyncApp.action.grantCapture": "授予捕获访问权限", "SyncApp.action.gotIt": "明白了", "SyncApp.explain.title": "准备 %{launcher} 的作用", "SyncApp.explain.body": "ARCTracker在你游玩时会自动保持你的ARC Raiders物品栏在网站上的最新状态。为了进行设置,它会重新打开一次%{launcher},只需几秒钟,这样游戏就可以连接到该应用。\n\n你游玩时,ARCTracker Sync从游戏中获取临时访问密钥并将其传递给ARCTracker,后者使用它为你读取你的物品栏。该密钥会自动过期,绝不是你的%{launcher}或ARC Raiders密码。\n\n你的%{launcher}账户不会被触及。你的游戏、下载、好友和登录状态都保持完全不变。一切都在你的电脑上运行;唯一发送到ARCTracker的是该临时密钥。", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "语言", "SyncApp.settings.displayLanguage": "显示语言", "SyncApp.settings.matchesWindows": "默认与 Windows 匹配", + "SyncApp.settings.matchesSystem": "默认与你的系统匹配", "SyncApp.settings.matchWindows": "与 Windows 匹配", + "SyncApp.settings.matchSystem": "与系统匹配", "SyncApp.settings.network": "网络", "SyncApp.settings.networkAdapter": "网络适配器", "SyncApp.settings.networkAdapterSub": "自动选择。仅在同步无法连接时更改。", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "捕获方式", "SyncApp.settings.captureMethodSub": "Sync 读取你电脑自身游戏流量的方式。如果杀毒软件拦截内置方式,切换到 Npcap — 使用 VPN 或代理时可能也会工作得更好。", "SyncApp.settings.captureRawSockets": "Windows 原始套接字(内置)", + "SyncApp.settings.captureRawSocketsLinux": "原始套接字(AF_PACKET,内置)", "SyncApp.settings.captureNpcap": "Npcap(需单独安装)", "SyncApp.settings.npcapMissing": "Npcap 未安装,同步无法捕获流量。安装后,在主界面使用“重试”。", "SyncApp.settings.npcapLink": "前往 npcap.com 获取 Npcap(免费)", diff --git a/locales/zh-TW.json b/locales/zh-TW.json index e1594dc..d17a418 100644 --- a/locales/zh-TW.json +++ b/locales/zh-TW.json @@ -23,6 +23,7 @@ "SyncApp.footer.settings": "設定", "SyncApp.state.needsAdmin.title": "請先授予權限", "SyncApp.state.needsAdmin.body": "ARCTracker Sync 需要以系統管理員身份執行,才能在你遊玩時讀取你的物品欄。請以系統管理員存取權限重新啟動應用程式以繼續。", + "SyncApp.state.needsAdmin.bodyLinux": "ARCTracker Sync 需要獲得擷取網路流量的權限,才能在你遊玩時讀取你的物品欄。授予它擷取存取權限 (CAP_NET_RAW) 以繼續。", "SyncApp.state.signedOut.title": "歡迎使用 ARCTracker Sync", "SyncApp.state.signedOut.body": "登入以連接你的 ARCTracker 帳號。設定完成後,你在遊玩時物品欄會自動保持最新狀態。", "SyncApp.state.signingIn.title": "完成登入…", @@ -48,7 +49,9 @@ "SyncApp.state.synced.body": "以 %{account} 身分遊玩中。你的 ARC Raiders 物品欄在 ARCTracker 上已是最新狀態。", "SyncApp.state.synced.session": "你的物品欄將保持同步至 %{time}。", "SyncApp.state.synced.canClose": "你可以關閉 ARCTracker Sync 並繼續遊玩。將其保留在系統匣中執行,以在整個遊戲時段保持同步。", + "SyncApp.state.synced.canCloseLinux": "在你遊玩時保持此視窗開啟 — ARCTracker Sync 會在整個遊戲時段保持你的物品欄同步。", "SyncApp.state.syncedIdle.body": "等待你下一次 ARC Raiders 遊戲時段。ARCTracker Sync 會繼續在系統匣中執行。", + "SyncApp.state.syncedIdle.bodyLinux": "等待你下一次 ARC Raiders 遊戲時段。保持 ARCTracker Sync 執行中。", "SyncApp.state.needsLauncher.title": "%{launcher} 需要再次準備", "SyncApp.state.needsLauncher.body": "%{launcher} 已自行重新啟動,所以 ARCTracker 現在無法讀取你的物品欄。再次準備它以繼續同步。", "SyncApp.state.needsAttention.title": "同步需要關注", @@ -65,6 +68,7 @@ "SyncApp.action.getHelp": "取得幫助", "SyncApp.action.tryAgain": "重試", "SyncApp.action.restartAsAdmin": "以系統管理員身份重新啟動", + "SyncApp.action.grantCapture": "授予擷取存取權限", "SyncApp.action.gotIt": "好的", "SyncApp.explain.title": "準備 %{launcher} 的作用", "SyncApp.explain.body": "ARCTracker 會在你遊玩時自動保持你的 ARC Raiders 物品欄在網站上的最新狀態。為了設定這項功能,它將重新啟動 %{launcher} 一次,只需幾秒鐘,以便遊戲可以連接到應用程式。\n\n遊玩時,ARCTracker Sync 會從遊戲中取得臨時存取金鑰並將其傳遞給 ARCTracker,後者使用它為你讀取物品欄。該金鑰會自動過期,永遠不是你的 %{launcher} 或 ARC Raiders 密碼。\n\n你的 %{launcher} 帳號不會受到影響。你的遊戲、下載、好友和登入方式保持完全相同。一切都在你的電腦上執行;唯一傳送到 ARCTracker 的是該臨時金鑰。", @@ -83,7 +87,9 @@ "SyncApp.settings.language": "語言", "SyncApp.settings.displayLanguage": "顯示語言", "SyncApp.settings.matchesWindows": "預設與 Windows 相符", + "SyncApp.settings.matchesSystem": "預設與你的系統相符", "SyncApp.settings.matchWindows": "與 Windows 相符", + "SyncApp.settings.matchSystem": "與系統相符", "SyncApp.settings.network": "網路", "SyncApp.settings.networkAdapter": "網路介面卡", "SyncApp.settings.networkAdapterSub": "自動選擇。僅在同步無法連接時變更。", @@ -91,6 +97,7 @@ "SyncApp.settings.captureMethod": "擷取方式", "SyncApp.settings.captureMethodSub": "Sync 讀取你電腦自身遊戲流量的方式。如果防毒軟體封鎖內建方式,切換到 Npcap — 使用 VPN 或代理時也可能運作得更好。", "SyncApp.settings.captureRawSockets": "Windows 原始通訊端(內建)", + "SyncApp.settings.captureRawSocketsLinux": "原始通訊端 (AF_PACKET,內建)", "SyncApp.settings.captureNpcap": "Npcap(需另外安裝)", "SyncApp.settings.npcapMissing": "Npcap 尚未安裝,因此同步無法擷取流量。安裝後,請在主畫面使用「重試」。", "SyncApp.settings.npcapLink": "前往 npcap.com 取得 Npcap(免費)", diff --git a/src/app.rs b/src/app.rs index b85af91..814adfe 100644 --- a/src/app.rs +++ b/src/app.rs @@ -713,6 +713,12 @@ impl ArcTrackerSyncApp { } fn maybe_check_for_update(&mut self) { + // Self-update ships only a Windows release; the installer extracts + // `arctracker-sync.exe` from the zip, which a Linux build would never + // match. Linux runs from a source build, so don't check or offer one. + if !cfg!(windows) { + return; + } if self.update_check_rx.is_some() || self.update_progress_rx.is_some() { return; } @@ -951,7 +957,14 @@ impl ArcTrackerSyncApp { match state { HubState::NeedsAdmin => ( tr!("SyncApp.state.needsAdmin.title"), - tr!("SyncApp.state.needsAdmin.body"), + // Windows gates raw-socket capture behind Administrator; Linux + // gates it behind CAP_NET_RAW (setcap/root), so the explanation + // and the action differ by platform. + if cfg!(windows) { + tr!("SyncApp.state.needsAdmin.body") + } else { + tr!("SyncApp.state.needsAdmin.bodyLinux") + }, ), HubState::SignedOut => ( tr!("SyncApp.state.signedOut.title"), @@ -995,7 +1008,12 @@ impl ArcTrackerSyncApp { ), HubState::SyncedIdle => ( tr!("SyncApp.state.synced.title"), - tr!("SyncApp.state.syncedIdle.body"), + // No system tray off Windows, so don't claim it runs "in the tray". + if cfg!(windows) { + tr!("SyncApp.state.syncedIdle.body") + } else { + tr!("SyncApp.state.syncedIdle.bodyLinux") + }, ), HubState::NeedsLauncher => ( tr!("SyncApp.state.needsLauncher.title", launcher => self.effective_platform().label()), @@ -2182,9 +2200,14 @@ impl ArcTrackerSyncApp { } ui.add_space(theme::SPACE_SM); ui.label( - RichText::new(tr!("SyncApp.state.synced.canClose")) - .size(theme::TEXT_SECONDARY) - .color(arc_muted_text()), + RichText::new(if cfg!(windows) { + tr!("SyncApp.state.synced.canClose") + } else { + // Closing quits on Linux (no tray to hide into). + tr!("SyncApp.state.synced.canCloseLinux") + }) + .size(theme::TEXT_SECONDARY) + .color(arc_muted_text()), ); } @@ -2474,7 +2497,12 @@ impl ArcTrackerSyncApp { fn render_hero_actions(&mut self, ui: &mut egui::Ui, ctx: &egui::Context, state: HubState) { ui.horizontal(|ui| match state { HubState::NeedsAdmin => { - if primary_button(ui, &tr!("SyncApp.action.restartAsAdmin")) { + let elevate_label = if cfg!(windows) { + tr!("SyncApp.action.restartAsAdmin") + } else { + tr!("SyncApp.action.grantCapture") + }; + if primary_button(ui, &elevate_label) { match elevation::relaunch_elevated() { Ok(()) => ctx.send_viewport_cmd(egui::ViewportCommand::Close), Err(error) => self.push_message(format!("{error:#}")), @@ -2829,6 +2857,11 @@ impl ArcTrackerSyncApp { } fn render_settings_startup(&mut self, ui: &mut egui::Ui) { + // The only startup option is "keep running in the tray", which is a + // no-op off Windows (no tray; closing the window quits). Hide the card. + if !cfg!(windows) { + return; + } settings_card(ui, &tr!("SyncApp.settings.startup"), |ui| { let mut keep_in_tray = self.config.keep_in_tray; settings_row( @@ -2846,15 +2879,27 @@ impl ArcTrackerSyncApp { } fn render_settings_language(&mut self, ui: &mut egui::Ui, ctx: &egui::Context) { + // The default tracks the OS UI language; name the OS for the platform. + let (matches_default, match_default) = if cfg!(windows) { + ( + tr!("SyncApp.settings.matchesWindows"), + tr!("SyncApp.settings.matchWindows"), + ) + } else { + ( + tr!("SyncApp.settings.matchesSystem"), + tr!("SyncApp.settings.matchSystem"), + ) + }; settings_card(ui, &tr!("SyncApp.settings.language"), |ui| { settings_row( ui, &tr!("SyncApp.settings.displayLanguage"), - &tr!("SyncApp.settings.matchesWindows"), + &matches_default, |ui| { let current_label = match self.config.language.as_deref() { Some(code) => i18n::native_name(code).to_string(), - None => tr!("SyncApp.settings.matchWindows"), + None => match_default.clone(), }; let mut chosen: Option> = None; @@ -2862,10 +2907,7 @@ impl ArcTrackerSyncApp { .selected_text(current_label) .show_ui(ui, |ui| { if ui - .selectable_label( - self.config.language.is_none(), - tr!("SyncApp.settings.matchWindows"), - ) + .selectable_label(self.config.language.is_none(), &match_default) .clicked() { chosen = Some(None); @@ -2965,18 +3007,29 @@ impl ArcTrackerSyncApp { &tr!("SyncApp.settings.captureMethodSub"), |ui| { ui.spacing_mut().interact_size.y = 30.0; + let raw_socket_label = if cfg!(windows) { + tr!("SyncApp.settings.captureRawSockets") + } else { + tr!("SyncApp.settings.captureRawSocketsLinux") + }; let current_label = match self.config.capture_method { - CaptureMethod::RawSocket => tr!("SyncApp.settings.captureRawSockets"), + CaptureMethod::RawSocket => raw_socket_label.clone(), CaptureMethod::Npcap => tr!("SyncApp.settings.captureNpcap"), }; + // Npcap is a Windows-only alternative (wpcap.dll); off + // Windows the only backend is the AF_PACKET raw socket, so + // don't offer a method whose `load()` would just fail. + #[cfg(windows)] + let methods: &[CaptureMethod] = + &[CaptureMethod::RawSocket, CaptureMethod::Npcap]; + #[cfg(not(windows))] + let methods: &[CaptureMethod] = &[CaptureMethod::RawSocket]; egui::ComboBox::from_id_salt("settings_capture_method_combo") .selected_text(current_label) .show_ui(ui, |ui| { - for method in [CaptureMethod::RawSocket, CaptureMethod::Npcap] { + for &method in methods { let label = match method { - CaptureMethod::RawSocket => { - tr!("SyncApp.settings.captureRawSockets") - } + CaptureMethod::RawSocket => raw_socket_label.clone(), CaptureMethod::Npcap => tr!("SyncApp.settings.captureNpcap"), }; if ui diff --git a/src/main.rs b/src/main.rs index eb7212f..bc381df 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,7 @@ // Always use the GUI subsystem so no console window opens alongside the app. // (If logs are needed for debugging, route tracing to a file instead.) -#![windows_subsystem = "windows"] +// No-op off Windows; gated so the attribute only applies where it's meaningful. +#![cfg_attr(windows, windows_subsystem = "windows")] use arctracker_sync::{app, config, i18n, single_instance}; diff --git a/src/rawsock.rs b/src/rawsock.rs index cb193d2..7328f75 100644 --- a/src/rawsock.rs +++ b/src/rawsock.rs @@ -535,9 +535,12 @@ mod linux { let operstate = std::fs::read_to_string(entry.path().join("operstate")) .map(|s| s.trim().to_string()) .unwrap_or_default(); + // Include the interface name: the picker shows `description` + // when present, so a bare "link up" would hide which NIC it is + // (every live interface would read identically). let description = match operstate.as_str() { "" | "unknown" => None, - other => Some(format!("link {other}")), + other => Some(format!("{name} (link {other})")), }; // Prefer up/unknown links first so the picker's default is live. let up = matches!(operstate.as_str(), "up" | "unknown" | ""); @@ -561,7 +564,10 @@ mod linux { } return Err(err).context("opening AF_PACKET socket"); } - let capture = Capture { fd }; + let capture = Capture { + fd, + buf: vec![0u8; RECV_BUF], + }; let mut addr: libc::sockaddr_ll = unsafe { std::mem::zeroed() }; addr.sll_family = libc::AF_PACKET as u16; @@ -593,6 +599,9 @@ mod linux { pub struct Capture { fd: RawFd, + // Reused across reads: a 256 KiB zeroed allocation per frame would churn + // the allocator at gameplay packet rates. + buf: Vec, } impl Capture { @@ -613,9 +622,14 @@ mod linux { return Ok(None); } - let mut buf = vec![0u8; RECV_BUF]; - let n = - unsafe { libc::recv(self.fd, buf.as_mut_ptr() as *mut libc::c_void, buf.len(), 0) }; + let n = unsafe { + libc::recv( + self.fd, + self.buf.as_mut_ptr() as *mut libc::c_void, + self.buf.len(), + 0, + ) + }; if n < 0 { let err = std::io::Error::last_os_error(); return match err.raw_os_error() { @@ -624,12 +638,11 @@ mod linux { }; } let captured = n as usize; - buf.truncate(captured); Ok(Some(Packet { timestamp_us: now_micros(), captured_len: captured as u32, original_len: captured as u32, - data: buf, + data: self.buf[..captured].to_vec(), })) }